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): ?>
| =__($type)?> |
$link->address_id])?>">=$link->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