Files
wyczarujprezent.pl/modules/pminpostpaczkomaty/pminpostpaczkomaty.php
2024-10-28 22:14:22 +01:00

3893 lines
164 KiB
PHP

<?php
/**
* 2014-2023 Presta-Mod.pl Rafał Zontek
*
* NOTICE OF LICENSE
*
* Poniższy kod jest kodem płatnym, rozpowszechanie bez pisemnej zgody autora zabronione
* Moduł można zakupić na stronie Presta-Mod.pl. Modyfikacja kodu jest zabroniona,
* wszelkie modyfikacje powodują utratę gwarancji
*
* http://presta-mod.pl
*
* DISCLAIMER
*
* @author Presta-Mod.pl Rafał Zontek <biuro@presta-mod.pl>
* @copyright 2014-2023 Presta-Mod.pl
* @license Licecnja na jedną domenę
* Presta-Mod.pl Rafał Zontek
*/
if (!defined('_PS_VERSION_')) {
exit;
}
include_once dirname(__FILE__) . '/lib/api.php';
include_once dirname(__FILE__) . '/lib/shipxapi.php';
include_once dirname(__FILE__) . '/classes/PaczkomatyList.php';
include_once dirname(__FILE__) . '/classes/BaselinkerOrder.php';
class PmInpostPaczkomaty extends Module
{
private static $media_added_cache = false;
protected $config_form = false;
public $confirmations;
public $errors;
public $move_footer;
public $sandbox;
public $warnings;
public $version_ps;
public function __construct()
{
$this->author = 'Presta-Mod.pl';
$this->bootstrap = true;
$this->confirmations = [];
$this->errors = [];
$this->move_footer = true;
$this->name = 'pminpostpaczkomaty';
$this->need_instance = 0;
$this->sandbox = false;
$this->tab = 'shipping_logistics';
$this->version = '2.8.5';
$this->warnings = [];
parent::__construct();
$this->displayName = $this->l('Inpost Paczkomaty Poland');
$this->description = $this->l('Inpost Paczkomaty Poland with new fast map');
$this->confirmUninstall = $this->l('Do you want to uninstall the module?');
$this->ps_versions_compliancy = ['min' => '1.6', 'max' => _PS_VERSION_];
if (Tools::version_compare(_PS_VERSION_, '1.7.0.0', '<=')) {
$this->version_ps = '1.6';
} else {
$this->version_ps = '1.7';
}
$this->switchSandbox();
$this->carrierAutoEnableDisable();
}
public function install()
{
if (extension_loaded('curl') == false) {
$this->_errors[] = $this->l('You have to enable the cURL extension on your server to install this module');
return false;
}
return parent::install() &&
PaczkomatyList::installSql() &&
PmBaselinkerOrder::installSql() &&
$this->registerHook('displayHeader') &&
$this->registerHook('actionEmailSendBefore') &&
$this->registerHook('displayBackOfficeHeader') &&
$this->registerHook('displayBeforeCarrier') &&
$this->registerHook('updateCarrier') &&
$this->registerHook('actionCarrierUpdate') &&
$this->registerHook('actionValidateOrder') &&
$this->registerHook('sendMailAlterTemplateVars') &&
$this->registerHook('displayFooter') &&
$this->registerAdminHook() &&
$this->createAjaxController();
}
public function uninstall()
{
$config = $this->getConfigurationFormValues();
foreach (array_keys($config) as $key) {
Configuration::deleteByName($key);
}
parent::uninstall();
PaczkomatyList::uninstallSql();
PmBaselinkerOrder::uninstallSql();
$this->unregisterHook('displayHeader');
$this->unregisterHook('displayBackOfficeHeader');
$this->unregisterHook('actionValidateOrder');
$this->unregisterHook('displayBeforeCarrier');
$this->unregisterHook('updateCarrier');
$this->unregisterHook('actionCarrierUpdate');
$this->unregisterHook('sendMailAlterTemplateVars') &&
$this->unregisterHook('displayFooter');
$this->unregisterHook('actionEmailSendBefore');
$this->unregisterAdminHook();
$this->removeAjaxController();
return true;
}
public function registerAdminHook()
{
if (Tools::version_compare(_PS_VERSION_, '1.6.0.9', '>=')) {
return $this->registerHook('displayAdminOrderTabLink') &&
$this->registerHook('displayAdminOrderTabContent') &&
$this->registerHook('displayAdminOrderTabShip') &&
$this->registerHook('displayAdminOrderContentShip');
} else {
return $this->registerHook('adminOrder');
}
}
public function hookDisplayAdminOrderTabLink($hook_params)
{
$params = [];
$params['order'] = new Order($hook_params['id_order']);
return $this->hookDisplayAdminOrderTabShip($params);
}
public function hookDisplayAdminOrderTabContent($hook_params)
{
$params = [];
$params['order'] = new Order($hook_params['id_order']);
return $this->hookDisplayAdminOrderContentShip($params);
}
public function unregisterAdminHook()
{
$this->unregisterHook('displayAdminOrderTabShip');
$this->unregisterHook('displayAdminOrderContentShip');
$this->unregisterHook('adminOrder');
}
public function createAjaxController()
{
$tab = new Tab();
$tab->active = 1;
$languages = Language::getLanguages(false);
if (is_array($languages)) {
foreach ($languages as $language) {
$tab->name[$language['id_lang']] = $this->name;
}
}
$tab->class_name = 'PmInpostPaczkomatyOrder';
$tab->module = $this->name;
$tab->id_parent = -1;
$tab->add();
$tab = new Tab();
$tab->active = 1;
$languages = Language::getLanguages(false);
if (is_array($languages)) {
foreach ($languages as $language) {
$tab->name[$language['id_lang']] = 'Inpost paczkomaty';
}
}
$tab->class_name = 'PmInpostPaczkomatyList';
$tab->module = $this->name;
$id_parent = Tab::getIdFromClassName('AdminParentShipping');
$tab->id_parent = $id_parent;
$tab->add();
$languages = Language::getLanguages(false);
if (is_array($languages)) {
foreach ($languages as $language) {
$tab->name[$language['id_lang']] = 'Inpost paczkomaty zlecenia';
}
}
$tab->class_name = 'PmInpostPaczkomatyZlecenia';
$tab->module = $this->name;
$id_parent = Tab::getIdFromClassName('AdminParentShipping');
$tab->id_parent = $id_parent;
$tab->add();
return true;
}
public function removeAjaxController()
{
$id_parent = Tab::getIdFromClassName('PmInpostPaczkomatyOrder');
$tab = new Tab($id_parent);
$tab->delete();
$id_parent = Tab::getIdFromClassName('PmInpostPaczkomatyList');
$tab = new Tab($id_parent);
$tab->delete();
$id_parent = Tab::getIdFromClassName('PmInpostPaczkomatyZlecenia');
$tab = new Tab($id_parent);
$tab->delete();
return true;
}
public function installOverrides()
{
if (Module::isInstalled('x13opc') || Module::isInstalled('onepagecheckout')) {
if (!is_dir($this->getLocalPath() . 'override')) {
return true;
}
$result = true;
foreach (Tools::scandir($this->getLocalPath() . 'override', 'php', '', true) as $file) {
if (strpos($file, 'OrderOpcController.php')) {
continue;
}
$class = basename($file, '.php');
if (PrestaShopAutoload::getInstance()->getClassPath($class . 'Core') ||
Module::getModuleIdByName($class)) {
$result &= $this->addOverride($class);
}
}
return $result;
} else {
return parent::installOverrides();
}
}
public function uninstallOverrides()
{
if (Module::isInstalled('x13opc')) {
if (!is_dir($this->getLocalPath() . 'override')) {
return true;
}
$result = true;
foreach (Tools::scandir($this->getLocalPath() . 'override', 'php', '', true) as $file) {
if (strpos($file, 'OrderOpcController.php') !== false) {
continue;
}
$class = basename($file, '.php');
if (PrestaShopAutoload::getInstance()->getClassPath($class . 'Core') ||
Module::getModuleIdByName($class)) {
$result &= $this->removeOverride($class);
}
}
return $result;
} else {
return parent::uninstallOverrides();
}
}
protected function renderForm()
{
$helper = new HelperForm();
$helper->show_toolbar = false;
$helper->table = $this->table;
$helper->module = $this;
$helper->default_form_language = $this->context->language->id;
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG', 0);
$helper->identifier = $this->identifier;
$helper->submit_action = 'submitPminpostpaczkomatyModule';
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false)
. '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->tpl_vars = [
'fields_value' => $this->getConfigurationFormValues(), /* Add values for your inputs */
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
];
return $helper->generateForm($this->getConfigurationForm());
}
protected function renderFormAdmin($params)
{
$btn = 1;
if (isset($params['order']) && $params['order'] instanceof Order) {
$order = $params['order'];
} else {
$order = new Order($params['id_order']);
}
$id_cart = $order->id_cart;
$paczkomatyList = PaczkomatyList::getByIdCart($id_cart);
$this->addDeliveryAllegro($paczkomatyList);
if (!$paczkomatyList->id) {
$btn = 1;
} elseif ($paczkomatyList->nr_listu == '') {
$btn = 1;
} elseif ($paczkomatyList->nr_listu != '' && $paczkomatyList->status != 'Opłacona') {
$btn = 2;
} elseif ($paczkomatyList->nr_listu != '' && $paczkomatyList->status == 'Opłacona') {
$btn = 3;
}
$this->context->smarty->assign('btn', $btn);
$helper = new HelperForm();
$helper->base_folder = _PS_ADMIN_DIR_ . '/themes/default/template/helpers/form/';
$helper->show_toolbar = false;
$helper->table = $this->table;
$helper->module = $this;
$helper->default_form_language = $this->context->language->id;
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG', 0);
$helper->identifier = $this->identifier;
$helper->submit_action = $this->name . 'submit';
$helper->currentIndex = AdminController::$currentIndex . '&id_order=' . Tools::getValue('id_order') . '&vieworder';
$helper->token = Tools::getAdminTokenLite('AdminOrders');
$values = $this->getPackageDetails($params);
$helper->tpl_vars = [
'fields_value' => $values,
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
];
$form = $this->getDeliverListForm($btn);
if (isset($values['warnings'])) {
$form[0]['form'] = array_merge(['warning' => $values['warnings']], $form[0]['form']);
}
$return = $helper->generateForm($form);
$return = preg_replace("/<script.*?\/script>/s", '', $return);
return $return;
}
private function getEnabledOptions()
{
return [
[
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Enabled'),
],
[
'id' => 'active_off',
'value' => 0,
'label' => $this->l('Disabled'),
],
];
}
protected function getConfigurationForm()
{
$switch_type = 'switch';
$form = [];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Access'),
'required' => true,
'icon' => 'icon-cogs',
],
'input' => [
[
'col' => 5,
'type' => 'hidden',
'name' => 'selected_menu',
'label' => $this->l('Selected menu'),
],
[
'col' => 5,
'type' => 'hidden',
'name' => 'PMINPOSTPACZKOMATY_GUIDE',
'label' => $this->l('Selected Guide'),
],
[
'type' => $switch_type,
'label' => $this->l('Use shipx API'),
'name' => 'PMINPOSTPACZKOMATY_SHIPX',
'is_default' => 0,
'class' => 'inpostshipx',
'hint' => $this->l('If you want to use the new API, you must have TOKEN'),
'values' => $this->getEnabledOptions(),
],
[
'col' => 3,
'type' => 'text',
'required' => true,
'name' => 'PMINPOSTPACZKOMATY_LOGIN',
'label' => $this->l('Login'),
'hint' => $this->l('Login used in https://manager.paczkomaty.pl'),
],
[
'col' => 3,
'type' => 'text',
'required' => true,
'name' => 'PMINPOSTPACZKOMATY_PASSWORD',
'label' => $this->l('Password'),
'hint' => $this->l('The password used in https://manager.paczkomaty.pl'),
],
[
'col' => 3,
'type' => 'textarea',
'required' => true,
'name' => 'PMINPOSTPACZKOMATY_TOKEN',
'label' => $this->l('Token'),
'hint' => $this->l('The token can be obtained by contacting InPost opieka@grupainteger.pl'),
],
[
'col' => 3,
'type' => 'text',
'required' => true,
'name' => 'PMINPOSTPACZKOMATY_ID',
'label' => $this->l('Id organization'),
'hint' => $this->l('The organization\'s id can be obtained by contacting InPost'),
],
[
'type' => $switch_type,
'label' => $this->l('Sandbox'),
'name' => 'PMINPOSTPACZKOMATY_SANDBOX',
'is_default' => 0,
'class' => 'inpostshipx',
'hint' => $this->l('If you want to use sandox '),
'desc' => $this->l('Option for advanced users - Default should be select No'),
'values' => $this->getEnabledOptions(),
],
[
'type' => $switch_type,
'label' => $this->l('Log'),
'name' => 'PMINPOSTPACZKOMATY_LOG',
'is_default' => 0,
'hint' => $this->l('Generate log file from all request '),
'desc' => $this->l('Option for advanced users - Default should be select No'),
'values' => $this->getEnabledOptions(),
],
],
'buttons' => [
'save-and-stay' => [
'title' => $this->l('Save and test connection'),
'name' => 'saveAndTest',
'type' => 'submit',
'class' => 'btn btn-default pull-right',
'icon' => 'process-icon-save',
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Sender settings'),
'required' => true,
'icon' => 'icon-cogs',
],
'input' => [
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_COMPANY_NAME',
'label' => $this->l('Company name'),
'hint' => [
$this->l('Company name'),
$this->l('- required field if you want to communicate with api'),
],
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_FIRST_NAME',
'label' => $this->l('Firstname'),
'hint' => [
$this->l('Firstname'),
$this->l('- required field if you want to communicate with api'),
],
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_LAST_NAME',
'label' => $this->l('Lastname'),
'hint' => [
$this->l('Lastname'),
$this->l('- required field if you want to communicate with api'),
],
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_EMAIL',
'label' => $this->l('Sender e-mail'),
'prefix' => '<i class="icon icon-envelope"></i>',
'hint' => [
$this->l('Sender e-mail'),
$this->l('- required field if you want to communicate with api'),
],
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_PHONE',
'label' => $this->l('Phone'),
'prefix' => '<i class="icon icon-phone"></i>',
'desc' => $this->l('Use mobile phone without prefix only 9 numbers (for example 123456789)'),
'hint' => [
$this->l('Phone'),
$this->l('- required field if you want to communicate with api'),
],
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_STREET',
'label' => $this->l('Street'),
'hint' => [
$this->l('Street'),
$this->l('- required field if you want to communicate with api'),
],
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_BUILDING_NUMBER',
'label' => $this->l('Bulding number'),
'hint' => [
$this->l('Bulding number'),
$this->l('- required field if you want to communicate with api'),
],
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_POST_CODE',
'label' => $this->l('Post code'),
'hint' => [
$this->l('Post code'),
$this->l('- required field if you want to communicate with api'),
],
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_CITY',
'label' => $this->l('City'),
'hint' => [
$this->l('City'),
$this->l('- required field if you want to communicate with api'),
],
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Package Settings Prepayment'),
'icon' => 'icon-cogs',
'required' => true,
],
'input' => [
[
'type' => 'select',
'label' => $this->l('Default Size'),
'name' => 'PMINPOSTPACZKOMATY_SIZE_BW',
'is_default' => 0,
'hint' => [
$this->l('The default size of the parcel paid in advance.'),
$this->l('You can change the size when generating the label.'),
],
'options' => [
'query' => $this->getSizes(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Delivery method'),
'name' => 'PMINPOSTPACZKOMATY_DELIVERY_BW',
'multiple' => true,
'desc' => $this->l('To select more than one use CTRL'),
'is_default' => 0,
'hint' => [
$this->l('Delivery method for prepaid shipment.'),
$this->l('If you do not see the delivery method, create it.'),
$this->l('The module does not automatically create a carrier'),
],
'options' => [
'query' => $this->getCarriers(),
'id' => 'id_carrier',
'name' => 'name',
],
],
[
'type' => 'html',
'label' => $this->l('Use button to create new delivery method'),
'name' => 'CREATE_DELIVERY_METHOD_BW',
'hint' => [
$this->l('Click on this button to create delivery method.'),
],
'html_content' => '<button name="CREATE_DELIVERY_METHOD" value="prepayment" class="btn btn-default">' .
$this->l('Create delivery method')
. '</button>',
],
[
'type' => $switch_type,
'label' => $this->l('Issurance'),
'name' => 'PMINPOSTPACZKOMATY_ISSURANCE_BW',
'is_default' => 0,
'class' => 't',
'hint' => $this->l('Delivery issurance'),
'values' => $this->getEnabledOptions(),
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Package Settings Cash on delivery'),
'icon' => 'icon-cogs',
'required' => true,
],
'input' => [
[
'type' => 'select',
'label' => $this->l('Default Size'),
'hint' => [
$this->l('The default size of the parcel paid in advance.'),
$this->l('You can change the size when generating the label.'),
],
'name' => 'PMINPOSTPACZKOMATY_SIZE_COD',
'is_default' => 0,
'options' => [
'query' => $this->getSizes(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Delivery method'),
'name' => 'PMINPOSTPACZKOMATY_DELIVERY_COD',
'is_default' => 0,
'multiple' => true,
'desc' => $this->l('To select more than one use CTRL'),
'hint' => [
$this->l('Delivery method for prepaid shipment.'),
$this->l('If you do not see the delivery method, create it.'),
$this->l('The module does not automatically create a carrier'),
],
'options' => [
'query' => $this->getCarriers(),
'id' => 'id_carrier',
'name' => 'name',
],
],
[
'type' => 'html',
'label' => $this->l('Use button to create new delivery method'),
'name' => 'CREATE_DELIVERY_METHOD_COD',
'hint' => [
$this->l('Click on this button to create delivery method.'),
],
'html_content' => '<button name="CREATE_DELIVERY_METHOD" value="cod" class="btn btn-default">' .
$this->l('Create delivery method')
. '</button>',
],
[
'type' => $switch_type,
'label' => $this->l('Issurance'),
'name' => 'PMINPOSTPACZKOMATY_ISSURANCE_COD',
'is_default' => 0,
'class' => 't',
'hint' => $this->l('Shipment insurance'),
'values' => $this->getEnabledOptions(),
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Parcel settings'),
'icon' => 'icon-cogs',
'required' => true,
],
'input' => [
[
'type' => 'select',
'label' => $this->l('Method of sending'),
'name' => 'PMINPOSTPACZKOMATY_SHIPPING_METHOD',
'is_default' => 0,
'options' => [
'query' => $this->getShippingMethod(),
'id' => 'id_option',
'name' => 'name',
],
'hint' => [
$this->l('If you want to give packages in a parcel locker - check:'),
$this->l('Posting in a parcel locker,'),
$this->l('if you want shipments to be picked up by InPost courier,'),
$this->l('select the Pick Up Courier method. The option can be changed during generation'),
$this->l('labels, in the order view'),
$this->l('Giving in to POP works only with ShipX'),
],
],
[
'type' => 'text',
'label' => $this->l('Machine'),
'name' => 'PMINPOSTPACZKOMATY_MACHINE',
'is_default' => 0,
'hint' => [
$this->l('Parcel machine to send parcels, if you want send your parcels'),
$this->l('by the courier - choose the delivery method - Receive by courier'),
],
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_REFERENCE',
'label' => $this->l('Reference'),
'desc' => [
$this->l('Reference code on label max 40 chars'),
$this->l('{id_order} - order number, {reference} - reference code'),
$this->l('{firstname} - firstname, {lastname} - lastname'),
$this->l('{productsreference} - order products reference'),
],
],
[
'type' => $switch_type,
'label' => $this->l('Add COD value to reference'),
'name' => 'PMINPOSTPACZKOMATY_ADD_COD',
'is_default' => 0,
'class' => 't',
'hint' => $this->l('Shipment insurance'),
'values' => $this->getEnabledOptions(),
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_MPK',
'label' => $this->l('MPK'),
'desc' => [
$this->l('Place of costs - optional, the place of costs must be') .
$this->l('be added to the organization first so that it can be assigned to the shipment.'),
$this->l('Such an operation must be carried out by an InPost employee.'),
],
],
[
'type' => 'text',
'name' => 'PMINPOSTPACZKOMATY_INSC',
'label' => $this->l('Insurance value for all packages'),
'desc' => [
$this->l('If you want, you can enter a fixed amount of insurance'),
$this->l('If the amount is to be charged automatically from the order, leave it blank'),
],
],
[
'type' => 'select',
'label' => $this->l('Label format'),
'name' => 'PMINPOSTPACZKOMATY_LABEL_FORMAT',
'is_default' => 0,
'options' => [
'query' => $this->getLabelFormat(),
'id' => 'id_option',
'name' => 'name',
],
'hint' => $this->l('Label file format'),
],
[
'type' => 'select',
'label' => $this->l('Label type'),
'name' => 'PMINPOSTPACZKOMATY_LABEL_SIZE',
'is_default' => 0,
'hint' => $this->l('The size of the downloaded file'),
'options' => [
'query' => $this->getLabelSize(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => $switch_type,
'label' => $this->l('Download PDF with multiple deliveries'),
'name' => 'PMINPOSTPACZKOMATY_DF',
'is_default' => 0,
'class' => 't',
'values' => $this->getEnabledOptions(),
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Maps settings'),
'required' => true,
'icon' => 'icon-cogs',
],
'input' => [
[
'type' => 'select',
'label' => $this->l('Map select'),
'name' => 'PMINPOSTPACZKOMATY_GGMAP',
'is_default' => 0,
'options' => [
'query' => $this->getAvailableMaps(),
'id' => 'id',
'name' => 'name',
],
],
[
'type' => 'text',
'label' => $this->l('Geowidget v5 token'),
'name' => 'PMINPOSTPACZKOMATY_MAP_TOKEN',
'desc' => [
$this->l('To obtain a token, go to manager.paczkomaty.pl,'),
$this->l('My account, API > Geowidget.'),
],
'is_default' => 0,
],
[
'type' => $switch_type,
'label' => $this->l('Show Select a parcel locker from the list'),
'name' => 'PMINPOSTPACZKOMATY_WPL',
'is_default' => 0,
'hint' => [
$this->l('The option works in the back-office and in the front-office'),
],
'class' => 't',
'values' => $this->getEnabledOptions(),
],
[
'type' => $switch_type,
'label' => $this->l('Disable geolocalization for openmaps'),
'name' => 'PMINPOSTPACZKOMATY_GEO',
'is_default' => 0,
'class' => 't',
'hint' => $this->l('Geolocalization wokrs only with SSL connections'),
'values' => $this->getEnabledOptions(),
],
[
'type' => $switch_type,
'label' => $this->l('Restore the last selected parcel locker'),
'name' => 'PMINPOSTPACZKOMATY_LL',
'is_default' => 0,
'class' => 't',
'values' => $this->getEnabledOptions(),
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Inpost Paczkomaty Display Settings'),
'icon' => 'icon-cogs',
],
'input' => [
[
'type' => 'select',
'label' => $this->l('Display place'),
'name' => 'PMINPOSTPACZKOMATY_DISPLAY_PLACE',
'hint' => [
$this->l('If you use a different template than the basic one,'),
$this->l('try where the parcel lockers look best'),
],
'is_default' => 0,
'options' => [
'query' => $this->getDisplayPlace(),
'id' => 'id_option',
'name' => 'name',
],
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$params = [
'token' => Tools::substr(md5(_COOKIE_KEY_), 0, 12),
];
$cron_url = $this->context->link->getModuleLink($this->name, 'cron', $params);
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Order status'),
'icon' => 'icon-cogs',
],
'input' => [
[
'type' => $switch_type,
'label' => $this->l('Change order status'),
'name' => 'PMINPOSTPACZKOMATY_OS',
'hint' => [
$this->l('Automatically change the status of the order after generating the letter,'),
$this->l('attention, you will see the change only when you refresh the page'),
],
'is_default' => 0,
'class' => 't',
'values' => $this->getEnabledOptions(),
],
[
'type' => 'select',
'label' => $this->l('Order status afer send'),
'name' => 'PMINPOSTPACZKOMATY_STATUS',
'hint' => $this->l('Choose the order status'),
'is_default' => 0,
'options' => [
'query' => $this->getOrderStatus(),
'id' => 'id_order_state',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Select statuses with available to change'),
'name' => 'PMINPOSTPACZKOMATY_STATUS_AV',
'hint' => $this->l('Choose the order status'),
'is_default' => 0,
'multiple' => true,
'options' => [
'query' => $this->getOrderStatus(),
'id' => 'id_order_state',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Order status pickup'),
'name' => 'PMINPOSTPACZKOMATY_STATUS_PIC',
'hint' => $this->l('Choose the order status'),
'is_default' => 0,
'options' => [
'query' => $this->getOrderStatus(),
'id' => 'id_order_state',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Order status afer delivered'),
'name' => 'PMINPOSTPACZKOMATY_STATUS_DEL',
'hint' => $this->l('Choose the order status'),
'is_default' => 0,
'options' => [
'query' => $this->getOrderStatus(),
'id' => 'id_order_state',
'name' => 'name',
],
'desc' => [
$this->l('This function works only when you run ajax,'),
$this->l('or when you click Change order state for delivered packages (Inpost Controller)'),
],
],
[
'type' => 'html',
'label' => $this->l('Link to cron'),
'name' => 'CREATE_DELIVERY_CRON_URL',
'hint' => [
$this->l('Copy this link and add to cron task'),
],
'html_content' => '<div class="col-lg-12">
<input readonly="readonly" type="text" value="' . $cron_url . '" />
</div>',
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Customer message settings'),
'icon' => 'icon-cogs',
],
'input' => [
[
'type' => $switch_type,
'label' => $this->l('Additional order message'),
'name' => 'PMINPOSTPACZKOMATY_CM_EN',
'hint' => [
$this->l('If you want use customer message set to Yes,'),
],
'is_default' => 0,
'class' => 't',
'values' => $this->getEnabledOptions(),
],
[
'type' => 'textarea',
'label' => $this->l('Customer message'),
'name' => 'PMINPOSTPACZKOMATY_CM',
'desc' => [
$this->l('{message_title} - tytuł wiadomości - jest zdefiniowany w tłumaczeniach sklep'),
$this->l('{customer} - klient'),
$this->l('{order_id} - id zamówienia'),
$this->l('{order_reference} - kod referencyjny zamówienia'),
$this->l('{name} - numer paczkomatu'),
$this->l('{address} - adres'),
],
'size' => 20,
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Order message settings'),
'icon' => 'icon-cogs',
],
'input' => [
[
'type' => $switch_type,
'label' => $this->l('Additional customer message'),
'name' => 'PMINPOSTPACZKOMATY_OM_EN',
'hint' => [
$this->l('If you want use order message set to Yes,'),
$this->l('This feature works with easy uploader.'),
$this->l('Your customer will get message in order confirmations.'),
],
'is_default' => 0,
'class' => 't',
'values' => $this->getEnabledOptions(),
],
[
'type' => 'textarea',
'label' => $this->l('Order message'),
'name' => 'PMINPOSTPACZKOMATY_OM',
'desc' => [
$this->l('{name} - numer paczkomatu'),
$this->l('{address} - adress'),
$this->l('{location_description} - opis lokalizacji'),
],
'size' => 20,
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Package Settings Prepayment') . ' - ' . $this->l('End of week'),
'icon' => 'icon-cogs',
],
'input' => [
[
'type' => 'select',
'label' => $this->l('Default Size'),
'name' => 'PMINPOSTPACZKOMATY_SIZE_EOF',
'is_default' => 0,
'hint' => [
$this->l('The default size of the parcel paid in advance.'),
$this->l('You can change the size when generating the label.'),
],
'options' => [
'query' => $this->getSizes(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Delivery method'),
'name' => 'PMINPOSTPACZKOMATY_DELIVERY_EOF',
'multiple' => true,
'is_default' => 0,
'hint' => [
$this->l('Delivery method for prepaid shipment.'),
$this->l('If you do not see the delivery method, create it.'),
$this->l('The module does not automatically create a carrier'),
],
'options' => [
'query' => $this->getCarriers(),
'id' => 'id_carrier',
'name' => 'name',
],
],
[
'type' => $switch_type,
'label' => $this->l('Issurance'),
'name' => 'PMINPOSTPACZKOMATY_ISSURANCE_EOF',
'is_default' => 0,
'class' => 't',
'hint' => $this->l('Delivery issurance'),
'values' => $this->getEnabledOptions(),
],
[
'type' => 'html',
'label' => $this->l('Use button to create new delivery method'),
'name' => 'CREATE_DELIVERY_METHOD_EOF',
'hint' => [
$this->l('Click on this button to create delivery method.'),
],
'html_content' => '<button name="CREATE_DELIVERY_METHOD" value="prepayment_eof" class="btn btn-default">' .
$this->l('Create delivery method')
. '</button>',
],
[
'type' => $switch_type,
'label' => $this->l('Auto enable'),
'name' => 'PMINPOSTPACZKOMATY_EOF_AE',
'is_default' => 0,
'class' => 't',
'hint' => $this->l('Auto enable delivery option'),
'values' => $this->getEnabledOptions(),
],
[
'type' => 'select',
'label' => $this->l('Available from day'),
'name' => 'PMINPOSTPACZKOMATY_EOF_D',
'is_default' => 0,
'hint' => [
$this->l('If you want to use this function, remember about the InPost regulations'),
$this->l('Select the days of the week and the hours'),
$this->l('when the customer will be able to choose the delivery option'),
$this->l('The delivery method will be enabled only in this range'),
],
'options' => [
'query' => $this->getDays(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Available from hour'),
'name' => 'PMINPOSTPACZKOMATY_EOF_H',
'is_default' => 0,
'hint' => [
$this->l('If you want to use this function, remember about the InPost regulations'),
$this->l('Select the days of the week and the hours'),
$this->l('when the customer will be able to choose the delivery option'),
$this->l('The delivery method will be enabled only in this range'),
],
'options' => [
'query' => $this->getHours(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Available to day'),
'name' => 'PMINPOSTPACZKOMATY_EOF_DT',
'is_default' => 0,
'hint' => [
$this->l('If you want to use this function, remember about the InPost regulations'),
$this->l('Select the days of the week and the hours'),
$this->l('when the customer will be able to choose the delivery option'),
$this->l('The delivery method will be enabled only in this range'),
],
'options' => [
'query' => $this->getDays(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Available from hour'),
'name' => 'PMINPOSTPACZKOMATY_EOF_HT',
'is_default' => 0,
'hint' => [
$this->l('If you want to use this function, remember about the InPost regulations'),
$this->l('Select the days of the week and the hours'),
$this->l('when the customer will be able to choose the delivery option'),
$this->l('The delivery method will be enabled only in this range'),
],
'options' => [
'query' => $this->getHours(),
'id' => 'id_option',
'name' => 'name',
],
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Package Settings Cash on delivery') . ' - ' . $this->l('End of week'),
'icon' => 'icon-cogs',
],
'input' => [
[
'type' => 'select',
'label' => $this->l('Default Size'),
'name' => 'PMINPOSTPACZKOMATY_SIZE_EOF_COD',
'is_default' => 0,
'hint' => [
$this->l('The default size of the parcel paid in advance.'),
$this->l('You can change the size when generating the label.'),
],
'options' => [
'query' => $this->getSizes(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Delivery method'),
'name' => 'PMINPOSTPACZKOMATY_DELIVERY_EOF_COD',
'multiple' => true,
'is_default' => 0,
'hint' => [
$this->l('Delivery method for prepaid shipment.'),
$this->l('If you do not see the delivery method, create it.'),
$this->l('The module does not automatically create a carrier'),
],
'options' => [
'query' => $this->getCarriers(),
'id' => 'id_carrier',
'name' => 'name',
],
],
[
'type' => 'html',
'label' => $this->l('Use button to create new delivery method'),
'name' => 'CREATE_DELIVERY_METHOD_EOF_COD',
'hint' => [
$this->l('Click on this button to create delivery method.'),
],
'html_content' => '<button name="CREATE_DELIVERY_METHOD" value="cod_eof" class="btn btn-default">' .
$this->l('Create delivery method')
. '</button>',
],
[
'type' => $switch_type,
'label' => $this->l('Issurance'),
'name' => 'PMINPOSTPACZKOMATY_ISSURANCE_EOF_COD',
'is_default' => 0,
'class' => 't',
'hint' => $this->l('Delivery issurance'),
'values' => $this->getEnabledOptions(),
],
[
'type' => $switch_type,
'label' => $this->l('Auto enable'),
'name' => 'PMINPOSTPACZKOMATY_EOF_COD_AE',
'is_default' => 0,
'class' => 't',
'hint' => $this->l('Auto enable delivery option'),
'values' => $this->getEnabledOptions(),
],
[
'type' => 'select',
'label' => $this->l('Available from day'),
'name' => 'PMINPOSTPACZKOMATY_EOF_COD_D',
'is_default' => 0,
'hint' => [
$this->l('If you want to use this function, remember about the InPost regulations'),
$this->l('Select the days of the week and the hours'),
$this->l('when the customer will be able to choose the delivery option'),
$this->l('The delivery method will be enabled only in this range'),
],
'options' => [
'query' => $this->getDays(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Available from hour'),
'name' => 'PMINPOSTPACZKOMATY_EOF_COD_H',
'is_default' => 0,
'hint' => [
$this->l('If you want to use this function, remember about the InPost regulations'),
$this->l('Select the days of the week and the hours'),
$this->l('when the customer will be able to choose the delivery option'),
$this->l('The delivery method will be enabled only in this range'),
],
'options' => [
'query' => $this->getHours(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Available to day'),
'name' => 'PMINPOSTPACZKOMATY_EOF_COD_DT',
'is_default' => 0,
'hint' => [
$this->l('If you want to use this function, remember about the InPost regulations'),
$this->l('Select the days of the week and the hours'),
$this->l('when the customer will be able to choose the delivery option'),
$this->l('The delivery method will be enabled only in this range'),
],
'options' => [
'query' => $this->getDays(),
'id' => 'id_option',
'name' => 'name',
],
],
[
'type' => 'select',
'label' => $this->l('Available to hour'),
'name' => 'PMINPOSTPACZKOMATY_EOF_COD_HT',
'is_default' => 0,
'hint' => [
$this->l('If you want to use this function, remember about the InPost regulations'),
$this->l('Select the days of the week and the hours'),
$this->l('when the customer will be able to choose the delivery option'),
$this->l('The delivery method will be enabled only in this range'),
],
'options' => [
'query' => $this->getHours(),
'id' => 'id_option',
'name' => 'name',
],
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$params = ['token' => Tools::substr(md5(_COOKIE_KEY_), 0, 12)];
$cron_url_bl = $this->context->link->getModuleLink($this->name, 'baselinker', $params);
$form[] = [
'form' => [
'legend' => [
'title' => $this->l('Baselinker send Parcelocker with api'),
'icon' => 'icon-cogs',
],
'input' => [
[
'type' => 'text',
'label' => $this->l('Id order start'),
'name' => 'PMINPOSTPACZKOMATY_BL_ORDER',
'is_default' => 0,
'hint' => [
$this->l('If you are use Baselinker connected by API.'),
$this->l('To send pracel locker to baselinker. Set first order'),
],
],
[
'type' => 'text',
'label' => $this->l('Baselinker token'),
'name' => 'PMINPOSTPACZKOMATY_BL_TOKEN',
'is_default' => 0,
'hint' => [
$this->l('If you are use Baselinker connected by API.'),
$this->l('To send pracel locker to baselinker. Set baselinker token'),
],
],
[
'type' => 'html',
'label' => $this->l('Send orders to baselinker'),
'name' => 'CREATE_DELIVERY_CRON_URL',
'is_default' => 0,
'html_content' => '
<div class="col-lg-12">
<a target="_blank" class="btn btn-default" href="' . $cron_url_bl . '">
' . $this->l('Send orders to baselinker') . '
</a>
</div>
',
],
[
'type' => 'html',
'label' => $this->l('Link to cron'),
'name' => 'CREATE_DELIVERY_CRON_URL',
'is_default' => 0,
'html_content' => '<div class="col-lg-12">
<input readonly="readonly" type="text" value="' . $cron_url_bl . '" />
</div>',
],
],
'submit' => [
'title' => $this->l('Save'),
],
],
];
$form_titles = [];
foreach ($form as $form_item) {
$form_titles[] = [
'name' => $form_item['form']['legend']['title'],
'required' => isset($form_item['form']['legend']['required']) ?
$form_item['form']['legend']['required'] : false,
];
}
$this->context->smarty->assign('form_titles', $form_titles);
return $form;
}
protected function getConfigurationFormValues()
{
$return = [
'PMINPOSTPACZKOMATY_ADD_COD' => Configuration::get('PMINPOSTPACZKOMATY_ADD_COD'),
'PMINPOSTPACZKOMATY_BL_CRON' => Configuration::get('PMINPOSTPACZKOMATY_BL_CRON'),
'PMINPOSTPACZKOMATY_BL_ORDER' => Configuration::get('PMINPOSTPACZKOMATY_BL_ORDER'),
'PMINPOSTPACZKOMATY_BL_TOKEN' => Configuration::get('PMINPOSTPACZKOMATY_BL_TOKEN'),
'PMINPOSTPACZKOMATY_BUILDING_NUMBER' => Configuration::get('PMINPOSTPACZKOMATY_BUILDING_NUMBER'),
'PMINPOSTPACZKOMATY_CITY' => Configuration::get('PMINPOSTPACZKOMATY_CITY'),
'PMINPOSTPACZKOMATY_CM' => Configuration::get('PMINPOSTPACZKOMATY_CM'),
'PMINPOSTPACZKOMATY_CM_EN' => Configuration::get('PMINPOSTPACZKOMATY_CM_EN'),
'PMINPOSTPACZKOMATY_COMPANY_NAME' => Configuration::get('PMINPOSTPACZKOMATY_COMPANY_NAME'),
'PMINPOSTPACZKOMATY_DELIVERY_BW[]' => $this->getCarriersBw(),
'PMINPOSTPACZKOMATY_DELIVERY_COD[]' => $this->getCarriersCod(),
'PMINPOSTPACZKOMATY_DELIVERY_EOF[]' => $this->getCarriersBwEof(),
'PMINPOSTPACZKOMATY_DELIVERY_EOF_COD[]' => $this->getCarriersCodEof(),
'PMINPOSTPACZKOMATY_DELIVERY_BW' => $this->getCarriersBw(),
'PMINPOSTPACZKOMATY_DELIVERY_COD' => $this->getCarriersCod(),
'PMINPOSTPACZKOMATY_DELIVERY_EOF' => $this->getCarriersBwEof(),
'PMINPOSTPACZKOMATY_DELIVERY_EOF_COD' => $this->getCarriersCodEof(),
'PMINPOSTPACZKOMATY_DISPLAY_PLACE' => Configuration::get('PMINPOSTPACZKOMATY_DISPLAY_PLACE'),
'PMINPOSTPACZKOMATY_DF' => Configuration::get('PMINPOSTPACZKOMATY_DF'),
'PMINPOSTPACZKOMATY_EMAIL' => Configuration::get('PMINPOSTPACZKOMATY_EMAIL'),
'PMINPOSTPACZKOMATY_EOF_AE' => Configuration::get('PMINPOSTPACZKOMATY_EOF_AE'),
'PMINPOSTPACZKOMATY_EOF_COD_AE' => Configuration::get('PMINPOSTPACZKOMATY_EOF_COD_AE'),
'PMINPOSTPACZKOMATY_EOF_COD_D' => Configuration::get('PMINPOSTPACZKOMATY_EOF_COD_D'),
'PMINPOSTPACZKOMATY_EOF_COD_DT' => Configuration::get('PMINPOSTPACZKOMATY_EOF_COD_DT'),
'PMINPOSTPACZKOMATY_EOF_COD_H' => Configuration::get('PMINPOSTPACZKOMATY_EOF_COD_H'),
'PMINPOSTPACZKOMATY_EOF_COD_HT' => Configuration::get('PMINPOSTPACZKOMATY_EOF_COD_HT'),
'PMINPOSTPACZKOMATY_EOF_D' => Configuration::get('PMINPOSTPACZKOMATY_EOF_D'),
'PMINPOSTPACZKOMATY_EOF_DT' => Configuration::get('PMINPOSTPACZKOMATY_EOF_DT'),
'PMINPOSTPACZKOMATY_EOF_H' => Configuration::get('PMINPOSTPACZKOMATY_EOF_H'),
'PMINPOSTPACZKOMATY_EOF_HT' => Configuration::get('PMINPOSTPACZKOMATY_EOF_HT'),
'PMINPOSTPACZKOMATY_FIRST_NAME' => Configuration::get('PMINPOSTPACZKOMATY_FIRST_NAME'),
'PMINPOSTPACZKOMATY_GEO' => Configuration::get('PMINPOSTPACZKOMATY_GEO'),
'PMINPOSTPACZKOMATY_LL' => Configuration::get('PMINPOSTPACZKOMATY_LL'),
'PMINPOSTPACZKOMATY_GGMAP' => Configuration::get('PMINPOSTPACZKOMATY_GGMAP'),
'PMINPOSTPACZKOMATY_GUIDE' => Configuration::get('PMINPOSTPACZKOMATY_GUIDE'),
'PMINPOSTPACZKOMATY_ID' => Configuration::get('PMINPOSTPACZKOMATY_ID'),
'PMINPOSTPACZKOMATY_ISSURANCE_BW' => Configuration::get('PMINPOSTPACZKOMATY_ISSURANCE_BW'),
'PMINPOSTPACZKOMATY_ISSURANCE_COD' => Configuration::get('PMINPOSTPACZKOMATY_ISSURANCE_COD'),
'PMINPOSTPACZKOMATY_ISSURANCE_EOF' => Configuration::get('PMINPOSTPACZKOMATY_ISSURANCE_EOF'),
'PMINPOSTPACZKOMATY_ISSURANCE_EOF_COD' => Configuration::get('PMINPOSTPACZKOMATY_ISSURANCE_EOF_COD'),
'PMINPOSTPACZKOMATY_LABEL_FORMAT' => Configuration::get('PMINPOSTPACZKOMATY_LABEL_FORMAT'),
'PMINPOSTPACZKOMATY_LABEL_SIZE' => Configuration::get('PMINPOSTPACZKOMATY_LABEL_SIZE'),
'PMINPOSTPACZKOMATY_LAST_NAME' => Configuration::get('PMINPOSTPACZKOMATY_LAST_NAME'),
'PMINPOSTPACZKOMATY_LOG' => Configuration::get('PMINPOSTPACZKOMATY_LOG'),
'PMINPOSTPACZKOMATY_LOGIN' => Configuration::get('PMINPOSTPACZKOMATY_LOGIN'),
'PMINPOSTPACZKOMATY_MACHINE' => Configuration::get('PMINPOSTPACZKOMATY_MACHINE'),
'PMINPOSTPACZKOMATY_MPK' => Configuration::get('PMINPOSTPACZKOMATY_MPK'),
'PMINPOSTPACZKOMATY_INSC' => Configuration::get('PMINPOSTPACZKOMATY_INSC'),
'PMINPOSTPACZKOMATY_NAME' => Configuration::get('PMINPOSTPACZKOMATY_NAME'),
'PMINPOSTPACZKOMATY_OM' => Configuration::get('PMINPOSTPACZKOMATY_OM'),
'PMINPOSTPACZKOMATY_OM_EN' => Configuration::get('PMINPOSTPACZKOMATY_OM_EN'),
'PMINPOSTPACZKOMATY_OS' => Configuration::get('PMINPOSTPACZKOMATY_OS'),
'PMINPOSTPACZKOMATY_PASSWORD' => Configuration::get('PMINPOSTPACZKOMATY_PASSWORD'),
'PMINPOSTPACZKOMATY_PHONE' => Configuration::get('PMINPOSTPACZKOMATY_PHONE'),
'PMINPOSTPACZKOMATY_POST_CODE' => Configuration::get('PMINPOSTPACZKOMATY_POST_CODE'),
'PMINPOSTPACZKOMATY_REFERENCE' => Configuration::get('PMINPOSTPACZKOMATY_REFERENCE'),
'PMINPOSTPACZKOMATY_SANDBOX' => Configuration::get('PMINPOSTPACZKOMATY_SANDBOX'),
'PMINPOSTPACZKOMATY_SHIPPING_METHOD' => Configuration::get('PMINPOSTPACZKOMATY_SHIPPING_METHOD'),
'PMINPOSTPACZKOMATY_SHIPX' => Configuration::get('PMINPOSTPACZKOMATY_SHIPX'),
'PMINPOSTPACZKOMATY_SIZE_BW' => Configuration::get('PMINPOSTPACZKOMATY_SIZE_BW'),
'PMINPOSTPACZKOMATY_SIZE_COD' => Configuration::get('PMINPOSTPACZKOMATY_SIZE_COD'),
'PMINPOSTPACZKOMATY_SIZE_EOF' => Configuration::get('PMINPOSTPACZKOMATY_SIZE_EOF'),
'PMINPOSTPACZKOMATY_SIZE_EOF_COD' => Configuration::get('PMINPOSTPACZKOMATY_SIZE_EOF_COD'),
'PMINPOSTPACZKOMATY_STATUS' => Configuration::get('PMINPOSTPACZKOMATY_STATUS'),
'PMINPOSTPACZKOMATY_STATUS_AV[]' => explode(',', Configuration::get('PMINPOSTPACZKOMATY_STATUS_AV')),
'PMINPOSTPACZKOMATY_STATUS_AV' => explode(',', Configuration::get('PMINPOSTPACZKOMATY_STATUS_AV')),
'PMINPOSTPACZKOMATY_STATUS_DEL' => Configuration::get('PMINPOSTPACZKOMATY_STATUS_DEL'),
'PMINPOSTPACZKOMATY_STATUS_PIC' => Configuration::get('PMINPOSTPACZKOMATY_STATUS_PIC'),
'PMINPOSTPACZKOMATY_STREET' => Configuration::get('PMINPOSTPACZKOMATY_STREET'),
'PMINPOSTPACZKOMATY_TOKEN' => Configuration::get('PMINPOSTPACZKOMATY_TOKEN'),
'PMINPOSTPACZKOMATY_MAP_TOKEN' => Configuration::get('PMINPOSTPACZKOMATY_MAP_TOKEN'),
'PMINPOSTPACZKOMATY_WPL' => Configuration::get('PMINPOSTPACZKOMATY_WPL'),
'selected_menu' => Tools::getValue('selected_menu'),
];
return $return;
}
private function switchSandbox()
{
if (Configuration::get('PMINPOSTPACZKOMATY_SANDBOX')) {
$this->sandbox = true;
InpostApiShipx::$shipxUrl = 'https://sandbox-api-shipx-pl.easypack24.net';
InpostApi::$wsdl = 'https://sandbox-api.paczkomaty.pl/';
} else {
$this->sandbox = false;
}
}
public function validatePostFields()
{
$id_carrier_bw = Tools::getValue('PMINPOSTPACZKOMATY_DELIVERY_BW');
if (!is_array($id_carrier_bw)) {
$this->warnings[] = $this->l('Please select delivery method tab:') . ' ' . $this->l('Delivery method');
}
$requiredFields = [
'PMINPOSTPACZKOMATY_COMPANY_NAME',
'PMINPOSTPACZKOMATY_FIRST_NAME',
'PMINPOSTPACZKOMATY_LAST_NAME',
'PMINPOSTPACZKOMATY_EMAIL',
'PMINPOSTPACZKOMATY_PHONE',
'PMINPOSTPACZKOMATY_STREET',
'PMINPOSTPACZKOMATY_BUILDING_NUMBER',
'PMINPOSTPACZKOMATY_POST_CODE',
'PMINPOSTPACZKOMATY_CITY',
];
foreach ($requiredFields as $field) {
if (trim(Tools::getValue($field)) == '') {
$this->warnings[] = $this->l('Please enter company details tab:') . ' ' . $this->l('Sender settings');
break;
}
}
$id_ogranization = Tools::getValue('PMINPOSTPACZKOMATY_ID');
if (trim($id_ogranization) != '') {
if (!is_numeric($id_ogranization)) {
$this->warnings[] = $this->l('Id organization') . ' ' . $this->l('Should be numeric');
}
} elseif (Tools::getValue('PMINPOSTPACZKOMATY_SHIPX') && trim($id_ogranization) == '') {
$this->errors[] = $this->l('Please enter id organization');
}
}
public function removeOldValues($config)
{
foreach (array_keys($config) as $key) {
Configuration::deleteByName($key);
}
}
public function clearMapCache()
{
$dir = dirname(__FILE__) . '/cache/mapcache/';
if (is_dir($dir)) {
$objects = @scandir($dir);
foreach ($objects as $file) {
if ($file != 'index.php' && $file != '.' &&
$file != '..' && file_exists($dir . $file)) {
unlink($dir . $file);
}
}
}
}
protected function postProcess()
{
$this->confirmations[] = $this->l('Settings updated.');
$this->clearMapCache();
$this->validatePostFields();
$form_values = $this->getConfigurationFormValues();
$this->removeOldValues($form_values);
foreach (array_keys($form_values) as $key) {
if ($key == 'PMINPOSTPACZKOMATY_PHONE') {
$value = Tools::getValue($key);
$value = str_replace(['-', ' ', '+48'], ['', '', ''], $value);
if (Tools::strlen($value) != 9) {
$this->warnings[] = $this->l('Please enter vaild phone number');
}
Configuration::updateValue($key, $value);
} elseif ($key == 'PMINPOSTPACZKOMATY_DELIVERY_BW[]' || $key == 'PMINPOSTPACZKOMATY_DELIVERY_BW') {
$value = Tools::getValue('PMINPOSTPACZKOMATY_DELIVERY_BW');
$this->updateSelectedCarriersBw($value);
} elseif ($key == 'PMINPOSTPACZKOMATY_DELIVERY_COD[]' || $key == 'PMINPOSTPACZKOMATY_DELIVERY_COD') {
$value = Tools::getValue('PMINPOSTPACZKOMATY_DELIVERY_COD');
$this->updateSelectedCarriersCod($value);
} elseif ($key == 'PMINPOSTPACZKOMATY_DELIVERY_EOF[]' || $key == 'PMINPOSTPACZKOMATY_DELIVERY_EOF') {
$value = Tools::getValue('PMINPOSTPACZKOMATY_DELIVERY_EOF');
$this->updateSelectedCarriersBwEof($value);
} elseif ($key == 'PMINPOSTPACZKOMATY_DELIVERY_EOF_COD[]'
|| $key == 'PMINPOSTPACZKOMATY_DELIVERY_EOF_COD') {
$value = Tools::getValue('PMINPOSTPACZKOMATY_DELIVERY_EOF_COD');
$this->updateSelectedCarriersCodEof($value);
} elseif ($key == 'PMINPOSTPACZKOMATY_STATUS_AV[]' || $key == 'PMINPOSTPACZKOMATY_STATUS_AV') {
$value = Tools::getValue('PMINPOSTPACZKOMATY_STATUS_AV');
$this->updateSelectedStatuses($value);
} else {
$value = Tools::getValue($key);
if ($key == 'PMINPOSTPACZKOMATY_TOKEN') {
$value = trim($value);
}
Configuration::updateValue($key, $value);
}
}
if (Configuration::get('PMINPOSTPACZKOMATY_LABEL_FORMAT') == 'Zpl' &&
!Configuration::get('PMINPOSTPACZKOMATY_SHIPX')
) {
Configuration::updateValue('PMINPOSTPACZKOMATY_LABEL_FORMAT', 'Pdf');
$this->warnings[] = $this->l('Zpl format is not supported with old API, Defalt Value: Pdf');
}
if (Configuration::get('PMINPOSTPACZKOMATY_SHIPX')) {
$id_parent = Tab::getIdFromClassName('PmInpostPaczkomatyZlecenia');
if ($id_parent) {
$tab = new Tab($id_parent);
$tab->active = true;
$tab->update();
}
} else {
$id_parent = Tab::getIdFromClassName('PmInpostPaczkomatyZlecenia');
if ($id_parent) {
$tab = new Tab($id_parent);
$tab->active = false;
$tab->update();
}
}
if (Tools::getValue('PMINPOSTPACZKOMATY_EOF_AE')) {
$config = Configuration::getMultiple([
'PMINPOSTPACZKOMATY_EOF_D',
'PMINPOSTPACZKOMATY_EOF_H',
'PMINPOSTPACZKOMATY_EOF_DT',
'PMINPOSTPACZKOMATY_EOF_HT',
]);
$start = $config['PMINPOSTPACZKOMATY_EOF_D'] . str_replace(':', '', $config['PMINPOSTPACZKOMATY_EOF_H']);
$end = $config['PMINPOSTPACZKOMATY_EOF_DT'] . str_replace(':', '', $config['PMINPOSTPACZKOMATY_EOF_HT']);
if ($start > $end) {
$this->warnings[] = $this->l('End of week') . ': ' . $this->l('Please check start date and hour') . ' ' .
$this->l('Option is disable');
Configuration::updateValue('PMINPOSTPACZKOMATY_EOF_AE', false);
}
}
if (Tools::getValue('PMINPOSTPACZKOMATY_EOF_COD_AE')) {
$config = Configuration::getMultiple([
'PMINPOSTPACZKOMATY_EOF_COD_D',
'PMINPOSTPACZKOMATY_EOF_COD_H',
'PMINPOSTPACZKOMATY_EOF_COD_DT',
'PMINPOSTPACZKOMATY_EOF_COD_HT',
'PMINPOSTPACZKOMATY_EOF_COD_LAST',
]);
$start = $config['PMINPOSTPACZKOMATY_EOF_COD_D'] .
str_replace(':', '', $config['PMINPOSTPACZKOMATY_EOF_COD_H']);
$end = $config['PMINPOSTPACZKOMATY_EOF_COD_DT'] .
str_replace(':', '', $config['PMINPOSTPACZKOMATY_EOF_COD_HT']);
if ($start > $end) {
$this->warnings[] = $this->l('End of week') . ' ' . $this->l('Cash on delivery') . ': ' .
$this->l('Please check start date and hour') . ' ' .
$this->l('Option is disable');
Configuration::updateValue('PMINPOSTPACZKOMATY_EOF_COD_AE', false);
}
}
if (Tools::isSubmit('PMINPOSTPACZKOMATY_LOG') && Tools::getValue('PMINPOSTPACZKOMATY_LOG') == 0) {
if (file_exists(dirname(__FILE__) . '/log/log.txt')) {
unlink(dirname(__FILE__) . '/log/log.txt');
}
}
if (Tools::isSubmit('CREATE_DELIVERY_METHOD')) {
$this->createDeliveryMethod();
}
$this->switchSandbox();
if (sizeof($this->getCarriersBw()) == 0) {
$this->warnings[] = $this->l('Please chose Parcel locker delivery method');
}
if (sizeof($this->getCarriersCod()) == 0) {
$this->warnings[] = $this->l('Please chose Parcel locker delivery method for COD');
}
if (Tools::isSubmit('saveAndTest') && Tools::getValue('PMINPOSTPACZKOMATY_SHIPX') == 1) {
$api = new InpostApiShipx();
$connection = $api->checkConnections();
if ($connection === false) {
$this->errors[] = $this->l('Can not connect to API');
} elseif (isset($connection['status']) && $connection['status'] == 401) {
$this->errors[] = $this->l('There is some error: ') . $this->parseErrors($connection['message']);
} elseif (isset($connection['count'])) {
$this->confirmations[] = $this->l('Connect successfully');
if ($connection['count'] == 1) {
$this->context->smarty->assign('company_informations', $connection['items'][0]);
$company_name = $connection['items'][0]['name'];
$company_address = $connection['items'][0]['address'];
if (Configuration::get('PMINPOSTPACZKOMATY_COMPANY_NAME') == '') {
Configuration::updateValue('PMINPOSTPACZKOMATY_COMPANY_NAME', $company_name);
}
$fields = [
'PMINPOSTPACZKOMATY_STREET' => 'street',
'PMINPOSTPACZKOMATY_BUILDING_NUMBER' => 'building_number',
'PMINPOSTPACZKOMATY_POST_CODE' => 'post_code',
'PMINPOSTPACZKOMATY_CITY' => 'city',
];
foreach ($fields as $field => $value) {
if (Configuration::get($field) == '' && isset($company_address[$value])) {
Configuration::updateValue($field, $company_address[$value]);
}
}
}
}
} elseif (Tools::isSubmit('saveAndTest') && Tools::getValue('PMINPOSTPACZKOMATY_SHIPX') == 0) {
if (!ini_get('allow_url_fopen')) {
$this->errors[] =
$this->l('Test connection faild') . ' ' .
$this->l('On the server enable allow_url_fopen, ask your provider how to enable the option.') . ' ' .
$this->l('You can try using ShipX');
} else {
$api = new InpostApi();
$result = $api->checkConnections();
if ($result) {
$this->confirmations[] = $this->l('Connect successfully');
} else {
$this->errors[] = $this->l('There is some error: ') . $this->l('Can not connect to API');
}
}
}
}
public function mFil($array, $array2)
{
$return = array_merge($array, $array2);
if (function_exists('array_filter')) {
$return = array_filter($return, 'strlen');
}
return $return;
}
private function addMediaCart()
{
if (self::$media_added_cache === false) {
$opc_module = '';
if ($this->version_ps == '1.7') {
if (Module::isEnabled('supercheckout')) {
$settings = unserialize(Configuration::get('VELOCITY_SUPERCHECKOUT'));
if (isset($settings['enable']) && $settings['enable']) {
$opc_module = 'supercheckout_17';
}
} elseif (Module::isEnabled('steasycheckout')) {
$opc_module = 'steasycheckout_17';
} elseif (Module::isEnabled('spstepcheckout')) {
$opc_module = 'spstepcheckout_17';
} elseif (Module::isEnabled('ets_onepagecheckout') && Configuration::get('ETS_OPC_1PAGE_ENABLED')) {
$opc_module = 'ets_onepagecheckout_17';
}
}
$this->getCustomerLastInpostMachineAndSetCurrentCart();
$def = [
'id_pudo_carrier' => '0',
'pm_inpostpaczkomaty_carrier' => $this->mFil($this->getCarriersBw(), $this->getCarriersBwEof()),
'pm_inpostpaczkomaty_carrier_cod' => $this->mFil($this->getCarriersCod(), $this->getCarriersCodEof()),
'pm_inpostpaczkomaty_carrier_eof' => $this->mFil($this->getCarriersCodEof(), $this->getCarriersBwEof()),
'pm_inpostpaczkomaty_current_cart' => Context::getContext()->cart->id,
'pm_inpostpaczkomaty_display_place' => Configuration::get('PMINPOSTPACZKOMATY_DISPLAY_PLACE'),
'pm_inpostpaczkomaty_gcup' => $this->context->link->getModuleLink($this->name, 'ajax'),
'pm_inpostpaczkomaty_geo' => (int) Configuration::get('PMINPOSTPACZKOMATY_GEO'),
'pm_inpostpaczkomaty_label' => $this->l('Select machine'),
'pm_inpostpaczkomaty_label_weekend' => $this->l('Please select machine to your order') . ' ' . $this->l(' - only parcel lockers for weekend packages'),
'pm_inpostpaczkomaty_machine_label' => $this->l('Machine: '),
'pm_inpostpaczkomaty_modulepath' => $this->context->link->getModuleLink($this->name, 'ajax'),
'pm_inpostpaczkomaty_opc' => $opc_module,
'pm_inpostpaczkomaty_placeholder' => $this->l('Enter city, street, or machine name'),
'pm_inpostpaczkomaty_placeholder2' => $this->l('Use button to select machine'),
'pm_inpostpaczkomaty_point_url' => $this->getPointsUrl(),
'pm_inpostpaczkomaty_prestakey' => md5(_COOKIE_KEY_),
'pm_inpostpaczkomaty_ps' => $this->version_ps,
'pm_inpostpaczkomaty_sandbox' => $this->sandbox,
'pm_inpostpaczkomaty_selected' => $this->getSelectedMachine(),
'pm_inpostpaczkomaty_selected_label' => $this->l('Please select machine to your order'),
'pm_inpostpaczkomaty_token' => $this->getEncryptedToken(),
'pm_inpostpaczkomaty_v5_token' => Configuration::get('PMINPOSTPACZKOMATY_MAP_TOKEN'),
'pm_inpostpaczkomaty_wpzl' => Configuration::get('PMINPOSTPACZKOMATY_WPL'),
];
Media::addJsDef($def);
self::$media_added_cache = true;
}
}
public function isCarrierEnabled()
{
return (bool) (sizeof($this->getCarriersBw()) || sizeof($this->getCarriersCod()) ||
sizeof($this->getCarriersBwEof()) || sizeof($this->getCarriersCodEof()));
}
private function getSizes()
{
return [
['id_option' => 'A', 'name' => $this->l('A')],
['id_option' => 'B', 'name' => $this->l('B')],
['id_option' => 'C', 'name' => $this->l('C')],
];
}
private function getSizesValues()
{
$sizes = $this->getSizes();
$values = [];
foreach ($sizes as $size) {
$values[] = [
'id' => $size['id_option'],
'value' => $size['id_option'],
'label' => $size['name'],
];
}
return $values;
}
private function getDays()
{
$days = [
['id_option' => '1', 'name' => $this->l('Monday')],
['id_option' => '2', 'name' => $this->l('Tuesday')],
['id_option' => '3', 'name' => $this->l('Wednesday')],
['id_option' => '4', 'name' => $this->l('Thursday')],
['id_option' => '5', 'name' => $this->l('Friday')],
['id_option' => '6', 'name' => $this->l('Saturday')],
['id_option' => '7', 'name' => $this->l('Sunday')],
];
return $days;
}
private function getHours()
{
$hours = [];
for ($i = 0; $i <= 23; ++$i) {
$calc = str_pad($i, 2, '0', STR_PAD_LEFT);
$hours[] = ['id_option' => $calc . ':00', 'name' => $calc . ':00'];
$hours[] = ['id_option' => $calc . ':30', 'name' => $calc . ':30'];
}
return $hours;
}
private function getLabelFormat()
{
$sizes = [
['id_option' => 'Pdf', 'name' => $this->l('Pdf')],
['id_option' => 'Epl', 'name' => $this->l('Epl')],
];
if (Configuration::get('PMINPOSTPACZKOMATY_SHIPX')) {
$sizes[] = ['id_option' => 'Zpl', 'name' => $this->l('Zpl')];
}
return $sizes;
}
private function getLabelSize()
{
return [
['id_option' => 'A4', 'name' => $this->l('A4')],
['id_option' => 'A6P', 'name' => $this->l('A6P')],
];
}
private function getCarriers()
{
$carriers_list = Carrier::getCarriers(Context::getContext()->language->id);
return $carriers_list;
}
private function getAvailableMaps()
{
return [
['id' => 0, 'name' => $this->l('Open maps')],
['id' => 2, 'name' => $this->l('Geo widget v5')],
];
}
private function getShippingMethod()
{
$shipping_method = [
[
'id_option' => '1',
'name' => $this->l('Giving in to the machine'),
'disabled' => 'disabled',
],
[
'id_option' => '0',
'name' => $this->l('I will create a pickup order (courier) service extra paid'),
],
];
if (Configuration::get('PMINPOSTPACZKOMATY_SHIPX')) {
$shipping_method = array_merge($shipping_method, [
[
'id_option' => '2',
'name' => $this->l('Giving in to the POP'),
],
]);
}
return $shipping_method;
}
private function getDisplayPlace()
{
$display_place = [
[
'id_option' => '1',
'name' => $this->l('Display after table'),
],
[
'id_option' => '2',
'name' => $this->l('Display before table'),
],
[
'id_option' => '3',
'name' => $this->l('Display after carrier description'),
],
[
'id_option' => '4',
'name' => $this->l('Display before carrier description'),
],
];
if (version_compare(_PS_VERSION_, '1.7.0', '<')) {
$display_place[] = [
'id_option' => '5',
'name' => $this->l('Display in HOOK BEFORE CARRIER'),
];
$display_place[] = [
'id_option' => '6',
'name' => $this->l('Display in HOOK EXTRA CARRIER'),
];
}
return $display_place;
}
private function findInArray($search_in, $term)
{
foreach ($search_in as $search_in_item) {
if (strpos($search_in_item, mb_strtolower($term)) !== false) {
return 1;
}
}
return 0;
}
private function sortResult($items, $terms)
{
$find = [];
$terms = explode(' ', str_replace('-', ' ', $terms));
foreach ($items as $items_item) {
$search = [$items_item->name, $items_item->address->line1, $items_item->address->line2];
$search = array_merge($search, (array) $items_item->address_details);
$search = array_map('mb_strtolower', $search);
$math = 0;
foreach ($terms as $terms_item) {
$math += $this->findInArray($search, $terms_item);
}
$find[] = ['math' => $math, 'item' => $items_item];
}
usort($find, function ($first_element, $second_element) {
return $second_element['math'] - $first_element['math'];
});
$objects = [];
foreach ($find as $find_item) {
$objects[] = $find_item['item'];
}
return $objects;
}
private function getPoint($point_name)
{
if (empty($point_name)) {
return false;
}
if ($this->sandbox) {
$result = @Tools::file_get_contents('https://sandbox-api-pl-points.easypack24.net/v1/points/' . $point_name);
} else {
$result = @Tools::file_get_contents('https://api-pl-points.easypack24.net/v1/points/' . $point_name);
}
$point = @json_decode($result);
if (is_object($point)) {
$address_details = [$point->address->line1, $point->address->line2];
array_filter($address_details, 'strlen');
$address = implode(', ', $address_details);
return [
'{name}' => $point_name,
'{address}' => trim($address),
'{location_description}' => $point->location_description
];
}
return false;
}
private function getPoints()
{
$get = $_GET;
$terms = Tools::getValue('term');
$get['city'] = trim(mb_strtolower($get['term']));
$get['city'] = mb_convert_case($get['city'], MB_CASE_TITLE);
unset($get['term'], $get['prequest'], $get['module'], $get['controller'], $get['fc']);
$get2 = $get;
unset($get2['city']);
$params = http_build_query($get);
$params = str_replace('%5B0%5D=', '%5B%5D=', $params);
$params2 = http_build_query($get2);
$params2 = str_replace('%5B0%5D=', '%5B%5D=', $params2);
if ($this->sandbox) {
$map_result = Tools::file_get_contents('https://sandbox-api-pl-points.easypack24.net/v1/points/?' . $params);
} else {
$map_result = Tools::file_get_contents('https://api-pl-points.easypack24.net/v1/points/?' . $params);
}
$result = json_decode($map_result);
if (sizeof($result->items) == 0) {
if ($this->sandbox) {
$map_result = Tools::file_get_contents(
'https://sandbox-api-pl-points.easypack24.net/v1/points/?' . $params2
);
} else {
$map_result = Tools::file_get_contents('https://api-pl-points.easypack24.net/v1/points/?' . $params2);
}
$result = json_decode($map_result);
}
foreach ($result->items as $key => $item) {
if (strpos($item->name, 'POP') !== false) {
unset($result->items[$key]);
}
}
$result->items = $this->sortResult($result->items, $terms);
foreach ($result->items as &$current_item) {
$current_item->location_description = (string) $current_item->location_description;
$current_item->opening_hours = (string) $current_item->opening_hours;
$current_item->payment_point_descr = (string) $current_item->payment_point_descr;
}
ob_clean();
exit(json_encode($result));
}
private function selectMachine()
{
$id_cart = (int) Tools::getValue('pm_inpostpaczkomaty_current_cart');
if (Tools::getValue('token') == $this->getEncryptedToken($id_cart)) {
$paczkomatyList = PaczkomatyList::getByIdCart($id_cart);
$paczkomatyList->machine = pSql(Tools::getValue('selected'));
$paczkomatyList->save();
} else {
exit(json_encode(['Bad token']));
}
}
private function getLocation()
{
$id_cart = Context::getContext()->cart->id;
if (Tools::getValue('token') == $this->getEncryptedToken($id_cart) || Tools::getValue('token') == md5(_COOKIE_KEY_)) {
foreach (array_keys($_GET) as $key) {
if (!in_array($key, ['address', 'timestamp', 'ajaxSearch', 'key'])) {
unset($_GET[$key]);
}
}
ob_clean();
$address = urlencode(Tools::getValue('address'));
$md5trimaddress = md5($address);
if (file_exists(dirname(__FILE__) . '/cache/mapcache/' . $md5trimaddress)) {
exit(Tools::file_get_contents(dirname(__FILE__) . '/cache/mapcache/' . $md5trimaddress));
}
if ((int) Configuration::get('PMINPOSTPACZKOMATY_GGMAP') == 0 || (int) Configuration::get('PMINPOSTPACZKOMATY_GGMAP') == 2) {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$opts = ['http' => ['header' => "User-Agent: $user_agent\r\n"]];
$context = stream_context_create($opts);
$map_result = Tools::file_get_contents(
'https://osm.inpost.pl/nominatim/search?q=' . $address . '&format=jsonv2',
false,
$context
);
$result = [];
$result_location = json_decode($map_result);
if (isset($result_location[0])) {
$lat = $result_location[0]->lat;
$lon = $result_location[0]->lon;
if (isset($result_location[0])) {
$result['status'] = 'OK';
$result['results'][0]['geometry']['location']['lat'] = $lat;
$result['results'][0]['geometry']['location']['lng'] = $lon;
}
$jsoncontent = json_encode($result);
echo($jsoncontent);
file_put_contents(dirname(__FILE__) . '/cache/mapcache/' . $md5trimaddress, $jsoncontent);
exit();
} else {
$result['status'] = 'Bad location';
$jsoncontent = json_encode($result);
echo($jsoncontent);
exit();
}
}
} else {
$result = [];
$result['status'] = 'NO';
$result['status'] = 'Bad token';
$result['error_message'] = 'Bad token';
echo json_encode($result);
exit();
}
}
public function ajaxCall()
{
if (Tools::isSubmit('prequest')) {
$this->getPoints();
} elseif (Tools::isSubmit('selmachine')) {
$this->selectMachine();
} elseif (Tools::isSubmit('address') && Tools::isSubmit('timestamp') &&
Tools::isSubmit('ajaxSearch') && Tools::isSubmit('key')) {
$this->getLocation();
}
}
private function getSelectedMachine()
{
$cart = Context::getContext()->cart;
return PaczkomatyList::getSelectedMachine($cart->id);
}
public function getSelectedMachineForPayment()
{
$cart = Context::getContext()->cart;
if ($this->isSelectedCarrierBw($cart->id_carrier) ||
$this->isSelectedCarrierBwEof($cart->id_carrier) ||
$this->isSelectedCarrierCod($cart->id_carrier) ||
$this->isSelectedCarrierCodEof($cart->id_carrier)
) {
return $this->l('Selected machine: ') . PaczkomatyList::getSelectedMachine($cart->id);
}
}
public function getDeliverListForm($button = 1)
{
$switch_type = 'switch';
$id_order = (int) Tools::getValue('id_order');
$order = new Order($id_order);
$form = [];
$buttons = [
'send' => [
'title' => $this->l('Send Parcel'),
'icon' => 'icon-save',
'class' => 'btn btn-primary pminpostbutton-ajax send',
'href' => Context::getContext()->link->getAdminLink(
'PmInpostPaczkomatyOrder'
) . '&send=1&id_order=' . $id_order,
],
'printlabel' => [
'title' => $this->l('Print label'),
'icon' => 'icon-print',
'class' => 'btn btn-primary pminpostbutton-ajax printlabel',
'href' => Context::getContext()->link->getAdminLink(
'PmInpostPaczkomatyOrder'
) . '&printlabel=1&id_order=' . $id_order,
],
'createnew' => [
'title' => $this->l('Create addition'),
'icon' => 'icon-file',
'class' => 'btn btn-secondary pminpostbutton-ajax createnew',
'href' => Context::getContext()->link->getAdminLink(
'PmInpostPaczkomatyOrder'
) . '&createnew=1&id_order=' . $id_order,
],
'sendandprint' => [
'title' => $this->l('Send and Print Label'),
'icon' => 'icon-print',
'class' => 'btn btn-primary pminpostbutton-ajax sendandprint',
'href' => Context::getContext()->link->getAdminLink('PmInpostPaczkomatyOrder') .
'&sendandprint=1&id_order=' . $id_order,
],
];
if ($button == 1) {
$buttons['printlabel']['class'] = $buttons['printlabel']['class'] .= ' hidden';
$buttons['createnew']['class'] = $buttons['createnew']['class'] .= ' hidden';
}
if ($button == 2) {
$buttons['send']['class'] = $buttons['send']['class'] .= ' hidden';
$buttons['sendandprint']['class'] = $buttons['sendandprint']['class'] .= ' hidden';
}
if ($button == 3) {
$buttons['send']['class'] = $buttons['send']['class'] .= ' hidden';
$buttons['sendandprint']['class'] = $buttons['sendandprint']['class'] .= ' hidden';
}
$this->context->smarty->assign([
'packages' => PaczkomatyList::getPackages($order->id_cart),
'id_order' => $id_order,
]);
$others = $this->context->smarty->fetch(dirname(__FILE__) . '/views/templates/admin/others.tpl');
$cod_value = (float) Configuration::get('PMINPOSTPACZKOMATY_INSC');
$ubezpieczenie_desc = '';
if ($cod_value > 0) {
$ubezpieczenie_desc = $this->l('Fixed amount of insurance, You can change in configuration.');
}
$form[] = [
'form' => [
'input' => [
[
'type' => 'text',
'label' => $this->l('Recipient`s e-mail address'),
'name' => 'pminpostorder_email',
'class' => 'form-control',
'required' => true,
'size' => 20,
],
[
'type' => 'text',
'label' => $this->l('Mobile phone'),
'name' => 'pminpostorder_phone',
'required' => true,
'size' => 20,
'class' => 'paczkomaty_input form-control',
],
[
'type' => 'text',
'label' => $this->l('To machine InPost'),
'name' => 'pminpostorder_selected',
'is_default' => 0,
'class' => 'widget form-control',
'required' => true,
],
[
'type' => 'radio',
'label' => $this->l('Size'),
'name' => 'pminpostorder_size',
'is_default' => 0,
'br' => false,
'class' => 'btnpaczkomaty-size',
'required' => true,
'values' => $this->getSizesValues(),
],
[
'type' => 'text',
'label' => $this->l('Reference number'),
'name' => 'pminpostorder_reference',
'size' => 20,
'class' => 'paczkomaty_input form-control',
],
[
'type' => 'select',
'label' => $this->l('Giving to the machine'),
'name' => 'pminpostorder_machine',
'is_default' => 0,
'class' => 'paczkomaty_input custom-select',
'options' => ['query' => $this->getShippingMethod(), 'id' => 'id_option', 'name' => 'name'],
],
[
'type' => 'text',
'label' => $this->l('From machine InPost'),
'name' => 'pminpostorder_selected_from',
'is_default' => 0,
'class' => 'widget form-control',
'required' => true,
],
[
'type' => $switch_type,
'label' => $this->l('COD'),
'name' => 'pminpostorder_pobranie',
'is_default' => 0,
'class' => 'paczkomaty_input t machine',
'values' => $this->getEnabledOptions(),
],
[
'type' => 'text',
'label' => $this->l('COD Value'),
'name' => 'pminpostorder_pobranie_value',
'is_default' => 0,
'class' => 'paczkomaty_input t machine form-control',
],
[
'type' => $switch_type,
'label' => $this->l('Issurance'),
'name' => 'pminpostorder_ubezpieczenie',
'is_default' => 0,
'class' => 'paczkomaty_input t machine',
'values' => $this->getEnabledOptions(),
],
[
'type' => 'text',
'label' => $this->l('Isurance Value'),
'name' => 'pminpostorder_ubezpieczenie_value',
'desc' => $ubezpieczenie_desc,
'is_default' => 0,
'class' => 'paczkomaty_input t machine form-control',
],
[
'type' => $switch_type,
'label' => $this->l('End of week'),
'name' => 'pminpostorder_eof',
'is_default' => 0,
'class' => 'paczkomaty_input t machine',
'values' => $this->getEnabledOptions(),
],
[
'type' => 'html',
'label' => $this->l('Tracking numers'),
'name' => 'OTHER_PACKAGES',
'html_content' => $others,
],
[
'type' => 'select',
'label' => $this->l('Label format'),
'name' => 'pminpostorder_format',
'class' => 'custom-select',
'is_default' => 0,
'options' => ['query' => $this->getLabelFormat(), 'id' => 'id_option', 'name' => 'name',
],
'hint' => $this->l('Label file format'),
],
[
'type' => 'select',
'label' => $this->l('Label type'),
'name' => 'pminpostorder_size_l',
'class' => 'custom-select',
'is_default' => 0,
'options' => ['query' => $this->getLabelSize(), 'id' => 'id_option', 'name' => 'name'],
'hint' => $this->l('The size of the downloaded file'),
],
],
'buttons' => $buttons,
],
];
return $form;
}
public function isSelectedCarrierBw($id_carrier)
{
return in_array($id_carrier, $this->getCarriersBw()) || $this->isSelectedCarrierBwEof($id_carrier);
}
public function isSelectedCarrierBwEof($id_carrier)
{
return in_array($id_carrier, $this->getCarriersBwEof());
}
private function filterResult(&$result)
{
$results = [];
if (Module::isInstalled('onepagecheckout')) {
foreach ($result as &$result_item) {
if ($result_item) {
$results[] = Cart::intifier($result_item . ',');
$results[] = $result_item;
}
}
$result = array_filter($results, 'strlen');
}
}
public function getCarriersBw()
{
$result = explode(',', Configuration::get('PMINPOSTPACZKOMATY_DELIVERY_BW'));
$this->filterResult($result);
return $result;
}
public function getCarriersBwEof()
{
$result = explode(',', Configuration::get('PMINPOSTPACZKOMATY_DELIVERY_EOF'));
$this->filterResult($result);
return $result;
}
public function isSelectedCarrierCod($id_carrier)
{
return in_array($id_carrier, $this->getCarriersCod()) || $this->isSelectedCarrierCodEof($id_carrier);
}
public function isSelectedCarrierCodEof($id_carrier)
{
return in_array($id_carrier, $this->getCarriersCodEof());
}
public function getCarriersCod()
{
$result = explode(',', Configuration::get('PMINPOSTPACZKOMATY_DELIVERY_COD'));
$this->filterResult($result);
return $result;
}
public function getCarriersCodEof()
{
$result = explode(',', Configuration::get('PMINPOSTPACZKOMATY_DELIVERY_EOF_COD'));
$this->filterResult($result);
return $result;
}
public function replaceComma($string)
{
return (float) str_replace(',', '.', $string);
}
public function getPackageDetails($params)
{
$config = [];
if (isset($params['order']) && $params['order'] instanceof Order) {
$order = $params['order'];
} else {
$order = new Order($params['id_order']);
}
$id_cart = $order->id_cart;
$customer = new Customer($order->id_customer);
$address = new Address($order->id_address_delivery);
$config['pminpostorder_email'] = $customer->email;
$config['pminpostorder_phone'] = $address->phone_mobile;
if ($config['pminpostorder_phone'] == '') {
$config['pminpostorder_phone'] = $address->phone;
}
$config['pminpostorder_phone'] = str_replace('+48', '', $config['pminpostorder_phone']);
$config['pminpostorder_phone'] = preg_replace('/\s+/', '', $config['pminpostorder_phone']);
$config['pminpostorder_phone'] = $this->trimPhone($config['pminpostorder_phone']);
$config['pminpostorder_firstname'] = $address->firstname;
$config['pminpostorder_pobranie_value'] = (float) $order->total_paid_tax_incl;
$config['pminpostorder_ubezpieczenie_value'] = (float) $order->total_paid_tax_incl;
if (($cod_value = (float) Configuration::get('PMINPOSTPACZKOMATY_INSC')) > 0) {
$config['pminpostorder_ubezpieczenie_value'] = $this->replaceComma($cod_value);
}
if ($this->isSelectedCarrierBwEof($order->id_carrier)) {
$config['pminpostorder_eof'] = 1;
$config['pminpostorder_pobranie'] = 0;
$config['pminpostorder_size'] = Configuration::get('PMINPOSTPACZKOMATY_SIZE_EOF');
$config['pminpostorder_ubezpieczenie'] = Configuration::get('PMINPOSTPACZKOMATY_ISSURANCE_EOF');
} elseif ($this->isSelectedCarrierCodEof($order->id_carrier)) {
$config['pminpostorder_eof'] = 1;
$config['pminpostorder_pobranie'] = 1;
$config['pminpostorder_size'] = Configuration::get('PMINPOSTPACZKOMATY_SIZE_EOF_COD');
$config['pminpostorder_ubezpieczenie'] = Configuration::get('PMINPOSTPACZKOMATY_ISSURANCE_EOF_COD');
} elseif ($this->isSelectedCarrierCod($order->id_carrier)) {
$config['pminpostorder_eof'] = 0;
$config['pminpostorder_pobranie'] = 1;
$config['pminpostorder_size'] = Configuration::get('PMINPOSTPACZKOMATY_SIZE_COD');
$config['pminpostorder_ubezpieczenie'] = Configuration::get('PMINPOSTPACZKOMATY_ISSURANCE_COD');
} elseif ($this->isSelectedCarrierBw($order->id_carrier)) {
$config['pminpostorder_eof'] = 0;
$config['pminpostorder_pobranie'] = 0;
$config['pminpostorder_size'] = Configuration::get('PMINPOSTPACZKOMATY_SIZE_BW');
$config['pminpostorder_ubezpieczenie'] = Configuration::get('PMINPOSTPACZKOMATY_ISSURANCE_BW');
} else {
$config['pminpostorder_eof'] = 0;
$config['pminpostorder_pobranie'] = 0;
$config['pminpostorder_size'] = Configuration::get('PMINPOSTPACZKOMATY_SIZE_BW');
$config['pminpostorder_ubezpieczenie'] = Configuration::get('PMINPOSTPACZKOMATY_ISSURANCE_BW');
$config['warnings'] =
$this->l('Warning: delivery method was not foud please check Cash on delivery value AND end of week');
}
if ($order->module == 'pm_cashondelivery') {
$config['pminpostorder_pobranie'] = 1;
$config['pminpostorder_ubezpieczenie'] = Configuration::get('PMINPOSTPACZKOMATY_ISSURANCE_COD');
}
$config['pminpostorder_selected_from'] = Configuration::get('PMINPOSTPACZKOMATY_MACHINE');
$config['pminpostorder_machine'] = Configuration::get('PMINPOSTPACZKOMATY_SHIPPING_METHOD');
if ($config['pminpostorder_machine'] == 2) {
$config['pminpostorder_machine'] = false;
}
$config['pminpostorder_format'] = Configuration::get('PMINPOSTPACZKOMATY_LABEL_FORMAT');
$config['pminpostorder_size_l'] = Configuration::get('PMINPOSTPACZKOMATY_LABEL_SIZE');
$config['pminpostorder_reference'] = $this->genereateReference();
$sql = 'SELECT machine FROM `' . _DB_PREFIX_ . $this->name . 'list` WHERE id_cart = ' . (int) $id_cart;
$selected_machine = Db::getInstance()->getValue($sql);
if ($selected_machine) {
$config['pminpostorder_selected'] = $selected_machine;
} else {
$config['pminpostorder_selected'] = '';
}
$post_info_tmp = PaczkomatyList::getPostInfoByIdCart($id_cart);
$post_info = @stripslashes($post_info_tmp); // Tools::stripslashes($string) { return $string; } PS 1782
if (empty($post_info)) {
$post_info = @stripslashes($post_info_tmp); // Tools::stripslashes($string) { return $string; } PS 1782
}
if ($post_info) {
$post_info = unserialize($post_info);
$config = array_merge($config, $post_info);
}
return $config;
}
public function prepareAdminHook($params, $html = 'all')
{
if ($this->_errors) {
$messages = $this->_errors;
} else {
$messages = false;
}
$this->context->smarty->assign(
[
'form' => $this->renderFormAdmin($params),
'selectedpm' => $this->isSelected($params),
'message' => $messages,
'machine' => '',
]
);
$this->context->smarty->assign('pminpostview', $html);
$this->context->smarty->assign('module_dir', $this->_path);
return $this->display(__FILE__, 'order.tpl');
}
public function genereateReference()
{
$order = new Order(Tools::getValue('id_order'));
$referenceGen = Configuration::get('PMINPOSTPACZKOMATY_REFERENCE');
$products_references = [];
foreach ($order->getProducts() as $product) {
if (trim($product['product_reference']) != '') {
$products_references[] = $product['product_reference'];
}
}
$customer = new Customer($order->id_customer);
$reference = str_replace(
['{id_order}', '{reference}', '{productsreference}', '{firstname}', '{lastname}'],
[$order->id, $order->reference, implode(' ', $products_references), $customer->firstname, $customer->lastname],
$referenceGen
);
$reference = trim(Tools::strtoupper($reference));
return Tools::strlen($reference) > 100 ? mb_substr($reference, 0, 100) . '@' : $reference;
}
private function isSelected($params)
{
if (isset($params['order']) && $params['order'] instanceof Order) {
$order = $params['order'];
} else {
$order = new Order($params['id_order']);
}
$sql = '
SELECT *
FROM `' . _DB_PREFIX_ . $this->name . 'list`
WHERE id_cart = ' . (int) $order->id_cart;
return Db::getInstance()->getRow($sql);
}
public function getOrderStatus($addempty = true)
{
$statuses = OrderState::getOrderStates(Context::getContext()->language->id);
$status = [['id_order_state' => -1, 'name' => '--']];
if (!$addempty) {
return $statuses;
} else {
return array_merge($status, $statuses);
}
}
public function trimPhone($num)
{
$phone = preg_replace('/[^0-9+]/', '', $num);
$phone = str_replace('+48', '', $phone);
if (strpos($phone, '48') === 0) {
$phone = substr($phone, 2);
}
return $phone;
}
private function parseErrors($error)
{
$errors = ['Token is missing or invalid.' => $this->l('Token is missing or invalid.')];
return isset($errors[$error]) ? $errors[$error] : $error;
}
public function getSelectedMachineForOrder($id_order)
{
$order = new Order($id_order);
$id_cart = $order->id_cart;
if ($this->isSelectedCarrierBw($order->id_carrier) || $this->isSelectedCarrierCod($order->id_carrier)) {
return PaczkomatyList::getSelectedMachine($id_cart);
} else {
return false;
}
}
public function hookDisplayBackOfficeHeader()
{
if (Tools::getValue('controller') == 'AdminOrders'
|| Tools::isSubmit('id_order')
|| Tools::getValue('module_name') == $this->name
|| Tools::getValue('configure') == $this->name
|| Tools::getValue('controller') == 'PmInpostPaczkomatyList'
) {
$create_text = [];
$create_text[] = $this->l('After create the delivery method you will be redirected to editing.');
$create_text[] = $this->l('Remember to set appropriate zones and price for the delivery method');
$create_text[] = '';
$create_text[] = $this->l('Next return to module configuration');
$create_text = implode('<br>', $create_text);
Media::addJsDef(
[
'pm_inpostpaczkomaty_label_id' => $this->l('Organization id updated to %s successfully.') . ' ' .
$this->l('Remember to save the configuration.'),
'pm_inpostpaczkomaty_cancel' => $this->l('Cancel'),
'pm_inpostpaczkomaty_create' => $this->l('Create delivery method'),
'pm_inpostpaczkomaty_create_text' => $create_text,
'pm_inpostpaczkomaty_gcup' => $this->context->link->getModuleLink($this->name, 'ajax'),
'pm_inpostpaczkomaty_point_url' => $this->getPointsUrl(),
'pm_inpostpaczkomaty_prestakey' => md5(_COOKIE_KEY_),
'pm_inpostpaczkomaty_wpzl' => Configuration::get('PMINPOSTPACZKOMATY_WPL'),
'psv' => $this->version_ps,
]
);
if (Tools::version_compare(_PS_VERSION_, '1.6.1.7', '<=')) {
$js_script = '';
$js_def = Media::getJsDef();
$this->context->smarty->assign('js_def', $js_def);
foreach ($js_def as $key => $item) {
$js_script .= 'var ' . $key . ' = \'' . $item . '\'' . PHP_EOL;
}
file_put_contents(dirname(__FILE__) . '/views/js/jsdef.js', $js_script);
}
$this->context->controller->addJquery();
$this->context->controller->addJqueryPlugin('growl');
$css_array = [
$this->_path . '/views/css/paczkomator-' . $this->version . '.css',
$this->_path . '/views/css/admin-' . $this->version . '.css',
$this->_path . '/views/css/jquery-confirm.css',
];
if (Tools::version_compare(_PS_VERSION_, '1.6.1.7', '<=')) {
$scripts_array = [
$this->_path . '/views/js/jsdef.js',
$this->_path . '/views/js/admin-order-' . $this->version . '.js',
$this->_path . '/views/js/paczkomator-' . $this->version . '.js',
$this->_path . '/views/js/jquery-confirm.js',
];
} else {
$scripts_array = [
$this->_path . '/views/js/admin-order-' . $this->version . '.js',
$this->_path . '/views/js/paczkomator-' . $this->version . '.js',
$this->_path . '/views/js/jquery-confirm.js',
];
}
if (Tools::getValue('module_name') == $this->name || Tools::getValue('configure') == $this->name) {
$css_array[] = $this->_path . '/views/css/enjoyhint.css';
$scripts_array[] = $this->_path . '/views/js/kinetic.js';
$scripts_array[] = $this->_path . '/views/js/enjoyhint.js';
$scripts_array[] = $this->_path . '/views/js/guide.js';
}
$this->context->controller->addCSS(
$css_array
);
$this->context->controller->addJS(
$scripts_array
);
}
}
public function hookDisplayFooter($params)
{
if (!$this->isCarrierEnabled()) {
return '';
}
if (!in_array($this->context->controller->php_self, ['order', 'order-opc', null])) {
return '';
}
if (!Module::isInstalled('onepagecheckoutps') &&
!Module::isEnabled('onepagecheckoutps') &&
!Module::isInstalled('supercheckout') &&
!Module::isEnabled('supercheckout') &&
!Module::isInstalled('thecheckout') &&
!Module::isEnabled('thecheckout') &&
!$this->move_footer
) {
return '';
}
if ((int) Context::getContext()->cart->id) {
$this->addMediaCart();
return '';
} else {
return '';
}
}
public function hookDisplayAdminOrderTabShip($params)
{
return $this->prepareAdminHook($params, 'tab');
}
public function hookDisplayAdminOrderContentShip($params)
{
return $this->prepareAdminHook($params, 'content');
}
public function hookDisplayHeader()
{
if (!in_array($this->context->controller->php_self, ['order', 'order-opc', null]) &&
Tools::getValue('controller') != 'supercheckout') {
return '';
}
if (!$this->isCarrierEnabled()) {
return '';
}
if (version_compare(_PS_VERSION_, '1.7.0', '>=') === true) {
$this->addMediaCart();
$this->context->controller->addJqueryPlugin('fancybox');
$this->context->controller->registerStylesheet(
'modules-pmpaczkomaty',
'modules/' . $this->name . '/views/css/front17-' . $this->version . '.css'
);
$this->context->controller->registerStylesheet(
'modules-pmpaczkomaty-con',
'modules/' . $this->name . '/views/css/css/jquery-confirm.css'
);
$this->context->controller->registerJavascript(
'jquery-confim',
'modules/' . $this->name . '/views/js/jquery-confirm.js'
);
if (Configuration::get('PMINPOSTPACZKOMATY_GGMAP') == '0') { // OpenMaps
if ($this->sandbox) {
$this->context->controller->registerJavascript(
'remote-widget',
'modules/' . $this->name . '/views/js/openmaps-sandbox-' . $this->version . '.js'
);
} else {
$this->context->controller->registerJavascript(
'remote-widget',
'modules/' . $this->name . '/views/js/openmaps-' . $this->version . '.js'
);
}
$this->context->controller->registerJavascript(
'pminpostpaczkomaty-script',
'modules/' . $this->name . '/views/js/front-' . $this->version . '.js'
);
$this->context->controller->registerStylesheet(
'modules-pmpaczkomaty-ep',
'modules/' . $this->name . '/views/css/easypack-' . $this->version . '-openmaps.css'
);
} elseif (Configuration::get('PMINPOSTPACZKOMATY_GGMAP') == '2') { // OpenMaps v.5
if ($this->sandbox) {
$this->context->controller->registerJavascript(
'remote-widget2',
'https://sandbox-easy-geowidget-sdk.easypack24.net/inpost-geowidget.js',
['server' => 'remote']
);
} else {
$this->context->controller->registerJavascript(
'remote-widget2',
'https://geowidget.inpost.pl/inpost-geowidget.js',
['server' => 'remote']
);
}
$this->context->controller->registerJavascript(
'pminpostpaczkomaty-script',
'modules/' . $this->name . '/views/js/front-' . $this->version . '.v5.js'
);
$this->context->controller->registerStylesheet(
'modules-pmpaczkomaty-ep2',
'https://geowidget.inpost.pl/inpost-geowidget.css',
['server' => 'remote']
);
}
$this->context->controller->registerJavascript(
'pminpostpaczkomaty-paczkomator',
'modules/' . $this->name . '/views/js/paczkomator-' . $this->version . '.js'
);
} else {
if (Configuration::get('PMINPOSTPACZKOMATY_GGMAP') == '0') {
if ($this->sandbox) {
$this->context->controller->addJS($this->_path . '/views/js/openmaps-sandbox-' . $this->version . '.js');
} else {
$this->context->controller->addJS($this->_path . '/views/js/openmaps-' . $this->version . '.js');
}
$this->context->controller->addCSS($this->_path . '/views/css/easypack-' . $this->version . '-openmaps.css');
} elseif (Configuration::get('PMINPOSTPACZKOMATY_GGMAP') == '2') {
$this->context->controller->addJS('https://geowidget.inpost.pl/inpost-geowidget.js');
$this->context->controller->addCSS('https://geowidget.inpost.pl/inpost-geowidget.css');
}
$this->context->controller->addJS($this->_path . '/views/js/paczkomator-' . $this->version . '.js');
if (Configuration::get('PMINPOSTPACZKOMATY_GGMAP') != '2') {
$this->context->controller->addJS($this->_path . '/views/js/front-' . $this->version . '.js');
} else {
$this->context->controller->addJS($this->_path . '/views/js/front-' . $this->version . '.v5.js');
}
$this->context->controller->addJS($this->_path . '/views/js/jquery-confirm.js');
$this->context->controller->addCSS($this->_path . '/views/css/front-' . $this->version . '.css');
$this->context->controller->addCSS($this->_path . '/views/css/jquery-confirm.css');
}
return $this->hookDisplayFooter([]);
}
public function hookActionEmailSendBefore(&$params)
{
$template = $params['template'] == 'new_order' || $params['template'] == 'order_conf';
if (isset($params['template']) && $template && isset($params['cart']) && is_object($params['cart'])) {
$order = Order::getByCartId($params['cart']->id);
if ($order->id && ($this->isSelectedCarrierCod($order->id_carrier) || $this->isSelectedCarrierBw($order->id_carrier))) {
$sql = 'SELECT * FROM `' . _DB_PREFIX_ . 'pminpostpaczkomatylist` WHERE id_cart = ' . (int) $order->id_cart;
$row = Db::getInstance()->getRow($sql);
if ($row) {
$message = '<br><strong>' . $this->l('Selected machine: ') .' '. $row['machine'] . '</strong>';
$point = $this->getPoint($row['machine']);
if ($point && $point['{address}']) {
$message .= '<br/>' . $point['{address}'];
if (isset($point['{location_description}']) && trim($point['{location_description}']) != '') {
$message .= '<br/>(' . $point['{location_description}'] . ')';
}
$params['templateVars']['{machine_address}'] = $point['{address}'];
}
if (isset($params['templateVars']['{message}'])) {
$params['templateVars']['{message}'] .= $message;
}
if (isset($params['templateVars']['{carrier}']) && $params['template'] == 'order_conf') {
$params['templateVars']['{carrier}'] .= $message;
}
$params['templateVars']['{machine}'] = $row['machine'];
$params['templateVars']['{machine_location_description}'] = isset($point['{location_description}']) ? '<br/>' . $point['{location_description}'] : '';
}
}
}
}
private function updateSelectedCarriersBw($id_carrier)
{
if (empty($id_carrier)) {
$id_carrier = [];
}
if (!is_array($id_carrier)) {
$id_carrier = [$id_carrier];
$id_carrier = array_merge($id_carrier, $this->getCarriersBw());
}
$id_carrier = array_filter($id_carrier, 'strlen');
$id_carrier = implode(',', $id_carrier);
Configuration::updateValue('PMINPOSTPACZKOMATY_DELIVERY_BW', $id_carrier);
}
private function updateSelectedCarriersBwEof($id_carrier)
{
if (empty($id_carrier)) {
$id_carrier = [];
}
if (!is_array($id_carrier)) {
$id_carrier = [$id_carrier];
$id_carrier = array_merge($id_carrier, $this->getCarriersBwEof());
}
$id_carrier = array_filter($id_carrier, 'strlen');
$id_carrier = implode(',', $id_carrier);
Configuration::updateValue('PMINPOSTPACZKOMATY_DELIVERY_EOF', $id_carrier);
}
private function updateSelectedCarriersCod($id_carrier)
{
if (empty($id_carrier)) {
$id_carrier = [];
}
if (!is_array($id_carrier)) {
$id_carrier = [$id_carrier];
$id_carrier = array_merge($id_carrier, $this->getCarriersCod());
}
$id_carrier = array_filter($id_carrier, 'strlen');
$id_carrier = implode(',', $id_carrier);
Configuration::updateValue('PMINPOSTPACZKOMATY_DELIVERY_COD', $id_carrier);
}
private function updateSelectedCarriersCodEof($id_carrier)
{
if (empty($id_carrier)) {
$id_carrier = [];
}
if (!is_array($id_carrier)) {
$id_carrier = [$id_carrier];
$id_carrier = array_merge($id_carrier, $this->getCarriersCodEof());
}
$id_carrier = array_filter($id_carrier, 'strlen');
$id_carrier = implode(',', $id_carrier);
Configuration::updateValue('PMINPOSTPACZKOMATY_DELIVERY_EOF_COD', $id_carrier);
}
private function updateSelectedStatuses($statuses)
{
if (empty($statuses)) {
$statuses = [];
}
if (!is_array($statuses)) {
$statuses = [$statuses];
$statuses = array_merge($statuses, $this->getCarriersCodEof());
}
$statuses = array_filter($statuses, 'strlen');
$statuses = implode(',', $statuses);
Configuration::updateValue('PMINPOSTPACZKOMATY_STATUS_AV', $statuses);
}
public function hookActionCarrierUpdate($carrier)
{
$id_carrier = (int) $carrier['id_carrier'];
$ids_carrier_bw = $this->getCarriersBw();
$ids_carrier_cod = $this->getCarriersCod();
$ids_carrier_bw_eof = $this->getCarriersBwEof();
$ids_carrier_cod_eof = $this->getCarriersCodEof();
if ($this->isSelectedCarrierBw($id_carrier)) {
foreach ($ids_carrier_bw as $key => $value) {
if ($value == $id_carrier) {
unset($ids_carrier_bw[$key]);
}
}
$ids_carrier_bw[] = (int) $carrier['carrier']->id;
$this->updateSelectedCarriersBw($ids_carrier_bw);
}
if ($this->isSelectedCarrierBwEof($id_carrier)) {
foreach ($ids_carrier_bw_eof as $key => $value) {
if ($value == $id_carrier) {
unset($ids_carrier_bw_eof[$key]);
}
}
$ids_carrier_bw_eof[] = (int) $carrier['carrier']->id;
$this->updateSelectedCarriersBwEof($ids_carrier_bw_eof);
}
if ($this->isSelectedCarrierCod($id_carrier)) {
foreach ($ids_carrier_cod as $key => $value) {
if ($value == $id_carrier) {
unset($ids_carrier_cod[$key]);
}
}
$ids_carrier_cod[] = (int) $carrier['carrier']->id;
$this->updateSelectedCarriersCod($ids_carrier_cod);
}
if ($this->isSelectedCarrierCodEof($id_carrier)) {
foreach ($ids_carrier_cod_eof as $key => $value) {
if ($value == $id_carrier) {
unset($ids_carrier_cod_eof[$key]);
}
}
$ids_carrier_cod_eof[] = (int) $carrier['carrier']->id;
$this->updateSelectedCarriersCodEof($ids_carrier_cod_eof);
}
}
public function hookDisplayBeforeCarrier($params)
{
if (!$this->isCarrierEnabled()) {
return '';
}
if (Module::isInstalled('steasycheckout') && Module::isEnabled('steasycheckout')) {
$this->move_footer = false;
}
if ($this->move_footer) {
return '';
}
if (!in_array($this->context->controller->php_self, ['order', 'order-opc', null])) {
return '';
}
if (Module::isInstalled('onepagecheckoutps') &&
Module::isEnabled('onepagecheckoutps') ||
Module::isInstalled('supercheckout') &&
Module::isEnabled('supercheckout')
) {
return '';
}
if ((int) Context::getContext()->cart->id) {
$this->addMediaCart();
if (Module::isInstalled('steasycheckout') && Module::isEnabled('steasycheckout')) {
return $this->context->smarty->fetch(dirname(__FILE__) . '/views/templates/front/carrier-1.7.tpl');
} else {
return '';
}
} else {
return '';
}
}
public function hookAdminOrder($params)
{
return $this->prepareAdminHook($params);
}
public function displayWarning($warning)
{
$output = '
<div class="bootstrap">
<div class="module_warning alert alert-warning" >
<button type="button" class="close" data-dismiss="alert">&times;</button>';
if (is_array($warning)) {
$output .= '<ul>';
foreach ($warning as $msg) {
$output .= '<li>' . $msg . '</li>';
}
$output .= '</ul>';
} else {
$output .= $warning;
}
$output .= '</div></div>';
return $output;
}
public function displayConfirmation($string)
{
$output = '
<div class="bootstrap">
<div class="module_confirmation conf confirm alert alert-success">
<button type="button" class="close" data-dismiss="alert">&times;</button>
' . $string . '
</div>
</div>';
return $output;
}
public function displayError($error)
{
$output = '
<div class="bootstrap">
<div class="module_error alert alert-danger" >
<button type="button" class="close" data-dismiss="alert">&times;</button>';
if (is_array($error)) {
$output .= '<ul>';
foreach ($error as $msg) {
$output .= '<li>' . $msg . '</li>';
}
$output .= '</ul>';
} else {
$output .= $error;
}
$output .= '</div></div>';
return $output;
}
private function additionalOrderMessage($order, $point_replace)
{
$id_cart = $order->id_cart;
$msg = new Message();
$message = Configuration::get('PMINPOSTPACZKOMATY_OM');
if (Validate::isCleanHtml($message)) {
$message = str_replace(array_keys($point_replace), array_values($point_replace), $message);
$msg->message = nl2br($message);
$msg->id_cart = (int) $id_cart;
$msg->id_customer = (int) ($order->id_customer);
$msg->id_order = (int) $order->id;
$msg->private = 0;
$msg->add();
$sql = '
SELECT id_customer_thread
FROM `' . _DB_PREFIX_ . 'customer_thread`
WHERE id_order = ' . (int) $order->id;
$id_customer_thread = (int) Db::getInstance()->getValue($sql);
if (!$id_customer_thread) {
$customer = new Customer($order->id_customer);
$customer_thread = new CustomerThread();
$customer_thread->id_customer = (int) ($order->id_customer);
$customer_thread->id_lang = Context::getContext()->language->id;
$customer_thread->id_shop = Context::getContext()->shop->id;
$customer_thread->id_contact = 0;
$customer_thread->id_order = $order->id;
$customer_thread->id_product = 0;
$customer_thread->status = 'open';
$customer_thread->email = $customer->email;
$customer_thread->token = Tools::getToken();
$customer_thread->add();
$id_customer_thread = $customer_thread->id;
}
$customer_message = new CustomerMessage();
$customer_message->id_customer_thread = $id_customer_thread;
$customer_message->id_employee = 0;
$customer_message->message = $message;
$customer_message->private = 0;
$customer_message->read = 0;
$customer_message->add();
}
}
private function additionalCustomerMessage($order, $point_replace)
{
$customer = new Customer($order->id_customer);
$customer_email = $customer->email;
if ($this->version_ps == '1.6') {
$template = 'paczkomat';
} else {
$template = 'paczkomat17';
}
$subject = $this->l('You have chosen the parcel machine to your order');
$dir_mail = dirname(__FILE__) . '/mails/';
$template_vars = [];
$template_vars['{message_title}'] = $subject;
$message = Configuration::get('PMINPOSTPACZKOMATY_CM');
$point_replace['{customer}'] = trim($customer->firstname . ' ' . $customer->lastname . ' ' . $customer->company);
$point_replace['{order_id}'] = $order->id;
$point_replace['{order_reference}'] = $order->reference;
$point_replace['{message_title}'] = $subject;
$message = str_replace(array_keys($point_replace), array_values($point_replace), $message);
$template_vars['{message_lang}'] = nl2br($message);
$template_vars['{order_reference}'] = $order->reference;
$template_vars['{firstname}'] = $customer->firstname;
$template_vars['{lastname}'] = $customer->lastname;
Mail::Send(
$order->id_lang,
$template,
$subject,
$template_vars,
$customer_email,
null,
null,
Configuration::get('PS_SHOP_NAME'),
null,
null,
$dir_mail
);
}
public function hookActionValidateOrder($params)
{
if (isset($params['order'])) {
$order = $params['order'];
} else {
return;
}
$machine_selected = $this->getSelectedMachineForOrder($order->id);
if ($machine_selected === false) {
return;
}
$point_replace = $this->getPoint($machine_selected);
if ($point_replace && Configuration::get('PMINPOSTPACZKOMATY_OM_EN')) { // Admin message
$this->additionalOrderMessage($order, $point_replace);
}
if ($point_replace && Configuration::get('PMINPOSTPACZKOMATY_CM_EN')) { // Customer message
$this->additionalCustomerMessage($order, $point_replace);
}
}
protected function addGroups($carrier)
{
$groups_ids = [];
$groups = Group::getGroups(Context::getContext()->language->id);
foreach ($groups as $group) {
$groups_ids[] = $group['id_group'];
}
$carrier->setGroups($groups_ids);
}
protected function addRanges($carrier)
{
$range_weight = new RangeWeight();
$range_weight->id_carrier = $carrier->id;
$range_weight->delimiter1 = '0';
$range_weight->delimiter2 = '25';
$range_weight->add();
return $range_weight->id;
}
protected function addZones($carrier)
{
$zones = Zone::getZones();
foreach ($zones as $zone) {
$carrier->addZone($zone['id_zone']);
}
return $zones;
}
private function createDeliveryMethod()
{
$name = $this->l('Paczkomaty InPost');
$price = 15;
if (Tools::getValue('CREATE_DELIVERY_METHOD') == 'cod') {
$name = $this->l('Paczkomaty InPost - ') . $this->l(' Cash On Delivery');
$price = 20;
} elseif (Tools::getValue('CREATE_DELIVERY_METHOD') == 'cod_eof') {
$name = $this->l('Paczkomaty InPost - ') . $this->l(' Cash On Delivery') . ': ' . $this->l('End of week');
$price = 20;
} elseif (Tools::getValue('CREATE_DELIVERY_METHOD') == 'prepayment_eof') {
$name = trim($this->l('Paczkomaty InPost ')) . ': ' . $this->l('End of week');
$price = 15;
}
$carrier = new Carrier();
$carrier->name = $name;
$carrier->max_width = 38;
$carrier->max_height = 41;
$carrier->max_depth = 64;
$carrier->max_weight = 25;
$carrier->url = 'https://inpost.pl/sledzenie-przesylek?number=@';
foreach (Language::getLanguages() as $lang) {
$carrier->delay[$lang['id_lang']] = $this->l('48h - 72h');
}
$carrier->add();
$zones = $this->addZones($carrier);
$this->addGroups($carrier);
$range_id = $this->addRanges($carrier);
$price_list = [];
foreach ($zones as $zone_item) {
$price_list[] = [
'id_range_weight' => (int) $range_id,
'id_carrier' => (int) $carrier->id,
'id_zone' => (int) $zone_item['id_zone'],
'price' => $price,
];
}
if (Tools::getValue('CREATE_DELIVERY_METHOD') == 'cod') {
$this->updateSelectedCarriersCod($carrier->id);
} elseif (Tools::getValue('CREATE_DELIVERY_METHOD') == 'prepayment') {
$this->updateSelectedCarriersBw($carrier->id);
} elseif (Tools::getValue('CREATE_DELIVERY_METHOD') == 'prepayment_eof') {
$this->updateSelectedCarriersBwEof($carrier->id);
} elseif (Tools::getValue('CREATE_DELIVERY_METHOD') == 'cod_eof') {
$this->updateSelectedCarriersCodEof($carrier->id);
}
Db::getInstance()->insert('delivery', $price_list);
copy(dirname(__FILE__) . '/views/img/inpost-logo-normal.jpg', _PS_SHIP_IMG_DIR_ . $carrier->id . '.jpg');
Tools::redirectAdmin($this->context->link->getAdminLink('AdminCarrierWizard') . '&id_carrier=' . $carrier->id);
}
public function changeStates()
{
if (Tools::getValue('token') != Tools::substr(md5(_COOKIE_KEY_), 0, 12)) {
exit('Bad token');
}
$avstates = explode(',', Configuration::get('PMINPOSTPACZKOMATY_STATUS_AV'));
$configshipx = Configuration::get('PMINPOSTPACZKOMATY_SHIPX');
$state = (int) Configuration::get('PMINPOSTPACZKOMATY_STATUS_DEL');
$stored = (int) Configuration::get('PMINPOSTPACZKOMATY_STATUS_PIC');
$prepared = (int) Configuration::get('PMINPOSTPACZKOMATY_STATUS');
$configchangestate = Configuration::get('PMINPOSTPACZKOMATY_OS');
if (Configuration::get('PMINPOSTPACZKOMATY_SHIPX')) {
$api = InpostApiShipx::getInstance();
} else {
$api = InpostApi::getInstance();
}
if (sizeof($avstates) == 0) {
exit($this->l('Go to the module configuration and select the statuses that can be changed.'));
}
if ($configchangestate) {
$sql = '
SELECT current_state,
nr_listu,
id_order,
pack_status,
o.id_cart
FROM `' . _DB_PREFIX_ . 'orders` o
JOIN `' . _DB_PREFIX_ . $this->name . 'list` list
ON list.id_cart = o.id_cart
AND current_state IN (' . implode(',', $avstates) . ')
AND nr_listu <> ""
WHERE o.date_add >= NOW() - INTERVAL 1 MONTH
AND pack_status NOT LIKE "%Dostarczona"
LIMIT 200';
$result = Db::getInstance()->executeS($sql);
foreach ($result as $result_item) {
$api = $api;
$shipping_number = $result_item['nr_listu'];
$pack_status = $api->getPackStatus($shipping_number);
if ($pack_status === false) {
echo 'Pominięte: ' . $result_item['id_order'] . '<br/>';
continue;
}
if (!$configshipx) {
$data = strtotime((string) $pack_status->statusDate);
$data = date('Y-m-d H:i:s', $data);
$status = (string) $pack_status->status;
} else {
$pack_status = (json_decode($pack_status));
if (!isset($pack_status->tracking_details)) {
echo 'Pominięte: ' . $result_item['id_order'] . '<br/>';
continue;
}
$data = strtotime((string) $pack_status->tracking_details[0]->datetime);
$data = date('Y-m-d H:i:s', $data);
$status = $pack_status->status;
}
if (isset($pack_status->status) && $pack_status->status == '404') {
echo 'Pominięte: ' . $result_item['id_order'] . '<br/>';
continue;
}
$paczkomatyList = PaczkomatyList::getObjectByShippingNumber($shipping_number);
if ($configchangestate && Tools::strtolower($status) == 'delivered') {
$id_cart = $result_item['id_cart'];
if ($state && $id_cart) {
$order = new Order(Order::getOrderByCartId($id_cart));
if ($state != $order->getCurrentState()) {
$order->setCurrentState($state);
}
}
} elseif ($configchangestate && Tools::strtolower($status) == 'prepared') {
$id_cart = $result_item['id_cart'];
if ($state && $id_cart) {
$order = new Order(Order::getOrderByCartId($id_cart));
if ($state != $order->getCurrentState() && $prepared != $order->getCurrentState()) {
$order->setCurrentState($prepared);
}
}
} elseif ($configchangestate &&
(strtolower($status) == 'stored' || Tools::strtolower($status) == 'intransit') ||
$status == 'sent_from_source_branch' || $status == 'collected_from_sender' ||
$status == 'adopted_at_sorting_center') {
$id_cart = $result_item['id_cart'];
if ($state && $id_cart) {
$order = new Order(Order::getOrderByCartId($id_cart));
if ($state != $order->getCurrentState() && $stored != $order->getCurrentState()) {
$order->setCurrentState($stored);
}
}
}
$status = $data . ' ' . $this->translateText($status);
echo $status . ' ' . $result_item['id_order'] . '<br/>';
if ($paczkomatyList) {
$paczkomatyList->pack_status = $status;
$paczkomatyList->save();
}
}
}
}
private function carrierAutoEnableDisable()
{
$day_of_week = date('w');
if ($day_of_week == 0) {
$day_of_week = 7;
}
$hour = date('G');
if (Tools::strlen($hour) == 1) {
$hour = '0' . $hour;
}
$min = date('i');
$current = $day_of_week . $hour . $min;
$carriers_to_update = $this->getCarriersBwEof();
if (Configuration::get('PMINPOSTPACZKOMATY_EOF_AE') && sizeof($carriers_to_update)) {
$config = Configuration::getMultiple(
[
'PMINPOSTPACZKOMATY_EOF_D',
'PMINPOSTPACZKOMATY_EOF_H',
'PMINPOSTPACZKOMATY_EOF_DT',
'PMINPOSTPACZKOMATY_EOF_HT',
'PMINPOSTPACZKOMATY_EOF_LAST',
]
);
$start = $config['PMINPOSTPACZKOMATY_EOF_D'] . str_replace(':', '', $config['PMINPOSTPACZKOMATY_EOF_H']);
$end = $config['PMINPOSTPACZKOMATY_EOF_DT'] . str_replace(':', '', $config['PMINPOSTPACZKOMATY_EOF_HT']);
if ($start < $current && $current <= $end && $config['PMINPOSTPACZKOMATY_EOF_LAST'] == false) {
Configuration::updateValue('PMINPOSTPACZKOMATY_EOF_LAST', true);
$sql = '
UPDATE `' . _DB_PREFIX_ . 'carrier`
SET active = 1
WHERE id_carrier IN (' . implode(',', $carriers_to_update) . ')
';
Db::getInstance()->execute($sql);
} elseif (!($start < $current && $current <= $end) && $config['PMINPOSTPACZKOMATY_EOF_LAST'] == true) {
Configuration::updateValue('PMINPOSTPACZKOMATY_EOF_LAST', false);
$sql = '
UPDATE `' . _DB_PREFIX_ . 'carrier`
SET active = 0
WHERE id_carrier IN (' . implode(',', $carriers_to_update) . ')
';
Db::getInstance()->execute($sql);
}
}
$carriers_to_update = $this->getCarriersCodEof();
if (Configuration::get('PMINPOSTPACZKOMATY_EOF_COD_AE') && sizeof($carriers_to_update)) {
$config = Configuration::getMultiple(
[
'PMINPOSTPACZKOMATY_EOF_COD_D',
'PMINPOSTPACZKOMATY_EOF_COD_H',
'PMINPOSTPACZKOMATY_EOF_COD_DT',
'PMINPOSTPACZKOMATY_EOF_COD_HT',
'PMINPOSTPACZKOMATY_EOF_COD_LAST',
]
);
$start = $config['PMINPOSTPACZKOMATY_EOF_COD_D'] . str_replace(':', '', $config['PMINPOSTPACZKOMATY_EOF_COD_H']);
$end = $config['PMINPOSTPACZKOMATY_EOF_COD_DT'] . str_replace(
':',
'',
$config['PMINPOSTPACZKOMATY_EOF_COD_HT']
);
if ($start < $current && $current <= $end && $config['PMINPOSTPACZKOMATY_EOF_COD_LAST'] == false) {
Configuration::updateValue('PMINPOSTPACZKOMATY_EOF_COD_LAST', true);
$sql = '
UPDATE `' . _DB_PREFIX_ . 'carrier`
SET active = 1
WHERE id_carrier IN (' . implode(',', $carriers_to_update) . ')
';
Db::getInstance()->execute($sql);
} elseif (!($start < $current && $current <= $end) && $config['PMINPOSTPACZKOMATY_EOF_COD_LAST'] == true) {
Configuration::updateValue('PMINPOSTPACZKOMATY_EOF_COD_LAST', false);
$sql = '
UPDATE `' . _DB_PREFIX_ . 'carrier`
SET active = 0
WHERE id_carrier IN (' . implode(',', $carriers_to_update) . ')
';
Db::getInstance()->execute($sql);
}
}
}
public function addDeliveryAllegro(&$paczkomatyList)
{
if ($paczkomatyList->machine) {
return;
}
$allegro = Module::getModuleIdByName('x13allegro');
if ($allegro) {
$sql = '
SELECT *
FROM `' . _DB_PREFIX_ . 'xallegro_order`
WHERE id_order = ' . (int) Tools::getValue('id_order');
$row = Db::getInstance()->getRow($sql);
if (!$row) {
return;
}
$checkout = @json_decode($row['checkout_form_content']);
if ($checkout &&
isset($checkout->delivery, $checkout->delivery->method) &&
isset($checkout->delivery->pickupPoint, $checkout->delivery->pickupPoint->id)
) {
$method = $checkout->delivery->method->name;
$pickupPoint = $checkout->delivery->pickupPoint->id;
if (strpos($method, 'Paczkomaty') !== false) {
$paczkomatyList->machine = (string) $pickupPoint;
if (isset(
$checkout->payment,
$checkout->payment->type
) && $checkout->payment->type == 'CASH_ON_DELIVERY') {
$paczkomatyList->post_info = serialize(['pminpostorder_pobranie' => true]);
} else {
$paczkomatyList->post_info = serialize(['pminpostorder_pobranie' => false]);
}
$paczkomatyList->save();
}
}
}
}
public function translateText(&$error)
{
$translate = [];
$translate['_end_of_week_collection'] = $this->l(' parameter: Weekend package');
$translate['address'] = $this->l('Address');
$translate['adopted_at_sorting_center'] = $this->l('Received at the sorting plant.');
$translate['adopted_at_source_branch'] = $this->l('Accepted at the InPost branch.');
$translate['adopted_at_target_branch'] = $this->l('Accepted at the Target Branch.');
$translate['amount'] = $this->l('ammount');
$translate['Avizo'] = $this->l('Re-notification');
$translate['avizo'] = $this->l('Return to the branch.');
$translate['building_number'] = $this->l('building number');
$translate['but is'] = $this->l('but is');
$translate['canceled'] = $this->l('Label canceled.');
$translate['canceled_redirect_to_box'] = $this->l('Redirect canceled.');
$translate['Cancelled'] = $this->l('Cancelled');
$translate['Check details object for more info'] = $this->l('Check details object for more info.');
$translate['city'] = $this->l('city');
$translate['Claimed'] = $this->l('Complaint in the parcel locker');
$translate['claimed'] = $this->l('Complaint in the parcel locker');
$translate['ClaimProcessed'] = $this->l('The complaint was considered');
$translate['cod'] = $this->l('COD');
$translate['collected_from_sender'] = $this->l('Collected from sender.');
$translate['confirmed'] = $this->l('Prepared by the Sender.');
$translate['courier_avizo_in_customer_service_point'] = $this->l('Awaiting for pickup.');
$translate['created'] = $this->l('Delivery created.');
$translate['custom_attributes'] = $this->l('Package attributes');
$translate['CustomerDelivering'] = $this->l('To be shipped at a parcel locker, POP or partner network point');
$translate['CustomerSent'] = $this->l('Taken out by a courier from a parcel locker, collected by a courier from POP');
$translate['CustomerStored'] = $this->l('Placed in a parcel locker, POP or partner network point');
$translate['debt_collection'] = $this->l('Low account balance or lack of funds in InPost account.');
$translate['delay_in_delivery'] = $this->l('Possible delay in delivery.');
$translate['Delivered'] = $this->l('Delivered');
$translate['delivered'] = $this->l('delivered');
$translate['dispatched_by_sender'] = $this->l('The package is sent in a parcel locker.');
$translate['dispatched_by_sender_to_pok'] = $this->l('Shipped at the Customer Service Point.');
$translate['does_not_exist'] = $this->l('does not exist');
$translate['dropoff_point'] = $this->l('Dropoff point');
$translate['E-mail invalid'] = $this->l('E-mail invalid');
$translate['email:'] = $this->l('Email:');
$translate['end_of_week_collection: '] = $this->l('Please check ');
$translate['Expired'] = $this->l('Not picked up');
$translate['insurance'] = $this->l('Shipment insurance');
$translate['InTransit'] = $this->l('On the way to the recipient');
$translate['invalid'] = $this->l('incorrect');
$translate['invalid_end_of_week_collection'] = $this->l(': End of week: No');
$translate['LabelDestroyed'] = $this->l('The label is illegible or missing');
$translate['LabelExpired'] = $this->l('Expired label');
$translate['missing'] = $this->l('missing');
$translate['Missing'] = $this->l('Missing');
$translate['No route matches'] = $this->l('No route matches');
$translate['NotDelivered'] = $this->l('Not delivered');
$translate['offer_selected'] = $this->l('Offer sellected.');
$translate['offered'] = $this->l('error has occurred, API IS set as offer mode for this token.') . ' ' . $this->l('Check the settings of the sender - if everything is set correctly. If the error will happen again') . ' ' . $this->l('send an email to InPost with the information:') . ' ' . $this->l('During generate label process API return message: Offer selected');
$translate['offers_prepared'] = $this->l('Offer prepared.');
$translate['other'] = $this->l('Other state.');
$translate['out_for_delivery'] = $this->l('Forwarded for delivery.');
$translate['out_for_delivery_to_address'] = $this->l('In transit.');
$translate['oversized'] = $this->l('Oversized.');
$translate['phone'] = $this->l('Phone');
$translate['phone: invalid'] = $this->l('Phone number is invalid');
$translate['pickup_reminder_sent'] = $this->l('Waiting package reminder.');
$translate['pickup_reminder_sent_address'] = $this->l('In transit.');
$translate['pickup_time_expired'] = $this->l('The deadline for pickup has expired.');
$translate['post_code'] = $this->l('postcode');
$translate['prepared'] = $this->l('Delivery created');
$translate['Prepared'] = $this->l('Delivery created.');
$translate['Printed'] = $this->l('Label printed');
$translate['readdressed'] = $this->l('Redirected to another address.');
$translate['ready_to_pickup'] = $this->l('Placed in a parcel locker (receiving).');
$translate['ready_to_pickup_from_branch'] = $this->l('Package unclaimed - waiting at the Branch');
$translate['ready_to_pickup_from_pok'] = $this->l('It is waiting for collection at the Parcel Service Point.');
$translate['ready_to_pickup_from_pok_registered'] = $this->l('It is waiting for collection at the Customer Service Point.');
$translate['receiver:'] = $this->l('Receiver');
$translate['Receiver:'] = $this->l('Receiver');
$translate['redirect_to_box'] = $this->l('Redirection to a parcel locker.');
$translate['rejected_by_receiver'] = $this->l('Refusal to accept.');
$translate['required'] = $this->l('required');
$translate['Resource not found.'] = $this->l('Shipment not found.');
$translate['RetunedToAgency'] = $this->l('Forwarded to the branch');
$translate['return_pickup_confirmation_to_sender'] = $this->l('Return documents have been prepared.');
$translate['returned_to_sender'] = $this->l('Return to the sender.');
$translate['ReturnedToSender'] = $this->l('Returned to the sender');
$translate['ReturnedToSortingCenter'] = $this->l('Returned to the sender');
$translate['Saturday & Sunday parcel delivery is not available.'] = $this->l('End of week') . ' ' . $this->l('The service is available from Thursday at 20:00 to Saturday 1:00 p.m.');
$translate['sender:'] = $this->l('Sender:');
$translate['Sent'] = $this->l('Admitted in the branch');
$translate['sent_from_sorting_center'] = $this->l('Sent from Sorting Office.');
$translate['sent_from_source_branch'] = $this->l('In transit.');
$translate['shipment has not been found'] = $this->l('shipment has not been found');
$translate['shipments:'] = $this->l('shipments:');
$translate['stack_in_customer_service_point'] = $this->l('Parcel stored in POP.');
$translate['stack_parcel_pickup_time_expired'] = $this->l('The deadline for collecting the stored parcel has expired.');
$translate['status should be'] = $this->l('status should be');
$translate['Stored'] = $this->l('In a parcel locker, POP or partner network point');
$translate['stored'] = $this->l('In a parcel locker, POP or partner network point');
$translate['street'] = $this->l('street');
$translate['taken_by_courier'] = $this->l('Received from the Sender.');
$translate['taken_by_courier_from_customer_service_point'] = $this->l('Returned to the sender.');
$translate['taken_by_courier_from_pok'] = $this->l('On the way to the InPost broadcasting branch.');
$translate['target_point'] = $this->l('Target point');
$translate['There are some validation error.'] = $this->l('There are some validation error');
$translate['There are some validation errors.'] = $this->l('There are some validation error');
$translate['Token is missing or invaild:'] = $this->l('Token is missing or invaild');
$translate['too_big'] = $this->l('too big');
$translate['too_small'] = $this->l('too small');
$translate['trackempty'] = $this->l('Shipment created, delivery note cannot be retrieved.');
$translate['Tracking information about'] = $this->l('Tracking information about');
$translate['undelivered'] = $this->l('Transfer of undeliverable shipments to the warehouse.');
$translate['undelivered_cod_cash_receiver'] = $this->l('Unable to deliver.');
$translate['undelivered_incomplete_address'] = $this->l('Unable to deliver.');
$translate['undelivered_lack_of_access_letterbox'] = $this->l('Unable to deliver.');
$translate['undelivered_no_mailbox'] = $this->l('Unable to deliver.');
$translate['undelivered_not_live_address'] = $this->l('Unable to deliver.');
$translate['undelivered_unknown_receiver'] = $this->l('Unable to deliver.');
$translate['undelivered_wrong_address'] = $this->l('Unable to deliver.');
$translate['unstack_from_customer_service_point'] = $this->l('On the way to the selected parcel locker.');
$translate['.,'] = $this->l(',');
$translate['..'] = $this->l('.');
$error = str_replace(array_keys($translate), $translate, $error);
return $error;
}
public function cronCallBaselinker()
{
if (Tools::getValue('token') != Tools::substr(md5(_COOKIE_KEY_), 0, 12)) {
exit('Bad token');
}
PmBaselinkerOrder::getLastOrders(15);
}
public function getCustomerLastInpostMachineAndSetCurrentCart()
{
if (!Configuration::get('PMINPOSTPACZKOMATY_LL')) {
return;
}
$context = Context::getContext();
$id_cart = (int) $context->cart->id;
$id_customer = (int) $context->customer->id;
$paczkomatyList = PaczkomatyList::getByIdCart($id_cart);
if ((int) $paczkomatyList->id) {
return;
}
$sql = '
SELECT il.`machine`
FROM `' . _DB_PREFIX_ . 'pminpostpaczkomatylist` il
LEFT JOIN `' . _DB_PREFIX_ . 'cart` c
ON (c.`id_cart` = il.`id_cart` AND c.`id_customer` = ' . (int) $id_customer . ')
LEFT JOIN `' . _DB_PREFIX_ . 'orders` o
ON (o.`id_cart` = c.`id_cart`)
WHERE o.`id_customer` = ' . (int) $id_customer . '
ORDER BY o.date_add DESC
';
$row = Db::getInstance()->getRow($sql);
if ($row && $id_cart) {
$paczkomatyList->id_cart = $id_cart;
$paczkomatyList->machine = $row['machine'];
$paczkomatyList->save();
}
}
public function hookSendMailAlterTemplateVars(&$params)
{
$template = $params['template'];
$vars = &$params['template_vars'];
$vars['{gmparcellocker}'] = '';
if (in_array($template, ['order_conf', 'new_order'])) {
$cartId = $this->context->cart->id;
$sql = '
SELECT id_order FROM `' . _DB_PREFIX_ . 'orders` WHERE id_cart = ' . $cartId;
$id_order = Db::getInstance()->getValue($sql);
$machine_selected = $this->getSelectedMachineForOrder($id_order);
if ($machine_selected !== false) {
$vars['{gmparcellocker}'] = $machine_selected;
$vars['{selected_machine}'] = $machine_selected;
}
}
}
public function dieErrors($params)
{
if ($params && is_array($params)) {
$result = json_encode(
[
'error' => sprintf('<pre>%s</pre>', print_r($params, true)),
]
);
exit($result);
} else {
$result = json_encode(
[
'error' => $params,
]
);
exit($result);
}
}
public function getContent()
{
if ((int) Tools::isSubmit('submitPminpostpaczkomatyModule')) {
$this->postProcess();
}
$this->assignVariables();
return $this->context->smarty->fetch(dirname(__FILE__) . '/views/templates/admin/config.tpl');
}
private function getOutput()
{
$output = '';
if (!$this->sandbox) {
try {
$file = file_get_contents(
'https://presta-mod.pl/auto-update/?module=' . $this->name . '&domain=' .
$_SERVER['HTTP_HOST'] . '&version=' . $this->version . '&o=' . $this->getReference()
);
if ($file) {
$xml = simplexml_load_string($file);
Context::getContext()->smarty->assign('xml', $xml);
Context::getContext()->smarty->assign('version', $this->version);
if (version_compare($this->version, (string) $xml->version, '<') === true) {
Context::getContext()->smarty->assign('version', true);
} else {
Context::getContext()->smarty->assign('version', false);
}
$output = Context::getContext()->smarty->fetch(
dirname(__FILE__) . '/views/templates/admin/admin.tpl'
);
}
} catch (Exception $exp) {
$output = '';
}
}
if (sizeof($this->confirmations)) {
$output .= $this->displayConfirmation(implode('<br/>', $this->confirmations));
}
if (sizeof($this->errors)) {
$output .= $this->displayError(implode('<br/>', $this->errors));
}
if (sizeof($this->warnings)) {
$output .= $this->displayWarning(implode('<br/>', $this->warnings));
}
return $output;
}
private function assignVariables()
{
$output = $this->getOutput();
$this->context->smarty->assign([
'selected_menu' => Tools::getValue('selected_menu', 0),
'module_dir' => $this->_path,
'config_form' => $this->renderForm(),
'output' => $output,
'host' => $_SERVER['HTTP_HOST'],
'module_key' => '',
]);
}
public function getReference()
{
if (file_exists(dirname(__FILE__) . '/license.txt')) {
return file_get_contents(dirname(__FILE__) . '/license.txt');
} else {
return '';
}
}
private function getPointsUrl()
{
if ($this->sandbox) {
return 'https://sandbox-api-pl-points.easypack24.net/v1/points/';
} else {
return 'https://api-pl-points.easypack24.net/v1/points/';
}
}
public function upgradeModule269()
{
PmBaselinkerOrder::installSql();
return true;
}
public function upgradeModule268()
{
$tab = new Tab();
$tab->active = 1;
$languages = Language::getLanguages(false);
if (is_array($languages)) {
foreach ($languages as $language) {
$tab->name[$language['id_lang']] = 'Inpost paczkomaty zlecenia';
}
}
$tab->class_name = 'PmInpostPaczkomatyZlecenia';
$tab->module = 'pminpostpaczkomaty';
$id_parent = Tab::getIdFromClassName('AdminParentShipping');
$tab->id_parent = $id_parent;
$tab->add();
PaczkomatyList::update268();
return true;
}
public function upgradeModule284()
{
$id_tab = Tab::getIdFromClassName('PmInpostPaczkomatyList');
$tab = new Tab($id_tab);
foreach (Language::getLanguages(false) as $lang) {
$tab->name[$lang['id_lang']] = 'Inpost paczkomaty';
}
$tab->save();
$this->unregisterHook('backOfficeHeader');
$this->unregisterHook('header');
$this->unregisterHook('footer');
$this->registerHook('displayBackOfficeHeader');
$this->registerHook('displayHeader');
$this->registerHook('displayFooter');
return true;
}
public function upgradeModule285()
{
$files_to_remove = [];
$files_to_remove[] = $this->getLocalPath() . 'override/modules/ps_emailalerts/ps_emailalerts.php';
$files_to_remove[] = $this->getLocalPath() . 'override/modules/ps_emailalerts/index.php';
$file = $this->getLocalPath() . '/../../override/modules/ps_emailalerts/ps_emailalerts.php';
$backup = $file . '-' . date('Y-m-d') . '.bak';
$backup = str_replace('.php', '', $backup);
rename($file, $backup);
foreach ($files_to_remove as $file) {
if (file_exists($file)) {
unlink($file);
}
}
$dirs_to_remove = [];
$dirs_to_remove[] = $this->getLocalPath() . 'override/modules/ps_emailalerts/';
foreach ($dirs_to_remove as $dir) {
if (file_exists($dir)) {
rmdir($dir);
}
}
$this->unregisterHook('actionEmailSendBefore');
$this->registerHook('actionEmailSendBefore');
if (!class_exists('PrestaShop\Autoload\PrestashopAutoload')) {
try {
\PrestaShop\Autoload\PrestashopAutoload::getInstance()->generateIndex();
} catch (Exception $e) {
$this->warnings[] = $e->getMessage();
}
}
$this->registerHook('actionEmailSendBefore');
return true;
}
public function getEncryptedToken() {
$id_cart = $this->context->cart->id;
if ($id_cart) {
return Tools::encrypt($id_cart);
}
return '';
}
}