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,144 @@
<?php
class PPCourier extends ObjectModel {
public $sender_name;
public $sender_street;
public $sender_home_number;
public $sender_local_number;
public $sender_place;
public $sender_postal_code;
public $sender_country;
public $sender_email;
public $sender_mobile_phone;
public $customer_name;
public $customer_street;
public $customer_home_number;
public $customer_local_number;
public $customer_place;
public $customer_postal_code;
public $customer_country;
public $customer_email;
public $customer_mobile_phone;
public $receipt_date;
public $shipment_mass;
public $shipment_quantity;
public $receipt_hour;
public $confirm_email;
public static $definition = array(
'table' => '',
'fields' => array(
'sender_name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true),
'sender_street' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true),
'sender_home_number' => array('type' => self::TYPE_STRING, 'validate' => 'isString'),
'sender_local_number' => array('type' => self::TYPE_STRING, 'validate' => 'isString'),
'sender_place' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true),
'sender_postal_code' => array('type' => self::TYPE_INT, 'validate' => 'isString', 'required' => true),
'sender_country' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true),
'sender_email' => array('type' => self::TYPE_STRING, 'validate' => 'isEmail'),
'sender_mobile_phone' => array('type' => self::TYPE_STRING, 'validate' => 'isPhoneNumber', 'size' => 16),
'customer_name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true),
'customer_street' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true),
'customer_home_number' => array('type' => self::TYPE_STRING, 'validate' => 'isString',),
'customer_local_number' => array('type' => self::TYPE_STRING, 'validate' => 'isString',),
'customer_place' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true),
'customer_postal_code' => array('type' => self::TYPE_INT, 'validate' => 'isString', 'required' => true),
'customer_country' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true),
'customer_email' => array('type' => self::TYPE_STRING, 'validate' => 'isEmail'),
'customer_mobile_phone' => array('type' => self::TYPE_STRING, 'validate' => 'isPhoneNumber', 'size' => 16),
'shipment_mass' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'required' => true),
'receipt_date' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'required' => true),
'shipment_quantity' => array('type' => self::TYPE_INT, 'validate' => 'isInt', 'required' => true),
'receipt_hour' => array('type' => self::TYPE_INT, 'validate' => 'isString', 'required' => true),
'confirm_email' => array('type' => self::TYPE_STRING, 'validate' => 'isEmail', 'required' => true),
),
);
public function __construct($id = null, $id_lang = null, $id_shop = null) {
$class_name = get_class($this);
if (!isset(ObjectModel::$loaded_classes[$class_name])) {
$this->def = ObjectModel::getDefinition($class_name);
$this->setDefinitionRetrocompatibility();
ObjectModel::$loaded_classes[$class_name] = get_object_vars($this);
} else {
foreach (ObjectModel::$loaded_classes[$class_name] as $key => $value) {
$this->{$key} = $value;
}
}
if ($id_lang !== null) {
$this->id_lang = (Language::getLanguage($id_lang) !== false) ? $id_lang : Configuration::get('PS_LANG_DEFAULT');
}
$this->_setFieldsFromProfil();
}
/**
* Ustawia pola z profilu ENadawcy
*/
protected function _setFieldsFromProfil(){
$account = ENadawca::Account();
$user_info = $account->getMyAccount();
if ($account->hasErrors()) {
$this->errors = $account->getErrors();
} else {
if (!empty($user_info)) {
foreach (array('sender', 'customer') as $v) {
$this->{$v . '_name'} = isset($user_info['domyslnyProfil']['nazwa'])?$user_info['domyslnyProfil']['nazwa']:'';
$this->{$v . '_street'} = isset($user_info['domyslnyProfil']['ulica'])?$user_info['domyslnyProfil']['ulica']:'';
$this->{$v . '_home_number'} = isset($user_info['domyslnyProfil']['numerDomu'])?$user_info['domyslnyProfil']['numerDomu']:'';
$this->{$v . '_local_number'} = isset($user_info['domyslnyProfil']['numerLokalu'])?$user_info['domyslnyProfil']['numerLokalu']:'';
$this->{$v . '_place'} = isset($user_info['domyslnyProfil']['miejscowosc'])?$user_info['domyslnyProfil']['miejscowosc']:'';
$this->{$v . '_postal_code'} = isset($user_info['domyslnyProfil']['kodPocztowy'])?$user_info['domyslnyProfil']['kodPocztowy']:'';
$this->{$v . '_country'} = isset($user_info['domyslnyProfil']['kraj'])?$user_info['domyslnyProfil']['kraj']:'';
$this->{$v . '_email'} = isset($user_info['email'])?$user_info['email']:'';
$this->{$v . '_mobile_phone'} = isset($user_info['domyslnyProfil']['mobile'])?$user_info['domyslnyProfil']['mobile']:'';
}
}
}
}
/**
* Metoda komunikuje sie ENadawca i wykonuje operacje zamow kuriera
*/
public function add($auto_date = true, $null_values = false) {
$courier = ENadawca::Kurier();
$fields = $this->getFields();
$courier->zamow(
$fields['receipt_date'], PocztaPolskaEn::getReceptionTime($fields['receipt_hour']), $fields['shipment_quantity'], $fields['shipment_mass'], $fields['confirm_email'], Adres::get(
array(
'nazwa' => $fields['customer_name'],
'nazwa2' => $fields['customer_name'],
'ulica' => $fields['customer_street'],
'numerDomu' => $fields['customer_home_number'],
'numerLokalu' => $fields['customer_local_number'],
'miejscowosc' => $fields['customer_place'],
'kodPocztowy' => $fields['customer_postal_code'],
'kraj' => $fields['customer_country'],
'mobile' => $fields['customer_mobile_phone'],
'email' => $fields['customer_email'],
)
), Adres::get(
array(
'nazwa' => $fields['sender_name'],
'nazwa2' => $fields['sender_name'],
'ulica' => $fields['sender_street'],
'numerDomu' => $fields['sender_home_number'],
'numerLokalu' => $fields['sender_local_number'],
'miejscowosc' => $fields['sender_place'],
'kodPocztowy' => $fields['sender_postal_code'],
'kraj' => $fields['sender_country'],
'mobile' => $fields['sender_mobile_phone'],
'email' => $fields['sender_email'],
)
)
);
if ($courier->hasErrors()) {
$this->errors = $courier->getErrors();
return false;
}
return true;
}
}

View File

@@ -0,0 +1,206 @@
<?php
class PPOrder extends ObjectModel {
public $id_order;
public $id_shipment;
public $shipment_number;
public $order_date;
public $send_date;
public $post_date;
public $shipment_type;
public $id_buffor;
public $date_add;
public $date_upd;
public $pni;
public $id_cart;
public $id_carrier;
public $point;
public $cod;
public static $definition = array(
'table' => 'pocztapolskaen_order',
'primary' => 'id_pp_order',
'fields' => array(
'id_order' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
'id_cart' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'id_carrier' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'id_shipment' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true),
'shipment_number' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'allow_null' => true),
'shipment_type' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'allow_null' => true),
'send_date' => array('type' => self::TYPE_DATE, 'allow_null' => true),
'post_date' => array('type' => self::TYPE_DATE, 'allow_null' => true),
'id_buffor' => array('type' => self::TYPE_INT, 'validate' => 'isInt'),
'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
'point' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'allow_null' => true),
'pni' => array('type' => self::TYPE_INT, 'validate' => 'isInt', 'allow_null' => true),
'cod' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
),
'associations' => array(
'buffor' => array('type' => self::HAS_ONE, 'field' => 'id_buffor', 'foreign_field' => 'id_en', 'object' => 'PPOrderSet'),
),
);
/**
* Metoda pobiera wszystkie przesyłki pogrupowane wzgledem id zbioru
*/
public static function getCollection() {
$arr = array();
$collection = new PrestaShopCollection('PPOrder');
foreach ($collection as $c) {
$arr[$c->id_en] = $c;
}
return $arr;
}
/**
* Metoda pobiera przesylke po identyfikatorze zamowienia
*/
public static function findByOrder($idOrder) {
$orders = new PrestaShopCollection('PPOrder');
$orders->where('id_order', '=', $idOrder);
if ($orders->count() > 0) {
return $orders[0];
}
$object = new self;
$object->id_order = $idOrder;
return $object;
}
public static function findByBuffor($idBuffor) {
$orders = new PrestaShopCollection('PPOrder');
$orders->where('id_buffor', '=', $idBuffor);
if ($orders->count() > 0) {
return $orders[0];
}
return array();
}
/**
* Metoda pobiera przesylki o podanych w parametrze identyfikatorach
*/
public static function getOrders($ordersIds, $isSent = true, $isShipment = false) {
$orders = new PrestaShopCollection('PPOrder');
//$orders->join('buffor');
$orders->where('id_order', 'in', $ordersIds);
/*if ($isSent) {
$orders->where('buffor.id_envelope', '>', '0');
}*/
if ($isShipment) {
$orders->where('id_shipment', '>', '0');
}
return $orders;
}
/**
* Metoda ustawia status zamowienia w zależnosci od zdefiniowanych ustawien
*/
public function setOrderStatus($name) {
$order = new Order($this->id_order);
$order_status = PPSetting::getStatusValue($name);
if (!empty($order_status)) {
$order->setCurrentState($order_status);
$order->save();
}
}
public function setOrderShipment(){
$order = new Order($this->id_order);
$orderCarrier = new OrderCarrier($order->getIdOrderCarrier());
$orderCarrier->tracking_number = $this->shipment_number;
$orderCarrier->save();
}
/**
* Metoda zwraca adres dostawy zamowienia
*/
public function getOrderAddress() {
$order = new Order($this->id_order);
$address = new Address($order->id_address_delivery);
return $address;
}
public function getOrderCustomer() {
$order = new Order($this->id_order);
return $order->getCustomer();
}
/**
* Metoda zwraca przesylki pogrupowane wzgledem id zbioru
*/
public static function getGroupedByBuffer($ordersIds = array()) {
$orders = new PrestaShopCollection('PPOrder');
$orders->where('id_order', 'in', $ordersIds);
$arr = array();
if (!empty($orders)) {
foreach ($orders as $order) {
$arr[$order->id_buffor]['orders'][] = $order;
$arr[$order->id_buffor]['guids'][] = $order->id_shipment;
}
}
return $arr;
}
/**
* Metoda zwraca przesylke wzgledem id koszyka
*/
public static function findByCart($idCart, $return_object = true) {
$row = Db::getInstance()->getRow('
SELECT `id_pp_order` as id
FROM `' . _DB_PREFIX_ . 'pocztapolskaen_order` pp
WHERE pp.`id_cart` = ' . (int) $idCart, false
);
if (isset($row['id'])) {
return new self($row['id']);
} else {
if ($return_object) {
$ppOrder = new PPOrder();
$ppOrder->id_cart = $idCart;
$ppOrder->id_order = 0;
$ppOrder->id_shipment = 0;
$ppOrder->shipment_number = '';
$ppOrder->save();
return $ppOrder;
} else {
return null;
}
}
}
/**
* Metoda zwraca zbior powiazany z przesylka
*/
public function getOrderSet() {
$ppOrders = new PrestaShopCollection('PPOrderSet');
$ppOrders->where('id_en', '=', $this->id_buffor);
return $ppOrders[0];
}
/**
* Metoda resetuje pola zwiazane z przesylka
*/
public function clearShipment() {
$this->clearOrderShipment();
if(!empty($this->pni)){
$this->id_shipment = 0;
$this->id_buffor = 0;
$this->shipment_type = '';
$this->send_date = null;
$this->shipment_number = '';
$this->save();
} else {
$this->delete();
}
}
public function clearOrderShipment(){
$order = new Order($this->id_order);
$orderCarrier = new OrderCarrier($order->getIdOrderCarrier());
if($orderCarrier->tracking_number == $this->shipment_number){
$orderCarrier->tracking_number = '';
$orderCarrier->save();
}
}
}

View File

@@ -0,0 +1,314 @@
<?php
class PPOrderSet extends ObjectModel {
public $name;
public $sender_home_number;
public $envelope_status;
public $id_post_office;
public $post_office;
public $post_date;
public $id_en;
public $id_envelope;
public $date_add;
public $date_upd;
public $active;
public $_errors;
private static $expiredSets = null;
public static $definition = array(
'table' => 'pocztapolskaen_order_set',
'primary' => 'id_order_set',
'fields' => array(
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true),
'active' => array('type' => self::TYPE_BOOL),
'id_post_office' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
'post_date' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'required' => true),
'id_en' => array('type' => self::TYPE_INT, 'validate' => 'isInt','allow_null'=>true),
'id_envelope' => array('type' => self::TYPE_INT, 'validate' => 'isInt','allow_null'=>true),
'envelope_status' => array('type' => self::TYPE_STRING, 'validate' => 'isString','allow_null'=>true),
'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
)
);
/**
* Metoda sprawdza czy istnieje zbiór domyślny i jeśli nie tworzy nowy
*/
public static function createDefault($defoffice) {
$now = date('Y-m-d');
if(!is_object($defoffice)||!isset($defoffice->id_en)||empty($defoffice->id_en)){
$defoffice = new PrestaShopCollection('PPPostOffice');
if(isset($defoffice[0])){
$defoffice = $defoffice[0];
}
}
$sets = PPOrderSet::getActiveByOffice($defoffice);
if ($sets->count() <= 0 && isset($defoffice->id_en)&& !empty($defoffice->id_en)) {
$buffor = ENadawca::EnvelopeBuffor();
$object = new PPOrderSet();
$result = $buffor->create($now, $defoffice->id_en, self::getDefaultName());
if (!$buffor->hasErrors()) {
$object->name = self::getDefaultName();
PPSetting::setNumberOrderSet(PPSetting::getNextNumberForOrderSet());
$object->id_en = $result['createdBufor']['idBufor'];
$object->active = 1;
$object->post_date = $now;
$object->id_post_office = $defoffice->id;
$object->envelope_status = 'niewyslany';
$object->save();
return $object;
}
}
return null;
}
public static function getDefaultName(){
return date('Y-m-d').'/'.PPSetting::getNextNumberForOrderSet();
}
/**
* Metoda synchronizuje zbiory ze zbiorami ENadawcy
*/
public static function reloadData($deleteExpired = false) {
$buffors = ENadawca::EnvelopeBuffor()->getList();
if(!is_array($buffors)){
$buffors = array();
//return false;
}
$offices = PPPostOffice::getCollection();
$objects = self::getCollection();
$idBufor = array();
$bufforsToDelete = array();
$bufforsENId = array();
foreach ($buffors as $b) {
if (isset($objects[$b['idBufor']])) {
$idBufor[$b['idBufor']] = $objects[$b['idBufor']];
}
$bufforsENId[$b['idBufor']] = $b['idBufor'];
}
foreach ($objects as $id=>$obj) {
if(!in_array($id,$bufforsENId)&&empty($obj->id_envelope) && !$obj->isSendByOffice()){
$bufforsToDelete[] = $obj;
}
}
if($deleteExpired){
$expired = self::getExpired();
foreach ($expired as $object) {
$object->delete(false);
$object->deleteEnvelopeBuffor();
}
}
foreach ($buffors as $buffor) {
$obj = (isset($idBufor[$buffor['idBufor']]) && is_object($idBufor[$buffor['idBufor']])) ? $idBufor[$buffor['idBufor']] : new PPOrderSet();
if (!isset($buffor['urzadNadania']) || !isset($offices[$buffor['urzadNadania']])) {
continue;
}
$obj->force_id = false;
$obj->id_en = (int) $buffor['idBufor'];
$obj->name = empty($buffor['opis']) ? ' - ' : $buffor['opis'];
$obj->active = $buffor['active'];
$obj->id_post_office = $offices[$buffor['urzadNadania']]->id;
$obj->post_date = $buffor['dataNadania'];
$obj->envelope_status = 'niewyslany';
$obj->save();
}
//synchronizacja usunietych z EN
foreach ($bufforsToDelete as $obj) {
$obj->delete();
}
return true;
}
/**
* Metoda pobiera zbiory przeterminowane
*/
public static function getExpired($col = '') {
if(is_null(self::$expiredSets)){
$setsCollection = new PrestaShopCollection('PPOrderSet');
$setsCollection->where('post_date', '<=', date('Y-m-d', strtotime('-'.PocztaPolskaEn::SET_EXPIRED_DAYS.' days')));
$setsCollection->where('id_en', '>', '0');
self::$expiredSets = $setsCollection;
}
if(!empty($col)){
$arr = array();
foreach($setsCollection as $set){
$arr[] = $set->{$col};
}
return $arr;
}
return self::$expiredSets;
}
/**
* Metoda zwraca wszystkie zbiory
*/
public static function getCollection() {
$arr = array();
$collection = new PrestaShopCollection('PPOrderSet');
foreach ($collection as $c) {
$arr[$c->id_en] = $c;
}
return $arr;
}
/**
* Metoda zwraca nie wysłane zbiory
*/
public static function getActiveCollection() {
$setsCollection = new PrestaShopCollection('PPOrderSet');
$setsCollection->sqlWhere('(a0.id_envelope is null OR a0.id_envelope=0) and a0.active = 1');
return $setsCollection;
}
/**
* Metoda zwraca zbiory aktualne po urzedzie nadania
*/
public static function getActiveByOffice($office) {
$setsCollection = new PrestaShopCollection('PPOrderSet');
$setsCollection->sqlWhere('(a0.id_envelope is null OR a0.id_envelope=0) AND a0.active = 1');
if(is_object($office)&&isset($office->id)&&!empty($office->id)){
$setsCollection->where('id_post_office','=',$office->id);
}
return $setsCollection;
}
/**
* Metoda tworzy zbior w ENadawcy z lokalengo zbioru
*/
public function addEnvelopeBuffor() {
$buffor = ENadawca::EnvelopeBuffor();
$fields = $this->getFields();
$office = new PPPostOffice($fields['id_post_office']);
$result = $buffor->create($fields['post_date'], $office->id_en, $fields['name']);
if ($buffor->hasErrors()) {
$this->_errors = $buffor->getErrors();
return false;
}
$this->id_en = $result['createdBufor']['idBufor'];
$this->envelope_status = 'niewyslany';
return true;
}
/**
* Metoda aktualizuje zbior w ENadawcy z lokalengo zbioru
*/
public function updateEnvelopeBuffor() {
$buffor = ENadawca::EnvelopeBuffor();
$fields = $this->getFields();
$office = new PPPostOffice($fields['id_post_office']);
$buffor->update($fields['id_en'], $fields['post_date'], $office->id_en, $fields['name']);
if ($buffor->hasErrors()) {
$this->_errors = $buffor->getErrors();
return false;
}
$this->id_en = $fields['id_en'];
return true;
}
/**
* Metoda usuwa zbior w ENadawcy powiazany z lokalenym zbiorem
*/
public function deleteEnvelopeBuffor() {
$buffor = ENadawca::EnvelopeBuffor();
$buffor->clear($this->id_en);
if ($buffor->hasErrors()) {
$this->_errors = $buffor->getErrors();
return false;
}
return true;
}
/**
* Metoda pobiera urzad nadania
*/
public function getPostOffice() {
if (!empty($this->id_post_office)) {
$object = new PPPostOffice($this->id_post_office);
if (!empty($object->id)) {
return $object;
}
}
return null;
}
/**
* Metoda zwraca wszystkie przesyłki wzgledem id zbioru przekazanego w parametrze
*/
public function getOrdersByBuffor($idBuffor) {
$ppOrders = new PrestaShopCollection('PPOrder');
$ppOrders->where('id_buffor', '=', $idBuffor);
return $ppOrders;
}
/**
* Metoda zwraca zbior wzgledem id zbioru przekazanego w parametrze
*/
public static function getByBuffor($idBuffor) {
$ppOrderSet = new PrestaShopCollection('PPOrderSet');
$ppOrderSet->where('id_en', '=', $idBuffor);
if(isset($ppOrderSet[0])){
return $ppOrderSet[0];
}
return new self;
}
/**
* Metoda pobiera identyfikatory przesylek wzgledem id zbioru przekazanego w parametrze
*/
public function getOrdersGuidsByBuffor($idBuffor) {
$ppOrders = $this->getOrdersByBuffor($idBuffor);
$guids = array();
foreach ($ppOrders as $order) {
$guids[] = $order->id_shipment;
}
return $guids;
}
/**
* Metoda usuwa przesylki powiazane z buforem
*/
public function delete($removeShippment = true) {
if($removeShippment){
$orders = $this->getOrdersByBuffor($this->id_en);
foreach ($orders as $order) {
$order->clearShipment();
}
}
$result = parent::delete();
return $result;
}
public function isSendByOffice(){
$packages = PPOrder::findByBuffor($this->id_en);
if(!empty($packages)){
$first_package = (is_object($packages)?$packages:$packages[0]);
$send_buffors = ENadawca::Envelope()->get(date('Y-m-d',strtotime('-1 week')),date('Y-m-d'));
if(isset($send_buffors['envelopes']['idEnvelope'])){
$send_buffors['envelopes'] = array($send_buffors['envelopes']);
}
if(isset($send_buffors['envelopes'])) {
foreach($send_buffors['envelopes'] as $envelop){
$shipments = ENadawca::Envelope()->getContentShort($envelop['idEnvelope']);
if(isset($shipments['przesylka']['guid'])){
$shipments['przesylka'] = array($shipments['przesylka']);
}
if(array_search($first_package->id_shipment, array_column($shipments['przesylka'], 'guid')) !== false){
$this->id_envelope = $envelop['idEnvelope'];
$this->envelope_status = 'wyslany';
$this->update();
return true;
}
}
}
}
return false;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,86 @@
<?php
class PPPostOffice extends ObjectModel {
public $name;
public $description;
public $id_en;
public $id_post_office;
public $date_add;
public $date_upd;
public static $definition = array(
'table' => 'pocztapolskaen_post_office',
'primary' => 'id_post_office',
'fields' => array(
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true),
'description' => array('type' => self::TYPE_STRING, 'validate' => 'isCleanHtml'),
'id_en' => array('type' => self::TYPE_INT, 'validate' => 'isInt'),
'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
),
);
private static $_data = null;
/**
* Metoda synchronizuje urzendy nadania z urzendami nadania ENadawcy
*/
public static function reloadData() {
$offices = ENadawca::UrzedyNadania()->get();
if (isset($offices['urzadNadania'])) {
$offices = array($offices);
}
if(!is_array($offices)){
$offices = array();
return false;
}
$idOffices = array();
foreach ($offices as $o) {
$idOffices[$o['urzadNadania']] = new PPPostOffice();
}
$objects = self::getCollection();
foreach ($objects as $object) {
if (!isset($idOffices[$object->id_en]) && !empty($object->id_post_office)) {
$object->delete();
} else{
$idOffices[$object->id_en] = $object;
}
}
foreach ($offices as $o) {
$obj = $idOffices[$o['urzadNadania']];
$obj->id_en = (int) $o['urzadNadania'];
$obj->name = $o['nazwaWydruk'];
$obj->description = $o['opis'];
$obj->save();
}
return true;
}
/**
* Metoda pobiera wszytskie urzedny nadania grupujac po id ENadawcy
*/
public static function getCollection($query = false) {
$arr = array();
if(is_null(self::$_data)){
self::$_data = new PrestaShopCollection('PPPostOffice');
}
$collection = self::$_data;
foreach ($collection as $c) {
if(!$query){
$arr[$c->id_en] = $c;
}
else{
$arr[] = array('id' => $c->id_post_office,'id_en'=> $c->id_en, 'name' => $c->name);
}
}
return $arr;
}
public static function clearCollection(){
self::$_data = null;
}
public static function getDefaultOffice(){
$default = new PPPostOffice(PPSetting::getSettingsValue(PPSetting::PP_DEFAULT_URZAD_ID));
return $default;
}
}

View File

@@ -0,0 +1,108 @@
<?php
class PPProfileAddress extends ObjectModel {
public $id_profile_address;
public $name;
public $friendly_name;
public $id_en;
public $street;
public $house_number;
public $premises_number;
public $city;
public $postal_code;
public $date_add;
public $date_upd;
public static $definition = array(
'table' => 'pocztapolskaen_profile_address',
'primary' => 'id_profile_address',
'fields' => array(
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true),
'friendly_name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),
'street' => array('type' => self::TYPE_STRING),
'house_number' => array('type' => self::TYPE_STRING),
'premises_number' => array('type' => self::TYPE_STRING),
'city' => array('type' => self::TYPE_STRING),
'postal_code' => array('type' => self::TYPE_STRING),
'id_en' => array('type' => self::TYPE_INT, 'validate' => 'isInt'),
'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
),
);
private static $_data = null;
/**
* Metoda synchronizuje profile adresow dla zwroconych dokuumentow
*/
public static function reloadData() {
$profiles = ENadawca::Profil()->getReturnDocumentsProfileList();
if(empty($profiles)) {
return false;
}
if (!isset($profiles['profile'][0])) {
$profiles = array($profiles['profile']);
} else {
$profiles = $profiles['profile'];
}
if(!is_array($profiles)){
return false;
}
$idProfiles = array();
foreach ($profiles as $o) {
$idProfiles[$o['idProfile']] = new PPProfileAddress();
}
$objects = self::getCollection();
foreach ($objects as $object) {
if (!isset($idProfiles[$object->id_en]) && !empty($object->id_profile_address)) {
$object->delete();
} else{
$idProfiles[$object->id_en] = $object;
}
}
foreach ($profiles as $o) {
if(is_array($o)) {
$obj = $idProfiles[$o['idProfile']];
$obj->id_en = (int) $o['idProfile'];
$obj->name = $o['name'];
$obj->friendly_name = $o['friendlyName'];
$obj->street = $o['street'];
$obj->house_number = $o['houseNumber'];
$obj->premises_number = isset($o['premisesNumber'])?$o['premisesNumber']:'';
$obj->city = $o['city'];
$obj->postal_code = $o['postalCode'];
$obj->save();
}
}
return true;
}
/**
* Metoda pobiera wszytskie profile adresow
*/
public static function getCollection($query = false) {
$arr = array();
if(is_null(self::$_data)){
self::$_data = new PrestaShopCollection('PPProfileAddress');
}
$collection = self::$_data;
foreach ($collection as $c) {
if(!$query){
$arr[$c->id_en] = $c;
}
else{
$arr[] = array('id' => $c->id_profile_address,'id_en'=> $c->id_en, 'name' => $c->name,
'friendly_name' => $c->friendly_name, 'street' => $c->street,
'house_number' => $c->house_number, 'premisses_number' => $c->premises_number,
'city' => $c->city, 'postal_code' => $c->postal_code,
);
}
}
return $arr;
}
public static function clearCollection(){
self::$_data = null;
}
}

View File

@@ -0,0 +1,255 @@
<?php
class PPSetting {
const PP_SEPARATOR = ',';
const PP_USER = 'pp_user';
const PP_PASSWORD = 'pp_password';
const PP_TEST_URL = 'pp_test_url';
const PP_PASSWORD_NEW = 'pp_password_new';
const PP_PASSWORD_NEW_REPEAT = 'pp_password_new_repeat';
const PP_HELP_SUBJECT = 'pp_help_subject';
const PP_HELP_NAME_SURNAME = 'pp_help_name_surname';
const PP_HELP_EMAIL = 'pp_help_email';
const PP_HELP_TEXT = 'pp_help_text';
const PP_IS_STATUS_CREATE = 'pp_is_status_create';
const PP_STATUS_CREATE = 'pp_status_create';
const PP_IS_STATUS_PRINT_LABEL = 'pp_is_status_print_label';
const PP_STATUS_PRINT_LABEL = 'pp_status_print_label';
const PP_IS_STATUS_OFFICE_SEND = 'pp_is_status_office_send';
const PP_STATUS_OFFICE_SEND = 'pp_status_office_send';
const PP_DEFAULT_KARTA_ID ='pp_default_karta_id';
const PP_DEFAULT_URZAD_ID ='pp_default_urzad_id';
const PP_DEFAULT_KARTA_NAME = 'pp_default_karta_name';
const PP_SUPPORT_EMAIL = 'moduly.en@poczta-polska.pl';
const PP_SAVE_SETTINGS_SEND_EMAIL = 'pp_save_settings_send_email';
const PP_SAVE_SETTINGS_EMAIL_TEXT = 'pp_save_settings_email_text';
const PP_COUNT_ORDER_SET = 'pp_count_order_set';
const PP_COUNT_ORDER_SET_DATE = 'pp_count_order_set_date';
const PP_IS_CONNECTED = 'pp_is_connected';
const PP_PROCESS_DATA_RODO = 'pp_process_data_rodo';
const PP_PROCESS_INFORMATION_RODO = 'pp_process_information_rodo';
/**
* metoda zwracajaca status do ustawienia na zamowieniu podczas operacji na zbiorach
* @param $name
* @return string
*/
public static function getStatusValue($name) {
$isEnable = false;
switch ($name) {
case self::PP_STATUS_CREATE:
$isEnable = Configuration::get(self::PP_IS_STATUS_CREATE);
break;
case self::PP_STATUS_PRINT_LABEL:
$isEnable = Configuration::get(self::PP_IS_STATUS_PRINT_LABEL);
break;
case self::PP_STATUS_OFFICE_SEND:
$isEnable = Configuration::get(self::PP_IS_STATUS_OFFICE_SEND);
break;
}
return ($isEnable) ? Configuration::get($name) : '';
}
public static function getSettingsValue($name){
return Tools::getIsset($name)?Tools::getValue($name):Configuration::get($name);
}
/**
* metoda zwracajaca dostawce dla Odbioru w Punkcie
*
* @param bool $cod
* @return array
*/
public static function getPickupUpAtPoint($cod = false){
$pickup = array();
if(Configuration::get(PPPackage::PP_POCZTEX_48_IS_PICKUP_AT_POINT)){
if(!$cod){
$pickup = explode(self::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_48_PICKUP_AT_POINT_STANDARD));
} else {
$pickup = explode(self::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_48_PICKUP_AT_POINT_COD));
}
}
if(Configuration::get(PPPackage::PP_POCZTEX_IS_PICKUP_AT_POINT)){
if(!$cod){
$pickup = array_merge($pickup, explode(self::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_PICKUP_AT_POINT_STANDARD)));
} else {
$pickup = array_merge($pickup, explode(self::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_PICKUP_AT_POINT_COD)));
}
}
if(Configuration::get(PPPackage::PP_POCZTEX_2021_KURIER_IS_PICKUP_AT_POINT)){
if(!$cod){
$pickup = array_merge($pickup, explode(self::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_2021_KURIER_PICKUP_AT_POINT_STANDARD)));
} else {
$pickup = array_merge($pickup, explode(self::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_2021_KURIER_PICKUP_AT_POINT_COD)));
}
}
foreach($pickup as $key => $value){
if($value == ''){
$pickup[$key] = 0;
}
}
return $pickup;
}
/**
* metoda zwracajaca domyslne wartosci dla poszczegolnych przesylek PP
* @return array
*/
public static function getDefaultValues(){
$default_values = array();
$reflection = new ReflectionClass('PPPackage');
$staticProperties = $reflection->getConstants();
foreach($staticProperties as $key=>$value){
$default_values[$value] = Configuration::get($value);
}
return $default_values;
}
/**
* metoda zwracaja Karty dla danego uzytkownika API
* @return array
*/
public static function getCarts(){
$cart = ENadawca::Karta();
$carts = $cart->get();
$tab = array();
if($carts !== false){
foreach($carts as $value){
$tab[] = array('id'=>$value['idKarta'], 'name'=>$value['opis'].'('.$value['idKarta'].')');
}
}
return $tab;
}
/**
* metoda zwracaja rodzaje przesylek PP
* @return array
*/
public static function getPPDelivery(){
$reflection = new ReflectionClass('PPPackage');
$staticProperties = $reflection->getConstants();
$tab = array();
foreach($staticProperties as $key=>$value){
if(strpos($value,'delivery') !== false){
$con = Configuration::get($value);
if(!empty($con)){
$tab = array_merge($tab,explode(PPSetting::PP_SEPARATOR,Configuration::get($value)));
}
}
}
return array_unique($tab);
}
/**
* metoda zwracajaca rodzaj przesylki PP dla podanego id dostawcy
* @param $carrierId
* @param bool $delivery_cod
* @return mixed|string
*/
public static function getPackageByOrderDelvery($carrierId,$delivery_cod = false){
$reflection = new ReflectionClass('PPPackage');
$staticProperties = $reflection->getConstants();
$tab = array();
foreach($staticProperties as $key=>$value){
if(strpos($value,'delivery') !== false){
if(in_array($carrierId,explode(PPSetting::PP_SEPARATOR,Configuration::get($value)))){
return str_replace(array('_delivery','_standard','_cod','_pickup_at_point'),'',$value);
}
}
}
return '';
}
/**
* metoda sprawdzajaca czy podany id dostawcy posiada obsluge za pobraniem
* @param $carierId
* @return bool
*/
public static function isCarrierIsCod($carierId){
return in_array($carierId, array_merge(
explode(PPSetting::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_DELIVERY_COD)),
explode(PPSetting::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_PICKUP_AT_POINT_COD)),
explode(PPSetting::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_48_DELIVERY_COD)),
explode(PPSetting::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_48_PICKUP_AT_POINT_COD)),
explode(PPSetting::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_2021_KURIER_DELIVERY_COD)),
explode(PPSetting::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_2021_KURIER_PICKUP_AT_POINT_COD)),
explode(PPSetting::PP_SEPARATOR, Configuration::get(PPPackage::PP_POCZTEX_2021_DZIS_DELIVERY_COD))
));
}
/**
* metoda zwracajaca roznice pomiedzy 2 datami
* @param $date1
* @param $date2
* @return int
*/
public static function dateDiff($date1, $date2){
$dateObj1 = new DateTime($date1);
$dateObj2 = new DateTime($date2);
$interval = $dateObj1->diff($dateObj2);
return (int)$interval->format('%r%a');
}
/**
* metoda zwracajaca table POST i GET
* @return array
*/
public static function getAllValues()
{
return $_POST + $_GET;
}
/**
* metoda zwracaja bezpieczny string bez zbednych niebezpiecznych elementow
* @param $text
* @return string
*/
public static function safeString($text){
return trim(preg_replace('/[^(\x20-\x7F)\x0A\x0D]*/','', $text));
}
/**
* metoda zwracajaca z textu tylko cyfry
* @param $text
* @return mixed
*/
public static function onlyNumbers($text){
return preg_replace("/[^0-9]/", "",$text);
}
/**
* metoda zwracajaca kolejny numer do numeracji zbiorow
* @return int
*/
public static function getNextNumberForOrderSet(){
if(!Configuration::get(PPSetting::PP_COUNT_ORDER_SET) || Configuration::get(PPSetting::PP_COUNT_ORDER_SET_DATE) != date('Y-m-d')){
return 1;
}
return (int)Configuration::get(PPSetting::PP_COUNT_ORDER_SET) + 1;
}
/**
* metoda zapamietujaca w ustawieniach numeracje zbiorow dla danej daty
* @param $number
*/
public static function setNumberOrderSet($number){
Configuration::updateValue(PPSetting::PP_COUNT_ORDER_SET, $number);
Configuration::updateValue(PPSetting::PP_COUNT_ORDER_SET_DATE, date('Y-m-d'));
}
}

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;
}
}