x

Start now

Schedule a demo

  • Date Format: MM slash DD slash YYYY
  • This field is for validation purposes and should be left unchanged.
screenSpec: Purchasing > Purchase Orders – OneSource: Inventory for QuickBooks Online screenSpec: Purchasing > Purchase Orders – OneSource: Inventory for QuickBooks Online

Have a Question?

screenSpec: Purchasing > Purchase Orders

You are here:
< All Topics

Overview

 The Purchase Order is gives the user a way to order products and services.  

V4 Features we will NOT support or worry about in V5

  • Case pack conversion stuff.
  • WMS stuff
  • Workarounds in the code such as:
    • To change background colors of the labels when the field is selected
    • To arrow up and down from record to record.
  • V4 has a Commit Button but it is not really wired to control the inventory management.  V5 DOES need a commit button and does need to control Inventory when it is clicked.
  • No EDIT buttons on any screen any more…
  • Whenever a ‘Timer’ is used, its usually a workaround–bandaid to some type of db problem due to Access weaknesses.
  • Post/Unpost: We will NOT have a GL in V5, so we will let QBO handle all of that stuff.
  • Not too worried about ‘Default Supplier’ stuff.
  • Having an option to show x Lines (for each line item) we wont need to support any more.
  • We do NOT need to support more than 1 ‘type’ of PO Line Items (or Sales Order Line Items).
  • Any mention of updating line item where the TYPE = Category

Related Tables

  • PurchaseOrder (Purchase Order in V4)
  • PurchaseOrderLineItems (Purchase Order Line Items in V4)
  • Item (Inventory in V4)
  • Vendor (Suppliers in V4)
  • WarehouseLocations
  • ItemFreightCategories (tblFreightMethod in V4)
  • TypeofPayment  (Type of Payment in V4)
  • SystemRecordNumbers (SystemID in v4) (This will be used by almost ALL other Systems)
  • SystemUserSecurity (This was uSysSecurity in v4)
  • ShippedVia
  • ??? Payables (V4) (Not sure we need to create this in V5?)
  • ??? Payable Payments (V4) (Not sure we need to create this in V5?)
  • ??? tblCurrency (V4) (Maybe later on in V5)

How It Works

Purchase Order Automated Functions (features)

Adding PO Line Items

 

Purchase Order Header Objects

  • Vendor search field.
  • Vendor Name.
  • Vendor full address
  • Bill to search field
  • Bill to Warehouse name
  • Bill to Warehouse address
  • Ship to search field
  • Warehouse (checkbox)
  • Ship to Warehouse name
  • Ship to Warehouse address
  • Customer (checkbox)
  • Ship to Customer name
  • Ship to Customer address
  • Purchase Order #
  • Status
  • Vendor Order #
  • Currency
  • Print Date
  • PO Date
  • Invoice Date
  • PMT Due Date
  • FOB
  • Payment Terms
  • Ordered By
  • Ship Via
  • Custom Field 1
  • Custom Field 2
  • Custom Field 3
  • (Added 8/10/19) Received (checkbox)
  • (Added 8/10/19) Sync with QuickBooks Online
  • (Added 8/10/19) Resync

Purchase Order Footer Objects

  • Total Weight
  • Total Volume
  • Expected Shipment Date
  • Date Approved
  • Approved By
  • Comments
  • Sub Total
  • Freight
  • Tax
  • Other
  • Total
  • QuickBooks AP Bill Creation Date:
  • QuickBooks AP Bill ID:
  • QuickBooks AP Bill Amount:
  • QuickBooks AP Bill Date Paid:

Footer Buttons

Modified all of these FOOTER sub sections 8/10/19)

Bottom Left Corner

  • New
  • Delete

Center

  • Receive PO
    • This will Loop through all items and receive each item 1 by 1 (making entries to the Item Log and Audit log in the process).
  • Make AP Bill (See QBO Syncing kba for logic)

Bottom Right Corner

  • Send Email
  • Print
  • Save
  • Help
  • Close

Purchase Order Line Item Details

Line 1 Fields (Required in Gray)

  • Move / Action icon
  • Rcvd
  • Qty Ord
  • Item Number
  • Unit of Measure
  • Qty Rcvd
  • Case
  • Case Pack
  • Description
  • List Price
    • Note: When the user changes this cost (after it is initial auto filled) give this popup message: Title: Update Item Record?   Message: Do you want to update this cost for this Vendor on the item record?  (Yes, No)
      • (Added on 7/25/19)
      • REMOVE
      • Remove the OPTION in the Settings to have a cost change Prompt Yes, Prompt, No….  Just implement the popup message above..
      • Remove the Decimal point in the Settings for the PO as well.
      • Put this TEXT on the PO Settings screen. “There are no special settings for Purchase Orders at this time.”
  • Spec Order Price  (What is this for??)
  • Add’l Cost
  • Cost
    • Note: When the user changes this cost (after it is initially auto filled) give this popup message: Title: Update Item Record?   Message: Do you want to update this cost for this Vendor on the item record?  (Yes, No)
    • (Added on 7/25/19) Also, if the PO line has a related Sales Order line # then we need:
      • Automatically update the SO Line # COST.
      • Also, if the SO has a related Invoice then we need to update the related Invoice Line # Cost.
      • Also, if the Invoice has already been synced with QBO then we have to UNCHECK the SYNCED button for the OS Invoice–so we can update the QBO Invoice cost change.
      • NOTE: Real world logic behind this… 
        • Order > Create PO
        • PO may have an OLD cost for the item..but the user doesn’t have time to verify so they go ahead and order the item as is.
        • Days or weeks later the company gets the BILL for the PO.  The PO went to the Vendor for $50 for item X.  The Vendor CORRECTS the error and changes the cost for ITEM X to $60.
        • But…the Order > which became an Invoice (days earlier) had the cost = $50.  (Which makes the PROFIT higher than it really is…AND makes Sales person Commissions Profit calculations incorrect as well).
  • Line Total

Line 2 Fields (Required in Gray)

  • Date Exp
  • Date Rec
  • Sales Order #
  • Credit Memo #
  • Volume
  • Weight
  • Comments
  • List Margin
  • Spec Order Margin
  • Lot 1
  • Lot 2

Purchase Order Events

SPECIAL NOTE: If V5 does anything in the code that is is NOT on the bullet point list below PLEASE ADD additional bullet points.  Each time an item on the bullet point list IS COMPLETED then put X– in front of the bullet point item.

Purchase Order – Open Events (SBC 17.0811)

  • (Low priority) Check for TestMode (this will show TEST MODE in a bright YELLOW background to notify the user that they are in Test mode–which will allow the user to add/change records without making any permanent changes to the LIVE data).  (We will have to discuss if we want this and how to replicate it–SBC)
  • X–Check user security rights to open the form, change data on the form, etc
  • Check for several settings (preferences):
    • X–PO Numbering method. (If automatic, auto create the PO #, otherwise open PO # pop up and focus on PO #)
    • Fetch PO Page default values to bind drop down values like(Vendors, Items, ShippedVia, Users, PaymentMethods and etc..)
    • NOTE: In V4 we had a setting to turn the Inventory tracking on/off.  In V5 the PO and SO and CM will try to adjust inventory IF the item class = Inventory.
    • (Lower priority) Check for Currency type (US Dollar, Canadian Dollar, etc
  • If the PO # is set for the user to create set the focus on the PO # in the popup, otherwise set the focus on the Vendor Name field.
  • Check for other table Preferences…
    • What are the names of the PO Lot Tracking fields?

Purchase Order – Close Events (SBC 17.0811)

  • Reverse Engineer V4.
  • Close Events function working based on two conditions.
    • Check any UNSAVED data exists in PurchaseOrder form
    • If YES show confirm message to the user, Changes you made may not be saved. Leave (or) Stay?
      • Leave: Redirect to PurchaseOrder List form
      • Stay: Wait in PurchaseOrder form
    • Else, Close PurchaseOrder form and Redirect to PurchaseOrder List form.

Purchase Order – Vendor Name – Changed

  • Check the PO has already been received and/or a QBO AP Bill has been created.
    • If so msg: ‘You cannot change this value because the PO has already been received and/or billed from Quickbooks Online.’
    • Else, Fetch Vendor Address details from the database and bind the values in the corresponding textbox.

Purchase Order – Bill To Name – Changed

  • Check the PO has already been received and/or a QBO AP Bill has been created.  (Call qbo_PurchaseOrder.CheckPurchaseOrderReceived and also qbo_PurchaseOrder.CheckAPBillPaid)
    • If so msg: ‘You cannot change this value because the PO has already been received and/or billed from Quickbooks Online.’
    • Else, Fetch Warehouse Address details from the database and bind the values in the corresponding textbox.

Purchase Order – Ship To Name – Changed

  • Check the PO has already been received and/or a QBO AP Bill has been created.
    • If so msg: ‘You cannot change this value because the PO has already been received and/or billed from Quickbooks Online.’
    • Else,
      • If the user selects Warehouse radio button
        • The list shown in Ship to is Warehouse list.
      • If the user selects Customer radio button
        • The list shown in Ship to is Customer list.

Receiving PO Line Items  (SEE FLOW CHART ideas and SCENARIOS below)

  • When click the Received Checkbox, make a new ‘Receipt’ record that appears on the Inventory – Stock tab (on the Inventory (Item) Management screen).  This record will populate the ItemStock table with values derived from the PO Line item received.
    • If the PO Line is NOT received in FULL and the Qty Rec is changed, then it needs to modify the same ‘Receipt’ it made before.
    • If the PO Line IS received in FULL and the Qty Rec is changed (to reduce the qty) then it needs to modify the same ‘Receipt’ it made before.
    • If the PO Line is deleted it needs to remove (hide) the ‘Receipt’ it created before.
    • If the PO Line is received (in full) by the user changing the Qty Rec field then it needs to mark the Received Checkbox for the line = true. 
    • (Added on 7/25/19) Note: The Sales Order (Line #) needs to carry over to the Item Receipt when the PO line it received.

Clicking the Receive PO button (on PO Footer) (Added 8/10/19)

When clicked, it will:

  • Loop through all line items and run the same code, for each line, as if the user clicks the Received checkbox on the line item.
  • After completing the loop, if all line items are received it will:
    • Set the Received (on the PO Header) = True.
    • Change the Status = ‘Received’
  • Check the Settings > Purchase Orders > Prompt user to auto create new AP Bill in QuickBooks Online after the PO has been received in full.  (Checkbox).
    • If this setting is True then perform these steps:
      • Auto create an AP bill for the amount of the PO
        • Vendor Name
        • Date
        • Amount
      • Update these fields on the PO Footer
        • QuickBooks AP Bill Creation Date
        • QuickBooks AP Bill ID 
        • QuickBooks AP Bill Amount

Purchase Order Line Item FLOW CHART ideas

Receive Item

 

Un-Receive Item

  • (1) (Yes) Does a ‘Receipt’ still exist?
    • (2) (Yes) Is the ‘Receipt’ still 100% the same?  (Is the Qty Received = Qty In Stock, on that line item?)
      • (3) (Yes) Is the PO NOT Linked to an AP Bill OR is linked to an AP Bill but has NOT been paid already?
        • Allow the item to be un-received (with NO popup message)
      • (3) (No) If the PO IS linked to a PAID AP Bill
        • Stop: Popup user message: ‘This Receipt is linked to a PAID AP Bill. This line item cannot be changed.’
    • (2) (No) The Receipt is NOT 100% the same, but is NOT yet linked to a PAID AP Bill then…
      • If adjust QTY RECEIVED DOWN then if the QTY RECEIVED is > or = the QTY already shipped, then:
        • Pop message:
          • Title: The Qty Ordered and the Qty Received Do NOT Match
          • Message: Do you want to continue with this change? If so please note that you may need to update the Qty Ordered (manually) as well.
            • If YES:
              • Allow the change
              • Update the PO Qty Ordered to be equal to the Qty Rec
              • Update the RECEIPT Qty Received to be equal to the PO Qty Rec
              • Add new log entry to show the new change…
            • If NO:
              • Revert the Ship Qty back to the original value.
              • NOTE: In either case the USER has to change the Qty Ordered themselves…
  • (1) (No) Receipt is already gone (used up) on Sales Orders, etc
    • Give message: ‘This Receipt has already been used up. You cannot un-recieve this item.’

Purchase Order Scenarios That we Will Support

Item Received Into Stock – Not ever Unreceived

  • Add new Row in ItemStock table
  • Add the QuantityOrdered value into QuantityInStock in Item table

Item Rec into Stock – User Try to UnReceive

  • Check if ANY Receipt is linked to this POLine Item
  • If Yes, Display Warning Message as “This line item is already linked to a Receipt”
  • Else continue
  • QuantityInStock = QuantityInStock – QuantityReceived value
  • Calculate the difference and update the QuantityInStock value to Item table
  • Delete the corresponding row from ItemStock table

Item Rec into Stock – UnReceived when user changes the Qty Shipped to a value LESS than the Qty Ordered (after it was received)

  • CurrentlyReceivedQty = POLineItem.QuantityReceived – ItemStock.QuantityReceived
  • Get the Existing Itemstock table Record, subtract the CurrentlyReceivedQty from QuantityInStock in Item table.

Item Partially Received Into Stock, then Receiving remaining QTY

  • CurrentlyReceivedQty = POLineItem.QuantityReceived- ItemStock.QuantityReceived
  • Get the Existing Itemstock table Record, add the CurrentlyReceivedQty from QuantityInStock in Item table.

Item Fully Received Into Stock – NO Receipt. Then User Un-Receives the Item and Delete that PO Line

  • Check if ANY Receipt is linked to this POLine Item
  • If Yes, Display Warning Message
  • Else continue
  • Subtract the QuantityInStock from Item
  • Delete the corresponding row from ItemStock table.
  • Delete the corresponding row from POLine table.

Item Partially Received Into Stock, then User Try to change the Item Name

  • Check if ANY Receipt is linked to this POLine Item
  • If Yes, Display Warning Message
  • Else continue
  • Update the current ItemID in ItemStock table
  • Subtract the QuantityInStock from Old Item value
  • Add the QuantityInStock to the new Item value

Prevent changes to PO line when an AP Bill is Entered for the PO AND PAID.

Allow changes to PO Line, in some situations…if the AP Bill is Entered, but NOT paid.

Purchase Order Line Items Events

PO Line Items SubForm – Loaded?

  • Check for table preferences:
    • Column Hide/Show Preferences
    • Column Resizing Preferences
    • Lot number field label name
    • (Medium priority) Decimal point preferences for PRICE field (BUT NOT Line item Totals or Bottom Line PO Totals) (to determine the # of digits to the right of the period).

COMMIT LINE ITEM button: Before a New Line Item is Inserted (into the DB)

  • Data validation: Check for invalid characters and/or double quote (“) marks in the PO item description.
  • Check to see if the Item #, Qty Shipped, or Cost has changed
    • Check to make sure that the
  • By default, a new line item row will be displayed. The user can edit the Item name, Description, Quantity, Cost and etc.
  • Based on the current row value change LineTotal and PurchaseOrder TotalAmount has been calculated, and display in the Label.
  • When all validation is completed then put the inventory in stock when the button is clicked (or take it out of stock if the user is trying to un-receive items and/or is deleting the entire PO line item).  This will at the very least include these major events:
    • Write (or edit) a new ‘Receipt’ in the ItemStock table (which used to be Inventory Products in V4)
    • Write to the Inventory LOG in the ItemStockLog table (which used to be the tblInventoryProductsLog in V4)
  • NOTE: These are SOME of the MOST difficult things that we dealt with in Version 4:
    • What is the user doing?
      • Adding a new PO line?
      • Changing the things that are entered on a new PO line (before it is committed)
      • Re-opening the PO and editing an existing line?
      • Re-opening the PO and deleting an existing line?
      • Re-opening the PO and receiving 1 line at a time (or receiving ALL items at one time using the Receive All button).
    • When the user makes ‘changes’ to something that has already been received, what is the status of that Receipt? Is it ALL still the same, or partially shipped on a Sales Order already? or All the way shipped (and gone)?
    • Deciding when to allow changes to the Receipt, and when not to allow the changes?
    • Knowing when certain Receipts should be allowed to be ‘shipped’ and which are ‘reserved’ for a ‘Special Order’ or a Stock Transfer.

Subform Line item Index Changed

  • Check Validation, Item name Exists
  • Calculate LineTotal and PurchaseOrder TotalAmount
  •  Check PurchaseOrder ID in PurchaseOrder table
    • if not exists, Insert PurchaseOrder table and PurchaseOrderLineItems table
    • Else, Check PurchaseOrderLineItems ID in PurchaseOrderLineItems table
      • if YES, Update PurchaseOrderLineItems table
      • Else Insert PurchaseOrderLineItems table

After an existing line item is deleted

  • Delete the row from PurchaseOrderLineItems table
  • Calculate LineTotal and PurchaseOrder TotalAmount

After an existing line item ITEM NUMBER is changed

  • Fetch the selected Item values from the database, and bind the values in the current row(like Des, Cost and etc..)
  • Calculate LineTotal and PurchaseOrder TotalAmount

After an existing line item, QTY is changed

  • Calculate LineTotal and PurchaseOrder TotalAmount

After an existing line item PRICE is changed

  • Calculate LineTotal and PurchaseOrder TotalAmount

Calculate LineTotal and TotalAmount

  • First Calculate the Amount of each row in Line Item Table using multiplication of Quantity and Cost and fetch value into corresponding Line Total.
  • The Line Total of each row is added and Total value will bind in Subtotal textbox.
  • Then Total will bind based on the addition of Subtotal, Freight, OtherCharges and salesTax.

PO Additional Costs

Overview

  • This feature allows the user to enter 1 or more ‘estimated’ ‘additional’ costs (above and beyond the PO cost) to get ALL items on the PO to their back door.  These additional costs may include: 1–Freight to ship over the ocean, 2–Cost to get through Customs, 3–Cost to ship from the harbor/customs to the Company’s back door.

How it Works – Overview

  • 1–The User ‘estimates’ how much all of the ‘additional costs’ to get the item from the Supplier/Manufacturer TO their back door.
  • 2–The User enters each of these estimated additional costs into the Additional Costs section (on the left side of the PO).
  • 3–The User clicks the button to ‘calculate’ and ‘distribute’ a % of the total cost to each PO line item (in the Additional Costs field).  The cost entered into this field (on each PO line item) is NOT included in the PO line item extended cost.  This cost is just used to help the company understand the overall, true cost to BUY and SHIP the item to them–so they understand how much to charge their customers for the item when they sell it.
  • 4–When the PO is ‘received’ the ‘additional’ costs copy over to the Additional Costs field on the Item Detail screen > Item Receipts tab.

 

How it Works – From Code

 

Problems with OSO to QBO integration

PO’s that are created in OSO and inserted into QBO do NOT have a LINK between QBO AP BILL and QBO PO.

  • Consequence of this problem:
    • If we EDIT anything in oso PO (like like items, qty’s, costs, etc) then the AP BILL (which is NOT already paid in QBO) WILL get out of sync with OSO PO.
  • Potential “work arounds” to the problem:
    • PLAN A: Auto create a QBO AP Bill and store the AP Bill # in a cross reference table so we can create our own ‘link’ to keep the OS PO and the QBO AP BILL in sync.
    • PLAN B:  Create a new option to send an email notification

Print Dialog Popup Form

Printed PO Documents (reports)

See Printing Transactions kba.

Previous screenSpec: Items > Item Add New (********** INCOMPLETE **********)
Next screenSpec: Reports
Was this article helpful?
0 out of 5 stars
5 Stars 0%
4 Stars 0%
3 Stars 0%
2 Stars 0%
1 Stars 0%
How can we improve this article?
Table of Contents