Fix item counts, PR/QT conversions, validation and department loss
This commit is contained in:
@@ -89,7 +89,10 @@ class QuotationManager
|
||||
public function getList(): array
|
||||
{
|
||||
$sth = $this->pdo->prepare(
|
||||
"SELECT q.*, COALESCE(c.contact_name, '') AS contact_name
|
||||
"SELECT q.*, COALESCE(c.contact_name, '') AS contact_name,
|
||||
(SELECT COUNT(*) FROM td_quotation_item i
|
||||
WHERE i.company_id = q.company_id
|
||||
AND i.quotation_id = q.id) AS item_count
|
||||
FROM td_quotation q
|
||||
LEFT JOIN md_contact c
|
||||
ON c.id = q.contact_id AND c.company_id = q.company_id
|
||||
@@ -173,6 +176,24 @@ class QuotationManager
|
||||
$items = $data['items'] ?? [];
|
||||
$discount = (float)($data['discount'] ?? 0);
|
||||
|
||||
$quotation_date = (string)($data['quotation_date'] ?? '');
|
||||
$valid_until = (string)($data['valid_until'] ?? '');
|
||||
if ((int)($data['contact_id'] ?? 0) <= 0) {
|
||||
throw new Exception('Contact is required.');
|
||||
}
|
||||
if ($quotation_date === '') {
|
||||
throw new Exception('Quotation date is required.');
|
||||
}
|
||||
if ($valid_until !== '' && $valid_until < $quotation_date) {
|
||||
throw new Exception('Valid until cannot be earlier than the quotation date.');
|
||||
}
|
||||
if ((int)($data['department_id'] ?? 0) <= 0) {
|
||||
throw new Exception('Department is required.');
|
||||
}
|
||||
if (empty($items)) {
|
||||
throw new Exception('At least one line item is required.');
|
||||
}
|
||||
|
||||
[$subtotal, $tax, $grand] = $this->computeTotals($items, $discount);
|
||||
|
||||
if ($id === 0) {
|
||||
|
||||
Reference in New Issue
Block a user