Files
crm.twinpol.com/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/amazonWDT/amazonWZ.php

93 lines
3.5 KiB
PHP
Raw Normal View History

2025-05-12 15:44:39 +00:00
<?php
$filename = getcwd() . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/amazonWDT/files/amazon-wz-04-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);
}
$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;
}