gilles.bourgeat@gmail.com> */ class LabelRequest extends AbstractLabelRequest { use MethodCreateAddressFromStore; use MethodCreateAddressFromOrderAddress; public function __construct(Order $order, $pickupCode = null, $pickupType = null) { $orderAddress = OrderAddressQuery::create()->findOneById($order->getDeliveryOrderAddressId()); $this->setLetter(new Letter( new Service( null !== $pickupType ? $pickupType : $this->getProductCode($order), (new \DateTime()), $order->getRef() ), new Sender( $this->createAddressFromStore() ), new Addressee( $this->createAddressFromOrderAddress( $orderAddress, $order->getCustomer() ) ), new Parcel( $order->getWeight() ) )); if (null !== $pickupCode) { $this->getLetter()->getParcel()->setPickupLocationId($pickupCode); } //$this->getLetter()->getAddressee()->setAddresseeParcelRef($order->getRef()); $this->getLetter()->getSender()->setSenderParcelRef($order->getRef()); $this->setOutputFormat(new OutputFormat()); $this->getOutputFormat()->setOutputPrintingType( ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_DEFAULT_LABEL_FORMAT) ); } protected function getProductCode(Order $order) { /** @var OrderAddress $deliveryAddress */ $deliveryAddress = $order->getOrderAddressRelatedByDeliveryOrderAddressId(); $code = $deliveryAddress->getCountry()->getIsocode(); // france case if ($code == '250') { return Service::PRODUCT_CODE_LIST[0]; } elseif (in_array( // europe $code, [ "040", "056", "100", "191", "196", "203", "208", "233", "246", "250", "276", "300", "348", "372", "380", "428", "440", "442", "470", "528", "616", "620", "642", "705", "724", "752", "826" ] )) { return Service::PRODUCT_CODE_LIST[0]; } elseif (in_array( // europe $code, [ "312", "254", "666", "474", "638", "175" ] )) { // outre mer return Service::PRODUCT_CODE_LIST[10]; } else { // other return Service::PRODUCT_CODE_LIST[14]; } } }