1. Custom Lot Generation
Prerequisites:
1- Create Custom Table to Store Lot and ORG and Item Type
Create Table GNP_LOT_SEQ1 --Create custome Table
(
SEQ number unique
,ITEM_TYPE NVARCHAR2(10)
,LOT_NO NVARCHAR2(30)
,LOT_DATE Date
,ORG NVARCHAR2(10)
,ITEM NVARCHAR2(50)
)
2- Create Sequence :
CREATE SEQUENCE GNP_L_SEQ -- to Create Sequence
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 2;
// to Reset Sequence use below Command
alter sequence GNP_L_SEQ restart start with 1 -- to Reset Sequence
3. 1- Generate Custom LOT for RAW and TRAW-GNP_GPI_GAP “for RAW”
WHEN-NEW-ITEM-INSTANCE
LOT_ENTRY.LOT_NUMBER
Condition:
(Select I.INVENTORY_ITEM_ID from MTL_SYSTEM_ITEMS_B I
Where
I.INVENTORY_ITEM_ID =:RCV_TRANSACTION.ITEM_ID
and I.ORGANIZATION_ID = (Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and I.ITEM_TYPE in ('RM','TRAW') )is not NULL
and :LOT_ENTRY.LOT_NUMBER is NULL
Action:
Item
LOT_ENTRY.LOT_NUMBER
Value
To Read from Custom Table:
=Select 'R'||(substr(L.LOT_NO,2,100)+1)
from GNP_LOT_SEQ1 L
Where L.SEQ =(Select MAX(L1.SEQ)
from GNP_LOT_SEQ1 L1
Where
L1.ORG = (Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and L1.ITEM_TYPE in ('RM','TRAW'))
and L.ORG= (Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and L.ITEM_TYPE in ('RM','TRAW')
5. To Read from Seeded Lot Table: Optional
=Select 'R'||(substr(L.LOT_NUMBER,2,100)+1)
from MTL_LOT_NUMBERS L, MTL_SYSTEM_ITEMS_B i
Where L.CREATION_DATE =(Select MAX(L.CREATION_DATE)
from MTL_LOT_NUMBERS L, MTL_SYSTEM_ITEMS_B i
Where I.INVENTORY_ITEM_ID = L.INVENTORY_ITEM_ID
and I.ORGANIZATION_ID = L.ORGANIZATION_ID
and I.ORGANIZATION_ID = 765
and L.ORIGINATION_TYPE in (3,4)
and I.ITEM_TYPE in ('RM','TRAW'))
and I.INVENTORY_ITEM_ID = L.INVENTORY_ITEM_ID
and I.ORGANIZATION_ID = L.ORGANIZATION_ID
and I.ORGANIZATION_ID = 765
and I.ITEM_TYPE in ('RM','TRAW')
6. For Packaging
2- Generate Custom LOT for PACK and TPACK-GNP-GAP-GPI
WHEN-NEW-ITEM-INSTANCE
LOT_ENTRY.LOT_NUMBER
(Select I.INVENTORY_ITEM_ID from MTL_SYSTEM_ITEMS_B I
Where
I.INVENTORY_ITEM_ID =:RCV_TRANSACTION.ITEM_ID
and I.ORGANIZATION_ID =(Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and I.ITEM_TYPE in ('PM','TPACK') )is not NULL
and :LOT_ENTRY.LOT_NUMBER is NULL
Action
Item
LOT_ENTRY.LOT_NUMBER
)
1
)+
''
,
Z]'
-
A
-
'[
||(regexp_replace(LOT_NO,
'P'
=765 then
.ORG
Case When L
Select
=
)
1
)+
''
,
Z]'
-
A
-
'[
(regexp_replace(LOT_NO,
then to_char
977
=
.ORG
L
When
)
1
)+
''
,
Z]'
-
A
-
'[
(regexp_replace(LOT_NO,
When L.ORG=767 then to_char
7. End
from GNP_LOT_SEQ1 L
Where L.SEQ =(Select MAX(L1.SEQ)
from GNP_LOT_SEQ1 L1
Where
L1.ORG = (Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and L1.ITEM_TYPE in ('RM','TRAW'))
and L.ORG= (Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and L.ITEM_TYPE in ('PM','TPACK')
3- Insert Lot to LOT Custom Table for RAW and PACK
WHEN-VALIDATE-RECORD
LOT_ENTRY
Condition:
(Select I.INVENTORY_ITEM_ID from MTL_SYSTEM_ITEMS_B I
Where
I.INVENTORY_ITEM_ID =:RCV_TRANSACTION.ITEM_ID
and I.ORGANIZATION_ID=(Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
8. When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and I.ITEM_TYPE in ('RM','TRAW','PM','TPACK') )is not NULL
Action:
Built-in
Execute Procedure:
='declare
C number:=GNP_L_SEQ.NEXTVAL;
F NVARCHAR2(10);
G NVARCHAR2(30):='''||${item.lot_entry.lot_number.value}||''';
H Date:=sysdate;
O NVARCHAR2(10):='''||${item.rcv_transaction.to_organization_id.value}||''';
M NVARCHAR2(50):='''||${item.LOT_CONTEXT.ITEM.value}||''';
begin
Select I.item_type into F from MTL_system_items_b I Where I.inventory_item_id='${item.rcv_transaction.item_id.value}'and
I.organization_id ='${item.rcv_transaction.to_organization_id.value}';
Insert into GNP_LOT_SEQ1 (SEQ,ITEM_TYPE,LOT_NO,LOT_DATE,ORG,ITEM) Select C,F,G,H,O,M from Dual where not exists (Select *
from GNP_LOT_SEQ1 Where (ITEM='${item.LOT_CONTEXT.ITEM.value}' and ORG='${item.rcv_transaction.to_organization_id.value}'
and LOT_NO='${item.lot_entry.lot_number.value}'));
end;
Commit'
4- Disable Lot Field for GNP-GAP-GPI
WHEN-NEW-ITEM-INSTANCE
LOT_ENTRY.LOT_NUMBER
Condition:
(Select I.INVENTORY_ITEM_ID from MTL_SYSTEM_ITEMS_B I
9. Where
I.INVENTORY_ITEM_ID =:RCV_TRANSACTION.ITEM_ID
and I.ORGANIZATION_ID =(Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and I.ITEM_TYPE in ('RM','TRAW','PM','TPACK') )is not NULL
Action:
Item
LOT_ENTRY.LOT_NUMBER
ENABLED (APPLICATIONS COVER)
False
UPDATE_ALLOWED (ITEM-INSTANCE)
False
Scenario: PO Receipt
Example : PO : 22104940
14. Customization:
1- Close Lot Field at TRANS LINE GNP-GAP-GPI
Condition:
WHEN-NEW-ITEM-INSTANCE
MTL_TRX_LINE.LOT_NUMBER
(Select I.INVENTORY_ITEM_ID from MTL_SYSTEM_ITEMS_B I
Where
I.INVENTORY_ITEM_ID =:mtl_trx_line.inventory_item_id
and I.ORGANIZATION_ID =(Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and I.ITEM_TYPE in ('RM','TRAW') )is not NULL
Action
Item
MTL_TRX_LINE.LOT_NUMBER
INSERT_ALLOWED
False
UPDATE_ALLOWED
False
15. 2- Disable Lot Field at Lot Entry Level
Condition:
LOT_ENTRY.LOT_NUMBER
(Select I.INVENTORY_ITEM_ID from MTL_SYSTEM_ITEMS_B I
Where
I.INVENTORY_ITEM_ID =:mtl_trx_line.inventory_item_id
and I.ORGANIZATION_ID =(Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and I.ITEM_TYPE in ('RM','TRAW') )is not NULL
Action:
Item
LOT_ENTRY.LOT_NUMBER
INSERT_ALLOWED
False
UPDATE_ALLOWED
False
3- Generate Custom LOT for RAW and TRAW-GNP-GPI-GAP
WHEN-NEW-ITEM-INSTANCE
LOT_ENTRY.LOT_NUMBER
(Select I.INVENTORY_ITEM_ID from MTL_SYSTEM_ITEMS_B I
Where
I.INVENTORY_ITEM_ID =:mtl_trx_line.inventory_item_id
and I.ORGANIZATION_ID =(Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and I.ITEM_TYPE in ('RM','TRAW') )is not NULL
and :lot_entry.lot_number is NULL
16. Action
Item
LOT_ENTRY.LOT_NUMBER
Value
= Select Case When L.ORG=765 then 'R'||(regexp_replace(LOT_NO, '[-A-Z]', '')+1)
When L.ORG =977 then to_char(regexp_replace(LOT_NO, '[-A-Z]', '')+1)
When L.ORG=767 then to_char(regexp_replace(LOT_NO, '[-A-Z]', '')+1)
End
from GNP_LOT_SEQ1 L
Where L.SEQ =(Select MAX(L1.SEQ)
from GNP_LOT_SEQ1 L1
Where
L1.ORG =(Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and L1.ITEM_TYPE in ('PM','TPACK'))
and L.ORG=(Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and L.ITEM_TYPE in ('PM','TPACK')
4- Insert LOT to GNP Custom Table
Condition:
WHEN-VALIDATE-RECORD
LOT_ENTRY
(Select I.INVENTORY_ITEM_ID from MTL_SYSTEM_ITEMS_B I
Where
I.INVENTORY_ITEM_ID =:mtl_trx_line.inventory_item_id
and I.ORGANIZATION_ID =(Select Case When apps.FND_PROFILE.VALUE('ORG_ID')=23 then 765
When apps.FND_PROFILE.VALUE('ORG_ID') =956 then 977
when apps.FND_PROFILE.VALUE('ORG_ID') =283 then 767
end from dual )
and I.ITEM_TYPE in ('RM','TRAW') )is not NULL
and :LOT_ENTRY.LOT_NUMBER is not NULL
Action
Built in
17. Execute Procedure
='declare
C number:=GNP_L_SEQ.NEXTVAL;
F NVARCHAR2(10);
G NVARCHAR2(30):='''||${item.lot_entry.lot_number.value}||''';
H Date:=sysdate;
O NVARCHAR2(10):='''||${item.mtl_trx_line.organization_id.value}||''';
M NVARCHAR2(50):='''||${item.LOT_CONTEXT.ITEM.value}||''';
begin
Select I.item_type into F from MTL_system_items_b I Where
I.inventory_item_id='${item.mtl_trx_line.inventory_item_id.value}'and I.organization_id
='${item.mtl_trx_line.organization_id.value}';
Insert into GNP_LOT_SEQ1 (SEQ,ITEM_TYPE,LOT_NO,LOT_DATE,ORG,ITEM) Select C,F,G,H,O,M
from Dual where not exists (Select * from GNP_LOT_SEQ1 Where
(ITEM='${item.LOT_CONTEXT.ITEM.value}' and ORG='${item.mtl_trx_line.organization_id.value}'))
;
end;
Commit'