Skip to content

Shipping

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