fix conflict

This commit is contained in:
Marion Muszynski 2017-11-13 12:07:59 +01:00
commit b22ccef249
5 changed files with 487 additions and 453 deletions

View File

@ -345,6 +345,18 @@ if(($id_order = (int) Tools::getValue('id_order'))
') as $row) {
$shipping_numbers[] = '"'.pSQL($row['shipping_number']).'"';
}
/*
* @Override Philea
*/
foreach(Db::getInstance()->ExecuteS('
SELECT l.`shipping_number`
FROM `'._DB_PREFIX_.'philea_parcel` l
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON (d.`id_order_detail` = l.`id_order_detail`)
LEFT JOIN `'._DB_PREFIX_.'order_history` h ON (h.`id_order` = d.`id_order`)
WHERE h.`id_order` = '.(int) $order->id.'
') as $row) {
$shipping_numbers[] = '"'.pSQL($row['shipping_number']).'"';
}
if(((int) $p['product_quantity_sent'] === 0)
&& Db::getInstance()->getRow('
@ -427,6 +439,19 @@ if(($id_order = (int) Tools::getValue('id_order'))
')) {
$logs = array_merge($logs, $l);
}
/*
* @Override Philea
*/
if($l = Db::getInstance()->ExecuteS('
SELECT l.*, d.`product_name`, d.`product_reference`, d.`product_supplier_reference`, "Philea" as firstname
FROM `'._DB_PREFIX_.'philea_parcel` l
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON d.`id_order_detail` = l.`id_order_detail`
WHERE l.`id_order_detail` IN ('.implode(', ', $id_order_details).')
AND l.`quantity` > 0
ORDER BY l.`date_add` DESC
')) {
$logs = array_merge($logs, $l);
}
} else {
$logs = array();
}

View File

@ -1,526 +1,526 @@
<?php
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['HTTP_HOST'] = 'www.bebeboutik.com';
include('../../../config/settings.inc.php');
include('../../../config/config.inc.php');
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['HTTP_HOST'] = 'www.bebeboutik.com';
include('../../../config/settings.inc.php');
include('../../../config/config.inc.php');
include( dirname(__FILE__) . '/../philea_magistor.php');
global $regex_file_in;
$regex_file_in = '@^CRE(.*)\.(BAL|DAT)@';
@ini_set('display_errors', 'on');
$magistorModule = new philea_magistor();
include( dirname(__FILE__) . '/../philea_magistor.php');
global $regex_file_in;
$regex_file_in = '@^CRE(.*)\.(BAL|DAT)@';
@ini_set('display_errors', 'on');
$magistorModule = new philea_magistor();
//$id_shipping = 4; // PHILEA
//$id_shipping = 1; // PHILEA
$CRE = array(
'OP_CODE' => array(1,10),
'CODE_SOC' => array(11,20),
'NO_CLIENT' => array(31,8),
'N_CDE' => array(39,50),
'NO_COLIS' => array(89,50),
'NO_TRACKING' => array(139,50),
'NO_EXPEDITION' => array(189,50),
'DATE_EXPED' => array(239,8),
'TRANSPORTEUR' => array(247,50),
'CODE_ART' => array(297, 50),
'QTE' => array(347, 10),
);
$CRE = array(
'OP_CODE' => array(1,10),
'CODE_SOC' => array(11,20),
'NO_CLIENT' => array(31,8),
'N_CDE' => array(39,50),
'NO_COLIS' => array(89,50),
'NO_TRACKING' => array(139,50),
'NO_EXPEDITION' => array(189,50),
'DATE_EXPED' => array(239,8),
'TRANSPORTEUR' => array(247,50),
'CODE_ART' => array(297, 50),
'QTE' => array(347, 10),
);
$tab_conversion_carrier = philea_magistor::getTabState();
$tab_conversion_carrier = philea_magistor::getTabState();
$socol_to_magistor = array(
'DOM' => 'SOCOLMDSS',
'DOS' => 'SOCOLMDS',
'RDV' => 'SOCOLMRDV',
'CIT' => 'SOCOLCITY',
'BPR' => 'SOCOLMBP',
'CDI' => 'SOCOLMBP',
'A2P' => 'SOCOLMC',
'ACP' => 'SOCOLMBP',
);
$socol_to_magistor = array(
'DOM' => 'SOCOLMDSS',
'DOS' => 'SOCOLMDS',
'RDV' => 'SOCOLMRDV',
'CIT' => 'SOCOLCITY',
'BPR' => 'SOCOLMBP',
'CDI' => 'SOCOLMBP',
'A2P' => 'SOCOLMC',
'ACP' => 'SOCOLMBP',
);
$mr_to_magistor = array(
'24R' => 'MRMDSS', // Point relais
'DRI' => 'MRMDS', // Colis drive
'LD1' => 'MRMRDV', // Domicile RDC (1 pers)
'LDS' => 'MRCITY', // Domicile spé (2 pers)
'HOM' => 'MRMBP', // Domicile spé
);
$mr_to_magistor = array(
'24R' => 'MRMDSS', // Point relais
'DRI' => 'MRMDS', // Colis drive
'LD1' => 'MRMRDV', // Domicile RDC (1 pers)
'LDS' => 'MRCITY', // Domicile spé (2 pers)
'HOM' => 'MRMBP', // Domicile spé
);
$format = $CRE;
if($magistorModule->active) {
require_once('connection_ftp.php');
@set_time_limit(0);
$format = $CRE;
if($magistorModule->active) {
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...
$inFolder = dirname(__FILE__) . '/IN/';
// Checking for ".bal" files with a "CRE" prefix that has an equivalent ".dat" file and process them...
$inFolder = dirname(__FILE__) . '/IN/';
$iterator = new DirectoryIterator($inFolder);
$id_order_state = Configuration::get('PHILEA_MAGISTOR_STATUS_CRE');
$iterator = new DirectoryIterator($inFolder);
$id_order_state = Configuration::get('PHILEA_MAGISTOR_STATUS_CRE');
foreach ($iterator as $fileinfo) {
if ($fileinfo->isFile()) {
if( preg_match('@^CRE(.*)\.BAL@', $fileinfo->getFilename())) {
$datFile = $fileinfo->getPath() . '/' . preg_replace( '@BAL$@', 'DAT', $fileinfo->getFilename() );
foreach ($iterator as $fileinfo) {
if ($fileinfo->isFile()) {
if( preg_match('@^CRE(.*)\.BAL@', $fileinfo->getFilename())) {
$datFile = $fileinfo->getPath() . '/' . preg_replace( '@BAL$@', 'DAT', $fileinfo->getFilename() );
if(file_exists($datFile)) {
$content = file_get_contents($datFile);
$lines = preg_split('@\n@',$content);
if(file_exists($datFile)) {
$content = file_get_contents($datFile);
$lines = preg_split('@\n@',$content);
$id_order_details = array();
$shipping_numbers = array();
$parcel_carrier = array();
if(!empty($lines)) {
$details = array();
$order_details = array();
$id_order_details = array();
$shipping_numbers = array();
$parcel_carrier = array();
if(!empty($lines)) {
$details = array();
$order_details = array();
// GET DATA
foreach( $lines as $line ) {
// GET DATA
foreach( $lines as $line ) {
$data = array();
foreach($format as $field=>$value) {
$data[] = substr($line, ($value[0]-1), $value[1]);
}
$data = array();
foreach($format as $field=>$value) {
$data[] = substr($line, ($value[0]-1), $value[1]);
}
if(!isset($data[2]) || (isset($data[2]) && !$data[2])){
if(!isset($data[2]) || (isset($data[2]) && !$data[2])){
continue;
}
$id_sale = 0;
$id_order = (string) $data[3];
if(substr($id_order, 0, 2) == 'OP') {
$id_order = explode('-', $id_order);
if(count($id_order) < 2) {
continue;
}
$id_sale = (int) str_replace('OP', '', $id_order[0]);
$id_order = (int) $id_order[1];
} else {
$id_order = (int) $id_order;
}
$id_sale = 0;
$id_order = (string) $data[3];
if(substr($id_order, 0, 2) == 'OP') {
$id_order = explode('-', $id_order);
if(count($id_order) < 2) {
continue;
}
$id_sale = (int) str_replace('OP', '', $id_order[0]);
$id_order = (int) $id_order[1];
} else {
$id_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) {
list($id_product, $id_attribute) = $code_art;
} else {
$id_product = $code_art[0];
$id_attribute = 0;
}
$order = new Order((int) $id_order);
// 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]);
if($carrier_name == 'COLINT') {
$carrier_name = 'SOCOLMDSS';
}
if(!isset($details[(int)$id_order])){
$details[(int)$id_order] = array();
}
$code_art = explode("_", trim($data[9]));
if(count($code_art)>1) {
list($id_product, $id_attribute) = $code_art;
} else {
$id_product = $code_art[0];
$id_attribute = 0;
}
$order = new Order((int) $id_order);
// 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]);
if($carrier_name == 'COLINT') {
$carrier_name = 'SOCOLMDSS';
}
$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;
}
$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;
}
if(isset($id_carrier) && $id_carrier) {
$parcel_carrier[(int) $id_order.'|'.trim($data[5])] = $id_carrier;
}
$shipping_numbers[] = '"'.pSQL(trim($data[5])).'"';
$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($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();
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 {
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(
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[(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(
$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 {
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']
);
}
}
} // end foreach lines
}
} // 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(trim($shipping_number['number'])).'",
"'.$shipping_number['date'].'"
)
');
}
}
} else {
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($details[(int)$order][$key]['shipping_numbers'][0]['number']).'",
"'.$details[(int)$order][$key]['shipping_numbers'][0]['date'].'"
"'.pSQL(trim($shipping_number['number'])).'",
"'.$shipping_number['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);
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 Produit non présent dans le fichier expe philea";
// mail('marion@antadis.com', '[BBB] Erreurs produit expe Philea', $message);
// $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
}
unset($details);
unset($order_details);
} // end if lines
$id_order_details = array_unique($id_order_details);
$shipping_numbers = array_unique($shipping_numbers);
$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();
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).')
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
)
');
$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'];
$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']]);
}
$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_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;
}
}
unset($products);
$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_.'mondialrelay_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 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 l.`id_order_detail`, SUM(l.`quantity`) AS `quantity`
FROM `'._DB_PREFIX_.'ant_dropshipping_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'];
}
$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($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_.'mondialrelay_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 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 l.`id_order_detail`, SUM(l.`quantity`) AS `quantity`
FROM `'._DB_PREFIX_.'ant_dropshipping_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();
$last_state = Db::getInstance()->getValue('
SELECT `id_order_state`
FROM `'._DB_PREFIX_.'order_state_current`
WHERE `id_order` ='.(int)$order->id
);
if(in_array($order->id, $status_sent) && (int)$last_state != 4) {
$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;
}
}
}
$repo_archive = './archives/IN/LIVRAISON/';
$repo_paths = array(date('Y'), date('m'));
foreach ($repo_paths as $repo_path) {
$repo_archive .= $repo_path . '/';
if (!file_exists($repo_archive))
mkdir($repo_archive);
}
unset($orders_sent);
unset($orders_to_send);
copy($datFile, $repo_archive . preg_replace( '@BAL$@', 'DAT', $fileinfo->getFilename() ));
unlink($inFolder.$fileinfo->getFilename());
unlink($datFile);
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();
$last_state = Db::getInstance()->getValue('
SELECT `id_order_state`
FROM `'._DB_PREFIX_.'order_state_current`
WHERE `id_order` ='.(int)$order->id
);
if(in_array($order->id, $status_sent) && (int)$last_state != 4) {
$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
);
}
}
}
$repo_archive = './archives/IN/LIVRAISON/';
$repo_paths = array(date('Y'), date('m'));
foreach ($repo_paths as $repo_path) {
$repo_archive .= $repo_path . '/';
if (!file_exists($repo_archive))
mkdir($repo_archive);
}
copy($datFile, $repo_archive . preg_replace( '@BAL$@', 'DAT', $fileinfo->getFilename() ));
unlink($inFolder.$fileinfo->getFilename());
unlink($datFile);
}
}
}
}
echo 'fin';
}
echo 'fin';

View File

@ -140,11 +140,20 @@ if($magistorModule->active) {
if($quantity>0){
if(isset($attribute['ean13']) && !empty($attribute['ean13'])) {
$ean = $attribute['ean13'];
$ean = $attribute['ean13'];
} else {
$ean = $attribute['supplier_reference'];
}
$link = new Link();
$cover = Db::getInstance()->getValue('
SELECT `id_image`
FROM `'._DB_PREFIX_.'image`
WHERE id_product = ' . (int) $product['id_product'] . '
AND `cover` = 1');
$ids = (int) $product['id_product'] . '-' . (int) $cover;
$img_link = 'http://'.$link->getImageLink($product['link_rewrite'], $ids, 'thickbox');
$data .= str_pad('ART01', 10, ' ', STR_PAD_RIGHT);
$data .= str_pad($code_societe, 20, ' ', STR_PAD_RIGHT);
$data .= str_pad(substr(utf8_decode(str_replace(array("\r", "\n"), '', $product['id_product'].'_'.$attribute['id_product_attribute'])), 0, 50), 50, ' ', STR_PAD_RIGHT);
@ -214,7 +223,7 @@ if($magistorModule->active) {
chmod($fileName.'.DAT', 0755);
file_put_contents($fileName.'.BAL', '');
chmod($fileName.'.BAL', 0755);
//require_once('connection_ftp.php');
require_once('connection_ftp.php');
echo 'fin';
}
}

View File

@ -70,7 +70,7 @@ if($magistorModule->active) {
exit;
}
// $exclude_orders = array();
$exclude_orders = array();
// foreach($db->ExecuteS('
// SELECT DISTINCT `id_order`
// FROM `'._DB_PREFIX_.'philea_sent`
@ -145,8 +145,8 @@ if($magistorModule->active) {
$carrier_value = false;
if($nbProducts) {
$carriers_socol = array(67,87,88,89);
$carriers_mr = array(91);
$carriers_socol = explode(',', Configuration::get('ANT_CARRIERS_SOCOL'));
$carriers_mr = explode(',', Configuration::get('ANT_CARRIERS_MR'));
$customer = new Customer($order->id_customer);
$address_invoice = new Address($order->id_address_invoice);

View File

@ -50,7 +50,7 @@ if($magistorModule->active) {
$products = array();
$orders = $db->executeS('
SELECT d.`id_rorder_detail`, o.`id_order`, d.`product_id`, d.`product_attribute_id`, (d.`product_quantity` - d.`product_quantity_refunded`) as p_quantity, pl.*,p.*
SELECT d.`id_order_detail`, o.`id_order`, d.`product_id`, d.`product_attribute_id`, (d.`product_quantity` - d.`product_quantity_refunded`) as p_quantity, pl.*,p.*
FROM `'._DB_PREFIX_.'order_state_current` o
LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON o.`id_order` = d.`id_order`
LEFT JOIN `'._DB_PREFIX_.'product_ps_cache` c ON d.`product_id` = c.`id_product`
@ -123,7 +123,7 @@ if($magistorModule->active) {
$data .= str_pad( $code_societe, 20, ' ', STR_PAD_RIGHT );
$data .= str_pad( 'OP'.(int) $id_sale, 20, ' ', STR_PAD_RIGHT );
$data .= date('Ymd');
$data .= str_pad( substr(utf8_decode(str_replace(array("\r", "\n"), "", $product['id_product'].'_'.$attribute['id_product_attribute'])),0,50), 50, ' ', STR_PAD_RIGHT );
$data .= str_pad( substr(utf8_decode(str_replace(array("\r", "\n"), "", $id_product.'_'.$id_attribute)),0,50), 50, ' ', STR_PAD_RIGHT );
$data .= str_pad( $row['quantity'], 10, '0', STR_PAD_LEFT );
$data .= str_pad( '', 10, '0', STR_PAD_LEFT );
$data .= str_pad( '', 250, ' ', STR_PAD_LEFT );
@ -131,8 +131,8 @@ if($magistorModule->active) {
$data .= str_pad( str_replace(array("\r", "\n"), "", $ean), 14, ' ', STR_PAD_LEFT );
$data .= PHP_EOL;
$product_quantities[$product['id_product'].'_'.$id_attribute] = (int)$row['quantity'];
$product_quantities2[$product['id_product'].'_'.$id_attribute] = 0;
$product_quantities[$id_product.'_'.$id_attribute] = (int)$row['quantity'];
$product_quantities2[$id_product.'_'.$id_attribute] = 0;
} else {
if(isset($product['ean13']) && !empty($product['ean13'])) {
@ -145,7 +145,7 @@ if($magistorModule->active) {
$data .= str_pad( $code_societe, 20, ' ', STR_PAD_RIGHT );
$data .= str_pad( 'OP'.(int) $id_sale, 20, ' ', STR_PAD_RIGHT );
$data .= date('Ymd');
$data .= str_pad( substr(utf8_decode(str_replace(array("\r", "\n"), "", $product['id_product'])),0,50), 50, ' ', STR_PAD_RIGHT );
$data .= str_pad( substr(utf8_decode(str_replace(array("\r", "\n"), "", $product['product_id'])),0,50), 50, ' ', STR_PAD_RIGHT );
$data .= str_pad( $row['quantity'], 10, '0', STR_PAD_LEFT );
$data .= str_pad( '', 10, '0', STR_PAD_LEFT );
$data .= str_pad( '', 250, ' ', STR_PAD_LEFT );
@ -153,8 +153,8 @@ if($magistorModule->active) {
$data .= str_pad( str_replace(array("\r", "\n"), "", $product['ean13']), 14, ' ', STR_PAD_LEFT );
$data .= PHP_EOL;
$product_quantities[$product['id_product']] = (int)$row['quantity'];
$product_quantities2[$product['id_product']] = 0;
$product_quantities[$product['product_id']] = (int)$row['quantity'];
$product_quantities2[$product['product_id']] = 0;
}
}
@ -183,7 +183,7 @@ if($magistorModule->active) {
unset($data);
//require_once('connection_ftp.php');
require_once('connection_ftp.php');
}
echo 'fin'."\n";
}