Added address-no-fibunum import script
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
class Address extends mfBaseModel {
|
class Address extends mfBaseModel {
|
||||||
protected $forcestr = ['street','company','zip','phone','fax','mobile','note'];
|
protected $forcestr = ['street','company','zip','phone','fax','mobile','note'];
|
||||||
private $in_after_save = false;
|
private $in_after_save = 0;
|
||||||
|
|
||||||
private $parent;
|
private $parent;
|
||||||
private $childaddresses;
|
private $childaddresses;
|
||||||
@@ -19,10 +19,13 @@ class Address extends mfBaseModel {
|
|||||||
protected function afterSave() {
|
protected function afterSave() {
|
||||||
// prevent potential infinite loop
|
// prevent potential infinite loop
|
||||||
if($this->in_after_save) return true;
|
if($this->in_after_save) return true;
|
||||||
$this->in_after_save = true;
|
$this->in_after_save++;
|
||||||
|
|
||||||
$this->generateFibuAccountNumber();
|
$this->generateFibuAccountNumber();
|
||||||
$this->syncToFibuMerge();
|
$this->syncToFibuMerge();
|
||||||
|
|
||||||
|
$this->in_after_save--;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function generateFibuAccountNumber() {
|
private function generateFibuAccountNumber() {
|
||||||
@@ -40,11 +43,31 @@ class Address extends mfBaseModel {
|
|||||||
$this->save();
|
$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() {
|
private function syncToFibuMerge() {
|
||||||
if(!$this->customer_number) return true;
|
if(!$this->customer_number) return true;
|
||||||
|
|
||||||
//var_dump($this);exit;
|
//var_dump($this);exit;
|
||||||
|
|
||||||
|
$me = new User();
|
||||||
|
$me->loadMe();
|
||||||
|
|
||||||
if($this->fibu_account_number) {
|
if($this->fibu_account_number) {
|
||||||
$fibumerge = XinonFibuMergeModel::getFirst(["old_custnum" => $this->customer_number]);
|
$fibumerge = XinonFibuMergeModel::getFirst(["old_custnum" => $this->customer_number]);
|
||||||
if(!$fibumerge) {
|
if(!$fibumerge) {
|
||||||
@@ -57,6 +80,8 @@ class Address extends mfBaseModel {
|
|||||||
"strasse" => $this->street,
|
"strasse" => $this->street,
|
||||||
"plz" => $this->zip,
|
"plz" => $this->zip,
|
||||||
"ort" => $this->city,
|
"ort" => $this->city,
|
||||||
|
"create_by" => $me->id,
|
||||||
|
"edit_by" => $me->id
|
||||||
]);
|
]);
|
||||||
$fibumerge->save();
|
$fibumerge->save();
|
||||||
return true;
|
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