Purchase Orders

Sections in this article

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