diff --git a/application/models/crm/Konto_model.php b/application/models/crm/Konto_model.php index 286d3189e..eae38a49e 100644 --- a/application/models/crm/Konto_model.php +++ b/application/models/crm/Konto_model.php @@ -11,4 +11,58 @@ class Konto_model extends DB_Model $this->dbTable = 'public.tbl_konto'; $this->pk = 'buchungsnr'; } + + /** + * Sets a Payment as paid + */ + public function setPaid($buchungsnr) + { + // get payment + $buchungResult = $this->loadWhere(array('buchungsnr' => $buchungsnr)); + + if(isSuccess($buchungResult) && hasData($buchungResult)) + { + // get already paid amount + $this->addSelect('sum(betrag) as bezahlt'); + $this->addGroupBy('buchungsnr_verweis'); + $buchungVerweisResult = $this->loadWhere(array('buchungsnr_verweis' => $buchungsnr)); + + if(isSuccess($buchungVerweisResult)) + { + if(hasData($buchungVerweisResult)) + { + $betragBezahltResult = getData($buchungVerweisResult); + $betragBezahlt = $betragBezahltResult->bezahlt; + } + else + $betragBezahlt = 0; + + $buchung = getData($buchungResult); + $buchung = $buchung[0]; + + // calculate open amount + $betragOffen = $betragBezahlt - $buchung->betrag*(-1); + + $data = array( + 'person_id' => $buchung->person_id, + 'studiengang_kz' => $buchung->studiengang_kz, + 'studiensemester_kurzbz' => $buchung->studiensemester_kurzbz, + 'buchungsnr_verweis' => $buchungsnr, + 'betrag' => $betragOffen*(-1), + 'buchungsdatum' => date('Y-m-d'), + 'buchungstext' => $buchung->buchungstext, + 'insertamum' => date('Y-m-d H:i:s'), + 'insertvon' => '', + 'buchungstyp_kurzbz' => $buchung->buchungstyp_kurzbz, + ); + return $this->insert($data); + } + else + return error('Failed to load Payment'); + } + else + { + return error('Failed to load Payment'); + } + } }