@@ -103,10 +103,22 @@ class PurchaseOrderController extends Controller
...
@@ -103,10 +103,22 @@ class PurchaseOrderController extends Controller
$items=PurchaseOrderItem::getForPO((int)$id);
$items=PurchaseOrderItem::getForPO((int)$id);
// Related procurement documents
$relatedGRNs=$db->select(
"SELECT `id`, `grn_number`, `status` FROM `goods_received_notes` WHERE `purchase_order_id` = ? AND `is_archived` = 0 ORDER BY `created_at` DESC",
[(int)$id]
);
$relatedInvoices=$db->select(
"SELECT `id`, `internal_number`, `total_amount`, `status` FROM `vendor_invoices` WHERE `purchase_order_id` = ? AND `is_archived` = 0 ORDER BY `created_at` DESC",
COUNT(CASE WHEN `status` = 'submitted' THEN 1 END) as pending_approval,
COUNT(CASE WHEN `status` = 'approved' THEN 1 END) as approved,
COUNT(CASE WHEN `status` IN ('draft','submitted','approved') THEN 1 END) as open_total
FROM `purchase_requisitions` WHERE `is_archived` = 0"
);
$poCounts=$db->selectOne(
"SELECT
COUNT(CASE WHEN `status` IN ('draft','submitted','approved') THEN 1 END) as open_pos,
COUNT(CASE WHEN `status` = 'approved' THEN 1 END) as awaiting_receipt,
COALESCE(SUM(CASE WHEN `status` IN ('approved') THEN `total_amount` ELSE 0 END), 0) as open_value
FROM `purchase_orders` WHERE `is_archived` = 0"
);
$grnCounts=$db->selectOne(
"SELECT COUNT(*) as pending FROM `goods_received_notes` WHERE `status` = 'inspecting' AND `is_archived` = 0"
);
$invoiceCounts=$db->selectOne(
"SELECT
COUNT(CASE WHEN `status` IN ('draft','verified') THEN 1 END) as pending,
COUNT(CASE WHEN `match_status` = 'discrepancy' THEN 1 END) as discrepancies,
COALESCE(SUM(CASE WHEN `status` = 'approved' THEN `total_amount` ELSE 0 END), 0) as unpaid_value
FROM `vendor_invoices` WHERE `is_archived` = 0"
);
$overdueAP=$db->selectOne(
"SELECT COUNT(*) as cnt, COALESCE(SUM(`balance`), 0) as total
FROM `accounts_payable`
WHERE `status` = 'overdue' AND `is_archived` = 0"
);
// Recent activity (last 10 items across all procurement)
$recentActivity=$db->select(
"(SELECT 'pr' as type, `pr_number` as doc_number, `status`, `created_at`, `estimated_total` as amount FROM `purchase_requisitions` WHERE `is_archived` = 0 ORDER BY `created_at` DESC LIMIT 5)
UNION ALL
(SELECT 'grn' as type, `grn_number` as doc_number, `status`, `created_at`, `total_received_value` as amount FROM `goods_received_notes` WHERE `is_archived` = 0 ORDER BY `created_at` DESC LIMIT 5)
UNION ALL
(SELECT 'invoice' as type, `internal_number` as doc_number, `status`, `created_at`, `total_amount` as amount FROM `vendor_invoices` WHERE `is_archived` = 0 ORDER BY `created_at` DESC LIMIT 5)
'approvedPOs'=>$db->select("SELECT po.*, s.`name_ar` as supplier_name FROM `purchase_orders` po JOIN `suppliers` s ON s.`id` = po.`supplier_id` WHERE po.`status` IN ('approved','partially_received','received') ORDER BY po.`created_at` DESC"),
'completedGRNs'=>$db->select("SELECT g.*, s.`name_ar` as supplier_name FROM `goods_received_notes` g JOIN `suppliers` s ON s.`id` = g.`supplier_id` WHERE g.`status` IN ('accepted','partial_accept') ORDER BY g.`created_at` DESC"),
<ahref="/procurement/requisitions/create"class="btn btn-primary"style="font-size:13px;"><idata-lucide="file-plus"style="width:14px;height:14px;vertical-align:middle;margin-left:4px;"></i> طلب شراء جديد</a>
<ahref="/procurement/grn"class="btn btn-outline"><idata-lucide="arrow-right"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> العودة للقائمة</a>
<ahref="/procurement/grn"class="btn btn-outline"><idata-lucide="arrow-right"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> العودة للقائمة</a>
<?php$__template->section('title');?><?=isset($invoice)?'تعديل فاتورة مورد':'فاتورة مورد جديدة'?><?php$__template->endSection();?>
<?php$__template->section('page_actions');?>
<ahref="/procurement/invoices"class="btn btn-outline"><idata-lucide="arrow-right"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> العودة للقائمة</a>
<ahref="/procurement/invoices/<?=(int)$invoice['id']?>"class="btn btn-outline"><idata-lucide="arrow-right"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> العودة للفاتورة</a>
<ahref="/procurement/invoices"class="btn btn-outline"><idata-lucide="arrow-right"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> العودة للقائمة</a>
<?php$__template->section('title');?>دفعة مورد جديدة<?php$__template->endSection();?>
<?php$__template->section('page_actions');?>
<ahref="/procurement/payments"class="btn btn-outline"><idata-lucide="arrow-right"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> العودة للقائمة</a>
<ahref="/procurement/payments"class="btn btn-outline"><idata-lucide="arrow-right"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> العودة للقائمة</a>
<?php$__template->section('title');?><?=isset($pr)?'تعديل طلب شراء':'طلب شراء جديد'?><?php$__template->endSection();?>
<?php$__template->section('page_actions');?>
<ahref="/procurement/requisitions"class="btn btn-outline"><idata-lucide="arrow-right"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> العودة للقائمة</a>
<ahref="/procurement/requisitions/create"class="btn btn-primary"><idata-lucide="plus"style="width:16px;height:16px;vertical-align:middle;margin-left:4px;"></i> طلب شراء جديد</a>
<h3style="color:#6B7280;margin:0 0 8px;">لا توجد طلبات شراء</h3>
<pstyle="color:#9CA3AF;font-size:14px;margin:0 0 20px;">ابدأ بإنشاء طلب شراء جديد.</p>
<ahref="/procurement/requisitions/create"class="btn btn-primary"><idata-lucide="plus"style="width:16px;height:16px;vertical-align:middle;margin-left:4px;"></i> طلب شراء جديد</a>
<ahref="/procurement/requisitions"class="btn btn-outline"><idata-lucide="arrow-right"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> العودة للقائمة</a>
<ahref="/inventory/purchase-orders/<?=(int)$pr['converted_po_id']?>"style="color:#059669;font-weight:600;">عرض أمر الشراء #<?=(int)$pr['converted_po_id']?></a>
<divstyle="text-align:left;"><buttontype="submit"class="btn btn-primary"style="padding:10px 30px;"><idata-lucide="save"style="width:16px;height:16px;vertical-align:middle;margin-left:4px;"></i> حفظ المرتجع</button></div>
<formmethod="POST"action="/procurement/rtv/<?=(int)$rtv['id']?>/cancel"style="display:inline;"><?=csrf_field()?><buttontype="submit"class="btn"style="background:#FEE2E2;color:#DC2626;border:none;"onclick="return confirm('هل أنت متأكد من إلغاء المرتجع؟');"><idata-lucide="x-circle"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> إلغاء</button></form>
<?phpendif;?>
<ahref="/procurement/rtv"class="btn btn-outline"><idata-lucide="arrow-right"style="width:15px;height:15px;vertical-align:middle;margin-left:4px;"></i> العودة للقائمة</a>