« Back to History
leave_install.php
|
20260722_120325.php
Initial Domain Snapshot
Copy Code
<?php /* One-time Leave Module Installer (public path) Run: /erp/public/tools/leave_install.php, then DELETE this file. auth.php untouched. */ error_reporting(E_ALL); ini_set('display_errors',1); if (session_status() !== PHP_SESSION_ACTIVE) session_start(); require __DIR__ . '/../../modules/auth/auth.php'; // session + $pdo require_login(['Owner','Admin']); // only Owner/Admin $pdo = $GLOBALS['pdo'] ?? null; if(!$pdo){ require __DIR__ . '/../../core/db.php'; } try { $pdo->exec("CREATE TABLE IF NOT EXISTS company_holidays ( id BIGINT PRIMARY KEY AUTO_INCREMENT, company_id BIGINT NOT NULL, hdate DATE NOT NULL, name VARCHAR(120) NOT NULL, created_by BIGINT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uniq_ch (company_id, hdate) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); $pdo->exec("CREATE TABLE IF NOT EXISTS leave_types ( id BIGINT PRIMARY KEY AUTO_INCREMENT, company_id BIGINT NOT NULL, code VARCHAR(20) NOT NULL, name VARCHAR(100) NOT NULL, is_paid TINYINT(1) NOT NULL DEFAULT 1, deduct_balance TINYINT(1) NOT NULL DEFAULT 1, allow_negative TINYINT(1) NOT NULL DEFAULT 0, annual_quota DECIMAL(6,2) NOT NULL DEFAULT 0, carry_forward_limit DECIMAL(6,2) NOT NULL DEFAULT 0, requires_attachment_days INT NOT NULL DEFAULT 0, exclude_weekends TINYINT(1) NOT NULL DEFAULT 1, exclude_holidays TINYINT(1) NOT NULL DEFAULT 1, gender ENUM('Any','Male','Female') NOT NULL DEFAULT 'Any', active TINYINT(1) NOT NULL DEFAULT 1, created_by BIGINT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uniq_lt (company_id, code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); $pdo->exec("CREATE TABLE IF NOT EXISTS leave_balances ( id BIGINT PRIMARY KEY AUTO_INCREMENT, company_id BIGINT NOT NULL, user_id BIGINT NOT NULL, leave_type_id BIGINT NOT NULL, year INT NOT NULL, balance DECIMAL(7,2) NOT NULL DEFAULT 0, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uniq_lb (company_id, user_id, leave_type_id, year), KEY ix_lb_user (company_id, user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); $pdo->exec("CREATE TABLE IF NOT EXISTS leave_requests ( id BIGINT PRIMARY KEY AUTO_INCREMENT, company_id BIGINT NOT NULL, user_id BIGINT NOT NULL, leave_type_id BIGINT NOT NULL, start_date DATE NOT NULL, end_date DATE NOT NULL, days DECIMAL(6,2) NOT NULL DEFAULT 0, status ENUM('Pending','Approved','Rejected','Cancelled') NOT NULL DEFAULT 'Pending', approved_paid TINYINT(1) NOT NULL DEFAULT 1, reason TEXT NULL, attachment VARCHAR(191) NULL, approver_id BIGINT NULL, approved_at DATETIME NULL, created_by BIGINT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, KEY ix_lr_user (company_id, user_id, status), KEY ix_lr_dates (company_id, start_date, end_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); echo "<h3>Leave module installed ✅</h3> <p>Tables ready: company_holidays, leave_types, leave_balances, leave_requests</p> <p><b>Important:</b> Is file ko ab <u>delete</u> kar dijiye: /erp/public/tools/leave_install.php</p> <p>Next: <a href='/erp/leave_types.php'>Leave Types</a> | <a href='/erp/company_holidays.php'>Holidays</a> | <a href='/erp/leave_balance_edit.php'>Balances</a></p>"; } catch(Throwable $e){ http_response_code(500); echo "<pre>Install error: ".htmlspecialchars($e->getMessage())."</pre>"; }