Files
grzanieplus.pl/plugins/stPocztaPolskaPlugin/lib/stPocztaPolskaClient.class.php
2025-03-12 17:06:23 +01:00

802 lines
27 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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));
}
}