AgileShift / cargo_management

ERPNext Cargo Management is a fully-fledged ERPNext solution designed for freight forwarding companies.
GNU Affero General Public License v3.0
55 stars 58 forks source link
erpnext frappe nodejs python

ERPNext Cargo Management


ERPNext Cargo Management is a fully-fledged ERPNext solution designed for freight forwarding companies.

Streamlines logistics processes, including package tracking, invoicing, and warehouse management, providing a seamless, efficient, and user-friendly experience.

Built on Frappe Framework v15 and ERPNext, this solution is designed to meet the unique needs of businesses in the freight forwarding industry.
It leverages core functionalities from ERPNext, such as Accounting, Stock, HR, Assets, Payroll and more.

Key Features

Extra Addons

List of Carriers Currently Supported:

Last checked: 14 February 2024

Carrier EasyPost 17Track
Amazon ❌️ ✅️
USPS ✅️ ✅️
UPS ✅️ ✅️
DHL ✅️ ✅️
FedEx ❗️With Account ✅️
OnTrac ❗️With Account ✅️
SF Express ❗️With Account ✅️
Yanwen ⁉️ Limited ✅️
Cainiao ❌️ Deprecated ✅️
YunExpress ❌️ Deprecated ✅️
SunYou ❌️ ✅️
Veho ❗️With Account ❌️

Configuration of API Keys and Webhooks for EasyPost and 17Track

EasyPost Configuration

  1. Get Your EasyPost API Key
  2. Set the API Key: $ bench set-config easypost_api_key API_KEY
  3. Create and set your Webhook Secret(hmac): $ bench set-config easypost_webhook_secret SECRET
  4. Set up your Webhook Secret and the Webhook URL on EasyPost: {HOST}/api/method/cargo_management.parcel_management.doctype.parcel.api.easypost_api.easypost_webhook

17Track Configuration

  1. Get Your 17Track Security Key
  2. Set the API Key: $ bench set-config 17track_api_key API_KEY
  3. Set up the Webhook URL on 17Track: {HOST}/api/method/cargo_management.parcel_management.doctype.parcel.api.17track_api.17track_webhook

TODO: WORKING

Parcel Flow

  1. Parcels are created and can be related to a specific customer
    1. Content of the package can be added and its related Item for invoice Purposes.
    2. It can be tracked by the API or not.
  2. As the carrier updates the details the Tracking API send it via a webhook, we gather and update.
  3. When the package is marked as delivered at warehouse by the carrier we stop the Tracking API webhook updates
  4. A Warehouse Receipt doc its created to link the received package:
    1. Package related fields can be filled by the Warehouse: Content, Dimensions, Weight, Receipt Date
  5. Cargo Shipment is created to export Packages in bulk:
    1. Warehouse Receipts are added in them.
    2. Related information: Transportation Type, Departure date, Est Arrival Date, Dimensions, Gross Weight

WORKING on this flow

  1. Cargo Shipment Receipt is created to receive the Cargo Shipment:
    1. A Receipt loads the data of all related Packages in the Cargo Shipment through the Warehouse Receipts
    2. All Packages are sorted by Customer, and its the moment to set all related data to Create Invoices.
    3. When all the Packages have been processed, the Sales Invoices can be created.
      1. A Sales invoice will be created for the customer, it will contain all the related Packages.
  2. WORKING

Customizations to Frappe and ERPNext:

WORK ON PROGRESS

Helpers

This is work in progress. But it's stable for usage

Code related TODO:
  1. Migrate SQL to QueryBuilder? using Pypika?