BMD export update / address Skonto

This commit is contained in:
Frank Schubert
2024-01-16 16:46:16 +01:00
parent 898e35f830
commit 086706d6c7
7 changed files with 193 additions and 41 deletions

View File

@@ -192,17 +192,22 @@ class AddressController extends mfBaseController {
$last_export = $export_ts->value();
}
$type = "inc";
if(!file_exists(TT_ADDRESS_BMD_EXPORT_PATH)) {
$this->layout()->setFlash("Export Pfad (".TT_ADDRESS_BMD_EXPORT_PATH.") nicht gefunden!", "error");
}
$filepath = TT_ADDRESS_BMD_EXPORT_PATH."/".TT_ADDRESS_BMD_EXPORT_FILENAME;
$type = "inc";
if($this->request->type == "full") {
$last_export = 0;
$type = "full";
}
if(!file_exists(TT_ADDRESS_BMD_EXPORT_PATH)) {
$this->layout()->setFlash("Export Pfad (".TT_ADDRESS_BMD_EXPORT_PATH.") nicht gefunden!", "error");
// delete export file if export if full
if($last_export == 0 && file_exists($filepath)) {
unlink($filepath);
}
$export_ts->value(date('U'));
$search = ["edit>" => $last_export, "customer_or_fibu_numbers" => true];
@@ -215,7 +220,11 @@ class AddressController extends mfBaseController {
$addresses = [];
foreach(AddressModel::search($search) as $address) {
// if supplier -> add it as extra line
if($address->fibu_supplier_number) {
$addresses[$address->fibu_supplier_number] = $address;
if(!$address->fibu_account_number) continue;
}
// if is primary -> use it
if($address->fibu_account_number && $address->fibu_primary_account) {
@@ -271,48 +280,68 @@ class AddressController extends mfBaseController {
continue;
}
// if supplier -> use it
if($address->fibu_supplier_number) {
$addresses[$address->fibu_supplier_number] = $address;
continue;
}
}
$export_addresses = [];
foreach($addresses as $address) {
foreach($addresses as $fibu_num => $address) {
$a = [];
$a["id"] = $address->id;
$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["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"] = $fibu_num;
//$a["fibu_supplier_number"] = $address->fibu_supplier_number;
$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;
$a["fibu_supplier_skonto"] = $address->fibu_supplier_skonto;
$a["fibu_supplier_skonto_rate"] = $address->fibu_supplier_skonto_rate;
$a["street"] = $address->street;
$a["zip"] = $address->zip;
$a["city"] = $address->city;
$a["country"] = $address->country;
$a["phone"] = $address->phone;
$a["mobile"] = $address->mobile;
$a["email"] = $address->email;
$a["countrycode"] = ($address->country) ? __($address->country, "cc") : "AT";
$a["phone"] = "";
if($address->mobile) $a["phone"] = $address->mobile;
if($address->phone) $a["phone"] = $address->phone;
$a["uid"] = $address->uid;
$a["billing_type"] = $address->billing_type;
$a["billing_delivery"] = $address->billing_delivery;
if(array_key_exists("billing", $address->links) && $address->links["billing"]) {
$a["bank"] = $address->links["billing"]->bank_account_bank;
$a["bank_owner"] = $address->links["billing"]->bank_account_owner;
$a["iban"] = $address->links["billing"]->bank_account_iban;
$a["bic"] = $address->links["billing"]->bank_account_bic;
$a["billing_type"] = ($address->billing_type == "sepa") ? "1" : "0";
//$a["billing_delivery"] = $address->billing_delivery;
if($address->company) {
$a["firstname"] = "";
$a["lastname"] = $address->company;
} else {
$a["firstname"] = $address->firstname;
$a["lastname"] = $address->lastname;
}
if(array_key_exists("billing", $address->links) && $address->links["billing"][0] && $address->links["billing"][0]->address_id) {
//var_dump($address->links);exit;
$bill = $address->links["billing"][0]->address;
$a["bank"] = $bill->bank_account_bank;
$a["bank_owner"] = $bill->bank_account_owner;
$a["iban"] = $bill->bank_account_iban;
$a["bic"] = $bill->bank_account_bic;
$a["email"] = $bill->email;
} else {
$a["bank"] = $address->bank_account_bank;
$a["bank_owner"] = $address->bank_account_owner;
$a["iban"] = $address->bank_account_iban;
$a["bic"] = $address->bank_account_bic;
$a["email"] = $address->email;
}
$a["customer_numbers"] = [];
$a["customer_numbers"][] = $address->customer_number;
// add all customer numbers to customer_numbers
if($address->fibu_account_number) {
foreach(AddressModel::search(["fibu_account_number" => $address->fibu_account_number]) as $secondary) {
if($secondary->customer_number && !in_array($secondary->customer_number, $a["customer_numbers"])) {
$a["customer_numbers"][] = $secondary->customer_number;
}
}
}
$export_addresses[] = $a;
@@ -325,13 +354,20 @@ class AddressController extends mfBaseController {
$tpl->setTemplate("Address/bmd_export.csv");
$tpl->set("addresses", $export_addresses);
$csv_content = $tpl->render();
$return_values = $tpl->getReturnedValue();
$csv_header = $return_values['header'];
$filename = "thetool_address_export_".$type."_".date("Y-m-d-H-i-s").".csv";
// save to TT_ADDRESS_BMD_EXPORT_PATH
$filepath = TT_ADDRESS_BMD_EXPORT_PATH."/".$filename;
if(!file_put_contents($filepath, $csv_content)) {
if(file_exists($filepath)) {
// if file exists, append new content
$result = file_put_contents($filepath, $csv_content, FILE_APPEND);
} else {
// else, add content with csv header
$result = file_put_contents($filepath, $csv_header.$csv_content);
}
if($result === false) {
$this->layout()->setFlash("Datei $filepath konnte nicht gespeichert werden!", "error");
} else {
$export_ts->save();
@@ -385,6 +421,8 @@ class AddressController extends mfBaseController {
$data['fibu_primary_account'] = 0;
}
$data['fibu_supplier_due'] = ($r->fibu_supplier_due) ? $r->fibu_supplier_due : null;
$data['fibu_supplier_skonto'] = ($r->fibu_supplier_skonto) ? $r->fibu_supplier_skonto : null;
$data['fibu_supplier_skonto_rate'] = ($r->fibu_supplier_skonto_rate) ? $r->fibu_supplier_skonto_rate : null;
}