auto generate fibu_num for billingaddresses

This commit is contained in:
Frank Schubert
2024-07-08 17:51:54 +02:00
parent 857a095f16
commit 8e9a9a2e1b
7 changed files with 91 additions and 9 deletions
+35 -4
View File
@@ -9,6 +9,7 @@ class Address extends mfBaseModel {
private $childaddresses;
private $links = [];
private $linked_as = [];
private $links_to = [];
private $types;
private $attributes;
private $permissions;
@@ -29,11 +30,30 @@ class Address extends mfBaseModel {
}
private function generateFibuAccountNumber() {
if($this->fibu_account_number || !$this->customer_number) {
public function generateFibuAccountNumber() {
if($this->fibu_account_number) {
return true;
}
$create_fibu_num = false;
if($this->customer_number) {
$create_fibu_num = true;
} else {
// check if we are billingaddress
if(ContractModel::getFirst(["billingaddress_id" => $this->id])) {
$create_fibu_num = true;
} elseif(OrderModel::getFirst(["billingaddress_id" => $this->id])) {
$create_fibu_num = true;
}
}
if(!$create_fibu_num) {
return false;
}
$fibu_account_number = Address::getNextFibuAccountNumber();
if(!$fibu_account_number) {
return false;
@@ -615,7 +635,18 @@ class Address extends mfBaseModel {
}
return $this->linked_as;
}
if($name == "links_to") {
$links_to = AddressLinkModel::search(['origin_address_id' => $this->id]);
foreach($links_to as $link) {
if(!array_key_exists($link->type, $this->links_to)) {
$this->links_to[$link->type] = [];
}
$this->links_to[$link->type][] = $link;
//var_dump($this->links);exit;
}
return $this->links_to;
}
$classname = ucfirst($name);
$idfield = $name."_id";
@@ -132,6 +132,8 @@ class AddressController extends mfBaseController {
$address = new Address($this->request->id);
$this->layout()->set("address", $address);
//var_dump($address->links_to);exit;
if(!$address->id) {
$this->layout()->setFlash("Addresse nicht gefunden", "error");
+11 -1
View File
@@ -94,6 +94,13 @@ class BillingController extends mfBaseController {
protected function importContractsAction() {
$r = $this->request;
$last_run_ts = new mfConfig("voicecallhistory.contact-job.ts");
if($last_run_ts->value() < date("U") - 43200) {
$this->layout()->setFlash("Voicecall History Contract Job ist heute noch nicht gelaufen", "error");
$this->redirect("Billing");
}
$i = 0;
$v = 0;
@@ -114,6 +121,9 @@ class BillingController extends mfBaseController {
$del = 0;
// first delete all non-invoiced billing records
foreach(BillingModel::search(["invoice_id" => null]) as $bill) {
foreach(BillingVoicenumberModel::search(["billing_id" => $bill->id]) as $billingVoicenumber) {
$billingVoicenumber->delete();
}
$bill->delete();
$del++;
}
@@ -367,7 +377,7 @@ class BillingController extends mfBaseController {
$data["owner_id"] = $contract->owner_id;
$data["billingaddress_id"] = ($contract->billingaddress_id) ? $contract->billingaddress_id : $contract->owner_id;
$data["customer_number"] = $contract->owner->customer_number;
$data["fibu_account_number"] = $contract->owner->fibu_account_number;
$data["fibu_account_number"] = $contract->owner->fibu_account_number; // TODO: fibu_account_number von billingaddress
$data["company"] = $billingaddress->company;
$data["firstname"] = $billingaddress->firstname;
$data["lastname"] = $billingaddress->lastname;
+8 -1
View File
@@ -34,7 +34,14 @@ class Contract extends mfBaseModel {
private $canceler;
private $creator;
private $editor;
protected function afterSave() {
if($this->billingaddress_id) {
$this->getProperty("billingaddress")->generateFibuAccountNumber();
}
}
private function getLinks() {
$this->linkFrom = [];
+7 -1
View File
@@ -15,7 +15,13 @@ class Order extends mfBaseModel {
private $editor;
private $shippingdate;
protected function afterSave() {
if($this->billingaddress_id) {
$this->getProperty("billingaddress")->generateFibuAccountNumber();
}
}
public function getNewPos() {
if(!$this->id) {
return 0;