802 lines
27 KiB
PHP
802 lines
27 KiB
PHP
<?php
|
||
|
||
class stPocztaPolskaClient
|
||
{
|
||
const SERVICE_TO_IWD_MAPPING = [
|
||
'usluga_paczkowa_24' => 833,
|
||
'usluga_paczkowa_48' => 833,
|
||
'usluga_paczkowa_e24' => 833,
|
||
'paczka_pocztowa_ekonomiczna' => 846,
|
||
'paczka_pocztowa_priorytetowa' => 846,
|
||
'pocztex_2021_kurier' => 855,
|
||
'pocztex_2021_na_dzis' => 855,
|
||
'pocztex_ekspres_24' => 834,
|
||
'pocztex_krajowy' => 834,
|
||
'przesylka_biznesowa' => 852,
|
||
'paczka_zagraniczna' => 878,
|
||
'paczka_zagraniczna_ue' => 878,
|
||
'przesylka_polecona_ekonomiczna' => 845,
|
||
'przesylka_polecona_priorytetowa' => 845,
|
||
'przesylka_firmowa_polecona_ekonomiczna' => 845,
|
||
'przesylka_firmowa_polecona_priorytetowa' => 845,
|
||
'zagraniczna_przesylka_zwykla_ekonomiczna' => 870,
|
||
'zagraniczna_przesylka_zwykla_priorytetowa' => 870,
|
||
'zagraniczna_przesylka_polecona' => 870,
|
||
];
|
||
|
||
const ALLEGRO_DELIVERY_ID_MAPPING = array(
|
||
"2b6ca59d-1e4c-426c-82a9-efcbd730846b" => 'paczka_pocztowa_ekonomiczna',
|
||
"45309171-0415-49cd-b2cf-89e9143d20f0" => 'paczka_pocztowa_priorytetowa',
|
||
"97286096-eb28-40f9-9efc-95ecbb8624ea" => 'usluga_paczkowa_48',
|
||
"773167b1-feec-4ae9-b20f-1ed8ccb7b1ed" => 'przesylka_polecona_ekonomiczna',
|
||
"b90c6295-b69a-4cb4-a308-7126a02aea47" => 'usluga_paczkowa_24',
|
||
"758fcd59-fbfa-4453-ae07-4800d72c2ca5" => 'przesylka_polecona_priorytetowa',
|
||
"7203cb90-864c-4cda-bf08-dc883f0c78ad" => 'pocztex_krajowy',
|
||
"845efe05-0c96-47c3-a8cb-aa4699c158ce" => 'pocztex_krajowy',
|
||
"f7e952b5-9ae8-40a9-90dd-e71ab9da29dd" => 'przesylka_biznesowa',
|
||
"8cc6e982-0af4-4e12-be96-5387db79a166" => 'przesylka_biznesowa',
|
||
"4dd9c904-e892-4649-bdec-5454d6b53d28" => 'pocztex_ekspres_24',
|
||
"b6bf5f9c-6cc8-4a0e-ab2f-bd49e76528f5" => 'pocztex_ekspres_24',
|
||
"6eced786-aee4-47ba-9cb6-e24f8b1d3182" => 'przesylka_biznesowa',
|
||
"ec0e7fff-8233-4869-99ce-fe2b67a7de84" => 'przesylka_biznesowa',
|
||
"aa1d05e0-943b-47cb-a759-9d8c16707129" => 'przesylka_firmowa_polecona_ekonomiczna',
|
||
"74bc07eb-552f-4581-b68c-da46716d4a9a" => 'usluga_paczkowa_24',
|
||
"ffb2643b-4b90-4925-9d29-0d93ad9488a6" => 'usluga_paczkowa_48',
|
||
"ecddabd8-ee16-49e3-bf55-5a959b385364" => 'pocztex_ekspres_24',
|
||
"f51bae90-d541-49d6-86e6-ff7f6d54f9e2" => 'pocztex_ekspres_24',
|
||
"7b45d0c7-5e22-46ac-824e-f0384e9aab52" => 'usluga_paczkowa_24',
|
||
"d44995ed-edd2-4abb-999f-a56bd0f12a68" => 'usluga_paczkowa_48',
|
||
"849a8308-240d-4045-ab30-f8207815bce4" => 'przesylka_biznesowa',
|
||
"b9e02dd2-6e91-4d13-901c-5e56ab0d1cd7" => 'usluga_paczkowa_24',
|
||
"e36c9ccf-e341-49a9-8fa0-f073dcd61210" => 'usluga_paczkowa_48',
|
||
"88f677d9-c125-45e0-bdf0-f965826542a9" => 'przesylka_biznesowa',
|
||
);
|
||
|
||
const SERVICES = array(
|
||
'usluga_paczkowa_24' => array('class' => 'uslugaPaczkowaType', 'defaults' => array('termin' => 'PACZKA_24'), 'label' => "Usługa paczkowa - Paczka 24"),
|
||
'usluga_paczkowa_48' => array('class' => 'uslugaPaczkowaType', 'defaults' => array('termin' => 'PACZKA_EXTRA_24'), 'label' => "Usługa paczkowa - Paczka Ekstra 24"),
|
||
'usluga_paczkowa_e24' => array('class' => 'uslugaPaczkowaType', 'defaults' => array('termin' => 'PACZKA_48'), 'label' => "Usługa paczkowa - Paczka 48"),
|
||
'pocztex_2021_kurier' => array('class' => 'pocztex2021KurierType', 'defaults' => array(), 'label' => "Pocztex 2.0 - Kurier"),
|
||
'pocztex_2021_na_dzis' => array('class' => 'pocztex2021NaDzisType', 'defaults' => array(), 'label' => "Pocztex 2.0 - Na Dziś"),
|
||
'pocztex_ekspres_24' => array('class' => 'uslugaKurierskaType', 'defaults' => array('termin' => 'EKSPRES24'), 'label' => "Pocztex - Kurier Ekspres 24"),
|
||
'pocztex_krajowy' => array('class' => 'uslugaKurierskaType', 'defaults' => array('termin' => 'KRAJOWY'), 'label' => "Pocztex - Kurier Krajowy"),
|
||
'przesylka_biznesowa' => array('class' => 'przesylkaBiznesowaType', 'label' => "Pocztex Kurier 48 (Przesyłka biznesowa)"),
|
||
'paczka_zagraniczna' => array('class' => 'paczkaZagranicznaType', 'label' => "Paczka zagraniczna pozostałe kraje"),
|
||
'paczka_zagraniczna_ue' => array('class' => 'paczkaZagranicznaType', 'label' => "Paczka zagraniczna do UE"),
|
||
'paczka_pocztowa_ekonomiczna' => array('class' => 'paczkaPocztowaType', 'defaults' => array('kategoria' => 'EKONOMICZNA'), 'label' => "Paczka Pocztowa - Ekonomiczna"),
|
||
'paczka_pocztowa_priorytetowa' => array('class' => 'paczkaPocztowaType', 'defaults' => array('kategoria' => 'PRIORYTETOWA'), 'label' => "Paczka Pocztowa - Priorytetowa"),
|
||
'przesylka_polecona_ekonomiczna' => array('class' => 'przesylkaPoleconaKrajowaType', 'defaults' => array('kategoria' => 'EKONOMICZNA'), 'label' => "Przesyłka polecona krajowa - Ekonomiczna"),
|
||
'przesylka_polecona_priorytetowa' => array('class' => 'przesylkaPoleconaKrajowaType', 'defaults' => array('kategoria' => 'PRIORYTETOWA'), 'label' => "Przesyłka polecona krajowa - Priorytetowa"),
|
||
'przesylka_firmowa_polecona_ekonomiczna' => array('class' => 'przesylkaFirmowaPoleconaType', 'defaults' => array('kategoria' => 'EKONOMICZNA'), 'label' => "Przesyłka firmowa polecona - Ekonomiczna"),
|
||
'przesylka_firmowa_polecona_priorytetowa' => array('class' => 'przesylkaFirmowaPoleconaType', 'defaults' => array('kategoria' => 'PRIORYTETOWA'), 'label' => "Przesyłka firmowa polecona - Priorytetowa"),
|
||
'zagraniczna_przesylka_zwykla_ekonomiczna' => array('class' => 'przesylkaZagranicznaType', 'defaults' => array('kategoria' => 'EKONOMICZNA'), 'label' => 'Zagraniczna przesyłka zwykła - Ekonomiczna'),
|
||
'zagraniczna_przesylka_zwykla_priorytetowa' => array('class' => 'przesylkaZagranicznaType', 'defaults' => array('kategoria' => 'PRIORYTETOWA'), 'label' => 'Zagraniczna przesyłka zwykła - Priorytetowa'),
|
||
'zagraniczna_przesylka_polecona' => array('class' => 'przesylkaPoleconaZagranicznaType', 'label' => 'Zagraniczna przesyłka polecona'),
|
||
);
|
||
|
||
/**
|
||
* Instacja elektronicznego nadawcy
|
||
*
|
||
* @var ElektronicznyNadawca
|
||
*/
|
||
protected $client;
|
||
|
||
/**
|
||
* Singleton instance
|
||
* @var stPocztaPolskaClient|null
|
||
*/
|
||
protected static $instance = null;
|
||
|
||
/**
|
||
* Lista urzedów nadania
|
||
* @var array|null
|
||
*/
|
||
protected $urzedyNadania = null;
|
||
|
||
/**
|
||
* Karty
|
||
* @var kartaType[]|null
|
||
*/
|
||
protected $karty = null;
|
||
|
||
/**
|
||
* Aktywna karta
|
||
*
|
||
* @var kartaType|null
|
||
*/
|
||
protected $aktywnaKarta = null;
|
||
|
||
public static function getCourierServiceList()
|
||
{
|
||
return array(
|
||
"paczka_zagraniczna",
|
||
"paczka_zagraniczna_ue",
|
||
"pocztex_krajowy",
|
||
"przesylka_polecona_ekonomiczna",
|
||
"przesylka_polecona_priorytetowa",
|
||
"przesylka_firmowa_polecona_ekonomiczna",
|
||
"przesylka_firmowa_polecona_priorytetowa",
|
||
"paczka_pocztowa_ekonomiczna",
|
||
"paczka_pocztowa_priorytetowa",
|
||
"zagraniczna_przesylka_zwykla_ekonomiczna",
|
||
"zagraniczna_przesylka_zwykla_priorytetowa",
|
||
"zagraniczna_przesylka_polecona",
|
||
"pocztex_2021_na_dzis"
|
||
);
|
||
}
|
||
|
||
public static function getServiceByAllegroDeliveryMethodId($allegroDeliveryMethodId)
|
||
{
|
||
return isset(self::ALLEGRO_DELIVERY_ID_MAPPING[$allegroDeliveryMethodId]) ? self::ALLEGRO_DELIVERY_ID_MAPPING[$allegroDeliveryMethodId] : null;
|
||
}
|
||
|
||
public static function isEUCountry($name)
|
||
{
|
||
$eu = array(
|
||
'Austria',
|
||
'Belgia',
|
||
'Czechy',
|
||
'Dania',
|
||
'Estonia',
|
||
'Finlandia',
|
||
'Francja',
|
||
'Grecja',
|
||
'Hiszpania',
|
||
'Holandia',
|
||
'Islandia',
|
||
'Liechtenstein',
|
||
'Litwa',
|
||
'Luksemburg',
|
||
'Łotwa',
|
||
'Malta',
|
||
'Niemcy',
|
||
'Norwegia',
|
||
'Szwajcaria',
|
||
'Szwecja',
|
||
'Polska',
|
||
'Portugalia',
|
||
'Słowacja',
|
||
'Słowenia',
|
||
'Węgry',
|
||
'Włochy',
|
||
'Irlandia',
|
||
'Wielka Brytania',
|
||
);
|
||
|
||
return in_array($name, $eu);
|
||
}
|
||
|
||
/**
|
||
*
|
||
* @return stPocztaPolskaClient
|
||
*/
|
||
public static function getInstance()
|
||
{
|
||
if (null === self::$instance)
|
||
{
|
||
$config = stConfig::getInstance('stPocztaPolskaBackend');
|
||
self::$instance = new stPocztaPolskaClient($config->get('login'), $config->get('password'), $config->get('test_mode'));
|
||
}
|
||
|
||
return self::$instance;
|
||
}
|
||
|
||
public function __construct($login, $password, $testMode = false)
|
||
{
|
||
|
||
|
||
$params = array(
|
||
'login' => $login,
|
||
'password' => $password,
|
||
'trace' => SF_ENVIRONMENT == 'dev',
|
||
'location' => $testMode ? 'https://en-testwebapi.poczta-polska.pl/websrv/labs.php' : 'https://e-nadawca.poczta-polska.pl/websrv/labs.php',
|
||
'cache_wsdl' => WSDL_CACHE_NONE,
|
||
);
|
||
|
||
$this->client = new ElektronicznyNadawca($testMode ? 'https://en-testwebapi.poczta-polska.pl/websrv/labs.wsdl' : 'https://e-nadawca.poczta-polska.pl/websrv/labs.wsdl', $params);
|
||
}
|
||
|
||
public static function getInstrukcjaDeklaracjiCelnejUrl()
|
||
{
|
||
$config = stConfig::getInstance('stPocztaPolskaBackend');
|
||
|
||
if ($config->get('test_mode'))
|
||
{
|
||
return "https://en-testwebapi.poczta-polska.pl/download/instrukcja-wypelniania-deklaracji-celnej.doc";
|
||
}
|
||
else
|
||
{
|
||
return "https://e-nadawca.poczta-polska.pl/download/instrukcja-wypelniania-deklaracji-celnej.doc";
|
||
}
|
||
}
|
||
|
||
public function getPlacowkaPocztowa($pni): placowkaPocztowaType
|
||
{
|
||
$request = new getPlacowkaPocztowa();
|
||
$request->pni = $pni;
|
||
$response = $this->client->getPlacowkaPocztowa($request);
|
||
|
||
return $response->placowka;
|
||
}
|
||
|
||
/**
|
||
* Weryfikuje poprawność danych dostępowych do API
|
||
*
|
||
* @return bool
|
||
*/
|
||
public function hasValidAutheticationCredentials()
|
||
{
|
||
$hello = new hello();
|
||
$hello->in = 'hello';
|
||
|
||
try
|
||
{
|
||
$this->client->hello($hello);
|
||
}
|
||
catch (Exception $e)
|
||
{
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* Zwraca listę urzędów nadania
|
||
*
|
||
* @param boolean $cached
|
||
* @return array
|
||
*/
|
||
public function getUrzedyNadania($cached = true)
|
||
{
|
||
if (null === $this->urzedyNadania)
|
||
{
|
||
$fc = stFunctionCache::getInstance('stPocztaPolska');
|
||
$fc->setLifeTime(24*60*60*7);
|
||
|
||
if ($cached) {
|
||
$this->urzedyNadania = $fc->cacheCall(array($this, 'getUrzedyNadaniaRequest'), array(), array('id' => 'urzedyNadania'));
|
||
} else {
|
||
$this->urzedyNadania = $this->getUrzedyNadaniaRequest();
|
||
}
|
||
|
||
$fc->setLifeTime(time());
|
||
}
|
||
|
||
return $this->urzedyNadania;
|
||
}
|
||
|
||
public function getUbezpieczeniaInfo()
|
||
{
|
||
return $this->client->getUbezpieczeniaInfo(new getUbezpieczeniaInfo());
|
||
}
|
||
|
||
public function getBufor($id)
|
||
{
|
||
$results = $this->getBuforList();
|
||
|
||
foreach ($results as $result)
|
||
{
|
||
if ($result->idBufor == $id)
|
||
{
|
||
return $result;
|
||
}
|
||
}
|
||
|
||
return null;
|
||
}
|
||
|
||
public function getBuforGuids($bufor_id)
|
||
{
|
||
$getEnvelopeBufor = new getEnvelopeBufor();
|
||
$getEnvelopeBufor->idBufor = $bufor_id;
|
||
|
||
$response = $this->getEnvelopeBufor($getEnvelopeBufor);
|
||
|
||
$results = is_array($response->przesylka) ? $response->przesylka : array($response->przesylka);
|
||
|
||
$guids = array();
|
||
|
||
foreach ($results as $przesylka) {
|
||
$guids[] = $przesylka->guid;
|
||
}
|
||
|
||
return $guids;
|
||
}
|
||
|
||
public function getBuforList()
|
||
{
|
||
$getEnvelopeBuforList = new getEnvelopeBuforList();
|
||
$response = $this->getEnvelopeBuforList($getEnvelopeBuforList);
|
||
|
||
return is_array($response->bufor) ? $response->bufor : array($response->bufor);
|
||
}
|
||
|
||
public function deleteBufor($id)
|
||
{
|
||
$clearEnvelope = new clearEnvelope();
|
||
$clearEnvelope->idBufor = $id;
|
||
$this->clearEnvelope($clearEnvelope);
|
||
|
||
$bufor = PocztaPolskaBuforPeer::retrieveByBuforId($id);
|
||
$bufor->delete();
|
||
}
|
||
|
||
public function getOrCreateBufor($dataNadania, $urzadNadania)
|
||
{
|
||
$buforDesc = self::getBuforDescription($dataNadania, $urzadNadania);
|
||
$results = $this->getBuforList();
|
||
$dataNadania = (new DateTimeImmutable($dataNadania))->format('Y-m-d');
|
||
|
||
$getEnvelopeBuforListResponse = new getEnvelopeBuforListResponse();
|
||
|
||
foreach ($results as $result)
|
||
{
|
||
if ($result->opis == $buforDesc && $result->dataNadania == $dataNadania && $result->urzadNadania == $urzadNadania)
|
||
{
|
||
$bufor = PocztaPolskaBuforPeer::retrieveByBuforId($result->idBufor);
|
||
|
||
if ($bufor && $bufor->getCountPaczka() < 50) {
|
||
$getEnvelopeBuforListResponse->bufor = $result;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (null === $getEnvelopeBuforListResponse->bufor)
|
||
{
|
||
$createEnvelopeBufor = new createEnvelopeBufor();
|
||
$createEnvelopeBufor->bufor = new buforType();
|
||
$createEnvelopeBufor->bufor->dataNadania = $dataNadania;
|
||
$createEnvelopeBufor->bufor->urzadNadania = $urzadNadania;
|
||
$createEnvelopeBufor->bufor->opis = $buforDesc;
|
||
|
||
$response = $this->createEnvelopeBufor($createEnvelopeBufor);
|
||
|
||
$getEnvelopeBuforListResponse->bufor = $response->createdBufor;
|
||
$getEnvelopeBuforListResponse->error = $response->error;
|
||
|
||
if (!$response->error)
|
||
{
|
||
$ppb = new PocztaPolskaBufor();
|
||
$ppb->setBuforId($response->createdBufor->idBufor);
|
||
$ppb->setDataNadania($dataNadania);
|
||
$ppb->setUrzadNadania($urzadNadania);
|
||
$ppb->save();
|
||
}
|
||
}
|
||
|
||
return $getEnvelopeBuforListResponse;
|
||
}
|
||
|
||
public static function getBuforDescription($dataNadania, $urzadNadania)
|
||
{
|
||
$postfix = stConfig::getInstance('stRegister')->get('www');
|
||
|
||
$postfix = str_replace(array('http://', 'https://'), "", $postfix);
|
||
$postfix = rtrim($postfix, '/');
|
||
return "SOTESHOP ".$postfix;
|
||
}
|
||
|
||
public function getClient()
|
||
{
|
||
return $this->client;
|
||
}
|
||
|
||
/**
|
||
* @throws SoapFault
|
||
* @return kartaType[]
|
||
*/
|
||
public function getKarty()
|
||
{
|
||
if (null === $this->karty)
|
||
{
|
||
$response = $this->client->getKarty(new getKarty());
|
||
$this->karty = is_array($response->karta) ? $response->karta : array($response->karta);
|
||
}
|
||
|
||
return $this->karty;
|
||
}
|
||
|
||
/**
|
||
* @param setAktywnaKarta $aktywnaKarta
|
||
* @return setAktywnaKartaResponse
|
||
*/
|
||
public function setAktywnaKarta(setAktywnaKarta $aktywnaKarta)
|
||
{
|
||
return $this->client->setAktywnaKarta($aktywnaKarta);
|
||
}
|
||
|
||
/**
|
||
* Zwraca aktywną kartę
|
||
*
|
||
* @return null|kartaType
|
||
* @throws SoapFault
|
||
*/
|
||
public function getAktywnaKarta()
|
||
{
|
||
if (null === $this->aktywnaKarta)
|
||
{
|
||
foreach ($this->getKarty() as $karta)
|
||
{
|
||
if ($karta->aktywna)
|
||
{
|
||
$this->aktywnaKarta = $karta;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
return $this->aktywnaKarta;
|
||
}
|
||
|
||
public function getUrzedyNadaniaRequest()
|
||
{
|
||
$response = $this->client->getUrzedyNadania(new getUrzedyNadania());
|
||
|
||
$options = array();
|
||
|
||
$urzedy = array();
|
||
|
||
$results = is_array($response->urzedyNadania) ? $response->urzedyNadania : array($response->urzedyNadania);
|
||
|
||
foreach ($results as $urzadNadania)
|
||
{
|
||
$urzedy[$urzadNadania->urzadNadania] = $urzadNadania->nazwaWydruk;
|
||
}
|
||
|
||
$regions = array("02","04","06","08","10","12","14","16","18","20","22","24","26","28","30","32");
|
||
|
||
foreach ($regions as $id)
|
||
{
|
||
$getPlacowkiPocztowe = new getPlacowkiPocztowe();
|
||
$getPlacowkiPocztowe->idWojewodztwo = $id;
|
||
|
||
$results = stPocztaPolskaClient::getInstance()->getPlacowkiPocztowe($getPlacowkiPocztowe);
|
||
|
||
$placowki = is_array($results->placowka) ? $results->placowka : array($results->placowka);
|
||
|
||
foreach ($placowki as $placowka)
|
||
{
|
||
if (isset($urzedy[$placowka->id]))
|
||
{
|
||
$urzedy[$placowka->id] = $placowka->miejscowosc.' '.$placowka->ulica.' '.$placowka->numerDomu.($placowka->numerLokalu ? '/'.$placowka->numerLokalu : '').' ('.$placowka->nazwaWydruk.')';
|
||
}
|
||
}
|
||
}
|
||
|
||
natsort($urzedy);
|
||
|
||
return $urzedy;
|
||
}
|
||
|
||
public function __call($name, $arguments)
|
||
{
|
||
if (!is_callable(array($this->client, $name)))
|
||
{
|
||
throw new Exception(sprintf("Method %s does not exist", $name));
|
||
}
|
||
|
||
return call_user_func_array(array($this->client, $name), $arguments);
|
||
}
|
||
|
||
public static function getGabarytyBiznesowa()
|
||
{
|
||
return array(
|
||
"XS" => "XS (25x20x10)",
|
||
"S" => "S (30x25x15)",
|
||
"M" => "M (35x30x20)",
|
||
"L" => "L (45x35x25)",
|
||
"XL" => "XL (60x50x40)",
|
||
"XXL" => "XXL (100x60x40)",
|
||
);
|
||
}
|
||
|
||
public static function getGabaryty()
|
||
{
|
||
return array(
|
||
"GABARYT_A" => "Gabaryt A (60 x 50 x 30)",
|
||
"GABARYT_B" => "Gabaryt B (Suma długości i największego obwodu mierzonego w innym kierunku niż<br>długość - 300 cm, przy czym największy wymiar nie może przekroczyć 150 cm)",
|
||
);
|
||
}
|
||
|
||
public static function getPunktyNadania()
|
||
{
|
||
return array(
|
||
null => "Kurier",
|
||
'placowka_pocztowa' => "Placówka Pocztowa",
|
||
);
|
||
}
|
||
|
||
public static function getObszary()
|
||
{
|
||
return array(
|
||
obszarType::MIASTO => "Miasto",
|
||
obszarType::KRAJ => "Kraj",
|
||
);
|
||
}
|
||
|
||
public static function getGabarytyFirmowa()
|
||
{
|
||
return array(
|
||
"GABARYT_A" => "Gabaryt A (Maksymalne wymiary przesyłki - suma długości, szerokości i wysokości nie może przekroczyć 700 mm, przy czym najdłuższy z tych wymiarów (długość) nie może przekroczyć 500 mm)",
|
||
"GABARYT_B" => "Gabaryt B (Maksymalne wymiary przesyłki – suma długości, szerokość i wysokość 900<br>mm, największy z wymiarów nie może przekroczyć 600 mm)",
|
||
);
|
||
}
|
||
|
||
public static function getFormaty($service)
|
||
{
|
||
if (!in_array($service, ['pocztex_2021_kurier', 'pocztex_2021_na_dzis']))
|
||
{
|
||
return array(
|
||
'S' => 'S (Maksymalne wymiary koperty [mm]: 160 x 230 x 20, maksymalna waga [g]: 500)',
|
||
'M' => 'M (Maksymalne wymiary koperty [mm]: 230 x 325 x 20, maksymalna waga [g]: 1000)',
|
||
'L' => 'L (Maksymalna suma wymiarów koperty [mm]: 900, maksymalna długość najdłuższego boku [mm]: 600, rulony, maksymalna waga [g]: 2000)',
|
||
);
|
||
}
|
||
|
||
return array(
|
||
"S" => 'S - Maksymalne wymiary 9 cm (W) x 40 cm (S) x 65 cm (D), maksymalna masa 20 kg',
|
||
"M" => 'M - Parametry przekraczające format S. Maksymalne wymiary 20 cm (W) x 40 cm (S) x 65 cm (D), maksymalna masa 20 kg',
|
||
"L" => 'L - Parametry przekraczające format M. Maksymalne wymiary 42 cm (W) x 40 cm (S) x 65 cm (D), maksymalna masa 20 kg',
|
||
"XL" => 'XL - Parametry przekraczające format L. Maksymalne wymiary 60 cm (W) x 60 cm (S) x 70 cm (D), maksymalna masa 20 kg',
|
||
"2XL" => '2XL - Parametry przekraczające format XL. Maksymalna suma wymiarów (W+S+D)<=250 cm, max D=120 cm, maksymalna masa 50 kg (dopłata powyżej 30 kg',
|
||
);
|
||
}
|
||
|
||
public static function getRodzajZagraniczna()
|
||
{
|
||
return array(
|
||
'CN22' => 'CN22',
|
||
'CN23' => 'CN23',
|
||
);
|
||
}
|
||
|
||
public static function getZawartoscPrzesylkiZagranicznej()
|
||
{
|
||
return array(
|
||
"SPRZEDAZ_TOWARU" => "Sprzedaż towaru",
|
||
"ZWROT_TOWARU" => "Zwrot towaru",
|
||
"PREZENT" => "Prezent",
|
||
"PROBKA_HANDLOWA" => "Próbka handlowa",
|
||
"DOKUMENT" => "Dokument",
|
||
"INNE" => "Inne",
|
||
);
|
||
}
|
||
|
||
public static function getDokumentTowarzyszacyRodzaje()
|
||
{
|
||
return array(
|
||
"LICENCJA" => "Licencja",
|
||
"CERTYFIKAT" => "Certyfikat",
|
||
"FAKTURA" => "Faktura",
|
||
);
|
||
}
|
||
|
||
|
||
public static function getFormatedErrors($errors)
|
||
{
|
||
if (is_array($errors))
|
||
{
|
||
$results = array();
|
||
|
||
foreach ($errors as $error)
|
||
{
|
||
$results[] = ($error->guid ? $error->guid. ': ' : '') . $error->errorDesc;
|
||
}
|
||
|
||
return "<br>- ".implode("<br>- ", $results);
|
||
}
|
||
else
|
||
{
|
||
return ($errors->guid ? $errors->guid. ': ' : '') . $errors->errorDesc;
|
||
}
|
||
}
|
||
|
||
public static function getOpakowania($serviceName)
|
||
{
|
||
if ($serviceName == 'usluga_paczkowa_24' || $serviceName == 'usluga_paczkowa_e24')
|
||
{
|
||
return array(
|
||
"" => "---",
|
||
"PACZKA_DO_POL_KILO" => "Paczka do 0,5kg (max. 32x22x10 cm)",
|
||
"FIRMOWA_DO_1KG" => "Koperta firmowa do 1kg",
|
||
);
|
||
}
|
||
else
|
||
{
|
||
return array(
|
||
"" => "---",
|
||
"FIRMOWA_DO_1KG" => "Koperta firmowa do 1kg",
|
||
);
|
||
}
|
||
}
|
||
|
||
public static function getPocztex1Zawartosc()
|
||
{
|
||
return [
|
||
'Dokumenty' => 'Dokumenty',
|
||
'Kosmetyki' => 'Kosmetyki',
|
||
'Elektronika' => 'Elektronika',
|
||
'Zabawki' => 'Zabawki',
|
||
'Części samochodowe' => 'Części samochodowe',
|
||
'Chemia' => 'Chemia',
|
||
'Meble' => 'Meble',
|
||
];
|
||
}
|
||
|
||
public static function getPocztex2Zawartosc()
|
||
{
|
||
return [
|
||
'OWADY' => 'Owady',
|
||
'PLYNY_LUB_GAZY' => 'Płyny lub gazy',
|
||
'PRZEDMIOTY_LATWO_TLUKACE_SIE_I_SZKLO' => 'Przedmioty łatwo tłukące się i szkło',
|
||
'RZECZY_LAMLIWE_I_KRUCHE' => 'Rzeczy łamliwe i kruche',
|
||
'ZYWE_PTAKI' => 'Żywe ptaki',
|
||
'ZYWE_ROSLINY' => 'Żywe rośliny',
|
||
'NULL' => 'Inne',
|
||
];
|
||
}
|
||
|
||
public static function getKategorie()
|
||
{
|
||
return array(
|
||
'EKONOMICZNA' => "Ekonomiczna",
|
||
'PRIORYTETOWA' => "Priorytetowa",
|
||
);
|
||
}
|
||
|
||
public static function getSposobZwrotu()
|
||
{
|
||
return array(
|
||
"LADOWO_MORSKA" => "Lądowo morska (S.A.L)",
|
||
"LOTNICZA" => "Lotnicza",
|
||
);
|
||
}
|
||
|
||
public static function createService($name)
|
||
{
|
||
$instance = null;
|
||
|
||
if (!isset(self::SERVICES[$name]))
|
||
{
|
||
throw new Exception("Service $name does not exist");
|
||
}
|
||
|
||
$class = self::SERVICES[$name]['class'];
|
||
|
||
$instance = new $class();
|
||
|
||
if (isset(self::SERVICES[$name]['defaults']))
|
||
{
|
||
foreach (self::SERVICES[$name]['defaults'] as $property => $value)
|
||
{
|
||
$instance->$property = $value;
|
||
}
|
||
}
|
||
|
||
if ($instance && property_exists($instance, 'uiszczaOplate'))
|
||
{
|
||
$instance->uiszczaOplate = 'NADAWCA';
|
||
}
|
||
|
||
return $instance;
|
||
}
|
||
|
||
public static function getServices()
|
||
{
|
||
return self::SERVICES;
|
||
}
|
||
|
||
public static function getPointNameFromPlacowkaPocztowa(placowkaPocztowaType $placowkaPocztowa)
|
||
{
|
||
$pointName = [$placowkaPocztowa->nazwa];
|
||
$pointName[] = self::getStreetFromPlacowkaPocztowa($placowkaPocztowa);
|
||
$pointName[] = $placowkaPocztowa->kodPocztowy . ' ' . $placowkaPocztowa->miejscowosc;
|
||
|
||
return implode(', ', $pointName);
|
||
}
|
||
|
||
public static function getStreetFromPlacowkaPocztowa(placowkaPocztowaType $placowkaPocztowa)
|
||
{
|
||
$street = $placowkaPocztowa->ulica . ' ' . $placowkaPocztowa->numerDomu;
|
||
|
||
if (!empty($placowkaPocztowa->numerLokalu))
|
||
{
|
||
$street .= '/' . $placowkaPocztowa->numerLokalu;
|
||
}
|
||
|
||
return $street;
|
||
}
|
||
|
||
public static function updateService($service, $data)
|
||
{
|
||
if (empty($data))
|
||
{
|
||
return;
|
||
}
|
||
|
||
reset($data);
|
||
|
||
do
|
||
{
|
||
$name = key($data);
|
||
$value = current($data);
|
||
|
||
$name = lcfirst(sfInflector::camelize($name));
|
||
|
||
if (!is_object($service) || !property_exists($service, $name))
|
||
{
|
||
continue;
|
||
}
|
||
|
||
switch($name)
|
||
{
|
||
case 'ubezpieczenie':
|
||
$service->$name = new ubezpieczenieType();
|
||
$service->$name->rodzaj = 'STANDARD';
|
||
break;
|
||
|
||
case 'epo':
|
||
$value = $value ? new EPOSimpleType() : null;
|
||
break;
|
||
|
||
case 'kwotaPobrania':
|
||
case 'kwota':
|
||
case 'wartosc':
|
||
$value = stPrice::round($value * 100, 0);
|
||
break;
|
||
|
||
case 'masaNetto':
|
||
case 'masa':
|
||
$value = "" === $value ? null : stPrice::round($value * 1000, 0);
|
||
break;
|
||
|
||
case 'zawartoscSpecjalna':
|
||
$values = self::getPocztex2Zawartosc();
|
||
|
||
if (!isset($values[$value]))
|
||
{
|
||
$data['zawartoscInna'] = $value;
|
||
$value = 'NULL';
|
||
}
|
||
|
||
if ('NULL' === $value) {
|
||
$value = null;
|
||
}
|
||
break;
|
||
|
||
case 'adresDlaZwrotu':
|
||
$service->adresDlaZwrotu = new adresType();
|
||
break;
|
||
|
||
|
||
case 'ulica':
|
||
$parser = new stAddressParser($value);
|
||
$address = $parser->getAddress();
|
||
$value = $address['s1'];
|
||
|
||
if (!empty($address['n1']))
|
||
{
|
||
$service->numerDomu = $address['n1'];
|
||
}
|
||
|
||
if (!empty($address['n2']))
|
||
{
|
||
$service->numerLokalu = $address['n2'];
|
||
}
|
||
break;
|
||
}
|
||
|
||
if (is_array($value))
|
||
{
|
||
self::updateService($service->$name, $value);
|
||
}
|
||
else
|
||
{
|
||
$service->$name = $value;
|
||
}
|
||
}
|
||
while (false !== next($data));
|
||
}
|
||
} |