Skip to content

Commit

Permalink
Update prepare shipment payload
Browse files Browse the repository at this point in the history
  • Loading branch information
radua committed Jan 11, 2022
1 parent 98aec56 commit 3922166
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 57 deletions.
Binary file modified flagship.ocmod.zip
Binary file not shown.
113 changes: 70 additions & 43 deletions upload/admin/controller/extension/shipping/flagship.php
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?php

class ControllerExtensionShippingflagship extends Controller {
private $error = array();
private $error = array();

public function install() {
$this->load->model('extension/shipping/flagship');
$this->model_extension_shipping_flagship->createFlagshipBoxesTable();
$this->model_extension_shipping_flagship->createCouriersTable();
$this->model_extension_shipping_flagship->createCouriersTable();
$this->model_extension_shipping_flagship->createFlagshipShipmentsTable();
}

Expand Down Expand Up @@ -73,10 +73,10 @@ public function index() {
$data['shipping_flagship_fee'] = empty($this->config->get('shipping_flagship_fee')) ? 0 : $this->config->get('shipping_flagship_fee');
$data['shipping_flagship_markup'] = empty($this->config->get('shipping_flagship_markup')) ? 0 : $this->config->get('shipping_flagship_markup');
$data['shipping_flagship_sort_order'] = $this->config->get('shipping_flagship_sort_order');
$data['shipping_flagship_residential'] = $this->config->get('shipping_flagship_residential');
$data['show_couriers'] = $this->isTokenSet();
$data['couriers'] = $this->getAvailableServices();
$data['action_couriers'] = $this->url->link('extension/shipping/flagship/couriers', 'user_token=' . $this->session->data['user_token'], true);
$data['shipping_flagship_residential'] = $this->config->get('shipping_flagship_residential');
$data['show_couriers'] = $this->isTokenSet();
$data['couriers'] = $this->getAvailableServices();
$data['action_couriers'] = $this->url->link('extension/shipping/flagship/couriers', 'user_token=' . $this->session->data['user_token'], true);
$data['test_token_check'] = $this->checkIfTokenIsTestToken();


Expand Down Expand Up @@ -104,9 +104,9 @@ public function index() {
if (isset($this->request->post['shipping_flagship_sort_order'])) {
$data['shipping_flagship_sort_order'] = $this->request->post['shipping_flagship_sort_order'];
}
if(isset($this->request->post['shipping_flagship_residential'])) {
$data['shipping_flagship_residential'] = $this->request->post['shipping_flagship_residential'];
}
if(isset($this->request->post['shipping_flagship_residential'])) {
$data['shipping_flagship_residential'] = $this->request->post['shipping_flagship_residential'];
}

$data['error'] = $this->error;
$data['header'] = $this->load->controller('common/header');
Expand Down Expand Up @@ -134,27 +134,27 @@ public function boxes() : int {
/*
* Mixed return type
*/
public function couriers(){
public function couriers(){

$selectedCouriers = isset($this->request->post["shipping_flagship_couriers"]) ? implode(",",$this->request->post["shipping_flagship_couriers"]) : '' ;
$this->load->model('extension/shipping/flagship');
$selectedCouriers = isset($this->request->post["shipping_flagship_couriers"]) ? implode(",",$this->request->post["shipping_flagship_couriers"]) : '' ;
$this->load->model('extension/shipping/flagship');
if($this->model_extension_shipping_flagship->areCouriersSet() === TRUE){

$this->model_extension_shipping_flagship->updateCouriers($selectedCouriers);
return $this->response->redirect($this->url->link('extension/shipping/flagship', 'user_token=' . $this->session->data['user_token'], true));
}

$this->model_extension_shipping_flagship->saveCouriers($selectedCouriers);
$this->model_extension_shipping_flagship->saveCouriers($selectedCouriers);

$this->session->data['success'] = 'Couriers Saved';
$this->response->redirect($this->url->link('extension/shipping/flagship', 'user_token=' . $this->session->data['user_token'], true));
}
$this->session->data['success'] = 'Couriers Saved';
$this->response->redirect($this->url->link('extension/shipping/flagship', 'user_token=' . $this->session->data['user_token'], true));
}

public function prepareshipment() : int {
public function prepareshipment() : int {
$order_id = $this->request->get['order_id'];
$payload = $this->getPayload($order_id);
$orderLink = $this->url->link('sale/order/info', 'user_token=' . $this->session->data['user_token'] . '&order_id=' . (int)$order_id, true);
$this->load->model('extension/shipping/flagship');
$this->load->model('extension/shipping/flagship');
$shipment = $this->model_extension_shipping_flagship->prepareShipment($payload,$order_id,$orderLink);
$this->model_extension_shipping_flagship->updateFlagshipShipmentId($shipment->id,$order_id,$shipment->status);

Expand Down Expand Up @@ -194,7 +194,7 @@ public function deleteBox() : int {
$this->load->model('extension/shipping/flagship');
$this->model_extension_shipping_flagship->deleteBox($id);
$this->response->redirect($this->url->link('extension/shipping/flagship', 'user_token=' . $this->session->data['user_token'], true));
return 0;
return 0;
}

protected function getFlagshipShipmentId() : int {
Expand All @@ -208,8 +208,8 @@ protected function getPayload(int $order_id) : array {
$this->load->model('sale/order');
$order_info = $this->model_sale_order->getOrder($order_id);
$from = [
"name" => $this->config->get('config_name'),
"attn" => $this->config->get('config_name'),
"name" => substr($this->config->get('config_name'),0,29),
"attn" => substr($this->config->get('config_owner'),0,20),
"address" => substr($this->config->get('config_address'),0,stripos($this->config->get('config_address'),"\r\n")) == "" ? substr($this->config->get('config_address'),0,28) : substr(substr($this->config->get('config_address'),0,stripos($this->config->get('config_address'),"\r\n")),0,28),
"suite" => "",
"city" => "Toronto",
Expand All @@ -218,16 +218,33 @@ protected function getPayload(int $order_id) : array {
"postal_code" => $this->config->get('shipping_flagship_postcode'),
"phone" => $this->config->get('config_telephone')
];
$toName = $order_info["shipping_firstname"] == NULL ? ($order_info["payment_company"] == NULL ? $order_info["payment_firstname"].' '.$order_info["payment_lastname"] : $order_info["payment_company"]) : ($order_info["shipping_company"] == NULL ? $order_info["shipping_firstname"].' '.$order_info["shipping_lastname"] : $order_info["shipping_company"]);

$toName = $order_info["shipping_company"] == NULL ?
($order_info["payment_company"] != NULL ?
$order_info["payment_company"] :
($order_info["shipping_firstname"] == NULL ?
$order_info['payment_firstname'].' '.$order_info['payment_lastname'] :
$order_info["shipping_firstname"].' '.$order_info["shipping_lastname"])) :
$order_info["shipping_company"];
$toAttn = $order_info["shipping_firstname"] == NULL ?
$order_info["payment_firstname"].' '.$order_info["payment_lastname"] :
$order_info["shipping_firstname"].' '.$order_info["shipping_lastname"];
$toAddress = $order_info["shipping_address_1"] == NULL ? $order_info["payment_address_1"] : $order_info["shipping_address_1"];
$toSuite = $order_info["shipping_address_2"] == NULL ? $order_info["payment_address_2"] : $order_info["shipping_address_2"];
$toCity = $order_info["shipping_city"] == NULL ? $order_info["payment_city"] : $order_info["shipping_city"];
$toCountry = $order_info["shipping_iso_code_2"] == NULL ? $order_info["payment_iso_code_2"] : $order_info["shipping_iso_code_2"];
$toState = $order_info["shipping_zone_code"] == NULL ? $order_info["payment_zone_code"] : $order_info["shipping_zone_code"];
$toPostalCode = $order_info["shipping_postcode"] == NULL ? $order_info["payment_postcode"] : $order_info["shipping_postcode"];

$to = [
"name" => $toName,
"attn" => $order_info["shipping_firstname"] == NULL ? $order_info["payment_firstname"].' '.$order_info["payment_lastname"] : $order_info["shipping_firstname"].' '.$order_info["shipping_lastname"],
"address" => $order_info["shipping_address_1"] == NULL ? substr($order_info["payment_address_1"],0,28) : substr($order_info["shipping_address_1"],0,28),
"suite"=> $order_info["shipping_address_2"] == NULL ? $order_info["payment_address_2"] : $order_info["shipping_address_2"],
"city" => $order_info["shipping_city"] == NULL ? $order_info["payment_city"] : $order_info["shipping_city"],
"country" => $order_info["shipping_iso_code_2"] == NULL ? $order_info["payment_iso_code_2"] : $order_info["shipping_iso_code_2"],
"state" => $order_info["shipping_zone_code"] == NULL ? $order_info["payment_zone_code"] : $order_info["shipping_zone_code"],
"postal_code" => $order_info["shipping_postcode"] == NULL ? $order_info["payment_postcode"] : $order_info["shipping_postcode"],
"name" => substr($toName,0,29),
"attn" => substr($toAttn,0,20),
"address" => substr($toAddress,0,29),
"suite"=> substr($toSuite,0,17),
"city" => substr($toCity,0,29),
"country" => $toCountry,
"state" => $toState,
"postal_code" => $toPostalCode,
"phone" => $order_info["telephone"],
"is_commercial"=>"false"
];
Expand Down Expand Up @@ -317,19 +334,29 @@ protected function getPackingPackages(array $items) : ?array {
'length' => ceil($packing->length),
'width' => ceil($packing->width),
'height' => ceil($packing->height),
'weight' => $packing->weight,
'weight' => max($packing->weight,1),
'description' => $packing->box_model
];
}

return $packingPackages;
}
protected function getItemDetails(array $orderProduct,int $imperialLengthClass,int $imperialWeightClass) : array {

$length = $orderProduct["length_class_id"] != $imperialLengthClass ?
$this->length->convert($orderProduct["length"],$orderProduct["length_class_id"],$imperialLengthClass) : $orderProduct["length"];
$width = $orderProduct["length_class_id"] != $imperialLengthClass ?
$this->length->convert($orderProduct["width"],$orderProduct["length_class_id"],$imperialLengthClass) : $orderProduct["width"];
$height = $orderProduct["length_class_id"] != $imperialLengthClass ?
$this->length->convert($orderProduct["height"],$orderProduct["length_class_id"],$imperialLengthClass) : $orderProduct["height"];
$weight = $orderProduct["weight_class_id"] != $imperialWeightClass ?
$this->weight->convert($orderProduct["weight"],$orderProduct["weight_class_id"],$imperialWeightClass) :
$orderProduct["weight"];
return [
"length" => $orderProduct["length"] == 0 ? 1 : ($orderProduct["length_class_id"] != $imperialLengthClass ? ceil($this->length->convert($orderProduct["length"],$orderProduct["length_class_id"],$imperialLengthClass)) : ceil($orderProduct["length"]) ),
"width" => $orderProduct["width"] == 0 ? 1 : ($orderProduct["length_class_id"] != $imperialLengthClass ? ceil($this->length->convert($orderProduct["width"],$orderProduct["length_class_id"],$imperialLengthClass)) : ceil($orderProduct["width"])),
"height" => $orderProduct["height"] == 0 ? 1 : ($orderProduct["length_class_id"] != $imperialLengthClass ? ceil($this->length->convert($orderProduct["height"],$orderProduct["length_class_id"],$imperialLengthClass)) : ceil($orderProduct["height"])),
"weight" =>$orderProduct["weight"] == 0 ? 1 : ($orderProduct["weight_class_id"] != $imperialWeightClass ? $this->length->convert($orderProduct["weight"],$orderProduct["weight_class_id"],$imperialWeightClass) : $orderProduct["weight"]),
"length" => $length,
"width" => $width,
"height" => $height,
"weight" => $weight,
"description" => $orderProduct["name"]
];
}
Expand All @@ -350,7 +377,7 @@ protected function validate() : bool {
if (!utf8_strlen($this->request->post['shipping_flagship_markup'])) {
$this->error['shipping_flagship_markup'] = true;
}
if (!utf8_strlen($this->request->post['shipping_flagship_residential'])) {
if (!utf8_strlen($this->request->post['shipping_flagship_residential'])) {
$this->error['shipping_flagship_residential'] = true;
}
return empty($this->error);
Expand Down Expand Up @@ -386,11 +413,11 @@ protected function isTokenSet() : bool {
return empty($this->config->get('shipping_flagship_token')) ? false : true ;
}

protected function getAvailableServices() : ?array {
if(!$this->isTokenSet()){
return NULL;
}
$availableServicesArray = [];
protected function getAvailableServices() : ?array {
if(!$this->isTokenSet()){
return NULL;
}
$availableServicesArray = [];

$this->load->model('extension/shipping/flagship');
$availableServices = $this->model_extension_shipping_flagship->getAvailableServices() == NULL ? [] : $this->model_extension_shipping_flagship->getAvailableServices();
Expand All @@ -401,8 +428,8 @@ protected function getAvailableServices() : ?array {
foreach ($availableServices as $key => $courier) {
$availableServicesArray = $this->prepareAvailableServices($key,$courier,$selectedCouriers,$availableServicesArray);
}
return $availableServicesArray;
}
return $availableServicesArray;
}

protected function prepareAvailableServices(string $key,array $courier,array $selectedCouriers,array $availableServicesArray) : array {

Expand Down
6 changes: 3 additions & 3 deletions upload/admin/model/extension/shipping/flagship.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public function updateShipment(int $flagship_shipment_id,array $payload,int $ord
$url = $this->config->get('smartship_api_url').'/ship/shipments/'.$flagship_shipment_id;
$token = $this->config->get('shipping_flagship_token');

$shipment = $this->apiRequest($url,$payload,$token,'PUT',30,'1.0.5',$orderId,$orderLink);
$shipment = $this->apiRequest($url,$payload,$token,'PUT',30,'1.0.7',$orderId,$orderLink);
return $shipment["response"]->content;
}

Expand Down Expand Up @@ -147,7 +147,7 @@ public function getSelectedCouriers() : \stdClass {
public function prepareShipment(array $payload, int $orderId, string $orderLink) : \stdClass {
$url = $this->config->get('smartship_api_url').'/ship/prepare';
$token = $this->config->get('shipping_flagship_token');
$shipment = $this->apiRequest($url,$payload,$token,'POST',30,'1.0.5',$orderId,$orderLink);
$shipment = $this->apiRequest($url,$payload,$token,'POST',30,'1.0.7',$orderId,$orderLink);
return $shipment["response"]->content;
}

Expand Down Expand Up @@ -200,7 +200,7 @@ protected function getFlagshipShipmentStatus(int $shipment_id, int $orderId) : s
$url = $this->config->get('smartship_api_url').'/ship/shipments/'.$shipment_id;
$token = $this->config->get('shipping_flagship_token');

$shipment = $this->apiRequest($url,[],$token,'GET',10,'1.0.5',$orderId);
$shipment = $this->apiRequest($url,[],$token,'GET',10,'1.0.7',$orderId);
$status = $shipment["response"]->content->status;
return $status;
}
Expand Down
31 changes: 20 additions & 11 deletions upload/catalog/model/extension/shipping/flagship.php
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ protected function getPackageItems() : array {
return $this->checkPackings($packings);
} catch(PackingException $e){
$this->session->data['error'] = $e->getMessage();
return [];
return [];
}
}
protected function checkPackings($packings) : array {
Expand Down Expand Up @@ -191,16 +191,25 @@ protected function getItems() : array {
$products = $this->cart->getProducts();
$imperialLengthClass = $this->getImperialLengthClass();
$imperialWeightClass = $this->getImperialWeightClass();
foreach ($products as $product) {
for($i=0; $i < $product['quantity']; $i++){
$items[] = [
"length" => $product["length"] == 0 ? 1 : ($product['length_class_id'] != $imperialLengthClass ? ceil($this->length->convert($product["length"],$product['length_class_id'],$imperialLengthClass)) : ceil($product["length"]) ),
"width" => $product["width"] == 0 ? 1 : ($product['length_class_id'] != $imperialLengthClass ? ceil($this->length->convert($product["width"],$product['length_class_id'],$imperialLengthClass)) : ceil($product["width"])),
"height" => $product["height"] == 0 ? 1 : ($product['length_class_id'] != $imperialLengthClass ? ceil($this->length->convert($product["height"],$product['length_class_id'],$imperialLengthClass)) : ceil($product["height"])),
"weight" => $product["weight"] < 1 ? 1 : ($product['weight_class_id'] != $imperialWeightClass ? $this->weight->convert($product["weight"],$product['weight_class_id'],$imperialWeightClass) : $product["weight"]/$product['quantity']),
"description" => $product["name"]
];
}

foreach ($products as $orderProduct) {
$length = $orderProduct["length_class_id"] != $imperialLengthClass ?
$this->length->convert($orderProduct["length"],$orderProduct["length_class_id"],$imperialLengthClass) : $orderProduct["length"];
$width = $orderProduct["length_class_id"] != $imperialLengthClass ?
$this->length->convert($orderProduct["width"],$orderProduct["length_class_id"],$imperialLengthClass) : $orderProduct["width"];
$height = $orderProduct["length_class_id"] != $imperialLengthClass ?
$this->length->convert($orderProduct["height"],$orderProduct["length_class_id"],$imperialLengthClass) : $orderProduct["height"];
$weight = $orderProduct["weight_class_id"] != $imperialWeightClass ?
$this->weight->convert($orderProduct["weight"],$orderProduct["weight_class_id"],$imperialWeightClass) :
$orderProduct["weight"];

$items[] = [
"length" => $length,
"width" => $width,
"height" => $height,
"weight" => $weight,
"description" => $orderProduct["name"]
];
}
return $items;
}
Expand Down

0 comments on commit 3922166

Please sign in to comment.