Ajout des modules ColissimoWs et ColissimoLabel.php
Ne pas oublier de vérifier si les tables nécessaires sont bien créées en BDD.
This commit is contained in:
92
local/modules/ColissimoLabel/Request/LabelRequest.php
Normal file
92
local/modules/ColissimoLabel/Request/LabelRequest.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
|
||||
namespace ColissimoLabel\Request;
|
||||
|
||||
use ColissimoLabel\ColissimoLabel;
|
||||
use ColissimoLabel\Request\Helper\Addressee;
|
||||
use ColissimoLabel\Request\Helper\Letter;
|
||||
use ColissimoLabel\Request\Helper\OutputFormat;
|
||||
use ColissimoLabel\Request\Helper\Parcel;
|
||||
use ColissimoLabel\Request\Helper\Sender;
|
||||
use ColissimoLabel\Request\Helper\Service;
|
||||
use ColissimoLabel\Request\Traits\MethodCreateAddressFromOrderAddress;
|
||||
use ColissimoLabel\Request\Traits\MethodCreateAddressFromStore;
|
||||
use Thelia\Model\Order;
|
||||
use Thelia\Model\OrderAddress;
|
||||
use Thelia\Model\OrderAddressQuery;
|
||||
|
||||
/**
|
||||
* @author Gilles Bourgeat >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];
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user