name = 'pocztapolskaen'; $this->tab = 'shipping_logistics'; $this->version = '1.2.3'; $this->date_version = '04.03.2022'; $this->author = 'Poczta Polska'; $this->need_instance = 0; $this->ps16 = Tools::version_compare(_PS_VERSION_,'1.7' ,'<'); $this->adminOrderHook = Tools::version_compare(_PS_VERSION_,'1.7.7.0' ,'<')?'displayAdminOrder':'displayAdminOrderSideBottom'; $this->ps1770 = Tools::version_compare(_PS_VERSION_,'1.7.7.0' ,'>='); parent::__construct(); $this->displayName = $this->l('Poczta Polska Elektroniczny Nadawca'); $this->description = $this->l('Plugin odpowiedzialny za synchronizację z Poczta Polska Elektroniczny Nadawca.'); $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); $this->_registerAutoLoad(); } public function getOrderShippingCost($params, $shipping_cost){ return $shipping_cost; } public function getOrderShippingCostExternal($params){ return $params; } public function is1770(){ return $this->ps1770; } public function is16(){ return $this->ps16; } /** * metoda uruchamin podczas instalacji modulu * @return bool */ public function install() { include(dirname(__FILE__).'/sql/install.php'); return (parent::install() && $this->tabInstall() && $this->registerHook($this->adminOrderHook) && $this->registerHook('displayBeforeCarrier') && $this->registerHook('actionCarrierProcess')) && $this->registerHook('actionValidateOrder') && $this->registerHook('displayBackOfficeHeader') && $this->registerHook('actionCarrierUpdate') && $this->registerHook('displayCarrierExtraContent') && $this->registerHook('displayHeader'); } /** * metoda uruchamiana podczas deinstlacji modulu * @return bool */ public function uninstall() { return parent::uninstall() && $this->sendUninstallInformationEmail() && $this->tabUninstall(); } /** * metoda ladujca automatycznie pliki z brakujacymi klasami dla obiektow * @param $className * */ protected function _autoload($className) { $path = $this->_getPath($className); if (!file_exists($path)) { return; } require_once $path; } /** * metoda ladujaca dodatkowe pliki podczas uruchamian backend */ public function hookDisplayBackOfficeHeader() { $this->context->controller->addCss($this->_path.'css/tab.css'); if($this->ps1770 && Tools::getValue('controller') == 'AdminOrders' && Tools::getValue('action') == 'vieworder'){ $this->context->controller->addCSS($this->_path. 'views/templates/admin/css/order1770.css'); $this->loadPocztaPolskaScripts(); $this->context->controller->addJqueryUi('ui.datepicker'); } $this->context->controller->addCSS($this->_path. 'views/templates/admin/css/orders.css'); } /** * metoda zwracaja sciezke dostepu pliku dla klasy podanej w parametrze * @param $className - nazwa klasy * @return string */ protected function _getPath($className) { $path = __DIR__ . '/classes/' . $className . '.php'; if ($className == 'ENadawca') { $path = __DIR__ . '/classes/enadawca/ENadawca.php'; } return $path; } /** * metoda rejestrujaca wlasny mechanizm autoload wywolywany podczas tworzenia obiektu */ protected function _registerAutoload() { spl_autoload_register(function ($className) { $path = $this->_getPath($className); if (!file_exists($path)) { return; } require_once $path; }); } /** * metoda wywolywana przez silnik prestashop podczas utworzenia zamowienia * @param $params - dane dotyczace zamowienia */ public function hookActionValidateOrder($params){ $pp_order = PPOrder::findByCart($params['cart']->id, false); if(!is_null($pp_order)){ $pp_order->id_order = $params['order']->id; $pp_order->save(); } } public function loadPocztaPolskaScripts(){ $this->context->controller->addJqueryPlugin('autosize'); $this->context->controller->addJS(_PS_JS_DIR_ . 'admin/tinymce.inc.js'); $this->context->controller->addJS($this->_path. 'views/templates/admin/js/settings.js'); $this->context->controller->addJS($this->_path. 'views/templates/admin/js/pack.js'); $this->context->controller->addJS('https://mapa.ecommerce.poczta-polska.pl/widget/scripts/ppwidget.js'); } public function hookDisplayAdminOrderSideBottom($params){ return $this->hookDisplayAdminOrder($params); } /** * metoda wywolywana przez silnik prestashop podczas podgladu zamowienia w adminie * @param $params - dane dotyczace zamowienia * @return string - dodatkowy content html do zaladownia w szczegolach zamowienia */ public function hookDisplayAdminOrder($params) { if(!$this->ps1770){ $this->loadPocztaPolskaScripts(); } $this->context->smarty->assign([ 'getFormLink' => $this->context->link->getAdminLink('AdminPocztaPolskaOrders').'&id_order='.$params['id_order'].'&ajax=true&action=pocztaPolskaOrderForm', ]); return $this->display(__FILE__, 'views/templates/admin/hook/admin-order-detail.tpl'); } /** * metoda wywolywana automatycznie przez silnik prestashop podczas wyboru dostawcow w procesie zakupowym * monitoruj czy został wybrany punktu odbioru dla rodzaju przesylki PP Odbior w punkcie * * @param $params - dane dotyczace koszyka klienta */ public function hookActionCarrierProcess($params){ $pickup_at_point = array_merge(PPSetting::getPickupUpAtPoint(),PPSetting::getPickupUpAtPoint(true)); if($this->ps16 && !Tools::getIsset('ajax') && !Tools::getIsset('is_ajax')){ $ppOrder = PPOrder::findByCart($params['cart']->id, false); if(in_array($params['cart']->id_carrier, $pickup_at_point)){ if(is_null($ppOrder) || $ppOrder->id_carrier != $params['cart']->id_carrier ){ $this->context->controller->errors[] = $this->l('Wybierz punkt odbioru'); } $delivery_address = new Address($params['cart']->id_address_delivery); if(empty($delivery_address->phone_mobile) && empty($delivery_address->phone)){ $this->context->controller->errors[] = $this->l('Wprowadź numer telefonu komórkowego do danych adresowych'); } } } } public function hookDisplayHeader(){ return $this->display(__FILE__, 'header.tpl'); } /** * metoda wywolywana automatycznie przez silnik prestashop podczas ladowania informacji o dostawcach * * @param $params - dane dotyczące koszyka klienta * @return string - html zawierajacy dodatkowe przyciski do wyboru odbioru w punkcie */ public function hookDisplayBeforeCarrier($params) { $pp_order = PPOrder::findByCart($this->context->cart->id, false); $protocol_link = (Configuration::get('PS_SSL_ENABLED')) ? 'https://' : 'http://'; $delivery_address = new Address($this->context->cart->id_address_delivery); if(!is_null($pp_order)){ if($pp_order->cod){ $pni_cod = $pp_order->pni; $pni = ''; } else { $pni = $pp_order->pni; $pni_cod = ''; } } else { $pni = ''; $pni_cod = ''; } $this->smarty->assign(array( 'pickup_at_point_standard' => json_encode(PPSetting::getPickupUpAtPoint(),JSON_NUMERIC_CHECK), 'pickup_at_point_cod' => json_encode(PPSetting::getPickupUpAtPoint(true),JSON_NUMERIC_CHECK), 'pickup_standard_point' => (!is_null($pp_order)&&!$pp_order->cod?$this->l('Wybrany punkt: ').$pp_order->point:''), 'pickup_cod_point' =>(!is_null($pp_order)&&$pp_order->cod?$this->l('Wybrany punkt: ').$pp_order->point:''), 'baseUrl'=>$protocol_link.Tools::getHttpHost().__PS_BASE_URI__, 'ajaxAddPointLink' => $this->context->link->getModuleLink($this->name, 'addpoint', array('ajax'=>true)), 'pni'=>$pni, 'pni_cod'=>$pni_cod, 'ps16'=>(int)$this->ps16, 'has_telephone'=>((!empty($delivery_address->phone_mobile) || !empty($delivery_address->phone))?1:0), 'address' => $this->getDeliveryAddress(), )); return $this->display(__FILE__, 'carrier.tpl'); } public function hookDisplayCarrierExtraContent($params){ if(!isset($params['carrier']['id']) || !$params['carrier']['id']){ return ''; } $pickupCarriers = PPSetting::getPickupUpAtPoint(); $pickupCarriersCOD = PPSetting::getPickupUpAtPoint(true); if( ($pickupCarriers && count($pickupCarriers) && in_array($params['carrier']['id'], $pickupCarriers)) || ($pickupCarriersCOD && count($pickupCarriersCOD) && in_array($params['carrier']['id'], $pickupCarriersCOD)) ){ $pp_order = PPOrder::findByCart($this->context->cart->id, false); $this->context->smarty->assign([ 'deliveryPoint' => (!is_null($pp_order))?$pp_order->pni:'', 'deliveryPointInfo' => (!is_null($pp_order) && $pp_order->id_carrier == $params['carrier']['id'])?$this->l('Wybrany punkt: ').$pp_order->point:'', 'isCod' => ($pickupCarriersCOD && count($pickupCarriersCOD) && in_array($params['carrier']['id'], $pickupCarriersCOD))?true:false, ]); return $this->display(__FILE__, '1.7/carrier.tpl'); } return ''; } private function getDeliveryAddress(){ $delivery_address = new Address($this->context->cart->id_address_delivery); $address = ''; if(trim($delivery_address->address1) && trim($delivery_address->city)){ $address = $delivery_address->address1.((trim($delivery_address->address2))?' '.$delivery_address->address2:'').', '.$delivery_address->city; } elseif(trim($delivery_address->city)){ $address = $delivery_address->city; } return $address; } /** * metoda wywolywana automatycznie przez silnik prestashop podczas zapisywania danych o dostawcach w adminie * * @param $params - informacja o aktualizowanym rekordzie dostawcy */ public function hookActionCarrierUpdate($params){ $reflection = new ReflectionClass('PPPackage'); $staticProperties = $reflection->getConstants(); $tab = array(); foreach($staticProperties as $key=>$value){ if(strpos($value,'delivery') !== false){ $tabOptions = explode(PPSetting::PP_SEPARATOR,Configuration::get($value)); if(in_array($params['id_carrier'], $tabOptions)){ foreach ($tabOptions as $index=>$id_delivery) { $tabOptions[$index] = str_replace($params['id_carrier'],$params['carrier']->id,$id_delivery); } Configuration::updateValue($value, implode(PPSetting::PP_SEPARATOR,$tabOptions)); } } } } /** * Metoda instalujaca dodakowe komponenty z pluginu w menu Presty * @return bool */ private function tabInstall() { $tabs = array( array( 'class_name' => 'AdminPocztaPolskaSettings', 'module' => 'pocztapolskaen', 'name' => 'Ustawienia', 'active' => 1, ), array( 'class_name' => 'AdminPocztaPolskaOrders', 'module' => 'pocztapolskaen', 'name' => 'Zamówienia/Zbiory', 'active' => 1, ), array( 'class_name' => 'AdminPocztaPolskaCouriers', 'module' => 'pocztapolskaen', 'name' => 'Zamów kuriera', 'active' => 1, ), array( 'class_name' => 'AdminPocztaPolskaOrdersSets', 'module' => 'pocztapolskaen', 'name' => 'Zbiory', 'active' => 0, ), array( 'class_name' => 'AdminPocztaPolskaTransferSets', 'module' => 'pocztapolskaen', 'name' => 'Przenies przesyłki', 'active' => 0, ), array( 'class_name' => 'AdminPocztaPolskaOrdersSetsView', 'module' => 'pocztapolskaen', 'name' => 'Podgląd przesyłek zbioru', 'active' => 0, ), ); $langs = Language::getLanguages(); $id_lang = (int) Configuration::get('PS_LANG_DEFAULT'); $tab = new Tab(); $tab->class_name = ($this->ps16?'AdminPocztaPolskaSettings':"POCZTAPOLSKA"); $tab->module = ""; $tab->id_parent = 0; foreach ($langs as $l) { $tab->name[$l['id_lang']] = $this->l('Poczta Polska'); } $tab->save(); $tab_id = $tab->id; foreach ($tabs as $tab) { $newTab = new Tab(); $newTab->class_name = $tab['class_name']; $newTab->id_parent = $tab_id; $newTab->module = $tab['module']; $newTab->active = $tab['active']; foreach ($langs as $l) { $newTab->name[$l['id_lang']] = $this->l($tab['name']); } $newTab->save(); } return true; } /** * metoda usuwajaca z menu presty komponenty dotyczace pluginu * @return bool */ public function tabUninstall() { $tabs = array('AdminPocztaPolskaSettings', 'AdminPocztaPolskaOrders', 'AdminPocztaPolskaCouriers', 'AdminPocztaPolskaOrdersSets', 'AdminPocztaPolskaTransferSets','POCZTAPOLSKA'); $parent_id = 0; foreach ($tabs as $tab) { $tabId = Tab::getIdFromClassName($tab); if ($tabId) { $tab = new Tab($tabId); $parent_id = $tab->id_parent; $tab->delete(); } } $tab = new Tab($parent_id); $tab->delete(); return true; } /** * meil informujacy o zainstalowaniu pluginu * @param bool $install * @return bool */ public function sendInformationEmail($install = true){ $id_lang = (int) Configuration::get('PS_LANG_DEFAULT'); $employee = new Employee($this->context->cookie->id_employee); $template_vars = array( '{www}' => $_SERVER['SERVER_NAME'], '{version}' => $this->version, '{karta}' => Configuration::get(PPSetting::PP_DEFAULT_KARTA_ID), '{email}' => Configuration::get('PS_SHOP_EMAIL'), '{name_surname}' => $employee->firstname.' '.$employee->lastname, '{subject}' => ($install?$this->l('[Presta] Instalacja'):$this->l('[Presta] Upgrade')), ); Mail::Send($id_lang, 'install', $template_vars['{subject}'] , $template_vars, PPSetting::PP_SUPPORT_EMAIL, null, null, null, null, null, dirname(__FILE__) . '/mails/'); return true; } /** * meil informujacy o odinstalowaniu pluginu * @return bool */ public function sendUninstallInformationEmail(){ $id_lang = (int) Configuration::get('PS_LANG_DEFAULT'); $employee = new Employee($this->context->cookie->id_employee); $template_vars = array( '{www}' => $_SERVER['SERVER_NAME'], '{version}' => $this->version, '{karta}' => Configuration::get(PPSetting::PP_DEFAULT_KARTA_ID), '{email}' => Configuration::get('PS_SHOP_EMAIL'), '{name_surname}' => $employee->firstname.' '.$employee->lastname, '{subject}' => $this->l('[Presta] Odinstalowanie wtyczki'), ); Mail::Send($id_lang, 'uninstall', $template_vars['{subject}'] , $template_vars, PPSetting::PP_SUPPORT_EMAIL, null, null, null, null, null, dirname(__FILE__) . '/mails/'); return true; } /** * Meil informujacy o wybraniu zgod przy instalacji pluginu * @param $data_rodo_process * @param $optin * @return bool */ public function sendRodoInformation($data_rodo_process,$optin){ $id_lang = (int) Configuration::get('PS_LANG_DEFAULT'); $employee = new Employee($this->context->cookie->id_employee); if($data_rodo_process){ if($optin){ $subject = $this->l('[Presta] Zgoda - przetwarzanie'); $extra_text_content = $this->l('Zgoda na przetwarzanie danych osobowych'); $extra_text_footer = ''; } else { $subject = $this->l('[Presta] Wycofanie zgody na przetwarzanie'); $extra_text_content = $this->l('Wycofanie zgody na przetwarzanie danych osobwych'); $extra_text_footer = $this->l('Pamiętaj o zaprzestaniu przetwarzania i usunięciu wszystkich danych klienta w ramach wtyczki do Prestashop!'); } } else { if($optin){ $subject = $this->l('[Presta] Zgoda - powiadomienia'); $extra_text_content = $this->l('Zgoda na otrzymywanie powiadomień'); $extra_text_footer = ''; } else { $subject = $this->l('[Presta] Wycofanie zgody'); $extra_text_content = $this->l('Wycofanie zgody na powiadomienia'); $extra_text_footer = $this->l('Pamiętaj o usunięciu danych klienta z listy odbiorców powiadomień dla wtyczki!'); } } $template_vars = array( '{www}' => $_SERVER['SERVER_NAME'], '{version}' => $this->version, '{karta}' => Configuration::get(PPSetting::PP_DEFAULT_KARTA_ID), '{email}' => Configuration::get('PS_SHOP_EMAIL'), '{name_surname}' => $employee->firstname.' '.$employee->lastname, '{subject}' => $subject, '{extra_text_content}'=>$extra_text_content, '{extra_text_footer}'=>$extra_text_footer ); Mail::Send($id_lang, 'rodo', $template_vars['{subject}'] , $template_vars, PPSetting::PP_SUPPORT_EMAIL, null, null, null, null, null, dirname(__FILE__) . '/mails/'); return true; } /** * metoda zwracajca przeslki PP * @param bool $query * @param string $prefix * @return array */ public static function getPPPackages($query = true, $prefix = '') { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => $prefix.'pp_pocztex_48', 'name' => $module->l('Pocztex Kurier 48')), array('id' => $prefix.'pp_pocztex', 'name' => $module->l('Pocztex')), array('id' => $prefix.'pp_pocztex_2021_kurier', 'name' => $module->l('Pocztex 2.0 Kurier')), array('id' => $prefix.'pp_pocztex_2021_dzis', 'name' => $module->l('Pocztex 2.0 Na Dziś')), array('id' => $prefix.'pp_paczka_pocztowa', 'name' => $module->l('Paczka Pocztowa')), array('id' => $prefix.'pp_global_express', 'name' => $module->l('Global Express')), array('id' => $prefix.'pp_przesylka_polecona', 'name' => $module->l('Przesyłka polecona krajowa')), array('id' => $prefix.'pp_przesylka_firmowa', 'name' => $module->l('Przesyłka firmowa polecona')), array('id' => $prefix.'pp_paczka_ue', 'name' => $module->l('Zagraniczna paczka')), array('id' => $prefix.'pp_zagraniczna_przesylka', 'name' => $module->l('Zagraniczna przesyłka polecona')), array('id' => $prefix.'pp_ems_ue', 'name' => $module->l('EMS')), ); if(!$query){ $arr = array(); foreach($packages as $package){ $arr[$package['id']] = $package['name']; } $packages = $arr; } return $packages; } /** * metoda zwracajaca wszystkie uslugi PP * @return array */ public static function getAllPPServices(){ $module = Module::getInstanceByName('pocztapolskaen'); $packages = self::getPPPackages(false); $packages['pp_pocztex_48'] = $module->l('Pocztex Kurier 48 - Standard'); $packages['pp_pocztex_48_cod'] = $module->l('Pocztex Kurier 48 - Pobranie'); $packages['pp_pocztex_48_pickup_at_point_standard'] = $module->l('Pocztex Kurier 48 - Odbiór w punkcie dla przesyłek opłaconych'); $packages['pp_pocztex_48_pickup_at_point_cod'] = $module->l('Pocztex Kurier 48 - Odbiór w punkcie dla przesyłek pobraniowych'); $packages['pp_pocztex'] = $module->l('Pocztex - Standard'); $packages['pp_pocztex_cod'] = $module->l('Pocztex - Pobranie'); $packages['pp_pocztex_pickup_at_point_standard'] = $module->l('Pocztex - Odbiór w punkcie dla przesyłek opłaconych'); $packages['pp_pocztex_pickup_at_point_cod'] = $module->l('Pocztex - Odbiór w punkcie dla przesyłek pobraniowych'); return $packages; } /** * metoda zwracajaca topic dla Pomocy * @return array */ public static function getHelpThemes() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'Sugestie', 'name' => $module->l('Sugestie')), array('id' => 'Problemy', 'name' => $module->l('Problemy')), ); return $packages; } /** * metoda zwracajaca dostepne rozmiary dla przesylek * @return array */ public static function getSizes() { $packages = array( array('id' => 'XS', 'name' => 'XS'), array('id' => 'S', 'name' => 'S'), array('id' => 'M', 'name' => 'M'), array('id' => 'L', 'name' => 'L'), array('id' => 'XL', 'name' => 'XL'), array('id' => 'XXL', 'name' => 'XXL'), ); return $packages; } /** * metoda zwracajaca dostepne godziny doręczenia dla przesylek * @return array */ public static function getGodzinaDoreczenia() { $packages = array( array('id' => '', 'name' => ''), array('id' => 'DO_GODZ_9', 'name' => 'Do godziny 9'), array('id' => 'DO_GODZ_12', 'name' => 'Do godziny 12'), array('id' => 'PO_GODZ_17', 'name' => 'Po godzinie 17'), ); return $packages; } public static function getTypObszaru(){ $packages = array( array('id' => 'MIASTO', 'name' => 'Miasto'), array('id' => 'KRAJ', 'name' => 'Kraj'), ); return $packages; } /** * metoda zwracajaca dostepne typy potwierdzenia dla przesylek * @return array */ public static function getTypPotwierdzeniaDoreczenia() { $packages = array( array('id' => '', 'name' => ''), array('id' => 'SMS', 'name' => 'SMS'), array('id' => 'EMAIL', 'name' => 'EMAIL'), ); return $packages; } /** * metoda zwracajaca dostepne typy zawartości dla przesylek * @return array */ public static function getTypZawartosci() { $packages = array( array('id' => '', 'name' => ''), array('id' => 'OWADY', 'name' => 'Owady'), array('id' => 'PLYNY_LUB_GAZY', 'name' => 'Płyny lub gazy'), array('id' => 'PRZEDMIOTY_LATWO_TLUKACE_SIE_I_SZKLO', 'name' => 'Przedmioty łatwo tłukące się i szkło'), array('id' => 'RZECZY_LAMLIWE_I_KRUCHE', 'name' => 'Rzeczy łamliwe i kruche'), array('id' => 'ZYWE_PTAKI', 'name' => 'Żywe ptaki'), array('id' => 'ZYWE_ROSLINY', 'name' => 'Żywe rośliny'), array('id' => 'INNE', 'name' => 'Inne'), ); return $packages; } /** * metoda zwracajaca dostepne formaty dla przesylek * @return array */ public static function getFormats() { $packages = array( array('id' => 'S', 'name' => 'S'), array('id' => 'M', 'name' => 'M'), array('id' => 'L', 'name' => 'L'), array('id' => 'XL', 'name' => 'XL'), array('id' => '2XL', 'name' => '2XL'), ); return $packages; } /** * metoda zwracajaca typy uslug * @return array */ public static function getKind() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'standard', 'name' => $module->l('Standard')), array('id' => 'pobranie', 'name' => $module->l('Pobranie')), ); return $packages; } /** * metoda zwracajaca wartosci ubezpieczen * @return array */ public static function getWartoscUbezpieczenia() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => '1000', 'name' => '1000'), array('id' => '5000', 'name' => '5000'), array('id' => '10000', 'name' => '10000'), array('id' => '20000', 'name' => '20000'), array('id' => '50000', 'name' => '50000'), array('id' => 'okreslona_wartosc', 'name' => $module->l('określona wartość')), ); return $packages; } /** * metoda zwracajaca wartosci ubezpieczen dla Pocztexu * @return array */ public static function getWartoscPocztexUbezpieczenia() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => '5000', 'name' => '5000'), array('id' => '10000', 'name' => '10000'), array('id' => '20000', 'name' => '20000'), array('id' => '50000', 'name' => '50000'), array('id' => 'okreslona_wartosc', 'name' => $module->l('określona wartość')), ); return $packages; } /** * metoda zwracajaca wartosci ubezpieczen dla Pocztexu Kurier 48 * @return array */ public static function getWartoscPocztex48Ubezpieczenia() { $packages = array( array('id' => '100', 'name' => '100'), array('id' => '200', 'name' => '200'), ); return $packages; } /** * metoda zwracajaca wartosci ubezpieczen dla EMS * @return array */ public static function getWartoscEmsUbezpieczenia() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => '1000', 'name' => '1000'), array('id' => '10000', 'name' => '10000'), array('id' => '50000', 'name' => '50000'), array('id' => 'okreslona_wartosc', 'name' => $module->l('określona wartość')), ); return $packages; } /** * metoda zwracajaca wartosci uslug kurierskich * @return array */ public static function getSerwis() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'EKSPRES24', 'name' => $module->l('KURIER EKSPRES 24')), array('id' => 'MIEJSKI_DO_3H_DO_5KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN DO 5KM')), array('id' => 'MIEJSKI_DO_3H_DO_10KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN DO 10KM')), array('id' => 'MIEJSKI_DO_3H_DO_15KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN DO 15KM')), array('id' => 'MIEJSKI_DO_3H_POWYZEJ_15KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN POWYŻEJ 15KM')), array('id' => 'MIEJSKI_DO_4H_DO_10KM', 'name' => $module->l('KURIER MIEJSKI DO 4 GODZIN DO 10KM')), array('id' => 'MIEJSKI_DO_4H_DO_15KM', 'name' => $module->l('KURIER MIEJSKI DO 4 GODZIN DO 15KM')), array('id' => 'MIEJSKI_DO_4H_DO_20KM', 'name' => $module->l('KURIER MIEJSKI DO 4 GODZIN DO 20KM')), array('id' => 'MIEJSKI_DO_4H_DO_30KM', 'name' => $module->l('KURIER MIEJSKI DO 4 GODZIN DO 30KM')), array('id' => 'MIEJSKI_DO_4H_DO_40KM', 'name' => $module->l('KURIER MIEJSKI DO 4 GODZIN DO 40KM')), array('id' => 'KRAJOWY', 'name' => $module->l('KURIER KRAJOWY')), array('id' => 'BEZPOSREDNI_DO_20KG', 'name' => $module->l('KURIER BEZPOŚREDNI DO 20KG')), array('id' => 'BEZPOSREDNI_OD_20KG_DO_30KG', 'name' => $module->l('KURIER BEZPOŚREDNI OD 20KG DO 30KG')), array('id' => 'BEZPOSREDNI_OD_30KG_DO_100KG', 'name' => $module->l('KURIER BEZPOŚREDNI OD 30KG DO 100KG')), ); return $packages; } /** * metoda zwracajaca zawartosc przesylki * @return array */ public static function getZawartoscPrzesylki() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'Dokumenty', 'name' => $module->l('Dokumenty')), array('id' => 'Kosmetyki', 'name' => $module->l('Kosmetyki')), array('id' => 'Elektronika', 'name' => $module->l('Elektronika')), array('id' => 'Zabawki', 'name' => $module->l('Zabawki')), array('id' => 'Części samochodowe', 'name' => $module->l('Części samochodowe')), array('id' => 'Chemia', 'name' => $module->l('Chemia')), array('id' => 'Meble', 'name' => $module->l('Meble')), ); return $packages; } /** * metoda zwracajaca zawartosc przesylki dla Globala * @return array */ public static function getZawartoscGlobalPrzesylki() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'Korespondencja', 'name' => $module->l('Korespondencja')), array('id' => 'Pozostałe', 'name' => $module->l('Pozostałe')), ); return $packages; } /** * metoda zwracajaca dane kto uiszcza oplate * @return array */ public static function getUiszczaOplate() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'NADAWCA', 'name' => $module->l('Nadawca')), array('id' => 'ADRESAT', 'name' => $module->l('Adresat')), ); return $packages; } /** * metoda zwracajaca godziny dostaw * @return array */ public static function getGodzina() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'DO 8:00', 'name' => $module->l('DO 8:00')), array('id' => 'DO 9:00', 'name' => $module->l('DO 9:00')), array('id' => 'DO 12:00', 'name' => $module->l('DO 12:00')), array('id' => 'NA 13:00', 'name' => $module->l('NA 13:00')), array('id' => 'NA 14:00', 'name' => $module->l('NA 14:00')), array('id' => 'NA 15:00', 'name' => $module->l('NA 15:00')), array('id' => 'NA 16:00', 'name' => $module->l('NA 16:00')), array('id' => 'NA 17:00', 'name' => $module->l('NA 17:00')), array('id' => 'NA 18:00', 'name' => $module->l('NA 18:00')), array('id' => 'NA 19:00', 'name' => $module->l('NA 19:00')), array('id' => 'NA 20:00', 'name' => $module->l('NA 20:00')), array('id' => 'PO 17:00', 'name' => $module->l('PO 17:00')), ); return $packages; } /** * metoda zwracajaca sposob pobrania * @return array */ public static function getSposobPobrania() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'RACHUNEK_BANKOWY', 'name' => $module->l('Rachunek bankowy')), array('id' => 'PRZEKAZ', 'name' => $module->l('Przekaz pocztowy')), ); return $packages; } /** * metoda zwracajaca typ potwierdzenia * @return array */ public static function getTypPotwierdzenia() { $packages = array( array('id' => 'SMS', 'name' => 'SMS'), array('id' => 'EMAIL', 'name' => 'EMAIL'), ); return $packages; } /** * metoda zwracajaca rodzaj potwierdzenia * @return array */ public static function getRodzajPotwierdzenia() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'LIST_ZWYKLY_PRIORYTETOWY', 'name' => $module->l('LIST ZWYKŁY PRIORYTETOWY')), array('id' => 'EKSPRES24', 'name' => $module->l('KURIER EKSPRESS 24')), array('id' => 'MIEJSKI_DO_3H_DO_5KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN DO 5 KM')), array('id' => 'MIEJSKI_DO_3H_DO_10KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN DO 10 KM')), array('id' => 'MIEJSKI_DO_3H_DO_15KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN DO 15 KM')), array('id' => 'MIEJSKI_DO_3H_POWYZEJ_15KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN POWYŻEJ 15 KM')), array('id' => 'BEZPOSREDNI_DO_20KG', 'name' => $module->l('KURIER BEZPOŚREDNI DO 20 GODZIN')), array('id' => 'PACZKA_24', 'name' => $module->l('PACZKA 24')), array('id' => 'PACZKA_48', 'name' => $module->l('PACZKA 48')), ); return $packages; } /** * metoda zwracajaca rodzaj potwierdzenia dla paczki biznesowej * @return array */ public static function getRodzajPotwierdzeniaBiznes() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'LIST_ZWYKLY_PRIORYTETOWY', 'name' => $module->l('LIST ZWYKŁY PRIORYTETOWY')), array('id' => 'EKSPRES24', 'name' => $module->l('KURIER EKSPRESS 24')), ); return $packages; } /** * metoda zwracajaca rodzaj potwierdzenia dla dokumentow * @return array */ public static function getDokumentyRodzajPotwierdzenia() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'LIST_ZWYKLY_PRIORYTETOWY', 'name' => $module->l('LIST ZWYKŁY PRIORYTETOWY')), array('id' => 'LIST_ZWYKLY_EKONOMICZNY', 'name' => $module->l('LIST ZWYKŁY EKONOMICZNY')), array('id' => 'LIST_POLECONY_PRIORYTETOWY', 'name' => $module->l('LIST POLECONY PRIORYTETOWY')), array('id' => 'LIST_POLECONY_EKONOMICZNY', 'name' => $module->l('LIST POLECONY EKONOMICZNY')), array('id' => 'EKSPRES24', 'name' => $module->l('KURIER EKSPRESS 24')), array('id' => 'MIEJSKI_DO_3H_DO_5KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN DO 5 KM')), array('id' => 'MIEJSKI_DO_3H_DO_10KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN DO 10 KM')), array('id' => 'MIEJSKI_DO_3H_DO_15KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN DO 15 KM')), array('id' => 'MIEJSKI_DO_3H_POWYZEJ_15KM', 'name' => $module->l('KURIER MIEJSKI DO 3 GODZIN POWYŻEJ 15 KM')), array('id' => 'BEZPOSREDNI_DO_20KG', 'name' => $module->l('KURIER BEZPOŚREDNI DO 20 GODZIN')), array('id' => 'PACZKA_24', 'name' => $module->l('PACZKA 24')), array('id' => 'PACZKA_48', 'name' => $module->l('PACZKA 48')), ); return $packages; } /** * metoda zwracajaca rodzaj potwierdzenia dla dokumentow * @return array */ public static function getDokumentyRodzajPotwierdzeniaBiznes() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'LIST_ZWYKLY_PRIORYTETOWY', 'name' => $module->l('LIST ZWYKŁY PRIORYTETOWY')), array('id' => 'LIST_ZWYKLY_EKONOMICZNY', 'name' => $module->l('LIST ZWYKŁY EKONOMICZNY')), array('id' => 'LIST_POLECONY_PRIORYTETOWY', 'name' => $module->l('LIST POLECONY PRIORYTETOWY')), array('id' => 'LIST_POLECONY_EKONOMICZNY', 'name' => $module->l('LIST POLECONY EKONOMICZNY')), array('id' => 'EKSPRES24', 'name' => $module->l('KURIER EKSPRESS 24')), ); return $packages; } /** * metoda zwracajaca wyslane do * @return array */ public static function getWyslaneDo() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'dane nadawcy', 'name' => $module->l('dane nadawcy')), ); return $packages; } /** * metoda zwracajaca wyslane do * @return array */ public static function getWyslaneDoBiznes() { $profileAddresses = PPProfileAddress::getCollection(true); $packages = array( array('id' => 'dane nadawcy', 'name' => 'dane nadawcy'), ); foreach($profileAddresses as $address){ $packages[] = array('id' => $address['id_en'], 'name' => $address['friendly_name']); } return $packages; } /** * metoda zwracajaca wartosci dla przesylki * @return array */ public static function getWartosci() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'ADMINISTRACYJNA', 'name' => $module->l('Administracyjne')), array('id' => 'SADOWA_CYWILNA', 'name' => $module->l('Cywilne')), array('id' => 'PODATKOWA', 'name' => $module->l('Podatkowe')), array('id' => 'SADOWA_KARNA', 'name' => $module->l('Karne')), ); return $packages; } /** * metoda zwracajaca urzedy nadania * @return array */ public static function getPostingOffices($param = '', $val = '') { $arr = ENadawca::UrzedyNadania()->get(); if(isset($arr['urzadNadania'])){ $arr = array($arr); } $arrTmp = array(); if ($param == 'query') { if(!empty($arr)) foreach ($arr as $k => $v) { $name = (isset($v['nazwaWydruk'])&&!empty($v['nazwaWydruk']))?$v['nazwaWydruk']:$v['opis']; if(empty($name)&&isset($v['urzadNadania'])){ $name = $v['urzadNadania']; } $arrTmp[] = array('id' => $v['urzadNadania'], 'name' => $name); } $arr = $arrTmp; } else if ($param === 'list') { foreach ($arr as $k => $v) { $arrTmp[$v['urzadNadania']]= $v['nazwaWydruk']; } $arr = $arrTmp; } if($val!==''){ return $arr[$val]['name']; } return $arr; } /** * metoda zwracajaca typy zbiorow * @return array */ public static function getSets($query = false) { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => '', 'name' => ''), array('id' => 'open', 'name' => '2018-05-21/1'), array('id' => 'pobranie', 'name' => '2018-05-21/2'), ); $arr = array( 'open' => $module->l('Otwarty'), 'send' => $module->l('Wysłany'), 'get' => $module->l('Odebrany'), ); $arrTmp = array(); if ($query) { foreach ($arr as $k => $v) { $arrTmp[] = array('id' => $k, 'name' => $v); } $arr = $arrTmp; } return $arr; } /** * metoda zwracajaca typ przesylki * @return array */ public static function getPaczka() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'EKONOMICZNA', 'name' => $module->l('Ekonomiczna')), array('id' => 'PRIORYTETOWA', 'name' => $module->l('Priorytet')), ); return $packages; } /** * metoda zwracajaca gabaryt przesylki * @return array */ public static function getGabaryt() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'GABARYT_A', 'name' => $module->l('Gabaryt A')), array('id' => 'GABARYT_B', 'name' => $module->l('Gabaryt B')), ); return $packages; } /** * metoda zwracajaca format przesylki * @return array */ public static function getFormat() { $packages = array( array('id' => 'S', 'name' => 'S'), array('id' => 'M', 'name' => 'M'), array('id' => 'L', 'name' => 'L'), ); return $packages; } /** * metoda zwracajaca miejsce dostarczenia * @return array */ public static function getMiejscowaZamiejscowa() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => '1', 'name' => $module->l('Miejscowa')), array('id' => '0', 'name' => $module->l('Zamiejscowa')), ); return $packages; } /** * metoda zwracajaca miejsce dostarczenia * @return array */ public static function getMiastoWies() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => '', 'name'=>''), array('id' => '1', 'name' => $module->l('Miasto')), array('id' => '0', 'name' => $module->l('Wieś')), ); return $packages; } /** * metoda zwracajaca typ zwrotu * @return array */ public static function getZwrot() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'zwrot_natychmiast', 'name' => $module->l('zwrot natychmiast')), array('id' => 'zwrot_po_liczbie_dni', 'name' => $module->l('zwrot po liczbie dni')), array('id' => 'traktowac_jak_porzucona', 'name' => $module->l('Traktować jak porzuconą')), ); return $packages; } /** * metoda zwracajaca sposob zwrotu * @return array */ public static function getSposobZwrot() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'LADOWO_MORSKA', 'name' => $module->l('Lądowo morska (S.A.L)')), array('id' => 'LOTNICZA', 'name' => $module->l('Lotnicza')), ); return $packages; } /** * metoda zwracajaca typ opakowania * @return array */ public static function getTypOpakowania() { $module = Module::getInstanceByName('pocztapolskaen'); $packages = array( array('id' => 'ZWYKLY', 'name' => $module->l('Własne')), array('id' => 'DOKUMENT_PACK', 'name' => $module->l('Document pack')), array('id' => 'KILO_PACK', 'name' => $module->l('Kilo pack')), ); return $packages; } /** * metoda zwracajaca godziny odbioru * @param string $val * @return array */ public static function getReceptionTime($val = '') { $module = Module::getInstanceByName('pocztapolskaen'); $id = 0; $hours = array( array('id' => $id, 'name' => $module->l('downlona między 08:00 a 20:00')) ); for ($i = 8; $i <= 20; $i = $i + 2) { $id++; $hours[$id]['id'] = $id; $hours[$id]['name'] = $i . ':00 - ' . ($i + 2) . ':00'; } if($val!==''){ return $hours[$val]['name']; } return $hours; } public function getLocalPath(){ return $this->local_path; } public function reloadSelectedCarrierConfig(){ Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'carrier` SET external_module_name = "", is_module = "0", shipping_external = "0", need_range = "0" WHERE external_module_name = "' . $this->name .'"' ); $pickupCarriers = PPSetting::getPickupUpAtPoint(); if($pickupCarriers && count($pickupCarriers)){ $this->setShippingExternal($pickupCarriers); } $pickupCarriersCOD = PPSetting::getPickupUpAtPoint(true); if($pickupCarriersCOD && count($pickupCarriersCOD)){ $this->setShippingExternal($pickupCarriersCOD); } } public function setShippingExternal($tab){ foreach($tab as $carrierId){ Db::getInstance()->execute(' UPDATE `' . _DB_PREFIX_ . 'carrier` SET external_module_name = "'.$this->name.'", is_module = "1", shipping_external = "1", need_range = "1" WHERE id_carrier = ' . $carrierId . ' OR id_reference = ' . $carrierId ); } } }