Fix item counts, PR/QT conversions, validation and department loss
This commit is contained in:
@@ -260,7 +260,10 @@ class OrderManager {
|
||||
{
|
||||
$sth = $this->pdo->prepare(
|
||||
"SELECT o.*,
|
||||
COALESCE(c.contact_name, '') AS contact_name
|
||||
COALESCE(c.contact_name, '') AS contact_name,
|
||||
(SELECT COUNT(*) FROM td_order_item i
|
||||
WHERE i.company_id = o.company_id
|
||||
AND i.order_id = o.id) AS item_count
|
||||
FROM td_order o
|
||||
LEFT JOIN md_contact c
|
||||
ON c.company_id = o.company_id
|
||||
@@ -493,7 +496,7 @@ class OrderManager {
|
||||
|
||||
// Fetch existing row to check status and load log
|
||||
$sth = $this->pdo->prepare(
|
||||
"SELECT status, `log` FROM td_order
|
||||
"SELECT status, department_id, `log` FROM td_order
|
||||
WHERE company_id = :company_id AND id = :id"
|
||||
);
|
||||
$sth->execute([':company_id' => $this->company_id, ':id' => $id]);
|
||||
@@ -502,6 +505,11 @@ class OrderManager {
|
||||
if (!$row) {
|
||||
throw new Exception("Order not found.");
|
||||
}
|
||||
|
||||
// Pages without a department field (Revenue SO) must not wipe the stored one
|
||||
$department_id = array_key_exists('department_id', $data)
|
||||
? (int)$data['department_id']
|
||||
: (int)$row['department_id'];
|
||||
$cur_status = (int)$row['status'];
|
||||
if ($cur_status !== 0 && $cur_status !== -2) {
|
||||
throw new Exception("Only draft or pending orders can be edited.");
|
||||
@@ -541,7 +549,7 @@ class OrderManager {
|
||||
WHERE id = :id AND company_id = :company_id"
|
||||
)->execute([
|
||||
':contact_id' => (int)($data['contact_id'] ?? 0),
|
||||
':department_id' => (int)($data['department_id'] ?? 0),
|
||||
':department_id' => $department_id,
|
||||
':order_date' => $data['order_date'] ?? date('Y-m-d'),
|
||||
':subtotal' => $subtotal,
|
||||
':discount' => $discount,
|
||||
|
||||
Reference in New Issue
Block a user