Preface:
When I used Oracle R12's consignment function, I encountered a very troublesome problem: price grabbing.
Due to this problem, the consignment function is always unavailable in the company, and the inventory report basically requires them to work manually (calculate the product's input and output at each price every month ).
After consulting with EBS colleagues from other companies and taking into account their actual solution logic, they finally solved the problem. Now I will summarize the solution ideas, for more information, see.
Due to confidentiality considerations, the developed source code will not be shared, so I hope to understand it.
I. Question proposal
First, give a rough description of the Standard Consignment function:
Actions (consuming supplier inventory) like receiving and receiving orders (transferring unit price to the (segmented) price) of the next pack of PO (BPA) à generate payable (the payable price is the price of BPA)
Core issues that the standard consignment function cannot meet:
When the Standard Consignment function is used for consumption, the price is the price of a pack of PO (BPA) lines. In fact, when the business department wants to consume, the price should be the price of the standard PO row in the actual warehouse (each receipt is a different price, which is more reasonable ).
Similarly, the price to be transferred to pay should also be the price of the standard PO Line.
This price issue requires customization.
Ii. Problem Analysis and Solution
(1) Customized logic:
The core logic is to enable Batch Management for the item number. Each time a batch is added to the receiving database, this batch is the basis for tracking the material consumption price from start to end.
For example:
Item A has A pack of PO: BPA1, And the row price is 1 RMB.
Next, material number A uses the standard PO: SPO1, the row price is 1.2 yuan, the number of incoming data is 1000, batch LOT001.
Then the standard PO: SPO2 is used for item A. The row price is 1.5 yuan, and 2000 items are imported into the database. The row price is LOT002 in batches.
If the standard consignment function is used directly, the price of material transactions such as ownership transfer will be RMB 1 when item A is consumed.
The price is also 1 RMB.
After the customized modification, you can achieve the following results:
When item A is consumed, Because item A enables Batch Management, it must select A consumed batch.
If you select a batch of LOT001, the ownership transfer price (Transaction Cost) is 1.2 yuan, and the transfer price is also 1.2 yuan.
If you select a batch of LOT002, the ownership transfer price (Transaction Cost) is 1.5 yuan, and the transfer price is also 1.5 yuan.
The prices consumed by different warehouse receiving batches can be completely separated.
(2) procedures:
The main development point is to modify the system to make custom modifications to the inventory part that consumes the consignment when doing the Miscellaneous (or stock transfer.
General process:
For example, the User is used for collecting and distributing miscellaneous materials.
1. Each line is transferred (when the transaction is ready). First, determine whether the line must go through the consignment process (whether ownership transfer will automatically take place ).
Because the inventory of item A is mixed with the inventory of the supplier and the inventory of the company on the miscellaneous screen, according to the strict rule that preferentially consumes the inventory of the company, therefore, you must first determine whether it is a consignment stock transaction or a transaction that is completely a XYG stock.
For example, material A has A total of 5000 inventories, of which the company has 2000 inventories and 3000 suppliers.
If less than 2000 materials are sent, the inventory of the company must be deducted directly, and the consignment process is not required.
If more than 2000 messages are sent, an error is prompted and Its sending is prohibited. If the User is allowed to perform this operation, the program logic is difficult to proceed, because the consignment transaction price is the standard PO price, instead of sending and selling transactions, the price should follow the system standard cost (here I use the average mobile cost ). A material transaction cannot have two costs.
Because the transaction is conducted according to the organization + warehouse + goods location + goods number + batch, the stock of the materials for sale and the inventory of the company are separated from the stock of the company, therefore, there are very few different types of inventory for one database at the same time.
2 The first step above has determined whether the transaction is a consignment transaction line.
2.1 If not, the transaction will follow normal transactions without any special handling.
2.2 If it is a consignment stock transaction, the system will automatically transfer ownership. Therefore, at this time, the price of the standard PO should be updated based on the price of the request and the transaction cost.
1) Find the information of the corresponding PO (received for the first time) based on the batch)
Update the batch table and record the corresponding PO row ID.
Automatic update receiving method: the invoice matching option is automatically updated to the receiving R.
2) Find the price for receiving PO Based on Po_Line_ID
3) locate the PO (BPA) line of the corresponding package agreement based on the material ID, supplier ID, and supplier location ID, and then update the price of the BPA line directly according to the standard PO Line price.
4) we strongly recommend that you record the information found above to an intermediate control record table.
3. Call MTL_ONLINE_TRANSACTION_PUB.PROCESS_ONLINE to transfer the corresponding picking line.
4. If the account is transferred successfully and it is a consignment transaction line, the unit price information of the consignment line should be updated back to the original one.
Follow the steps above to achieve the goal of User.
Finance:
Because the unit price of the consignment miscellaneous transaction (including the price of the transaction line for automatic ownership transfer) is the unit price of the standard PO.
The price passed to the pay-as-you-go interface is also the unit price of the standard PO.
In order to make it easier for users to operate, I have also customized the AP standard invoice matching screen.
The main modification is that the default number of matched images = the number of consumed PO lines corresponding to the number received-the number of invoiced items.
(The standard is the number of received PO lines corresponding to the receipt code-the number of invoiced items)