105 lines
4.0 KiB
PHP
105 lines
4.0 KiB
PHP
<?php
|
||
// https://crm.twinpol.com/?module=EcmInvoiceOuts&action=ecommerce&amazon-wz=true
|
||
|
||
$filename = getcwd() . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/amazonWDT/files/amazon-wz-10-2025.csv';
|
||
$handle = fopen($filename, 'r');
|
||
if ($handle === false) {
|
||
die('Cannot open file: ' . $filename);
|
||
}
|
||
|
||
$products = [];
|
||
$db = $GLOBALS['db'];
|
||
global $app_list_strings;
|
||
|
||
while (($data = fgetcsv($handle, 0, ";")) !== false) {
|
||
if ($data[2] != 'SKU' && $data[2] != '' && $data[3] != '') {
|
||
$p = array();
|
||
$p['product_code'] = $data[2];
|
||
if (substr($p['product_code'], -1) == '.' || substr($p['product_code'], -1) == '-') {
|
||
$p['product_code'] = substr($p['product_code'], 0, -1);
|
||
}
|
||
// ehhhhh
|
||
if ($p['product_code'] == 'FR00218_1000_amz_de') {
|
||
$p['product_code'] = 'FR00218_1000_amz_de_n';
|
||
}
|
||
if ($p['product_code'] == 'FR00225_1000_amz_de') {
|
||
$p['product_code'] = 'FR00225_1000_amz_de_n';
|
||
}
|
||
if ($p['product_code'] == 'FR00229_90_amz_de') {
|
||
$p['product_code'] = 'FR00229_90_amz_de_n';
|
||
}
|
||
// end of: ehhhhh
|
||
$p['quantity'] = floatval(str_replace(' ', '', $data[3]));
|
||
$p['total'] = floatval(str_replace(' ', '', str_replace(',', '.', $data[5])));
|
||
$p['price_netto'] = round($p['total'] / $p['quantity'], 2);
|
||
$fromDb = $db->fetchByAssoc($db->query("SELECT * FROM ecmproducts WHERE deleted=0 AND (code = '" . $p['product_code'] . "' OR amazon_code = '" . $p['product_code'] . "')"));
|
||
if (empty($fromDb)) {
|
||
echo 'Nie znaleziono produktu: ' . $p['product_code'] . PHP_EOL;
|
||
die('KONIEC');
|
||
}
|
||
$p['product_id'] = $fromDb['id'];
|
||
$p['name'] = $fromDb['name'];
|
||
$p['unit_id'] = $fromDb['unit_id'];
|
||
$p['unit_name'] = $app_list_strings['ecmproducts_unit_dom'][$p['unit_id']];
|
||
$p['ecmvat_name'] = '0%';
|
||
$p['ecmvat_value'] = 0;
|
||
$p['ecmvat_id'] = '9b783d21-5548-6653-e1d6-49610eb3f9dd';
|
||
$products[] = $p;
|
||
}
|
||
}
|
||
|
||
$mergedProducts = [];
|
||
foreach ($products as $product) {
|
||
if (!isset($mergedProducts[$product['product_id']])) {
|
||
$mergedProducts[$product['product_id']] = $product;
|
||
} else {
|
||
$mergedProducts[$product['product_id']]['quantity'] += $product['quantity'];
|
||
$mergedProducts[$product['product_id']]['total'] += $product['total'];
|
||
$mergedProducts[$product['product_id']]['price'] = round($mergedProducts[$product['product_id']]['total'] / $mergedProducts[$product['product_id']]['quantity'], 2);
|
||
}
|
||
}
|
||
$products = array_values($mergedProducts);
|
||
fclose($handle);
|
||
|
||
$sessionId = create_guid();
|
||
$_SESSION[$sessionId] = $products;
|
||
|
||
echo '<input title="Wystaw WZ" class="button primary" type="button" name="Edit" id="edit_button" value="Wystaw WZ"
|
||
onclick="window.open(\'index.php?module=EcmStockDocOuts&action=EditView&amazonWZ=' . $sessionId . '\')">';
|
||
|
||
|
||
|
||
|
||
|
||
function getStockStates($products)
|
||
{
|
||
$db = $GLOBALS['db'];
|
||
$query = "SELECT s.product_id, s.quantity FROM ecmstockstates AS s WHERE s.stock_id = 'add8ef6f-3d1f-5ccf-c486-64719142f096' AND s.product_id IN ('" . implode('\',\'', $products) . "')";
|
||
$res = $db->query($query);
|
||
$stockStates = array();
|
||
while ($row = $db->fetchByAssoc($res)) {
|
||
$stockStates[$row['product_id']] = isset($row['quantity']) ? intval($row['quantity']) : 0;
|
||
}
|
||
return $stockStates;
|
||
}
|
||
|
||
function getProductsForWZ($invoiceIds)
|
||
{
|
||
$db = $GLOBALS['db'];
|
||
$query = "SELECT ip.ecmproduct_id, SUM(ip.quantity) AS quantity, ip.price_netto
|
||
FROM ecommerce_invoices_products AS ip
|
||
WHERE invoice_id IN ('" . implode('\',\'', $invoiceIds) . "')
|
||
AND ip.ecmproduct_id NOT IN ('', '165f364e-9301-25ac-5906-58e38f1de4ca')
|
||
GROUP BY ip.ecmproduct_id, ip.price_netto;";
|
||
$res = $db->query($query);
|
||
$products = array();
|
||
while ($row = $db->fetchByAssoc($res)) {
|
||
$products[] = array(
|
||
'ecmproduct_id' => $row['ecmproduct_id'],
|
||
'quantity' => $row['quantity'],
|
||
'price_netto' => $row['price_netto'],
|
||
);
|
||
}
|
||
return $products;
|
||
}
|