first commit

This commit is contained in:
2024-11-05 12:22:50 +01:00
commit e5682a3912
19641 changed files with 2948548 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
<?php
require_once __DIR__ .'/../Log/ENadawcaErrorLogger.php';
/**
* Klasa odpowiedzialna za przechwytywanie,obsługę błędów i wyjątków
*/
class ErrorHandler {
/**
* Obiekt wyjątku
* @var type
*/
public $exception;
/**
* Obiekt do logowania błedów
* @var type
*/
private $_logger = null;
/**
* Konstruktor klasy, w którym tworzony jest obiekt do logowania błedów
*/
public function __construct() {
$this->_logger = new ENadawcaErrorLogger();
}
/**
* Metodą odpowiedzialna za rejsterowanie funkcji wyłapujących błedy
*/
public function register() {
// ini_set('display_errors', false);
set_exception_handler(array($this, 'handleException'));
set_error_handler(array($this, 'handleError'));
register_shutdown_function(array($this, 'handleFatalError'));
}
/**
* Metoda odpowiedziala na wyrejestrowanie fukcji wyłapujacych błedy
*/
public function unregister() {
restore_error_handler();
restore_exception_handler();
}
/**
* Metoda odpowiedzialna za logowanie błedów PHP
* @param type $code
* @param type $message
* @param type $file
* @param type $line
* @return boolean
* @throws Exception
*/
public function handleError($code, $message, $file, $line) {
if ($code) {
throw new Exception($message, $code);
}
return false;
}
/**
* Metoda odpowiedzialna za logowanie wyjątków
* @param type $exception
*/
public function handleException($exception) {
$this->exception = $exception;
$this->unregister();
$this->_logger->logException($exception);
}
/**
* Metoda odpowiedzialna za logowanie błedów krytycznych PHP
* @param type $exception
*/
public function handleFatalError() {
$error = error_get_last();
if(isset($error['message'])){
$exception = new Exception($error['message']);
$this->exception = $exception;
$this->_logger->logException($exception);
}
}
}

View File

@@ -0,0 +1,119 @@
<?php
require_once 'Exception/MissingResourceException.php';
require_once 'Log/ENadawcaLogger.php';
require_once 'Common/ErrorHandler.php';
/**
*
*/
class ENadawca {
/**
*
* @var type
*/
private static $_instance = null;
/**
*
* @var type
*/
private $_resources = array(
'UrzedyNadania', 'Envelope', 'EnvelopeBuffor', 'Profil', 'Password', 'Kurier', 'Document', 'Shipment', 'PdfContent','Karta','JednostkaOrganizacyjna','Account'
);
/**
*
*/
private function __construct() {
$this->_registerAutoLoad();
//$this->_registerErrorHandler();
}
/**
*
* @return type
*/
public static function getInstance() {
if (is_null(self::$_instance)) {
self::$_instance = new ENadawca();
}
return self::$_instance;
}
/**
*
* @param type $className
* @return \className
*/
public function get($className) {
$instance = self::getInstance();
$instance->_checkResource($className);
if (class_exists($className)) {
$object = new $className();
$object->init();
return $object;
}
return null;
}
/**
*
* @param type $className
* @throws MissingResourceException
*/
protected function _checkResource($className) {
if (!in_array($className, $this->_resources)) {
throw new MissingResourceException('Resource `' . $className . '` nor exists. Available resources:' . implode(',', $this->_resources));
}
}
/**
*
* @param type $name
* @param type $arguments
* @return type
*/
public static function __callStatic($name, $arguments) {
return self::getInstance()->get($name);
}
/**
*
* @param type $className
* @return type
*/
protected function _autoload($className) {
$path = $this->_getPath($className);
if (!file_exists($path)) {
return;
}
require_once $path;
}
/**
*
* @param type $className
* @return string
*/
protected function _getPath($className) {
$path = dirname(__FILE__) . '/Resource/' . str_replace('_', '/', $className) . '.php';
return $path;
}
/**
*
*/
protected function _registerAutoload() {
spl_autoload_register(array($this, '_autoload'));
}
/**
*
*/
protected function _registerErrorHandler() {
$this->_errorHandler = new ErrorHandler();
$this->_errorHandler->register();
}
}

View File

@@ -0,0 +1,10 @@
<?php
require_once 'ENadawcaException.php';
/**
*
*/
class ClientException extends ENadawcaException {
}

View File

@@ -0,0 +1,6 @@
<?php
/**
*
*/
class ENadawcaException extends Exception {
}

View File

@@ -0,0 +1,7 @@
<?php
/**
*
*/
class MissingResourceException extends RuntimeException {
}

View File

@@ -0,0 +1,12 @@
<?php
/**
* Kalasa odpowiedzialana za logowanie błedów
*/
class ENadawcaErrorLogger extends ENadawcaLogger{
/**
* Nazwa pliku z błędami
* @var type
*/
protected $_logfile = 'error';
}

View File

@@ -0,0 +1,110 @@
<?php
/**
*
*/
class ENadawcaLogger {
/**
* Nanzwa pliku
* @var type
*/
protected $_logfile = 'debug';
/**
* Rozszerzenie pliku
* @var type
*/
protected $_ext = '.log';
/**
* Maksymalna wielkość pliku
* @var type
*/
protected $_logSize = '10MB';
/**
* Uchwyt do pliku
* @var type
*/
protected $_fileHandle = false;
/**
* Konstruktor klasy
* @param type $logfile
*/
public function __construct() {
$this->init();
}
/**
* Metoda odpowiedzilna zatworzenie,usuwanie pliku log
*/
public function init() {
$this->full_log_file = __DIR__ . '/../logs/' . $this->_logfile . $this->_ext;
if (!file_exists($this->full_log_file)) {
@touch($this->full_log_file);
}
$this->_removeLogFile();
}
/**
* Metoda odpowiedzialna za zapis komunikatu do pliku
* @param type $message
* @return type
*/
public function log($message, $extras = array()) {
if (!file_exists($this->full_log_file)) {
return;
}
if (!$this->_fileHandle) {
$this->_fileHandle = fopen($this->full_log_file, 'a');
}
if (is_array($message) && count($message) == 1) {
$message = array_shift($message);
}
if (is_array($message)) {
$message = print_r($message, true);
}
if (!empty($extras)) {
$message .= ' ' . print_r($extras, true);
}
fwrite($this->_fileHandle, strftime('%c') . ' [' . getmypid() . '] ' . $message . "\n");
}
/**
* Metoda odpowiedzialna za logowanie wyjątków
* @param type $exception
*/
public function logException($exception) {
$this->log($exception);
}
/**
* Metoda odpowiedzialna za usuwanie pliku jesli przekroczony dopuszczalny rozmiar pliku
* @return type
*/
protected function _removeLogFile() {
if (!file_exists($this->full_log_file) || empty($this->_logSize)) {
return false;
}
$megs = substr($this->_logSize, 0, strlen($this->_logSize) - 2);
$rollAt = (int) $megs * 1024 * 1024;
if (filesize($this->full_log_file) >= $rollAt) {
if (file_exists($this->full_log_file)) {
unlink($this->full_log_file);
}
}
return true;
}
/**
* metoda wywolywana podczas usuwania obiektu
*/
public function __destruct() {
if ($this->_fileHandle) {
fclose($this->_fileHandle);
}
}
}

View File

@@ -0,0 +1,68 @@
###########################################################################################################################################################
$shipment = ENadawca::Shipment();
$adres = Adres::get(
array(
'nazwa' => 'test',
'nazwa2' => 'test',
'ulica' => 'test',
'numerDomu' => 'test',
'numerLokalu' => 'test',
'miejscowosc' => 'test',
'kodPocztowy' => '21030',
'kraj' => 'test',
'telefon' => 'test',
'email' => 'test',
'mobile' => 'test',
'osobaKontaktowa' => 'test',
'email' => 'test@test.pl',
'nip' => 'test',
)
);
$shipment->addPaczkaPocztowa($adres, ShipmentCategory::EKONOMICZNA, Gabaryt::A, 1230, 1, 1);
$shipment->add();
###########################################################################################################################################################
ENadawca::EnvelopeBuffor()->get();
ENadawca::EnvelopeBuffor()->getList();
###########################################################################################################################################################
ENadawca::Profil()->create(
'Test sp. z o.o.',
'ul. Test',
14,
18,
'LUBLIN',
20023,
'Polska',
'test'
);
###########################################################################################################################################################
ENadawca::Profil()->get();
###########################################################################################################################################################
ENadawca::EnvelopeBuffor()->getList();
###########################################################################################################################################################
ENadawca::EnvelopeBuffor()->create(
'2018-07-09',
260628,
true,
'test'
);
###########################################################################################################################################################
ENadawca::Envelope()->get('2018-01-01','2019-01-01')
###########################################################################################################################################################
ENadawca::Envelope()->clearByGuids(array('1','12'))
###########################################################################################################################################################
ENadawca::Envelope()->send('743378');
ENadawca::Envelope()->send();
###########################################################################################################################################################
$envelope = ENadawca::Envelope();
$envelope->get('2018-01-01','2019-01-01'));
$envelope->getStatus('334243'));
$envelope->getContentShort('334243'));
$envelope->getContentFull('334243'));
###########################################################################################################################################################
$shipment = ENadawca::Shipment();
$shipment->move();
###########################################################################################################################################################
ENadawca::PdfContent()->getBlankietPobraniaByGuids(12222)
###########################################################################################################################################################
ENadawca::Password()->change('qwerty123');
###########################################################################################################################################################

View File

@@ -0,0 +1,44 @@
<?php
class Account extends Resource{
/**
* metoda pobierajaca dane o profilach uzytkownika API
* @return array
*/
public function get(){
$result = $this->_callWebservice ('getAccountList');
return $result;
}
/**
* metoda odpowiedzialna za pobranie z API informacji o profilu
* @return array
*/
public function getMyAccount(){
$result = $this->_callWebService('getAccountList');
if(isset($result['account'])){
if(isset($result['account']['domyslnyProfil'])){
return $result['account'];
}
foreach($result['account'] as $key=>$account){
if($account['userName'] == Configuration::get(PPSetting::PP_USER) ){
return $account;
}
}
}
return $result;
}
/**
* metoda sprawdzajaca czy dany uzytkownika API prawidlowo jest zalogowany
* @return bool
*/
public function hello(){
$params['in'] = 'hello';
$result = $this->_callWebService('hello',$params);
return $result;
}
}

View File

@@ -0,0 +1,101 @@
<?php
/**
* Klasa odpowidająca zarządzanie wysyłką przesyłek
*/
class Envelope extends Resource {
/**
* Metoda czyszcząca pakiet z przesyłek. Usuwa bufor wraz ze wszystkimi informacjami o przesyłkach, które zostały dodane
* @return array
*/
public function clear($idBuffor = '') {
$params = array();
if (!empty($idBuffor)) {
$params['idBufor'] = $idBuffor;
}
$result = $this->_callWebservice('clearEnvelope', $params);
return $result;
}
/**
* Metoda pozwala na wybiórcze usunięcie przesyłek z bufora. Parametrem wejściowym jest tablica guidów przesyłek do usunięcia
* @param array $guid
* @return array
*/
public function clearByGuids($guid,$idBuffor = '') {
$params = array('guid' => $guid);
if (!empty($idBuffor)) {
$params['idBufor'] = $idBuffor;
}
$result = $this->_callWebservice('clearEnvelopeByGuids', $params);
return $result;
}
/**
* Metoda pozwalająca wysłać wszystkie przesyłki
* @param type $urzadNadania
* @param type $idBuffor
* @return type
*/
public function send($urzadNadania, $idBuffor = '') {
$params = array(
'urzadNadania' => $urzadNadania,
);
if (!empty($idBuffor)) {
$params['idBufor'] = $idBuffor;
}
$result = $this->_callWebservice('sendEnvelope', $params);
return $result;
}
/**
* Metoda pozwala pobrać status przekazanego pakietu przesyłek
* @param integer $idEnvelope
* @return array
*/
public function getStatus($idEnvelope) {
$result = $this->_callWebservice('getEnvelopeStatus', array('idEnvelope' => $idEnvelope));
return $result;
}
/**
* Metoda pozwalająca pobrać informacje zwrotne o nadanych przesyłkach w wersji skróconej.
* @param type $idEnvelope
* @return type
*/
public function getContentShort($idEnvelope) {
$result = $this->_callWebservice('getEnvelopeContentShort', array('idEnvelope' => $idEnvelope));
return $result;
}
/**
* Metoda pozwalająca pobrać informacje zwrotne o nadanych przesyłkach w wersji pełnej.
* @param type $idEnvelope
* @return type
*/
public function getContentFull($idEnvelope) {
$result = $this->_callWebservice('getEnvelopeContentFull', array('idEnvelope' => $idEnvelope));
return $result;
}
/**
* Metoda pozwalająca pobrać listę pakietów, które są dostępne do pobrania wraz ze statusami
* @param type $startDate
* @param type $endDate
* @return type
*/
public function get($startDate, $endDate) {
$result = $this->_callWebservice('getEnvelopeList', array('startDate' => $startDate, 'endDate' => $endDate));
return $result;
}
public function getStatuses() {
$arr = array(
'wyslany' => 'Wysłany',
'niewyslany'=>'Niewysłany'
);
return $arr;
}
}

View File

@@ -0,0 +1,82 @@
<?php
/**
* Klasa odpowiadająca za zarządzanie danymi w buforze
*/
class EnvelopeBuffor extends Resource {
/**
* Metoda pozwala pobrać informacje o przesyłkach znajdujących się w buforze
* @param type $idBufor
* @return array
*/
public function get($idBufor = '') {
$params = array();
if (!empty($idBufor)) {
$params = array('idBufor' => $idBufor);
}
$result = $this->_callWebservice('getEnvelopeBufor', $params);
return $result;
}
/**
* Metoda pozwalająca pobrać listę buforów zdefiniowanych poprzez web api
* @return array
*/
public function getList() {
$result = $this->_callWebservice('getEnvelopeBuforList');
if (!$this->hasErrors()) {
if (isset($result['bufor']['idBufor'])) {
$result = array($result['bufor']);
} else {
$result = array_shift($result);
}
}
return $result;
}
/**
* Metoda umożliwiająca zmianę danych bufora, w tym daty nadania czy urzędu nadania
* @param type $idBufor
* @param type $dataNadania
* @param type $urzadNadania
* @param type $active
* @param type $opis
* @return array
*/
public function update($idBufor, $dataNadania, $urzadNadania, $opis) {
$params = array(
'idBufor' => $idBufor,
'dataNadania' => $dataNadania,
'urzadNadania' => $urzadNadania,
'opis' => $opis,
);
$result = $this->_callWebservice('updateEnvelopeBufor', array('bufor' => $params));
return $result;
}
/**
* Metoda umożliwiająca stworzenie nowego bufora. Możliwe jest stworzenie w jednym wywołaniu kilku buforów.
* @param type $dataNadania
* @param type $urzadNadania
* @param type $active
* @param type $opis
* @return type
*/
public function create($dataNadania, $urzadNadania, $opis) {
$params = array(
'dataNadania' => $dataNadania,
'urzadNadania' => $urzadNadania,
'active' => true,
'opis' => $opis,
);
$result = $this->_callWebservice('createEnvelopeBufor', array('bufor' => $params));
return $result;
}
public function clear($idBuffor) {
$result = $this->_callWebservice('clearEnvelope', array('idBufor' => $idBuffor));
return $result;
}
}

View File

@@ -0,0 +1,18 @@
<?php
/**
* Klasa odpowiadajaca za zarzadzanie jednostkami ograzniacyjnymi
*/
class JednostkaOrganizacyjna extends Resource {
/**
* Metoda pozwala pobrać informacje o jednostce organizacyjnej
* @return array
*/
public function get() {
$result = $this->_callWebservice ('getJednostkaOrganizacyjna');
return $result;
}
}

View File

@@ -0,0 +1,49 @@
<?php
/**
* Klasa odpowiadajaca za zarzadzanie kartami umowy
*/
class Karta extends Resource {
/**
* Metoda pozwala pobrać wszystkie karty umowy
* @return array
*/
public function getList() {
$result = $this->_callWebservice ('getKarty');
return $result;
}
/**
* metoda umozliwa pobranie informacji na temat wybranej karty
* @param string $idKarty
* @return array
*/
public function get($idKarty = ''){
$result = $this->_callWebservice ('getKarty');
if(isset($result['karta']['idKarta'])){
$result['karta'] = array($result['karta']);
}
foreach($result['karta'] as $karta){
if($karta['idKarta'] == $idKarty){
return $karta;
}
}
return $result['karta'];
}
/**
* metoda pozwalajaca umozliwienie domyslane karty dla uztykownika api
* @param $idKarty
* @return bool
*/
public function setDefault($idKarty){
$result = false;
if(!empty($idKarty)){
$result = $this->_callWebservice('setAktywnaKarta',array('idKarta'=>$idKarty));
}
return $result;
}
}

View File

@@ -0,0 +1,37 @@
<?php
/**
* Klasa odpowiadająca za zamawianie kuriera
*/
class Kurier extends Resource {
/**
* Metoda umożliwiająca zamówienie kuriera po odbiór przesyłek od klienta
* @param type $oczekiwanaDataOdbioru
* @param type $oczekiwanaGodzinaOdbioru
* @param type $szacowanaIloscPrzeslek
* @param type $szacowanaLacznaMasaPrzesylek
* @param type $PotwierdzenieZamowieniaEmail
* @param type $miejsceOdbioru
* @param type $nadawca
* @return type
*/
public function zamow($oczekiwanaDataOdbioru, $oczekiwanaGodzinaOdbioru, $szacowanaIloscPrzeslek, $szacowanaLacznaMasaPrzesylek, $PotwierdzenieZamowieniaEmail, $miejsceOdbioru = array(), $nadawca = array()) {
$params = array(
'oczekiwanaDataOdbioru' => $oczekiwanaDataOdbioru,
'oczekiwanaGodzinaOdbioru' => $oczekiwanaGodzinaOdbioru,
'szacowanaIloscPrzeslek' => $szacowanaIloscPrzeslek,
'szacowanaLacznaMasaPrzesylek' => $szacowanaLacznaMasaPrzesylek,
'PotwierdzenieZamowieniaEmail' => $PotwierdzenieZamowieniaEmail
);
if (!empty($miejsceOdbioru)) {
$params['miejsceOdbioru'] = $miejsceOdbioru;
}
if (!empty($nadawca)) {
$params['nadawca'] = $nadawca;
}
$result = $this->_callWebservice('zamowKuriera', $params);
return $result;
}
}

View File

@@ -0,0 +1,27 @@
<?php
/**
* Klasa odpowiadajaca za zarzadzanie hasłem
*/
class Password extends Resource {
/**
* Metoda pozwalająca na zmianę hasła dostępu do systemu EN.
* @param type $newPassword
* @return array
*/
public function change($newPassword) {
$result = $this->_callWebservice ('changePassword', array('newPassword' => $newPassword));
return $result;
}
/**
* Metoda pozwalająca pobrać czas ważności hasła
* @return array
*/
public function getExpiredDate() {
$result = $this->_callWebservice ('getPasswordExpiredDate');
return $result;
}
}

View File

@@ -0,0 +1,145 @@
<?php
/**
* Klasa odpowiadająca za generowanie wydruków w formacie PDF
*/
class PdfContent extends Resource {
var $_options = array('cache_wsdl' => WSDL_CACHE_NONE);
/**
* Metoda umożliwia pobranie samego blankietu pobrania dla przesyłek z pobraniem dla zbiorów jeszcze nie wysłanych
* @param type $guid
* @param type $idBufor
*/
public function getBlankietPobraniaByGuids($guid, $idBufor = '') {
$params = array('guid' => $guid);
if (!empty($idBufor)) {
$params['idBufor'] = $idBufor;
}
$result = $this->_callWebservice('getBlankietPobraniaByGuids', $params);
if (!$this->hasErrors()) {
if (isset($result['content']['pdfContent'])) {
return $result['content']['pdfContent'];
} else {
if (is_array($result['content'])) {
$content = '';
foreach ($result['content'] as $c) {
$content .= $c['pdfContent'];
}
return $content;
}
}
}
return false;
}
/**
* Metoda po zwalająca pobrać wydruk Książki Nadawczej. Wydruk prezentowany jest w formacie PDF
* @param type $idEnvelope - zwracane przez send z obiektu Envelope
* @param boolean $includeNierejestrowane
*/
public function getOutboxBook($idEnvelope, $includeNierejestrowane = true) {
$result = $this->_callWebservice('getOutboxBook', array('idEnvelope' => $idEnvelope, 'includeNierejestrowane' => $includeNierejestrowane));
if (isset($result['pdfContent'])) {
return $result['pdfContent'];
}
return false;
}
/**
* Metoda pozwalająca pobrać wydruk zestawiania dla Firmowej Poczty. Wydruk jest w formacie PDF
* @param type $idEnvelope - zwracane przez send z obiektu Envelope
*/
public function getFirmowaPocztaBook($idEnvelope) {
$result = $this->_callWebservice('getFirmowaPocztaBook', array('idEnvelope' => $idEnvelope));
if (isset($result['pdfContent'])) {
return $result['pdfContent'];
}
return false;
}
/**
* Metoda pozwalająca pobrać nalepki adresowe. Wydruk jest w formacie PDF.
* @param type $idEnvelope - zwracane przez send z obiektu Envelope
*/
public function getAddresLabel($idEnvelope,$guid='') {
$result = $this->_callWebservice('getAddressLabel', array('idEnvelope' => $idEnvelope));
if (isset($result['content']['pdfContent'])) {
return $result['content']['pdfContent'];
}
if(!empty($guid)&&isset($result['content'])&&is_array($result['content'])){
foreach($result['content'] as $content){
if($content['guid'] == $guid){
return $content['pdfContent'];
}
}
}
return false;
}
/**
* Metoda umożliwia pobranie kompletu nalepek adresowych w jednym pliku w formacie pdf.
* Pobranie nalepek jest możliwe po wywołaniu metody send z obiektu Envelope
* @param type $idEnvelope - zwracane przez send z obiektu Envelope
*/
public function getAddresLabelCompact($idEnvelope) {
$result = $this->_callWebservice('getAddresLabelCompact', array('idEnvelope' => $idEnvelope));
if (isset($result['pdfContent'])) {
return $result['pdfContent'];
}
return false;
}
/**
* Metoda umożliwia pobranie nalepek adresowych w jednym pliku w formacie pdf dla przekazanego zakresu guidów przesyłek
* @param type $guid
* @param type $idBufor
*/
public function getAddresLabelByGuid($guid, $idBufor = '') {
$params = array('guid' => $guid);
if (!empty($idBufor)) {
$params['idBufor'] = $idBufor;
}
$result = $this->_callWebservice('getAddresLabelByGuid', $params);
if (isset($result['content']['pdfContent'])) {
return $result['content']['pdfContent'];
}
return false;
}
/**
* Metoda umożliwia pobranie nalepek adresowych w jednym pliku w formacie pdf dla przekazanego zakresu guidów przesyłek
* @param type $guid
* @param type $idBufor
*/
public function getAddresLabelByGuidCompact($guid, $idBufor = '') {
$params = array('guid' => $guid);
if (!empty($idBufor)) {
$params['idBufor'] = $idBufor;
}
$result = $this->_callWebservice('getAddresLabelByGuidCompact', $params);
if (isset($result['pdfContent'])) {
return $result['pdfContent'];
}
return false;
}
/**
* Metoda umożliwia pobranie nalepek adresowych w jednym pliku w formacie pdf dla przekazanego zakresu guidów przesyłek
* @param type $guid
*/
public function getPrintForParcel($guid) {
$params = array('guid' => $guid);
//$type = new PrintType();
$params['type'] = array('kind'=>'ADDRESS_LABEL','method'=>'ALL_PARCELS_IN_ONE_FILE');
$result = $this->_callWebservice('getPrintForParcel', $params);
if (isset($result['printResult']['print'])) {
return $result['printResult']['print'];
}
return false;
}
}

View File

@@ -0,0 +1,101 @@
<?php
/**
* Klasa odpowiadajaca za zarzadzanie profilami nadawcy
*/
class Profil extends Resource {
/**
* Metoda umożliwia pobranie listy dostępnych profili nadawcy
* @return array
*/
public function getList() {
$result = $this->_callWebservice ('getProfilList');
return $result;
}
/**
* metoda zwracajaca list profili dla zwrotu dokumentow
* @return array
*/
public function getReturnDocumentsProfileList() {
$result = $this->_callWebservice ('getReturnDocumentsProfileList');
return $result;
}
/**
* Metoda umożliwia pobranie profilu nadawcy
* @return array
*/
public function get($idProfil = '') {
$result = $this->_callWebservice ('getProfilList');
if (!empty($result) && isset($result['profil'])) {
return array_shift($result['profil']);
}
if(!empty($idProfil)&&!empty($result) && isset($result['profil'])){
foreach($result['profil'] as $v){
if(isset($v['idProfil']) && $v['idProfil'] === $idProfil){
return $v;
}
}
}
return $result;
}
/**
* Metoda umożliwia utworzenie nowego profilu nadawcy
* @param type $nazwa
* @param type $ulica
* @param type $numerDomu
* @param type $numerLokalu
* @param type $miejscowosc
* @param type $kodPocztowy
* @param type $kraj
* @param type $nazwSkrocona
* @return array
*/
public function create($nazwa, $ulica, $numerDomu, $numerLokalu, $miejscowosc, $kodPocztowy, $kraj, $nazwSkrocona) {
$params = array(
'nazwa' => $nazwa,
'ulica' => $ulica,
'numerDomu' => $numerDomu,
'numerLokalu' => $numerLokalu,
'miejscowosc' => $miejscowosc,
'kodPocztowy' => $kodPocztowy,
'kraj' => $kraj,
'nazwaSkrocona' => $nazwSkrocona
);
$result = $this->_callWebservice ('createProfil', array('profil' => $params));
return $result;
}
/**
* Metoda umożliwia zmianę profilu nadawcy
* @param type $idProfil
* @param type $nazwa
* @param type $ulica
* @param type $numerDomu
* @param type $numerLokalu
* @param type $miejscowosc
* @param type $kodPocztowy
* @param type $kraj
* @param type $nazwSkrocona
* @return array
*/
public function update($idProfil, $nazwa, $ulica, $numerDomu, $numerLokalu, $miejscowosc, $kodPocztowy, $kraj, $nazwSkrocona) {
$params = array(
'nazwa' => $nazwa,
'ulica' => $ulica,
'numerDomu' => $numerDomu,
'numerLokalu' => $numerLokalu,
'miejscowosc' => $miejscowosc,
'kodPocztowy' => $kodPocztowy,
'kraj' => $kraj,
'idProfil' => $idProfil,
'nazwaSkrocona' => $nazwSkrocona
);
$result = $this->_callWebservice ('updatePrrofil', array('profil' => $params));
return $result;
}
}

View File

@@ -0,0 +1,719 @@
<?php
require_once __DIR__ .'/../Soap/Client.php';
/**
*
*/
abstract class Resource {
/**
*
* @var type
*/
private static $_webService = null;
private static $api_url = "https://e-nadawca.poczta-polska.pl/websrv/labs.wsdl";
private static $api_url_endpoint = "https://e-nadawca.poczta-polska.pl/websrv/labs.php";
public static $test_api_url = "https://en-testwebapi2.poczta-polska.pl/websrv/labs.wsdl";
public static $test_api_url_endpoint = "https://en-testwebapi2.poczta-polska.pl/websrv/labs.php";
/**
*
* @var type
*/
private $_url = '';
/**
*
* @var type
*/
private $_username = '';
/**
*
* @var type
*/
private $_password = '';
/**
*
* @var type
*/
private $_location = '';
/**
*
* @var type
*/
private $_debug = false;
protected $_options = array();
/**
*
* @var type
*/
protected $_errorHandler = null;
private $_logger = null;
private $_errors = array();
/**
*
* @param type $class
* @return type
*/
public static function autoload($class) {
$path = dirname(__FILE__) . '/' . str_replace('_', '/', $class) . '.php';
if (!file_exists($path)) {
return;
}
require_once $path;
}
/**
*
* @return type
*/
protected function _getWebservice() {
if (is_null(self::$_webService)) {
self::$_webService = new Client($this->_url, $this->_username, $this->_password, $this->_location, $this->_debug, $this->_options);
}
return self::$_webService;
}
/**
*
*/
public function init() {
$this->_setConnectionParams();
$this->_logger = new ENadawcaErrorLogger();
}
public function resetWebservice(){
self::$_webService = null;
}
/**
*
*/
private function _setConnectionParams() {
$this->_url = Configuration::get(PPSetting::PP_TEST_URL)?self::$test_api_url:self::$api_url;
$this->_location = Configuration::get(PPSetting::PP_TEST_URL)?self::$test_api_url_endpoint:self::$api_url_endpoint;
$this->_username = Configuration::get(PPSetting::PP_USER);
$this->_password = Configuration::get(PPSetting::PP_PASSWORD);
}
protected function _callWebService($function_name, $parameters = array(), array $options = null) {
try {
$this->_errors = array();
return $this->_getWebservice()->call($function_name, $parameters, $options);
} catch (ClientException $e) {
$this->_errors[] = Translate::getAdminTranslation('Wystąpił błąd komunikacji z Elektronicznym Nadawcą');
$this->_logger->logException($e);
} catch (ENadawcaException $e) {
$this->_errors[] = Translate::getAdminTranslation($e->getMessage());
$this->_logger->logException($e);
}
return false;
}
public function getErrors() {
$errors = $this->_errors;
return $errors;
}
public function hasErrors() {
return !empty($this->_errors);
}
/**
*
* @return type
*/
public function createGuid() {
mt_srand((double) microtime() * 10000);
$charid = strtoupper(md5(uniqid(rand(), true)));
$retval = substr($charid, 0, 32);
return $retval;
}
}
/**
*
*/
abstract class ShipmentCategory {
const EKONOMICZNA = 'EKONOMICZNA';
const PRIORYTETOWA = 'PRIORYTETOWA';
}
/**
*
*/
abstract class Gabaryt {
const A = 'GABARYT_A';
const B = 'GABARYT_B';
}
/**
*
*/
class paczkaPocztowaPLUSType {
public $posteRestante; // boolean
public $iloscPotwierdzenOdbioru; // iloscPotwierdzenOdbioruType
public $kategoria; // kategoriaType
public $gabaryt; // gabarytType
public $wartosc; // wartoscType
public $masa; // masaType
public $zwrotDoslanie; // boolean
}
/**
*
*/
class przesylkaPobraniowaType {
public $pobranie; // pobranieType
public $posteRestante; // boolean
public $iloscPotwierdzenOdbioru; // iloscPotwierdzenOdbioruType
public $kategoria; // kategoriaType
public $gabaryt; // gabarytType
public $ostroznie; // boolean
public $wartosc; // wartoscType
public $masa; // masaType
}
/**
*
*/
class przesylkaNaWarunkachSzczegolnychType {
public $posteRestante; // boolean
public $iloscPotwierdzenOdbioru; // iloscPotwierdzenOdbioruType
public $kategoria; // kategoriaType
public $wartosc; // wartoscType
public $masa; // masaType
}
/**
*
*/
class przesylkaPoleconaKrajowaType {
public $epo; // EPOType
public $zasadySpecjalne; // zasadySpecjalneEnum
public $posteRestante; // boolean
public $iloscPotwierdzenOdbioru; // iloscPotwierdzenOdbioruType
public $kategoria; // kategoriaType
public $gabaryt; // gabarytType
public $format;
public $masa; // masaType
public $egzemplarzBiblioteczny; // boolean
public $dlaOciemnialych; // boolean
public $obszarMiasto; // boolean
public $miejscowa; // boolean
public $opis;
}
/**
*
*/
class przesylkaHandlowaType {
public $posteRestante; // boolean
public $masa; // masaType
}
/**
*
*/
class przesylkaListowaZadeklarowanaWartoscType {
public $posteRestante; // boolean
public $wartosc; // wartoscType
public $iloscPotwierdzenOdbioru; // iloscPotwierdzenOdbioruType
public $kategoria; // kategoriaType
public $gabaryt; // gabarytType
public $masa; // masaType
}
/**
*
*/
class przesylkaFullType {
public $przesylkaShort; // przesylkaShortType
public $przesylkaFull; // przesylkaType
}
/**
*
*/
class przesylkaZagranicznaType {
public $posteRestante; // boolean
public $kategoria; // kategoriaType
public $masa; // masaType
public $ekspres; // boolean
public $kraj; // string
}
/**
*
*/
class przesylkaRejestrowanaType {
public $adres; // adresType
public $nadawca; // adresType
public $relatedToAllegro; // relatedToAllegroType
public $numerNadania; // numerNadaniaType
public $sygnatura; // sygnaturaType
public $terminSprawy; // terminType
public $rodzaj; // rodzajType
public $weryfikacjaPlatnosci; // boolean
}
/**
*
*/
class przesylkaNieRejestrowanaType {
public $ilosc; // anonymous97
}
/**
*
*/
class paczkaPocztowaType {
public $epo; // EPOType
public $zasadySpecjalne; // zasadySpecjalneEnum
public $posteRestante; // boolean
public $iloscPotwierdzenOdbioru; // iloscPotwierdzenOdbioruType
public $kategoria; // kategoriaType
public $gabaryt; // gabarytType
public $masa; // masaType
public $wartosc; // wartoscType
public $zwrotDoslanie; // boolean
public $egzemplarzBiblioteczny; // boolean
public $dlaOciemnialych; // boolean
public $opis;//string
}
/**
*
*/
class Adres {
public $nazwa;
public $nazwa2;
public $ulica;
public $numerDomu;
public $numerLokalu;
public $miejscowosc;
public $kodPocztowy;
public $kraj;
public $telefon;
public $email;
public $mobile;
public $osobaKontaktowa;
public $nip;
public static function get($params = array()) {
$self = new self;
foreach ($params as $k => $v) {
$self->$k = $v;
}
return (array) $self;
}
}
class Pobranie {
public $sposobPobrania;
public $kwotaPobrania;
public $nrb;
public $tytulem;
public $sprawdzenieZawartosciPrzesylkiPrzezOdbiorce;
const SPOSOB_POBRANIA_PRZEKAZ = 'PRZEKAZ';
const SPOSOB_POBRANIA_RACHUNEK_BANKOWY = 'RACHUNEK_BANKOWY';
}
class Ubezpieczenie {
public $rodzaj;
public $kwota;
const RODZAJ_STANDARD = 'STANDARD';
const RODZAJ_PRECJOZA = 'PRECJOZA';
}
class globalExpresType {
public $ubezpieczenie; // ubezpieczenieType
public $potwierdzenieDoreczenia; // potwierdzenieDoreczeniaType
public $masa; // masaType
public $posteRestante; // boolean
public $zawartosc; // string
public $kategoria; // kategoriaType
public $numerPrzesylkiKlienta; // string
}
class przesylkaFirmowaPoleconaType {
public $epo; // EPOType
public $zasadySpecjalne; // zasadySpecjalneEnum
public $posteRestante; // boolean
public $iloscPotwierdzenOdbioru; // iloscPotwierdzenOdbioruType
public $masa; // masaType
public $miejscowa; // boolean
public $obszarMiasto; // boolean
public $kategoria; // kategoriaType
public $gabaryt; // gabarytType
public $opis;
}
class EMSType {
public $ubezpieczenie; // ubezpieczenieType
public $deklaracjaCelna; // deklaracjaCelnaType
public $potwierdzenieDoreczenia; //potwierdzenieDoreczeniaType
public $typOpakowania; // EMSTypOpakowaniaType
public $masa; // masaType
public $zalaczoneDokumenty; // boolean
public $opis;
}
class paczkaZagranicznaType {
public $zwrot; // zwrotType
public $deklaracjaCelna; // deklaracjaCelnaType
public $posteRestante; // boolean
public $masa; // masaType
public $wartosc; // wartoscType
public $kategoria; // kategoriaType
public $iloscPotwierdzenOdbioru; // iloscPotwierdzenOdbioruType
public $utrudnionaManipulacja; // boolean
public $ekspres; // boolean
public $numerReferencyjnyCelny; // string
public $opis;
}
class przesylkaPoleconaZagranicznaType {
public $posteRestante;
public $kategoria;
public $masa;
public $iloscPotwierdzenOdbioru;
public $ekspres;
public $opis;
}
class PotwierdzenieDoreczenia {
public $sposob; // sposobDoreczeniaPotwierdzeniaType
public $kontakt; // string
}
class przesylkaBiznesowaType {
public $pobranie; // pobranieType
public $urzadWydaniaEPrzesylki; // urzadWydaniaEPrzesylkiType
public $subPrzesylka; // subPrzesylkaBiznesowaType
public $ubezpieczenie; // ubezpieczenieType
public $epo; // EPOType
public $adresDlaZwrotu; //adresDlaZwrotuType
public $zasadySpecjalne; // zasadySpecjalneEnum
public $masa; // masaType
public $gabaryt; // gabarytBiznesowaType
public $wartosc; // wartoscType
public $ostroznie; // boolean
public $numerTransakcjiOdbioru; // numerTransakcjiOdbioruType
public $opis;
public $guid;
public $niestandardowa;
public $potwierdzenieOdbioru;
public $doreczenie;
public $zwrotDokumentow;
public $sprawdzenieZawartosciPrzesylkiPrzezOdbiorce; // boolean
}
class pocztexKrajowyType {
public $pobranie; // pobranieType
public $odbiorPrzesylkiOdNadawcy; // odbiorPrzesylkiOdNadawcyType
public $doreczenie; // doreczenieType
public $zwrotDokumentow; // zwrotDokumentowType
public $potwierdzenieOdbioru; // potwierdzenieOdbioruType
public $potwierdzenieDoreczenia; // potwierdzenieDoreczeniaType
public $ubezpieczenie; // ubezpieczenieType
public $posteRestante; // boolean
public $terminRodzaj; // terminRodzajType
public $kopertaFirmowa; // boolean
public $masa; // masaType
public $wartosc; // wartoscType
public $ostroznie; // boolean
public $ponadgabaryt; // boolean
public $uiszczaOplate; // uiszczaOplateType
public $odleglosc; // int
public $zawartosc; // string
public $sprawdzenieZawartosciPrzesylkiPrzezOdbiorce; // boolean
}
class uslugaKurierskaType {
public $pobranie; // pobranieType
public $odbiorPrzesylkiOdNadawcy; // odbiorPrzesylkiOdNadawcyType
public $potwierdzenieDoreczenia; // potwierdzenieDoreczeniaType
public $urzadWydaniaEPrzesylki; // urzadWydaniaEPrzesylkiType
public $subPrzesylka; // subUslugaKurierskaType
public $potwierdzenieOdbioru; // potwierdzenieOdbioruKurierskaType
public $ubezpieczenie; // ubezpieczenieType
public $zwrotDokumentow; // zwrotDokumentowKurierskaType
public $idDokumentyZwrotneAdresy;
public $doreczenie; // doreczenieUslugaKurierskaType
public $epo; // EPOType
public $adresDlaZwrotu;
public $zasadySpecjalne; // zasadySpecjalneEnum
public $masa; // masaType
public $wartosc; // wartoscType
public $ponadgabaryt; // boolean
public $odleglosc; // int
public $zawartosc; // string
public $sprawdzenieZawartosciPrzesylkiPrzezOdbiorce; // boolean
public $ostroznie; // boolean
public $uiszczaOplate; // uiszczaOplateType
public $termin; // terminKurierskaType
public $opakowanie; // opakowanieKurierskaType
public $numerPrzesylkiKlienta; // string
public $numerTransakcjiOdbioru; // numerTransakcjiOdbioruType
public $opis;
}
class PlacowkaPocztowa {
public $lokalizacjaGeograficzna; // lokalizacjaGeograficznaType
public $id; // int
public $prefixNazwy; // string
public $nazwa; // string
public $wojewodztwo; // string
public $powiat; // string
public $miejsce; // string
public $kodPocztowy; // anonymous127
public $miejscowosc; // anonymous128
public $ulica; // string
public $numerDomu; // string
public $numerLokalu; // string
public $nazwaWydruk; // string
public $punktWydaniaEPrzesylki; // boolean
public $powiadomienieSMS; // boolean
public $punktWydaniaPrzesylkiBiznesowejPlus; // boolean
public $punktWydaniaPrzesylkiBiznesowej; // boolean
public $siecPlacowek; // siecPlacowekEnum
public $idZPO; // string
}
class TerminRodzaj {
const MIEJSKI_DO_3H_DO_5KM = 'MIEJSKI_DO_3H_DO_5KM';
const MIEJSKI_DO_3H_DO_10KM = 'MIEJSKI_DO_3H_DO_10KM';
const MIEJSKI_DO_3H_DO_15KM = 'MIEJSKI_DO_3H_DO_15KM';
const MIEJSKI_DO_3H_POWYZEJ_15KM = 'MIEJSKI_DO_3H_POWYZEJ_15KM';
const MIEJSKI_DO_4H_DO_10KM = 'MIEJSKI_DO_4H_DO_10KM';
const MIEJSKI_DO_4H_DO_15KM = 'MIEJSKI_DO_4H_DO_15KM';
const MIEJSKI_DO_4H_DO_20KM = 'MIEJSKI_DO_4H_DO_20KM';
const MIEJSKI_DO_4H_DO_30KM = 'MIEJSKI_DO_4H_DO_30KM';
const MIEJSKI_DO_4H_DO_40KM = 'MIEJSKI_DO_4H_DO_40KM';
const KRAJOWY = 'KRAJOWY';
const BEZPOSREDNI_DO_20KG = 'BEZPOSREDNI_DO_20KG';
const BEZPOSREDNI_DO_30KG = 'BEZPOSREDNI_DO_30KG';
const BEZPOSREDNI_OD_30KG_DO_100KG = 'BEZPOSREDNI_OD_30KG_DO_100KG';
const EKSPRES24 = 'EKSPRES24';
}
class UiszczaOplate{
const NADAWCA = 'NADAWCA';
const ADRESAT = 'ADRESAT';
}
class DoreczenieUslugaKurierska {
public $oczekiwanyTerminDoreczenia; // date
public $oczekiwanaGodzinaDoreczenia; // oczekiwanaGodzinaDoreczeniaUslugiType
public $wSobote; // boolean
public $w90Minut; // boolean
public $wNiedzieleLubSwieto; // boolean
public $doRakWlasnych; // boolean
public $wGodzinachOd20Do7; // boolean
public $po17; // boolean
}
class PotwierdzenieOdbioru {
public $ilosc;
public $sposob;
}
class OdbiorPrzesylkiOdNadawcy{
public $wSobote; // boolean
public $wNiedzieleLubSwieto; // boolean
public $wGodzinachOd20Do7; // boolean
}
class ZwrotDokumentowKurierska {
public $rodzajPocztex; // terminZwrotDokumentowKurierskaType
public $rodzajPaczka; // terminZwrotDokumentowPaczkowaType
public $rodzajList; // rodzajListType
}
class rodzajListType {
public $polecony; // boolean
public $kategoria; // kategoriaType
}
class Zwrot {
public $zwrotPoLiczbieDni; // int
public $traktowacJakPorzucona; // boolean
public $sposobZwrotu; // sposobZwrotuType
}
class subPrzesylkaBiznesowaType {
public $ubezpieczenie; // ubezpieczenieType
public $numerNadania; // numerNadaniaType
public $masa; // masaType
public $gabaryt; // gabarytBiznesowaType
public $wartosc; // wartoscType
public $ostroznie; // boolean
public $guid; // guid paczki
}
class subUslugaKurierskaType {
public $pobranie; // pobranieType
public $ubezpieczenie; // ubezpieczenieType
public $numerNadania; // numerNadaniaType
public $masa; // masaType
public $wartosc; // wartoscType
public $ostroznie; // boolean
public $opakowanie; // opakowanieKurierskaType
public $ponadgabaryt; // boolean
public $numerPrzesylkiKlienta; // string
}
class kartaType {
public $idKarta; // int
public $opis; // string
public $aktywna; // boolean
}
class doreczenieBiznesowaType {
public $doRakWlasnych;
}
class zwrotDokumentowBiznesowaType {
public $rodzaj;
public $idDokumentyZwrotneAdresy;
}
class pocztex2021KurierType
{
public $subPrzesylka;
public $punktOdbioru;
public $punktNadania;
public $kopertaPocztex;
public $godzinaDoreczenia;
public $doreczenieWeWskazanymDniu;
}
class subPocztex2021KurierType
{
public $pobranie;
public $ubezpieczenie;
public $numerNadania;
public $masa;
public $wartosc;
public $ostroznie;
public $ponadgabaryt;
public $format;
public $numerPrzesylkiKlienta;
}
class pocztex2021NaDzisType
{
public $subPrzesylka;
public $odleglosc;
public $obszar;
}
class subPocztex2021NaDzisType
{
public $pobranie;
public $ubezpieczenie;
public $numerNadania;
public $masa;
public $wartosc;
public $ostroznie;
public $ponadgabaryt;
public $format;
public $numerPrzesylkiKlienta;
}
class zawartoscPocztex2021Type {
public $zawartoscSpecjalna;
public $zawartoscInna;
}
class potwierdzenieEDoreczeniaType {
public $sposob;
public $kontakt;
}
class placowkaPocztowaType {
public $id; // int
public $prefixNazwy; // string
public $nazwa; // string
public $siecPlacowek;
public $wojewodztwo; // string
public $powiat; // string
public $miejsce; // string
public $kodPocztowy; // anonymous127
public $miejscowosc; // anonymous128
public $ulica; // string
public $numerDomu; // string
public $numerLokalu; // string
public $nazwaWydruk; // string
public $punktWydaniaEPrzesylki; // boolean
public $powiadomienieSMS; // boolean
public $punktWydaniaPrzesylkiBiznesowejPlus; // boolean
public $lokalizacjaGeograficzna;
public $punktWydaniaPrzesylkiBiznesowej; // boolean
public $deliveryPath;
}

View File

@@ -0,0 +1,574 @@
<?php
/**
* Klasa odpowiadajaca za dodawanie przesyłek
*/
class Shipment extends Resource {
/**
* tablica przesyłek do dodania
* @var array
*/
private $_przesylki = array();
/**
* Metoda umozliwiająca dodanie paczkki Pocztowej
* @param $adres
* @param type $kategoria
* @param type $gabaryt
* @param type $masa
* @param type $wartosc
* @param type $zwrotDoslanie
* @param type $posteRestante
* @param type $iloscPotwierdzenOdbioru
* @param type $egzemplarzBiblioteczny
* @param type $dlaOciemnialych
* @return boolean
*/
public function addPaczkaPocztowa($adres, $kategoria, $gabaryt, $masa, $wartosc, $zwrotDoslanie, $posteRestante = false, $iloscPotwierdzenOdbioru = 0, $egzemplarzBiblioteczny = false, $dlaOciemnialych = false, $opis = '') {
$paczka = new paczkaPocztowaType();
$paczka->adres = $adres;
$paczka->epo = false;
$paczka->posteRestante = $posteRestante;
$paczka->iloscPotwierdzenOdbioru = $iloscPotwierdzenOdbioru;
$paczka->kategoria = $kategoria;
$paczka->gabaryt = $gabaryt;
$paczka->wartosc = $wartosc;
$paczka->masa = $masa;
$paczka->zwrotDoslanie = $zwrotDoslanie;
$paczka->guid = $this->createGuid();
$paczka->egzemplarzBiblioteczny = $egzemplarzBiblioteczny;
$paczka->dlaOciemnialych = $dlaOciemnialych;
$paczka->opis = $opis;
$this->_przesylki[] = $paczka;
return true;
}
/**
* Metoda umozliwiająca dodanie przesyłki listownej
* @param $adres
* @param type $kategoria
* @param type $gabaryt
* @param type $masa
* @param type $wartosc
* @param type $posteRestante
* @param type $iloscPotwierdzenOdbioru
* @return boolean
*/
public function addPrzesylkaListowa($adres, $kategoria, $gabaryt, $masa, $wartosc, $posteRestante = false, $iloscPotwierdzenOdbioru = 0) {
$paczka = new przesylkaListowaZadeklarowanaWartoscType();
$paczka->adres = $adres;
$paczka->posteRestante = $posteRestante;
$paczka->iloscPotwierdzenOdbioru = $iloscPotwierdzenOdbioru;
$paczka->kategoria = $kategoria;
$paczka->gabaryt = $gabaryt;
$paczka->wartosc = $wartosc;
$paczka->masa = $masa;
$paczka->guid = $this->createGuid();
$this->_przesylki[] = $paczka;
return true;
}
/**
* Metoda umozliwia dodanie przesylki biznesowej
* @param $adres
* @param $gabaryt
* @param $opis
* @param $pobranie
* @param $ubezpieczenie
* @param $urzadWydaniaEPrzesylki
* @param $masa
* @param $wartosc
* @param $ostroznie
* @param int $wielopaczkowosc_ilosc
* @param $niestandardowa
* @param $potwierdzenieOdbioru
* @param $doreczenie
* @param $zwrotDokumentow
* @param $odbiorca
* @return bool
*/
public function addPrzesylkaBiznesowa($adres, $gabaryt, $opis, $pobranie, $ubezpieczenie, $urzadWydaniaEPrzesylki, $masa, $wartosc, $ostroznie, $wielopaczkowosc_ilosc = 0, $niestandardowa, $potwierdzenieOdbioru, $doreczenie, $zwrotDokumentow, $odbiorca) {
$package = new przesylkaBiznesowaType();
$package->pobranie = $pobranie;
$package->adres = $adres;
$package->gabaryt = $gabaryt;
$package->masa = $masa;
$package->wartosc = $wartosc;
$package->sprawdzenieZawartosciPrzesylkiPrzezOdbiorce = $odbiorca;
$package->opis = $opis;
$package->ostroznie = $ostroznie;
$package->guid = $this->createGuid();
$package->urzadWydaniaEPrzesylki = $urzadWydaniaEPrzesylki;
$package->ubezpieczenie = $ubezpieczenie;
$package->niestandardowa = $niestandardowa;
$package->doreczenie = $doreczenie;
$package->potwierdzenieOdbioru = $potwierdzenieOdbioru;
$package->zwrotDokumentow = $zwrotDokumentow;
if($wielopaczkowosc_ilosc>0){
unset($package->urzadWydaniaEPrzesylki);
$this->addSubPrzesylkaBiznesowa($wielopaczkowosc_ilosc,$package);
}
$this->_przesylki[] = $package;
return true;
}
/**
* Metoda umozliwa dodanie podprzesyłki do przesylki biznesowej
* @param $losc
* @param $parentPackage
*/
public function addSubPrzesylkaBiznesowa($losc, $parentPackage){
$packages = array();
for($i=0;$i<$losc-1;$i++){
$package = new subPrzesylkaBiznesowaType();
$package->guid = $this->createGuid();
$package->ubezpieczenie = $parentPackage->ubezpieczenie;
$package->masa = $parentPackage->masa;
$package->gabaryt = $parentPackage->gabaryt;
$package->wartosc = $parentPackage->wartosc;
$package->ostroznie = $parentPackage->ostroznie;
$packages[] = $package;
}
if(!empty($packages)){
$parentPackage->subPrzesylka = $packages;
}
}
public function addSubPocztex2021($ilosc, $parentPackage){
$packages = array();
for($i=0;$i<$ilosc-1;$i++){
$package = new subPocztex2021KurierType();
$package->guid = $this->createGuid();
$package->ubezpieczenie = $parentPackage->ubezpieczenie;
$package->masa = $parentPackage->masa;
$package->gabaryt = $parentPackage->gabaryt;
$package->wartosc = $parentPackage->wartosc;
$package->ostroznie = $parentPackage->ostroznie;
$package->ponadgabaryt = $parentPackage->ponadgabaryt;
$package->format = $parentPackage->format;
$packages[] = $package;
}
if(!empty($packages)){
$parentPackage->subPrzesylka = $packages;
}
}
public function addSubPocztex2021Dzis($ilosc, $parentPackage){
$packages = array();
for($i=0;$i<$ilosc-1;$i++){
$package = new subPocztex2021NaDzisType();
$package->guid = $this->createGuid();
$package->ubezpieczenie = $parentPackage->ubezpieczenie;
$package->masa = $parentPackage->masa;
$package->gabaryt = $parentPackage->gabaryt;
$package->wartosc = $parentPackage->wartosc;
$package->ostroznie = $parentPackage->ostroznie;
$package->ponadgabaryt = $parentPackage->ponadgabaryt;
$package->format = $parentPackage->format;
$packages[] = $package;
}
if(!empty($packages)){
$parentPackage->subPrzesylka = $packages;
}
}
public function addPocztex2021Kurier($adres, $format, $pobranie, $masa, $wartosc, $odbiorca, $opis, $ostroznie, $koperta, $sobota, $godzinaDoreczenia, $ponadgabaryt, $zawartosc, $punktOdbioru, $ubezpieczenie, $wielopaczkowosc_ilosc, $dzien, $potwierdzenieDoreczenia, $punktNadania){
$package = new pocztex2021KurierType();
$package->pobranie = $pobranie;
$package->adres = $adres;
$package->format = $format;
$package->masa = $masa;
$package->wartosc = $wartosc;
$package->sprawdzenieZawartosciPrzesylkiPrzezOdbiorce = $odbiorca;
$package->opis = $opis;
$package->ostroznie = $ostroznie;
$package->guid = $this->createGuid();
$package->kopertaPocztex = $koperta;
$package->godzinaDoreczenia = $godzinaDoreczenia;
$package->ponadgabaryt = $ponadgabaryt;
$package->odbiorWSobote = $sobota;
$package->zawartosc = $zawartosc;
$package->punktOdbioru = $punktOdbioru;
$package->ubezpieczenie = $ubezpieczenie;
$package->doreczenieWeWskazanymDniu = $dzien;
$package->potwierdzenieDoreczenia = $potwierdzenieDoreczenia;
$package->punktNadania = $punktNadania;
if($wielopaczkowosc_ilosc>0){
$this->addSubPocztex2021($wielopaczkowosc_ilosc,$package);
}
$this->_przesylki[] = $package;
return true;
}
public function addPocztex2021Dzis($adres, $format, $pobranie, $masa, $wartosc, $odbiorca, $opis, $ostroznie, $sobota, $zawartosc, $ubezpieczenie, $wielopaczkowosc_ilosc, $odleglosc, $obszar, $potwierdzenieDoreczenia){
$package = new pocztex2021NaDzisType();
$package->pobranie = $pobranie;
$package->adres = $adres;
$package->masa = $masa;
$package->wartosc = $wartosc;
$package->sprawdzenieZawartosciPrzesylkiPrzezOdbiorce = $odbiorca;
$package->opis = $opis;
$package->ostroznie = $ostroznie;
$package->guid = $this->createGuid();
$package->odbiorWSobote = $sobota;
$package->zawartosc = $zawartosc;
$package->ubezpieczenie = $ubezpieczenie;
$package->obszar = $obszar;
if($obszar == 'MIASTO'){
$package->odleglosc = $odleglosc;
$package->format = $format;
}
$package->potwierdzenieDoreczenia = $potwierdzenieDoreczenia;
if($wielopaczkowosc_ilosc>0 && $obszar == 'KRAJ'){
unset($package->urzadWydaniaEPrzesylki);
$this->addSubPocztex2021Dzis($wielopaczkowosc_ilosc,$package);
}
$this->_przesylki[] = $package;
return true;
}
/**
* Metoda umożliwia dodanie usługi kurierskiej
* @param $adres
* @param $termin
* @param $opis
* @param $zawartosc
* @param $masa
* @param $ostroznie
* @param $niestandardowa
* @param $sprawdzenie
* @param $urzadWydaniaEPrzesylki
* @param $uiszczaOplate
* @param $doreczenie
* @param $pobranie
* @param $wartosc
* @param $ubezpieczenie
* @param $potwierdzenieOdbioru
* @param $potwierdzenieDoreczenia
* @param $odbiorPrzesylkiOdNadawcy
* @param $zasadySpecjalne
* @param int $wielopaczkowosc_ilosc
* @param $zwrotDokumentow
* @param $odleglosc
* @return bool
*/
public function addUslugaKurierska($adres, $termin, $opis, $zawartosc, $masa, $ostroznie, $niestandardowa, $sprawdzenie, $urzadWydaniaEPrzesylki, $uiszczaOplate, $doreczenie, $pobranie, $wartosc, $ubezpieczenie, $potwierdzenieOdbioru, $potwierdzenieDoreczenia, $odbiorPrzesylkiOdNadawcy, $zasadySpecjalne, $wielopaczkowosc_ilosc = 0, $zwrotDokumentow,$odleglosc) {
$package = new uslugaKurierskaType();
$package->pobranie = $pobranie;
$package->adres = $adres;
$package->termin = $termin;
$package->masa = $masa;
$package->wartosc = $wartosc;
$package->opis = $opis;
$package->ostroznie = $ostroznie;
$package->zawartosc = $zawartosc;
$package->uiszczaOplate = $uiszczaOplate;
$package->guid = $this->createGuid();
$package->urzadWydaniaEPrzesylki = $urzadWydaniaEPrzesylki;
if($wielopaczkowosc_ilosc>0){
unset($package->urzadWydaniaEPrzesylki);
$this->addSubUslugaKurierska($wielopaczkowosc_ilosc,$package);
}
$package->ponadgabaryt = $niestandardowa;
$package->sprawdzenieZawartosciPrzesylkiPrzezOdbiorce = $sprawdzenie;
$package->ubezpieczenie = $ubezpieczenie;
$package->doreczenie = $doreczenie;
$package->ubezpieczenie = $ubezpieczenie;
$package->wartosc = $wartosc;
$package->pobranie = $pobranie;
$package->potwierdzenieOdbioru = $potwierdzenieOdbioru;
$package->potwierdzenieDoreczenia = $potwierdzenieDoreczenia;
$package->odbiorPrzesylkiOdNadawcy = $odbiorPrzesylkiOdNadawcy;
$package->zasadySpecjalne = $zasadySpecjalne;
$package->zwrotDokumentow = $zwrotDokumentow;
$package->odleglosc = $odleglosc;
$this->_przesylki[] = $package;
return true;
}
/**
* metoda umożliwia ustawienie pod przesylki dla uslugi kurierskiej
* @param $losc
* @param $parentPackage
*/
public function addSubUslugaKurierska($losc, $parentPackage){
$packages = array();
for($i=0;$i<$losc-1;$i++){
$package = new subUslugaKurierskaType();
$package->guid = $this->createGuid();
$package->ubezpieczenie = $parentPackage->ubezpieczenie;
$package->masa = $parentPackage->masa;
$package->gabaryt = $parentPackage->gabaryt;
$package->wartosc = $parentPackage->wartosc;
$package->ostroznie = $parentPackage->ostroznie;
$package->ponadgabaryt = $parentPackage->ponadgabaryt;
$packages[] = $package;
}
if(!empty($packages)){
$parentPackage->subPrzesylka = $packages;
}
}
/**
* metoda umożliwia ustawienie przesylki Global Express
* @param $adres
* @param $masa
* @param $zawartosc
* @param string $numer
* @param null $potwierdzenie
* @param string $opis
* @return bool
*/
public function addGlobalExpres($adres, $masa, $zawartosc, $numer = '', $potwierdzenie = null, $opis = '') {
$package = new globalExpresType();
$package->adres = $adres;
$package->guid = $this->createGuid();
$package->potwierdzenieDoreczenia = $potwierdzenie;
$package->masa = $masa;
$package->zawartosc = $zawartosc;
$package->numerPrzesylkiKlienta = $numer;
$package->opis = $opis;
$this->_przesylki[] = $package;
return true;
}
/**
* Metoda umozliwa dodanie przesylki poleconej krajowej
* @param $adres
* @param $kategoria
* @param $format
* @param $masa
* @param bool $obszarMiasto
* @param bool $miejscowa
* @param int $iloscPotwierdzenOdbioru
* @param string $numer
* @param bool $dlaOciemnialych
* @param bool $egzemplarzBiblioteczny
* @param string $opis
* @param bool $posteRestante
* @return bool
*/
public function addPrzesylkaPoleconaKrajowa($adres, $kategoria, $format, $masa, $obszarMiasto = true, $miejscowa = true, $iloscPotwierdzenOdbioru = 0, $numer = '', $dlaOciemnialych = false, $egzemplarzBiblioteczny = false, $opis = '', $posteRestante = false) {
$package = new przesylkaPoleconaKrajowaType();
$package->adres = $adres;
$package->posteRestante = $posteRestante;
$package->dlaOciemnialych = $dlaOciemnialych;
$package->egzemplarzBiblioteczny = $egzemplarzBiblioteczny;
$package->iloscPotwierdzenOdbioru = $iloscPotwierdzenOdbioru;
$package->masa = $masa;
//$package->miejscowa = $miejscowa;
//$package->obszarMiasto = $obszarMiasto;
$package->kategoria = $kategoria;
$package->format = $format;
$package->guid = $this->createGuid();
$package->opis = $opis;
$this->_przesylki[] = $package;
return true;
}
/**
* Metoda umozliwa dodanie przesylki poleconej firmowej
* @param $adres
* @param $opis
* @param $kategoria
* @param $gabaryt
* @param $masa
* @param bool $miejscowa
* @param int $iloscPotwierdzenOdbioru
* @param string $zasadySpecjalne
* @param bool $posteRestante
* @return bool
*/
public function addPrzesylkaPoleconaFirmowa($adres, $opis, $kategoria, $gabaryt,$masa, $miejscowa = true, $iloscPotwierdzenOdbioru = 0, $zasadySpecjalne = '', $posteRestante = false) {
$package = new przesylkaFirmowaPoleconaType();
$package->adres = $adres;
$package->zasadySpecjalne = $zasadySpecjalne;
$package->posteRestante = $posteRestante;
$package->iloscPotwierdzenOdbioru = $iloscPotwierdzenOdbioru;
$package->masa = $masa;
$package->opis = $opis;
$package->miejscowa = $miejscowa;
$package->kategoria = $kategoria;
$package->gabaryt = $gabaryt;
$package->guid = $this->createGuid();
$this->_przesylki[] = $package;
return true;
}
/**
* Metoda umozliwiajaca dodanie przesylki poleconej zagranicznej
* @param $adres
* @param $opis
* @param $masa
* @param int $iloscPotwierdzenOdbioru
* @param bool $posteRestante
* @return bool
*/
public function addPrzesylkaPoleconaZagraniczna($adres, $opis, $masa, $iloscPotwierdzenOdbioru = 0, $posteRestante = false) {
$package = new przesylkaPoleconaZagranicznaType();
$package->adres = $adres;
$package->posteRestante = $posteRestante;
$package->masa = $masa;
$package->opis = $opis;
$package->iloscPotwierdzenOdbioru = $iloscPotwierdzenOdbioru;
$package->guid = $this->createGuid();
$this->_przesylki[] = $package;
return true;
}
/**
* Metoda uzmowliwajaca dodanie paczki zagaranicznej
* @param $adres
* @param $masa
* @param $opis
* @param $kategoria
* @param $wartosc
* @param int $iloscPotwierdzenOdbioru
* @param $zwrot
* @return bool
*/
public function addPaczkaZagraniczna($adres, $masa, $opis, $kategoria, $wartosc, $iloscPotwierdzenOdbioru = 0, $zwrot) {
$package = new paczkaZagranicznaType();
$package->adres = $adres;
$package->masa = $masa;
$package->opis = $opis;
$package->wartosc = $wartosc;
$package->kategoria = $kategoria;
// $package->numerReferencyjnyCelny = $numer;
$package->iloscPotwierdzenOdbioru = $iloscPotwierdzenOdbioru;
$package->zwrot = $zwrot;
$package->guid = $this->createGuid();
$this->_przesylki[] = $package;
return true;
}
/**
* Metoda umozliwajaca dodanie paczki EMS
* @param $adres
* @param $masa
* @param $opis
* @param $typ
* @param $ubezpieczenie
* @param $potwierdzenieDoreczenia
* @return bool
*/
public function addEMS($adres, $masa, $opis, $typ, $ubezpieczenie, $potwierdzenieDoreczenia) {
$package = new EMSType();
$package->adres = $adres;
$package->typOpakowania = $typ;
$package->masa = $masa;
$package->ubezpieczenie = $ubezpieczenie;
$package->opis = $opis;
$package->guid = $this->createGuid();
$package->potwierdzenieDoreczenia = $potwierdzenieDoreczenia;
$this->_przesylki[] = $package;
return true;
}
/**
* Metoda umożliwiająca przesuwanie przesyłek pomiędzy buforami
* @param integer $idBuforFrom
* @param iteger $idBuforTo
* @param array $guids
* @return array
*/
public function move($idBuforFrom, $idBuforTo, array $guids) {
$result = false;
if ($idBuforFrom != $idBuforTo) {
if (!$this->isFull($idBuforTo)) {
$size = $this->getRemained($idBuforTo);
if ($size > count($guids)) {
$result = $this->_callWebservice('moveShipments', array('idBuforFrom' => $idBuforFrom, 'idBuforTo' => $idBuforTo, 'guid' => $guids));
} else {
$this->errors[] = Translate::getAdminTranslation(sprintf('Do bufora docelowego można przesunąć %s przesyłki', $size));
}
} else {
$this->errors[] = Translate::getAdminTranslation('Bufor docelowy jest pełny');
}
}
return $result;
}
/**
* Metoda pozwalająca dodać przesyłki
* @return array
*/
public function add($idBufor = '') {
if (empty($idBufor) || $idBufor == 0 || $idBufor == '') {
$idBufor = $this->getNextBufor();
}
$params = array('przesylki' => $this->_przesylki,'idBufor'=>$idBufor);
if ($this->isFull($idBufor)) {
$idBufor = $params['idBufor'] = $this->getNextBufor();
}
$result = $this->_callWebservice('addShipment', $params);
if (isset($result['retval'])) {
$result['retval']['id_buffor'] = $idBufor;
return $result['retval'];
}
return false;
}
/**
* Metoda sprawdzajaca czy bufor jest przepelniony > 500
* @param string $idBufor
* @return bool
*/
public function isFull($idBufor = '') {
$packages = ENadawca::EnvelopeBuffor()->get($idBufor);
return count($packages) > 500;
}
/**
* metoda zwracajaca iloc przesylek w buforze
* @param string $idBufor
* @return int
*/
public function getSize($idBufor = '') {
$packages = ENadawca::EnvelopeBuffor()->get($idBufor);
return count($packages);
}
/**
* Metoda zwraca ile jeszcze moze sie zmiescie w buforze
* @param string $idBufor
* @return int
*/
public function getRemained($idBufor = '') {
$packages = ENadawca::EnvelopeBuffor()->get($idBufor);
$number = 500 - count($packages);
if ($number <= 0) {
$number = 0;
}
return $number;
}
/**
* metoda zwracajaca wolny bufor
* @return string
*/
public function getNextBufor() {
$list = ENadawca::EnvelopeBuffor()->getList();
$officesList = ENadawca::UrzedyNadania()->get();
$offices = array();
foreach ($officesList as $office) {
$offices[$office['urzadNadania']] = $office['urzadNadania'];
}
foreach ($list as $buffor) {
if (isset($offices[$buffor['urzadNadania']]) && !$this->isFull($buffor['idBufor'])) {
return $buffor['idBufor'];
}
}
return '';
}
}

View File

@@ -0,0 +1,28 @@
<?php
/**
* Klasa odpowiadajaca za pobieranie urzędów nadania
*/
class UrzedyNadania extends Resource {
/**
* Metoda pozwala pobrać wszystkie urzędy nadania, dla których nadający ma podpisaną umowę z PP
* @param type $param
* @return array
*/
public function get($param = '') {
$result = $this->_callWebservice('getUrzedyNadania');
if (isset($result['urzedyNadania']['urzadNadania'])) {
$result['urzedyNadania'] = array($result['urzedyNadania']);
}
if (!empty($param) && isset($result[$param])) {
foreach ($result as $v) {
if (isset($v['urzadNadania']) && $v['urzadNadania'] === $param) {
return $v;
}
}
}
return $result['urzedyNadania'];
}
}

View File

@@ -0,0 +1,146 @@
<?php
require_once __DIR__ . '/../Exception/ClientException.php';
/**
* Klasa odpowiedzialna za łacznie się z web api PP
*/
class Client extends SoapClient {
/**
* Mapa klas typów przesyłek
* @var type
*/
public static $classmap = array(
'przesylkaType' => 'przesylkaType',
'paczkaPocztowaType' => 'paczkaPocztowaType',
'przesylkaBiznesowaType' => 'przesylkaBiznesowaType',
'uslugaKurierskaType' => 'uslugaKurierskaType',
'globalExpresType' => 'globalExpresType',
'przesylkaPoleconaZagranicznaType' => 'przesylkaPoleconaZagranicznaType',
'przesylkaFirmowaPoleconaType' => 'przesylkaFirmowaPoleconaType',
'paczkaZagranicznaType' => 'paczkaZagranicznaType',
'EMSType' => 'EMSType',
'paczkaPocztowaPLUSType' => 'paczkaPocztowaPLUSType',
'przesylkaPobraniowaType' => 'przesylkaPobraniowaType',
'przesylkaNaWarunkachSzczegolnychType' => 'przesylkaNaWarunkachSzczegolnychType',
'przesylkaPoleconaKrajowaType' => 'przesylkaPoleconaKrajowaType',
'przesylkaHandlowaType' => 'przesylkaHandlowaType',
'przesylkaListowaZadeklarowanaWartoscType' => 'przesylkaListowaZadeklarowanaWartoscType',
'przesylkaFullType' => 'przesylkaFullType',
'przesylkaRejestrowanaType' => 'przesylkaRejestrowanaType',
'subUslugaKurierskaType' => 'subUslugaKurierskaType',
'subPrzesylkaBiznesowaType' =>'subPrzesylkaBiznesowaType',
'kartaType' => 'kartaType',
'rodzajListType' => 'rodzajListType',
'pocztex2021KurierType' => 'pocztex2021KurierType',
'subPocztex2021KurierType' => 'subPocztex2021KurierType',
'pocztex2021NaDzisType' => 'pocztex2021NaDzisType',
'subPocztex2021NaDzisType' => 'subPocztex2021NaDzisType',
'potwierdzenieEDoreczeniaType' => 'potwierdzenieEDoreczeniaType',
'placowkaPocztowaType' => 'placowkaPocztowaType',
);
/**
* Obiekt loggera
* @var type
*/
private $_logger = null;
/**
* Konstruktor
* @param type $url
* @param type $login
* @param type $password
* @param type $debug
* @param type $options
*/
public function __construct($url, $login, $password, $location, $debug = false, $options = array()) {
$this->url = $url;
$this->debug = $debug;
$options['login'] = $login;
$options['password'] = $password;
$options['uri'] = $url;
$options['location'] = $location;
$options['cache_wsdl'] = WSDL_CACHE_NONE;
$this->_logger = new ENadawcaLogger();
foreach (self::$classmap as $key => $value) {
if (!isset($options['classmap'][$key])) {
$options['classmap'][$key] = $value;
}
}
parent::__construct($url, $options);
}
private function _normalizeResponse($data) {
if (is_object($data)) {
$data = get_object_vars($data);
}
if (is_array($data)) {
foreach ($data as &$v) {
$v = $this->_normalizeResponse($v);
}
return $data;
} else {
return $data;
}
}
private function _checkErrors($data) {
if (isset($data['error'])&&is_array($data['error'])) {
if (!isset($data['error']['errorNumber'])) {
$errors = array();
foreach ($data['error'] as $v) {
$errors[] = $v['errorDesc'];
}
return implode("\n", $errors);
} else {
return $data['error']['errorDesc'];
}
} else {
if (is_array($data)) {
$errors = array();
foreach ($data as $d) {
$error = $this->_checkErrors($d);
if (!empty($error)) {
$errors[] = $error;
}
}
return implode("\n", $errors);
}
}
return '';
}
/**
* Metodą odpowiedzialna za wywołanie funkcji z api
* @param type $function_name
* @param type $parameters
* @param array $options
* @return type
*/
public function call($function_name, $parameters = array(), array $options = null) {
$response = false;
try {
$options['uri'] = $this->url;
if($this->debug){
$this->_logger->log("Call webserwice function " . $function_name, array('parameters' => $parameters, 'options' => $options));
}
$response = $this->_normalizeResponse($this->__soapCall($function_name, array($parameters), $options));
$errors = $this->_checkErrors($response);
if (!empty($errors)) {
throw new ENadawcaException($errors);
}
if($this->debug){
$this->_logger->log("Result webserwice function " . $function_name, $response);
}
} catch (SoapFault $e) {
throw new ClientException($e);
}
return $response;
}
}