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(); } } }
/** * @param \Thelia\Core\Event\Order\OrderEvent $event */ public function setDeliveryAddress(OrderEvent $event) { $order = $event->getOrder(); $order->setChoosenDeliveryAddress($event->getDeliveryAddress()); $event->setOrder($order); }