drewdan / royal-mail-pricing
一个用于计算皇家邮政运费的软件包
Requires
- php: ^8.2
- laravel/framework: ^9.0.
Requires (Dev)
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.31
- spatie/ray: ^1.36
This package is auto-updated.
Last update: 2024-09-19 02:52:51 UTC
README
Royal Mail Pricing 是一个针对 Laravel 9+ 的小型软件包,允许您创建具有尺寸和重量的项目,然后计算发送所有这些项目所需的皇家邮政包裹数量,并提供一、二类标准邮费的报价。
我创建这个软件包是因为皇家邮政 API 似乎没有提供计算包裹报价的简单方法,我还想自动化项目的包裹分配。我没有包括计算除标准皇家邮政一、二类服务以外的服务的报价功能。如果对此有需求,我可能会在将来实现这一功能。或者,我欢迎提交一个拉取请求来扩展此功能。
安装
使用以下命令使用 composer 安装此软件包
composer require drewdan/royal-mail-pricing
配置
皇家邮政的报价基于您发送的物品的重量和尺寸。您可以在配置文件中配置这些报价的每个。要发布配置文件,请运行以下命令
php artisan vendor:publish --provider="Drewdan\RoyalMailPricing\RoyalMailPricingServiceProvider" --tag="config"
报价详情按日期进行版本控制,以便我将来更容易添加新的报价结构。默认报价详情可以在 config/royal-mail-pricing.php
文件中找到。如果您想添加一个新的报价结构,您可以在配置文件中的 pricing
数组中添加一个新的数组,然后更新 current-pricing-period
以为您添加的键。您可以在 env 文件中通过添加以下键来覆盖它:ROYAL_MAIL_PRICING_PERIOD=
用法
首先创建一个或多个具有名称、重量和尺寸的项目
use Drewdan\RoyalMailPricing\Models\Item; $item = Item::make() ->setName('Test Item 1') ->setWeight(2101) ->setHeight(10) ->setWidth(10) ->setLength(10);
输入的重量以克为单位,尺寸以厘米为浮点数。
然后您可以为它创建一个新的托运单并将其项目添加到其中
use Drewdan\RoyalMailPricing\Consignment; $consignment = Consignment::make() ->addItem($item) ->assignToParcels() ->getConsignment();
如果您想一次性添加多个项目,您可以更改 addItem
方法为 addItems
并传递一个数组或集合,或者只是循环遍历您的数组并为每个项目调用 addItem。
当您调用 get consignment 时,您将返回 Consignment 类的实例,它具有许多方法,您可以使用这些方法获取有关托运单的详细信息。
$consignment->getPostageCost('firstClassPostage'); // Returns the price of the consignment for first class postage $consignment->getPostageCost('secondClassPostage'); // Returns the price of the consignment for second class postage $consignment->getParcels(); // Returns an array of parcels which make up the consignment $consignment->getConsignmentWeight(); // Returns the total weight of the consignment $consignment->getParcelCount(); // Returns the number of parcels in the consignment $consignment->getItemCount(); // Returns the number of items in the consignment
如果您在添加项目之前尝试调用 ->assignToParcels()
,则会抛出异常。
调用 ->assignToParcels()
将尝试找到可以容纳所有物品的最小包裹数量,然后将物品分配到包裹中。如果一次无法容纳所有物品,它将分批处理物品并寻找合适的包裹,直到所有物品都被分配到包裹中。
如果系统无法为物品找到合适的包裹,将抛出异常。
注意: 皇家邮政 API 不包括计算包裹价格的方法,因此我不得不将价格硬编码到软件包中。这些价格截至 2022-04-01 是正确的。如果您发现价格不正确,请提交问题,我将更新它们。我将努力保持它们更新,但我不能保证它们总是正确的。
警告:本软件包与英国皇家邮政没有任何关联。我已经尽力根据尺寸和重量将物品分配到包裹中,并计算寄存物的价格。然而,我无法保证价格的准确性,或者包裹分配的正确性。您应该自行测试以确保本软件包符合您的需求,并且价格对您的物品是正确的。我建议额外增加邮资以应对计算中的任何错误。
贡献
欢迎提交拉取请求。对于重大更改,请先创建一个问题来讨论您想要进行的更改。
请确保根据适当的情况更新测试。