Sections in this article
- How Purchase Orders Are Handled
- PO Approval Process
- Product Receipt Process - K_PRODLTM
How Purchase Orders Are Handled
The PO approval process within K3S is one of the most complex and fully configured processes within the software. Every install of K3S will have a custom written PO interface program to take the approved PO from K3S and, via different processes based on the setup, insert the approved PO into the customer’s ERP. As well there is an additional data flow back to K3S based on receipts of individual products. K3S is robust enough to be able to handle PO approval and products being received completely independently, and then combine the information if a matching PO# is found.
PO Approval Process
When a PO is approved within the system, K_INTORDB, K_INTORDD, K_INTORDF, and K_INTORDL files are all created upon approval.
Interface for Approved Orders – Header K_INTORDB
This is the header record written for each approved PO within K3S.
Interface for Approved Orders – Detail K_INTORDD
This is the detail record per product written for each approved PO within K3S. These will always link back to once K_INTORDB header record.
Log of User Actions of Approved Orders K_INTORDL
Upon approval of a PO the status and metrics of a PO are taken into consideration to create this record. As the status of a PO changes based on receipt this is the only file that will be updated.
Best Practices Log K_INTORDF
At the moment of approval a snapshot of what best practices were not followed is taken for each PO. These best practices do not change or alter the approval of the PO, but take into account the contextual and scientific instruction that K3S uses to guide buyers to buy the most effectively. A note may be captured as well upon approval.
Product Receipt Process - K_PRODLTM
The K_PRODLTM file is one of the 4 basic interface files that K3S will pull in for every Night Job. This file contains the receipt transaction of product that was received within the warehouse based on what was ordered. Each record is written without a header and is independent of each other as product can be used for forecasting within K3S no matter where it is ordered from. This file will also allow K3S to accurately forecast product (and in aggregate supplier) lead time. Within an order products may also be able to be received over multiple days and all relate to the same PO. Last, it is possible for K3S to forecast without K_PRODLTM records if the customer cannot provide it.
AL_RECEIVE Purchase Order Status Labels
K_INTORDL.AL_RECEIVE is a status label about POs that allow a buyer to understand the current status of receipt of their POS. Below listed is how AL_RECEIVE labels are calculated and assigned. Note that a PO can take multiple days to receive and the status of a PO might change as the products are received.
9 = Placed Today
AL_RECEIVE is set to 9 at the time of PO approval. If rechecked and K_COMPANY.CM_SYSDATE is equal to K_INTORDB.IB_BIRTH it will still be set to 9.
0 = Open Order
Open Order means the PO has been placed and has not arrived yet, and is still before the expected arrival date. After a Night Job or if the PO is rechecked and K_COMPANY.CM_SYSDATE > K_INTORDB.IB_BIRTH and K_INTORDB.IB_ARRIVE >= K_COMPANY.CM_SYSDATE the PO status will be set to 0.
5 = Late for Receiving
Late for Receiving is when a PO still has not arrived and the date has passed the expected arrival date. After a Night Job or if the PO is rechecked and K_COMPANY.CM_SYSDATE > K_INTORDB.IB_BIRTH and K_INTORDB.IB_ARRIVE < K_COMPANY.CM_SYSDATE the PO status will be set to 5.
1 = Fully Received
A fully received PO means that for every K_INTORDD record there is also a K_PRODLTM record that has been sent back to K3S, and that for every single record the amount ordered, exactly matches the amount received in (K_INTORDD.ID_SOQACT = K_PRODLTM.PL_QTYRECV).
2 = Partial Received
A partially received PO means that there is either one product that is missing off the PO or at least one product on the PO has a quantity that does not match K_INTORDD.ID_SOQACT and is less than what was ordered. As well there may be missing K_PRODLTM records because a product was not received at all. This status means no product was shipped more than ordered (!K_PRODLTM.PL_QTYRECV > K_INTORDD.ID_SOQACT).
3 = Partial & Over Received
A partial and over received PO means that at least one product was shipped more than ordered (K_PRODLTM.PL_QTYRECV > K_INTORDD.ID_SOQACT) or an additional product was shipped and at least one product was not shipped or shipped less than ordered (K_PRODLTM.PL_QTYRECV < K_INTORDD.ID_SOQACT).
4 = Over Received
An over received order means that every single product that was ordered was received, and every single quantity for every single product was fulfilled what was ordered, and that at least one product had more received than was ordered (K_PRODLTM.PL_QTYRECV > K_INTORDD.ID_SOQACT).
6 = PO Adjusted After Approval in K3S
Any PO that has quantities adjusted outside of K3S will receive this status, no matter the state of the order. As the context of the PO status is lost when adjusted outside of the system there is no logical way K3S can assign a proper status to a PO. This happens when the quantity ordered on the K3S side does not match the receipt side for every single product (K_PRODLTM.PL_QTYORDR != K_INTORDD.ID_SOQACT)
8 = PO Placed Outside of K3S
This means there are K_PRODLTM records for products being pulled in by the Night Job that do not have a matching approved order within K3S. As K3S cannot know all the details of an order placed outside the system, K3S will assign this status.
C = All Items Cut From Order
A K_PRODLTM record with a 0 quantity (K_PRODLTM.PL_QTYRECV) is created for products that are cut from the PO. If all the potential items on the PO receive the same record then the PO is labeled as cut.
I = Ignore PO
The user has set this PO to not have its status checked.
AL_AGEOLD Status Legend
K_INTORDL.AL_AGEOLD allows the user to see in relation to the expected date of arrival how the first receipt of any product compares. Note that because product can be received over multiple days this is only based off the first received product from an order.
-999 = Not Received Yet
This status shows that no product has been received yet for the PO and no K_PRODLTM records are available.
=0 = Arrived on Expected Date
This status shows that at least one K_PRODLTM record to match one K_INTORDD record and that this one record’s receive date matches the expected date. K_PRODLTM.PL_BIRTH = K_INTORDB.IB_ARRIVE
>0 = Days Arrived After Expected Date
This status shows that at least one K_PRODLTM record to match one K_INTORDD record and that this one record’s receive date is later than the expected date. K_PRODLTM.PL_BIRTH > K_INTORDB.IB_ARRIVE
<0 = Days Arrived Before Expected Date
This status shows that at least one K_PRODLTM record to match one K_INTORDD record and that this one record’s receive date is earlier than the expected date. K_PRODLTM.PL_BIRTH < K_INTORDB.IB_ARRIVE