« Back to History
loom_cash_person_helper.php
|
20260722_120325.php
Initial Domain Snapshot
Copy Code
<?php /** * Loom CASH – Person wise helper * ONLY for cash_payment_detail_manage * No UI, no side effects */ /** * RAW NET for ONE karigar (NO BANK CHECK HERE) * Uses SAME logic as loom salary page (simplified total) */ function get_loom_cash_person_net_raw( PDO $pdo, int $company_id, int $karigar_id, string $from, string $to ): float { // ---- quality rates ---- $rates = []; $st = $pdo->prepare(" SELECT quality_id, rate FROM quality_rates WHERE company_id = ? "); $st->execute([$company_id]); foreach ($st as $r) { $rates[(int)$r['quality_id']] = (float)$r['rate']; } // ---- production meters ---- $gross = 0.0; $st = $pdo->prepare(" SELECT quality_id, lines_json FROM production_entry WHERE company_id = ? AND entry_date BETWEEN ? AND ? "); $st->execute([$company_id, $from, $to]); foreach ($st as $row) { $qid = (int)$row['quality_id']; if ($qid <= 0 || empty($rates[$qid])) continue; $lines = json_decode($row['lines_json'] ?? '', true); if (!is_array($lines)) continue; foreach ($lines as $li) { if ((int)($li['karigar_id'] ?? 0) !== $karigar_id) continue; $mtr = (float)($li['meter'] ?? 0); if ($mtr <= 0) continue; $gross += $mtr * $rates[$qid]; } } // ---- extra / deduction / advance ---- $extra = $ded = $adv = 0.0; $st = $pdo->prepare(" SELECT COALESCE(SUM(amount),0) FROM karigar_extra WHERE company_id=? AND karigar_id=? AND entry_date BETWEEN ? AND ? "); $st->execute([$company_id,$karigar_id,$from,$to]); $extra = (float)$st->fetchColumn(); $st = $pdo->prepare(" SELECT COALESCE(SUM(amount),0) FROM karigar_deduction WHERE company_id=? AND karigar_id=? AND entry_date BETWEEN ? AND ? "); $st->execute([$company_id,$karigar_id,$from,$to]); $ded = (float)$st->fetchColumn(); $st = $pdo->prepare(" SELECT COALESCE(SUM(amount),0) FROM karigar_advance WHERE company_id=? AND karigar_id=? AND `date` BETWEEN ? AND ? "); $st->execute([$company_id,$karigar_id,$from,$to]); $adv = (float)$st->fetchColumn(); return round($gross + $extra - $ded - $adv, 0); } /** * MAIN LIST – only CASH karigar */ function get_loom_cash_person_list( PDO $pdo, int $company_id, string $from, string $to ): array { // ---- karigar with NO bank ---- $banked = []; $st = $pdo->prepare(" SELECT DISTINCT karigar_id FROM karigar_bank_data WHERE company_id=? AND COALESCE(beneficiary_ac_number,'')<>'' AND COALESCE(ifsc_code,'')<>'' "); $st->execute([$company_id]); foreach ($st as $r) { $banked[(int)$r['karigar_id']] = true; } // ---- all karigar ---- $out = []; $st = $pdo->prepare(" SELECT id, karigar_name FROM loom_karigar_master WHERE company_id=? ORDER BY karigar_name "); $st->execute([$company_id]); foreach ($st as $k) { $kid = (int)$k['id']; if (isset($banked[$kid])) continue; // BANK wale skip $net = get_loom_cash_person_net_raw( $pdo, $company_id, $kid, $from, $to ); if ($net <= 0) continue; $out[] = [ 'person_id' => $kid, 'person_name' => $k['karigar_name'], 'amount' => (int)$net ]; } return $out; }