premekkoch/elms-service

Nette 服务,用于与 ELMS 分发服务 (http://www.elmsservice.cz) 通信

1.0.0 2020-03-10 09:50 UTC

This package is auto-updated.

Last update: 2024-09-10 19:52:48 UTC


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 服务很快就会发送包含整个请求和问题描述的电子邮件 - 他们会手动检查每个失败的请求。