Finished Address BMD Export

This commit is contained in:
Frank Schubert
2024-01-05 18:22:17 +01:00
parent 3591da6729
commit f81fd2be06
6 changed files with 90 additions and 7 deletions

View File

@@ -45,6 +45,14 @@ class AddressController extends mfBaseController {
$this->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";