fix conflicts
This commit is contained in:
commit
a4752145fa
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
||||
$_SERVER['HTTP_HOST'] = 'www.bebeboutik.com';
|
||||
// $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
||||
// $_SERVER['HTTP_HOST'] = 'www.bebeboutik.com';
|
||||
include('../../../config/settings.inc.php');
|
||||
include('../../../config/config.inc.php');
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
$format = $CRE;
|
||||
if($magistorModule->active) {
|
||||
require_once('connection_ftp.php');
|
||||
//require_once('connection_ftp.php');
|
||||
@set_time_limit(0);
|
||||
|
||||
// Checking for ".bal" files with a "CRE" prefix that has an equivalent ".dat" file and process them...
|
||||
@ -69,13 +69,15 @@
|
||||
$content = file_get_contents($datFile);
|
||||
$lines = preg_split('@\n@',$content);
|
||||
|
||||
|
||||
$id_order_details = array();
|
||||
$shipping_numbers = array();
|
||||
$parcel_carrier = array();
|
||||
if(!empty($lines)) {
|
||||
foreach( $lines as $line ) {
|
||||
$details = array();
|
||||
$order_details = array();
|
||||
|
||||
// GET DATA
|
||||
foreach( $lines as $line ) {
|
||||
$data = array();
|
||||
foreach($format as $field=>$value) {
|
||||
$data[] = substr($line, ($value[0]-1), $value[1]);
|
||||
@ -98,7 +100,9 @@
|
||||
$id_order = (int) $id_order;
|
||||
}
|
||||
|
||||
$order = new Order((int) $id_order);
|
||||
if(!isset($details[(int)$id_order])){
|
||||
$details[(int)$id_order] = array();
|
||||
}
|
||||
|
||||
$code_art = explode("_", trim($data[9]));
|
||||
if(count($code_art)>1) {
|
||||
@ -107,350 +111,379 @@
|
||||
$id_product = $code_art[0];
|
||||
$id_attribute = 0;
|
||||
}
|
||||
if($detail = Db::getInstance()->getRow('
|
||||
SELECT `id_order_detail`, `product_quantity` - GREATEST(`product_quantity_return`, `product_quantity_refunded`) AS `quantity`
|
||||
FROM `'._DB_PREFIX_.'order_detail`
|
||||
WHERE `id_order` = '.(int) $id_order.'
|
||||
AND `product_id` = '.(int) $id_product.'
|
||||
AND `product_attribute_id` = '.(int) $id_attribute.'
|
||||
')) {
|
||||
$sent = (int) Db::getInstance()->getValue('
|
||||
SELECT SUM(`quantity`)
|
||||
FROM `'._DB_PREFIX_.'philea_parcel`
|
||||
WHERE `id_order_detail` = '.(int) $detail['id_order_detail'].'
|
||||
');
|
||||
|
||||
$to_send = (int) $detail['quantity'] - $sent;
|
||||
$order = new Order((int) $id_order);
|
||||
|
||||
if((int) $data[10] <= $to_send) {
|
||||
if(trim($data[5]) != '') {
|
||||
Db::getInstance()->ExecuteS('
|
||||
INSERT INTO `'._DB_PREFIX_.'philea_parcel`
|
||||
VALUES (
|
||||
'.(int) $detail['id_order_detail'].',
|
||||
'.(int) $data[10].',
|
||||
"'.pSQL(trim($data[5])).'",
|
||||
"'.pSQL(substr($data[7], 0, 4).'-'.substr($data[7], 4, 2).'-'.substr($data[7], 6, 2).' 18:00:00').'"
|
||||
)
|
||||
');
|
||||
|
||||
$id_order_details[] = (int) $detail['id_order_detail'];
|
||||
$shipping_numbers[] = '"'.pSQL(trim($data[5])).'"';
|
||||
|
||||
// GET CARRIER ID
|
||||
$carrier_found = false;
|
||||
$id_active_carrier = false;
|
||||
$id_inactive_carrier = false;
|
||||
if (isset($data[8]) && $data[8]){
|
||||
$carrier_name = trim($data[8]);
|
||||
$carriers = philea_magistor::getCarriersIdByRef($carrier_name);
|
||||
if ($carriers){
|
||||
foreach ($carriers as $carrier) {
|
||||
if ($carrier['name'] == 'GLS' && $carrier_name == 'DPD') {
|
||||
continue;
|
||||
}
|
||||
if ($carrier['active'] == 1 && $carrier['deleted'] == 0) {
|
||||
$id_active_carrier = (int) $carrier['id_carrier'];
|
||||
}
|
||||
if ($carrier['active'] == 0 && $carrier['deleted'] == 0) {
|
||||
$id_inactive_carrier = (int) $carrier['id_carrier'];
|
||||
}
|
||||
if ((int) $order->id_carrier == (int) $carrier['id_carrier']){
|
||||
$carrier_found = (int) $order->id_carrier;
|
||||
}
|
||||
}
|
||||
}
|
||||
// GET CARRIER ID
|
||||
$carrier_found = false;
|
||||
$id_active_carrier = false;
|
||||
$id_inactive_carrier = false;
|
||||
if (isset($data[8]) && $data[8]){
|
||||
$carrier_name = trim($data[8]);
|
||||
$carriers = philea_magistor::getCarriersIdByRef($carrier_name);
|
||||
if ($carriers){
|
||||
foreach ($carriers as $carrier) {
|
||||
if ($carrier['name'] == 'GLS' && $carrier_name == 'DPD') {
|
||||
continue;
|
||||
}
|
||||
if ($carrier['active'] == 1 && $carrier['deleted'] == 0) {
|
||||
$id_active_carrier = (int) $carrier['id_carrier'];
|
||||
}
|
||||
if ($carrier['active'] == 0 && $carrier['deleted'] == 0) {
|
||||
$id_inactive_carrier = (int) $carrier['id_carrier'];
|
||||
}
|
||||
if ((int) $order->id_carrier == (int) $carrier['id_carrier']){
|
||||
$carrier_found = (int) $order->id_carrier;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($carrier_found)
|
||||
$id_carrier = (int) $carrier_found;
|
||||
elseif ($id_active_carrier)
|
||||
$id_carrier = (int) $id_active_carrier;
|
||||
elseif ($id_inactive_carrier)
|
||||
$id_carrier = (int) $id_inactive_carrier;
|
||||
else
|
||||
$id_carrier = (int) $order->id_carrier;
|
||||
if ($carrier_found)
|
||||
$id_carrier = (int) $carrier_found;
|
||||
elseif ($id_active_carrier)
|
||||
$id_carrier = (int) $id_active_carrier;
|
||||
elseif ($id_inactive_carrier)
|
||||
$id_carrier = (int) $id_inactive_carrier;
|
||||
else
|
||||
$id_carrier = (int) $order->id_carrier;
|
||||
|
||||
if(isset($id_carrier) && $id_carrier) {
|
||||
$parcel_carrier[(int) $id_order.'|'.trim($data[5])] = $id_carrier;
|
||||
} else { // MISSING CARRIER
|
||||
$errors[] = array(
|
||||
$data[3],
|
||||
$data[8], // carrier name
|
||||
$data[9], // code article productId_attributeId
|
||||
$data[10], // quantity
|
||||
$data[5], // shipping number
|
||||
$data[7],
|
||||
'carrier_missing',
|
||||
if(isset($id_carrier) && $id_carrier) {
|
||||
$parcel_carrier[(int) $id_order.'|'.trim($data[5])] = $id_carrier;
|
||||
}
|
||||
|
||||
$shipping_numbers[] = '"'.pSQL(trim($data[5])).'"';
|
||||
|
||||
if(!isset($details[(int)$id_order][$id_product.'_'.$id_attribute])) {
|
||||
$details[(int)$id_order][$id_product.'_'.$id_attribute] = array(
|
||||
'shipping_numbers' => array(),
|
||||
'quantity' => 0
|
||||
);
|
||||
}
|
||||
$details[(int)$id_order][$id_product.'_'.$id_attribute]['quantity'] += (int) trim($data[10]);
|
||||
$details[(int)$id_order][$id_product.'_'.$id_attribute]['shipping_numbers'][] = array(
|
||||
'number' => trim($data[5]),
|
||||
'date' => pSQL(substr($data[7], 0, 4).'-'.substr($data[7], 4, 2).'-'.substr($data[7], 6, 2).' 18:00:00'),
|
||||
'quantity' => (int) trim($data[10])
|
||||
);
|
||||
|
||||
if(!isset($order_details[(int)$id_order])){
|
||||
$order_details[(int)$id_order] = array();
|
||||
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT DISTINCT `id_order_detail`, `product_id`, `product_attribute_id`, `product_quantity` - GREATEST(`product_quantity_return`, `product_quantity_refunded`) AS `quantity`
|
||||
FROM `'._DB_PREFIX_.'order_detail`
|
||||
WHERE `id_order` = '.(int) $id_order.'
|
||||
') as $key => $row) {
|
||||
$sent = (int) Db::getInstance()->getValue('
|
||||
SELECT SUM(`quantity`)
|
||||
FROM `'._DB_PREFIX_.'philea_parcel`
|
||||
WHERE `id_order_detail` = '.(int) $row['id_order_detail'].'
|
||||
');
|
||||
$id_order_details[] = (int) $row['id_order_detail'];
|
||||
if(Pack::isPack((int)$row['product_id'])) {
|
||||
$items = Pack::getSimplePack($row['product_id']);
|
||||
foreach($items as $item) {
|
||||
if(!isset($order_details[(int)$id_order][$item['id_product_item'].'_0'])) {
|
||||
$order_details[(int)$id_order][$item['id_product_item'].'_0'] = array(
|
||||
'id_order_details' => array(),
|
||||
'quantity_to_sent' => 0
|
||||
);
|
||||
}
|
||||
$order_details[$id_order][$item['id_product_item'].'_0']['quantity_to_sent'] += (($row['quantity'] - $sent) * $item['quantity']);
|
||||
$order_details[$id_order][$item['id_product_item'].'_0']['id_order_details'][$row['id_order_detail']] = array(
|
||||
'detail_quantity' => ($row['quantity'] - $sent),
|
||||
'id_order_detail' => $row['id_order_detail']
|
||||
);
|
||||
}
|
||||
} else { // SHIPPING NUMBER IS EMPTY
|
||||
$errors[] = array(
|
||||
$data[3],
|
||||
$data[8],
|
||||
$data[9],
|
||||
$data[10],
|
||||
$data[5],
|
||||
$data[7],
|
||||
'empty_shipping_number',
|
||||
} else {
|
||||
if(!isset($order_details[(int)$id_order][$row['product_id'].'_'.$row['product_attribute_id']])) {
|
||||
$order_details[(int)$id_order][$row['product_id'].'_'.$row['product_attribute_id']] = array(
|
||||
'id_order_details' => array(),
|
||||
'quantity_to_sent' => 0
|
||||
);
|
||||
}
|
||||
$order_details[(int)$id_order][$row['product_id'].'_'.$row['product_attribute_id']]['quantity_to_sent'] += ($row['quantity'] - $sent);
|
||||
$order_details[(int)$id_order][$row['product_id'].'_'.$row['product_attribute_id']]['id_order_details'][$row['id_order_detail']] = array(
|
||||
'detail_quantity' => ($row['quantity'] - $sent),
|
||||
'id_order_detail' => $row['id_order_detail']
|
||||
);
|
||||
}
|
||||
} else {
|
||||
// TOO MUCH
|
||||
$errors[] = array(
|
||||
$data[3],
|
||||
$data[8],
|
||||
$data[9],
|
||||
$data[10],
|
||||
$data[5],
|
||||
$data[7],
|
||||
'wrong_quantities',
|
||||
);
|
||||
}
|
||||
} else {
|
||||
// NOT FOUND
|
||||
$errors[] = array(
|
||||
$data[3],
|
||||
$data[8],
|
||||
$data[9],
|
||||
$data[10],
|
||||
$data[5],
|
||||
$data[7],
|
||||
'product_not_found',
|
||||
);
|
||||
}
|
||||
} // end foreach lines
|
||||
|
||||
foreach($order_details as $order => $order_detail){
|
||||
foreach ($order_detail as $key => $product) {
|
||||
if(isset($details[(int)$order][$key])) {
|
||||
if($details[(int)$order][$key]['quantity'] <= $product['quantity_to_sent']) {
|
||||
if(count($details[(int)$order][$key]['shipping_numbers'])>1) {
|
||||
foreach($details[(int)$order][$key]['shipping_numbers'] as $shipping_number) {
|
||||
foreach($product['id_order_details'] as $id_order_detail => $row) {
|
||||
Db::getInstance()->ExecuteS('
|
||||
INSERT INTO `'._DB_PREFIX_.'philea_parcel`
|
||||
VALUES (
|
||||
'.(int) $id_order_detail.',
|
||||
'.(int) $row['detail_quantity'].',
|
||||
"'.pSQL($shipping_number['number']).'",
|
||||
"'.$shipping_number['date'].'"
|
||||
)
|
||||
');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach($product['id_order_details'] as $id_order_detail => $row) {
|
||||
Db::getInstance()->ExecuteS('
|
||||
INSERT INTO `'._DB_PREFIX_.'philea_parcel`
|
||||
VALUES (
|
||||
'.(int) $id_order_detail.',
|
||||
'.(int) $row['detail_quantity'].',
|
||||
"'.pSQL($details[(int)$order][$key]['shipping_numbers'][0]['number']).'",
|
||||
"'.$details[(int)$order][$key]['shipping_numbers'][0]['date'].'"
|
||||
)
|
||||
');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$message = "Commande : ".$order."\r\n Produit : ".$key."\r\n Quantity to sent : ".$product['quantity_to_sent']."\r\n Quantity : ".$details[(int)$order][$key]['quantity'];
|
||||
mail('marion@antadis.com', '[BBB] Erreurs quantity expe Philea', $message);
|
||||
}
|
||||
} else {
|
||||
$message = "Commande : ".$order."\r\n Produit : ".$key."\r\n Produit non présent dans le fichier expe philea";
|
||||
mail('marion@antadis.com', '[BBB] Erreurs produit expe Philea', $message);
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($details);
|
||||
unset($order_details);
|
||||
} // end if lines
|
||||
|
||||
$id_order_details = array_unique($id_order_details);
|
||||
$shipping_numbers = array_unique($shipping_numbers);
|
||||
|
||||
if(count($id_order_details) > 0) {
|
||||
$id_orders = array();
|
||||
$orders_infos = array();
|
||||
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT d.`id_order`, p.`shipping_number`, p.`date_add`
|
||||
FROM `'._DB_PREFIX_.'philea_parcel` p
|
||||
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON (p.`id_order_detail` = d.`id_order_detail`)
|
||||
WHERE d.`id_order_detail` IN ('.implode(', ', $id_order_details).')
|
||||
AND p.`shipping_number` IN ('.implode(', ', $shipping_numbers).')
|
||||
GROUP BY d.`id_order`, p.`shipping_number`
|
||||
') as $row) {
|
||||
Db::getInstance()->ExecuteS('
|
||||
INSERT INTO `'._DB_PREFIX_.'shipping_history`
|
||||
VALUES (
|
||||
'.(int) $row['id_order'].',
|
||||
"'.pSQL($row['shipping_number']).'",
|
||||
"'.pSQL($row['date_add']).'",
|
||||
'.(int) $parcel_carrier[(int) $row['id_order'].'|'.$row['shipping_number']].',
|
||||
0
|
||||
)
|
||||
');
|
||||
|
||||
$id_orders[] = (int) $row['id_order'];
|
||||
if(!isset($orders_infos[(int) $row['id_order']])) {
|
||||
$orders_infos[(int) $row['id_order']] = array();
|
||||
}
|
||||
$orders_infos[(int) $row['id_order']][] = array($row['shipping_number'], $row['date_add'], (int) $parcel_carrier[(int) $row['id_order'].'|'.$row['shipping_number']]);
|
||||
}
|
||||
|
||||
$id_orders = array_unique($id_orders);
|
||||
|
||||
$products = Db::getInstance()->ExecuteS('
|
||||
SELECT d.`id_order_detail`, d.`id_order`, c.`id_sale`, d.`product_quantity` - GREATEST(d.`product_quantity_refunded`, d.`product_quantity_return`) AS `quantity`
|
||||
FROM ps_order_detail d
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_ps_cache` c ON (d.`product_id` = c.`id_product`)
|
||||
WHERE d.`id_order` IN ('.implode(', ', $id_orders).')
|
||||
');
|
||||
|
||||
$sent_sales = array();
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT `id_order`, `id_sale`
|
||||
FROM `'._DB_PREFIX_.'shipping_history`
|
||||
WHERE `id_order` IN ('.implode(', ', $id_orders).')
|
||||
AND `id_sale` != 0
|
||||
GROUP BY `id_order`, `id_sale`
|
||||
') as $row) {
|
||||
if(!isset($sent_sales[(int) $row['id_order']])) {
|
||||
$sent_sales[(int) $row['id_order']] = array();
|
||||
}
|
||||
$sent_sales[(int) $row['id_order']][] = (int) $row['id_sale'];
|
||||
}
|
||||
|
||||
$to_send = array();
|
||||
foreach($products as $product) {
|
||||
if ((int) $product['quantity'] > 0
|
||||
&& (!isset($sent_sales[(int) $product['id_order']])
|
||||
|| !in_array((int) $product['id_sale'], $sent_sales[(int) $product['id_order']]))) {
|
||||
$to_send[] = $product;
|
||||
}
|
||||
}
|
||||
|
||||
$id_order_details = array_unique($id_order_details);
|
||||
$shipping_numbers = array_unique($shipping_numbers);
|
||||
unset($products);
|
||||
|
||||
if(count($id_order_details) > 0) {
|
||||
$id_orders = array();
|
||||
$orders_infos = array();
|
||||
$sent_products = array();
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT l.`id_order_detail`, SUM(l.`quantity`) AS `quantity`
|
||||
FROM `'._DB_PREFIX_.'lapostews` l
|
||||
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON (l.`id_order_detail` = d.`id_order_detail`)
|
||||
WHERE d.`id_order` IN ('.implode(', ', $id_orders).')
|
||||
GROUP BY l.`id_order_detail`
|
||||
') as $row) {
|
||||
$sent_products[(int) $row['id_order_detail']] = (int) $row['quantity'];
|
||||
}
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT l.`id_order_detail`, SUM(l.`quantity`) AS `quantity`
|
||||
FROM `'._DB_PREFIX_.'philea_parcel` l
|
||||
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON (l.`id_order_detail` = d.`id_order_detail`)
|
||||
WHERE d.`id_order` IN ('.implode(', ', $id_orders).')
|
||||
GROUP BY l.`id_order_detail`
|
||||
') as $row) {
|
||||
$sent_products[(int) $row['id_order_detail']] = (int) $row['quantity'];
|
||||
}
|
||||
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT d.`id_order`, p.`shipping_number`, p.`date_add`
|
||||
FROM `'._DB_PREFIX_.'philea_parcel` p
|
||||
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON (p.`id_order_detail` = d.`id_order_detail`)
|
||||
WHERE d.`id_order_detail` IN ('.implode(', ', $id_order_details).')
|
||||
AND p.`shipping_number` IN ('.implode(', ', $shipping_numbers).')
|
||||
GROUP BY d.`id_order`, p.`shipping_number`
|
||||
') as $row) {
|
||||
Db::getInstance()->ExecuteS('
|
||||
INSERT INTO `'._DB_PREFIX_.'shipping_history`
|
||||
VALUES (
|
||||
'.(int) $row['id_order'].',
|
||||
"'.pSQL($row['shipping_number']).'",
|
||||
"'.pSQL($row['date_add']).'",
|
||||
'.(int) $parcel_carrier[(int) $row['id_order'].'|'.$row['shipping_number']].',
|
||||
0
|
||||
)
|
||||
');
|
||||
$orders_to_send = array();
|
||||
$orders_list = array();
|
||||
|
||||
$id_orders[] = (int) $row['id_order'];
|
||||
if(!isset($orders_infos[(int) $row['id_order']])) {
|
||||
$orders_infos[(int) $row['id_order']] = array();
|
||||
}
|
||||
$orders_infos[(int) $row['id_order']][] = array($row['shipping_number'], $row['date_add'], (int) $parcel_carrier[(int) $row['id_order'].'|'.$row['shipping_number']]);
|
||||
$total = count($to_send);
|
||||
|
||||
foreach($to_send as $product) {
|
||||
if(!in_array((int) $product['id_order'], $orders_list)) {
|
||||
$orders_list[] = (int) $product['id_order'];
|
||||
}
|
||||
|
||||
$id_orders = array_unique($id_orders);
|
||||
|
||||
$products = Db::getInstance()->ExecuteS('
|
||||
SELECT d.`id_order_detail`, d.`id_order`, c.`id_sale`, d.`product_quantity` - GREATEST(d.`product_quantity_refunded`, d.`product_quantity_return`) AS `quantity`
|
||||
FROM ps_order_detail d
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_ps_cache` c ON (d.`product_id` = c.`id_product`)
|
||||
WHERE d.`id_order` IN ('.implode(', ', $id_orders).')
|
||||
');
|
||||
|
||||
$sent_sales = array();
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT `id_order`, `id_sale`
|
||||
FROM `'._DB_PREFIX_.'shipping_history`
|
||||
WHERE `id_order` IN ('.implode(', ', $id_orders).')
|
||||
AND `id_sale` != 0
|
||||
GROUP BY `id_order`, `id_sale`
|
||||
') as $row) {
|
||||
if(!isset($sent_sales[(int) $row['id_order']])) {
|
||||
$sent_sales[(int) $row['id_order']] = array();
|
||||
}
|
||||
$sent_sales[(int) $row['id_order']][] = (int) $row['id_sale'];
|
||||
}
|
||||
|
||||
$to_send = array();
|
||||
foreach($products as $product) {
|
||||
if ((int) $product['quantity'] > 0
|
||||
&& (!isset($sent_sales[(int) $product['id_order']])
|
||||
|| !in_array((int) $product['id_sale'], $sent_sales[(int) $product['id_order']]))) {
|
||||
$to_send[] = $product;
|
||||
if(!in_array((int) $product['id_order'], $orders_to_send)) {
|
||||
if(!isset($sent_products[(int) $product['id_order_detail']])
|
||||
|| $product['quantity'] > $sent_products[(int) $product['id_order_detail']]) {
|
||||
$orders_to_send[] = (int) $product['id_order'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($products);
|
||||
unset($sent_products);
|
||||
unset($to_send);
|
||||
|
||||
$sent_products = array();
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT l.`id_order_detail`, SUM(l.`quantity`) AS `quantity`
|
||||
FROM `'._DB_PREFIX_.'lapostews` l
|
||||
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON (l.`id_order_detail` = d.`id_order_detail`)
|
||||
WHERE d.`id_order` IN ('.implode(', ', $id_orders).')
|
||||
GROUP BY l.`id_order_detail`
|
||||
') as $row) {
|
||||
$sent_products[(int) $row['id_order_detail']] = (int) $row['quantity'];
|
||||
$orders_sent = array();
|
||||
foreach($orders_list as $order) {
|
||||
if(!in_array($order, $orders_to_send)) {
|
||||
$orders_sent[] = $order;
|
||||
}
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT l.`id_order_detail`, SUM(l.`quantity`) AS `quantity`
|
||||
FROM `'._DB_PREFIX_.'philea_parcel` l
|
||||
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON (l.`id_order_detail` = d.`id_order_detail`)
|
||||
WHERE d.`id_order` IN ('.implode(', ', $id_orders).')
|
||||
GROUP BY l.`id_order_detail`
|
||||
') as $row) {
|
||||
$sent_products[(int) $row['id_order_detail']] = (int) $row['quantity'];
|
||||
}
|
||||
|
||||
unset($orders_list);
|
||||
|
||||
$status_sent = array();
|
||||
$status_partially_sent = array();
|
||||
|
||||
foreach($orders_sent as $order) {
|
||||
if((int) Db::getInstance()->getValue('
|
||||
SELECT `id_order_state`
|
||||
FROM `'._DB_PREFIX_.'order_history`
|
||||
WHERE `id_order` = '.(int) $order.'
|
||||
ORDER BY `date_add` DESC LIMIT 1
|
||||
') != 4) {
|
||||
$status_sent[] = (int) $order;
|
||||
}
|
||||
}
|
||||
|
||||
$orders_to_send = array();
|
||||
$orders_list = array();
|
||||
|
||||
$total = count($to_send);
|
||||
|
||||
foreach($to_send as $product) {
|
||||
if(!in_array((int) $product['id_order'], $orders_list)) {
|
||||
$orders_list[] = (int) $product['id_order'];
|
||||
}
|
||||
if(!in_array((int) $product['id_order'], $orders_to_send)) {
|
||||
if(!isset($sent_products[(int) $product['id_order_detail']])
|
||||
|| $product['quantity'] > $sent_products[(int) $product['id_order_detail']]) {
|
||||
$orders_to_send[] = (int) $product['id_order'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($sent_products);
|
||||
unset($to_send);
|
||||
|
||||
$orders_sent = array();
|
||||
foreach($orders_list as $order) {
|
||||
if(!in_array($order, $orders_to_send)) {
|
||||
$orders_sent[] = $order;
|
||||
}
|
||||
}
|
||||
|
||||
unset($orders_list);
|
||||
|
||||
$status_sent = array();
|
||||
$status_partially_sent = array();
|
||||
|
||||
foreach($orders_sent as $order) {
|
||||
if((int) Db::getInstance()->getValue('
|
||||
foreach($id_orders as $order) {
|
||||
if(!in_array($order, $status_sent)) {
|
||||
if(!in_array((int) Db::getInstance()->getValue('
|
||||
SELECT `id_order_state`
|
||||
FROM `'._DB_PREFIX_.'order_history`
|
||||
WHERE `id_order` = '.(int) $order.'
|
||||
ORDER BY `date_add` DESC LIMIT 1
|
||||
') != 4) {
|
||||
$status_sent[] = (int) $order;
|
||||
}
|
||||
}
|
||||
|
||||
foreach($id_orders as $order) {
|
||||
if(!in_array($order, $status_sent)) {
|
||||
if(!in_array((int) Db::getInstance()->getValue('
|
||||
SELECT `id_order_state`
|
||||
FROM `'._DB_PREFIX_.'order_history`
|
||||
WHERE `id_order` = '.(int) $order.'
|
||||
ORDER BY `date_add` DESC LIMIT 1
|
||||
'), array(4, 17, 9, 19))) {
|
||||
$status_partially_sent[] = (int) $order;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($orders_sent);
|
||||
unset($orders_to_send);
|
||||
|
||||
foreach($orders_infos as $id_order => $parcels) {
|
||||
$order = new Order($id_order);
|
||||
$customer = new Customer((int) $order->id_customer);
|
||||
|
||||
foreach($parcels as $parcel) {
|
||||
$products_sent = '';
|
||||
|
||||
$products_names = array();
|
||||
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT d.`id_order_detail`, d.`product_name`, SUM(p.`quantity`) AS `quantity`
|
||||
FROM `'._DB_PREFIX_.'philea_parcel` p
|
||||
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON (p.`id_order_detail` = d.`id_order_detail`)
|
||||
WHERE d.`id_order` = '.(int) $id_order.'
|
||||
AND p.`shipping_number` = "'.pSQL($parcel[0]).'"
|
||||
AND p.`date_add` = "'.pSQL($parcel[1]).'"
|
||||
GROUP BY d.`id_order_detail`
|
||||
') as $p) {
|
||||
$products_sent .= '<br />'."\r\n".$p['quantity'].' x '.$p['product_name'];
|
||||
}
|
||||
|
||||
$carrier = new Carrier($parcel[2], (int) $order->id_lang);
|
||||
|
||||
if((int) $order->id_lang == 3) {
|
||||
if(preg_match('/colissimo/i', $carrier->name)) {
|
||||
$carrier->url .= '&language=es_ES';
|
||||
}
|
||||
$content_html = '<strong>Contenido del paquete:</strong>';
|
||||
$content_txt = 'Contenido del paquete:';
|
||||
} else {
|
||||
$content_html = '<strong>Contenu du colis :</strong>';
|
||||
$content_txt = 'Contenu du colis :';
|
||||
}
|
||||
|
||||
$templateVars = array(
|
||||
'{followup}' => str_replace('@', $parcel[0], $carrier->url),
|
||||
'{firstname}' => $customer->firstname,
|
||||
'{lastname}' => $customer->lastname,
|
||||
'{id_order}' => (int) $order->id,
|
||||
'{product_list}' => !empty($products_sent)? $content_html.$products_sent: '',
|
||||
'{product_list_txt}' => !empty($products_sent)? $content_txt.strip_tags($products_sent): '',
|
||||
);
|
||||
|
||||
$order->shipping_number = $parcel[0];
|
||||
$order->update();
|
||||
|
||||
if(in_array($order->id, $status_sent)) {
|
||||
$history = new OrderHistory();
|
||||
$history->id_order = (int) $order->id;
|
||||
$history->changeIdOrderState(4, (int) $order->id);
|
||||
$history->addWithemail(true, $templateVars);
|
||||
} elseif(in_array($order->id, $status_partially_sent)) {
|
||||
$history = new OrderHistory();
|
||||
$history->id_order = (int) $order->id;
|
||||
$history->changeIdOrderState(17, (int) $order->id);
|
||||
$history->addWithemail(true, $templateVars);
|
||||
}
|
||||
|
||||
|
||||
|
||||
$subjects = array(
|
||||
1 => 'Package in transit',
|
||||
2 => 'Livraison en cours',
|
||||
3 => 'Pedido en tránsito',
|
||||
);
|
||||
|
||||
Mail::Send(
|
||||
intval($order->id_lang),
|
||||
'in_transit',
|
||||
$subjects[(int) $order->id_lang],
|
||||
$templateVars,
|
||||
$customer->email,
|
||||
$customer->firstname.' '.$customer->lastname
|
||||
);
|
||||
'), array(4, 17, 9, 19))) {
|
||||
$status_partially_sent[] = (int) $order;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(count($errors) > 0) {
|
||||
mail('marion@antadis.com', '[BBB] Erreurs integration envoi Philea', serialize($errors));
|
||||
unset($orders_sent);
|
||||
unset($orders_to_send);
|
||||
|
||||
foreach($orders_infos as $id_order => $parcels) {
|
||||
$order = new Order($id_order);
|
||||
$customer = new Customer((int) $order->id_customer);
|
||||
|
||||
foreach($parcels as $parcel) {
|
||||
$products_sent = '';
|
||||
|
||||
$products_names = array();
|
||||
|
||||
foreach(Db::getInstance()->ExecuteS('
|
||||
SELECT d.`id_order_detail`, d.`product_name`, SUM(p.`quantity`) AS `quantity`
|
||||
FROM `'._DB_PREFIX_.'philea_parcel` p
|
||||
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON (p.`id_order_detail` = d.`id_order_detail`)
|
||||
WHERE d.`id_order` = '.(int) $id_order.'
|
||||
AND p.`shipping_number` = "'.pSQL($parcel[0]).'"
|
||||
AND p.`date_add` = "'.pSQL($parcel[1]).'"
|
||||
GROUP BY d.`id_order_detail`
|
||||
') as $p) {
|
||||
$products_sent .= '<br />'."\r\n".$p['quantity'].' x '.$p['product_name'];
|
||||
}
|
||||
|
||||
$carrier = new Carrier($parcel[2], (int) $order->id_lang);
|
||||
|
||||
if((int) $order->id_lang == 3) {
|
||||
if(preg_match('/colissimo/i', $carrier->name)) {
|
||||
$carrier->url .= '&language=es_ES';
|
||||
}
|
||||
$content_html = '<strong>Contenido del paquete:</strong>';
|
||||
$content_txt = 'Contenido del paquete:';
|
||||
} else {
|
||||
$content_html = '<strong>Contenu du colis :</strong>';
|
||||
$content_txt = 'Contenu du colis :';
|
||||
}
|
||||
|
||||
$templateVars = array(
|
||||
'{followup}' => str_replace('@', $parcel[0], $carrier->url),
|
||||
'{firstname}' => $customer->firstname,
|
||||
'{lastname}' => $customer->lastname,
|
||||
'{id_order}' => (int) $order->id,
|
||||
'{product_list}' => !empty($products_sent)? $content_html.$products_sent: '',
|
||||
'{product_list_txt}' => !empty($products_sent)? $content_txt.strip_tags($products_sent): '',
|
||||
);
|
||||
|
||||
$order->shipping_number = $parcel[0];
|
||||
$order->update();
|
||||
|
||||
if(in_array($order->id, $status_sent)) {
|
||||
$history = new OrderHistory();
|
||||
$history->id_order = (int) $order->id;
|
||||
$history->changeIdOrderState(4, (int) $order->id);
|
||||
//$history->addWithemail(true, $templateVars);
|
||||
$history->add();
|
||||
} elseif(in_array($order->id, $status_partially_sent)) {
|
||||
$history = new OrderHistory();
|
||||
$history->id_order = (int) $order->id;
|
||||
$history->changeIdOrderState(17, (int) $order->id);
|
||||
//$history->addWithemail(true, $templateVars);
|
||||
$history->add();
|
||||
}
|
||||
|
||||
$subjects = array(
|
||||
1 => 'Package in transit',
|
||||
2 => 'Livraison en cours',
|
||||
3 => 'Pedido en tránsito',
|
||||
);
|
||||
|
||||
Mail::Send(
|
||||
intval($order->id_lang),
|
||||
'in_transit',
|
||||
$subjects[(int) $order->id_lang],
|
||||
$templateVars,
|
||||
$customer->email,
|
||||
$customer->firstname.' '.$customer->lastname
|
||||
);
|
||||
}
|
||||
}
|
||||
mail('marion@antadis.com', '[BBB] Erreurs integration envoi Philea', $datFile);
|
||||
}
|
||||
|
||||
mail('marion@antadis.com', '[BBB] Recept expe Philea', $datFile);
|
||||
|
||||
$repo_archive = './archives/IN/LIVRAISON/';
|
||||
$repo_paths = array(date('Y'), date('m'));
|
||||
foreach ($repo_paths as $repo_path) {
|
||||
@ -459,9 +492,10 @@
|
||||
mkdir($repo_archive);
|
||||
}
|
||||
|
||||
copy($datFile, $repo_archive . preg_replace( '@BAL$@', 'DAT', $fileinfo->getFilename() ));
|
||||
unlink($inFolder.$fileinfo->getFilename());
|
||||
unlink($datFile);
|
||||
// copy($datFile, $repo_archive . preg_replace( '@BAL$@', 'DAT', $fileinfo->getFilename() ));
|
||||
// unlink($inFolder.$fileinfo->getFilename());
|
||||
// unlink($datFile);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
||||
$_SERVER['HTTP_HOST'] = 'www.bebeboutik.com';
|
||||
// $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
||||
// $_SERVER['HTTP_HOST'] = 'www.bebeboutik.com';
|
||||
include('../../../config/settings.inc.php');
|
||||
include('../../../config/config.inc.php');
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
$format = $CRP;
|
||||
|
||||
if($magistorModule->active) {
|
||||
require_once('connection_ftp.php');
|
||||
//require_once('connection_ftp.php');
|
||||
@set_time_limit(0);
|
||||
|
||||
// Checking for ".bal" files with a "CRP" prefix that has an equivalent ".dat" file and process them...
|
||||
@ -43,12 +43,13 @@
|
||||
$datFile = $fileinfo->getPath() . '/' . preg_replace( '@BAL$@', 'DAT', $fileinfo->getFilename() );
|
||||
|
||||
if( file_exists( $datFile ) ) {
|
||||
$order_details = array();
|
||||
$details = array();
|
||||
$content = file_get_contents( $datFile );
|
||||
$lines = preg_split( '@\n@', $content );
|
||||
|
||||
// ANTADIS
|
||||
if( !empty($lines) ) {
|
||||
$order_details = array();
|
||||
foreach( $lines as $line ) {
|
||||
$data = array();
|
||||
foreach($format as $field => $value) {
|
||||
@ -69,60 +70,53 @@
|
||||
} else {
|
||||
$id_order = (int) $order;
|
||||
}
|
||||
if(!isset($details[(int)$id_order])) {
|
||||
$details[(int)$id_order] = array();
|
||||
}
|
||||
|
||||
// GET PRODUCT
|
||||
// GET PRODUCT DETAIL FROM FILE
|
||||
$product = trim($data[7]);
|
||||
$product = explode('_', $product);
|
||||
$id_product = (int) $product[0];
|
||||
$id_product_attribute = (isset($product[1]) ? (int) $product[1] : 0);
|
||||
$is_pack = false;
|
||||
if (isset($order_details[$id_sale][$id_order][$id_product.'|'.$id_product_attribute])) {
|
||||
if (Pack::isPacked((int) $id_product)){
|
||||
$is_pack = true;
|
||||
}
|
||||
if(isset($details[(int)$id_order][$id_product.'_'.$id_product_attribute])) {
|
||||
$details[(int)$id_order][$id_product.'_'.$id_product_attribute] += (int) trim($data[8]);
|
||||
} else {
|
||||
$details[(int)$id_order][$id_product.'_'.$id_product_attribute] = (int) trim($data[8]);
|
||||
}
|
||||
if(!$is_pack && $detail = Db::getInstance()->getRow('
|
||||
SELECT `id_order_detail`, `product_quantity` - GREATEST(`product_quantity_return`, `product_quantity_refunded`) AS `quantity`
|
||||
|
||||
}
|
||||
|
||||
foreach ($details as $id_order => $detail) {
|
||||
foreach (Db::getInstance()->ExecuteS('
|
||||
SELECT `id_order_detail`,`product_id`,`product_attribute_id`, `product_quantity` - GREATEST(`product_quantity_return`, `product_quantity_refunded`) AS `quantity`
|
||||
FROM `'._DB_PREFIX_.'order_detail`
|
||||
WHERE `id_order` = '.(int) $id_order.'
|
||||
AND `product_id` = '.(int) $id_product.'
|
||||
AND `product_attribute_id` = '.(int) $id_product_attribute.'
|
||||
')) {
|
||||
') as $key => $row) {
|
||||
if ($id_sale && !isset($order_details[$id_sale])) {
|
||||
$order_details[$id_sale] = array();
|
||||
$order_details[$id_sale] = array();
|
||||
}
|
||||
if ($id_sale && !isset($order_details[$id_sale][$id_order])) {
|
||||
$order_details[$id_sale][$id_order] = array();
|
||||
}
|
||||
|
||||
// GET QTY
|
||||
$qty = (int) trim($data[8]);
|
||||
$order_details[$id_sale][$id_order][$id_product.'|'.$id_product_attribute] = (int) $detail['quantity'] - $qty;
|
||||
} else {
|
||||
if (Pack::isPacked((int) $id_product)) {
|
||||
$packs = Pack::getPacks((int) $id_product);
|
||||
foreach($packs as $pack) {
|
||||
if (is_array($pack)) {
|
||||
if($detail = Db::getInstance()->getRow('
|
||||
SELECT `id_order_detail`, `product_quantity` - GREATEST(`product_quantity_return`, `product_quantity_refunded`) AS `quantity`
|
||||
FROM `'._DB_PREFIX_.'order_detail`
|
||||
WHERE `id_order` = '.(int) $id_order.'
|
||||
AND `product_id` = '.(int) $pack['id_product_pack'].'
|
||||
AND `product_attribute_id` = 0
|
||||
')) {
|
||||
if ($id_sale && !isset($order_details[$id_sale])) {
|
||||
$order_details[$id_sale] = array();
|
||||
}
|
||||
if ($id_sale && !isset($order_details[$id_sale][$id_order])) {
|
||||
$order_details[$id_sale][$id_order] = array();
|
||||
}
|
||||
|
||||
// GET QTY
|
||||
$qty = (int) trim($data[8]);
|
||||
$order_details[$id_sale][$id_order][$pack['id_product_pack'].'|'.$id_product.'|1'] = ((int) $detail['quantity'] * (int) $pack['quantity']) - $qty;
|
||||
}
|
||||
if (Pack::isPack((int) $row['product_id'])){
|
||||
$pack_items = Pack::getSimplePack((int) $row['product_id']);
|
||||
foreach ($pack_items as $pack_item) {
|
||||
$qty = (isset($details[(int)$id_order][$pack_item['id_product_item'].'_0']) ? $details[(int)$id_order][$pack_item['id_product_item'].'_0'] : 0);
|
||||
if (isset($order_details[$id_sale][$id_order][$pack_item['id_product_item'].'|0'])) {
|
||||
$order_details[$id_sale][$id_order][$pack_item['id_product_item'].'|0'] += ((int) $row['quantity'] * (int) $pack_item['quantity']);
|
||||
} else {
|
||||
$order_details[$id_sale][$id_order][$pack_item['id_product_item'].'|0'] = ((int) $row['quantity'] * (int) $pack_item['quantity']) - $qty;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$qty = (isset($details[(int)$id_order][$row['product_id'].'_'.$row['product_attribute_id']]) ? $details[(int)$id_order][$row['product_id'].'_'.$row['product_attribute_id']] : 0);
|
||||
if(isset($order_details[$id_sale][$id_order][$row['product_id'].'|'.$row['product_attribute_id']])) {
|
||||
$order_details[$id_sale][$id_order][$row['product_id'].'|'.$row['product_attribute_id']] += (int) $row['quantity'];
|
||||
} else {
|
||||
$order_details[$id_sale][$id_order][$row['product_id'].'|'.$row['product_attribute_id']] = (int) $row['quantity'] - $qty;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -134,17 +128,10 @@
|
||||
foreach ($products as $key => $qty) {
|
||||
$count += $qty;
|
||||
$product = explode('|', $key);
|
||||
$is_pack = (isset($product[2]) ? (int) $product[2] : 0);
|
||||
if ($qty>0) {
|
||||
if($is_pack) {
|
||||
$id_pack = (int) $product[0];
|
||||
$id_product = (isset($product[1]) ? (int) $product[1] : 0);
|
||||
$errors .= "<li>".$qty." Produit #".$id_product." du Pack ".$id_pack." manquant</li>";
|
||||
} else {
|
||||
$id_product = (int) $product[0];
|
||||
$id_product_attribute = (isset($product[1]) ? (int) $product[1] : 0);
|
||||
$errors .= "<li>".$qty." Produit #".$id_product.($id_product_attribute?" - attribute #".$id_product_attribute:"")." manquant</li>";
|
||||
}
|
||||
$id_product = (int) $product[0];
|
||||
$id_product_attribute = (isset($product[1]) ? (int) $product[1] : 0);
|
||||
$errors .= "<li>".$qty." Produit #".$id_product.($id_product_attribute?" - attribute #".$id_product_attribute:"")." manquant</li>";
|
||||
}
|
||||
}
|
||||
$comments .= "<strong>Commande [".$order."] : ".($count>0? "<span style='color:red;'>Produits manquants</span>": "<span style='color:green;'>Commande préparée</span>")."</strong><br />";
|
||||
@ -177,8 +164,8 @@
|
||||
|
||||
copy($datFile, $repo_archive . preg_replace( '@BAL$@', 'DAT', $fileinfo->getFilename() ));
|
||||
|
||||
unlink($inFolder.$fileinfo->getFilename());
|
||||
unlink($datFile);
|
||||
// unlink($inFolder.$fileinfo->getFilename());
|
||||
// unlink($datFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
||||
$_SERVER['HTTP_HOST'] = 'www.bebeboutik.com';
|
||||
//$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
||||
//$_SERVER['HTTP_HOST'] = 'www.bebeboutik.com';
|
||||
|
||||
//include(dirname(__FILE__) . '/../../../config/settings.inc.php');
|
||||
include(dirname(__FILE__) . '/../../../config/config.inc.php');
|
||||
@ -9,7 +9,6 @@ include( dirname(__FILE__) . '/../philea_magistor.php');
|
||||
ini_set('memory_limit', '4G');
|
||||
|
||||
$id_sale = (int) $argv[1];
|
||||
|
||||
$_id_shipping = 1; // philea
|
||||
|
||||
if($id_sale == 0) {
|
||||
@ -132,31 +131,6 @@ if($magistorModule->active) {
|
||||
|
||||
$fileArchive = $repo_archive . 'CDC02' . date('ymdHis');
|
||||
|
||||
/**
|
||||
* @Override get pack items
|
||||
*/
|
||||
$pack_items = array();
|
||||
foreach(Db::getInstance()->executeS('
|
||||
SELECT pp.`id_product_pack`, pp.`quantity` AS `pack_quantity`, p.*, pl.*, s.*
|
||||
FROM `'._DB_PREFIX_.'pack` pp
|
||||
LEFT JOIN `'._DB_PREFIX_.'product` p ON (pp.`id_product_item` = p.`id_product`)
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
|
||||
ON (
|
||||
p.`id_product` = pl.`id_product`
|
||||
AND pl.`id_lang` = '.(int)(Configuration::get('PS_LANG_DEFAULT')).'
|
||||
)
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_ps_cache` c ON (c.`id_product` = pp.`id_product_pack`)
|
||||
LEFT JOIN `'._DB_PREFIX_.'privatesale_shipping_sale` s (ON s.`id_sale` = c.`id_sale`)
|
||||
WHERE s.`id_shipping` = '.(int) $_id_shipping.'
|
||||
AND s.`id_sale` = '.(int) $id_sale.'
|
||||
ORDER BY p.`id_product` ASC
|
||||
') as $row){
|
||||
if (!isset($pack_items[$row['id_product_pack']])) {
|
||||
$pack_items[$row['id_product_pack']] = array();
|
||||
}
|
||||
$pack_items[$row['id_product_pack']][] = $row;
|
||||
}
|
||||
|
||||
$data = '';
|
||||
foreach($orders as $o) {
|
||||
$partialOrder = false;
|
||||
@ -176,7 +150,6 @@ if($magistorModule->active) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
$products = $order->getProducts();
|
||||
// ANTADIS
|
||||
$products_ids = array();
|
||||
@ -352,75 +325,34 @@ if($magistorModule->active) {
|
||||
/**
|
||||
* @Override get pack items
|
||||
*/
|
||||
if (isset($pack_items[$product['product_id']])
|
||||
&& is_array($pack_items[$product['product_id']])
|
||||
&& !empty($pack_items[$product['product_id']])
|
||||
){
|
||||
foreach ($pack_items[$product['product_id']] as $pack_item) {
|
||||
$productObj = new Product($pack_item['id_product']);
|
||||
if(Pack::isPack((int)$product['product_id'])) {
|
||||
$pack_items = Pack::getCompleteSimplePack((int) $product['product_id']);
|
||||
foreach ($pack_items as $pack_item) {
|
||||
$ean = !empty($pack_item['ean13'])? $pack_item['ean13']: $pack_item['supplier_reference'];
|
||||
$ref = $pack_item['id_product'];
|
||||
|
||||
// ANTADIS
|
||||
$product_shipping = (int) Db::getInstance()->getValue('
|
||||
SELECT s.`id_shipping`
|
||||
FROM `'._DB_PREFIX_.'product_ps_cache` c
|
||||
LEFT JOIN `'._DB_PREFIX_.'privatesale_shipping_sale` s
|
||||
ON s.`id_sale` = c.`id_sale`
|
||||
WHERE c.`id_product` = '.(int) $productObj->id.'
|
||||
AND s.`id_sale` = '.(int) $id_sale.'
|
||||
');
|
||||
//
|
||||
|
||||
if($product_shipping === $_id_shipping)
|
||||
{
|
||||
$nb_ligne++;
|
||||
|
||||
$ean = !empty($pack_item['ean13'])? $pack_item['ean13']: $pack_item['supplier_reference'];
|
||||
$ref = $pack_item['id_product'];;
|
||||
|
||||
$p_key = (int) $pack_item['id_product'];
|
||||
if (!isset($product_packs[$p_key])) {
|
||||
$product_packs[$p_key] = array(
|
||||
str_replace(array("\r", "\n"), '', $ref),
|
||||
0,
|
||||
substr(utf8_decode(cleanChar($pack_item['name'])),0,50),
|
||||
str_replace(array("\r", "\n"), "", $ean)
|
||||
);
|
||||
}
|
||||
$product_packs[$p_key][1] += max($product['product_quantity'] - max($product['product_quantity_return'], $product['product_quantity_refunded']), 0) * $pack_item['pack_quantity'];
|
||||
$p_key = (int) $pack_item['id_product'];
|
||||
if (!isset($product_packs[$p_key])) {
|
||||
$product_packs[$p_key] = array(
|
||||
str_replace(array("\r", "\n"), '', $ref),
|
||||
0,
|
||||
substr(utf8_decode(cleanChar($pack_item['name'])),0,50),
|
||||
str_replace(array("\r", "\n"), "", $ean)
|
||||
);
|
||||
}
|
||||
else
|
||||
$partialOrder = true;
|
||||
$product_packs[$p_key][1] += max($product['product_quantity'] - max($product['product_quantity_return'], $product['product_quantity_refunded']), 0) * $pack_item['pack_quantity'];
|
||||
}
|
||||
} else {
|
||||
$productObj = new Product($product['product_id']);
|
||||
$ean = !empty($product['product_ean13'])? $product['product_ean13']: $product['product_supplier_reference'];
|
||||
$ref = ($product['product_attribute_id']?$product['product_id'].'_'.$product['product_attribute_id']:$product['product_id']);
|
||||
|
||||
// ANTADIS
|
||||
$product_shipping = (int) Db::getInstance()->getValue('
|
||||
SELECT s.`id_shipping`
|
||||
FROM `'._DB_PREFIX_.'product_ps_cache` c
|
||||
LEFT JOIN `'._DB_PREFIX_.'privatesale_shipping_sale` s
|
||||
ON s.`id_sale` = c.`id_sale`
|
||||
WHERE c.`id_product` = '.(int) $productObj->id.'
|
||||
AND s.`id_sale` = '.(int) $id_sale.'
|
||||
');
|
||||
//
|
||||
|
||||
if($product_shipping === $_id_shipping)
|
||||
{
|
||||
$nb_ligne++;
|
||||
$ean = !empty($product['product_ean13'])? $product['product_ean13']: $product['product_supplier_reference'];
|
||||
$ref = ($product['product_attribute_id']?$product['product_id'].'_'.$product['product_attribute_id']:$product['product_id']);
|
||||
|
||||
$p_key = ($product['product_attribute_id']?$product['product_id'].'_'.$product['product_attribute_id']:$product['product_id']);
|
||||
$product_rows[(int) $p_key] = array(
|
||||
str_replace(array("\r", "\n"), '', $ref),
|
||||
max($product['product_quantity'] - max($product['product_quantity_return'], $product['product_quantity_refunded']), 0),
|
||||
substr(utf8_decode(cleanChar($product['product_name'])),0,50),
|
||||
str_replace(array("\r", "\n"), "", $ean),
|
||||
);
|
||||
}
|
||||
else
|
||||
$partialOrder = true;
|
||||
$p_key = ($product['product_attribute_id']?$product['product_id'].'_'.$product['product_attribute_id']:$product['product_id']);
|
||||
$product_rows[(int) $p_key] = array(
|
||||
str_replace(array("\r", "\n"), '', $ref),
|
||||
max($product['product_quantity'] - max($product['product_quantity_return'], $product['product_quantity_refunded']), 0),
|
||||
substr(utf8_decode(cleanChar($product['product_name'])),0,50),
|
||||
str_replace(array("\r", "\n"), "", $ean),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -491,7 +423,7 @@ if($magistorModule->active) {
|
||||
|
||||
file_put_contents($fileArchive . '.DAT', "\xEF\xBB\xBF".utf8_encode($data));
|
||||
|
||||
require_once('connection_ftp.php');
|
||||
//require_once('connection_ftp.php');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -37,6 +37,26 @@ class Pack extends PackCore
|
||||
');
|
||||
return $_cache_getSimplePack[(int) $id_product_pack];
|
||||
}
|
||||
/**
|
||||
* Get complete simple pack
|
||||
*/
|
||||
public static function getCompleteSimplePack($id_product_pack){
|
||||
if (isset($_cache_getSimplePack[(int) $id_product_pack])) {
|
||||
return $_cache_getSimplePack[(int) $id_product_pack];
|
||||
}
|
||||
$_cache_getSimplePack[(int) $id_product_pack] = Db::getInstance()->executeS('
|
||||
SELECT pp.`id_product_pack`, pp.`quantity` AS `pack_quantity`, p.*, pl.*
|
||||
FROM `'._DB_PREFIX_.'pack` pp
|
||||
LEFT JOIN `'._DB_PREFIX_.'product` p ON (pp.`id_product_item` = p.`id_product`)
|
||||
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
|
||||
ON (
|
||||
p.`id_product` = pl.`id_product`
|
||||
AND pl.`id_lang` = '.(int)(Configuration::get('PS_LANG_DEFAULT')).'
|
||||
)
|
||||
WHERE pp.`id_product_pack` = ' . (int) $id_product_pack . '
|
||||
');
|
||||
return $_cache_getSimplePack[(int) $id_product_pack];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get item pack
|
||||
|
Loading…
Reference in New Issue
Block a user