issues in Implementing Delivery Provider
Posted: 02 Apr 2021, 09:46
Hi aimeos,
i have integrated aimeos with laravel.
versions:
"aimeos/aimeos-laravel": "~2020.10",
"laravel/framework": "^8.12",
i am implementing delivery service provider.I have created my provider and implemented api.That delivery service api needs data about order which i have provided but now i am stuck at a point at which i need to retrieve the lengtth,width,height of products and i don't know how to do that .i am posting my code below please guide me how can i do that
i have integrated aimeos with laravel.
versions:
"aimeos/aimeos-laravel": "~2020.10",
"laravel/framework": "^8.12",
i am implementing delivery service provider.I have created my provider and implemented api.That delivery service api needs data about order which i have provided but now i am stuck at a point at which i need to retrieve the lengtth,width,height of products and i don't know how to do that .i am posting my code below please guide me how can i do that
Code: Select all
<?php
namespace Aimeos\MShop\Service\Provider\Delivery;
use Illuminate\Support\Facades\Http;
class Myprovider
extends \Aimeos\MShop\Service\Provider\Delivery\Base
implements \Aimeos\MShop\Service\Provider\Delivery\Iface
{
/**
* Sends the order details to the ERP system for further processing.
*
* @param \Aimeos\MShop\Order\Item\Iface $order Order invoice object to process
*/
public function process(\Aimeos\MShop\Order\Item\Iface $order): \Aimeos\MShop\Order\Item\Iface
{
$parts = \Aimeos\MShop\Order\Item\Base\Base::PARTS_ALL;
$basket = $this->getOrderBase($order->getBaseId(), $parts);
$payment = [];
$delivery = [];
// addresses can also be picked through following method
if ($addr = current($basket->getAddress('payment'))) {
$payment = [
"name" => "{$addr->getFirstname()} {$addr->getLastname()}",
"phone" => $addr->getTelephone(),
// "alternate_phone" => "9876543210",
"address_line_1" => $addr->getAddress1(),
"address_line_2" => $addr->getAddress2(),
"city" => $addr->getCity()
// "state" => "DUBAI"
];
// // ...
// // Alternative:
// $map = $addr->toArray();
}
if ($addr = current($basket->getAddress('delivery'))) {
$delivery = [
"name" => "{$addr->getFirstname()} {$addr->getLastname()}",
"phone" => $addr->getTelephone(),
// "alternate_phone" => "9876543210",
"address_line_1" => $addr->getAddress1(),
"address_line_2" => $addr->getAddress2(),
"city" => $addr->getCity()
// "state" => "DUBAI"
// "latitude" => "24.6948",
// "longitude" => "46.8396"
];
// // ...
// // Alternative:
// $map = $addr->toArray();
}
if(sizeOf($delivery) == 0){
$delivery = $payment;
}
$products = $basket->getProducts();
$piecesDetail = array();
foreach ($products as $pd) {
$p = current($p);
// here i retrieved name of product successfully but i don't know how can i retrieve length width and height
$spd = [
"description" => $p->getName(),
"declared_value" => $p->getPrice(),
"weight" => "",
"height" => "",
"length" => "",
"width" => ""
];
array_push($piecesDetail, $spd);
}
$data = [
"consignments" => [
[
"customer_code" => "MODHAH 01",
"reference_number" => "",
"service_type_id" => "1",
"load_type" => "NON-DOCUMENT",
"description" => "Items",
// "cod_favor_of" => "",
// "dimension_unit" => "",
// "length" => "",
// "width" => "",
// "height" => "",
// "weight" => "",
// "weight_unit" => "",
"declared_value" => "1300",
// "declared_price" => "",
// "cod_amount" => "",
// "cod_collection_mode" => "",
// "prepaid_amount" => "",
// "num_pieces" => "",
// "customer_reference_number" => "",
// "s_risk_surcharge_applicable" => "true",
"origin_details" => $payment,
"destination_details" => $delivery,
"pieces_detail" =>
]
]
];
// $apiurl = 'https://demodashboardapi.shipsy.in/api/customer/integration/consignment/softdata';
// $response = Http::withHeaders([
// "api-key" => "38d270602719af5c78c112be2c7ee4",
// "Content-Type" => "application/json"
// ])->post($apiurl,$data);
// info($response);
// $t = json_decode($response);
// info($t->error->message);
return $order;
}
}