Resumen
Paquete para gestionar gastos de envío de un comercio
electrónico. Este paquete permite gestionar gastos de envío según:
- Peso
- Rangos de precios
Queda pendiente eliminar una dependencia que, a día de hoy
(01/12/2023) utiliza un paquete de gestión de impuestos
para determinar el iva aplicable a una zona de envío.
Toda zona de envío debe ir asociada a un país y a unas regiones
de ese país determinadas.
Para instalar el paquete:
composer require bittacora/shipping-weight-range-price
Tras instalar el paquete, ejecutar el siguiente comando:
php artisan shipping:install
Este paquete trabaja con otro asociado como dependencia:
"bittacora/livewire-countries-states-select": "0.x"
Funcionalidades
Este paquete cuenta con un Facade donde quedan registrados
métodos de acceso a las funcionalidades del paquete.
Obtenemos gastos de envío por rango de precios asociados a una zona de envío
public function getShippingByPriceRange
(ShippingModel $shipping, float $subtotal, null|int $stateSelectedForShipping)
Devuelve los gastos de envío por peso asociados a una zona de envío
public function getShippingByWeight(ShippingModel $shipping, float $weight, null|int $stateSelectedForShipping)
Devuelve la zona de envío a la que pertenece un estado/provincia
public function getShippingByState(int $stateId)
Devuelve todos los países que están asociados a alguna zona de envío
public function getCountriesAvailableForShipping()
Devuelve todos los estados que estén asociados a alguna zona de envío
public function getSelectedAreasForShipping
(Collection|ShippingModel $model)
Obtenemos zonas de envío asociadas a un país
public function getShippingRelatedToCountry(int $countryId)
Tests
El paquete contiene, a día de hoy, 22 tests que analizan su comportamiento,
aunque seguro que hay casos de uso no contemplados y algunas
inconsistencias que hay que pulir.
Para poder añadir los tests al proyecto en el cual se esté utilizando
se agrega al phpunit.xml del proyecto de Laravel lo siguiente
entre las etiquetas "testsuite":
< testsuite name="Shipping">
< directory>packages/shipping/tests< /directory>
< /testsuite>
Obsérvese la separación en los símbolos de las etiquets (no me dejaba
ponerlas correctamente).
Para ejecutar los tests después de agregar esas etiquetas:
php artisan test --testsuite=Shipping