Esempio n. 1
0
 public function savePackageFromPost()
 {
     $id_current_order = (int) Tools::getValue('id_order');
     $current_session_type = Tools::getValue('dpdpoland_SessionType');
     $id_method = (int) $this->getMethodBySessionType($current_session_type);
     if (!$this->validateAddressForPackageSession((int) Tools::getValue('dpdpoland_id_address_delivery'), (int) $id_method)) {
         self::$errors[] = $this->l('Your develivery address is not compatible with the selected shipping method.') . ' ' . $this->l('DPD Poland Domestic is available only if develivery address is Poland.') . ' ' . $this->l('DPD Internationl shipping method is available only if delivery address is not Poland.');
         return false;
     }
     $address_delivery = new Address((int) Tools::getValue('dpdpoland_id_address_delivery'));
     $address_validation_errors = $address_delivery->validateFields(false, true);
     if ($address_validation_errors !== true) {
         self::$errors[] = $this->l('Client address is not valid:') . ' ' . $address_validation_errors . '. ' . $this->l('Please update your client address with required fields.');
         return false;
     }
     $address_delivery->id = 0;
     $address_delivery->deleted = 1;
     if (!$address_delivery->save()) {
         self::$errors[] = $this->l('Could not save client address');
         return false;
     }
     $configuration = new DpdPolandConfiguration();
     $address_sender = new Address();
     $id_country = Country::getByIso('PL');
     $country = new Country($id_country, $this->context->language->id);
     $address_sender->id_country = Country::getByIso(self::POLAND_ISO_CODE);
     $address_sender->company = $configuration->company_name;
     $address_sender->firstname = $configuration->name_surname;
     $address_sender->lastname = $configuration->name_surname;
     $address_sender->address1 = $configuration->address;
     $address_sender->address2 = $country->name;
     $address_sender->postcode = self::convertPostcode($configuration->postcode);
     $address_sender->city = $configuration->city;
     $address_sender->other = $configuration->email;
     $address_sender->phone = $configuration->phone;
     $address_sender->alias = $this->l('Sender address');
     $address_sender->deleted = 1;
     $address_sender->vat_number = $address_delivery->vat_number;
     $address_sender->phone_mobile = $address_delivery->phone_mobile;
     $address_sender->dni = $address_delivery->dni;
     $address_validation_errors = $address_sender->validateFields(false, true);
     if ($address_validation_errors !== true) {
         self::$errors[] = $this->l('Sender address is not valid') . ' ' . $address_validation_errors;
         return false;
     }
     if (!$address_sender->save()) {
         self::$errors[] = $this->l('Could savesave sender address');
         return false;
     }
     $additional_info = Tools::getValue('additional_info');
     $package = new DpdPolandPackage();
     $package->id_order = $id_current_order;
     $package->sessionType = Tools::getValue('dpdpoland_SessionType');
     $package->payerNumber = Tools::getValue('dpdpoland_PayerNumber');
     $package->id_address_delivery = (int) $address_delivery->id;
     $package->id_address_sender = (int) $address_sender->id;
     $package->additional_info = $additional_info;
     $package->ref1 = Tools::getValue('dpdpoland_ref1');
     $package->ref2 = Tools::getValue('dpdpoland_ref2');
     if ($package->sessionType == 'domestic_with_cod') {
         $package->cod_amount = (double) Tools::getValue('dpdpoland_COD_amount');
     }
     if ($declaredValue_amount = Tools::getValue('dpdpoland_DeclaredValue_amount')) {
         $package->declaredValue_amount = (double) $declaredValue_amount;
     }
     foreach (Tools::getValue('parcels') as $parcel) {
         $package->addParcel($parcel, $additional_info);
     }
     if (!($result = $package->create())) {
         self::$errors = DpdPolandPackageWS::$errors;
         return false;
     } elseif (!$this->saveParcelsIntoPackage($package->id_package_ws, Tools::getValue('parcels'), $result['Parcels'], Tools::getValue('dpdpoland_products'))) {
         return false;
     }
     $waybill = isset($result['Parcels']['Parcel']['Waybill']) ? $result['Parcels']['Parcel']['Waybill'] : $result['Parcels']['Parcel'][0]['Waybill'];
     if (!$this->addTrackingNumber($id_current_order, $waybill)) {
         return false;
     }
     return $package->id_package_ws;
 }