403Webshell
Server IP : 72.60.21.38  /  Your IP : 216.73.216.25
Web Server : LiteSpeed
System : Linux uk-fast-web1372.main-hosting.eu 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User : u390967363 ( 390967363)
PHP Version : 8.2.30
Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/u390967363/domains/aibenproperties.com/public_html/app/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/u390967363/domains/aibenproperties.com/public_html/app/sales-revenue.php
<?php
session_start();
require_once __DIR__ . '/includes/db.php';
require_once __DIR__ . '/includes/functions.php';
$role = $_SESSION['user_role'] ?? 'guest';
$role_norm = strtolower(str_replace([' ', '-'], '_', (string)$role));
if (!isset($_SESSION['user_id']) || !in_array($role_norm, ['super_admin','admin','sales_manager','agent','marketer','customer_rep','chairman_ceo'])) {
    include __DIR__ . '/includes/header.php';
    echo '<div class="container p-4"><div class="alert alert-danger">Access denied.</div></div>';
    include __DIR__ . '/includes/footer.php';
    exit;
}
$companyId = getCurrentCompanyId();
$notice = null;
$type = 'info';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['sales_action']) && $_POST['sales_action'] === 'submit_draft') {
    $clientId = isset($_POST['client_id']) && ctype_digit($_POST['client_id']) ? (int)$_POST['client_id'] : null;
    $payload = [
        'client_name' => trim($_POST['client_name'] ?? ''),
        'project' => trim($_POST['project'] ?? ''),
        'original_value' => (float)($_POST['original_value'] ?? 0),
        'discount_amount' => (float)($_POST['discount_amount'] ?? 0),
        'discount_approved_by_role' => trim($_POST['discount_approved_by_role'] ?? ''),
        'discount_approved_by_name' => trim($_POST['discount_approved_by_name'] ?? ''),
        'final_value' => (float)($_POST['final_value'] ?? 0),
        'txn' => [
            'date' => $_POST['txn_date'] ?? '',
            'amount' => (float)($_POST['txn_amount'] ?? 0),
            'type' => $_POST['txn_type'] ?? 'Bank Transfer',
            'notes' => trim($_POST['txn_notes'] ?? '')
        ],
        'commission' => [
            'pct' => (float)($_POST['commission_pct'] ?? 0),
            'amount' => (float)($_POST['commission_amount'] ?? 0),
            'role' => $_POST['beneficiary_role'] ?? '',
            'name' => trim($_POST['beneficiary_name'] ?? ''),
            'acct' => trim($_POST['beneficiary_account'] ?? ''),
            'bank' => trim($_POST['beneficiary_bank'] ?? ''),
        ]
    ];
    try {
        $methodToken = strtolower(str_replace(' ', '_', $payload['txn']['type']));
        $cols = ['amount','status'];
        $vals = [$payload['txn']['amount'], 'pending_confirmation'];
        $ph = ['?','?'];
        if ($clientId) { $cols[]='user_id'; $vals[]=$clientId; $ph[]='?'; }
        if ($companyId && function_exists('tableHasColumn') && tableHasColumn('payments','company_id')) { $cols[]='company_id'; $vals[]=$companyId; $ph[]='?'; }
        $methodCol = function_exists('tableHasColumn') && tableHasColumn('payments','method') ? 'method' : (function_exists('tableHasColumn') && tableHasColumn('payments','payment_method') ? 'payment_method' : null);
        if ($methodCol) { $cols[]=$methodCol; $vals[]=$methodToken; $ph[]='?'; }
        if (!empty($payload['txn']['date'])) {
            if (function_exists('tableHasColumn') && tableHasColumn('payments','payment_date')) { $cols[]='payment_date'; $vals[]=$payload['txn']['date']; $ph[]='?'; }
            elseif (function_exists('tableHasColumn') && tableHasColumn('payments','date')) { $cols[]='date'; $vals[]=$payload['txn']['date']; $ph[]='?'; }
        }
        if (function_exists('tableHasColumn') && tableHasColumn('payments','reference')) {
            $cols[]='reference'; $vals[]='sales_submission'; $ph[]='?';
        } elseif (function_exists('tableHasColumn') && tableHasColumn('payments','transaction_id')) {
            $cols[]='transaction_id'; $vals[]='sales_submission'; $ph[]='?';
        }
        $sql = "INSERT INTO payments (" . implode(',', $cols) . ") VALUES (" . implode(',', $ph) . ")";
        $st = $pdo->prepare($sql); $st->execute($vals);
        $payId = (int)$pdo->lastInsertId();
        $dealId = null;
        try {
            $hasDeals = $pdo->query("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'deals'")->fetchColumn();
            if ((int)$hasDeals > 0) {
                $colsD = []; $valsD = []; $phD = [];
                $ref = 'SR-' . date('Ym') . '-' . $payId;
                // choose value column
                $dealValue = $payload['final_value'] > 0 ? $payload['final_value'] : ($payload['original_value'] - $payload['discount_amount']);
                $dealValue = max(0, (float)$dealValue);
                // map common columns safely
                $hasCompany = function_exists('tableHasColumn') && tableHasColumn('deals','company_id');
                $colListStmt = $pdo->query("DESCRIBE deals");
                $existingCols = array_map(fn($c) => $c['Field'], $colListStmt->fetchAll(PDO::FETCH_ASSOC));
                $push = function($col,$val) use (&$colsD,&$valsD,&$phD,$existingCols){ if (in_array($col, $existingCols, true)) { $colsD[]=$col; $valsD[]=$val; $phD[]='?'; } };
                $push('reference', $ref);
                $push('client_id', $clientId ?: null);
                $push('agent_id', (int)($_SESSION['user_id'] ?? 0) ?: null);
                $push('type', 'sale');
                $push('stage', 'submitted');
                $push('value', $dealValue);
                $push('deal_value', $dealValue);
                $push('original_value', $payload['original_value']);
                $push('discount_amount', $payload['discount_amount']);
                $push('final_value', $payload['final_value']);
                $push('discount_approved_by_role', $payload['discount_approved_by_role']);
                $push('discount_approved_by_name', $payload['discount_approved_by_name']);
                $push('date', date('Y-m-d'));
                if ($hasCompany && ($companyId ?? null)) $push('company_id', $companyId);
                if (in_array('created_at', $existingCols, true)) $push('created_at', date('Y-m-d H:i:s'));
                if (!empty($colsD)) {
                    $insD = $pdo->prepare("INSERT INTO deals (" . implode(',', $colsD) . ") VALUES (" . implode(',', $phD) . ")");
                    $insD->execute($valsD);
                    $dealId = (int)$pdo->lastInsertId();
                }
                // link payment to deal if possible
                if ($dealId && function_exists('tableHasColumn') && tableHasColumn('payments','deal_id')) {
                    $up = $pdo->prepare("UPDATE payments SET deal_id = ? WHERE id = ?" . (($companyId && function_exists('tableHasColumn') && tableHasColumn('payments','company_id')) ? " AND company_id = ?" : ""));
                    $pp = [$dealId,$payId]; if ($companyId && function_exists('tableHasColumn') && tableHasColumn('payments','company_id')) $pp[] = $companyId;
                    $up->execute($pp);
                }
            }
        } catch (Exception $e) {
            // Non-blocking: deal persistence best-effort only
        }
        logActivity($_SESSION['user_id'], 'SALES_SUBMIT_TO_FIN', json_encode(['payment_id'=>$payId,'deal_id'=>$dealId] + $payload));
        $notice = 'Submission sent to Finance for verification and approval.';
        $type = 'success';
    } catch (Exception $e) {
        $notice = 'Failed to submit: ' . $e->getMessage();
        $type = 'danger';
    }
}

// Load clients for selector
$clients = [];
try {
    $q = "SELECT id, name, email FROM users WHERE role = 'client'";
    if ($companyId && function_exists('tableHasColumn') && tableHasColumn('users','company_id')) { $q .= " AND company_id = " . (int)$companyId; }
    $q .= " ORDER BY name";
    $clients = $pdo->query($q)->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {}

include __DIR__ . '/includes/header.php';
?>
<div class="container-fluid px-4">
    <div class="d-flex justify-content-between align-items-center mt-4 mb-3">
        <div>
            <h2 class="fw-bold text-navy">Sales & Revenue</h2>
            <div class="text-muted">Unified sales submission engine (foundation)</div>
        </div>
        <div>
            <a href="transactions.php" class="btn btn-sm btn-outline-secondary"><i class="fa-solid fa-receipt me-2"></i>View Payments</a>
        </div>
    </div>
    <?php if ($notice): ?>
    <div class="alert alert-<?= htmlspecialchars($type) ?>"><?= htmlspecialchars($notice) ?></div>
    <?php endif; ?>
    <form method="POST" action="sales-revenue.php" class="row g-4">
        <input type="hidden" name="sales_action" value="submit_draft">
        <div class="col-12">
            <div class="card shadow-sm">
                <div class="card-header bg-white"><strong>Section 1 – Deal Info</strong></div>
                <div class="card-body row g-3">
                    <div class="col-md-4">
                        <label class="form-label">Client Name</label>
                        <input name="client_name" class="form-control" required>
                    </div>
                    <div class="col-md-4">
                        <label class="form-label">Select Client (optional)</label>
                        <select name="client_id" class="form-select">
                            <option value="">-- Choose Client --</option>
                            <?php foreach ($clients as $c): ?>
                                <option value="<?= (int)$c['id'] ?>"><?= htmlspecialchars($c['name'] . ' — ' . ($c['email'] ?? '')) ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="col-md-4">
                        <label class="form-label">Project</label>
                        <input name="project" class="form-control" required>
                    </div>
                    <div class="col-md-4">
                        <label class="form-label">Original Deal Value</label>
                        <input type="number" step="0.01" min="0" name="original_value" class="form-control" required>
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Discount Amount</label>
                        <input type="number" step="0.01" min="0" name="discount_amount" class="form-control">
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Discount Approved By</label>
                        <select name="discount_approved_by_role" class="form-select">
                            <option value="">Select</option>
                            <option>Admin</option>
                            <option>Executive</option>
                            <option>Chairman</option>
                            <option>HR</option>
                            <option>Other</option>
                        </select>
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Approved By Name</label>
                        <input name="discount_approved_by_name" class="form-control">
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Final Deal Value</label>
                        <input type="number" step="0.01" min="0" name="final_value" class="form-control">
                    </div>
                </div>
            </div>
        </div>
        <div class="col-12">
            <div class="card shadow-sm">
                <div class="card-header bg-white"><strong>Section 2 – Structured Transaction Entry</strong></div>
                <div class="card-body row g-3">
                    <div class="col-md-3">
                        <label class="form-label">Date</label>
                        <input type="date" name="txn_date" class="form-control" required>
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Amount</label>
                        <input type="number" step="0.01" min="0" name="txn_amount" class="form-control" required>
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Payment Type</label>
                        <select name="txn_type" class="form-select">
                            <option>Bank Transfer</option>
                            <option>POS</option>
                            <option>Cash</option>
                            <option>Cheque</option>
                        </select>
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Notes</label>
                        <input name="txn_notes" class="form-control" placeholder="Optional">
                    </div>
                </div>
            </div>
        </div>
        <div class="col-12">
            <div class="card shadow-sm">
                <div class="card-header bg-white"><strong>Section 3 – Commission</strong></div>
                <div class="card-body row g-3">
                    <div class="col-md-3">
                        <label class="form-label">Commission %</label>
                        <input type="number" step="0.01" min="0" name="commission_pct" class="form-control">
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Commission Amount</label>
                        <input type="number" step="0.01" min="0" name="commission_amount" class="form-control">
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Beneficiary Role</label>
                        <select name="beneficiary_role" class="form-select">
                            <option>Marketer</option>
                            <option>Agent</option>
                            <option>Internal Staff</option>
                            <option>Contact Centre</option>
                        </select>
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Beneficiary Name</label>
                        <input name="beneficiary_name" class="form-control">
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Account Number</label>
                        <input name="beneficiary_account" class="form-control">
                    </div>
                    <div class="col-md-3">
                        <label class="form-label">Bank</label>
                        <input name="beneficiary_bank" class="form-control">
                    </div>
                </div>
            </div>
        </div>
        <div class="col-12 text-end">
            <button class="btn btn-primary"><i class="fa-solid fa-paper-plane me-2"></i>Save as Draft</button>
        </div>
    </form>
    <div class="text-muted small mt-2">Commission becomes payable only after Finance approval.</div>
</div>
<?php include __DIR__ . '/includes/footer.php'; ?>

Youez - 2016 - github.com/yon3zu
LinuXploit