PROCEDURE insert_formuladetail(
p_formula_id NUMBER ,
p_ingredient_id NUMBER ,
p_new_qty NUMBER ,
p_uom VARCHAR2 DEFAULT NULL,
p_return_status OUT VARCHAR2 ,
p_message OUT VARCHAR2 )
IS
l_api_version CONSTANT NUMBER := 1.0;
l_init_msg_list VARCHAR2 (1) := FND_API.G_TRUE ;
l_commit VARCHAR2 (1) := FND_API.G_FALSE;
l_called_from_forms VARCHAR2 (10) := ‘NO’;
l_return_status VARCHAR2 (1);
l_msg_count NUMBER ;
l_msg_data VARCHAR2 (400);
L_FORMULA_DETAIL_TBL GMD_FORMULA_DETAIL_PUB.FORMULA_INSERT_DTL_TBL_TYPE;
— l_formula_head fm_form_mst_b%rowtype;
L_LINE_NO NUMBER ;
— i pls_ integer := 1;
no_proc_finish EXCEPTION ;
BEGIN
IF (p_formula_id IS NULL) THEN
p_message := ‘P_formula_id parameter can not be empty ‘;
raise no_proc_finish;
END IF ;
BEGIN
SELECT *
INTO l_formula_head
FROM fm_form_mst_b fm
WHERE fm.formula_id = p_formula_id;
EXCEPTION
WHEN OTHERS THEN
p_message := ‘ Could not managed to find a formula ‘;
raise no_proc_finish;
END ;
BEGIN
SELECT MAX (fm.line_no)
INTO l_line_no
FROM fm_matl_dtl fm
WHERE fm.FORMULA_ID = p_formula_id
AND fm.line_type = -1;
EXCEPTION
WHEN OTHERS THEN
p_message := ‘ Could not find a string formula ‘;
raise no_proc_finish;
END ;
gme_common_pvt.set_who;
l_formula_detail_tbl(i).formula_id := p_formula_id;
l_formula_detail_tbl(i).formula_no := l_formula_head.formula_no;
l_formula_detail_tbl(i).formula_vers := l_formula_head.formula_vers;
l_formula_detail_tbl(i).line_type := -1;
l_formula_detail_tbl(i).line_no := l_line_no + 1;
l_formula_detail_tbl(i).inventory_item_id := p_ingredient_id;
l_formula_detail_tbl(i).QTY := p_new_qty;
L_FORMULA_DETAIL_TBL(I).RELEASE_TYPE := 1; — manually
IF (p_uom IS NOT NULL) THEN
l_formula_detail_tbl(i).DETAIL_UOM := p_uom;
END IF ;
gmd_formula_detail_pub.insert_formuladetail( p_api_version => l_api_version ,p_init_msg_list => l_init_msg_list ,p_commit => l_commit ,p_called_from_forms => l_called_from_forms ,x_return_status => l_return_status ,x_msg_count => l_msg_count ,x_msg_data => l_msg_data ,p_formula_detail_tbl => l_formula_detail_tbl );
IF l_return_status <> FND_API.g_ret_sts_success THEN
IF l_msg_count = 1 THEN
p_message := FND_MSG_PUB.get(1,’F’);
RAISE no_proc_finish;
ELSE
FOR l IN 1..l_msg_count
LOOP
FND_MSG_PUB.get (p_msg_index => l ,p_encoded => ‘ F ‘ ,p_data => p_message ,p_msg_index_out => l_msg_count);
END LOOP ;
RAISE no_proc_finish;
END IF ;
END IF ;
p_return_status := ‘ S ‘;
EXCEPTION
WHEN no_proc_finish THEN
p_return_status := ‘ E ‘;
WHEN OTHERS THEN
p_message := SQLERRM ;
p_return_status := ‘ E ‘;
END ;
1. Create a staging table say “MJIL_FORMULA_UPLOAD” whose structure is given below.
CREATE TABLE MJIL_FORMULA_UPLOAD
(
RECORD_TYPE VARCHAR2 (1 BYTE),
FORMULA_NO VARCHAR2 (32 BYTE),
FORMULA_VERS NUMBER,
FORMULA_TYPE NUMBER,
FORMULA_DESC1 VARCHAR2 (70 BYTE),
FORMULA_DESC2 VARCHAR2 (70 BYTE),
FORMULA_CLASS VARCHAR2 (32 BYTE),
FMCONTROL_CLASS VARCHAR2 (32 BYTE),
INACTIVE_IND NUMBER,
OWNER_ORGANIZATION_ID NUMBER,
TOTAL_INPUT_QTY NUMBER,
TOTAL_OUTPUT_QTY NUMBER,
YIELD_UOM VARCHAR2 (3 BYTE),
FORMULA_STATUS VARCHAR2 (30 BYTE),
OWNER_ID NUMBER (15),
FORMULA_ID NUMBER,
FORMULALINE_ID NUMBER,
LINE_TYPE NUMBER,
LINE_NO NUMBER,
ITEM_NO VARCHAR2 (2000 BYTE),
INVENTORY_ITEM_ID NUMBER,
REVISION VARCHAR2 (3 BYTE),
QTY NUMBER,
DETAIL_UOM VARCHAR2 (3 BYTE),
MASTER_FORMULA_ID NUMBER,
RELEASE_TYPE NUMBER,
SCRAP_FACTOR NUMBER,
SCALE_TYPE_HDR NUMBER,
SCALE_TYPE_DTL NUMBER,
COST_ALLOC NUMBER,
PHANTOM_TYPE NUMBER,
REWORK_TYPE NUMBER,
BUFFER_IND NUMBER,
BY_PRODUCT_TYPE VARCHAR2 (1 BYTE),
INGREDIENT_END_DATE DATE,
ATTRIBUTE1 VARCHAR2 (240 BYTE),
ATTRIBUTE2 VARCHAR2 (240 BYTE),
ATTRIBUTE3 VARCHAR2 (240 BYTE),
ATTRIBUTE4 VARCHAR2 (240 BYTE),
ATTRIBUTE5 VARCHAR2 (240 BYTE),
ATTRIBUTE6 VARCHAR2 (240 BYTE),
ATTRIBUTE7 VARCHAR2 (240 BYTE),
ATTRIBUTE8 VARCHAR2 (240 BYTE),
ATTRIBUTE9 VARCHAR2 (240 BYTE),
ATTRIBUTE10 VARCHAR2 (240 BYTE),
ATTRIBUTE11 VARCHAR2 (240 BYTE),
ATTRIBUTE12 VARCHAR2 (240 BYTE),
ATTRIBUTE13 VARCHAR2 (240 BYTE),
ATTRIBUTE14 VARCHAR2 (240 BYTE),
ATTRIBUTE15 VARCHAR2 (240 BYTE),
ATTRIBUTE16 VARCHAR2 (240 BYTE),
ATTRIBUTE17 VARCHAR2 (240 BYTE),
ATTRIBUTE18 VARCHAR2 (240 BYTE),
ATTRIBUTE19 VARCHAR2 (240 BYTE),
ATTRIBUTE20 VARCHAR2 (240 BYTE),
ATTRIBUTE21 VARCHAR2 (240 BYTE),
ATTRIBUTE22 VARCHAR2 (240 BYTE),
ATTRIBUTE23 VARCHAR2 (240 BYTE),
ATTRIBUTE24 VARCHAR2 (240 BYTE),
ATTRIBUTE25 VARCHAR2 (240 BYTE),
ATTRIBUTE26 VARCHAR2 (240 BYTE),
ATTRIBUTE27 VARCHAR2 (240 BYTE),
ATTRIBUTE28 VARCHAR2 (240 BYTE),
ATTRIBUTE29 VARCHAR2 (240 BYTE),
ATTRIBUTE30 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE1 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE2 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE3 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE4 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE5 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE6 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE7 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE8 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE9 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE10 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE11 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE12 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE13 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE14 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE15 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE16 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE17 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE18 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE19 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE20 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE21 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE22 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE23 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE24 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE25 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE26 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE27 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE28 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE29 VARCHAR2 (240 BYTE),
DTL_ATTRIBUTE30 VARCHAR2 (240 BYTE),
ATTRIBUTE_CATEGORY VARCHAR2 (30 BYTE),
DTL_ATTRIBUTE_CATEGORY VARCHAR2 (30 BYTE),
TPFORMULA_ID NUMBER,
IAFORMULA_ID NUMBER,
SCALE_MULTIPLE NUMBER,
CONTRIBUTE_YIELD_IND VARCHAR2 (1 BYTE),
SCALE_UOM VARCHAR2 (4 BYTE),
CONTRIBUTE_STEP_QTY_IND VARCHAR2 (1 BYTE),
SCALE_ROUNDING_VARIANCE NUMBER,
ROUNDING_DIRECTION NUMBER,
TEXT_CODE_HDR NUMBER,
TEXT_CODE_DTL NUMBER,
USER_ID NUMBER,
CREATION_DATE DATE,
CREATED_BY NUMBER (15),
LAST_UPDATED_BY NUMBER (15),
LAST_UPDATE_DATE DATE,
LAST_UPDATE_LOGIN NUMBER (15),
USER_NAME VARCHAR2 (100 BYTE),
DELETE_MARK NUMBER DEFAULT 0,
AUTO_PRODUCT_CALC VARCHAR2 (1 BYTE),
PROD_PERCENT NUMBER
);
2. Next create a procedure similar to the one given below.
CREATE OR REPLACE PROCEDURE APPS.CONA_FML_UPLOAD_PD (ERRBUF OUT VARCHAR2,
RETCODE OUT NUMBER)
IS
/******************************************************************************
NAME: CONA_FML_UPLOAD_PD
PURPOSE: Formula Uploading
REVISIONS:
Ver Date Author Description
——— ———- ————— ————————————
1.0 8/16/2013 1. Oracle User Created this procedure.
NOTES:
Automatically available Auto Replace Keywords:
Object Name: CONA_FML_UPLOAD_PD
******************************************************************************/
mjil_fml_tabtype apps.gmd_formula_pub.formula_insert_hdr_tbl_type;
CURSOR c1
IS
SELECT *
FROM MJIL_FORMULA_UPLOAD
WHERE formula_no NOT IN (SELECT formula_no FROM fm_form_mst);
cnt NUMBER;
l_return_status VARCHAR2 (1);
l_msg_count NUMBER;
l_msg_data VARCHAR2 (1000);
l_out_index NUMBER := 0;
l_user_id NUMBER := 1114;
l_responsibility_id NUMBER := 22883;
l_responsibility_app_id NUMBER;
BEGIN
FND_GLOBAL.
APPS_INITIALIZE (l_user_id, l_responsibility_id, l_responsibility_app_id);
cnt := 0;
FOR i IN c1
LOOP
cnt := cnt + 1;
mjil_fml_tabtype (cnt).record_type := i.record_type;
mjil_fml_tabtype (cnt).FORMULA_NO := TRIM (i.FORMULA_NO);
mjil_fml_tabtype (cnt).FORMULA_VERS := i.formula_vers;
mjil_fml_tabtype (cnt).formula_type := i.formula_type;
mjil_fml_tabtype (cnt).formula_desc1 := i.formula_desc1;
mjil_fml_tabtype (cnt).formula_desc2 := i.formula_desc2;
mjil_fml_tabtype (cnt).inactive_ind := i.inactive_ind;
mjil_fml_tabtype (cnt).OWNER_ORGANIZATION_ID := i.owner_organization_id;
mjil_fml_tabtype (cnt).total_input_qty := i.total_input_qty;
mjil_fml_tabtype (cnt).total_output_qty := i.total_output_qty;
mjil_fml_tabtype (cnt).formula_status := i.formula_status;
mjil_fml_tabtype (cnt).line_no := i.line_no;
mjil_fml_tabtype (cnt).line_type := i.line_type;
mjil_fml_tabtype (cnt).item_no := i.item_no;
mjil_fml_tabtype (cnt).qty := i.qty;
mjil_fml_tabtype (cnt).detail_uom := i.detail_uom;
mjil_fml_tabtype (cnt).release_type := i.release_Type;
mjil_fml_tabtype (cnt).scrap_factor := i.scrap_factor;
mjil_fml_tabtype (cnt).scale_type_hdr := i.scale_type_hdr;
mjil_fml_tabtype (cnt).scale_type_dtl := i.scale_type_dtl;
mjil_fml_tabtype (cnt).cost_alloc := i.cost_alloc;
mjil_fml_tabtype (cnt).phantom_type := i.phantom_type;
mjil_fml_tabtype (cnt).rework_type := i.rework_type;
mjil_fml_tabtype (cnt).buffer_ind := i.buffer_ind;
mjil_fml_tabtype (cnt).contribute_yield_ind := i.contribute_yield_ind;
mjil_fml_tabtype (cnt).contribute_step_qty_ind :=
i.contribute_step_qty_ind;
mjil_fml_tabtype (cnt).delete_mark := i.delete_mark;
END LOOP;
GMD_FORMULA_PUB.Insert_Formula (p_api_version => 1,
p_init_msg_list => FND_API.G_TRUE,
p_commit => FND_API.G_TRUE,
p_called_from_forms => ‘NO’,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
p_formula_header_tbl => mjil_fml_tabtype);
DBMS_OUTPUT.put_line (‘Return status – ‘ || l_return_status);
DBMS_OUTPUT.put_line (‘Message count – ‘ || l_msg_count);
FOR i IN 1 .. l_msg_count
LOOP
FND_MSG_PUB.get (p_msg_index => i,
p_encoded => ‘F’,
p_data => l_msg_data,
P_MSG_INDEX_OUT => l_out_index);
DBMS_OUTPUT.PUT_LINE (‘Message Text ‘ || l_msg_data);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (‘Return status – ‘ || l_return_status);
DBMS_OUTPUT.put_line (‘Message count – ‘ || l_msg_count);
FOR i IN 1 .. l_msg_count
LOOP
FND_MSG_PUB.get (p_msg_index => i,
p_encoded => ‘F’,
p_data => l_msg_data,
P_MSG_INDEX_OUT => l_out_index);
DBMS_OUTPUT.PUT_LINE (‘Message Text ‘ || l_msg_data);
END LOOP;
END;
3. Register and run the procedure in Oracle Apps.
The procedure to delete the row from the formula
PROCEDURE delete_formuladetail(
p_formula_id NUMBER ,
p_formulaline_id NUMBER ,
p_return_status OUT VARCHAR2 ,
p_message OUT VARCHAR2 )
IS
l_api_version CONSTANT NUMBER := 1.1;
l_init_msg_list VARCHAR2(1) := FND_API.G_TRUE ;
l_commit VARCHAR2(1) := FND_API.G_FALSE;
l_called_from_forms VARCHAR2(10) := ‘NO’;
l_return_status VARCHAR2(1) ;
l_msg_count NUMBER ;
l_msg_data VARCHAR2(400) ;
L_FORMULA_DETAIL_TBL GMD_FORMULA_DETAIL_PUB.FORMULA_UPDATE_DTL_TBL_TYPE;
— l_formula_head fm_form_mst_b%rowtype;
L_FORMULA_LINE FM_MATL_DTL%ROWTYPE;
— i pls_integer := 1;
NO_PROC_FINISH EXCEPTION ;
BEGIN
IF (P_FORMULA_ID IS NULL) THEN
P_MESSAGE := ‘ P_formula_id parameter can not be empty ‘;
RAISE NO_PROC_FINISH;
END IF ;
— получаем данные заголовка
BEGIN
SELECT *
INTO l_formula_head
FROM fm_form_mst_b fm
WHERE fm.formula_id = p_formula_id;
EXCEPTION
WHEN OTHERS THEN
p_message := ‘ Unable to find a formula ‘;
raise no_proc_finish;
END ;
— get the data string formula
BEGIN
SELECT *
INTO l_formula_line
FROM fm_matl_dtl fm
WHERE fm.formulaline_id = p_formulaline_id;
EXCEPTION
WHEN OTHERS THEN
p_message := ‘ Could not find a string formula ‘;
raise no_proc_finish;
END ;
gme_common_pvt.set_who;
l_formula_detail_tbl(i).RECORD_TYPE := ‘D’;
l_formula_detail_tbl(i).formula_id := p_formula_id;
l_formula_detail_tbl(i).formula_no := l_formula_head.formula_no;
l_formula_detail_tbl(i).formula_vers := l_formula_head.formula_vers;
l_formula_detail_tbl(i).formulaline_id := p_formulaline_id;
GMD_FORMULA_DETAIL_PUB.DELETE_FORMULADETAIL( P_API_VERSION => L_API_VERSION, P_INIT_MSG_LIST => L_INIT_MSG_LIST, P_COMMIT => L_COMMIT, P_CALLED_FROM_FORMS => L_CALLED_FROM_FORMS, X_RETURN_STATUS => L_RETURN_STATUS, X_MSG_COUNT => L_MSG_COUNT, X_MSG_DATA => L_MSG_DATA, P_FORMULA_DETAIL_TBL => L_FORMULA_DETAIL_TBL );
IF l_return_status != FND_API.g_ret_sts_success THEN
IF l_msg_count = 1 THEN
p_message := FND_MSG_PUB.get(1,’F’);
RAISE no_proc_finish;
ELSE
FOR l IN 1..l_msg_count
LOOP
FND_MSG_PUB.get (p_msg_index => l ,p_encoded => ‘F’ ,p_data => p_message ,p_msg_index_out => l_msg_count);
END LOOP ;
RAISE no_proc_finish;
END IF ;
END IF ;
p_return_status := ‘S’;
EXCEPTION
WHEN no_proc_finish THEN
p_return_status := ‘ E ‘;
WHEN OTHERS THEN
p_message := SQLERRM ;
p_return_status := ‘ E ‘;
END ;
Discrete manufacturing is a manufacturing process in which distinct items/products(which you can easily count, see and touch) are built or manufactured in discrete batches on manufacturing floor. It creates physical products which go directly to business and consumers, and assemblies that are used by other manufacturers. The resulting product is easily identifiable. It is different from process manufacturing where products are undifferentiated (can not tell the difference between one product and another) such as oil, natural gas and salt.
A typical characteristic of discrete manufacturing is the frequent switching from one manufactured product to another. The products are typically manufactured in individually defined lots, the sequence of work centers through production varying for each one of these. Costs are calculated on the basis of orders and individual lots
Discrete manufacturing is also characterized by individual or separate unit production. Units can be produced in low volume with very high complexity or high volumes of low complexity. Low volume/high complexity production results in the need for an extremely flexible manufacturing system that can improve quality and time-to-market speed while cutting costs. High volume/low complexity production puts high premiums on inventory controls, lead times and reducing or limiting materials costs and waste
Discrete manufacturing typically involves the sequence of work centers through which the products can pass during production. This sequence can be varied as per requirement. The order of work centers is determined in routing’s, which can often be very complex. There can be waiting times between the individual work centers. Also, semi-finished products are frequently placed in interim storage prior to further processing
Examples like Transportation equipment, Automobiles, toys, Computer and accessories and electronic products, consumer electronics, furniture, Lego Blocks, Appliances and other house hold items, Industrial and electrical equipment, Medical equipment and supplies, Fabricated metal, furniture, recycling, pencil ,light bulb, telephone, bicycle, Fuel Pump etc…
PROCESS MANUFACTURING
Process manufacturing is different from Discrete manufacturing. Manufacturing is not in discrete batches but is a process of pressing/mixing/chemical processing/heating/boiling liquid/semi liquid/solid and powder or raw materials. Once you manufacture a product by using process manufacturing, the output can not be brought to it’s original basic form
For example orange juice with sugar added cannot be put back in to the Orange and Sugar separately. On the other hand a computer manufactured by a discrete manufacturing process can be disassembled and the parts can be returned to stock to a large extent. Examples of process manufacturing are food products, beverages, paints & coatings, chemicals, specialty chemicals , pharmaceuticals, consumer packaged goods, Bulk drug pharmaceuticals, Nutraceutical, cosmeceutical and biotechnology industries. In Process Manufacturing, there are ingredients and not parts; there are formulas and not bill of materials; and bulk, not Unit of measure Each
FLOW MANUFACTURING
Flow Manufacturing is an innovative manufacturing method which synchronizes production with customer demand
Oracle Flow Manufacturing module supports the entire build-to-order manufacturing process which includes make-to-stock, configure-to-order, discrete-repetitive, assemble-to-order, and engineer-to-order manufacturing strategies and methods. It initiates schedules as soon as customer orders are received, and ensures shipment as soon as build is complete. Flow manufacturing employs pulls material using kanbans planning and back flushes material and costs upon completion. This in turn helps decrease inventories, optimize machine utilization, reduce response time to customer orders, and simplify shop floor activities.
Flow manufacturing production lines are designed to support the inter-mixed production of multiple products within a family on the same line at a constant rate. It can be used in Inventory module to replenish kanbans and in Work in Process to complete assemblies without having to create a job or a schedule (work order less job)
PROJECT MANUFACTURING
Large contracts or projects received by the companies can not be completely fulfilled by process manufacturing or discrete or repetitive manufacturing methods. It requires a separate manufacturing method known as project manufacturing. Project manufacturing meets demand driven production requirements for large contracts or projects. It allows you to plan, schedule, process and cost against a specific contract or a group of contracts or project for a specific customer.
Oracle Project Manufacturing supports companies in the Engineer-To-Order, Make-To-Order manufacturing strategies and Aerospace and Defense industries. These industries plan, track, procure, and cost based on project, contract, or Seiban numbers.
If Oracle Projects is installed and the Project References Enabled and Project Control Level parameters are set in the Organization Parameters window in Inventory module, you can assign project and, if required, task references to planned orders, jobs, purchase orders, sales orders, miscellaneous transaction and other entities within Oracle Manufacturing. If the Project Cost Collection Enabled parameter is also set in inventory organization parameters, you can optionally collect and transfer manufacturing cost to Oracle Projects module. Project costs are tracked by project/task and expenditure type.
It is a method of manufacturing which allows you, or your customer, to choose a base product at the very moment of ordering and then configure all the variable parameters (features) associated with that product from defined/available options. Based on these selections, configurable items on each quote or order typically generates the unique product configuration and manufacturing routing and/or bill of materials based on various features and options. Vendor/order receiving company subsequently builds that configuration dynamically upon receipt of the order. The ability of the vendor to make and deliver products customized to specific customer needs offers a powerful competitive edge over competitors.
CTO is an environment in which the product or service is assembled or kitted on receipt of the sales order. Oracle EBS supports the Configure to Order environment with a range of features in order entry, demand forecasting, master scheduling, production, shipping, and financial accounting. Configure to Order includes Pick-to-Order (PTO) and Assemble-to-Order (ATO) items, models, and hybrids. It supports building configurations using other configurations as sub-assemblies (multi-level configure-to-order), internal and external sourcing of ATO models at any level in the BOM and supports multi-level PTO/ATO hybrids.
It is a configure-to-order environment where the options and included items in a PTO model (finished good) appear on pick slips after you receive the sales order from customer. Pickers gather the options (based on selection rules), the predefined shippable products parts/components or service from their predefined locations using pick slip and then ship the order. It is assumed that options and components quantity are readily available. It is an alternative to manufacturing the parent item on a work order and then shipping it. There is no additional value added after getting the customer order
Example: Computer System (CPU, Monitor and Printer) A pick to order model can have PTO option class, PTO items, ATO model, ATO Option class and ATO option items. There can not be any PTO model, PTO option class or PTO item under an ATO model. You want to manufacture a promotional laptop computer, you need laptop computer, dikettes, accessories and battery pack. Here, you define PL computer as PTO model, laptop computer as ATO model, battery pack, diskette and accessories as purchase items
ASSEMBLE-TO-ORDER (ATO):
ATO simplifies the process of manufacturing finished goods. These goods are standard products and are often configured by customers from Bills of material, where you can define available options for unique product configurations. Based on forecasting, subassemblies are manufactured prior to receiving the customer order and when the order is received, the stocked subassemblies and components are assembled to make the finished products. It is an environment where you open a final assembly order to assemble items that customers orders. It is manufacturing method/strategy which allows a product to be made or service to be available to meet the needs of a specific customer order (i.e. If i am a customer i can build my own configuration from the available options). While producing finished goods on a large scale, this requires sophisticated planning processes which master schedules ATO models and options and then create work orders to build the unique configuration in WIP module while maintaining control of inventory, planning, cost accounting and Bills of Material. Planning process also anticipates changing demand for external or internal components or accessories and at the same time focuses on product customizations for individual customers
WIP, Order Management and Shipping modules support building and shipping of ATO configurations. A discrete job is created from a configuration. An assemble to order item/assembly then can be linked to a sales order. Assemble-to-order is also an item attribute in Inventory module that you can apply to standard, model, and option class items. In Bills of Material module, a model bill can be either assemble-to-order or pick-to-order and an option class bill can be either assemble-to-order or pick-to-order
Example: Automobiles, computer manufacturing…
MAKE TO STOCK (MTS):
In MTS, stock is created by companies for items without receiving an order from customer. Examples are manufacturing of refrigerators, washing nachines and Television sets. They are manufactured in a shop floor based on master schedule and stocked in finished goods subinventory until they are shipped to a cutomer
Example: You can Purchase certian goods from available vendors and manufacture some of the goods on your shop floor. and finally build a product and store and ship to your customer.
MAKE-TO-ORDER (MTO):
MTO are manufactured after receiving customer order, which means customer is willing to accept longer delivery period. The examples are commercial dish washers and refrigerators for hotels. These items are produced in a shop floor or in job shop depending up on the range of product families produced by the factory. In order to reduce lead time the factory often uses ready components to manufacture a product.
ENGINEER-TO-ORDER (ETO):
ETO item is built on the customer product specifications such as large commercial aircrafts. Such product can not be produces according to existing specifications of the company because some engineering skill is required to incorporate customer specifications in to the design of the final product. Companies using this manufacturing strategy, always quote longer lead time .The engineering and manufacturing costs involved are also high and are tracked for each order separately.
Latest Posts
- R12 – How to Handle NULL for :$FLEX$.VALUE_SET_NAME In Oracle ERPAugust 25, 2023 - 1:20 pm
- R12 – How to Delete Oracle AR TransactionsMarch 22, 2019 - 8:37 pm
- How to Define Custom Key Flexfield (KFF) in R12January 19, 2018 - 5:43 pm
- AutoLock Box Concepts In R12November 10, 2017 - 8:30 am
- R12 – java.sql.SQLException: Invalid column type in OAFSeptember 15, 2017 - 9:39 am
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Recent Comments