Implementing Delivery Provider
Forum rules
Always add your Aimeos and PHP version as well as your environment (Linux/Mac/Win)
Spam and unrelated posts will be removed immediately!
Always add your Aimeos and PHP version as well as your environment (Linux/Mac/Win)
Spam and unrelated posts will be removed immediately!
Implementing Delivery Provider
Hi aimeos,
i am using laravel 8 and aimeos "~2020.10".I am trying to implement Delivery service provider for which i have generated a file Myprovider.php in the directory ext\moudhah\lib\custom\src\MShop\Service\Provider\Delivery
now i want to make an api call in this process method but before that i want to access all the order information.For that purpose you can see above i have added the code $basket->getAddresses() and it gives me an array of addresses
now i want to access the attributes in that object.E.g i want to access the first name of payment and delivery separately.can you please guide me how can i access these fields separately i mean billing first name and delivery firstname separately.
Note: i have tried
which gave me
i am using laravel 8 and aimeos "~2020.10".I am trying to implement Delivery service provider for which i have generated a file Myprovider.php in the directory ext\moudhah\lib\custom\src\MShop\Service\Provider\Delivery
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 );
info(print_r($basket->getAddresses()));
return $order;
}
}
Code: Select all
Aimeos\Map Object
(
[list:protected] => Array
(
[payment] => Array
(
[0] => Aimeos\MShop\Order\Item\Base\Address\Standard Object
(
[prefix:Aimeos\MShop\Common\Item\Address\Base:private] => order.base.address.
[available:Aimeos\MShop\Common\Item\Base:private] => 1
[modified:Aimeos\MShop\Common\Item\Base:private] =>
[bdata:protected] => Array
(
[order.base.address.id] => 20
[order.base.address.baseid] => 12
[order.base.address.siteid] => 7.
[order.base.address.addressid] =>
[order.base.address.type] => payment
[order.base.address.company] =>
[order.base.address.vatid] =>
[order.base.address.salutation] => mr
[order.base.address.title] =>
[order.base.address.firstname] => khizar
[order.base.address.lastname] => samin
[order.base.address.address1] => mystreet
[order.base.address.address2] =>
[order.base.address.address3] =>
[order.base.address.postal] => 091
[order.base.address.city] => peshawar
[order.base.address.state] =>
[order.base.address.countryid] => PK
[order.base.address.languageid] => en
[order.base.address.telephone] => 03239549005
[order.base.address.email] => khizar.samin@gmail.com
[order.base.address.telefax] =>
[order.base.address.website] =>
[order.base.address.longitude] =>
[order.base.address.latitude] =>
[order.base.address.position] => 0
[order.base.address.mtime] => 2021-02-17 09:58:14
[order.base.address.editor] => khizar samin
[order.base.address.ctime] => 2021-02-17 09:58:14
[order.base.address.birthday] =>
)
[prefix:Aimeos\MShop\Common\Item\Base:private] => order.base.address.
)
)
[delivery] => Array
(
[1] => Aimeos\MShop\Order\Item\Base\Address\Standard Object
(
[prefix:Aimeos\MShop\Common\Item\Address\Base:private] => order.base.address.
[available:Aimeos\MShop\Common\Item\Base:private] => 1
[modified:Aimeos\MShop\Common\Item\Base:private] =>
[bdata:protected] => Array
(
[order.base.address.id] => 21
[order.base.address.baseid] => 12
[order.base.address.siteid] => 7.
[order.base.address.addressid] => 1
[order.base.address.type] => delivery
[order.base.address.company] =>
[order.base.address.vatid] =>
[order.base.address.salutation] => mr
[order.base.address.title] =>
[order.base.address.firstname] => my firstname
[order.base.address.lastname] => my lastname
[order.base.address.address1] => my shipstreet
[order.base.address.address2] => my shipadditional address
[order.base.address.address3] =>
[order.base.address.postal] => myshipcode
[order.base.address.city] => my shipcity
[order.base.address.state] =>
[order.base.address.countryid] => PK
[order.base.address.languageid] => en
[order.base.address.telephone] =>
[order.base.address.email] =>
[order.base.address.telefax] =>
[order.base.address.website] =>
[order.base.address.longitude] =>
[order.base.address.latitude] =>
[order.base.address.position] => 1
[order.base.address.mtime] => 2021-02-17 09:58:14
[order.base.address.editor] => khizar samin
[order.base.address.ctime] => 2021-02-17 09:58:14
[order.base.address.birthday] =>
)
[prefix:Aimeos\MShop\Common\Item\Base:private] => order.base.address.
)
)
)
)
Note: i have tried
Code: Select all
$basket->getAddresses()->getFirstname();
Code: Select all
Aimeos\Map Object
(
[list:protected] => Array
(
)
)
Re: Implementing Delivery Provider
Use
Check the order base item interface and the interfaces of the items within to see what methods they implement:
https://github.com/aimeos/aimeos-core/b ... /Iface.php
Code: Select all
$addr = current( $basket->getAddress( 'payment' ) )
https://github.com/aimeos/aimeos-core/b ... /Iface.php
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos,
give us a star
If you like Aimeos,
![Image](https://aimeos.org/fileadmin/aimeos.org/icons/star.png)
Re: Implementing Delivery Provider
what is the purpose of current methodaimeos wrote: ↑10 Mar 2021, 11:26 UseCheck the order base item interface and the interfaces of the items within to see what methods they implement:Code: Select all
$addr = current( $basket->getAddress( 'payment' ) )
https://github.com/aimeos/aimeos-core/b ... /Iface.php
Re: Implementing Delivery Provider
It returns the first item of an array:
https://www.php.net/manual/en/function.current
Alternatively, you can use:
but it will fail if there's no address at position 0.
https://www.php.net/manual/en/function.current
Alternatively, you can use:
Code: Select all
$addr = $basket->getAddress( 'payment', 0 )
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos,
give us a star
If you like Aimeos,
![Image](https://aimeos.org/fileadmin/aimeos.org/icons/star.png)
Re: Implementing Delivery Provider
aimeos wrote: ↑10 Mar 2021, 11:35 It returns the first item of an array:
https://www.php.net/manual/en/function.current
Alternatively, you can use:but it will fail if there's no address at position 0.Code: Select all
$addr = $basket->getAddress( 'payment', 0 )
Code: Select all
$addr = $basket->getAddress( 'payment',9 );
info($addr);
Re: Implementing Delivery Provider
Code: Select all
if( $addr = current( $basket->getAddress( 'payment' ) ) )
{
$firstname = $addr->getFirstname();
$lastname = $addr->getLastname();
// ...
// Alternative:
$map = $addr->toArray();
}
Professional support and custom implementation are available at Aimeos.com
If you like Aimeos,
give us a star
If you like Aimeos,
![Image](https://aimeos.org/fileadmin/aimeos.org/icons/star.png)
Re: Implementing Delivery Provider
it worked.Thankyou so much aimeos.aimeos wrote: ↑10 Mar 2021, 11:43Code: Select all
if( $addr = current( $basket->getAddress( 'payment' ) ) ) { $firstname = $addr->getFirstname(); $lastname = $addr->getLastname(); // ... // Alternative: $map = $addr->toArray(); }