public function isModuleDpdPickup(OrderEvent $event)
 {
     $address = AddressIcirelaisQuery::create()->findPk($event->getDeliveryAddress());
     if ($this->check_module($event->getDeliveryModule())) {
         //tmp solution
         $request = $this->getRequest();
         $pr_code = $request->request->get('pr_code');
         if (!empty($pr_code)) {
             // Get details w/ SOAP
             $con = new \SoapClient(__DIR__ . "/../Config/exapaq.wsdl", array('soap_version' => SOAP_1_2));
             $response = $con->GetPudoDetails(array("pudo_id" => $pr_code));
             $xml = new \SimpleXMLElement($response->GetPudoDetailsResult->any);
             if (isset($xml->ERROR)) {
                 throw new \ErrorException("Error while choosing pick-up & go store: " . $xml->ERROR);
             }
             $customer_name = AddressQuery::create()->findPk($event->getDeliveryAddress());
             $request->getSession()->set('DpdPickupDeliveryId', $event->getDeliveryAddress());
             if ($address === null) {
                 $address = new AddressIcirelais();
                 $address->setId($event->getDeliveryAddress());
             }
             // France Métropolitaine
             $address->setCode($pr_code)->setCompany((string) $xml->PUDO_ITEMS->PUDO_ITEM->NAME)->setAddress1((string) $xml->PUDO_ITEMS->PUDO_ITEM->ADDRESS1)->setAddress2((string) $xml->PUDO_ITEMS->PUDO_ITEM->ADDRESS2)->setAddress3((string) $xml->PUDO_ITEMS->PUDO_ITEM->ADDRESS3)->setZipcode((string) $xml->PUDO_ITEMS->PUDO_ITEM->ZIPCODE)->setCity((string) $xml->PUDO_ITEMS->PUDO_ITEM->CITY)->setFirstname($customer_name->getFirstname())->setLastname($customer_name->getLastname())->setTitleId($customer_name->getTitleId())->setCountryId($customer_name->getCountryId())->save();
         } else {
             throw new \ErrorException("No pick-up & go store chosen for DpdPickup delivery module");
         }
     } elseif (null !== $address) {
         $address->delete();
     }
 }
 public function isModuleSoColissimo(OrderEvent $event)
 {
     if ($this->check_module($event->getDeliveryModule())) {
         $request = $this->getRequest();
         $dom = $request->get('socolissimo-home');
         $rdv = $request->get('socolissimo-appointment');
         $pr_code = $request->get('socolissimo_code');
         $request->getSession()->set('SoColissimoDeliveryId', 0);
         $request->getSession()->set('SoColissimoDomicile', 0);
         $request->getSession()->set('SoColissimoRdv', 0);
         if ($dom) {
             $request->getSession()->set('SoColissimoDomicile', 1);
             $customer_name = AddressQuery::create()->findPk($event->getDeliveryAddress());
             $address = AddressSocolissimoQuery::create()->findPk($event->getDeliveryAddress());
             $request->getSession()->set('SoColissimoDeliveryId', $event->getDeliveryAddress());
             if ($address === null) {
                 $address = new AddressSocolissimo();
                 $address->setId($event->getDeliveryAddress());
             }
             // France Métropolitaine
             $address->setCode($pr_code)->setType("DOM")->setCompany($customer_name->getCompany())->setAddress1($customer_name->getAddress1())->setAddress2($customer_name->getAddress2())->setAddress3($customer_name->getAddress3())->setZipcode($customer_name->getZipcode())->setCity($customer_name->getCity())->setFirstname($customer_name->getFirstname())->setLastname($customer_name->getLastname())->setTitleId($customer_name->getTitleId())->setCountryId($customer_name->getCountryId())->setCellphone(null)->save();
         } elseif ($rdv) {
             $request->getSession()->set('SoColissimoRdv', 1);
             $customer_name = AddressQuery::create()->findPk($event->getDeliveryAddress());
             $address = AddressSocolissimoQuery::create()->findPk($event->getDeliveryAddress());
             $request->getSession()->set('SoColissimoDeliveryId', $event->getDeliveryAddress());
             if ($address === null) {
                 $address = new AddressSocolissimo();
                 $address->setId($event->getDeliveryAddress());
             }
             // France Métropolitaine
             $address->setCode($pr_code)->setType("RDV")->setCompany($customer_name->getCompany())->setAddress1($customer_name->getAddress1())->setAddress2($customer_name->getAddress2())->setAddress3($customer_name->getAddress3())->setZipcode($customer_name->getZipcode())->setCity($customer_name->getCity())->setFirstname($customer_name->getFirstname())->setLastname($customer_name->getLastname())->setTitleId($customer_name->getTitleId())->setCountryId($customer_name->getCountryId())->setCellphone($request->get('socolissimo-cellphone'))->save();
         } elseif (!empty($pr_code)) {
             $req = new FindById();
             $req->setId($pr_code)->setLangue("FR")->setDate(date("d/m/Y"))->setAccountNumber(ConfigQuery::read('socolissimo_login'))->setPassword(ConfigQuery::read('socolissimo_pwd'));
             $response = $req->exec();
             $customer_name = AddressQuery::create()->findPk($event->getDeliveryAddress());
             $address = AddressSocolissimoQuery::create()->findPk($event->getDeliveryAddress());
             $request->getSession()->set('SoColissimoDeliveryId', $event->getDeliveryAddress());
             if ($address === null) {
                 $address = new AddressSocolissimo();
                 $address->setId($event->getDeliveryAddress());
             }
             // France Métropolitaine
             $address->setCode($pr_code)->setType($response->typeDePoint)->setCompany($response->nom)->setAddress1($response->adresse1)->setAddress2($response->adresse2)->setAddress3($response->adresse3)->setZipcode($response->codePostal)->setCity($response->localite)->setFirstname($customer_name->getFirstname())->setLastname($customer_name->getLastname())->setTitleId($customer_name->getTitleId())->setCountryId($customer_name->getCountryId())->save();
         }
     }
 }
Esempio n. 3
0
 /**
  * @param \Thelia\Core\Event\Order\OrderEvent $event
  */
 public function setDeliveryAddress(OrderEvent $event)
 {
     $order = $event->getOrder();
     $order->setChoosenDeliveryAddress($event->getDeliveryAddress());
     $event->setOrder($order);
 }