diff --git a/Layout/default/Address/View.php b/Layout/default/Address/View.php index 3d4ff1ef0..278d8fb2c 100644 --- a/Layout/default/Address/View.php +++ b/Layout/default/Address/View.php @@ -176,8 +176,8 @@ - links)): ?> - links[$type] as $link): ?> + links_to) && array_key_exists($type, $address->links_to)): ?> + links_to[$type] as $link): ?> $link->address_id])?>">address->company?> diff --git a/application/Address/Address.php b/application/Address/Address.php index 5b10f9469..e6b919121 100644 --- a/application/Address/Address.php +++ b/application/Address/Address.php @@ -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"; diff --git a/application/Address/AddressController.php b/application/Address/AddressController.php index 76696bde7..1d9e26bd9 100644 --- a/application/Address/AddressController.php +++ b/application/Address/AddressController.php @@ -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"); diff --git a/application/Billing/BillingController.php b/application/Billing/BillingController.php index 92a330a9c..1275ae703 100644 --- a/application/Billing/BillingController.php +++ b/application/Billing/BillingController.php @@ -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; diff --git a/application/Contract/Contract.php b/application/Contract/Contract.php index d51b05e96..a0bf9f933 100644 --- a/application/Contract/Contract.php +++ b/application/Contract/Contract.php @@ -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 = []; diff --git a/application/Order/Order.php b/application/Order/Order.php index 15637e98c..41105b8dd 100644 --- a/application/Order/Order.php +++ b/application/Order/Order.php @@ -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; diff --git a/scripts/contract/generate-fibu_account_nums.php b/scripts/contract/generate-fibu_account_nums.php new file mode 100644 index 000000000..d5aba02d5 --- /dev/null +++ b/scripts/contract/generate-fibu_account_nums.php @@ -0,0 +1,26 @@ +#!/usr/bin/php +billingaddress_id) { + $contract->billingaddress->generateFibuAccountNumber(); + } +} + +foreach(OrderModel::getAll() as $order) { + if($order->billingaddress_id) { + $order->billingaddress->generateFibuAccountNumber(); + } +} \ No newline at end of file