drewdan/royal-mail-pricing

一个用于计算皇家邮政运费的软件包

1.0.0 2022-12-30 21:17 UTC

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 是正确的。如果您发现价格不正确,请提交问题,我将更新它们。我将努力保持它们更新,但我不能保证它们总是正确的。

警告:本软件包与英国皇家邮政没有任何关联。我已经尽力根据尺寸和重量将物品分配到包裹中,并计算寄存物的价格。然而,我无法保证价格的准确性,或者包裹分配的正确性。您应该自行测试以确保本软件包符合您的需求,并且价格对您的物品是正确的。我建议额外增加邮资以应对计算中的任何错误。

贡献

欢迎提交拉取请求。对于重大更改,请先创建一个问题来讨论您想要进行的更改。

请确保根据适当的情况更新测试。

许可

MIT