simaland / delivery-calculator
为 sima-land.ru 提供配送计算器
Requires
- php: >=7.0
Requires (Dev)
- dev-master
- 2.1.0-rc6
- 2.1.0-rc5
- 2.1.0-rc4
- 2.1.0-rc3
- 2.1.0-rc2
- 2.1.0-rc1
- 2.0.1
- 2.0.0
- 2.0.0-rc1
- 1.0.1
- 1.0.0
- 1.0.0-rc1
- dev-SL-8022
- dev-SL-7442
- dev-SL-7441
- dev-analysis-87L4pj
- dev-bugfix/SL-7538-in_box-product_volume
- dev-pastuhov-patch-4
- dev-SL-7517
- dev-pastuhov-patch-3
- dev-SL-7231
- dev-pastuhov-patch-1
- dev-pastuhov-patch-2
- dev-SL-6809-2
- dev-analysis-qJb0RE
- dev-SL-6809
- dev-analysis-Xl0bpw
- dev-analysis-XkEwjG
- dev-analysis-Xl0MKW
- dev-first-version
This package is not auto-updated.
Last update: 2024-09-14 19:58:46 UTC
README
计算配送成本的主要方法是使用 API https://www.sima-land.ru/api/v3/help/#Стоимость-доставки
然而,在某些情况下,更倾向于在不使用 API 的情况下计算配送成本。例如
- 对 API 的请求次数超出了设定的限制。
- 所需的工作速度不允许等待 API 的响应。
在上述情况下,建议使用此组件,它允许在“实时”计算配送成本。
计算商品配送成本需要三个实体
- 配送点 - 实现了 PointInterface 的对象
- 商品 - 实现了 ItemInterface 的对象
- 包装系数数据源 - 实现了 VolumeFactorSourceInterface 的对象
为了计算商品配送成本,需要创建一个指定配送点和包装系数的计算器类对象。
$calc = new Calculator($defaultVolumeFactor, $point, false)
第三个参数表示配送点相对于仓库的“本地性”标志。如果 true
,则配送对于除那些返回 true
的 isPaidDeliveryLocal()
方法的商品外,所有商品都是免费的
使用 addItem($item, $qty)
函数将商品添加到配送成本计算中,使用 getResult()
获取结果。要重置结果,请使用 reset()
。如果 addItem($item, $qty)
方法出现错误,将返回 false
。之后可以使用 getErrors()
方法查看错误信息。
示例
$calc->addItem($item1, 10) $calc->addItem($item2, 1000) echo $calc->getResult(); // вывод стоимости доставки item1 10 шт. и item2 1000 шт. $calc->reset(); $calc->addItem($item3, 1) echo $calc->getResult(); // вывод стоимости доставки item3 1 шт. // $item4->getWeight() = 0 if (!$calc->addItem($item4, 1000)) { return $calc->getErrors() // ['Weight must be positive, weight=0'] }
配送点
配送点由实现了 PointInterface 的对象表示,大多数城市的配送数据可以通过 API https://www.sima-land.ru/api/v3/help/#Города-доставки 获取
特殊情况
- 在莫斯科市的自提点计算配送成本使用 MoscowPointAbstract 类。需要扩展此类,重定义
hasDiscount
方法 - 在计算在叶卡捷琳堡的配送时,应将“本地性”标志设置为
true
商品
实现 ItemInterface 所需的所有数据可以通过 API https://www.sima-land.ru/api/v3/help/#Товар 获取
包装系数数据
包装系数数据由实现了 VolumeFactorSourceInterface 的对象表示。可以使用预定义的 DefaultVolumeFactorSource 模型实现