Sponsored Development: Drop Ship

From ADempiere
Revision as of 05:04, 19 May 2008 by Phib (Talk)

Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.

Project Team

Coordinator

Joel Stangeland

Functional Specs

  • Joel Stangeland (free)
  • Joel Hoffman (free)

Developers

  • Paul Bowden

Testers

  • Joel Hoffman (free)
  • Susy Ongko (free)

Sponsors

Idalica $800USD

others welcome

Proposed Specifications=

Use Cases

  1. Simple Vendor Drop Ship: Jimbo, a skilled user of Adempiere, receives an order from Hans for 6 Frozen Yoghurts. Having none in stock, Jimbo wants to quickly raise a purchase order against Kwik-e-mart for them to supply the 6 Yoghurts. But in the interests of corporate efficiency, environmental benevolence and not melting the yoghurt, Jimbo decides that Kwik-E-Mart should deliver them directly to Hans rather than sending them to Jimbo's warehouse.
  2. Customer Drop Ship: Freda runs an online store selling art prints. She carries no stock, but fortunately her supplier, Monet Co., has chosen to implement Adempiere, and is able to ship goods on demand with very little overhead. Freda would like not to have to handle the prints at all, so she has requested that Monet ship directly to her customers -- she'll provide all the delivery details required with each order -- and Monet, anxious to make a good impression, has agreed that it's a very good idea. Freda receives an order on her webstore from Mr Escher for one of her tranquil waterfall prints. She laboriously re-enters that very order as a purchase order in Monet's webstore, and settles back to wait for notification that the goods have been sent so she can mock up an invoice in excel.


Current Functionality

It is already possible to (sort of) handle the customer drop shipment case using standard functionality: Monet could simply add Escher as a contact for Freda, and his address as one of Freda's delivery locations, and alter the print format to not print Freda's company name in the deliver to field. Of course, if Monet needed, for example, to send a shipment confirmation to Freda's real address he would need to perform various contortions to get the necessary information. It would probably be better if Freda's name, address and contact information were kept as the main order business partner details, and the delivery information was handled separately.

There is also some beta functionality inherited from Compiere that does some interesting things in the name of drop shipment. It is primarily directed at use case 1: the simple vendor drop shipment. Currently, Jimbo can raise a sales order to Hans for the frozen yoghurt, and mark the sales order as a drop shipment. On completion of the order, reservations are not made and it is not possible to raise a shipment for the order. (This makes some kind of sense as the "shipment" will come from the vendor. There does not, however, appear to be any mechanism for tracking open drop ship orders, or for triggering the invoice except as immediate.) Jimbo can then "Generate PO from SO" to create a purchase order against the current vendor for each of the products on the Sales Order. This PO will be marked as a drop shipment, with the order BP details set to Hans and the Invoice to BP as Kwik-e-Mart.

Proposed Implementation

  1. Add a "Drop Ship" BP, location, and contact to the C_Order table for use by both sales and purchase orders. Use the "IsDropShip" flag to determine if these fields are displayed. The selected BP does not have to be related to the main order BP or invoice to BP, it is just an arbitrary reference for tidily storing shipping information. Individual implementations can choose whether they wish to create a BP for every customer drop shipment recipient, or consolidate them into a "dummy" BP, like a cash sales account. For vendor drop shipments, the deliver to BP will obviously already exist as a customer. These fields will also be added to the document print views.
  2. Add a "Drop Ship" BP, location and contact and "IsDropShip" flag to the M_InOut table.
  3. Add a default drop shipment warehouse to the org info table.


Requirements

Finish off the beta Drop-ship functionality.

  • Current Functionality- reproduce in Garden World
  1. Create a Sales Order of type Standard for "Joe Block"
  2. tick the DropShip box.
  3. Go to the Sales Items and add 1 Rose Bush.
  4. Go back to the Header tab and Complete the Order.
  5. Still in the Sales Menu select "Generate PO from Sales Orders" and select "Drop Ship" equal yes.
  6. A PO is created
  • Fixes Needed
    • Change AD so that drop-ship does not become un-updateable on save
    • When creating PO, set drop-ship = 'Y'
    • Correct the "Generate PO from Sales Orders" process so the PO is created with C_BPartner_ID= the Vendor for the product (select vendor with the same criteria that "Generate PO from Sales Orders" always uses) "Generate PO from Sales Orders" seems to work ok now in selecting the "Invoice To" BP, but right now, C_BPartner_ID is set to the sales order BP, which is incorrect)
  • Enhancements Needed
  1. Need a way to define a 'drop-ship' warehouse
    1. Seems like this needs to be per organization
      1. add 'Drop-Ship Warehouse' (using M_Warehouse_ID) to Organization Window
  2. Add IsDropShip to Material Receipt Screen
  3. Adjust "Generate PO from Sales Orders" so that if C_Order.IsDropShip='Y' it will create the PO with IsDropShip='Y' and also a Material Receipt with IsDropShip='Y', and also a Shipment Document with IsDropShip='Y'.
    1. PO, Drop-Ship Receipt, and Shipment should all use the Drop-Ship Warehouse from the Organization record.
      1. This should properly record the costs, with no net effect to inventory
  4. Add to M_Inout (so that delivery address can be added to PO Print Format
    1. C_DropShipBP_ID: the C_BPartner_ID from the original Sales Order
    2. C_DropShipLoc_ID: the Deliver to address from the original SO
  5. Add C_DropShipSO_ID to C_Order. When the PO is generated, update this field with original Sales Order ID, so that it can be referenced (might be nice to enable it as a zoom across from the original SO.