/** * @param Payable $payable * @return Payable */ public function savePayable(Payable $payable) { $id = $payable->getPayVoucherId(); $data = $payable->getArrayCopy(); if (empty($data['status'])) { $data['status'] = 'R'; if (empty($data['requestedDate'])) { $data['requestedDate'] = date('Y-m-d H:i:s', time()); } $data['withdrawBy'] = $this->staffId; } else { if ($data['status'] === 'A') { if (empty($data['approvedDate'])) { $data['approvedDate'] = date('Y-m-d H:i:s', time()); } $data['approveBy'] = $this->staffId; } else { if ($data['status'] === 'C') { if (empty($data['approvedDate'])) { $data['approvedDate'] = date('Y-m-d H:i:s', time()); } $data['approveBy'] = $this->staffId; } } } if ($id > 0) { $this->update($data, array('payVoucherId' => $id)); } else { unset($data['payVoucherId']); $this->insert($data); } if (!$payable->getPayVoucherId()) { $payable->setPayVoucherId($this->getLastInsertValue()); } return $payable; }