format('Y'))); // Set Visitor / Customer TimeZone (If server not configured or using e-commerce website for ex.) $easterDate->setTimezone(new DateTimeZone('Europe/Paris')); $date->setTimezone(new DateTimeZone('Europe/Paris')); // Fixed date list $publicHolidaysList = array( new DateTime($date->format('Y-1-1')), // New Year new DateTime($date->format('Y-5-1')), // Labor day new DateTime($date->format('Y-5-8')), // 1945 new DateTime($date->format('Y-7-14')), // National Holiday new DateTime($date->format('Y-8-15')), // Assumption new DateTime($date->format('Y-11-1')), // All Saints Day new DateTime($date->format('Y-11-11')), // Armistice new DateTime($date->format('Y-12-25')), // Christmas ); $easterDate1 = new DateTime($easterDate->format('Y-m-d')); $easterDate1->modify('+1 day'); $easterDate2 = new DateTime($easterDate->format('Y-m-d')); $easterDate2->modify('+39 day'); $easterDate3 = new DateTime($easterDate->format('Y-m-d')); $easterDate3->modify('+50 day'); $publicHolidaysList[] = $easterDate1; $publicHolidaysList[] = $easterDate2; $publicHolidaysList[] = $easterDate3; // Sort DateTime usort($publicHolidaysList, function($a, $b) { $interval = $a->diff($b); return $interval->invert? 1: -1; }); return $publicHolidaysList; } $holidays = getPublicHolidays(); $contract = Configuration::get('LAPOSTEWS_API_CONTRACT'); $contract2 = Configuration::get('LAPOSTEWS_API_CONTRACT2'); $now = new Datetime(); $now->setTimezone(new DateTimeZone('Europe/Paris')); $now->modify('-1 day'); $id_orders = array(); $orders_to_print = array(); // $f = fopen(dirname(__FILE__).'/extracts/itinsell/'.$now->format('Y-m-d').'_laposte.csv', 'w'); $f = fopen(dirname(__FILE__).'/extracts/itinsell/'.$now->format('Y-m-d').'_philea_laposte.csv', 'w'); csv($f, array( 'shipping_number', 'product_code', 'reference', 'recipient', 'address1', 'address2', 'address3', 'address4', 'postcode', 'city', 'country', 'phone', 'email', 'weight', 'parcel_quantity', 'saturday_delivery', 'oversized', 'instructions', 'contract', 'summary_number', 'summary_date', 'description', 'value', 'order_value', 'customer_shipping_value', 'pod_value', 'insurance_value', 'shipping_value', 'delivery_date', 'id_delivery_point', )); // $orders_laposte = array(); // $orders_laposte = Db::getInstance()->ExecuteS(' // SELECT l.`shipping_number`, o.`id_order`, o.`id_cart`, o.`id_address_delivery`, l.`date_add` // FROM `'._DB_PREFIX_.'lapostews` l // LEFT JOIN `'._DB_PREFIX_.'order_detail` d // ON l.`id_order_detail` = d.`id_order_detail` // LEFT JOIN `'._DB_PREFIX_.'orders` o // ON d.`id_order` = o.`id_order` // WHERE l.`date_add` >= "'.pSQL($now->format('Y-m-d 00:00:00')).'" and l.`date_add` <= "'.pSQL($now->format('Y-m-d 23:59:59')).'" // GROUP BY l.`shipping_number` // '); $orders_philea = Db::getInstance()->ExecuteS(' SELECT pp.`shipping_number`, o.`id_order`, o.`id_cart`, o.`id_address_delivery`, pp.`date_add` FROM `'._DB_PREFIX_.'philea_parcel` pp LEFT JOIN `'._DB_PREFIX_.'order_detail` d ON pp.`id_order_detail` = d.`id_order_detail` LEFT JOIN `'._DB_PREFIX_.'orders` o ON d.`id_order` = o.`id_order` WHERE pp.`date_add` >= "'.pSQL($now->format('Y-m-d 00:00:00')).'" and pp.`date_add` <= "'.pSQL($now->format('Y-m-d 23:59:59')).'" GROUP BY pp.`shipping_number` '); foreach($orders_philea as $row) { $orders_to_print[] = (int) $row['id_order']; $delivery_so = Db::getInstance()->getRow(' SELECT * FROM `'._DB_PREFIX_.'socolissimo_delivery_info` WHERE `id_cart` = '.(int) $row['id_cart'].' '); $delivery = Db::getInstance()->getRow(' SELECT * FROM `'._DB_PREFIX_.'address` WHERE `id_address` = '.(int) $row['id_address_delivery'].' '); $delivery_date = FALSE; $hour = explode(' ', $row['date_add']); $hour = explode(':', $hour[1]); if($delivery_so && $delivery_so['cecountry'] == 'FR' || $delivery['id_country'] == 8) { $delivery_date = new DateTime($now->format('Y-m-d')); $delivery_date->setTimezone(new DateTimeZone('Europe/Paris')); $delivery_date->modify('+1 day'); if((int) $hour[0] > 16 || ((int) $hour[0] == 16 && (int) $hour[1] >= 30)) { $delivery_date->modify('+1 day'); } $i = 1; while($i > 0) { $is_holiday = FALSE; foreach($holidays as $holiday) { if($holiday->format('Y-m-d') == $delivery_date->format('Y-m-d')) { $is_holiday = TRUE; break; } } if((int) $delivery_date->format('w') == 0) { $is_holiday = TRUE; } $delivery_date->modify('+1 day'); if(!$is_holiday) { $i--; } } } if(!$delivery_so) { csv($f, array( $row['shipping_number'], '', $row['id_order'], ($delivery['company'] != ''? $delivery['company'].' - ': '').$delivery['firstname'].' '.$delivery['lastname'], trim(str_replace(array("\n", "\r"), ' ', $delivery['address1'])), trim(str_replace(array("\n", "\r"), ' ', $delivery['address2'])), '', '', (string) $delivery['postcode'], $delivery['city'], Country::getIsoById((int) $delivery['id_country']), str_replace(' ', '', (string) ($delivery['phone_mobile'] != ''? $delivery['phone_mobile']: $delivery['phone'])), Db::getInstance()->getValue('SELECT `email` FROM `'._DB_PREFIX_.'customer` WHERE `id_customer` = '.(int) $delivery['id_customer']), 0.24, 1, 1, 'N', trim(str_replace(array("\n", "\r"), ' ', $delivery['other'])), (int) $delivery['id_country'] == 8? $contract: $contract2, $now->format('Ymd'), $now->format('d/m/Y'), '', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, $delivery_date? $delivery_date->format('d/m/Y'): '', '', )); } else { csv($f, array( $row['shipping_number'], '', $row['id_order'], str_replace(array("\n", "\r"), ' ', ($delivery_so['prcompladress'] != ''? $delivery_so['prcompladress'].' - ': '').($delivery_so['cecompanyname'] != ''? $delivery_so['cecompanyname'].' - ': '').$delivery_so['prfirstname'].' '.$delivery_so['prname']), trim(str_replace(array("\n", "\r"), ' ', $delivery_so['pradress3'])), trim(str_replace(array("\n", "\r"), ' ', $delivery_so['pradress4'])), trim(str_replace(array("\n", "\r"), ' ', $delivery_so['pradress1'])), trim(str_replace(array("\n", "\r"), ' ', $delivery_so['pradress2'])), (string) $delivery_so['przipcode'], $delivery_so['prtown'], $delivery_so['cecountry'], str_replace(' ', '', $delivery_so['cephonenumber'] != ''? (string) $delivery_so['cephonenumber']: ((string) ($delivery['phone_mobile'] != ''? $delivery['phone_mobile']: $delivery['phone']))), $delivery_so['ceemail'], 0.24, 1, 1, 'N', trim(str_replace(array("\n", "\r"), ' ', $delivery_so['cedeliveryinformation'])), $delivery_so['cecountry'] == 'FR'? $contract: $contract2, $now->format('Ymd'), $now->format('d/m/Y'), '', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, $delivery_date? $delivery_date->format('d/m/Y'): '', $delivery_so['prid'], )); } $pdf = new PDF('P', 'mm', 'A4'); $order = new Order((int) $row['id_order']); if(Validate::isLoadedObject($order)) { $id_orders[] = (int) $order->id; PDF::invoice($order, 'F', TRUE, $pdf); $pdf->Output(dirname(__FILE__).'/extracts/invoices/'.(int) $order->id.'.pdf', 'F'); } } fclose($f); /** * Regeneration invoices for specific orders * using this includes to comment all about csv */ // $orders_to_reprint = array(350385,302554,300088,286495,290190,296685,290539,291935,287612,284108,285930,285284,288626,290659,295252,292214,287915,278572,282846,281120,281324,292999,279299,278681,276840,272366,274417,276233,272552,267126,273451,267563,266108,267186,269235,258571,257172,258306,259788,259000,259547,254186,225736,334010,332694,325773,325773,323595,323595,306923,306923,304776,304776,302960,302960,305645,305645,285700,274391,272544,271819,265852,260292,259059,265544,257100,234423,240829,240829,233767,217497,205633,203823,201126,187387,185462,179854,166753,176233,183491,177402,369986,367072,367383,367970,368338,339107,339107,338759,334924,327402,320364,320364,332667,332667,320441,320441,311542,311542,308895,308895,307577,307577,266573,277760,274366,274318,273079,257063,256322,250723,245678,238412,237659,196253,192709,180700,180046,175868,381283,369164,367304,367982,367104,370224,366966,370107,366177,369315,362975,367252,361380,365123,370909,359931,360698,363246,358396,361919,361608,357811,357270,367977,357509,356946,357199,357199,351217,351217,335669,335669,339127,336501,334378,334378,348116,348116,335330,336653,336653,331109,330480,330480,332355,332355,328706,328706,338370,338370,330071,330071,328154,328154,327939,327939,327736,327736,328201,328201,324345,324345,324978,324978,323388,323388,324598,324598,320183,320183,320935,320935,319958,319958,302878,292803,292803,298027,297052,298746,291544,292090,290810,290168,287607,287277,285811,289946,289048,285813,287451,285987,291066,289082,288720,286209,283027,289347,284717,295020,283355,280889,284988,278545,284070,282825,280327,279775,277188,278137,278137,281455,277836,271812,275407,274469,279319,271066,270306,271764,273388,267492,272076,277800,284796,284462,275265,270320,270486,270171,269886,266411,266333,268554,264148,265590,262954,262851,260846,262689,261596,262103,261976,261521,262447,260983,259890,262905,260747,261067,258471,243813,225221,229011,222430,203373,204814,206033,204894,200585,200839,200125,198425,188263,197940,194892,187277,188266,176280,372718,356628,357331,357178,357326,353230,353230,356461,356461,353210,353210,363733,363733,351215,353296,349932,350221,350221,349221,349358,349221,349894,348980,349745,345763,347674,347674,356852,346516,346516,345297,345297,347205,347205,343485,343485,345911,345911,344243,344243,354164,354164,342709,340429,340429,342041,342041,314782,314782,317374,317374,315947,315947,312628,312628,313425,313425,312877,312877,311916,311916,313144,311534,311534,310128,310128,309820,309820,310808,310808,309611,309611,308859,308859,307387,307387,306365,306365,305878,305878,315960,315960,304861,304861,306712,304406,304406,307734,307734,303634,303634,301336,301336,301295,301295,302048,302048,301446,301446,301446,301446,309768,309768,307734,301235,305236,304360,294794,256386,267588,259733,255594,250994,255479,253251,252393,252441,251929,252987,252734,249873,250484,249240,248519,248202,256012,250175,248340,250448,248500,246880,249146,247554,247139,246179,246930,245615,246352,241094,244392,241484,241314,240026,240797,240427,239982,240330,237796,237127,238402,239833,239833,245077); // foreach ($orders_to_reprint as $key => $order_id) { // $pdf = new PDF('P', 'mm', 'A4'); // $order = new Order((int) $order_id); // if(Validate::isLoadedObject($order)) { // $id_orders[] = (int) $order->id; // PDF::invoice($order, 'F', TRUE, $pdf); // $pdf->Output(dirname(__FILE__).'/extracts/invoices/'.(int) $order->id.'.pdf', 'F'); // } // } $ftp = ftp_connect('ftp.itinsell.com'); ftp_login($ftp, 'CPTXSC', 'c8PssQoLQUYd'); ftp_put($ftp, 'Colissimo/831400/CSV/'.$now->format('Y-m-d').'_bbb_laposte.csv', dirname(__FILE__).'/extracts/itinsell/'.$now->format('Y-m-d').'_philea_laposte.csv', FTP_BINARY); ftp_close($ftp); $ftp = ftp_connect('ftp.itrack.itinsell.com'); ftp_login($ftp, '800914', 'xt954hVUbg'); foreach($id_orders as $id_order) { ftp_put($ftp, 'FacturesCommerciales/'.(int) $id_order.'.pdf', dirname(__FILE__).'/extracts/invoices/'.(int) $id_order.'.pdf', FTP_BINARY); unlink(dirname(__FILE__).'/extracts/invoices/'.(int) $id_order.'.pdf'); } ftp_close($ftp);