Added fibu account numbers to Address; new permission fibu + employee

This commit is contained in:
Frank Schubert
2023-12-14 17:45:20 +01:00
parent 7c96f73355
commit 194ed0da1d
15 changed files with 517 additions and 50 deletions

View File

@@ -2,6 +2,8 @@
class Address extends mfBaseModel {
protected $forcestr = ['street','company','zip','phone','fax','mobile','note'];
private $in_after_save = false;
private $parent;
private $childaddresses;
private $links = [];
@@ -14,6 +16,55 @@ class Address extends mfBaseModel {
private $phoneparts;
protected function afterSave() {
// prevent potential infinite loop
if($this->in_after_save) return true;
$this->in_after_save = true;
$this->syncToFibuMerge();
}
private function syncToFibuMerge() {
if(!$this->customer_number) return true;
//var_dump($this);exit;
if($this->fibu_account_number) {
$fibumerge = XinonFibuMergeModel::getFirst(["old_custnum" => $this->customer_number]);
if(!$fibumerge) {
// create fibu merge
$fibumerge = XinonFibuMergeModel::create([
"old_custnum" => $this->customer_number,
"new_custnum" => $this->fibu_account_number,
"name" => ($this->company) ? $this->company : $this->lastname,
"vorname" => ($this->company) ? "" : $this->firstname,
"strasse" => $this->street,
"plz" => $this->zip,
"ort" => $this->city,
]);
$fibumerge->save();
return true;
}
if($fibumerge->new_custnum != $this->fibu_account_number) {
$fibumerge->new_custnum = $this->fibu_account_number;
$fibumerge->save();
}
} elseif($this->_old_data->fibu_account_number) {
// fibu account number was removed => remove fibumerge entry
$fibumerge = XinonFibuMergeModel::getFirst(["old_custnum" => $this->customer_number, "new_custnum" => $this->_old_data->fibu_account_number]);
//var_dump($fibumerge);exit;
if(!$fibumerge) return true;
$fibumerge->delete();
}
return true;
}
public function getFullName() {
// Assumes "Firma1 Firma2" or "firstname lastname" as readable form
$name = "";
@@ -146,6 +197,24 @@ class Address extends mfBaseModel {
}
}*/
public static function getNextSupplierNumber() {
$db = FronkDB::singleton();
$res = $db->select("Address","fibu_supplier_number", "fibu_supplier_number > 0 ORDER BY fibu_supplier_number DESC LIMIT 1");
if(!$db->num_rows($res)) {
return TT_FIRST_SUPPLIER_NUM;
}
$data = $db->fetch_object($res);
$last_num = $data->fibu_supplier_number;
if($last_num) {
$new_num = $last_num + 1;
} else {
$new_num = TT_FIRST_SUPPLIER_NUM;
}
return $new_num;
}
public function getProperty($name) {
if($this->$name == null) {