164: -- 2.a. Validate all the actions that are for logical transactions.
165: -- Only these should be processed by this API
166:
167: IF (Nvl(p_mtl_trx_tbl(i).transaction_action_id,0) NOT IN
168: (INV_GLOBALS.G_ACTION_LOGICALISSUE,INV_GLOBALS.G_ACTION_LOGICALICSALES ,
169: INV_GLOBALS.G_ACTION_LOGICALICRECEIPT, INV_GLOBALS.G_ACTION_LOGICALDELADJ,
170: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN,INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
171: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT, INV_GLOBALS.G_ACTION_RETROPRICEUPDATE,
172: INV_GLOBALS.G_ACTION_LOGICALRECEIPT)) THEN
165: -- Only these should be processed by this API
166:
167: IF (Nvl(p_mtl_trx_tbl(i).transaction_action_id,0) NOT IN
168: (INV_GLOBALS.G_ACTION_LOGICALISSUE,INV_GLOBALS.G_ACTION_LOGICALICSALES ,
169: INV_GLOBALS.G_ACTION_LOGICALICRECEIPT, INV_GLOBALS.G_ACTION_LOGICALDELADJ,
170: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN,INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
171: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT, INV_GLOBALS.G_ACTION_RETROPRICEUPDATE,
172: INV_GLOBALS.G_ACTION_LOGICALRECEIPT)) THEN
173: IF (l_debug = 1) THEN
166:
167: IF (Nvl(p_mtl_trx_tbl(i).transaction_action_id,0) NOT IN
168: (INV_GLOBALS.G_ACTION_LOGICALISSUE,INV_GLOBALS.G_ACTION_LOGICALICSALES ,
169: INV_GLOBALS.G_ACTION_LOGICALICRECEIPT, INV_GLOBALS.G_ACTION_LOGICALDELADJ,
170: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN,INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
171: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT, INV_GLOBALS.G_ACTION_RETROPRICEUPDATE,
172: INV_GLOBALS.G_ACTION_LOGICALRECEIPT)) THEN
173: IF (l_debug = 1) THEN
174: debug_print('Transaction Action is invalid', 9);
167: IF (Nvl(p_mtl_trx_tbl(i).transaction_action_id,0) NOT IN
168: (INV_GLOBALS.G_ACTION_LOGICALISSUE,INV_GLOBALS.G_ACTION_LOGICALICSALES ,
169: INV_GLOBALS.G_ACTION_LOGICALICRECEIPT, INV_GLOBALS.G_ACTION_LOGICALDELADJ,
170: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN,INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
171: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT, INV_GLOBALS.G_ACTION_RETROPRICEUPDATE,
172: INV_GLOBALS.G_ACTION_LOGICALRECEIPT)) THEN
173: IF (l_debug = 1) THEN
174: debug_print('Transaction Action is invalid', 9);
175: END IF;
168: (INV_GLOBALS.G_ACTION_LOGICALISSUE,INV_GLOBALS.G_ACTION_LOGICALICSALES ,
169: INV_GLOBALS.G_ACTION_LOGICALICRECEIPT, INV_GLOBALS.G_ACTION_LOGICALDELADJ,
170: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN,INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
171: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT, INV_GLOBALS.G_ACTION_RETROPRICEUPDATE,
172: INV_GLOBALS.G_ACTION_LOGICALRECEIPT)) THEN
173: IF (l_debug = 1) THEN
174: debug_print('Transaction Action is invalid', 9);
175: END IF;
176: fnd_message.set_name('INV', 'INV_INT_TRXACTCODE');
219:
220: l_count := 0;
221:
222: IF (Nvl(p_mtl_trx_tbl(i).transaction_action_id,0) IN
223: (INV_GLOBALS.G_ACTION_LOGICALICSALES, INV_GLOBALS.G_ACTION_LOGICALICRECEIPT,
224: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
225: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT))THEN
226:
227: IF (p_mtl_trx_tbl(i).transfer_organization_id IS NULL) THEN
220: l_count := 0;
221:
222: IF (Nvl(p_mtl_trx_tbl(i).transaction_action_id,0) IN
223: (INV_GLOBALS.G_ACTION_LOGICALICSALES, INV_GLOBALS.G_ACTION_LOGICALICRECEIPT,
224: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
225: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT))THEN
226:
227: IF (p_mtl_trx_tbl(i).transfer_organization_id IS NULL) THEN
228: IF (l_debug = 1) THEN
221:
222: IF (Nvl(p_mtl_trx_tbl(i).transaction_action_id,0) IN
223: (INV_GLOBALS.G_ACTION_LOGICALICSALES, INV_GLOBALS.G_ACTION_LOGICALICRECEIPT,
224: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
225: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT))THEN
226:
227: IF (p_mtl_trx_tbl(i).transfer_organization_id IS NULL) THEN
228: IF (l_debug = 1) THEN
229: debug_print('Transfer Org. is null', 9);
298:
299: l_count := 0;
300:
301: IF (p_mtl_trx_tbl(i).transaction_action_id IN
302: (INV_GLOBALS.G_ACTION_LOGICALICSALES, INV_GLOBALS.G_ACTION_LOGICALICRECEIPT,
303: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
304: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT))THEN
305: BEGIN
306: SELECT COUNT(1) INTO l_count FROM MTL_SYSTEM_ITEMS MSI
299: l_count := 0;
300:
301: IF (p_mtl_trx_tbl(i).transaction_action_id IN
302: (INV_GLOBALS.G_ACTION_LOGICALICSALES, INV_GLOBALS.G_ACTION_LOGICALICRECEIPT,
303: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
304: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT))THEN
305: BEGIN
306: SELECT COUNT(1) INTO l_count FROM MTL_SYSTEM_ITEMS MSI
307: WHERE MSI.INVENTORY_ITEM_ID = p_mtl_trx_tbl(i).inventory_item_id
300:
301: IF (p_mtl_trx_tbl(i).transaction_action_id IN
302: (INV_GLOBALS.G_ACTION_LOGICALICSALES, INV_GLOBALS.G_ACTION_LOGICALICRECEIPT,
303: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
304: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT))THEN
305: BEGIN
306: SELECT COUNT(1) INTO l_count FROM MTL_SYSTEM_ITEMS MSI
307: WHERE MSI.INVENTORY_ITEM_ID = p_mtl_trx_tbl(i).inventory_item_id
308: AND MSI.ORGANIZATION_ID = p_mtl_trx_tbl(i).transfer_organization_id
331: END IF;
332:
333: -- 7. Retroactive Price update specific validations
334: IF (Nvl(p_mtl_trx_tbl(i).transaction_action_id,0) =
335: INV_GLOBALS.G_ACTION_RETROPRICEUPDATE AND
336: Nvl(p_mtl_trx_tbl(i).transaction_source_type_id,0) =
337: INV_GLOBALS.G_SOURCETYPE_PURCHASEORDER) THEN
338:
339: IF (p_mtl_trx_tbl(i).CONSUMPTION_RELEASE_ID IS NULL AND
333: -- 7. Retroactive Price update specific validations
334: IF (Nvl(p_mtl_trx_tbl(i).transaction_action_id,0) =
335: INV_GLOBALS.G_ACTION_RETROPRICEUPDATE AND
336: Nvl(p_mtl_trx_tbl(i).transaction_source_type_id,0) =
337: INV_GLOBALS.G_SOURCETYPE_PURCHASEORDER) THEN
338:
339: IF (p_mtl_trx_tbl(i).CONSUMPTION_RELEASE_ID IS NULL AND
340: p_mtl_trx_tbl(i).CONSUMPTION_PO_HEADER_ID IS NULL) THEN
341:
557:
558: --11. Validate transaction source type for sales order tied to drop
559: -- ment transactions.
560: IF (p_logical_trx_type_code = INV_LOGICAL_TRANSACTION_GLOBAL.G_LOGTRXCODE_DSDELIVER AND
561: (p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_salesorder AND
562: p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalissue)) THEN
563: -- drop shipments across multiple OUs
564: -- get the sales order tied to the logical transaction
565: -- get the start active and end active dates and make sure that
558: --11. Validate transaction source type for sales order tied to drop
559: -- ment transactions.
560: IF (p_logical_trx_type_code = INV_LOGICAL_TRANSACTION_GLOBAL.G_LOGTRXCODE_DSDELIVER AND
561: (p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_salesorder AND
562: p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalissue)) THEN
563: -- drop shipments across multiple OUs
564: -- get the sales order tied to the logical transaction
565: -- get the start active and end active dates and make sure that
566: -- transaction date is between them.
617: -- For types
618: /*******
619: IF (p_mtl_trx_tbl(i).transaction_quantity > 0) AND
620: (p_mtl_trx_tbl(i).transaction_action_id in
621: (INV_GLOBALS.G_ACTION_LOGICALISSUE, INV_GLOBALS.G_ACTION_LOGICALICSALES, INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN)) THEN
622: IF (l_debug = 1) THEN
623: debug_print('Invalid transaction quantity : quantity should be negative', 9);
624: END IF;
625: fnd_message.set_name('INV', 'INV_INVALID_QUANTITY');
628: END IF;
629:
630: IF (p_mtl_trx_tbl(i).transaction_quantity < 0) AND
631: (p_mtl_trx_tbl(i).transaction_action_id in
632: (INV_GLOBALS.G_ACTION_LOGICALICRECEIPT, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
633: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT, INV_GLOBALS.G_ACTION_LOGICALRECEIPT)) THEN
634: IF (l_debug = 1) THEN
635: debug_print('Invalid transaction quantity : quantity should be positive', 9);
636: END IF;
629:
630: IF (p_mtl_trx_tbl(i).transaction_quantity < 0) AND
631: (p_mtl_trx_tbl(i).transaction_action_id in
632: (INV_GLOBALS.G_ACTION_LOGICALICRECEIPT, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
633: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT, INV_GLOBALS.G_ACTION_LOGICALRECEIPT)) THEN
634: IF (l_debug = 1) THEN
635: debug_print('Invalid transaction quantity : quantity should be positive', 9);
636: END IF;
637: fnd_message.set_name('INV', 'INV_INVALID_QUANTITY');
821: -- 17. Validate cost groups for transfer organziations.
822: -- Cost groups should already be populated before validation.
823:
824: IF (p_mtl_trx_tbl(i).transaction_action_id IN
825: (INV_GLOBALS.G_ACTION_LOGICALICSALES, INV_GLOBALS.G_ACTION_LOGICALICRECEIPT,
826: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
827: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT))THEN
828:
829: IF (p_mtl_trx_tbl(i).transfer_cost_group_id IS NULL) THEN
822: -- Cost groups should already be populated before validation.
823:
824: IF (p_mtl_trx_tbl(i).transaction_action_id IN
825: (INV_GLOBALS.G_ACTION_LOGICALICSALES, INV_GLOBALS.G_ACTION_LOGICALICRECEIPT,
826: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
827: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT))THEN
828:
829: IF (p_mtl_trx_tbl(i).transfer_cost_group_id IS NULL) THEN
830: IF (l_debug = 1) THEN
823:
824: IF (p_mtl_trx_tbl(i).transaction_action_id IN
825: (INV_GLOBALS.G_ACTION_LOGICALICSALES, INV_GLOBALS.G_ACTION_LOGICALICRECEIPT,
826: INV_GLOBALS.G_ACTION_LOGICALICRCPTRETURN, INV_GLOBALS.G_ACTION_LOGICALICSALESRETURN,
827: INV_GLOBALS.G_ACTION_LOGICALEXPREQRECEIPT))THEN
828:
829: IF (p_mtl_trx_tbl(i).transfer_cost_group_id IS NULL) THEN
830: IF (l_debug = 1) THEN
831: debug_print('Invalid Cost Group in the Transfer Org.', 9);
943: -- order issue transaction
944:
945: l_count := 0;
946:
947: IF ((p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_salesorder AND
948: p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalissue) OR
949: (p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_rma AND
950: p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalreceipt)) THEN
951:
944:
945: l_count := 0;
946:
947: IF ((p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_salesorder AND
948: p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalissue) OR
949: (p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_rma AND
950: p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalreceipt)) THEN
951:
952: IF (p_mtl_trx_tbl(i).transaction_source_id IS NULL) THEN
945: l_count := 0;
946:
947: IF ((p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_salesorder AND
948: p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalissue) OR
949: (p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_rma AND
950: p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalreceipt)) THEN
951:
952: IF (p_mtl_trx_tbl(i).transaction_source_id IS NULL) THEN
953:
946:
947: IF ((p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_salesorder AND
948: p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalissue) OR
949: (p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_rma AND
950: p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalreceipt)) THEN
951:
952: IF (p_mtl_trx_tbl(i).transaction_source_id IS NULL) THEN
953:
954: IF (l_debug = 1) THEN
993: -- po receipt or a logical RTV transaction
994:
995: l_count := 0;
996:
997: IF ((p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_purchaseorder
998: AND p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalreceipt) OR
999: (p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_purchaseorder AND
1000: p_mtl_trx_tbl(i).transaction_action_id =
1001: inv_globals.g_action_logicalissue)) AND
994:
995: l_count := 0;
996:
997: IF ((p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_purchaseorder
998: AND p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalreceipt) OR
999: (p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_purchaseorder AND
1000: p_mtl_trx_tbl(i).transaction_action_id =
1001: inv_globals.g_action_logicalissue)) AND
1002: (p_logical_trx_type_code = INV_LOGICAL_TRANSACTION_GLOBAL.G_LOGTRXCODE_DSRECEIPT) THEN
995: l_count := 0;
996:
997: IF ((p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_purchaseorder
998: AND p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalreceipt) OR
999: (p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_purchaseorder AND
1000: p_mtl_trx_tbl(i).transaction_action_id =
1001: inv_globals.g_action_logicalissue)) AND
1002: (p_logical_trx_type_code = INV_LOGICAL_TRANSACTION_GLOBAL.G_LOGTRXCODE_DSRECEIPT) THEN
1003:
997: IF ((p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_purchaseorder
998: AND p_mtl_trx_tbl(i).transaction_action_id = inv_globals.g_action_logicalreceipt) OR
999: (p_mtl_trx_tbl(i).transaction_source_type_id = inv_globals.g_sourcetype_purchaseorder AND
1000: p_mtl_trx_tbl(i).transaction_action_id =
1001: inv_globals.g_action_logicalissue)) AND
1002: (p_logical_trx_type_code = INV_LOGICAL_TRANSACTION_GLOBAL.G_LOGTRXCODE_DSRECEIPT) THEN
1003:
1004: IF ((p_mtl_trx_tbl(i).transaction_source_id IS NULL) OR (p_mtl_trx_tbl(i).rcv_transaction_id IS NULL)) THEN
1005:
1093:
1094: END IF;
1095:
1096: IF (p_mtl_trx_tbl(i).transaction_action_id IN
1097: (inv_globals.g_action_logicalicsales,
1098: inv_globals.g_action_logicalicreceipt,
1099: inv_globals.g_action_logicalicrcptreturn,
1100: inv_globals.g_action_logicalicsalesreturn)) THEN
1101:
1094: END IF;
1095:
1096: IF (p_mtl_trx_tbl(i).transaction_action_id IN
1097: (inv_globals.g_action_logicalicsales,
1098: inv_globals.g_action_logicalicreceipt,
1099: inv_globals.g_action_logicalicrcptreturn,
1100: inv_globals.g_action_logicalicsalesreturn)) THEN
1101:
1102: IF (p_mtl_trx_tbl(i).invoiced_flag <> 'N') THEN
1095:
1096: IF (p_mtl_trx_tbl(i).transaction_action_id IN
1097: (inv_globals.g_action_logicalicsales,
1098: inv_globals.g_action_logicalicreceipt,
1099: inv_globals.g_action_logicalicrcptreturn,
1100: inv_globals.g_action_logicalicsalesreturn)) THEN
1101:
1102: IF (p_mtl_trx_tbl(i).invoiced_flag <> 'N') THEN
1103:
1096: IF (p_mtl_trx_tbl(i).transaction_action_id IN
1097: (inv_globals.g_action_logicalicsales,
1098: inv_globals.g_action_logicalicreceipt,
1099: inv_globals.g_action_logicalicrcptreturn,
1100: inv_globals.g_action_logicalicsalesreturn)) THEN
1101:
1102: IF (p_mtl_trx_tbl(i).invoiced_flag <> 'N') THEN
1103:
1104: IF (l_debug = 1) THEN