2025-05-12 15:44:39 +00:00
< ? php
2025-08-05 13:52:35 +00:00
// https://crm.twinpol.com/?module=EcmInvoiceOuts&action=ecommerce&amazon-wz=true
2025-05-12 15:44:39 +00:00
2025-08-12 19:26:48 +00:00
$filename = getcwd () . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/amazonWDT/files/amazon-wz-07-2025.csv' ;
2025-05-12 15:44:39 +00:00
$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 ;
}