All Projects → mvdnbrk → warehouse-framework

mvdnbrk / warehouse-framework

Licence: MIT license
Laravel Warehouse Framework

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to warehouse-framework

Editor Layer Index
A unified layer index for OSM editors.
Stars: ✭ 144 (+171.7%)
Mutual labels:  wms
eidea4
企业框架 scm erp wms
Stars: ✭ 53 (+0%)
Mutual labels:  wms
krab
Krab is a migration and automation tool for PostgreSQL based on HCL syntax
Stars: ✭ 15 (-71.7%)
Mutual labels:  warehouse
Geoserver
Official GeoServer repository
Stars: ✭ 2,573 (+4754.72%)
Mutual labels:  wms
tile-map-service-net5
Tile server for .NET 5 platform with MBTiles, Filesystem, GeoTIFF, HTTP sources and XYZ, TMS, WMTS, WMS endpoints (protocols support)
Stars: ✭ 45 (-15.09%)
Mutual labels:  wms
mapserver-docker
Mapserver OGR GDAL PostGIS WMS WCS WFS with Lighttpd in Docker
Stars: ✭ 18 (-66.04%)
Mutual labels:  wms
Zstore
Программа для складского учета с веб интерфейсом
Stars: ✭ 32 (-39.62%)
Mutual labels:  wms
Hajk
A modern, full-featured OpenLayers based map viewer and editor
Stars: ✭ 65 (+22.64%)
Mutual labels:  wms
krawler
A minimalist (geospatial) ETL
Stars: ✭ 51 (-3.77%)
Mutual labels:  wms
Warehouse Robot Path Planning
A multi agent path planning solution under a warehouse scenario using Q learning and transfer learning.🤖️
Stars: ✭ 59 (+11.32%)
Mutual labels:  warehouse
Brutile
BruTile is a .NET library to access tile services like those of OpenStreetMap, MapBox or GeodanMaps.
Stars: ✭ 203 (+283.02%)
Mutual labels:  wms
dddplus-archetype-demo
♨️ Using dddplus-archetype build a WMS in 5 minutes. 5分钟搭建一个仓储中台WMS!
Stars: ✭ 56 (+5.66%)
Mutual labels:  wms
deegree3
Official deegree repository providing geospatial core libraries, data access and advanced OGC web service implementations
Stars: ✭ 118 (+122.64%)
Mutual labels:  wms
Mapwarper
free open source public map georeferencer, georectifier and warper
Stars: ✭ 152 (+186.79%)
Mutual labels:  wms
geotrellis-server
Tools for building raster processing and display services
Stars: ✭ 65 (+22.64%)
Mutual labels:  wms
Gm3
GeoMoose 3.0 Development. Please submit pull requests to the 'main' branch.
Stars: ✭ 39 (-26.42%)
Mutual labels:  wms
ikea-availability-checker
Command-Line-Script & Library for checking the availability of specific IKEA products in specific stores and/or countries.
Stars: ✭ 210 (+296.23%)
Mutual labels:  warehouse
wms-tiles-downloader
CLI for downloading map tiles from WMS server with given bbox and zoom.
Stars: ✭ 47 (-11.32%)
Mutual labels:  wms
warehouse-management-system
It is a Warehouse Management System(WMS)based on Java.
Stars: ✭ 31 (-41.51%)
Mutual labels:  wms
GPXSee-maps
GPXSee maps
Stars: ✭ 27 (-49.06%)
Mutual labels:  wms

Laravel Warehouse Framework

PHP version Latest Version on Packagist Software License Tests Code style Total Downloads

Installation

You can install the package via composer:

composer require mvdnbrk/warehouse-framework

Run the install command:

php artisan warehouse:install

This package uses it's own database.
By default we assume that you will prepare a connection called "warehouse" in your config/database.php file.
If you would like to use a different connection you can do so by setting WAREHOUSE_DB_CONNECTION in your .env file.

Now you can run the migrations for this package with:

php artisan warehouse:migrate

Usage

Locations

You can retrieve all locations using the Just\Warehouse\Models\Location model:

Location::all();

Create a location with this artisan command:

php artisan warehouse:make:location

Inventory

Add inventory to a location with a GTIN value, you may pass an amount as the second parameter:

$location = Location::find(1);
$location->addInventory('1300000000000');
$location->addInventory('1234567890005', 2);

Move inventory to another location:

$inventory = Inventory::first();
$inventory->move($location);

You may also move inventory with it's GTIN from one location to another:

$location1 = Location::find(1);
$location2 = Location::find(2);
$location1->addInventory('1234567890005');

$location1->move('1234567890005', $location2);

Moving many items at once from one location to another:

$location->moveMany([
    '1234567890005',
    '1234567890005',
], $location2);

note: If you are trying to move many items at once and a failure occurs, an exception will be thrown and none of the items will be moved from one location to another.

Remove inventory from a location:

$location = Location::find(1);
$location->removeInventory('1234567890005');

Remove all inventory from a location:

$location = Location::find(1);
$location->removeAllInventory();

Orders

Create a new order:

$order = Order::create([
    'order_number' => 'my-first-order-0001',
]);

Add order lines with the addLine method by passing a GTIN value, you may pass an amount as the second parameter:

$order->addLine('1300000000000');
$order->addLine('1234567890005', 2);
$order->addLine(...);

note: You can only add order lines when the status of an order is either created or hold.
The same is true if you try to delete an order line.

Process the order:

$order->process();

This will update the order status to open and will be ready to be picked.

Put an order on hold

You can put an order on hold by calling the hold method. Unhold it with the unhold method:

$order->hold();
$order->unhold();

Order status

You can determine the status of an order with the following methods on the status property:

$order->status->isCreated();
$order->status->isOpen();
$order->status->isBackorder();
$order->status->isHold();
$order->status->isFulfilled();
$order->status->isDeleted();

Pick Lists

Once you have created an order you may retrieve a pick list.
To determine if a pick list is available and retrieve it:

$order->hasPickList();

$order->pickList();

The pickList method returns a collection:

$order->pickList()->each(function ($item) {
    $item->get('gtin');
    $item->get('location');
    $item->get('quantity');
});

When the order is picked you can mark it as fulfilled with the markAsFulfilled method:

$order->markAsFulfilled();

Replacing an order line

If for some reason a product is missing or for example the items is damaged you may replace an order line with the replace method:

$order->lines->first()->replace();

This will delete the reserved product from the inventory and replaces it with another item (if available).

Stock

To query stock quantities you may use the \Just\Warehouse\Facades\Stock facade:

Stock::available();
Stock::backorder();
Stock::reserved();

For a specific GTIN:

Stock::gtin('1300000000000')->available();
Stock::gtin('1300000000000')->backorder();
Stock::gtin('1300000000000')->reserved();

Events

This packages fires several events:

  • InventoryCreated
  • OrderLineCreated
  • OrderLineReplaced
  • OrderStatusUpdated
  • OrderFulfilled

Testing

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].