Add php files
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
<?php
|
||||
// show all php errors
|
||||
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
|
||||
ini_set('display_errors', 1);
|
||||
|
||||
// read csv file tab separated
|
||||
$filename = getcwd() . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/amazonWDT/files/01-2025.csv';
|
||||
$handle = fopen($filename, 'r');
|
||||
if ($handle === false) {
|
||||
die('Cannot open file: ' . $filename);
|
||||
}
|
||||
|
||||
$de = [];
|
||||
$cz = [];
|
||||
while (($data = fgetcsv($handle, 0, "\t")) !== false) {
|
||||
if (count($data) == 1 && $data[0] == null) {
|
||||
continue;
|
||||
}
|
||||
if ($data[1] != 'Przemieszczenie - WNT') {
|
||||
continue;
|
||||
}
|
||||
if ($data[8] == 'DE' && $data[9] == 'PL') {
|
||||
$de[] = $data;
|
||||
}
|
||||
if ($data[8] == 'CZ' && $data[9] == 'PL') {
|
||||
$cz[] = $data;
|
||||
}
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
/*
|
||||
if (count($de) == 0) {
|
||||
var_dump('No data for DE');
|
||||
} else {
|
||||
createFVKOR('DE', $de);
|
||||
}
|
||||
|
||||
if (count($cz) == 0) {
|
||||
var_dump('No data for CZ');
|
||||
} else {
|
||||
createFVKOR('CZ', $cz);
|
||||
}
|
||||
|
||||
*/
|
||||
//var_dump($cz);
|
||||
createFVKOR('DE', $de);
|
||||
|
||||
die();
|
||||
|
||||
|
||||
function createFVKOR($type, $products, $DO_REAL_SAVE = false)
|
||||
{
|
||||
$db = $GLOBALS['db'];
|
||||
$invoice = new EcmInvoiceOut();
|
||||
if ($type == 'DE') {
|
||||
$invoice->parent_id = 'a711623a-0217-41bd-ecf6-664c84553473';
|
||||
$invoice->parent_name = 'Twinpol DE';
|
||||
$invoice->parent_nip = '367123377';
|
||||
}
|
||||
if ($type == 'CZ') {
|
||||
$invoice->parent_id = 'bf60a128-0b62-4154-c21f-6797718a6354';
|
||||
$invoice->parent_name = 'Twinpol CZ';
|
||||
$invoice->parent_nip = 'CZ687253791';
|
||||
}
|
||||
$invoice->parent_address_street = 'Aleja Lipowa 48';
|
||||
$invoice->parent_address_postalcode = '87-126';
|
||||
$invoice->parent_address_city = 'Obrowo';
|
||||
|
||||
$invoice->type = 'correct';
|
||||
$date = '31.01.2025';
|
||||
$invoice->register_date = $date;
|
||||
$invoice->sell_date = $date;
|
||||
$invoice->validtill_date = $date;
|
||||
|
||||
$invoice->payment_date = $invoice->register_date;
|
||||
$invoice->payment_date_days = 0;
|
||||
$invoice->payment_method = '1568e47e-1732-e0ad-0000-67b6377f26df';
|
||||
|
||||
$invoice->pdf_type = "K";
|
||||
$invoice->currency_id = 'PLN';
|
||||
global $current_user;
|
||||
$invoice->created_by = $current_user->id;
|
||||
$invoice->assigned_user_id = $current_user->id;
|
||||
|
||||
$invoice->wz_id = '';
|
||||
$invoice->wz_name = '';
|
||||
|
||||
$invoice->position_list = groupProductsAndFindFV($products, $invoice->parent_id, $date);
|
||||
|
||||
$invoiceId = $invoice->position_list[0]['old_ecminvoiceout_id'];
|
||||
foreach ($invoice->position_list as $p) {
|
||||
if ($p['old_ecminvoiceout_id'] != $invoiceId) {
|
||||
die('Different ecminvoiceout_id in position_list');
|
||||
}
|
||||
}
|
||||
|
||||
$invoice->id = $invoice->position_list[0]['old_ecminvoiceout_id'];
|
||||
|
||||
var_dump($invoice->position_list);
|
||||
|
||||
if ($DO_REAL_SAVE) {
|
||||
$id = $invoice->save();
|
||||
echo $id;
|
||||
}
|
||||
}
|
||||
|
||||
function groupProductsAndFindFV($products, $client, $date)
|
||||
{
|
||||
$db = $GLOBALS['db'];
|
||||
$position_list = [];
|
||||
|
||||
foreach ($products as $p) {
|
||||
// if last character is dot, remove it
|
||||
if (substr($p[10], -1) == '.') {
|
||||
$p[10] = substr($p[10], 0, -1);
|
||||
}
|
||||
$fromDb = $db->fetchByAssoc($db->query("SELECT id, name, code, product_category_id, unit_id FROM ecmproducts WHERE code = '$p[10]' OR amazon_code = '$p[10]'"));
|
||||
if ($fromDb == false) {
|
||||
var_dump($p);
|
||||
continue;
|
||||
}
|
||||
|
||||
$prod = searchProduct($fromDb['id'], $position_list);
|
||||
|
||||
if ($prod) {
|
||||
$prod['quantity'] += intval($p[11]);
|
||||
$prod['total_netto'] += floatval(str_replace(",", ".", $p[17]));
|
||||
|
||||
foreach ($position_list as $key => $value) {
|
||||
if ($value['product_id'] == $prod['product_id']) {
|
||||
$position_list[$key] = $prod;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$prod['product_id'] = $fromDb['id'];
|
||||
$prod['name'] = $fromDb['name'];
|
||||
$prod['product_code'] = $fromDb['code'];
|
||||
$prod['quantity'] = intval($p[11]);
|
||||
$prod['total_netto'] = floatval(str_replace(",", ".", $p[17]));
|
||||
|
||||
$prod['total_vat'] = 0;
|
||||
$prod['ecmvat_id'] = '9b783d21-5548-6653-e1d6-49610eb3f9dd';
|
||||
$prod['ecmvat_name'] = '0%';
|
||||
$prod['ecmvat_value'] = 0;
|
||||
|
||||
$prod['ecmproductcategory_id'] = $fromDb['product_category_id'];
|
||||
|
||||
$prod['dd_unit_id'] = $fromDb['unit_id'];
|
||||
global $app_list_strings;
|
||||
$prod['dd_unit_name'] = $app_list_strings['ecmproducts_unit_dom'][$fromDb['unit_id']];
|
||||
|
||||
$position_list[] = $prod;
|
||||
}
|
||||
}
|
||||
// find FV
|
||||
$date = explode(".", $date);
|
||||
$date = $date[2] . '-' . $date[1] . '-' . $date[0];
|
||||
$final_list = [];
|
||||
var_dump($position_list);
|
||||
foreach ($position_list as $prod) {
|
||||
$qty = $prod['quantity'];
|
||||
$prodId = $prod['product_id'];
|
||||
$query = "
|
||||
SELECT ii.*, i.id AS invoiceId
|
||||
FROM ecminvoiceoutitems AS ii
|
||||
INNER JOIN ecminvoiceouts AS i
|
||||
ON i.id = ii.ecminvoiceout_id
|
||||
WHERE ii.quantity >= $qty AND ii.ecmproduct_id = '$prodId'
|
||||
AND i.type = 'normal' AND i.parent_id = '$client' AND i.register_date < '$date'
|
||||
ORDER BY i.register_date DESC LIMIT 0,1
|
||||
";
|
||||
$fromFV = $db->fetchByAssoc($db->query($query));
|
||||
if ($fromFV == null) {
|
||||
die('Nie znaleziono produktu'. $query);
|
||||
}
|
||||
$prod['product_itemold_id'] = $fromFV['id'];
|
||||
$prod['old_total_netto'] = floatval($fromFV['total_netto']);
|
||||
$prod['old_total_vat'] = floatval($fromFV['total_vat']);
|
||||
$prod['old_total_brutto'] = floatval($fromFV['total_brutto']);
|
||||
$prod['old_quantity'] = floatval($fromFV['quantity']);
|
||||
|
||||
$prod['total_netto'] = $prod['old_total_netto'] - $prod['total_netto'];
|
||||
$prod['quantity'] = $prod['old_quantity'] - $prod['quantity'];
|
||||
|
||||
$prod['price_netto'] = $prod['total_netto'] / $prod['quantity'];
|
||||
$prod['price_brutto'] = $prod['price_netto'];
|
||||
$prod['price_start'] = $prod['price_netto'];
|
||||
|
||||
$prod['total_netto'] = $prod['quantity'] * $prod['price_netto'];
|
||||
$prod['total_brutto'] = $prod['total_netto'];
|
||||
|
||||
$prod['old_ecminvoiceout_id'] = $fromFV['invoiceId'];
|
||||
$final_list[] = $prod;
|
||||
$fromFV['old_ecminvoiceout_id'] = $fromFV['invoiceId'];
|
||||
$fromFV['product_corrected'] = 'true';
|
||||
$final_list[] = $fromFV;
|
||||
}
|
||||
return $final_list;
|
||||
}
|
||||
|
||||
function searchProduct($productId, $products)
|
||||
{
|
||||
foreach ($products as $p) {
|
||||
if ($p['product_id'] == $productId) {
|
||||
return $p;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user