Files
redline.com.pl/modules/inpostship/inpostship.php
2024-11-11 18:46:54 +01:00

2898 lines
144 KiB
PHP

<?php
/**
* NOTICE OF LICENSE
*
* This file is licenced under the Software License Agreement.
* With the purchase or the installation of the software in your application
* you accept the licence agreement.
*
* You must not modify, adapt or create derivative works of this source code
*
* @author PrestaHelp.com
* @copyright 2019 PrestaHelp
* @license LICENSE.txt
*/
if (!defined('_PS_VERSION_')) {
exit;
}
require_once __DIR__.'/classes/AuthDS.php';
require_once __DIR__.'/classes/InpostSettings.php';
require_once __DIR__.'/classes/InpostPoint.php';
require_once __DIR__.'/classes/InpostPack.php';
require_once __DIR__.'/classes/InpostErrors.php';
require_once __DIR__.'/classes/InpostDispatch.php';
require_once __DIR__.'/classes/ShipX.php';
require_once __DIR__.'/classes/InpostTools.php';
require_once __DIR__.'/classes/InpostValidate.php';
require_once __DIR__.'/classes/InpostTracking.php';
class InpostShip extends Module {
private $class_name_tab = 'AdminInpostship';
private $debug;
private $debug_shop;
private $price = null;
public $template_dir;
private $checkouts = array(
'order-opc',
'order',
'supercheckout',
'steasycheckout',
'onepagecheckoutps',
'spstepcheckout',
'onepagecheckout',
'thecheckout',
'thecheckout',
'ets_onepagecheckout',
);
public function __construct()
{
$this->name = 'inpostship';
$this->tab = 'shipping_logistics';
$this->version = '4.0.0';
$this->author = 'PrestaHelp';
$this->need_instance = 1;
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Integracja InPost');
$this->description = $this->l('Nadawanie paczek nigdy nie było tak proste! Integracja z InPost za pomocą API ShipX');
$this->confirmUninstall = $this->l('Odinstalowanie modułu nie powoduje utraty żadnych danych.');
$this->debug = Configuration::get('INPOSTSHIP_DEBUG');
$this->debug_shop = Configuration::get('INPOSTSHIP_DEBUG_SHOP');
$this->template_dir = '../../../../modules/' . $this->name . '/views/templates/admin/';
if ($this->debug_shop == 1) {
@ini_set('display_errors', 'on');
@error_reporting(E_ALL | E_STRICT);
}
}
public function install()
{
// if (!$this->setInst()) {
// return false;
// }
$clear = false;
$ipf = Configuration::get('INPOSTSHIP_PRINT_FORMAT');
if ($ipf == 0) {
$clear = true;
}
$this->configuration($clear);
$this->createTab();
$this->installSql();
if (!parent::install() ||
!$this->registerHook('displayHeader') ||
!$this->registerHook('displayBeforeCarrier') ||
!$this->registerHook('displayAdminOrder') ||
!$this->registerHook('actionValidateOrder') ||
!$this->registerHook('actionCartSave') ||
!$this->registerHook('displayBackOfficeHeader') ||
!$this->registerHook('displayCustomerAccount') ||
!$this->registerHook('displayMyAccountBlock') ||
!$this->registerHook('displayAdminOrderTabShip') ||
!$this->registerHook('displayAdminOrderContentShip')
) {
return false;
} else {
return true;
}
}
public function uninstall()
{
if (Configuration::get('INPOSTSHIP_RESET') == 1) {
$this->resetConfig();
}
$this->removeTabs();
if (!parent::uninstall()) {
return false;
}
return true;
}
private function setInst() {
$shop = new Shop($this->context->shop->id);
$auth = new AuthDS($this->name);
if ($auth->makeTools($this->displayName, $this->version, $shop->getBaseURL())){
return true;
}
return false;
}
private function isActiveModule_($showLicence = null)
{
$shop = new Shop((int)$this->context->shop->id);
$auth = new AuthDS($this->name);
$licence = $auth->isActive($shop->getBaseURL());
if (empty($licence)) {
$domain = AuthDS::clearDomain($shop->getBaseURL());
$licence = $auth->getStaticLicence($domain, $this->displayName, Configuration::get('INPOSTSHIP_LICENCE'), $showLicence);
}
return array(
'active' => $licence,
'actived' => $licence['licence']->licence
);
}
private function isActiveModule()
{
$shop = new Shop((int)$this->context->shop->id);
$auth = new AuthDS($this->name, $shop->getBaseURL());
return $auth->checkLicence();
}
/**
* @param bool $clear_data
*/
private function configuration($clear_data = false)
{
if ($clear_data) {
Configuration::updateValue('INPOSTSHIP_SANDBOX', 0);
Configuration::updateValue('INPOSTSHIP_API_USER', '');
Configuration::updateValue('INPOSTSHIP_API_PASSWD', '');
Configuration::updateValue('INPOSTSHIP_API_KEY', '');
Configuration::updateValue('INPOSTSHIP_API_ORGANIZATION', '');
Configuration::updateValue('INPOSTSHIP_PRINT_FORMAT', 'PDF');
Configuration::updateValue('INPOSTSHIP_PRINT_TYPE', 'A6');
Configuration::updateValue('INPOSTSHIP_TRACK', '1'); //save track_id to default prestashop field
Configuration::updateValue('INPOSTSHIP_SEND', '1'); //send track_id default prestashop email
Configuration::updateValue('INPOSTSHIP_STATUS', '1');
Configuration::updateValue('INPOSTSHIP_STATUS_TYPE', '4');
Configuration::updateValue('INPOSTSHIP_DISPATCH', 'parcel_locker');
Configuration::updateValue('INPOSTSHIP_DISPATCH_POINT', '0');
Configuration::updateValue('INPOSTSHIP_COD', '0');
Configuration::updateValue('INPOSTSHIP_PACK_SIZE', 'small');
Configuration::updateValue('INPOSTSHIP_INSURANCE', '1');
Configuration::updateValue('INPOSTSHIP_TRACKING_SAVE', '1');
Configuration::updateValue('INPOSTSHIP_DELETE_DATABASE', '0');
Configuration::updateValue('INPOSTSHIP_ORDER_STATUS', 4);
Configuration::updateValue('INPOSTSHIP_ORDER_STATUS_CHANGE', 0);
Configuration::updateValue('INPOSTSHIP_SEND_POINT_CUSTOMER', 0);
Configuration::updateValue('INPOSTSHIP_SEND_POINT_ADMIN', 0);
Configuration::updateValue('INPOSTSHIP_SEND_TRACKING', 0);
Configuration::updateValue('INPOSTSHIP_POSITION_BOX', 1);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_1', 1);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_2', 1);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_3', 0);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_4', 0);
Configuration::updateValue('INPOSTSHIP_CARRIER_1', 'a:1:{i:0;s:1:"0";}');
Configuration::updateValue('INPOSTSHIP_CARRIER_2', 'a:1:{i:0;s:1:"0";}');
Configuration::updateValue('INPOSTSHIP_CARRIER_3', 'a:1:{i:0;s:1:"0";}');
Configuration::updateValue('INPOSTSHIP_CARRIER_4', 'a:1:{i:0;s:1:"0";}');
Configuration::updateValue('INPOSTSHIP_CARRIER_5', 'a:1:{i:0;s:1:"0";}');
Configuration::updateValue('INPOSTSHIP_CARRIER_6', 'a:1:{i:0;s:1:"0";}');
Configuration::updateValue('INPOSTSHIP_NEAR', 3);
Configuration::updateValue('INPOSTSHIP_DEBUG', 0);
Configuration::updateValue('INPOSTSHIP_DEBUG_SHOP', 0);
Configuration::updateValue('INPOSTSHIP_RESET', 0);
Configuration::updateValue('INPOSTSHIP_MAP_TYPE', 'osm');
Configuration::updateValue('INPOSTSHIP_PL_PERPAGE', 10);
Configuration::updateValue('INPOSTSHIP_WEEKPACK', 0);
Configuration::updateValue('INPOSTSHIP_WEEKPACK_START_DAY', 4);
Configuration::updateValue('INPOSTSHIP_WEEKPACK_END_DAY', 6);
Configuration::updateValue('INPOSTSHIP_WEEKPACK_START_HOUR', '14:00');
Configuration::updateValue('INPOSTSHIP_WEEKPACK_END_HOUR', '11:00');
Configuration::updateValue('INPOSTSHIP_CHECKOUT', 'default');
Configuration::updateValue('INPOSTSHIP_MAP_BOX', 1);
Configuration::updateValue('INPOSTSHIP_MAP_SHOW', 1);
Configuration::updateValue('INPOSTSHIP_MAP_WIDTH', 1);
Configuration::updateValue('INPOSTSHIP_GEOWIDGET', 4);
}
}
/**
* Reset module config information
*/
private function resetConfig()
{
Configuration::updateValue('INPOSTSHIP_SANDBOX', 0);
Configuration::updateValue('INPOSTSHIP_API_USER', '');
Configuration::updateValue('INPOSTSHIP_API_PASSWD', '');
Configuration::updateValue('INPOSTSHIP_API_KEY', '');
Configuration::updateValue('INPOSTSHIP_API_ORGANIZATION', '');
Configuration::updateValue('INPOSTSHIP_PRINT_FORMAT', 'PDF');
Configuration::updateValue('INPOSTSHIP_PRINT_TYPE', 'A6');
Configuration::updateValue('INPOSTSHIP_TRACK', '1'); //save track_id to default prestashop field
Configuration::updateValue('INPOSTSHIP_SEND', '1'); //send track_id default prestashop email
Configuration::updateValue('INPOSTSHIP_STATUS', '1');
Configuration::updateValue('INPOSTSHIP_STATUS_TYPE', '4');
Configuration::updateValue('INPOSTSHIP_DISPATCH', 'parcel_locker');
Configuration::updateValue('INPOSTSHIP_DISPATCH_POINT', '0');
Configuration::updateValue('INPOSTSHIP_COD', '0');
Configuration::updateValue('INPOSTSHIP_PACK_SIZE', 'small');
Configuration::updateValue('INPOSTSHIP_INSURANCE', '1');
Configuration::updateValue('INPOSTSHIP_TRACKING_SAVE', '1');
Configuration::updateValue('INPOSTSHIP_DELETE_DATABASE', '0');
Configuration::updateValue('INPOSTSHIP_ORDER_STATUS', 4);
Configuration::updateValue('INPOSTSHIP_ORDER_STATUS_CHANGE', 0);
Configuration::updateValue('INPOSTSHIP_SEND_POINT_CUSTOMER', 0);
Configuration::updateValue('INPOSTSHIP_SEND_POINT_ADMIN', 0);
Configuration::updateValue('INPOSTSHIP_SEND_TRACKING', 0);
Configuration::updateValue('INPOSTSHIP_POSITION_BOX', 1);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_1', 0);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_2', 0);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_3', 0);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_4', 0);
Configuration::updateValue('INPOSTSHIP_CARRIER_1', 0);
Configuration::updateValue('INPOSTSHIP_CARRIER_2', 0);
Configuration::updateValue('INPOSTSHIP_CARRIER_3', 0);
Configuration::updateValue('INPOSTSHIP_CARRIER_4', 0);
Configuration::updateValue('INPOSTSHIP_NEAR', 3);
Configuration::updateValue('INPOSTSHIP_DEBUG', 0);
Configuration::updateValue('INPOSTSHIP_DEBUG_SHOP', 0);
Configuration::updateValue('INPOSTSHIP_RESET', 0);
Configuration::updateValue('INPOSTSHIP_SENDER_NAME', '');
Configuration::updateValue('INPOSTSHIP_SENDER_COMPANY_NAME', '');
Configuration::updateValue('INPOSTSHIP_SENDER_FIRSTNAME', '');
Configuration::updateValue('INPOSTSHIP_SENDER_LASTNAME', '');
Configuration::updateValue('INPOSTSHIP_SENDER_EMAIL', '');
Configuration::updateValue('INPOSTSHIP_SENDER_PHONE', '');
Configuration::updateValue('INPOSTSHIP_SENDER_STREET', '');
Configuration::updateValue('INPOSTSHIP_SENDER_BUILDING_NR', '');
Configuration::updateValue('INPOSTSHIP_SENDER_CITY', '');
Configuration::updateValue('INPOSTSHIP_SENDER_POSTCODE', '');
Configuration::updateValue('INPOSTSHIP_API_USER', '');
Configuration::updateValue('INPOSTSHIP_API_PASSWD', '');
Configuration::updateValue('INPOSTSHIP_API_KEY', '');
Configuration::updateValue('INPOSTSHIP_SANDBOX', '');
Configuration::updateValue('INPOSTSHIP_API_ORGANIZATION', '');
Configuration::updateValue('INPOSTSHIP_ORDER_NUMBER', 1);
Configuration::updateValue('INPOSTSHIP_PL_PERPAGE', 10);
Configuration::updateValue('INPOSTSHIP_WEEKPACK', 0);
Configuration::updateValue('INPOSTSHIP_WEEKPACK_START_DAY', 4);
Configuration::updateValue('INPOSTSHIP_WEEKPACK_END_DAY', 6);
Configuration::updateValue('INPOSTSHIP_WEEKPACK_START_HOUR', '14:00');
Configuration::updateValue('INPOSTSHIP_WEEKPACK_END_HOUR', '11:00');
}
/**
* Create PS tab
*/
private function createTab()
{
$lang = Language::getLanguages();
if (!Tab::getIdFromClassName('AdminInpostship')) {
$tab = new Tab();
$tab->id_parent = 0;
$tab->module = $this->name;
$tab->class_name = 'AdminInpostship';
$tab->active = 1;
$tab->hide_host_mode = 0;
foreach ($lang as $l) {
$tab->name[$l['id_lang']] = 'Inpost';
}
$tab->add();
}
if (!Tab::getIdFromClassName('AdminInpostshipMass')) {
$tab = new Tab();
$tab->id_parent = Tab::getIdFromClassName($this->class_name_tab);
$tab->module = $this->name;
$tab->class_name = 'AdminInpostshipMass';
$tab->active = 1;
$tab->hide_host_mode = 0;
foreach ($lang as $l) {
$tab->name[$l['id_lang']] = 'Nowe paczki';
}
$tab->add();
}
if (!Tab::getIdFromClassName('AdminInpostshipPackage')) {
$tab = new Tab();
$tab->id_parent = Tab::getIdFromClassName($this->class_name_tab);
$tab->module = $this->name;
$tab->class_name = 'AdminInpostshipPackage';
$tab->active = 1;
$tab->hide_host_mode = 0;
foreach ($lang as $l) {
$tab->name[$l['id_lang']] = 'Lista przesyłek';
}
$tab->add();
}
if (!Tab::getIdFromClassName('AdminInpostshipSettings')) {
$tab = new Tab();
$tab->id_parent = Tab::getIdFromClassName($this->class_name_tab);
$tab->module = $this->name;
$tab->class_name = 'AdminInpostshipSettings';
$tab->active = 1;
$tab->hide_host_mode = 0;
foreach ($lang as $l) {
$tab->name[$l['id_lang']] = 'Ustawienia';
}
$tab->add();
}
}
/**
* Remove tabs
*/
private function removeTabs()
{
if ($id_tab = Tab::getIdFromClassName('AdminInpostshipMass')) {
$tab = new Tab($id_tab);
$tab->delete();
}
if ($id_tab = Tab::getIdFromClassName('AdminInpostshipSettings')) {
$tab = new Tab($id_tab);
$tab->delete();
}
if ($id_tab = Tab::getIdFromClassName('AdminInpostshipPackage')) {
$tab = new Tab($id_tab);
$tab->delete();
}
if ($id_tab = Tab::getIdFromClassName('AdminInpostship')) {
$tab = new Tab($id_tab);
$tab->delete();
}
}
private function installSql()
{
require_once __DIR__.'/sql/install.php';
}
/**
* Function deleteDatabase
* this function delete all tables from db
* return bool - result of db executes
*/
private function deleteDatabase()
{
if (Db::getInstance()->execute('DROP TABLE `' . _DB_PREFIX_ . 'inpostship`')
&& Db::getInstance()->execute('DROP TABLE `' . _DB_PREFIX_ . 'inpostship_cart`')
&& Db::getInstance()->execute('DROP TABLE `' . _DB_PREFIX_ . 'inpostship_customer`')
&& Db::getInstance()->execute('DROP TABLE `' . _DB_PREFIX_ . 'inpostship_points`')) {
return true;
}
return false;
}
public function hookDisplayBackOfficeHeader()
{
if ($this->isActiveModule()) {
if (isset($this->context->controller->module->name) && $this->context->controller->module->name == 'inpostship') {
$this->context->controller->addJS('/js/jquery/jquery-1.11.0.min.js');
if (Tools::getValue('controller') == 'AdminInpostshipPackage') {
// $this->context->controller->addJS('//min.gitcdn.xyz/repo/wintercounter/Protip/master/protip.min.js');
}
$this->context->controller->addJS($this->_path . 'views/js/inpostship_back.js');
$this->context->controller->addCSS($this->_path . 'views/css/inpostship_back.css');
$this->context->controller->addCSS('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css');
}
if ($this->context->controller->php_self == 'AdminOrders') {
$this->context->controller->addJS($this->_path . 'views/js/inpostship_back.js');
$this->context->controller->addCSS($this->_path . 'views/css/inpostship_back.css');
}
}
}
public function hookDisplayHeader()
{
if ($this->isActiveModule()) {
$php_self = isset($this->context->controller->php_self) ? $this->context->controller->php_self : false;
if (empty($php_self)) {
if (isset($this->context->controller->module->name)) {
$php_self = $this->context->controller->module->name;
} else {
$php_self = 'index';
}
}
if ($php_self && in_array($php_self, $this->checkouts)) {
$this->context->controller->addCSS($this->_path . 'views/css/select2.min.css');
$this->context->controller->addCSS($this->_path . 'views/css/inpostship.css');
$this->context->controller->addJS($this->_path . 'views/js/select2.min.js');
if (self::ps8()) {
$this->context->controller->addJS($this->_path . 'views/js/inpostship_8.js');
} else if (self::ps17()) {
$this->context->controller->registerStylesheet(
'module-inpostship-style',
'https://geowidget.easypack24.net/css/easypack.css',
array(
'media' => 'all',
'priority' => 200,
'server' => 'remote'
)
);
$this->context->controller->registerJavascript(
'module-inpostship',
'https://geowidget.easypack24.net/js/sdk-for-javascript.js',
array(
'priority' => 200,
'attribute' => 'async',
'server' => 'remote'
)
);
$this->context->controller->addJS($this->_path . 'views/js/inpostship_front17.js');
} else if (self::ps15()) {
$this->context->controller->addCSS('https://geowidget.easypack24.net/css/easypack.css');
$this->context->controller->addJS('https://geowidget.easypack24.net/js/sdk-for-javascript.js');
$this->context->controller->addJS($this->_path . 'views/js/inpostship_front15.js');
} else {
$this->context->controller->addCSS('https://geowidget.easypack24.net/css/easypack.css');
$this->context->controller->addJS('https://geowidget.easypack24.net/js/sdk-for-javascript.js');
$this->context->controller->addJS($this->_path . 'views/js/inpostship_front.js');
}
}
$available_module = array('onepagecheckoutps', 'spstepcheckout', 'supercheckout', 'ets_onepagecheckout');
if (in_array(Configuration::get('INPOSTSHIP_CHECKOUT'), $available_module)) {
return $this->hookDisplayWrapperTop();
}
}
}
public function hookDisplayTop()
{
return $this->hookDisplayWrapperTop();
}
public function hookDisplayWrapperTop()
{
if ($this->isActiveModule()) {
$available_module = array('onepagecheckoutps', 'spstepcheckout', 'supercheckout', 'ets_onepagecheckout');
$php_self = isset($this->context->controller->php_self) ? $this->context->controller->php_self : false;
if (empty($php_self)) {
$php_self = $this->context->controller->module->name;
}
if ($php_self == 'order' || $php_self == 'chekcout' || $php_self == 'steasycheckout' || $php_self == 'onepagecheckoutps' || $php_self == 'supercheckout' || $php_self == 'ets_onepagecheckout' || in_array(Configuration::get('INPOSTSHIP_CHECKOUT'), $available_module)) {
$images_url = (Tools::usingSecureMode() ? _PS_BASE_URL_SSL_ : _PS_BASE_URL_) . __PS_BASE_URI__ . '/modules/' . $this->name . '/views/img/';
$pointDir = (Tools::usingSecureMode() ? _PS_BASE_URL_SSL_ : _PS_BASE_URL_) . __PS_BASE_URI__ . 'modules/' . $this->name . '/getPoint.php';
$carrier_inpost = Carrier::getCarrierByReference(Configuration::get('INPOSTSHIP_CARRIER_1'));
$carrier_inpost_cod = Carrier::getCarrierByReference(Configuration::get('INPOSTSHIP_CARRIER_2'));
if (empty($carrier_inpost_cod)) {
$carrier_inpost_cod = new stdClass();
$carrier_inpost_cod->id = 0;
}
$carrier_inpost_courier = Carrier::getCarrierByReference(Configuration::get('INPOSTSHIP_CARRIER_3'));
if (empty($carrier_inpost_courier)) {
$carrier_inpost_courier = new stdClass();
$carrier_inpost_courier->id = 0;
}
$carrier_inpost_courier_cod = Carrier::getCarrierByReference(Configuration::get('INPOSTSHIP_CARRIER_4'));
if (empty($carrier_inpost_courier_cod)) {
$carrier_inpost_courier_cod = new stdClass();
$carrier_inpost_courier_cod->id = 0;
}
$baseDirShop = (Tools::usingSecureMode() ? _PS_BASE_URL_SSL_ : _PS_BASE_URL_) . __PS_BASE_URI__;
$selectedPoint = InpostPack::getPointByCart((int)$this->context->cart->id);
$selectedPointInfo = InpostPoint::getPointInfo($selectedPoint);
$selectedPointInfoText = '';
if (!empty($selectedPointInfo)) {
$selectedPointInfoText = 'Wybrany paczkomat:|| ;;' . $selectedPoint . ', ' . $selectedPointInfo['point_address1'] . ', ' . $selectedPointInfo['point_address2'] . ';; ||' . $selectedPointInfo['point_desc'];
}
$imap = Configuration::get('INPOSTSHIP_MAP_TYPE');
$imgm = Configuration::get('INPOSTSHIP_GOOGLE_MAPS_API');
$showWeek = 0;
if (Configuration::get('INPOSTSHIP_WEEKPACK') == 1) {
$datWeek = date('w');
$startWeek = Configuration::get('INPOSTSHIP_WEEKPACK_START_DAY');
$endWeek = Configuration::get('INPOSTSHIP_WEEKPACK_END_DAY');
$hourWeek = date('H:i');
$startHour = Configuration::get('INPOSTSHIP_WEEKPACK_START_HOUR');
$endHour = Configuration::get('INPOSTSHIP_WEEKPACK_END_HOUR');
if ($datWeek > $startWeek && $datWeek < $endWeek) {
$showWeek = 1;
} else if ($datWeek > $startWeek && $datWeek == $endWeek) {
if ($hourWeek <= $endHour) {
$showWeek = 1;
}
} else if ($datWeek == $startWeek && $datWeek < $endWeek) {
if ($hourWeek >= $startHour) {
$showWeek = 1;
}
} else if ($datWeek == $startWeek && $datWeek == $endWeek) {
if ($hourWeek >= $startHour && $hourWeek <= $endHour) {
$showWeek = 1;
}
}
}
$INPOSTSHIP_CARRIER_1 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_1'));
$paczkomaty = '[]';
if (!empty($INPOSTSHIP_CARRIER_1)) {
$paczkomaty = json_encode($INPOSTSHIP_CARRIER_1);
}
$INPOSTSHIP_CARRIER_2 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_2'));
$paczkomaty_cod = '[]';
if (!empty($INPOSTSHIP_CARRIER_2)) {
$paczkomaty_cod = json_encode($INPOSTSHIP_CARRIER_2);
}
$INPOSTSHIP_CARRIER_5 = (array)unserialize(Configuration::get('INPOSTSHIP_CARRIER_5'));
$paczkomaty_week = '[]';
if (!empty($INPOSTSHIP_CARRIER_5)) {
$paczkomaty_week = json_encode($INPOSTSHIP_CARRIER_5);
}
$INPOSTSHIP_CARRIER_6 = (array)unserialize(Configuration::get('INPOSTSHIP_CARRIER_6'));
$paczkomaty_week_cod = '[]';
if (!empty($INPOSTSHIP_CARRIER_6)) {
$paczkomaty_week_cod = json_encode($INPOSTSHIP_CARRIER_6);
}
$INPOSTSHIP_CARRIER_3 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_3'));
$courier = '[]';
if (!empty($INPOSTSHIP_CARRIER_3)) {
$courier = json_encode($INPOSTSHIP_CARRIER_3);
}
$INPOSTSHIP_CARRIER_4 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_4'));
$courier_cod = '[]';
if (!empty($INPOSTSHIP_CARRIER_4)) {
$courier_cod = json_encode($INPOSTSHIP_CARRIER_4);
}
$this->context->smarty->assign(array(
'points' => InpostPoint::getAllPoints(null, 0),
'cart_id' => $this->context->cart->id,
'marker_1' => urlencode($images_url . 'marker_1.png'),
'marker_2' => urlencode($images_url . 'marker_2.png'),
'paczkomaty' => $paczkomaty,
'paczkomaty_cod' => $paczkomaty_cod,
'paczkomaty_week' => $paczkomaty_week,
'paczkomaty_week_cod' => $paczkomaty_week_cod,
'courier' => $courier,
'courier_cod' => $courier_cod,
'ps17' => self::ps17(),
'pointDir' => $pointDir,
'baseDirShop' => $baseDirShop,
'box_pos' => Configuration::get('INPOSTSHIP_POSITION_BOX'),
'version' => _PS_VERSION_,
'module_dir_img' => $images_url,
'selectedPointInfo' => $selectedPointInfoText,
'testMap' => Configuration::get('INPOSTSHIP_SANDBOX'),
'imap' => $imap,
'imgm' => $imgm,
'weekPrice' => Configuration::get('INPOSTSHIP_WEEKPACK_PRICE'),
'showWeek' => $showWeek,
'isTable' => Configuration::get('INPOSTSHIP_IS_TABLE'),
'checkout' => Configuration::get('INPOSTSHIP_CHECKOUT'),
));
return $this->display(__DIR__, '/views/templates/hook/header.tpl');
}
}
}
public function hookShoppingCartExtra($params)
{
return $this->hookDisplayBeforeCarrier($params);
}
public function hookDisplayCustomerAccount()
{
if ($this->isActiveModule()) {
$ssl = 'https://';
$url = $ssl.$this->context->shop->domain.$this->context->shop->physical_uri . 'modules/' . $this->name . '/views/img/';
$this->context->smarty->assign(array(
'moduleImgDir' => $url,
));
return $this->display(__DIR__, '/views/templates/hook/myaccount.tpl');
}
}
public function hookDisplayMyAccountBlock()
{
return $this->hookDisplayCustomerAccount();
}
public function hookDisplayAdminOrder($params)
{
if ($this->isActiveModule()) {
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'));
if (Tools::getIsset('print_label')) {
$label = (int)Tools::getValue('print_label');
if (!empty($label) && $label > 0) {
$format = Configuration::get('INPOSTSHIP_PRINT_FORMAT');
$pack = InpostPack::getInpostShipByIdPack((int)$label);
$labels[] = $pack['packcode'];
$content = $inpostapi->getMultiLabels((int)Configuration::get('INPOSTSHIP_API_ORGANIZATION'), $labels, Configuration::get('INPOSTSHIP_PRINT_TYPE'), $format);
$contents = $this->GetHeaders($content);
ob_start();
$file_name = $pack['reference_number'].'.pdf';
$dir = __DIR__ . '/files/' . $file_name;
file_put_contents($dir, $contents['http_code']);
}
Tools::redirectLink($_SERVER['HTTP_REFERER']);
}
$ioa = Configuration::get('INPOSTSHIP_ORDER_ADD');
if ($ioa == 1) {
$this->InpostProcess();
}
$id_order = $params['id_order'];
$order = new Order($id_order);
$id_cart = $order->id_cart;
$customer = new Customer($order->id_customer);
$address_delivery = new Address($order->id_address_delivery);
$x13allegro = Configuration::get('INPOSTSHIP_INTEGRATION_X13ALLEGRO');
if (!empty($address_delivery)) {
$address_delivery->phone_mobile = InpostTools::setPhoneNumber(trim(str_replace('+48', '', $address_delivery->phone_mobile)));
$address_delivery->phones = !empty(trim($address_delivery->phone)) ? trim(str_replace('+48', '', $address_delivery->phone)) : trim(str_replace('+48', '', $address_delivery->phone_mobile));
$address_delivery->phones = InpostTools::setPhoneNumber(str_replace(' ', '', $address_delivery->phones));
}
$identity = $order->reference;
$ident = Configuration::get('INPOSTSHIP_ORDER_NUMBER');
if ($ident == 1) {
$identity = $order->id;
}
$allegroNick = (int)Configuration::get('INPOSTSHIP_X13ALLEGRO_NICK');
$rec_mach = '';
$package = InpostPack::getInpostShipCart((int)$id_cart);
$x13oinfo = null;
if (!empty($package)) {
$rec_mach = $package['receiver_machine'];
$id_carrier = (int)$package['id_carrier'];
if ($id_carrier != $order->id_carrier) {
$id_carrier = (int)$order->id_carrier;
}
$current_pack = new Carrier((int)$id_carrier, (int)$this->context->cookie->id_lang);
} else {
$x13version = '6.2.1';
$x13allegroModule = Db::getInstance()->getRow('SELECT * FROM `' . _DB_PREFIX_ . 'module` WHERE `name` = "x13allegro"');
$current_pack = new Carrier((int)$order->id_carrier, (int)$this->context->cookie->id_lang);
if ($x13allegro) {
if ($x13allegroModule['version'] < $x13version) {
$x13orderInfo = Db::getInstance()->getRow('SELECT * FROM `' . _DB_PREFIX_ . 'xallegro_form` WHERE `id_order` = ' . (int)$order->id);
if (!empty($x13orderInfo)) {
$x13oinfo = unserialize(base64_decode($x13orderInfo['content']));
$rec_mach = $x13oinfo->postBuyFormGdAddress->postBuyFormAdrId;
}
} else {
$x13orderInfo = Db::getInstance()->getRow('SELECT * FROM `' . _DB_PREFIX_ . 'xallegro_order` WHERE `id_order` = ' . (int)$order->id);
if (!empty($x13orderInfo)) {
$x13oinfo = json_decode($x13orderInfo['checkout_form_content']);
$rec_mach = $x13oinfo->delivery->pickupPoint->id;
}
}
if ($allegroNick == 1) {
$identity .= ' '.$x13oinfo->buyer->login;
}
}
}
$point = $inpostapi->getPointInfo($rec_mach);
$pop_point = InpostPoint::getPopPointsAll();
$pok_point = InpostPoint::getPointOfType('pok');
$c1 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_1'));
$c1i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_1');
$c2 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_2'));
$c2i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_2');
$c3 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_3'));
$c3i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_3');
$c4 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_4'));
$c4i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4');
$c5 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_5'));
$c6 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_6'));
$ssl = $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://';
$statusesApi = $inpostapi->getStatuses();
if (isset($statusesApi['result']->items)) {
$statues = $statusesApi['result']->items;
} else {
$statues = array();
}
$packageList = InpostPack::getOrderPackageList((int)$id_order);
if (!empty($packageList)) {
foreach ($packageList as &$pl) {
$ord = new Order($pl['id_order']);
$id_cart = (int)$ord->id_cart;
$inpost_cart = InpostPack::getInpostShipCart((int)$id_cart);
$pl['image'] = '';
$id_carrier2 = (int)$inpost_cart['id_carrier'];
if ($id_carrier2 != $ord->id_carrier) {
$id_carrier2 = (int)$order->id_carrier;
}
$carrier2 = new Carrier((int)$id_carrier2);
$cref2 = $carrier2->id;
if ($c1i == 1) {
if (in_array($cref2, $c1)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
}
}
if ($c2i == 1) {
if (in_array($cref2, $c2)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
}
}
if ($c3i == 1) {
if (in_array($cref2, $c3)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc2.jpg';
}
}
if ($c4i == 1) {
if (in_array($cref2, $c4)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc2.jpg';
}
}
if (in_array($cref2, $c5)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
}
if (in_array($cref2, $c6)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
}
$pl['image'] = $image2;
$dispatch = 0;
if ($pl['sendtype'] == 'dispatch_order') {
$dispatch = 1;
}
$pl['dispatch'] = $dispatch;
$ship_info = array();
if ($pl['status'] != 'confirmed') {
$ship_info = $inpostapi->getShipments($pl['packcode']);
$ship_info = (array)$ship_info['result'];
}
$pl['ship_info'] = $ship_info;
if ((int)$pl['dispatch_id'] > 0) {
$dispatch_info = $inpostapi->getDispatchInfo((int)$pl['dispatch_id']);
if (!empty($dispatch_info['error'])) {
$sxerror = new InpostError();
if ($this->debug == 1) {
echo "<pre>";
print_r($dispatch_info);
echo "</pre>";
}
$this->context->smarty->assign(array(
'errors' => $sxerror->displayErrors($dispatch_info)
));
} else {
$status = $dispatch_info['result']->status;
$pl['dispatch_status'] = InpostDispatch::getDispatchStatus($status);
$pl['dispatch_status_org'] = $status;
}
}
// file with etykieta
if (!empty($pl['reference_number'])) {
$file_name = $pl['reference_number'] . '.pdf';
$dir = __DIR__ . '/files/' . $file_name;
if (file_exists($dir)) {
$pl['fileDownload'] = 'https://' . $this->context->shop->domain . $this->context->shop->physical_uri . 'modules/inpostship/files/' . $file_name;
} else {
$pl['fileDownload'] = '';
}
} else {
$pl['fileDownload'] = '';
}
$current_statue = '--';
foreach ($statues as $stat) {
if ($pl['status'] == $stat->name) {
$current_statue = $stat->title;
}
}
$pl['current_statue'] = $current_statue;
}
}
$cref = $current_pack->id;
$image = '';
$service = 0;
$inpostCod = 0;
$serviceName = '';
$paczk = 0;
$allegro = 0;
$week = 0;
$addressAllegro = array();
$x13transactionId = $x13allegroUserId = null;
if ($x13allegro && !empty($x13oinfo)) {
$service = 3;
if ($x13allegroModule['version'] < $x13version) {
$allegroService = $x13oinfo->postBuyFormShipmentId;
} else {
$allegroService = $x13oinfo->delivery->method->id;
}
switch ($allegroService) {
case 10023:
$serviceName = 'Allegro Paczkomaty 24/7 InPost';
$paczk = 1;
break;
case 10022:
$serviceName = 'Paczkomaty 24/7';
$paczk = 1;
break;
case 18:
$serviceName = 'Allegro Kurier24 InPost pobranie ';
break;
case 34:
$serviceName = 'Kurier InPost pobranie ';
break;
case '2488f7b7-5d1c-4d65-b85c-4cbcf253fd93':
$serviceName = 'Allegro Paczkomaty 24/7 InPost';
$paczk = 1;
$allegro = 1;
break;
case 'b20ef9e1-faa2-4f25-9032-adbea23e5cb9':
$serviceName = 'Allegro Paczkomaty 24/7 InPost pobranie';
$paczk = 1;
$inpostCod = 1;
$allegro = 1;
break;
case '85c3ad2f-4ec1-446c-866e-63473ed10e26':
$serviceName = 'Allegro Kurier24 InPost pobranie';
$inpostCod = 1;
break;
case '98f86f81-0018-41c5-ac83-073a56fc7021':
$serviceName = 'Allegro miniKurier24 InPost pobranie';
$inpostCod = 1;
break;
case '999f8753-6340-48a0-8eba-46096f9749aa':
$serviceName = 'Kurier InPost pobranie';
$inpostCod = 1;
break;
case '2653ca13-67c8-48c3-bbf8-ff9aa3f70ed3':
$serviceName = 'Paczkomaty 24/7 pobranie';
$paczk = 1;
$inpostCod = 1;
break;
case '685d8b40-2571-4111-8937-9220b1710d4c':
$serviceName = 'Paczkomaty 24/7 ';
$paczk = 1;
break;
case '9081532b-5ad3-467d-80bc-9252982e9dd8':
$serviceName = 'Allegro miniKurier24 InPost';
$service = 4;
$paczk = 0;
break;
}
if ($x13allegroModule['version'] < $x13version) {
$x13transactionId = $x13oinfo->postBuyFormId;
$x13allegroUserId = $x13oinfo->postBuyFormBuyerId;
} else {
$x13transactionId = $x13oinfo->id;
$x13allegroUserId = $x13oinfo->buyer->id;
$addressAllegro = $x13oinfo->delivery->address;
}
} else {
if ($c1i == 1) {
if (in_array($cref, $c1)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
$service = 1;
}
}
if ($c2i == 1) {
if (in_array($cref, $c2)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
$service = 1;
$inpostCod = 1;
}
}
if ($c3i == 1) {
if (in_array($cref, $c3)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc2.jpg';
$service = 2;
}
}
if ($c4i == 1) {
if (in_array($cref, $c4)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc2.jpg';
$service = 2;
$inpostCod = 1;
}
}
if (in_array($cref, $c5)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
$service = 5;
$week = 1;
}
if (in_array($cref, $c6)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
$service = 6;
$inpostCod = 1;
$week = 1;
}
}
$sendingMethods = $inpostapi->getSendingMethods();
$point2 = $inpostapi->getPointInfo(Configuration::get('INPOSTSHIP_SENDER_MACHINE'));
$orderCarrier2 = new Carrier((int)$order->id_carrier);
$orderCarrier = $orderCarrier2->id;
$inpostCarrier = [];
if (!empty($c1)) {
$inpostCarrier = $c1;
}
if (!empty($c2)) {
$inpostCarrier = array_merge($inpostCarrier, $c2);
}
if (!empty($c3)) {
$inpostCarrier = array_merge($inpostCarrier, $c3);
}
if (!empty($c4)) {
$inpostCarrier = array_merge($inpostCarrier, $c4);
}
if (!empty($c5)) {
$inpostCarrier = array_merge($inpostCarrier, $c5);
}
if (!empty($c6)) {
$inpostCarrier = array_merge($inpostCarrier, $c6);
}
$active = false;
if (Configuration::get('INPOSTSHIP_SHOW_SFI') == 1) {
$active = true;
}
if (in_array($orderCarrier, $inpostCarrier)) {
$active = true;
}
$scv = false;
if (Configuration::get('INPOSTSHIP_SHOW_COD_VALUE') == 1) {
$scv = true;
}
if ($c2i == 1 || $c4i == 1 || !empty($c6)) {
if ($orderCarrier == $c2 || $orderCarrier == $c4 || $orderCarrier == $c6) {
$scv = true;
}
}
$orderWeight = $order->getTotalWeight();
if ($orderWeight == 0) {
$orderWeight = Configuration::get('INPOSTSHIP_PACKAGE_WEIGHT');
}
$showWeek = 0;
if (Configuration::get('INPOSTSHIP_WEEKPACK') == 1) {
$datWeek = date('w');
$startWeek = 2;
$endWeek = 6;
$hourWeek = date('H:i');
$startHour = '8:00';
$endHour = '13:00';
if ($datWeek > $startWeek && $datWeek < $endWeek) {
$showWeek = 1;
} else if ($datWeek > $startWeek && $datWeek == $endWeek) {
if ($hourWeek <= $endHour) {
$showWeek = 1;
}
} else if ($datWeek == $startWeek && $datWeek < $endWeek) {
if ($hourWeek >= $startHour) {
$showWeek = 1;
}
} else if ($datWeek == $startWeek && $datWeek == $endWeek) {
if ($hourWeek >= $startHour && $hourWeek <= $endHour) {
$showWeek = 1;
}
}
}
$addr = array();
$addr['postcode'] = $address_delivery->postcode;
$strrets = $address_delivery->address1.(!empty($address_delivery->address2) ? ' '.$address_delivery->address2 : '');
$street = str_replace('ul. ', '', $strrets);
$street = str_replace(',', '', $street);
$addr['street'] = InpostTools::split_street($street);
if (!InpostValidate::isPolandPostCode($address_delivery->postcode)) {
$addr['postcode'] = InpostTools::setPolandPostCode($address_delivery->postcode);
}
$addr['city'] = $address_delivery->city;
// etykiety zwrotne
if ($service == 2) {
}
$conf = '';
if (isset($_SESSION['inpost']['conf'])) {
$conf = $_SESSION['inpost']['conf'];
unset($_SESSION['inpost']['conf']);
}
//dump($active);die;
$this->context->smarty->assign(array(
'conf' => $conf,
'order' => $order,
'orderWeight' => $orderWeight,
'cart_id' => $order->id_cart,
'customer' => $customer,
'address_delivery' => $address_delivery,
'point' => $point,
'point2' => $point2,
'packtype' => $inpostapi->locker,
'insurance' => $inpostapi->insurance,
'packtype_default' => Configuration::get('INPOSTSHIP_PACK_SIZE'),
'dispatch' => Configuration::get('INPOSTSHIP_DISPATCH'),
'pop_points' => $pop_point,
'pok_points' => $pok_point,
'packageList' => $packageList,
'image' => $image,
'sendingMethods' => $sendingMethods['result']->items,
'service' => $service,
'inpostCod' => $inpostCod,
'ssbi' => Configuration::get('INPOSTSHIP_SHOW_SFI'),
'active' => $active,
'scv' => $scv,
'selPopPoint' => Configuration::get('INPOSTSHIP_SENDER_MACHINE_POP'),
'serviceName' => $serviceName,
'paczk' => $paczk,
'x13transactionId' => $x13transactionId,
'x13allegroUserId' => $x13allegroUserId,
'price' => $this->price,
'ipi' => Configuration::get('INPOSTSHIP_PACKAGE_INSURANCE'),
'ioa' => Configuration::get('INPOSTSHIP_ORDER_ADD'),
'addressAllegro' => $addressAllegro,
'weekPack' => $package['week'],
'showWeek' => $showWeek,
'week' => $week,
'rec_mach' => $rec_mach,
'identity' => $identity,
'addr' => $addr,
'devType' => Configuration::get('INPOSTSHIP_SANDBOX'),
'dispatchUrl' => 'https://'.$this->context->shop->domain.$this->context->shop->physical_uri.'module/inpostship/Dispatch?id_pack=',
'printUrl' => 'https://'.$this->context->shop->domain.$this->context->shop->physical_uri.'module/inpostship/printLabel?id_pack=',
'pn_isset' => (int)Configuration::get('INPOSTSHIP_INTEGRATION_PRINTNODE_ISSET'),
'inpostMessage' => isset($_GET['success']) ? $_GET['success'] : '',
'inpostError' => isset($_GET['error']) ? (is_int($_GET['error']) ? $_GET['error'] : base64_decode($_GET['error'])) : '',
));
if (version_compare(_PS_VERSION_, '1.6', '<')) {
return $this->display(__FILE__, 'order15.tpl');
} else {
if (_PS_VERSION_ >= '1.7.7.0') {
return $this->display(__FILE__, 'order1770.tpl');
} else {
return $this->display(__FILE__, 'order.tpl');
}
}
}
}
public function hookDisplayBeforeCarrier($params)
{
if ($this->isActiveModule()) {
$output = '';
$images_url = (Tools::usingSecureMode() ? _PS_BASE_URL_SSL_ : _PS_BASE_URL_) . __PS_BASE_URI__ . '/modules/' . $this->name . '/views/img/';
$pointDir = (Tools::usingSecureMode() ? _PS_BASE_URL_SSL_ : _PS_BASE_URL_) . __PS_BASE_URI__ . 'modules/' . $this->name . '/getPoint.php';
$INPOSTSHIP_CARRIER_1 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_1'));
$paczkomaty = '[]';
if (!empty($INPOSTSHIP_CARRIER_1)) {
$paczkomaty = json_encode($INPOSTSHIP_CARRIER_1);
}
$INPOSTSHIP_CARRIER_2 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_2'));
$paczkomaty_cod = '[]';
if (!empty($INPOSTSHIP_CARRIER_2)) {
$paczkomaty_cod = json_encode($INPOSTSHIP_CARRIER_2);
}
$INPOSTSHIP_CARRIER_5 = (array)unserialize(Configuration::get('INPOSTSHIP_CARRIER_5'));
$paczkomaty_week = '[]';
if (!empty($INPOSTSHIP_CARRIER_5)) {
$paczkomaty_week = json_encode($INPOSTSHIP_CARRIER_5);
}
$INPOSTSHIP_CARRIER_6 = (array)unserialize(Configuration::get('INPOSTSHIP_CARRIER_6'));
$paczkomaty_week_cod = '[]';
if (!empty($INPOSTSHIP_CARRIER_6)) {
$paczkomaty_week_cod = json_encode($INPOSTSHIP_CARRIER_6);
}
$INPOSTSHIP_CARRIER_3 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_3'));
$courier = '[]';
if (!empty($INPOSTSHIP_CARRIER_3)) {
$courier = json_encode($INPOSTSHIP_CARRIER_3);
}
$INPOSTSHIP_CARRIER_4 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_4'));
$courier_cod = '[]';
if (!empty($INPOSTSHIP_CARRIER_4)) {
$courier_cod = json_encode($INPOSTSHIP_CARRIER_4);
}
/*$carrier_inpost_courier = Carrier::getCarrierByReference(Configuration::get('INPOSTSHIP_CARRIER_3'));
if (empty($carrier_inpost_courier)) {
$carrier_inpost_courier = new stdClass();
$carrier_inpost_courier->id = 0;
}*/
/*$carrier_inpost_courier_cod = Carrier::getCarrierByReference(Configuration::get('INPOSTSHIP_CARRIER_4'));
if (empty($carrier_inpost_courier_cod)) {
$carrier_inpost_courier_cod = new stdClass();
$carrier_inpost_courier_cod->id = 0;
}*/
$baseDirShop = (Tools::usingSecureMode() ? _PS_BASE_URL_SSL_ : _PS_BASE_URL_) . __PS_BASE_URI__;
$selectedPoint = InpostPack::getPointByCart((int)$this->context->cart->id);
$selectedPointInfo = InpostPoint::getPointInfo($selectedPoint);
$selectedPointInfoText = '';
if (!empty($selectedPointInfo)) {
$selectedPointInfoText = 'Wybrany paczkomat:|| ;;' . $selectedPoint . ', ' . $selectedPointInfo['point_address1'] . ', ' . $selectedPointInfo['point_address2'] . ';; ||' . $selectedPointInfo['point_desc'];
}
$imap = Configuration::get('INPOSTSHIP_MAP_TYPE');
$imgm = Configuration::get('INPOSTSHIP_GOOGLE_MAPS_API');
$showWeek = 0;
if (Configuration::get('INPOSTSHIP_WEEKPACK') == 1) {
$datWeek = date('w');
$startWeek = Configuration::get('INPOSTSHIP_WEEKPACK_START_DAY');
$endWeek = Configuration::get('INPOSTSHIP_WEEKPACK_END_DAY');
$hourWeek = date('H:i');
$startHour = Configuration::get('INPOSTSHIP_WEEKPACK_START_HOUR');
$endHour = Configuration::get('INPOSTSHIP_WEEKPACK_END_HOUR');
if ($datWeek > $startWeek && $datWeek < $endWeek) {
$showWeek = 1;
} else if ($datWeek > $startWeek && $datWeek == $endWeek) {
if ($hourWeek <= $endHour) {
$showWeek = 1;
}
} else if ($datWeek == $startWeek && $datWeek < $endWeek) {
if ($hourWeek >= $startHour) {
$showWeek = 1;
}
} else if ($datWeek == $startWeek && $datWeek == $endWeek) {
if ($hourWeek >= $startHour && $hourWeek <= $endHour) {
$showWeek = 1;
}
}
}
$pType = 0;
$pTypes = Configuration::get('INPOSTSHIP_POINT_TYPE');
$pTypes = explode(',', $pTypes);
foreach ($pTypes as $pT) {
if ($pT == 'pop') {
$pType = 1;
}
}
$this->context->smarty->assign(array(
'points' => InpostPoint::getAllPoints(null, 0),
'cart_id' => $this->context->cart->id,
'marker_1' => urlencode($images_url . 'marker_1.png'),
'marker_2' => urlencode($images_url . 'marker_2.png'),
'paczkomaty' => $paczkomaty,
'paczkomaty_cod' => $paczkomaty_cod,
'paczkomaty_week' => $paczkomaty_week,
'paczkomaty_week_cod' => $paczkomaty_week_cod,
'courier' => $courier,
'courier_cod' => $courier_cod,
'ps17' => self::ps17(),
'pointDir' => $pointDir,
'baseDirShop' => $baseDirShop,
'box_pos' => Configuration::get('INPOSTSHIP_POSITION_BOX'),
'version' => _PS_VERSION_,
'module_dir_img' => $images_url,
'selectedPointInfo' => $selectedPointInfoText,
'testMap' => Configuration::get('INPOSTSHIP_SANDBOX'),
'imap' => $imap,
'imgm' => $imgm,
'weekPrice' => Configuration::get('INPOSTSHIP_WEEKPACK_PRICE'),
'showWeek' => $showWeek,
'isTable' => Configuration::get('INPOSTSHIP_IS_TABLE'),
'checkout' => Configuration::get('INPOSTSHIP_CHECKOUT'),
'map_box' => Configuration::get('INPOSTSHIP_MAP_BOX'),
'map_show' => Configuration::get('INPOSTSHIP_MAP_SHOW'),
'pTypes' => $pType,
'snp' => Configuration::get('INPOSTSHIP_POINT_NEAR_SHOW'),
'cnp' => Configuration::get('INPOSTSHIP_POINT_COUNT'),
'rnp' => Configuration::get('INPOSTSHIP_POINT_RADIUS'),
'imw' => Configuration::get('INPOSTSHIP_MAP_WIDTH'),
'geowidget' => (int)Configuration::get('INPOSTSHIP_GEOWIDGET'),
'geowidget_token' => Configuration::get('INPOSTSHIP_GEOV5_TOKEN'),
'sandbox' => (int)Configuration::get('INPOSTSHIP_SANDBOX'),
));
$output .= $this->context->smarty->fetch($this->local_path . 'views/templates/hook/carrier_list.tpl');
return $output;
}
}
public function hookActionValidateOrder($params)
{
if ($this->isActiveModule()) {
if (Configuration::get('INPOSTSHIP_WEEKPACK') == 1) {
$order = new Order((int)$params['order']->id);
$id_cart = $order->id_cart;
$pack = InpostPack::getInpostShipCart((int)$id_cart);
if ($pack['week'] == 1) {
$carrier = Carrier::getCarrierByReference((int)Configuration::get('INPOSTSHIP_CARRIER_5'));
$weekPrice = Configuration::get('INPOSTSHIP_WEEKPACK_PRICE');
$weekPrice_excl = $weekPrice;
if ($carrier->id_tax_rules_group > 0) {
$rate = Db::getInstance()->getValue('SELECT t.`rate` FROM `tax` t LEFT JOIN `tax_rule` tr ON t.id_tax = tr.id_tax WHERE tr.id_tax_rules_group = ' . (int)$carrier->id_tax_rules_group . ' AND tr.id_country = 14');
$result = 1 + ($rate / 100);
$tax = number_format($result, 2);
$weekPrice_excl = $weekPrice / $tax;
}
$total = $order->total_paid + $weekPrice;
$total_incl = $order->total_paid_tax_incl + $weekPrice;
$total_excl = $order->total_paid_tax_excl + $weekPrice_excl;
$total_ship = $order->total_shipping + $weekPrice;
$total_ship_incl = $order->total_shipping_tax_incl + $weekPrice;
$total_ship_excl = $order->total_shipping_tax_excl + $weekPrice_excl;
$del_opt = str_replace($params['order']->id_carrier, $carrier->id, $params['cart']->delivery_option);
$this->context->cart->id_carrier = (int)$carrier->id;
$this->context->cart->delivery_option = $del_opt;
$params['cart']->id_carrier = (int)$carrier->id;
$params['cart']->delivery_option = $del_opt;
$params['order']->id_carrier = (int)$carrier->id;
$params['order']->total_paid = $total;
$params['order']->total_paid_tax_incl = $total_incl;
$params['order']->total_paid_tax_excl = $total_excl;
$params['order']->total_shipping = $total_ship;
$params['order']->total_shipping_tax_incl = $total_ship_incl;
$params['order']->total_shipping_tax_excl = $total_ship_excl;
Db::getInstance()->update('orders', array(
'id_carrier' => (int)$carrier->id,
'total_paid' => $total,
'total_paid_tax_incl' => $total_incl,
'total_paid_tax_excl' => $total_excl,
'total_shipping' => $total_ship,
'total_shipping_tax_incl' => $total_ship_incl,
'total_shipping_tax_excl' => $total_ship_excl
), 'id_order = ' . (int)$params['order']->id);
Db::getInstance()->update('order_carrier', array(
'id_carrier' => (int)$carrier->id,
'shipping_cost_tax_excl' => $total_ship_excl,
'shipping_cost_tax_incl' => $total_ship_incl
), 'id_order = ' . (int)$params['order']->id);
Db::getInstance()->update('cart', array(
'id_carrier' => (int)$carrier->id,
'delivery_option' => $del_opt
), 'id_cart = ' . (int)$order->id_cart);
$this->context->cookie->id_cart = $order->id_cart;
$this->context->cart = new Cart((int)$order->id_cart);
}
}
if (Configuration::get('INPOSTSHIP_SEND_POINT_CUSTOMER') == 1 || Configuration::get('INPOSTSHIP_SEND_POINT_ADMIN') == 1) {
$module = Module::getInstanceByName($this->name);
$subject = $this->l('Order INPOST delivery point');
InpostPack::sendPointEmail((int)$params['order']->id, $subject, $module);
}
}
}
public function hookActionObjectOrderAddAfter($params)
{
if ($this->isActiveModule()) {
if (Configuration::get('INPOSTSHIP_WEEKPACK') == 1) {
$order = new Order((int)$params['order']->id);
$id_cart = $order->id_cart;
$pack = InpostPack::getInpostShipCart((int)$id_cart);
if ($pack['week'] == 1) {
$carrier = Carrier::getCarrierByReference((int)Configuration::get('INPOSTSHIP_CARRIER_5'));
Db::getInstance()->update('orders', array(
'id_carrier' => (int)$carrier->id
), 'id_order = ' . (int)$params['order']->id);
$this->context->cookie->id_cart = $order->id_cart;
$this->context->cart = new Cart((int)$order->id_cart);
}
}
}
}
private function moduleInfo()
{
$ssl = 'http://';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
$ssl = 'https://';
}
$moduleImg = $ssl.$this->context->shop->domain.$this->context->shop->physical_uri.'modules/inpostship/assets/img/';
$this->context->smarty->assign(array(
'moduleImg' => $moduleImg,
'moduleName' => $this->name,
'moduleVersion' => $this->version,
'moduleDisplayName' => $this->displayName
));
}
public function getContent()
{
$showLicence = (isset($_GET['showLicence']) ? 1 : null);
$output = '';
if (!$this->isActiveModule()) {
$this->postProcess();
$shop = new Shop((int)$this->context->shop->id);
$this->context->smarty->assign(array(
'moduleDomain' => $shop->getBaseURL(),
'modConf' => 1,
'licenceCode' => Configuration::get('INPOSTSHIP_LICENCE'),
'licenceCodeGen' => Configuration::get('INPOSTSHIP_LICENCE_GEN'),
'licGenData' => Configuration::get('INPOSTSHIP_LICENCE_GEN_DATA'),
'showLicence' => $showLicence,
));
$output .= $this->context->smarty->fetch($this->local_path . 'views/templates/admin/nolic.tpl');
} else {
$this->postProcess();
$this->moduleInfo();
$this->context->smarty->assign(array(
'isic1' => Configuration::get('INPOSTSHIP_INSTALL_CARRIER_1'),
'isic2' => Configuration::get('INPOSTSHIP_INSTALL_CARRIER_2'),
'isic3' => Configuration::get('INPOSTSHIP_INSTALL_CARRIER_3'),
'isic4' => Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4'),
'modConf' => 0,
'licenceCode' => Configuration::get('INPOSTSHIP_LICENCE'),
'licenceCodeGen' => Configuration::get('INPOSTSHIP_LICENCE_GEN'),
'licGenData' => Configuration::get('INPOSTSHIP_LICENCE_GEN_DATA'),
));
if (version_compare(_PS_VERSION_, '1.6', '<')) {
$output .= $this->context->smarty->fetch($this->local_path . 'views/templates/admin/module15.tpl');
} else {
$output .= $this->context->smarty->fetch($this->local_path . 'views/templates/admin/module.tpl');
}
}
return $output;
}
private function postProcess()
{
if (Tools::getIsset('submitSaveLicenceCode')) {
Configuration::updateValue('INPOSTSHIP_LICENCE', Tools::getValue('INPOSTSHIP_LICENCE'));
}
if (Tools::getIsset('submitSaveSettings')) {
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_1', 0);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_2', 0);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_3', 0);
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_4', 0);
$c1install = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_1');
$c2install = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_2');
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_1', (int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIER_1', 0));
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_2', (int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIER_2', 0));
if ((int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIER_1') == 1) {
if ($c1install == 0 && (int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIERS') == 1) {
InpostSettings::createCarrier('INPOSTSHIP_CARRIER_1', 'InPost Paczkomaty 24');
}
}
if ((int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIER_2') == 1) {
if ($c2install == 0 && (int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIERS') == 1) {
InpostSettings::createCarrier('INPOSTSHIP_CARRIER_2', 'InPost Paczkomaty 24 - za pobraniem');
}
}
$c3install = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_3');
$c4install = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4');
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_3', (int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIER_3'));
Configuration::updateValue('INPOSTSHIP_INSTALL_CARRIER_4', (int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIER_4', 0));
if ((int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIER_3') == 1) {
if ($c3install == 0 && (int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIERS') == 1) {
InpostSettings::createCarrier('INPOSTSHIP_CARRIER_3', 'InPost Kurier');
}
}
if ((int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIER_4') == 1) {
if ($c4install == 0 && (int)Tools::getValue('INPOSTSHIP_INSTALL_CARRIERS') == 1) {
InpostSettings::createCarrier('INPOSTSHIP_CARRIER_4', 'InPost Kurier - za pobraniem');
}
}
}
}
public function getOrderShippingCost($shipping_cost)
{
return $shipping_cost;
}
private static function ps17()
{
return Tools::version_compare(_PS_VERSION_, '1.7.0.0', '>=');
}
private static function ps15()
{
return Tools::version_compare(_PS_VERSION_, '1.6.0.0', '<=');
}
private static function ps8()
{
return Tools::version_compare(_PS_VERSION_, '8.0.0', '>=');
}
public function ajaxGetPoint()
{
$req = '';
$points_item = array();
$points_item_near = array();
$points = array();
$id_courier = (int)$_REQUEST['idCourier'];
$cod = (int)$_REQUEST['cod'];
$return = array();
if ($id_courier > 0) {
$carrier = new Carrier((int)$id_courier, (int)$this->context->cookie->id_lang);
if ((int)$carrier->id == Configuration::get('INPOSTSHIP_CARRIER_PACZKOMATY_COD') && Configuration::get('INPOSTSHIP_INSTALL_CARRIER_2') == 1) {
$cod = 0;
}
}
$id_address = (int)$_REQUEST['idAddress'];
$address = new Address((int)$id_address);
$postcode = trim($address->postcode);//str_replace('-', '', trim($address->postcode)) ;
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'));
$nearcount = Configuration::get('INPOSTSHIP_NEAR');
$pointsNear = (array)$inpostapi->getPointNearAddress($postcode, $nearcount);
$nearPointsRemove = array();
if (!empty($pointsNear)) {
foreach ($pointsNear as $key => $p) {
$p = (array)$p;
$points_item_near[$key]['id'] = $p['name'] . ', ' . $p['address']->line1 . ', ' . $p['address']->line2;
$points_item_near[$key]['text'] = $p['name'] . ', ' . $p['address']->line1 . ', ' . $p['address']->line2;
$nearPointsRemove[] = $p['name'];
}
}
if ($nearcount > 0) {
$return['items'][0]['text'] = 'Paczkomaty w pobliżu Twojego adresu';
$return['items'][0]['children'] = $points_item_near;
if (isset($_REQUEST['searchTerm'])) {
$req = $_REQUEST['searchTerm'];
$points = InpostPoint::getAllPoints($req, $cod);
} else {
$points = InpostPoint::getAllPoints(null, $cod);
}
if (!empty($points)) {
foreach ($points as $key => $p) {
// if (!in_array($p['point_code'], $nearPointsRemove)) {
$points_item[$key]['id'] = $p['point_code'] . ', ' . $p['point_address1'] . ', ' . $p['point_address2'];
$points_item[$key]['text'] = $p['point_code'] . ', ' . $p['point_address1'] . ', ' . $p['point_address2'];
}
}
$return['items'][1]['text'] = 'Pozostałe paczkomaty';
$return['items'][1]['children'] = $points_item;
} else {
if (isset($_REQUEST['searchTerm'])) {
$req = $_REQUEST['searchTerm'];
$points = InpostPoint::getAllPoints($req, $cod);
} else {
$points = InpostPoint::getAllPoints(null, $cod);
}
if (!empty($points)) {
foreach ($points as $key => $p) {
$points_item[$key]['id'] = $p['point_code'] . ', ' . $p['point_address1'] . ', ' . $p['point_address2'];
$points_item[$key]['text'] = $p['point_code'] . ', ' . $p['point_address1'] . ', ' . $p['point_address2'];
}
}
$return['items'][0]['text'] = 'Paczkomaty do wyboru';
$return['items'][0]['children'] = $points_item;
}
return $return;
}
public function setAjaxCartPoint($id_cart, $point, $courier, $week)
{
$issetCart = InpostPack::issetCart((int)$id_cart);
if (empty($issetCart)) {
$return = InpostPack::setInpostShip((int)$id_cart, $point, (int)$courier, (int)$week, (int)$this->context->cookie->id_lang);
} else {
$return = InpostPack::updateInpostShip((int)$id_cart, $point, (int)$courier, (int)$week, (int)$this->context->cookie->id_lang);
}
if ($return) {
return InpostPoint::getPointInfo($point);
}
return $return;
}
public function updatePoints()
{
set_time_limit(0);
@ini_set('max_execution_time', '0');
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'));
$points = $inpostapi->getPoints();
$count_points = count($points);
$current_count_points = count(Db::getInstance()->executeS('SELECT * FROM '._DB_PREFIX_.'inpostship_points ORDER BY id_point ASC'));
if ($current_count_points != $count_points) {
Db::getInstance()->execute('TRUNCATE TABLE '._DB_PREFIX_.'inpostship_points');
foreach ($points as $p) {
$p = (array)$p;
if (!InpostPoint::checkPoint($p['name'])) {
$location = (array)$p['location'];
$address = (array)$p['address'];
$type = implode(',', (array)$p['type']);
$cod_pay = (array)$p['payment_type'];
$cod = 1;
if (array_key_exists(0, $cod_pay)) {
$cod = 0;
} else {
foreach ($cod_pay as $cp) {
if (trim($cp) == 'Brak obsługi płatności') {
$cod = 0;
}
}
}
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'inpostship_points`(`point_code`, `point_address1`, `point_address2`, `point_lat`, `point_lng`, `point_desc`, `point_payment`, `point_cod`, `point_type`)
VALUES("' . $p['name'] . '", "' . addslashes($address['line1']) . '", "' . $address['line2'] . '", "' . $location['latitude'] . '", "' . $location['longitude'] . '", "' . addslashes($p['location_description']) . '", "' . $p['payment_available'] . '", "'.(int)$cod.'", "'.$type.'")');
}
}
}
}
public function setCourier($id_cart, $courier)
{
$return = true;
$ship = InpostPack::issetCart((int)$id_cart);
if (empty($ship)) {
$return = (bool)InpostPack::setInpostShipCourier((int)$id_cart, (int)$courier, (int)$this->context->cookie->id_lang);
} else {
$return = (bool)InpostPack::updateInpostShipCourier((int)$id_cart, (int)$courier, (int)$this->context->cookie->id_lang);
}
return $return;
}
private function InpostProcess()
{
if (Tools::getIsset('newReceiveMachine')) {
$new = Tools::getValue('newReceiveMachine');
$id_order = Tools::getValue('id_order');
$order = new Order((int)$id_order);
$id_cart = (int)$order->id_cart;
InpostPack::changeReceiverMachine((int)$id_cart, $new, $order);
Tools::redirectAdmin($_SERVER['HTTP_REFERER']);
}
if (Tools::isSubmit('submitCheckPrice')) {
$inpostship = Tools::getValue('inpostship');
$receiver = array();
$sender = array();
$custom_attrib = array();
$additional_services = array();
$x13allegro = Configuration::get('INPOSTSHIP_INTEGRATION_X13ALLEGRO');
$order = new Order((int)$inpostship['id_order']);
$address_delivery = new Address($order->id_address_delivery);
$pack = InpostPack::getInpostShipCart((int)$inpostship['id_cart']);
$parcels = array();
$pcount = 0;
$owner = 0;
if (isset($inpostship['sizes']) && $inpostship['sizes'] == 1) {
$owner = 1;
}
if ($owner == 0) {
$parcels[$pcount]['id'] = $inpostship['packtype'] . ' package';
$parcels[$pcount]['template'] = $inpostship['packtype'];
$parcels[$pcount]['weight'] = $inpostship['packweight'] == 0 ? 2 : $inpostship['packweight'];
$parcels[$pcount]['info'] = $inpostship['packtype'];
$parcels[$pcount]["tracking_number"] = null;
$parcels[$pcount]["is_non_standard"] = false;
} else {
$parcels[$pcount]['id'] = 'other package';
$parcels[$pcount]['template'] = 'other';
$parcels[$pcount]['weight'] = $inpostship['packweight'] == 0 ? 2 : $inpostship['packweight'];
$parcels[$pcount]['info'] = 'other';
$parcels[$pcount]["tracking_number"] = null;
$parcels[$pcount]["is_non_standard"] = false;
$parcels[$pcount]['length'] = $inpostship['size1'];
$parcels[$pcount]['width'] = $inpostship['size2'];
$parcels[$pcount]['height'] = $inpostship['size3'];
}
$custom_attrib['target_point'] = $pack['receiver_machine'];
$custom_attrib['sending_method'] = $inpostship['sendtype'];
$service = 'inpost_locker_standard';
$id_carrier = (int)$pack['id_carrier'];
if ($id_carrier != $order->id_carrier) {
$id_carrier = (int)$order->id_carrier;
}
$carrier = new Carrier((int)$id_carrier);
if (empty($inpostship['service']) || $inpostship['service'] == 0) {
if ((Configuration::get('INPOSTSHIP_INSTALL_CARRIER_3') == 1 || Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4') == 1) && (Configuration::get('INPOSTSHIP_CARRIER_3') == $carrier->id_reference || Configuration::get('INPOSTSHIP_CARRIER_4') == $carrier->id_reference)) {
$service = 'inpost_courier_standard';
}
if ($service == 'inpost_locker_standard') {
if ($custom_attrib['target_point'] == Configuration::get('INPOSTSHIP_SENDER_MACHINE', 0) || $custom_attrib['target_point'] == Configuration::get('INPOSTSHIP_SENDER_MACHINE_POP', 0)) {
if ($inpostship['sendtype'] == 'parcel_locker') {
$service = 'inpost_locker_pass_thru';
}
}
}
} else {
switch ((int)$inpostship['service']) {
case 1:case 5:case 6:$service = 'inpost_locker_standard';break;
case 2:$service = 'inpost_courier_standard';break;
}
}
if ($inpostship['cod'] == 1) {
$cod = 1;
$cod_value = $inpostship['cod_value'];
}
if ((int)$carrier->id_reference == Configuration::get('INPOSTSHIP_CARRIER_2') && Configuration::get('INPOSTSHIP_INSTALL_CARRIER_2') == 1) {
$cod = 1;
$cod_value = $inpostship['cod_value'];
}
if ((int)$carrier->id_reference == Configuration::get('INPOSTSHIP_CARRIER_4') && Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4') == 1) {
$cod = 1;
$cod_value = $inpostship['cod_value'];
}
if ((int)Configuration::get('INPOSTSHIP_WEEKPACK') == 1) {
if ((int)$carrier->id_reference > 0 && (int)$carrier->id_reference == (int)Configuration::get('INPOSTSHIP_CARRIER_6')) {
$cod = 1;
$cod_value = $inpostship['cod_value'];
}
}
if ($x13allegro && ($inpostship['service'] == 3 || $inpostship['service'] == 4)) {
if ($inpostship['service'] == 3 && $inpostship['paczk'] == 1) {
$service = 'inpost_locker_allegro';
} elseif ($inpostship['service'] == 3 && $inpostship['paczk'] == 0) {
$service = 'inpost_courier_allegro';
} elseif ($inpostship['service'] == 4) {
$service = 'inpost_letter_allegro';
}
$custom_attrib['allegro_transaction_id'] = $inpostship['x13transactionId'];
$custom_attrib['allegro_user_id'] = $inpostship['x13allegroUserId'];
$x13version = '6.2.1';
$rec_mach = '';
$x13allegroModule = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'module` WHERE `name` = "x13allegro"');
if ($x13allegro) {
if ($x13allegroModule['version'] < $x13version) {
$x13orderInfo = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'xallegro_form` WHERE `id_order` = '.(int)$order->id);
if (!empty($x13orderInfo)) {
$x13oinfo = unserialize(base64_decode($x13orderInfo['content']));
$rec_mach = $x13oinfo->postBuyFormGdAddress->postBuyFormAdrId;
}
} else {
$x13orderInfo = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'xallegro_order` WHERE `id_order` = '.(int)$order->id);
if (!empty($x13orderInfo)) {
$x13oinfo = json_decode($x13orderInfo['checkout_form_content']);
$rec_mach = $x13oinfo->delivery->pickupPoint->id;
$address = $x13oinfo->delivery->address;
$receiver['first_name'] = Tools::stripslashes($address->firstName);
$receiver['last_name'] = $address->lastName;
$postcode = null;//$address->zipCode;
$street = str_replace('ul. ', '', $address->street);
$street = str_replace(',', '', $street);
$match = InpostTools::split_street($street);
if (!InpostValidate::isPolandPostCode($postcode)) {
$postcode = InpostTools::setPolandPostCode($postcode);
}
$city = $address->city;
}
}
}
if (!empty($rec_mach)) {
$custom_attrib['target_point'] = $rec_mach;
}
} else {
$receiver['first_name'] = Tools::stripslashes($address_delivery->firstname);
$receiver['last_name'] = $address_delivery->lastname;
$postcode = $address_delivery->postcode;
$match = InpostTools::split_street(trim($address_delivery->address1.' '.$address_delivery->address2));
if (!InpostValidate::isPolandPostCode($postcode)) {
$postcode = InpostTools::setPolandPostCode($postcode);
}
$city = $address_delivery->city;
}
if (empty($postcode)) {
$receiver['first_name'] = Tools::stripslashes($address_delivery->firstname);
$receiver['last_name'] = $address_delivery->lastname;
$postcode = $address_delivery->postcode;
$match = InpostTools::split_street(trim($address_delivery->address1.' '.$address_delivery->address2));
if (!InpostValidate::isPolandPostCode($postcode)) {
$postcode = InpostTools::setPolandPostCode($postcode);
}
$city = $address_delivery->city;
}
$receiver['email'] = $inpostship['receiver_email'];
$receiver['phone'] = $inpostship['receiver_mobile'];
$receiver['address'] = array(
'street' => $match['street'],
'building_number' => $match['numberAll'],
'city' => $city,
'post_code' => $postcode,
'country_code' => 'PL'
);
$sender['first_name'] = Configuration::get('INPOSTSHIP_SENDER_FIRSTNAME');
$sender['last_name'] = Configuration::get('INPOSTSHIP_SENDER_LASTNAME');
$sender['company_name'] = Configuration::get('INPOSTSHIP_SENDER_COMPANY_NAME');
$sender['phone'] = Configuration::get('INPOSTSHIP_SENDER_PHONE');
$sender['email'] = Configuration::get('INPOSTSHIP_SENDER_EMAIL');
$sender['address'] = array(
'street' => Configuration::get('INPOSTSHIP_SENDER_STREET'),
'building_number' => Configuration::get('INPOSTSHIP_SENDER_BUILDING_NR'),
'city' => Configuration::get('INPOSTSHIP_SENDER_CITY'),
'post_code' => Configuration::get('INPOSTSHIP_SENDER_POSTCODE'),
'country_code' => 'PL'
);
if ($custom_attrib['sending_method'] == 'parcel_locker') {
$custom_attrib['dropoff_point'] = Configuration::get('INPOSTSHIP_SENDER_MACHINE');
} else if ($custom_attrib['sending_method'] == 'pop') {
$custom_attrib['dropoff_point'] = Configuration::get('INPOSTSHIP_SENDER_MACHINE_POP');
}
$insurance = array();
if ($inpostship['ins']) {
$insurance['amount'] = $inpostship['ins'];
$insurance['currency'] = 'PLN';
}
$cods = array();
if ($cod == 1) {
$cods['amount'] = $inpostship['cod_value'];
$cods['currency'] = 'PLN';
}
$additional_services = array();
if (isset($inpostship['email'])) {
$additional_services[] = 'email';
}
if (isset($inpostship['sms'])) {
$additional_services[] = 'sms';
}
$reference = null;
if (!empty($inpostship['reference_number'])) {
$reference = $inpostship['reference_number'];
}
$weekPack = false;
if ($inpostship['showWeek'] == 1) {
if ($inpostship['weekPack'] == 1) {
$weekPack = 1;
}
}
if ($inpostship['service'] == 5 || $inpostship['service'] == 6) {
$weekPack = 1;
}
$sxerror = new InpostError();
$org_id = (int)Configuration::get('INPOSTSHIP_API_ORGANIZATION');
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$calculate = $inpostapi->shipmentCalculate((int)$org_id, $receiver, $sender, $parcels, $custom_attrib, $cods, $insurance, $additional_services, $reference, $service, $weekPack);
if (!empty($calculate['error'])) {
if ($this->debug == 1) {
echo "<pre>";print_r($calculate);echo "</pre>";
}
$errorsInpost[] = $sxerror->displayErrors($calculate, 2);
$this->context->smarty->assign(array(
'errors' => $sxerror->displayErrors($calculate, 2),
'error' => 'Wystapił błąd przy kalkulacji ceny za przesyłkę'
));
} else {
$result = (array)$calculate['result'][0];
if (!isset($result['key'])) {
if (isset($result['response_description'])) {
$error = $result['response_description'];
$this->context->smarty->assign(array(
'error' => $error
));
} else {
$this->price = $result['calculated_charge_amount'];
$this->context->smarty->assign(array(
'conf' => 'Koszt przesyłki to <b>' . $this->price . ' PLN</b>',
'price' => $this->price
));
}
} else {
$this->context->smarty->assign(array(
'error' => $result['message']
));
}
}
} // end tools calculate
// create package
if (Tools::isSubmit('submitPackage')) {
$inpostship = Tools::getValue('inpostship');
$errorsInpost = array();
$cod = 0;
$cod_value = 0;
$pack = InpostPack::getInpostShipCart((int)$inpostship['id_cart']);
$order = new Order((int)$inpostship['id_order']);
$id_carrier = (int)$pack['id_carrier'];
if ($id_carrier != $order->id_carrier) {
$id_carrier = (int)$order->id_carrier;
}
$carrier = new Carrier((int)$id_carrier, (int)$this->context->cookie->id_lang);
$receiver = array();
$sender = array();
$custom_attrib = array();
$additional_services = array();
$x13allegro = Configuration::get('INPOSTSHIP_INTEGRATION_X13ALLEGRO');
if ($inpostship['cod'] == 1) {
$cod = 1;
$cod_value = $inpostship['cod_value'];
}
if ((int)$carrier->id_reference == Configuration::get('INPOSTSHIP_CARRIER_2') && Configuration::get('INPOSTSHIP_INSTALL_CARRIER_2') == 1) {
$cod = 1;
$cod_value = $inpostship['cod_value'];
}
if ((int)$carrier->id_reference == Configuration::get('INPOSTSHIP_CARRIER_4') && Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4') == 1) {
$cod = 1;
$cod_value = $inpostship['cod_value'];
}
if ((int)Configuration::get('INPOSTSHIP_WEEKPACK') == 1) {
if ((int)$carrier->id_reference > 0 && (int)$carrier->id_reference == (int)Configuration::get('INPOSTSHIP_CARRIER_6')) {
$cod = 1;
$cod_value = $inpostship['cod_value'];
}
}
$packtype = $inpostship['packtype'];
$sizes = array();
if (isset($inpostship['sizes']) && $inpostship['sizes'] == 1) {
$packtype = 'other';
$sizes[] = $inpostship['size1'];
$sizes[] = $inpostship['size2'];
$sizes[] = $inpostship['size3'];
}
if (InpostPack::setInpostPackage((int)$inpostship['id_order'], $inpostship['receiver_email'], $inpostship['receiver_mobile'], $packtype, $inpostship['sendtype'], $pack['receiver_machine'], $inpostship['ins'], $cod_value, $sizes)) {
$id_pack = Db::getInstance()->Insert_ID();
$address_delivery = new Address($order->id_address_delivery);
$service = 'inpost_locker_standard';
$carrier = new Carrier((int)$pack['id_carrier']);
$custom_attrib['target_point'] = $pack['receiver_machine'];
$custom_attrib['sending_method'] = $inpostship['sendtype'];
if (empty($inpostship['service']) || $inpostship['service'] == 0) {
if ((Configuration::get('INPOSTSHIP_INSTALL_CARRIER_3') == 1 || Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4') == 1) && (Configuration::get('INPOSTSHIP_CARRIER_3') == $carrier->id_reference || Configuration::get('INPOSTSHIP_CARRIER_4') == $carrier->id_reference)) {
$service = 'inpost_courier_standard';
}
if ($service == 'inpost_locker_standard') {
if ($custom_attrib['target_point'] == Configuration::get('INPOSTSHIP_SENDER_MACHINE', 0) || $custom_attrib['target_point'] == Configuration::get('INPOSTSHIP_SENDER_MACHINE_POP', 0)) {
if ($inpostship['sendtype'] == 'parcel_locker') {
$service = 'inpost_locker_pass_thru';
}
}
}
} else {
switch ((int)$inpostship['service']) {
case 1:case 5:case 6:$service = 'inpost_locker_standard';break;
case 2:$service = 'inpost_courier_standard';break;
}
}
$reference = null;
if (!empty($inpostship['reference_number'])) {
$reference = $inpostship['reference_number'];
}
$allegroNick = (int)Configuration::get('INPOSTSHIP_X13ALLEGRO_NICK');
if ($x13allegro && ($inpostship['service'] == 3 || $inpostship['service'] == 4)) {
if ($inpostship['service'] == 3 && $inpostship['paczk'] == 1) {
$service = 'inpost_locker_allegro';
} elseif ($inpostship['service'] == 3 && $inpostship['paczk'] == 0) {
$service = 'inpost_courier_allegro';
} elseif ($inpostship['service'] == 4) {
$service = 'inpost_letter_allegro';
}
$custom_attrib['allegro_transaction_id'] = $inpostship['x13transactionId'];
$custom_attrib['allegro_user_id'] = $inpostship['x13allegroUserId'];
$x13version = '6.2.1';
$rec_mach = '';
$x13allegroModule = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'module` WHERE `name` = "x13allegro"');
if ($x13allegro) {
$login = '';
if ($x13allegroModule['version'] < $x13version) {
$x13orderInfo = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'xallegro_form` WHERE `id_order` = '.(int)$order->id);
if (!empty($x13orderInfo)) {
$x13oinfo = unserialize(base64_decode($x13orderInfo['content']));
$rec_mach = $x13oinfo->postBuyFormGdAddress->postBuyFormAdrId;
}
} else {
$x13orderInfo = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'xallegro_order` WHERE `id_order` = '.(int)$order->id);
if (!empty($x13orderInfo)) {
$x13oinfo = json_decode($x13orderInfo['checkout_form_content']);
$rec_mach = $x13oinfo->delivery->pickupPoint->id;
$address = $x13oinfo->delivery->address;
$receiver['first_name'] = Tools::stripslashes($address->firstName);
$receiver['last_name'] = $address->lastName;
$postcode = null;//$address->zipCode;
$street = str_replace('ul. ', '', $address->street);
$street = str_replace(',', '', $street);
$match = InpostTools::split_street($street);
if (!InpostValidate::isPolandPostCode($postcode)) {
$postcode = InpostTools::setPolandPostCode($postcode);
}
$city = $address->city;
$login = ' '.$x13oinfo->buyer->login;
}
}
if ($allegroNick == 1) {
$reference.= $login;
}
}
if (!empty($rec_mach)) {
$custom_attrib['target_point'] = $rec_mach;
}
} else {
$receiver['first_name'] = Tools::stripslashes($address_delivery->firstname);
$receiver['last_name'] = $address_delivery->lastname;
$postcode = $address_delivery->postcode;
$match = InpostTools::split_street(trim($address_delivery->address1.' '.$address_delivery->address2));
if (!InpostValidate::isPolandPostCode($postcode)) {
$postcode = InpostTools::setPolandPostCode($postcode);
}
$city = $address_delivery->city;
}
if (empty($postcode)) {
$receiver['first_name'] = Tools::stripslashes($address_delivery->firstname);
$receiver['last_name'] = $address_delivery->lastname;
$postcode = $address_delivery->postcode;
$match = InpostTools::split_street(trim($address_delivery->address1.' '.$address_delivery->address2));
if (!InpostValidate::isPolandPostCode($postcode)) {
$postcode = InpostTools::setPolandPostCode($postcode);
}
$city = $address_delivery->city;
}
$receiver['email'] = $inpostship['receiver_email'];
$receiver['phone'] = InpostValidate::reValidPhone($inpostship['receiver_mobile']);
$receiver['address'] = array(
'street' => $match['street'],
'building_number' => $match['numberAll'],
'city' => $city,
'post_code' => $postcode,
'country_code' => 'PL'
);
$sender['first_name'] = Configuration::get('INPOSTSHIP_SENDER_FIRSTNAME');
$sender['last_name'] = Configuration::get('INPOSTSHIP_SENDER_LASTNAME');
$sender['company_name'] = Configuration::get('INPOSTSHIP_SENDER_COMPANY_NAME');
$sender['phone'] = Configuration::get('INPOSTSHIP_SENDER_PHONE');
$sender['email'] = Configuration::get('INPOSTSHIP_SENDER_EMAIL');
$sender['address'] = array(
'street' => Configuration::get('INPOSTSHIP_SENDER_STREET'),
'building_number' => Configuration::get('INPOSTSHIP_SENDER_BUILDING_NR'),
'city' => Configuration::get('INPOSTSHIP_SENDER_CITY'),
'post_code' => Configuration::get('INPOSTSHIP_SENDER_POSTCODE'),
'country_code' => 'PL'
);
// $custom_attrib['target_point'] = $pack['receiver_machine'];
// $custom_attrib['sending_method'] = $inpostship['sendtype'];
if ($custom_attrib['sending_method'] == 'parcel_locker') {
$custom_attrib['dropoff_point'] = Configuration::get('INPOSTSHIP_SENDER_MACHINE');
} else if ($custom_attrib['sending_method'] == 'pop') {
$custom_attrib['dropoff_point'] = Configuration::get('INPOSTSHIP_SENDER_MACHINE_POP');
}
$insurance = array();
if ($inpostship['ins']) {
$insurance['amount'] = $inpostship['ins'];
$insurance['currency'] = 'PLN';
}
$cods = array();
if ($cod == 1) {
$cods['amount'] = $inpostship['cod_value'];
$cods['currency'] = 'PLN';
}
$additional_services = array();
if (isset($inpostship['email'])) {
$additional_services[] = 'email';
}
if (isset($inpostship['sms'])) {
$additional_services[] = 'sms';
}
$parcels = array();
$pcount = 0;
$owner = 0;
if (isset($inpostship['sizes']) && $inpostship['sizes'] == 1) {
$owner = 1;
}
if ($owner == 0) {
$parcels[$pcount]['id'] = $inpostship['packtype'] . ' package';
$parcels[$pcount]['template'] = $inpostship['packtype'];
$parcels[$pcount]['weight'] = $inpostship['packweight'] == 0 ? 2 : $inpostship['packweight'];
$parcels[$pcount]['info'] = $inpostship['packtype'];
$parcels[$pcount]["tracking_number"] = null;
$parcels[$pcount]["is_non_standard"] = false;
} else {
$parcels[$pcount]['id'] = 'other package';
$parcels[$pcount]['template'] = 'other';
$parcels[$pcount]['weight'] = $inpostship['packweight'] == 0 ? 2 : $inpostship['packweight'];
$parcels[$pcount]['info'] = 'other';
$parcels[$pcount]["tracking_number"] = null;
$parcels[$pcount]["is_non_standard"] = false;
$parcels[$pcount]['length'] = $inpostship['size1'];
$parcels[$pcount]['width'] = $inpostship['size2'];
$parcels[$pcount]['height'] = $inpostship['size3'];
}
$weekPack = false;
if ($inpostship['showWeek'] == 1) {
if ($inpostship['weekPack'] == 1) {
$weekPack = 1;
}
}
if ($inpostship['service'] == 5 || $inpostship['service'] == 6) {
$weekPack = 1;
}
$sxerror = new InpostError();
$org_id = (int)Configuration::get('INPOSTSHIP_API_ORGANIZATION');
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$packPrepare = $inpostapi->shipment((int)$org_id, $receiver, $sender, $parcels, $custom_attrib, $cods, $insurance, $additional_services, $reference, $service, false, $weekPack);
// print_r($packPrepare);exit();
if (!empty($packPrepare['error'])) {
if ($this->debug == 1) {
echo "<pre>";print_r($packPrepare);echo "</pre>";
}
$errorsInpost[] = $sxerror->displayErrors($packPrepare);
$this->context->smarty->assign(array(
'errors' => $sxerror->displayErrors($packPrepare)
));
} else {
InpostPack::updateInpostShipped((int)$id_pack, $packPrepare['result']->status, $packPrepare['result']->id);
$id_packcode = $packPrepare['result']->id;
sleep(5);
$offer = $inpostapi->getShipments($id_packcode, (int)$org_id);
if (!empty($offer['error'])) {
if ($this->debug == 1) {
echo "<pre>";print_r($offer);echo "</pre>";
}
$errorsInpost[] = $sxerror->displayErrors($offer);
$this->context->smarty->assign(array(
'errors' => $sxerror->displayErrors($offer)
));
} else {
$oferta = $offer['result']->selected_offer;
if (!empty($oferta)) {
InpostPack::updateInpostOffer((int)$id_pack, $offer['result']->status, $oferta->id);
}
$status = $offer['result']->status;
$tracking_number = $offer['result']->tracking_number;
if (!empty($tracking_number)) {
$module = Module::getInstanceByName($this->name);
$subject = $this->l('Order tracking e-mail');
InpostPack::updateInpostBuy((int)$id_pack, (int)$inpostship['id_order'], (int)$this->context->employee->id, $status, $tracking_number, $subject, $module);
if ($x13allegro) {
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'xallegro_carrier_package_info`(`id_order`, `id_operator`, `tracking_number`, `send`) '.
'VALUES('.(int)$order->id.', '.(int)$this->context->employee->id.', "'.$tracking_number.'", 1)');
}
InpostPack::updateCreatedCart($order->id_cart);
$_SESSION['inpost']['conf'] = 'Pomyślnie utworzono przesyłkę numer '.$tracking_number;
$this->context->smarty->assign(array(
'conf' => 'Pomyślnie utworzono przesyłkę numer '.$tracking_number
));
Tools::redirect($_SERVER['HTTP_REFERER']);
} else {
InpostPack::updateInpostBuyInfo((int)$id_pack);
$this->context->smarty->assign(array(
'error' => 'Wystąpił problem z utworzeniem przesyłki'
));
}
}
}
} // end InpostPack::setInpostPackage
if (count($errorsInpost) > 0) {
$this->context->smarty->assign(array(
'error' => 'Wystąpiły problemy w utworzeniu przesyłki. Przejdź do sekcji <a href="#inpostsend">WYSYŁAJ Z INPOST</a> aby poznać szczegóły. '
));
}
} // end submit submitPackage
/*if (Tools::isSubmit('submitPrintLabel')) {
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$id_pack = (int)Tools::getValue('submitPrintLabel');
$pack = InpostPack::getInpostShipByIdPack((int)$id_pack);
$format = Configuration::get('INPOSTSHIP_PRINT_FORMAT');
$inpost = $inpostapi->getLabel($pack['packcode'], $format, Configuration::get('INPOSTSHIP_PRINT_TYPE'));
$file_name = $pack['reference_number'];
ob_end_clean();
ob_start();
if ($format == 'PDF') {
$file_type = 'pdf';
header('Content-Type: application/pdf');
} else {
$file_type = 'epl';
header('Content-Type: application/octet-stream');
}
header("Content-Disposition: attachment; filename=\"$file_name.$file_type\"");
exit($inpost);
} // end to print*/
if (Tools::isSubmit('submitDeletePack')) {
$id_pack = (int)Tools::getValue('submitDeletePack');
if ($id_pack > 0) {
InpostPack::deletePackById((int)$id_pack);
}
} // end delete pack
if (Tools::isSubmit('submitDeleteShipping')) {
$id_pack = (int)Tools::getValue('submitDeleteShipping');
if ($id_pack > 0) {
$pack = InpostPack::getInpostShipByIdPack((int)$id_pack);
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$deletePack = $inpostapi->deleteShipments($pack['packcode']);
if (!empty($deletePack['error'])) {
if ($deletePack['result']->error == 'resource_not_found') {
InpostPack::deletePackById((int)$id_pack);
$this->context->smarty->assign(array(
'conf' => 'Poprawnie usunięto przesyłkę'
));
} else {
$this->context->smarty->assign(array(
'error' => 'Nie można usunąć przesyłki, ponieważ jej status na to nie pozwala',
'errors' => 'Nie można usunąć przesyłki, ponieważ jej status na to nie pozwala',
));
}
} else {
InpostPack::deletePackById((int)$id_pack);
$this->context->smarty->assign(array(
'conf' => 'Poprawnie usunięto przesyłkę'
));
}
}
} // end delete pack
if (Tools::isSubmit('submitOrderCourier')) {
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$id_pack = (int)Tools::getValue('submitOrderCourier');
$pack = InpostPack::getInpostShipByIdPack((int)$id_pack);
$dispatch = $inpostapi->setDispatchOrder($pack['packcode'], (int)Configuration::get('INPOSTSHIP_DISPATCH_POINT'), (int)Configuration::get('INPOSTSHIP_API_ORGANIZATION'));
if (empty($dispatch['error'])) {
$info = (array)$dispatch['result'];
InpostPack::updateDispatchId((int)$id_pack, (int)$info['id']);
} else {
if ($this->debug == 1) {
echo "<pre>";print_r($dispatch);echo "</pre>";
}
$sxerror = new InpostError();
$this->context->smarty->assign(array(
'errors' => $sxerror->displayErrors($dispatch)
));
}
} // end order courier
if (Tools::isSubmit('submitDeleteDispatch')) {
$id_pack = (int)Tools::getValue('submitDeleteDispatch');
$pack = InpostPack::getInpostShipByIdPack((int)$id_pack);
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$inpostapi->deleteDispatch((int)$pack['dispatch_id']);
InpostPack::updateDispatchId((int)$id_pack, 0);
} // end delete dispatchOrder
if (Tools::isSubmit('submitReturnLabel')) {
$id_pack = (int)Tools::getValue('submitReturnLabel');
$pack = InpostPack::getInpostShipByIdPack((int)$id_pack);
$org_id = (int)Configuration::get('INPOSTSHIP_API_ORGANIZATION');
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$inpostapi->getReturnLabels((int)$org_id, (int)$pack['packcode'], 'PDF');
// InpostPack::updateDispatchId((int)$id_pack, 0);
} // end delete dispatchOrder
if (Tools::isSubmit('submitCheckPayment')) {
$id_pack = (int)Tools::getValue('submitCheckPayment');
$pack = InpostPack::getInpostShipByIdPack((int)$id_pack);
$inpostship = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$searchPack = $inpostship->searchPack($pack['packcode'], (int)Configuration::get('INPOSTSHIP_API_ORGANIZATION'));
if (empty($searchPack['error'])) {
$item = (array)$searchPack['result']->items[0];
if (!empty($item)) {
InpostPack::updateInpostShipped((int)$id_pack, $item['status'], $pack['packcode']);
$status = $item['status'];
$tracking_number = $item['tracking_number'];
if (!empty($tracking_number)) {
$module = Module::getInstanceByName($this->name);
$subject = $this->l('Order tracking e-mail');
InpostPack::updateInpostBuy((int)$id_pack, (int)$id_order, (int)$this->context->employee->id, $status, $tracking_number, $subject, $module);
$_SESSION['inpost']['conf'] = 'Pomyślnie utworzono przesyłkę numer '.$tracking_number;
$this->context->smarty->assign(array(
'conf' => 'Pomyślnie utworzono przesyłkę numer '.$tracking_number
));
Tools::redirect($_SERVER['HTTP_REFERER']);
} else {
if ($item['status'] == 'offer_selected') {
}
}
}
} else {
if ($this->debug == 1) {
echo "<pre>";print_r($searchPack);echo "</pre>";die;
}
$sxerror = new InpostError();
$this->context->smarty->assign(array(
'errors' => $sxerror->displayErrors($searchPack)
));
}
} // end submitCheckPayment
}
/**
* @return bool
*/
public function deleteInpostPoint()
{
if (Db::getInstance()->execute('TRUNCATE TABLE `'._DB_PREFIX_.'inpostship_points`')) {
return true;
}
return false;
}
public function addInpostPoint($page, $count)
{
$day = date('Y-m-d-h-i');
$log = 'PAGE: '.$page.' COUNT: '.$count.PHP_EOL;
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'));
$points = $inpostapi->getPointsPerPage($page, $count);
if (!empty($points)) {
$i = 0;
foreach ($points as $p) {
$p = (array)$p;
$log .= 'POINT: '.$p['name'].PHP_EOL;
// if (!InpostPoint::checkPoint($p['name'])) {
$location = (array)$p['location'];
$address = (array)$p['address'];
$type = implode(',', (array)$p['type']);
$cod_pay = (array)$p['payment_type'];
$cod = 1;
if (array_key_exists(0, $cod_pay)) {
$cod = 0;
} else {
foreach ($cod_pay as $cp) {
if (trim($cp) == 'Brak obsługi płatności') {
$cod = 0;
}
}
}
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'inpostship_points`(`point_code`, `point_address1`, `point_address2`, `point_lat`, `point_lng`, `point_desc`, `point_payment`, `point_cod`, `point_type`)
VALUES("' . $p['name'] . '", "' . str_replace('"', "", $address['line1']) . '", "' . $address['line2'] . '", "' . $location['latitude'] . '", "' . $location['longitude'] . '", "' . addslashes($p['location_description']) . '", "' . $p['payment_available'] . '", "'.(int)$cod.'", "'.$type.'")');
$log .= 'ADD: '.$p['name'].PHP_EOL;
$i++;
// }
}
$log .= "-------------------------" . PHP_EOL;
file_put_contents(__DIR__.'/log/loger/log_'.$day.'.txt', $log, FILE_APPEND);
return $i;//count($points);
}
return 0;
}
public function tracking($track)
{
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'));
$trackingInfo = $inpostapi->getTracking($track);
$statues = $inpostapi->getStatuses();
if (!empty($trackingInfo['result']->tracking_details)) {
$first = $trackingInfo['result']->tracking_details[0];
$current['status'] = $this->separateStatus($statues['result']->items, $first->status);
$current['date'] = date('d-m-Y, H:i', strtotime($first->datetime));
$trackingInfo['current'] = $current;
} else {
$trackingInfo['error'] = 'error';
}
return $trackingInfo;
}
public function trackingHistory($track)
{
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'));
$trackingInfo = $inpostapi->getTracking($track);
$statues = $inpostapi->getStatuses();
if (!empty($trackingInfo['result']->tracking_details)) {
foreach ($trackingInfo['result']->tracking_details as &$td) {
$td->statusPL = $this->separateStatus($statues['result']->items, $td->status);
$td->date = date('d-m-Y, H:i', strtotime($td->datetime));
}
} else {
$trackingInfo['error'] = 'error';
}
return $trackingInfo;
}
private function separateStatus($statuses, $state)
{
$return = array();
if (is_array($statuses)) {
foreach ($statuses as $s) {
if ($s->name == trim($state)) {
$return['title'] = $s->title;
$return['description'] = $s->description;
return $return;
}
}
}
return $return;
}
public function hookDisplayAdminOrderTabShip()
{
if ($this->isActiveModule()) {
$ioa = Configuration::get('INPOSTSHIP_ORDER_ADD');
if ($ioa == 1) {
return;
}
$output = '';
$id_order = (int)Tools::getValue('id_order');
$this->context->smarty->assign(array(
'packCount' => count(InpostPack::getOrderPackageList((int)$id_order))
));
if (_PS_VERSION_ >= '1.7.7.0') {
$output .= $this->context->smarty->fetch($this->local_path . 'views/templates/admin/_order/tab_177.tpl');
} else {
$output .= $this->context->smarty->fetch($this->local_path . 'views/templates/admin/tab.tpl');
}
return $output;
}
}
public function hookDisplayAdminOrderTabLink()
{
return $this->hookDisplayAdminOrderTabShip();
}
public function hookDisplayAdminOrderTabContent($params)
{
return $this->hookDisplayAdminOrderContentShip($params);
}
public function hookDisplayAdminOrderContentShip($params)
{
if ($this->isActiveModule()) {
$ioa = Configuration::get('INPOSTSHIP_ORDER_ADD');
if ($ioa == 1) {
return;
}
$output = '';
$this->InpostProcess();
$id_order = (int)Tools::getValue('id_order');
$order = new Order($id_order);
$id_cart = $order->id_cart;
$customer = new Customer($order->id_customer);
$address_delivery = new Address($order->id_address_delivery);
if (!empty($address_delivery)) {
$address_delivery->phone_mobile = InpostTools::setPhoneNumber(trim(str_replace('+48', '', $address_delivery->phone_mobile)));
$address_delivery->phones = !empty($address_delivery->phone) ? trim(str_replace('+48', '', $address_delivery->phone)) : trim(str_replace('+48', '', $address_delivery->phone_mobile));
$address_delivery->phones = InpostTools::setPhoneNumber(str_replace(' ', '', $address_delivery->phones));
}
$x13allegro = Configuration::get('INPOSTSHIP_INTEGRATION_X13ALLEGRO');
$rec_mach = '';
$package = InpostPack::getInpostShipCart((int)$id_cart);
$x13oinfo = null;
if (!empty($package)) {
$rec_mach = $package['receiver_machine'];
$id_carrier = (int)$package['id_carrier'];
if ($id_carrier != $order->id_carrier) {
$id_carrier = (int)$order->id_carrier;
}
$current_pack = new Carrier((int)$id_carrier, (int)$this->context->cookie->id_lang);
} else {
$x13version = '6.2.1';
$x13allegroModule = Db::getInstance()->getRow('SELECT * FROM `' . _DB_PREFIX_ . 'module` WHERE `name` = "x13allegro"');
$current_pack = new Carrier((int)$order->id_carrier, (int)$this->context->cookie->id_lang);
if ($x13allegro) {
if ($x13allegroModule['version'] < $x13version) {
$x13orderInfo = Db::getInstance()->getRow('SELECT * FROM `' . _DB_PREFIX_ . 'xallegro_form` WHERE `id_order` = ' . (int)$order->id);
if (!empty($x13orderInfo)) {
$x13oinfo = unserialize(base64_decode($x13orderInfo['content']));
$rec_mach = $x13oinfo->postBuyFormGdAddress->postBuyFormAdrId;
}
} else {
$x13orderInfo = Db::getInstance()->getRow('SELECT * FROM `' . _DB_PREFIX_ . 'xallegro_order` WHERE `id_order` = ' . (int)$order->id);
if (!empty($x13orderInfo)) {
$x13oinfo = json_decode($x13orderInfo['checkout_form_content']);
$rec_mach = $x13oinfo->delivery->pickupPoint->id;
}
}
}
}
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'));
$point = $inpostapi->getPointInfo($rec_mach);
$pop_point = InpostPoint::getPopPointsAll();
$pok_point = InpostPoint::getPointOfType('pok');
$c1 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_1'));
$c1i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_1');
$c2 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_2'));
$c2i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_2');
$c3 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_3'));
$c3i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_3');
$c4 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_4'));
$c4i = Configuration::get('INPOSTSHIP_INSTALL_CARRIER_4');
$c5 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_5'));
$c6 = unserialize(Configuration::get('INPOSTSHIP_CARRIER_6'));
$packageList = InpostPack::getOrderPackageList((int)$id_order);
if (!empty($packageList)) {
foreach ($packageList as &$pl) {
$ord = new Order($pl['id_order']);
$id_cart = (int)$ord->id_cart;
$inpost_cart = InpostPack::getInpostShipCart((int)$id_cart);
$pl['image'] = '';
$id_carrier2 = (int)$inpost_cart['id_carrier'];
if ($id_carrier2 != $ord->id_carrier) {
$id_carrier2 = (int)$order->id_carrier;
}
$carrier2 = new Carrier((int)$id_carrier2);
$cref2 = $carrier2->id;
if ($c1i == 1) {
if (in_array($cref2, $c1)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
}
}
if ($c2i == 1) {
if (in_array($cref2, $c2)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
}
}
if ($c3i == 1) {
if (in_array($cref2, $c3)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc2.jpg';
}
}
if ($c4i == 1) {
if (in_array($cref2, $c4)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc2.jpg';
}
}
if (in_array($cref2, $c5)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
}
if (in_array($cref2, $c6)) {
$image2 = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
}
$pl['image'] = $image2;
$dispatch = 0;
if ($pl['sendtype'] == 'dispatch_order') {
$dispatch = 1;
}
$pl['dispatch'] = $dispatch;
$ship_info = array();
if ($pl['status'] != 'confirmed') {
$ship_info = $inpostapi->getShipments($pl['packcode']);
$ship_info = (array)$ship_info['result'];
}
$pl['ship_info'] = $ship_info;
if ((int)$pl['dispatch_id'] > 0) {
$dispatch_info = $inpostapi->getDispatchInfo((int)$pl['dispatch_id']);
if (!empty($dispatch_info['error'])) {
$sxerror = new InpostError();
if ($this->debug == 1) {
echo "<pre>";
print_r($dispatch_info);
echo "</pre>";
}
$this->context->smarty->assign(array(
'errors' => $sxerror->displayErrors($dispatch_info)
));
} else {
$status = $dispatch_info['result']->status;
$pl['dispatch_status'] = InpostDispatch::getDispatchStatus($status);
$pl['dispatch_status_org'] = $status;
}
}
}
}
$cref = $current_pack->id;
$image = '';
$service = 0;
$inpostCod = 0;
$serviceName = '';
$paczk = 0;
$addressAllegro = array();
$x13transactionId = $x13allegroUserId = null;
if ($x13allegro && !empty($x13oinfo)) {
$service = 3;
if ($x13allegroModule['version'] < $x13version) {
$allegroService = $x13oinfo->postBuyFormShipmentId;
} else {
$allegroService = $x13oinfo->delivery->method->id;
}
switch ($allegroService) {
case 10023:
$serviceName = 'Allegro Paczkomaty 24/7 InPost';
$paczk = 1;
break;
case 10022:
$serviceName = 'Paczkomaty 24/7';
$paczk = 1;
break;
case 18:
$serviceName = 'Allegro Kurier24 InPost pobranie ';
break;
case 34:
$serviceName = 'Kurier InPost pobranie ';
break;
case '2488f7b7-5d1c-4d65-b85c-4cbcf253fd93':
$serviceName = 'Allegro Paczkomaty 24/7 InPost';
$paczk = 1;
break;
case 'b20ef9e1-faa2-4f25-9032-adbea23e5cb9':
$serviceName = 'Allegro Paczkomaty 24/7 InPost pobranie';
$paczk = 1;
$inpostCod = 1;
break;
case '85c3ad2f-4ec1-446c-866e-63473ed10e26':
$serviceName = 'Allegro Kurier24 InPost pobranie';
$inpostCod = 1;
break;
case '98f86f81-0018-41c5-ac83-073a56fc7021':
$serviceName = 'Allegro miniKurier24 InPost pobranie';
$inpostCod = 1;
break;
case '999f8753-6340-48a0-8eba-46096f9749aa':
$serviceName = 'Kurier InPost pobranie';
$inpostCod = 1;
break;
case '2653ca13-67c8-48c3-bbf8-ff9aa3f70ed3':
$serviceName = 'Paczkomaty 24/7 pobranie';
$paczk = 1;
$inpostCod = 1;
break;
case '685d8b40-2571-4111-8937-9220b1710d4c':
$serviceName = 'Paczkomaty 24/7 ';
$paczk = 1;
break;
case '9081532b-5ad3-467d-80bc-9252982e9dd8':
$serviceName = 'Allegro miniKurier24 InPost';
$service = 4;
$paczk = 0;
break;
}
if ($x13allegroModule['version'] < $x13version) {
$x13transactionId = $x13oinfo->postBuyFormId;
$x13allegroUserId = $x13oinfo->postBuyFormBuyerId;
} else {
$x13transactionId = $x13oinfo->id;
$x13allegroUserId = $x13oinfo->buyer->id;
$addressAllegro = $x13oinfo->delivery->address;
}
} else {
if ($c1i == 1) {
if (in_array($cref, $c1)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
$service = 1;
}
}
if ($c2i == 1) {
if (in_array($cref, $c2)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
$service = 1;
$inpostCod = 1;
}
}
if ($c3i == 1) {
if (in_array($cref, $c3)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc2.jpg';
$service = 2;
}
}
if ($c4i == 1) {
if (in_array($cref, $c4)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc2.jpg';
$service = 2;
$inpostCod = 1;
}
}
if (in_array($cref, $c5)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
$service = 5;
$week = 1;
}
if (in_array($cref, $c6)) {
$image = Tools::getProtocol(true) . $this->context->shop->domain . '/modules/inpostship/views/img/isc1.jpg';
$service = 6;
$inpostCod = 1;
$week = 1;
}
}
$sendingMethods = $inpostapi->getSendingMethods();
$point2 = $inpostapi->getPointInfo(Configuration::get('INPOSTSHIP_SENDER_MACHINE'));
$orderCarrier2 = new Carrier((int)$order->id_carrier);
$orderCarrier = $orderCarrier2->id;
$inpostCarrier = [];
if (!empty($c1)) {
$inpostCarrier = $c1;
}
if (!empty($c2)) {
$inpostCarrier = array_merge($inpostCarrier, $c2);
}
if (!empty($c3)) {
$inpostCarrier = array_merge($inpostCarrier, $c3);
}
if (!empty($c4)) {
$inpostCarrier = array_merge($inpostCarrier, $c4);
}
if (!empty($c5)) {
$inpostCarrier = array_merge($inpostCarrier, $c5);
}
if (!empty($c6)) {
$inpostCarrier = array_merge($inpostCarrier, $c6);
}
$active = false;
if (Configuration::get('INPOSTSHIP_SHOW_SFI') == 1) {
$active = true;
}
if (in_array($orderCarrier, $inpostCarrier)) {
$active = true;
}
$scv = false;
if (Configuration::get('INPOSTSHIP_SHOW_COD_VALUE') == 1) {
$scv = true;
}
if ($c2i == 1 || $c4i == 1) {
if ($orderCarrier == $c2 || $orderCarrier == $c4) {
$scv = true;
}
}
$orderWeight = $order->getTotalWeight();
if ($orderWeight == 0) {
$orderWeight = Configuration::get('INPOSTSHIP_PACKAGE_WEIGHT');
}
$showWeek = 0;
if (Configuration::get('INPOSTSHIP_WEEKPACK') == 1) {
$datWeek = date('w');
$startWeek = 2;
$endWeek = 6;
$hourWeek = date('H:i');
$startHour = '8:00';
$endHour = '13:00';
if ($datWeek > $startWeek && $datWeek < $endWeek) {
$showWeek = 1;
} else if ($datWeek > $startWeek && $datWeek == $endWeek) {
if ($hourWeek <= $endHour) {
$showWeek = 1;
}
} else if ($datWeek == $startWeek && $datWeek < $endWeek) {
if ($hourWeek >= $startHour) {
$showWeek = 1;
}
} else if ($datWeek == $startWeek && $datWeek == $endWeek) {
if ($hourWeek >= $startHour && $hourWeek <= $endHour) {
$showWeek = 1;
}
}
}
$identity = $order->reference;
$ident = Configuration::get('INPOSTSHIP_ORDER_NUMBER');
if ($ident == 1) {
$identity = $order->id;
}
$addr = array();
$addr['postcode'] = $address_delivery->postcode;
$strrets = $address_delivery->address1.(!empty($address_delivery->address2) ? ' '.$address_delivery->address2 : '');
$street = str_replace('ul. ', '', $strrets);
$street = str_replace(',', '', $street);
$addr['street'] = InpostTools::split_street($street);
if (!InpostValidate::isPolandPostCode($address_delivery->postcode)) {
$addr['postcode'] = InpostTools::setPolandPostCode($address_delivery->postcode);
}
$addr['city'] = $address_delivery->city;
$this->context->smarty->assign(array(
'order' => $order,
'orderWeight' => $orderWeight,
'cart_id' => $order->id_cart,
'customer' => $customer,
'address_delivery' => $address_delivery,
'point' => $point,
'point2' => $point2,
'packtype' => $inpostapi->locker,
'insurance' => $inpostapi->insurance,
'packtype_default' => Configuration::get('INPOSTSHIP_PACK_SIZE'),
'dispatch' => Configuration::get('INPOSTSHIP_DISPATCH'),
'pop_points' => $pop_point,
'pok_points' => $pok_point,
'packageList' => $packageList,
'image' => $image,
'sendingMethods' => $sendingMethods['result']->items,
'service' => $service,
'inpostCod' => $inpostCod,
'ssbi' => Configuration::get('INPOSTSHIP_SHOW_SFI'),
'active' => $active,
'scv' => $scv,
'selPopPoint' => Configuration::get('INPOSTSHIP_SENDER_MACHINE_POP'),
'serviceName' => $serviceName,
'paczk' => $paczk,
'x13transactionId' => $x13transactionId,
'x13allegroUserId' => $x13allegroUserId,
'price' => $this->price,
'ipi' => Configuration::get('INPOSTSHIP_PACKAGE_INSURANCE'),
'addressAllegro' => $addressAllegro,
'weekPack' => $package['week'],
'showWeek' => $showWeek,
'identity' => $identity,
'addr' => $addr
));
if (_PS_VERSION_ >= '1.7.7.0') {
$output .= $this->context->smarty->fetch($this->local_path . 'views/templates/admin/_order/tab_content_177.tpl');
} else {
$output .= $this->context->smarty->fetch($this->local_path . 'views/templates/admin/tab_content.tpl');
}
return $output;
}
}
public function trackPackInfo()
{
$allPack = InpostPack::getAllNotDeliveredPackageList();
if ($this->debug) {
$allPack = InpostPack::getAllNotDeliveredPackageList(true);
}
if (!empty($allPack)) {
$shipx = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$closeOrder = (int)Configuration::get('INPOSTSHIP_TRACKING_SETEND');
$close_state = 'delivered'; // Configuration::get('INPOSTSHIP_TRACKING_END');
foreach ($allPack as $item) {
if (!empty($item['reference_number'])) {
$statuePack = InpostTracking::getAllPackStates($item['id_pack']);
$status = $shipx->getTracking($item['reference_number']);
if ($this->debug) {
print_r($statuePack);
print_r($status);
}
if (empty($status['error'])) {
$packStates = $status['result']->tracking_details;
if (!empty($packStates)) {
if (!empty($statuePack)) {
$is_statue = array();
foreach ($statuePack as $sPack) {
$is_statue[] = $sPack['state'];
}
if ($this->debug) {
print_r($is_statue);
}
foreach ($packStates as $pState) {
if (!in_array($pState->status, $is_statue)) {
InpostTracking::addState((int)$item['id_pack'], $pState->status, $pState->datetime);
if ($closeOrder == 1) {
if ($pState->status == $close_state) {
$history = new OrderHistory();
$history->id_order = (int)$item['id_order'];
$history->changeIdOrderState((int)Configuration::get('INPOSTSHIP_TRACKING_STATUS'), (int)$item['id_order']);
$history->addWithemail(true, array());
}
}
}
}
InpostPack::setCurrentStatePack((int)$item['id_pack'], $packStates[0]->status);
} else {
foreach ($packStates as $pState) {
InpostTracking::addState((int)$item['id_pack'], $pState->status, $pState->datetime);
if ($closeOrder == 1) {
if ($pState->status == $close_state) {
$history = new OrderHistory();
$history->id_order = (int)$item['id_order'];
$history->changeIdOrderState((int)Configuration::get('INPOSTSHIP_TRACKING_STATUS'), (int)$item['id_order']);
$history->addWithemail(true, array());
}
}
}
InpostPack::setCurrentStatePack((int)$item['id_pack'], $packStates[0]->status);
}
} else {
Db::getInstance()->update('inpostship', array(
'statue' => '--'
), 'id_pack = '.(int)$item['id_pack']);
}
} else {
Db::getInstance()->update('inpostship', array(
'statue' => '--'
), 'id_pack = '.(int)$item['id_pack']);
}
} else {
Db::getInstance()->update('inpostship', array(
'statue' => '--'
), 'id_pack = '.(int)$item['id_pack']);
}
}
}
}
private function GetHeaders($response) {
$headers = [];
$xx = explode("\r\n\r\n", $response);
foreach($xx as $i => $line) {
if($i == 1) {
$headers['http_code'] = $line;
} else {
$xxx2 = nl2br($line);
$xxx = explode('<br />', $xxx2);
if (!empty($xxx)) {
foreach ($xxx as $x) {
$hd = explode(':', $x);
if (count($hd) > 1) {
$headers[trim($hd[0])] = $hd[1];
if (trim($hd[0]) == 'Content-Disposition') {
$file2 = explode('=', $hd[1]);
$file = str_replace('"', '', $file2[1]);
$headers['file'] = $file;
$ext2 = explode('.', $file);
$ext = $ext2[1];
switch ($ext2[1]) {
case 'zip':
$ext = 'zip';
break;
case 'pdf':
$ext = 'pdf';
break;
}
$headers['file_type'] = $ext;
}
} else {
$headers['file'] = '';
$headers['file_type'] = '';
}
}
}
$headers['head'] = $line;
}
}
return $headers;
}
public function printLabel($label_id)
{
if ($label_id > 0) {
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$pack = InpostPack::getInpostShipByIdPack((int)$label_id);
$format = Configuration::get('INPOSTSHIP_PRINT_FORMAT');
$inpost = $inpostapi->getLabel($pack['packcode'], $format, Configuration::get('INPOSTSHIP_PRINT_TYPE'));
$file_name = $pack['reference_number'];
// ob_end_clean();
// ob_start();
if ($format == 'PDF') {
$file_type = 'pdf';
header('Content-Type: application/pdf');
} else {
$file_type = 'epl';
header('Content-Type: application/octet-stream');
}
header("Content-Disposition: attachment; filename=\"$file_name.$file_type\"");
exit($inpost);
}
}
public function getUserPoints($cod = 0)
{
$return = array();
if (isset($this->context->customer)) {
$id_cart = (int)$this->context->cookie->id_cart;
$cart = new Cart($id_cart);
$id_address = $cart->id_address_delivery;
$address = new Address($id_address);
$urlAddress = $address->address1.' '.$address->postcode;//.' '.$address->city;
$urlAddress = str_replace(' ', '+', $urlAddress);
$url = 'https://nominatim.openstreetmap.org/?format=json&addressdetails=1&q='.$urlAddress.'&format=json&limit=1';
$return['address'] = $urlAddress;
$return['url'] = $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0'));
$result = curl_exec($ch);
$resp = json_decode($result);
$return['resp'] = $resp;
$lat = $resp[0]->lat;
$lon = $resp[0]->lon;
$npc = (int)Configuration::get('INPOSTSHIP_POINT_COUNT', null, null, null, 6);
$rnp = (int)Configuration::get('INPOSTSHIP_POINT_RADIUS', null, null, null, 10);
$return['search']['lat'] = $lat;
$return['search']['lon'] = $lon;
$return['search']['npc'] = $npc;
$return['search']['rnp1000'] = $rnp*1000;
$return['search']['rnp'] = $rnp;
$inpostapi = new ShipX(Configuration::get('INPOSTSHIP_API_KEY'), (bool)Configuration::get('INPOSTSHIP_SANDBOX'), $this->debug);
$pointsNear = $inpostapi->getPointsNearAddress($lat, $lon, $npc, $rnp*1000, $cod);
$points = array();
if (!empty($pointsNear)) {
foreach ($pointsNear as $key => $item) {
$points[$key]['name'] = $item->name;
$points[$key]['desc'] = $item->location_description;
$points[$key]['address'] = $item->address->line1.' '.$item->address->line2;
}
}
$return['points'] = $points;
}
echo json_encode($return);
exit();
}
public function hookActionCartSave($params)
{
$id_customer = $params['cart']->id_customer;
$id_cart = $params['cart']->id;
$issetPoint = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'inpostship_user_point` WHERE `id_customer` = '.(int)$id_customer);
if (!empty($issetPoint)) {
if ($id_cart > 0) {
$issetCart = InpostPack::issetCart((int)$id_cart);
if (empty($issetCart)) {
InpostPack::setInpostShip((int)$id_cart, $issetPoint['point'], 0, 0, (int)$this->context->cookie->id_lang);
}
}
}
}
}