DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMD_FORMULA_DETAIL_PVT

Source


1 PACKAGE BODY GMD_FORMULA_DETAIL_PVT AS
2 /* $Header: GMDVFMDB.pls 120.2.12000000.2 2007/02/09 12:43:07 kmotupal ship $ */
3 
4    G_PKG_NAME CONSTANT  VARCHAR2(30)    := 'GMD_FORMULA_DETAIL_PVT';
5 
6    --Bug 3222090, NSRIVAST 20-FEB-2004, BEGIN
7 --Forward declaration.
8    FUNCTION set_debug_flag RETURN VARCHAR2;
9    l_debug VARCHAR2(1) := set_debug_flag;
10 
11    FUNCTION set_debug_flag RETURN VARCHAR2 IS
12    l_debug VARCHAR2(1):= 'N';
13    BEGIN
14     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
15       l_debug := 'Y';
16     END IF;
17     RETURN l_debug;
18    END set_debug_flag;
19 --Bug 3222090, NSRIVAST 20-FEB-2004, END
20 
21   /* ======================================================================== */
22   /* Procedure:                                                               */
23   /*   Insert_FormulaDetail                                                   */
24   /*                                                                          */
25   /* DESCRIPTION:                                                             */
26   /*   This PL/SQL procedure is responsible for                               */
27   /*   inserting a formula detail.                                            */
28   /* HISTORY:                                                                 */
29   /*    Kapil ME Bug# 5716318 - Added the new Percentage Fields for Auto -Prod*/
30   /*                            ME.                                           */
31   /* ======================================================================== */
32   PROCEDURE Insert_FormulaDetail
33   (  p_api_version          IN          NUMBER
34      ,p_init_msg_list       IN          VARCHAR2
35      ,p_commit              IN          VARCHAR2
36      ,x_return_status       OUT NOCOPY  VARCHAR2
37      ,x_msg_count           OUT NOCOPY  NUMBER
38      ,x_msg_data            OUT NOCOPY  VARCHAR2
39      ,p_formula_detail_rec  IN          fm_matl_dtl%ROWTYPE
40   )
41   IS
42      /*  Local Variables definitions */
43      l_api_name      CONSTANT    VARCHAR2(30)  := 'INSERT_FORMULADETAIL';
44      l_api_version   CONSTANT    NUMBER        := 1.0;
45      X_msg_cnt       NUMBER;
46      X_msg_dat       VARCHAR2(100);
47      X_status        VARCHAR2(1);
48      l_product_qty   NUMBER;
49      l_ing_qty       NUMBER;
50      l_uom           mtl_units_of_measure.unit_of_measure%TYPE;
51 
52   BEGIN
53      /*  Define Savepoint */
54      SAVEPOINT  Insert_FormulaDetail_PVT;
55 
56      /*  Standard Check for API compatibility */
57      IF NOT FND_API.Compatible_API_Call( l_api_version
58                                          ,p_api_version
59                                          ,l_api_name
60                                          ,G_PKG_NAME  )
61      THEN
62        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
63      END IF;
64 
65      /* Initialize message list if p_init_msg_list is set to TRUE */
66      IF FND_API.to_Boolean( p_init_msg_list ) THEN
67         FND_MSG_PUB.initialize;
68      END IF;
69 
70      /* Initialize API return status to success */
71      x_return_status := FND_API.G_RET_STS_SUCCESS;
72 
73      /* API Body */
74      /* Later on this insert should be changed to */
75      /* make insert on business view as opposed to tables directly. */
76 
77        IF (l_debug = 'Y') THEN
78           gmd_debug.put_line('    ');
79        END IF;
80 
81      IF (l_debug = 'Y') THEN
82          gmd_debug.put_line(' In formula detail Pvt - About to insert formulaline id = '
83                   ||p_formula_detail_rec.formulaline_id);
84      END IF;
85 
86      INSERT INTO fm_matl_dtl
87        (formulaline_id,
88         formula_id,
89         line_type,
90         line_no,
91         inventory_item_id,
92 	organization_id,
93 	revision,
94         qty,
95         detail_uom,
96         release_type,
97         scrap_factor,
98         scale_type,
99         cost_alloc,
100         phantom_type,
101         buffer_ind,
102         rework_type,
103         text_code,
104         tpformula_id,
105         iaformula_id,
106         scale_multiple,
107         contribute_yield_ind,
108         scale_uom,
109         contribute_step_qty_ind ,
110         scale_rounding_variance,
111         rounding_direction,
112         /*Bug 2509076 - Thomas Daniel QM Integration */
113         by_product_type,
114         ingredient_end_date, --Bug 4479101
115         created_by,
116         creation_date,
117         last_update_date,
118         last_updated_by,
119         last_update_login,
120         attribute1, attribute2,
121         attribute3, attribute4,
122         attribute5, attribute6,
123         attribute7, attribute8,
124         attribute9, attribute10,
125         attribute11, attribute12,
126         attribute13, attribute14,
127         attribute15, attribute16,
128         attribute17, attribute18,
129         attribute19, attribute20,
130         attribute21, attribute22,
131         attribute23, attribute24,
132         attribute25, attribute26,
133         attribute27, attribute28,
134         attribute29, attribute30,
135         attribute_category,
136         prod_percent)
137      VALUES
138        (p_formula_detail_rec.formulaline_id,
139         p_formula_detail_rec.formula_id,
140         p_formula_detail_rec.line_type,
141         p_formula_detail_rec.line_no ,
142         p_formula_detail_rec.inventory_item_id,
143 	p_formula_detail_rec.organization_id,
144         p_formula_detail_rec.revision,
145         p_formula_detail_rec.qty,
146         p_formula_detail_rec.detail_uom,
147         p_formula_detail_rec.release_type,
148         p_formula_detail_rec.scrap_factor,
149         p_formula_detail_rec.scale_type,
150         p_formula_detail_rec.cost_alloc,
151         p_formula_detail_rec.phantom_type,
152         p_formula_detail_rec.buffer_ind,
153         p_formula_detail_rec.rework_type,
154         p_formula_detail_rec.text_code,
155         p_formula_detail_rec.tpformula_id,
156         p_formula_detail_rec.iaformula_id,
157         p_formula_detail_rec.scale_multiple,
158         p_formula_detail_rec.contribute_yield_ind,
159         p_formula_detail_rec.scale_uom,
160         p_formula_detail_rec.contribute_step_qty_ind ,
161         p_formula_detail_rec.scale_rounding_variance  ,
162         p_formula_detail_rec.rounding_direction  ,
163         /*Bug 2509076 - Thomas Daniel  QM Integration */
164         p_formula_detail_rec.by_product_type,
165         p_formula_detail_rec.ingredient_end_date, --Bug 4479101
166         p_formula_detail_rec.created_by,
167         p_formula_detail_rec.creation_date,
168         p_formula_detail_rec.last_update_date,
169         p_formula_detail_rec.last_updated_by,
170         p_formula_detail_rec.last_update_login,
171         p_formula_detail_rec.attribute1, p_formula_detail_rec.attribute2,
172         p_formula_detail_rec.attribute3, p_formula_detail_rec.attribute4,
173         p_formula_detail_rec.attribute5, p_formula_detail_rec.attribute6,
174         p_formula_detail_rec.attribute7, p_formula_detail_rec.attribute8,
175         p_formula_detail_rec.attribute9, p_formula_detail_rec.attribute10,
176         p_formula_detail_rec.attribute11, p_formula_detail_rec.attribute12,
177         p_formula_detail_rec.attribute13, p_formula_detail_rec.attribute14,
178         p_formula_detail_rec.attribute15, p_formula_detail_rec.attribute16,
179         p_formula_detail_rec.attribute17, p_formula_detail_rec.attribute18,
180         p_formula_detail_rec.attribute19, p_formula_detail_rec.attribute20,
181         p_formula_detail_rec.attribute21, p_formula_detail_rec.attribute22,
182         p_formula_detail_rec.attribute23, p_formula_detail_rec.attribute24,
183         p_formula_detail_rec.attribute25, p_formula_detail_rec.attribute26,
184         p_formula_detail_rec.attribute27, p_formula_detail_rec.attribute28,
185         p_formula_detail_rec.attribute29, p_formula_detail_rec.attribute30,
186         p_formula_detail_rec.attribute_category,
187         p_formula_detail_rec.prod_percent);
188      /* END API Body */
189      IF (l_debug = 'Y') THEN
190          gmd_debug.put_line(' In formula detail Pvt - After insert formulaline insert ');
191      END IF;
192 
193      IF (l_debug = 'Y') THEN
194          gmd_debug.put_line(' In formula detail Pvt - About to recalculate TOQ ');
195      END IF;
196      /* Recalculate the TOQ and TIQ */
197      GMD_COMMON_VAL.calculate_total_qty(
198                   formula_id       => p_formula_detail_rec.formula_id,
199                   x_product_qty    => l_product_qty ,
200                   x_ingredient_qty => l_ing_qty ,
201                   x_uom            => l_uom ,
202                   x_return_status  => x_return_status ,
203                   x_msg_count      => X_msg_cnt ,
204                   x_msg_data       => x_msg_dat );
205 
206      IF (l_debug = 'Y') THEN
207          gmd_debug.put_line(' In formula detail Pvt - Update header with TOQ '
208                   ||' TIQ = '
209                   ||l_ing_qty
210                   ||' TOQ =  '
211                   ||l_product_qty);
212      END IF;
213      /* Update formula header table with TOQ and TIQ */
214      UPDATE fm_form_mst_b
215         SET total_output_qty = l_product_qty,
216             total_input_qty  = l_ing_qty,
217             yield_uom        = l_uom
218       WHERE formula_id       = p_formula_detail_rec.formula_id;
219 
220      /* Check if p_commit is set to TRUE */
221      IF FND_API.To_Boolean(p_commit) THEN
222         Commit;
223      END IF;
224 
225      /* Get the message count and information */
226      FND_MSG_PUB.Count_And_Get (
227                  p_count => x_msg_count,
228                  p_data  => x_msg_data );
229   EXCEPTION
230      WHEN FND_API.G_EXC_ERROR THEN
231        ROLLBACK to Insert_FormulaDetail_PVT;
232        x_return_status := FND_API.G_RET_STS_ERROR;
233        FND_MSG_PUB.Count_And_Get (
234                   p_count => x_msg_count,
235                   p_data  => x_msg_data   );
236 
237      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
238        ROLLBACK to Insert_FormulaDetail_PVT;
239        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
240        FND_MSG_PUB.Count_And_Get (
241                    p_count => x_msg_count,
242                    p_data  => x_msg_data   );
243 
244      WHEN OTHERS THEN
245        ROLLBACK to Insert_FormulaDetail_PVT;
246        fnd_msg_pub.add_exc_msg (G_pkg_name, l_api_name);
247        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
248        IF (l_debug = 'Y') THEN
249            gmd_debug.put_line(' In Formula Detail Pvt - In OTHERS Exception Section  '
250                    ||' - '
251                    ||x_return_status);
252        END IF;
253 
254   END Insert_FormulaDetail;
255 
256   /* ======================================================================== */
257   /* Procedure:                                                               */
258   /*   Update_FormulaDetail                                                   */
259   /*                                                                          */
260   /* DESCRIPTION:                                                             */
261   /*   This PL/SQL procedure is responsible for updating a formula.           */
262   /*   details.                                                               */
263   /* HISTORY:                                                                 */
264   /*    Kapil ME Bug# 5716318 - Added the new Percentage Fields for Auto -Prod*/
265   /*                            ME.                                           */
266   /* ======================================================================== */
267   PROCEDURE Update_FormulaDetail
268   (  p_api_version            IN           NUMBER
269      ,p_init_msg_list         IN           VARCHAR2
270      ,p_commit                IN           VARCHAR2
271      ,x_return_status         OUT NOCOPY   VARCHAR2
272      ,x_msg_count             OUT NOCOPY   NUMBER
273      ,x_msg_data              OUT NOCOPY   VARCHAR2
274      ,p_formula_detail_rec    IN           fm_matl_dtl%ROWTYPE
275   )
276   IS
277 
278      /*  Local Variables definitions */
279      l_api_name              CONSTANT    VARCHAR2(30)  := 'UPDATE_FORMULADETAIL';
280      l_api_version           CONSTANT    NUMBER        := 1.0;
281      l_line_no                           fm_matl_dtl.line_no%TYPE;
282      l_line_type                         fm_matl_dtl.line_type%TYPE;
283      l_qty                               fm_matl_dtl.qty%TYPE;
284      l_item_um                           fm_matl_dtl.detail_uom%TYPE;
285      l_release_type                      fm_matl_dtl.release_type%TYPE;
286      l_scrap_factor                      fm_matl_dtl.scrap_factor%TYPE;
287      l_scale_type                        fm_matl_dtl.scale_type%TYPE;
288      l_phantom_type                      fm_matl_dtl.phantom_type%TYPE;
289      X_msg_cnt                           NUMBER;
290      X_msg_dat                           VARCHAR2(100);
291      X_status                            VARCHAR2(1);
292      l_product_qty                       NUMBER;
293      l_ing_qty                           NUMBER;
294      l_uom                               VARCHAR2(3);
295      l_return_val                        NUMBER := 0;
296 
297      CURSOR C_get_orgid (V_formula_id NUMBER) IS
298        SELECT owner_organization_id
299        FROM   fm_form_mst_b
300        WHERE  formula_id = V_formula_id;
301     l_org_id	NUMBER;
302 
303   BEGIN
304      /*  Define Savepoint */
305      SAVEPOINT  Update_FormulaDetail_PVT;
306 
307      /*  Standard Check for API compatibility */
308      IF NOT FND_API.Compatible_API_Call  ( l_api_version
309                                            ,p_api_version
310                                            ,l_api_name
311                                            ,G_PKG_NAME  )
312      THEN
313         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
314      END IF;
315 
316      /*  Initialize message list if p_init_msg_list is set to TRUE */
317      IF FND_API.to_Boolean( p_init_msg_list ) THEN
318         FND_MSG_PUB.initialize;
319      END IF;
320      /*  Initialize API return status to success */
321      x_return_status := FND_API.G_RET_STS_SUCCESS;
322 
323      IF (p_formula_detail_rec.organization_id IS NULL) THEN
324        OPEN C_get_orgid (p_formula_detail_rec.formula_id);
325        FETCH C_get_orgid INTO l_org_id;
326        CLOSE C_get_orgid;
327      ELSE
328        l_org_id := p_formula_detail_rec.organization_id;
329      END IF;
330 
331      /*  API body */
332      /*  Later on to be changed to update a business view */
333      /*  and not a table. */
334      IF (l_debug = 'Y') THEN
335          gmd_debug.put_line(' In Formula Detail PVT - '
336                       ||' Before the update of fm_matl_dtl   '
337                       ||' formulaline id - '
338                       ||p_formula_detail_rec.formulaline_id
339                       ||' line no '
340                       ||p_formula_detail_rec.line_no
341                       ||' line_type '
342                       ||p_formula_detail_rec.line_type
343                       ||' Contrib in d '
344                       ||p_formula_detail_rec.contribute_yield_ind
345                       ||' - '
346                       ||x_return_status);
347      END IF;
348      UPDATE fm_matl_dtl SET
349         line_no                  = p_formula_detail_rec.line_no,
350         line_type                = p_formula_detail_rec.line_type,
351         qty                      = p_formula_detail_rec.qty,
352 	organization_id          = l_org_id,
353 	revision	         = p_formula_detail_rec.revision,
354         detail_uom               = p_formula_detail_rec.detail_uom,
355         release_type             = p_formula_detail_rec.release_type,
356         scale_type               = p_formula_detail_rec.scale_type,
357         scrap_factor             = p_formula_detail_rec.scrap_factor,
358         cost_alloc               = p_formula_detail_rec.cost_alloc,
359         phantom_type             = p_formula_detail_rec.phantom_type,
360         buffer_ind               = p_formula_detail_rec.buffer_ind,
361         rework_type              = p_formula_detail_rec.rework_type,
362         tpformula_id             = p_formula_detail_rec.tpformula_id    ,
363         iaformula_id             = p_formula_detail_rec.iaformula_id    ,
364         scale_multiple           = p_formula_detail_rec.scale_multiple  ,
365         contribute_yield_ind     = p_formula_detail_rec.contribute_yield_ind ,
366         scale_uom                = p_formula_detail_rec.scale_uom ,
367         contribute_step_qty_ind  = p_formula_detail_rec.contribute_step_qty_ind,
368         scale_rounding_variance  = p_formula_detail_rec.scale_rounding_variance,
369         rounding_direction       = p_formula_detail_rec.rounding_direction,
370         /*Bug 2509076 - Thomas Daniel  QM Integration */
371         by_product_type          = p_formula_detail_rec.by_product_type,
372         ingredient_end_date      = p_formula_detail_rec.ingredient_end_date, --bug 4479101
373         text_code                = p_formula_detail_rec.text_code,
374         last_update_date         = p_formula_detail_rec.last_update_date,
375         last_updated_by          = p_formula_detail_rec.last_updated_by,
376         last_update_login        = p_formula_detail_rec.last_update_login,
377         attribute1               = p_formula_detail_rec.attribute1,
378         attribute2               = p_formula_detail_rec.attribute2,
379         attribute3               = p_formula_detail_rec.attribute3,
380         attribute4               = p_formula_detail_rec.attribute4,
381         attribute5               = p_formula_detail_rec.attribute5,
382         attribute6               = p_formula_detail_rec.attribute6,
383         attribute7               = p_formula_detail_rec.attribute7,
384         attribute8               = p_formula_detail_rec.attribute8,
385         attribute9               = p_formula_detail_rec.attribute9,
386         attribute10              = p_formula_detail_rec.attribute10,
387         attribute11              = p_formula_detail_rec.attribute11,
388         attribute12              = p_formula_detail_rec.attribute12,
389         attribute13              = p_formula_detail_rec.attribute13,
390         attribute14              = p_formula_detail_rec.attribute14,
391         attribute15              = p_formula_detail_rec.attribute15,
392         attribute16              = p_formula_detail_rec.attribute16,
393         attribute17              = p_formula_detail_rec.attribute17,
394         attribute18              = p_formula_detail_rec.attribute18,
395         attribute19              = p_formula_detail_rec.attribute19,
396         attribute20              = p_formula_detail_rec.attribute20,
397         attribute21              = p_formula_detail_rec.attribute21,
398         attribute22              = p_formula_detail_rec.attribute22,
399         attribute23              = p_formula_detail_rec.attribute23,
400         attribute24              = p_formula_detail_rec.attribute24,
401         attribute25              = p_formula_detail_rec.attribute25,
402         attribute26              = p_formula_detail_rec.attribute26,
403         attribute27              = p_formula_detail_rec.attribute27,
404         attribute28              = p_formula_detail_rec.attribute28,
405         attribute29              = p_formula_detail_rec.attribute29,
406         attribute30              = p_formula_detail_rec.attribute30,
407         attribute_category       = p_formula_detail_rec.attribute_category,
408         prod_percent             = p_formula_detail_rec.prod_percent
409      WHERE
410         formulaline_id = p_formula_detail_rec.formulaline_id;
411 
412      /* End API body */
413      /* Calculate the total input and output qty and update the formula header table */
414       IF (l_debug = 'Y') THEN
415          gmd_debug.put_line(' In Formula Detail PVT - '
416                       ||' Before the TOQ calculation   '
417                                  ||' - '
418                                  ||x_return_status);
419      END IF;
420      GMD_COMMON_VAL.calculate_total_qty(
421                     FORMULA_ID       => p_formula_detail_rec.formula_id,
422                     X_PRODUCT_QTY    => l_product_qty ,
423                     X_INGREDIENT_QTY => l_ing_qty ,
424                     X_UOM            => l_uom ,
425                     X_RETURN_STATUS  => x_return_status ,
426                     X_MSG_COUNT      => X_msg_cnt ,
427                     X_MSG_DATA       => x_msg_dat );
428 
429      IF (l_debug = 'Y') THEN
430          gmd_debug.put_line(' In Formula Detail PVT - '
431                       ||' Before the update of fm header with toq and tiq =   '
432                              ||' TOQ = '
433                              ||l_product_qty
434                              ||' TIQ = '
435                              ||l_ing_qty
436                              ||' - '
437                              ||x_return_status);
438      END IF;
439      UPDATE  fm_form_mst_b
440      SET     total_output_qty = l_product_qty,
441              total_input_qty = l_ing_qty,
442              yield_uom = l_uom
443      WHERE   formula_id = p_formula_detail_rec.formula_id;
444 
445 
446      /* Check if p_commit is set to TRUE */
447      IF FND_API.To_Boolean( p_commit ) THEN
448         Commit;
449      END IF;
450 
451      /*  Get the message count and information */
452      FND_MSG_PUB.Count_And_Get (
453                      p_count => x_msg_count,
454                      p_data  => x_msg_data   );
455 
456 
457   EXCEPTION
458      WHEN FND_API.G_EXC_ERROR THEN
459           ROLLBACK to Update_FormulaDetail_PVT;
460           x_return_status := FND_API.G_RET_STS_ERROR;
461           FND_MSG_PUB.Count_And_Get (
462                           p_count => x_msg_count,
463                           p_data  => x_msg_data   );
464 
465      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
466           ROLLBACK to Update_FormulaDetail_PVT;
467           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
468           FND_MSG_PUB.Count_And_Get (
469                           p_count => x_msg_count,
470                           p_data  => x_msg_data   );
471 
472      WHEN OTHERS THEN
473           ROLLBACK to Update_FormulaDetail_PVT;
474           fnd_msg_pub.add_exc_msg (G_pkg_name, l_api_name);
475           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
476         IF (l_debug = 'Y') THEN
477            gmd_debug.put_line(' In Formula Detail Pvt - In OTHERS Exception Section  '
478                 ||' - '
479                 ||x_return_status);
480        END IF;
481   END Update_FormulaDetail;
482 
483   /* ============================================= */
484   /* Procedure:                                    */
485   /*   Delete_FormulaDetail                        */
486   /*                                               */
487   /* DESCRIPTION:                                  */
488   /*   This PL/SQL procedure is responsible for    */
489   /*   deleting formula detail.                    */
490   /* HISTORY:                                      */
491   /* ============================================= */
492      PROCEDURE Delete_FormulaDetail
493      (  p_api_version           IN      NUMBER                                  ,
494         p_init_msg_list         IN      VARCHAR2                                ,
495         p_commit                IN      VARCHAR2                                ,
496         x_return_status         OUT NOCOPY      VARCHAR2                                ,
497         x_msg_count             OUT NOCOPY      NUMBER                                  ,
498         x_msg_data              OUT NOCOPY      VARCHAR2                                ,
499         p_formula_detail_rec    IN      fm_matl_dtl%ROWTYPE
500      )
501      IS
502 
503         /*  Local Variables definitions */
504         l_api_name              CONSTANT    VARCHAR2(30)  := 'DELETE_FORMULADETAIL';
505         l_api_version           CONSTANT    NUMBER        := 1.0;
506 
507         X_msg_cnt       NUMBER;
508         X_msg_dat       VARCHAR2(100);
509         X_status varchar2(1);
510         l_product_qty NUMBER;
511         l_ing_qty       NUMBER;
512         l_uom   mtl_units_of_measure.unit_of_measure%TYPE;
513 
514      BEGIN
515         /*  Define Savepoint */
516         SAVEPOINT  Delete_FormulaDetail_PVT;
517 
518         /*  Standard Check for API compatibility */
519         IF NOT FND_API.Compatible_API_Call  (   l_api_version           ,
520                                                 p_api_version           ,
521                                                 l_api_name              ,
522                                                 G_PKG_NAME  )
523         THEN
524                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
525         END IF;
526 
527         /*  Initialize message list if p_init_msg_list is set to TRUE */
528         IF FND_API.to_Boolean( p_init_msg_list ) THEN
529                 FND_MSG_PUB.initialize;
530         END IF;
531         /*  Initialize API return status to success */
532         x_return_status := FND_API.G_RET_STS_SUCCESS;
533 
534         /*  API body */
535                 /*  Later on to be changed to update a business view */
536                 /*  and not a table. */
537 
538                 DELETE FROM fm_matl_dtl
539                 WHERE
540                 formulaline_id = p_formula_detail_rec.formulaline_id;
541 
542                 IF(SQL%ROWCOUNT = 0) THEN
543                         RAISE FND_API.G_EXC_ERROR;
544                 END IF;
545 
546                 /* End API body */
547 
548                 /* Calculate the total input and output qty and update the formula header table */
549         GMD_COMMON_VAL.calculate_total_qty(
550                         FORMULA_ID           => p_formula_detail_rec.formula_id,
551                         X_PRODUCT_QTY        => l_product_qty ,
552                         X_INGREDIENT_QTY     => l_ing_qty ,
553                         X_UOM                => l_uom ,
554                         X_RETURN_STATUS      => x_return_status ,
555                         X_MSG_COUNT          => X_msg_cnt ,
556                         X_MSG_DATA           => x_msg_dat );
557 
558 
559         update  fm_form_mst_b
560                 set             total_output_qty = l_product_qty,
561                                 total_input_qty = l_ing_qty,
562                                 yield_uom = l_uom
563                 where   formula_id = p_formula_detail_rec.formula_id;
564 
565         /* Check if p_commit is set to TRUE */
566         IF FND_API.To_Boolean( p_commit ) THEN
567                 Commit;
568         END IF;
569 
570         /*  Get the message count and information */
571         FND_MSG_PUB.Count_And_Get (
572                         p_count => x_msg_count,
573                         p_data  => x_msg_data   );
574 
575 
576      EXCEPTION
577         WHEN FND_API.G_EXC_ERROR THEN
578                 ROLLBACK to Delete_FormulaDetail_PVT;
579                 x_return_status := FND_API.G_RET_STS_ERROR;
580                 FND_MSG_PUB.Count_And_Get (
581                                 p_count => x_msg_count,
582                                 p_data  => x_msg_data   );
583 
584         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
585                 ROLLBACK to Delete_FormulaDetail_PVT;
586                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
587                 FND_MSG_PUB.Count_And_Get (
588                                 p_count => x_msg_count,
589                                 p_data  => x_msg_data   );
590 
591         WHEN OTHERS THEN
592                 ROLLBACK to Delete_FormulaDetail_PVT;
593                 fnd_msg_pub.add_exc_msg (G_pkg_name, l_api_name);
594                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
595 
596   END Delete_FormulaDetail;
597 
598 END GMD_FORMULA_DETAIL_PVT;