- if ($trans_type == ST_SALESORDER)
- $sql = "UPDATE ".TB_PREF."sales_orders SET alloc = alloc + $alloc
- WHERE trans_type=".db_escape($trans_type)." AND order_no = ".db_escape($trans_no);
- else
- $sql = "UPDATE ".TB_PREF."debtor_trans SET alloc = alloc + $alloc
- WHERE type=".db_escape($trans_type)." AND trans_no = ".db_escape($trans_no);
+ $dec = user_price_dec();
+ $sql =
+ "UPDATE `".TB_PREF.($trans_type==ST_SALESORDER ? 'sales_orders' : 'debtor_trans')."` trans,
+ (SELECT sum(amt) amt FROM ".TB_PREF."cust_allocations
+ WHERE person_id=".db_escape($person_id)." AND ((trans_type_to=".db_escape($trans_type)." AND trans_no_to=".db_escape($trans_no).")
+ OR (trans_type_from=".db_escape($trans_type)." AND trans_no_from=".db_escape($trans_no)."))) allocated
+ SET
+ trans.alloc=IFNULL(ROUND(allocated.amt, $dec),0)
+ WHERE trans.debtor_no=".db_escape($person_id)." AND ".($trans_type==ST_SALESORDER ?
+ "trans.trans_type=".db_escape($trans_type)." AND order_no=".db_escape($trans_no)
+ : "trans.type=".db_escape($trans_type)." AND trans_no=".db_escape($trans_no));