public function savePaymentHistory($supplier_id, $payment_amount, $paid_date, $employee_id, $note) { $payment_id = 0; if ($payment_amount > 0) { $payment_history = new PaymentHistoryRecv(); $payment_history->supplier_id = $supplier_id; $payment_history->payment_amount = $payment_amount; $payment_history->date_paid = $paid_date; $payment_history->note = $note; $payment_history->employee_id = $employee_id; $payment_history->save(); $payment_id = $payment_history->id; } return $payment_id; }
public function batchPayment($supplier_id, $employee_id, $account, $total_paid, $paid_date, $note) { $sql = "SELECT receive_id,receive_time,supplier_name,amount_to_paid\n FROM (\n SELECT t1.receive_id,receive_time,supplier_name,(t1.`sub_total`-IFNULL(t2.payment_amount,0)) amount_to_paid\n FROM\n (SELECT r.id receive_id,r.`receive_time`,CONCAT(s.first_name,' ',last_name) supplier_name,r.`sub_total`\n FROM `receiving` r, `supplier` s\n WHERE r.`supplier_id` = s.id\n AND s.id=:supplier_id) t1 LEFT JOIN `v_receiving_payment` t2 ON t2.receive_id=t1.receive_id\n ) AS t\n WHERE amount_to_paid>0\n ORDER BY receive_time"; $result = Yii::app()->db->createCommand($sql)->queryAll(true, array(':supplier_id' => $supplier_id)); $paid_amount = $total_paid; $transaction = Yii::app()->db->beginTransaction(); try { $payment_id = PaymentHistoryRecv::model()->savePaymentHistory($supplier_id, $total_paid, $paid_date, $employee_id, $note); foreach ($result as $record) { if ($paid_amount <= $record["amount_to_paid"]) { $payment_amount = $paid_amount; $this->saveReceivePayment($record["receive_id"], $payment_id, $payment_amount, $paid_date, $note); $this->saveAccountRecv($account->id, $employee_id, $record["receive_id"], $payment_amount, $paid_date, $note); break; } else { $paid_amount = $paid_amount - $record["amount_to_paid"]; $payment_amount = $record["amount_to_paid"]; $this->saveReceivePayment($record["receive_id"], $payment_id, $payment_amount, $paid_date, $note); $this->saveAccountRecv($account->id, $employee_id, $record["receive_id"], $payment_amount, $paid_date, $note); } } AccountSupplier::model()->updateAccountBal($account, $total_paid); $transaction->commit(); $message = $payment_id; } catch (Exception $e) { $transaction->rollback(); $message = '-1' . $e->getMessage(); } return $message; }