Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Propose addition of a tool to organize, manage, and track orders #871

Open
twelve12pm opened this issue Jun 9, 2017 · 2 comments
Open

Comments

@twelve12pm
Copy link

Feature request: Propose the addition of a tool to organize, manage, and track orders.

This would create a new top-level Orders page.

The purpose of the Orders page is:

  • A. Quickly queue parts and create orders.
  • B. Keep track of orders that have been placed.
  • C. When orders arrive, check parts in quickly.

Item A: Quickly queue parts to be ordered.

There are three reasons why we are ordering parts:

  1. Ordering parts for a production run
  2. Ordering parts to fulfill our minimum stock levels
  3. Ordering arbitrary parts for any reason

To create orders, the user begins by queueing parts that need to be purchased in a Shopping List. The Shopping List is a staging area and is independent of the distributor(s) who will be supplying the parts. Someone else requested a "wish list" feature to keep track of parts you may want to purchase in the future. The Shopping List is essentially the same idea. It would be persistent so you could add or remove items at any time.

Parts are queued (added to the Shopping List) by any combination of the following actions:

  1. For production run: Select Project and specify Quantity, similar to the Project Reports feature. All parts needed for the Project are queued to the Shopping List, taking into account project quantity, parts in stock, and minimum stock level of those parts.
  2. For fulfilling minimum stock levels: Click a button that automatically queues all parts in the system that are below minimum stock level.
  3. User can queue arbitrary parts as well by selecting any individual part and specifying quantity.

These three steps may be repeated in any combination and as many times as needed, potentially queueing up a large Shopping List to assemble many boards, meet stock levels, and purchase other odds and ends.

Once the Shopping List is complete, it is time to decide which distributor(s) to order the items from. In this process, items are moved from the Shopping List to Orders, one Order per distributor.

There are two alternate strategies for ordering:

  1. Minimize part cost by ordering each part from the distributor with the best price, at the expense of higher shipping costs (more distributors = more packages shipped).
  2. Minimize shipping costs by ordering from the fewest distributors, even if part cost is higher.

The user may manually create Orders and move individual parts back and forth between the Shopping List and an Order, or move them from one Order to another.

But a better approach is to push a button, whereby PartKeepr will calculate the two alternate ordering strategies and present the alternatives and their estimated total costs. The user will choose one of the alternatives and PartKeepr will automatically create the orders and move the items from the Shopping List to the Orders.

As explained above, the user may manually move parts between Orders, put them back on the Shopping List, add or remove parts, change quantities, etc., so this gives a chance to fine-tune the orders.

Once the user is happy with an Order, the Order is exported as a CSV spreadsheet. Several distributors allow uploading a CSV BOM to create a shopping cart.

Item B: Keep track of orders that have been placed.

Once the user places an order with a distributor, the user can change its status from Pending to Ordered.

At any time, the user can set additional data about the order, such as:

  • Order date
  • Tracking number
  • Estimated arrival date
  • Actual shipping cost
  • Taxes
  • Other costs
  • Total invoiced cost
  • Received date
  • Other notes

Item C: When orders arrive, check parts in quickly.

When a package is received, the user can go through the list of parts in the Order and check them in. Checking an item in will open a dialog box with the following fields: Quantity Received, Price Per Item. These will be pre-filled with the information from the Order. The user can make changes if necessary. For example maybe items are backordered and the distributor sent fewer parts than ordered, or maybe the actual part cost differed from the cost in PartKeepr's database. Clicking OK in this dialog box will update stock history and stock level for that part. It will also update the item in the order, by recording the actual invoiced price and quantity received. If the full quantity was received, some visual cue will indicate that the part is fully reconciled. After checking in all the items that arrived, the user will be able to see at a glance whether the order is complete or parts are missing.

By going through this process, the effort to update stock levels is minimized and we get the additional benefit of reconciling orders and keeping track of shortages in case the distributor needs to send additional packages, or distributor error.

Once all the items in an order are marked as arrived in good order, PartKeepr will mark the whole order as Complete.

@Gasman2014
Copy link

I have this request too. I am presently working on adding an 'Orders' table to the sql database for my own use and attempting to add my orders via an external sql tool (very much a w.i.p.) I would like to integrate order management into my Kicad to Partkeepr workflow, to calculate not only my current stock but future stock levels by including lead-time calculations.

Including a top-level 'Orders' function with the functionality described would add a basic SCM functionality to PartKeepr which would be very useful. Even a more basic functionality of simply tracking current orders with delivery dates would be very useful.

@twelve12pm
Copy link
Author

Agreed. Currently we are spending an inordinate amount of time updating stock levels which requires us to have the paperwork from the order handy, as well as a second browser window open to the distributor's website, and to reconcile each item manually. The primary motivation of the orders functionality as described in the original post is to automate this tedious process.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants