1
0
mirror of synced 2024-11-27 15:56:06 +03:00
api-client-php/doc/usage/examples/create_order.md
2021-06-02 17:00:32 +03:00

105 lines
3.4 KiB
Markdown

That's how you can create a new order:
```php
<?php
use RetailCrm\Api\Interfaces\ClientExceptionInterface;
use RetailCrm\Api\Enum\CountryCodeIso3166;
use RetailCrm\Api\Enum\Customers\CustomerType;
use RetailCrm\Api\Factory\SimpleClientFactory;
use RetailCrm\Api\Interfaces\ApiExceptionInterface;
use RetailCrm\Api\Model\Entity\Orders\Delivery\OrderDeliveryAddress;
use RetailCrm\Api\Model\Entity\Orders\Delivery\SerializedOrderDelivery;
use RetailCrm\Api\Model\Entity\Orders\Items\Offer;
use RetailCrm\Api\Model\Entity\Orders\Items\OrderProduct;
use RetailCrm\Api\Model\Entity\Orders\Items\PriceType;
use RetailCrm\Api\Model\Entity\Orders\Items\Unit;
use RetailCrm\Api\Model\Entity\Orders\Order;
use RetailCrm\Api\Model\Entity\Orders\Payment;
use RetailCrm\Api\Model\Entity\Orders\SerializedRelationCustomer;
use RetailCrm\Api\Model\Request\Orders\OrdersCreateRequest;
$client = SimpleClientFactory::createClient('https://test.retailcrm.pro', 'apiKey');
$request = new OrdersCreateRequest();
$order = new Order();
$payment = new Payment();
$delivery = new SerializedOrderDelivery();
$deliveryAddress = new OrderDeliveryAddress();
$offer = new Offer();
$item = new OrderProduct();
$payment->type = 'bank-card';
$payment->status = 'paid';
$payment->amount = 1000;
$payment->paidAt = new DateTime();
$deliveryAddress->index = '344001';
$deliveryAddress->countryIso = CountryCodeIso3166::RUSSIAN_FEDERATION;
$deliveryAddress->region = 'Region';
$deliveryAddress->city = 'City';
$deliveryAddress->street = 'Street';
$deliveryAddress->building = '10';
$delivery->address = $deliveryAddress;
$delivery->cost = 0;
$delivery->netCost = 0;
$offer->name = 'Offer №1445123';
$offer->displayName = 'Offer №1445123';
$offer->xmlId = 'tGunLo27jlPGmbA8BrHxY2';
$offer->article = '14451445-14451445';
$offer->unit = new Unit('796', 'Piece', 'pcs');
$item->offer = $offer;
$item->priceType = new PriceType('base');
$item->quantity = 1;
$item->purchasePrice = 60;
$order->delivery = $delivery;
$order->items = [$item];
$order->payments = [$payment];
$order->orderType = 'test';
$order->orderMethod = 'phone';
$order->countryIso = CountryCodeIso3166::RUSSIAN_FEDERATION;
$order->firstName = 'Test';
$order->lastName = 'User';
$order->patronymic = 'Patronymic';
$order->phone = '89003005069';
$order->email = 'testuser12345678901@example.com';
$order->managerId = 28;
$order->customer = SerializedRelationCustomer::withIdAndType(
4924,
CustomerType::CUSTOMER
);
$order->status = 'assembling';
$order->statusComment = 'Assembling order';
$order->weight = 1000;
$order->shipmentStore = 'main12';
$order->shipmentDate = (new DateTime())->add(new DateInterval('P7D'));
$order->shipped = false;
$order->customFields = [
"galka" => false,
"test_number" => 0,
"otpravit_dozakaz" => false,
];
$request->order = $order;
$request->site = 'moysklad';
try {
$response = $client->orders->create($request);
} catch (ApiExceptionInterface | ClientExceptionInterface $exception) {
echo $exception; // Every ApiExceptionInterface instance should implement __toString() method.
exit(-1);
}
printf(
'Created order id = %d with the following data: %s',
$response->id,
print_r($response->order, true)
);
```