premekkoch / elms-service
Nette 服务,用于与 ELMS 分发服务 (http://www.elmsservice.cz) 通信
1.0.0
2020-03-10 09:50 UTC
Requires
- php: >=7.1
- ext-curl: *
- ext-json: *
- nette/application: ^3.0
- nette/di: ^3.0
- nette/robot-loader: ^3.0
README
ELMS 服务 API 通信服务。它用于创建订单,将库存商品发送给最终客户。
安装
composer require premekkoch/elms-service
配置
1. 在 config.neon 中注册新的扩展
extensions:
elms: PremekKoch\Elms\DI\ElmsExtension
2. 在 config.neon 中设置扩展
elms:
orderSourceCode: 'yourClientCodeFromElmsServis'
debugMode: false # in debug mode no data are send
如何使用
1. 将服务注入到 presenter 或需要的地方
/** @var PremekKoch\Elms\ElmsService @inject */
public $elmsService;
2. 设置客户和订单数据
从创建订单和客户基本数据开始
:
$this->elmsService->createOrder('123', 'INV_123', false, ElmsService::CURRENCY_CZK);
$this->elmsService->addCustomer('Jan', 'Novák', 'Dlouhá 5', 'Dlouhá Lhota', '12345', ElmsService::COUNTRY_CZE);
:
您还可以设置其他客户属性
:
$this->elmsService->setCustomerCompany('Firma s.r.o.', '123456789', 'CZ123456789');
$this->elmsService->setCustomerContact('novak@firma.cz', '+420777666555');
:
或不同的送货地址。您可以单独设置送货地址的任何部分。如果未设置送货地址,则将提供到客户地址的运输。
:
$this->elmsService->setCustomerDeliveryName('Jana', 'Nováková');
$this->elmsService->setCustomerDeliveryAddress('Krátká 8', 'Krátká Lhota', '54321', ElmsService::COUNTRY_SVK);
$this->elmsService->setCustomerDeliveryCompany('Jana Nováková OSVČ');
$this->elmsService->setCustomerDeliveryContact('novakova@novakova.sk', '+421777888999');
:
接下来,您必须指定要交付的产品。您可以添加更多产品,但至少必须设置一个产品和运输
:
$this->elmsService->addProduct('Product PLU', 1234.56, 1, 21);
$this->elmsService->addProduct(ElmsService::DELIVERY_CPOSTRR, 55, 1, 21);
:
或者,您可以批量设置产品
:
$this->elmsService->addProducts([
[
'plu' => 'Product PLU',
'price' => 1234.56,
'amount' => 1,
'vat' => 21,
],
[
'plu' => ElmsService::DELIVERY_CPOSTRR,
'price' => 55,
'amount' => 1,
'vat' => 21,
],
]);
:
您还可以添加特殊产品项
:
// Discount 100 CZK (value or ammount must be negative)
$this->elmsService->addDiscount(-100, 1, 21);
:
// Rounding (-0.99 to +0.99)
$this->elmsService->addRounding(-0.56);
:
注意:当您使用 CZK 和 cashOnDelivery 时,您必须将订单四舍五入到整数。在订单情况下(EUR 或非 cashOnDelivery)使用最多两位小数。
3. 发送订单
:
$this->elmsService->sendOrder();
:
catch (PremekKoch\Elms\ElmsException $exc){
// something goes wrong...
}
如果发送失败,API 只返回简短的错误。ELMS 服务很快就会发送包含整个请求和问题描述的电子邮件 - 他们会手动检查每个失败的请求。