This commit is contained in:
Thanakorn S
2026-04-25 16:02:55 +07:00
parent 3cc5baba3f
commit 76b9b2a2cb
12 changed files with 1625 additions and 669 deletions
@@ -23,7 +23,7 @@ class WarehouseManager {
// ─────────────────────────────────────────────────────────────
// Private helpers
// ─────────────────────────────────────────────────────────────
/**
* Resolve the td_stock_<wh> table name for a given warehouse_id.
* Returns null if warehouse not found or inactive.
@@ -145,13 +145,15 @@ class WarehouseManager {
public function adjustBalance($type, $warehouse_id, $product_sku, $old_qty, $new_qty) {
// Upsert the balance row (atomic, no race condition)
// Partitioned by month (YYYY-MM) for efficient monthly reporting
$column = $type === 'in' ? 'total_in' : 'total_out';
$delta = $new_qty - $old_qty;
$month = date('Y-m');
$sql = "INSERT INTO warehouse_balance
(company_id, warehouse_id, product_sku, `$column`)
(company_id, warehouse_id, product_sku, month, `$column`)
VALUES
(:company_id, :warehouse_id, :product_sku, :delta)
(:company_id, :warehouse_id, :product_sku, :month, :delta)
ON DUPLICATE KEY UPDATE
`$column` = `$column` + VALUES(`$column`)";
@@ -160,6 +162,7 @@ class WarehouseManager {
":company_id" => $this->company_id,
":warehouse_id" => $warehouse_id,
":product_sku" => $product_sku,
":month" => $month,
":delta" => $delta
]);
}