diff --git a/Layout/default/Address/Form.php b/Layout/default/Address/Form.php index bff629cb1..73e7e9da6 100644 --- a/Layout/default/Address/Form.php +++ b/Layout/default/Address/Form.php @@ -261,7 +261,7 @@
- Standard: 30 Tage + Standard: Tage
diff --git a/Layout/default/Address/Index.php b/Layout/default/Address/Index.php index d37b6fd14..c2d1376bb 100644 --- a/Layout/default/Address/Index.php +++ b/Layout/default/Address/Index.php @@ -40,6 +40,7 @@
AR-Merge / Fibu Konten Import " class="ml-2 btn btn-outline-primary"> Inkrementellen BMD-Export starten + Letzter Export: "full"])?>" class="btn btn-outline-danger float-right"> Vollen BMD-Export starten
diff --git a/Layout/default/Address/bmd_export.csv.php b/Layout/default/Address/bmd_export.csv.php index b8e3cb6dc..ee1f1ac88 100644 --- a/Layout/default/Address/bmd_export.csv.php +++ b/Layout/default/Address/bmd_export.csv.php @@ -3,7 +3,7 @@ Lieferant;Kunde;Kundenummer;FIBU-Verrechnungsnummer;FIBU Lieferantennummer;Zahlu foreach($addresses as $a): ?> -;;;;;;nl2ws($a["company"])?>;nl2ws($a["firstname"])?>;nl2ws($a["lastname"])?>;nl2ws($a["street"])?>;nl2ws($a["$address->zip"])?>;nl2ws($a["city"])?>;nl2ws($a["country"])?>;nl2ws($a["phone"])?>;nl2ws($a["mobile"])?>;nl2ws($a["email"])?>;nl2ws($a["uid"])?>;;;;;; +;;;;;;nl2ws($a["company"])?>;nl2ws($a["firstname"])?>;nl2ws($a["lastname"])?>;nl2ws($a["street"])?>;nl2ws($a["$address->zip"])?>;nl2ws($a["city"])?>;nl2ws($a["country"])?>;nl2ws($a["phone"])?>;nl2ws($a["mobile"])?>;nl2ws($a["email"])?>;nl2ws($a["uid"])?>;;;;;; layout()->set("request", $this->request); $this->layout()->set("pagination", $pagination); + + $last_export = false; + $bmd_export_ts = new mfConfig("bmd.export.ts"); + if($bmd_export_ts->value()) { + $last_export = $bmd_export_ts->value(); + } + $this->layout()->set("last_bmd_export", $last_export); + return true; @@ -201,13 +209,78 @@ class AddressController extends mfBaseController { $addresses = []; foreach(AddressModel::search($search) as $address) { + // if supplier -> use it + if($address->fibu_supplier_number) { + $addresses[$address->fibu_supplier_number] = $address; + continue; + } + + // if is primary -> use it + if($address->fibu_account_number && $address->fibu_primary_account) { + $addresses[$address->fibu_account_number] = $address; + continue; + } + + // if only address with fibu_account_num -> make primary + if($address->fibu_account_number && !$address->fibu_primary_account) { + // look up other addresses with same account num + $address_count = AddressModel::count(["fibu_account_number" => $address->fibu_account_number]); + if($address_count === 1) { + $address->fibu_primary_account = 1; + $address->save(); + $addresses[$address->fibu_account_number] = $address; + continue; + } + + // if more addresses with fibu_account_num -> find primary + if($address_count > 1) { + // find primary + $primary = AddressModel::getFirst(["fibu_account_number" => $address->fibu_account_number, "fibu_primary_account" => true]); + if($primary) { + // use single primary + $addresses[$primary->fibu_account_number] = $primary; + continue; + } else { + // if no primary -> make last one primary + $new_primary = false; + foreach(AddressModel::search(["fibu_account_number" => $address->fibu_account_number]) as $primary) { + $new_primary = $primary; + } + if(!$new_primary) { + var_dump($address);exit; + } + $new_primary->fibu_primary_account = 1; + $new_primary->save(); + $addresses[$new_primary->fibu_account_number] = $new_primary; + continue; + } + } + var_dump($address);exit; + } + + // if no fibu account number but customer number -> create fibu account number + if($address->customer_number && !$address->fibu_account_number) { + // Address::afterSave() generates new fibu account number + $address->save(); + if(!$address->fibu_account_number) { + var_dump($address);exit; + } + $addresses[$address->fibu_account_number] = $address; + continue; + } + + } + + $export_addresses = []; + + foreach($addresses as $address) { $a = []; $a["is_supplier"] = (array_key_exists("supplier", $address->types) && $address->types['supplier']) ? "1" : "0"; $a["is_customer"] = "1"; $a["customer_number"] = $address->customer_number; $a["fibu_account_number"] = $address->fibu_account_number; $a["fibu_supplier_number"] = $address->fibu_supplier_number; - $a["fibu_supplier_due"] = $address->fibu_supplier_due; + $a["fibu_supplier_due"] = (is_numeric($address->fibu_supplier_due)) ? $address->fibu_supplier_due : TT_ADDRESS_DEFAULT_SUPPLIER_DUE; $a["company"] = $address->company; $a["firstname"] = $address->firstname; $a["lastname"] = $address->lastname; @@ -233,7 +306,7 @@ class AddressController extends mfBaseController { $a["bic"] = $address->bank_account_bic; } - $addresses[] = $a; + $export_addresses[] = $a; } @@ -241,7 +314,7 @@ class AddressController extends mfBaseController { $tpl = new Layout(); $tpl->setTemplate("Address/bmd_export.csv"); - $tpl->set("addresses", $addresses); + $tpl->set("addresses", $export_addresses); $csv_content = $tpl->render(); $filename = "thetool_address_export_".$type."_".date("Y-m-d-H-i-s").".csv"; diff --git a/application/Address/AddressModel.php b/application/Address/AddressModel.php index e6ca33522..4bc868620 100644 --- a/application/Address/AddressModel.php +++ b/application/Address/AddressModel.php @@ -166,7 +166,7 @@ class AddressModel { $res = $db->query($sql); if($db->num_rows($res)) { $data = $db->fetch_object($res); - return $data->cnt; + return (int)$data->cnt; } return 0; } diff --git a/lib/mvcfronk/mfConfig/mfConfig.php b/lib/mvcfronk/mfConfig/mfConfig.php index fcbc8c7d2..d0bc2250a 100644 --- a/lib/mvcfronk/mfConfig/mfConfig.php +++ b/lib/mvcfronk/mfConfig/mfConfig.php @@ -49,7 +49,16 @@ class mfConfig { if($value !== null) { $this->value = $value; } - return $this->value; + $return_value = $this->value; + + if($this->type == "int") { + $return_value = (int)$return_value; + } + if($this->type == "float") { + $return_value = (float)$return_value; + } + + return $return_value; } public function type($type = null) {