Added address-no-fibunum import script
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
class Address extends mfBaseModel {
|
||||
protected $forcestr = ['street','company','zip','phone','fax','mobile','note'];
|
||||
private $in_after_save = false;
|
||||
private $in_after_save = 0;
|
||||
|
||||
private $parent;
|
||||
private $childaddresses;
|
||||
@@ -19,10 +19,13 @@ class Address extends mfBaseModel {
|
||||
protected function afterSave() {
|
||||
// prevent potential infinite loop
|
||||
if($this->in_after_save) return true;
|
||||
$this->in_after_save = true;
|
||||
$this->in_after_save++;
|
||||
|
||||
$this->generateFibuAccountNumber();
|
||||
$this->syncToFibuMerge();
|
||||
|
||||
$this->in_after_save--;
|
||||
|
||||
}
|
||||
|
||||
private function generateFibuAccountNumber() {
|
||||
@@ -40,11 +43,31 @@ class Address extends mfBaseModel {
|
||||
$this->save();
|
||||
}
|
||||
|
||||
public function getNewCustomerNumber() {
|
||||
$last_num = AddressModel::getLastCustomerNumber();
|
||||
$this->log->debug("last_num: $last_num");
|
||||
if($last_num) {
|
||||
$new_num = $last_num + 1;
|
||||
} else {
|
||||
$new_num = TT_FIRST_CUSTNUM;
|
||||
}
|
||||
|
||||
if(!AddressModel::search(['customer_number' => $new_num])) {
|
||||
$this->customer_number = $new_num;
|
||||
return $this->customer_number;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private function syncToFibuMerge() {
|
||||
if(!$this->customer_number) return true;
|
||||
|
||||
//var_dump($this);exit;
|
||||
|
||||
$me = new User();
|
||||
$me->loadMe();
|
||||
|
||||
if($this->fibu_account_number) {
|
||||
$fibumerge = XinonFibuMergeModel::getFirst(["old_custnum" => $this->customer_number]);
|
||||
if(!$fibumerge) {
|
||||
@@ -57,6 +80,8 @@ class Address extends mfBaseModel {
|
||||
"strasse" => $this->street,
|
||||
"plz" => $this->zip,
|
||||
"ort" => $this->city,
|
||||
"create_by" => $me->id,
|
||||
"edit_by" => $me->id
|
||||
]);
|
||||
$fibumerge->save();
|
||||
return true;
|
||||
|
||||
157
scripts/import-addresses-no-fibu-num.php
Normal file
157
scripts/import-addresses-no-fibu-num.php
Normal file
@@ -0,0 +1,157 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
|
||||
//require 'vendor/autoload.php';
|
||||
require("../config/config.php");
|
||||
|
||||
define('FRONKDB_SQLDEBUG',false);
|
||||
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
|
||||
|
||||
require_once(LIBDIR."/mvcfronk/mfRouter/mfRouter.php");
|
||||
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseModel.php");
|
||||
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseController.php");
|
||||
|
||||
$me = new User(1);
|
||||
define("INTERNAL_USER_ID", $me->id);
|
||||
define("INTERNAL_USER_USERNAME", $me->username);
|
||||
|
||||
$folder = __DIR__."/import/";
|
||||
$csvname = "kunden_ohne_fibunr.csv";
|
||||
$filename = $folder.$csvname;
|
||||
|
||||
$name_to_id = [
|
||||
"Autohaus Lang GmbH" => 1493,
|
||||
"Camyno GmbH" => 6925,
|
||||
"Dr. Smetan Martin" => 715,
|
||||
"EDGBL Ltd." => 6645,
|
||||
"List Sascha" => 5467,
|
||||
"Technopark Raaba Holding GmbH" => 4755
|
||||
];
|
||||
|
||||
$db = FronkDB::singleton();
|
||||
$log = mfLoghandler::singleton();
|
||||
|
||||
$input = fopen($filename, "r");
|
||||
|
||||
$header_line = "";
|
||||
|
||||
$l = 0;
|
||||
$c = 0;
|
||||
while($csv = fgetcsv($input, 0, ";")) {
|
||||
$l++;
|
||||
if($l == 1) {
|
||||
$header_line = $csv;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!trim($csv[3])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//var_dump($csv);exit;
|
||||
|
||||
$customer_number = trim($csv[0]);
|
||||
$supplier_number = trim($csv[2]);
|
||||
$company = trim($csv[3]);
|
||||
$street = trim($csv[4]);
|
||||
$zip = trim($csv[5]);
|
||||
$city = trim($csv[6]);
|
||||
$country = trim($csv[7]);
|
||||
|
||||
if(!$company) continue;
|
||||
$address = false;
|
||||
|
||||
if(!$customer_number) $customer_number = null;
|
||||
|
||||
if(array_key_exists($company, $name_to_id)) {
|
||||
$address = new Address($name_to_id[$company]);
|
||||
}
|
||||
|
||||
if(!$address) {
|
||||
if($customer_number) {
|
||||
$address = AddressModel::getFirst(["customer_number" => $customer_number]);
|
||||
if(!$address) {
|
||||
echo "customer number not found $company - $customer_number: to create\n";
|
||||
|
||||
$address = AddressModel::create([
|
||||
'customer_number' => $customer_number,
|
||||
'company' => $company,
|
||||
'street' => $street,
|
||||
'zip' => $zip,
|
||||
'city' => $city,
|
||||
'country' => $country,
|
||||
'firstname' => '',
|
||||
'lastname' => '',
|
||||
'phone' => '',
|
||||
'fax' => '',
|
||||
'mobile' => '',
|
||||
'email' => '',
|
||||
'note' => '',
|
||||
'create_by' => $me->id,
|
||||
'edit_by' => $me->id
|
||||
]);
|
||||
|
||||
if(!$address->save()) {
|
||||
die("Cannot save $company $fibu_supplier_number\n");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$address = AddressModel::getFirst([
|
||||
"company" => $company,
|
||||
"street" => $street,
|
||||
"zip" => $zip
|
||||
]);
|
||||
if(!$address) {
|
||||
echo "Adresse nicht gefunden $company, $street, $zip\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($address && !$address->customer_number) {
|
||||
$address->customer_number = $customer_number;
|
||||
}
|
||||
|
||||
if(!$address || ($address->customer_number && $customer_number && $address->customer_number != $customer_number)) {
|
||||
echo "creating new ($company, $customer_number)\n";
|
||||
$address = AddressModel::create([
|
||||
'customer_number' => $customer_number,
|
||||
'company' => $company,
|
||||
'street' => $street,
|
||||
'zip' => $zip,
|
||||
'city' => $city,
|
||||
'country' => $country,
|
||||
'firstname' => '',
|
||||
'lastname' => '',
|
||||
'phone' => '',
|
||||
'fax' => '',
|
||||
'mobile' => '',
|
||||
'email' => '',
|
||||
'note' => '',
|
||||
'create_by' => $me->id,
|
||||
'edit_by' => $me->id
|
||||
]);
|
||||
if(!$address->save()) {
|
||||
die("Cannot save $company $fibu_supplier_number\n");
|
||||
}
|
||||
}
|
||||
|
||||
$address->save();
|
||||
|
||||
if(!$address->customer_number) {
|
||||
$address->getNewCustomerNumber();
|
||||
//echo "==================\nbefore customerNum save:\n";
|
||||
//var_dump($address);
|
||||
$address->save();
|
||||
//echo "==================\nafter customerNum save:\n";
|
||||
//var_dump($address);exit;
|
||||
}
|
||||
|
||||
$csv_out[] = $address->fibu_account_number.";".implode(";", $csv);
|
||||
|
||||
}
|
||||
|
||||
$out = "fibu_account_number;".implode(";",$header_line)."\n";
|
||||
$out .= implode("\n",$csv_out);
|
||||
|
||||
echo $out."\n";
|
||||
|
||||
Reference in New Issue
Block a user