DBA Data[Home] [Help]

PACKAGE BODY: APPS.WSH_CONT_PKG

Source


1 PACKAGE BODY WSH_CONT_PKG as
2 /* $Header: WSHCONTB.pls 115.5 99/07/26 11:08:01 porting ship  $ */
3 
4   -- Name        get_master_container
5   -- Purpose     get master container id and master serial number
6   -- Arguments
7   --             X_container_id
8   --             X_master_container_id
9   --             X_master_serial_number
10 
11 PROCEDURE get_master_container(
12    X_container_id         IN     NUMBER,
13    X_master_container_id  IN OUT NUMBER,
14    X_master_serial_number IN OUT VARCHAR2)
15 IS
16    CURSOR get_master_container(
17       P_container_id NUMBER)
18    IS
19       SELECT           container_id, master_serial_number
20       FROM             wsh_packed_containers
21       WHERE            parent_container_id IS NULL
22       START WITH       container_id        = P_container_id
23       CONNECT BY PRIOR parent_container_id = container_id;
24 
25 BEGIN
26    OPEN get_master_container(X_container_id);
27    FETCH get_master_container INTO X_master_container_id, X_master_serial_number;
28    IF (get_master_container%ISOPEN) THEN
29      CLOSE get_master_container;
30    END IF;
31 END get_master_container;
32 
33 
34   -- Name        check_child_containers
35   -- Purpose     find all child containers and update master container
36   --             id and master serial number
37   -- Arguments
38   --             X_delivery_id
39   --             X_container_id
40   --             X_master_container_id
41   --             X_master_serial_number
42   --             X_status
43 
44 PROCEDURE check_child_containers(
45    X_delivery_id          IN     NUMBER,
46    X_container_id         IN     NUMBER,
47    X_master_container_id  IN     NUMBER,
48    X_master_serial_number IN     VARCHAR2,
49    X_status               IN OUT NUMBER)
50 IS
51    CURSOR get_child_cont(
52       P_container_id NUMBER)
53    IS
54       SELECT           container_id
55       FROM             wsh_packed_containers
56       START WITH       parent_container_id = P_container_id
57       CONNECT BY PRIOR container_id        = parent_container_id;
58 
59    L_container_id NUMBER;
60 
61 BEGIN
62    X_status := 0;
63 
64    OPEN get_child_cont(X_container_id);
65    LOOP
66       FETCH get_child_cont INTO L_container_id;
67       EXIT WHEN get_child_cont%NOTFOUND;
68 
69       UPDATE wsh_packed_containers
70          SET master_container_id  = X_master_container_id,
71              master_serial_number = X_master_serial_number
72          WHERE container_id = L_container_id
73          AND   delivery_id  = X_delivery_id;
74 
75       IF (SQL%ROWCOUNT > 0) THEN
76          X_status := 1;
77       END IF;
78    END LOOP;
79 
80    IF (get_child_cont%ISOPEN) THEN
81       CLOSE get_child_cont;
82    END IF;
83 END check_child_containers;
84 
85 
86   -- Name        validate_master_serial_number
87   -- Purpose     Customizable API for validating master serial number.
88   --             This API by default will always return true.
89   --             It can be customized to perform validation according to the
90   --             customer business needs.
91   -- Arguments
92   --             X_delivery_id
93   --             X_container_sequence_number
94   --             X_status
95 
96 PROCEDURE validate_master_serial_number(
97    X_delivery_id               IN     NUMBER,
98    X_container_sequence_number IN     NUMBER,
99    X_status                    IN OUT NUMBER)
100 IS
101 BEGIN
102    null;
103 END validate_master_serial_number;
104 
105 
106   -- Name        update_master_serial_number
107   -- Purpose     update master serial number
108   -- Arguments
109   --             X_master_serial_number
110   --             X_container_id
111   --             X_delivery_id
112   --             X_status
113 
114 PROCEDURE update_master_serial_number(
115    X_master_serial_number IN     VARCHAR2,
116    X_container_id         IN     NUMBER,
117    X_delivery_id          IN     NUMBER,
118    X_status               IN OUT NUMBER)
119 IS
120   CURSOR get_child_cont(
121      P_container_id NUMBER)
122   IS
123      SELECT           container_id
124      FROM             wsh_packed_containers
125      START WITH       parent_container_id = P_container_id
126      CONNECT BY PRIOR container_id        = parent_container_id;
127 
128    L_container_id NUMBER;
129 BEGIN
130    X_status := 0;
131    OPEN get_child_cont(X_container_id);
132    LOOP
133       FETCH get_child_cont INTO L_container_id;
134       EXIT WHEN get_child_cont%NOTFOUND;
135 
136       UPDATE wsh_packed_containers
137          SET master_serial_number = X_master_serial_number
138          WHERE container_id = L_container_id
139          AND   delivery_id  = X_delivery_id;
140 
141       IF (SQL%ROWCOUNT > 0) THEN
142          X_status := 1;
143       END IF;
144    END LOOP;
145 
146    IF (get_child_cont%ISOPEN) THEN
147       CLOSE get_child_cont;
148    END IF;
149 END update_master_serial_number;
150 
151 
152 PROCEDURE get_master_serial_number(
153    X_sequence_number      IN     NUMBER,
154    X_delivery_id          IN     NUMBER,
155    X_master_serial_number IN OUT VARCHAR2)
156 IS
157    CURSOR c1(
158       P_sequence_number NUMBER,
159       P_delivery_id     NUMBER)
160    IS
161       SELECT master_serial_number
162       FROM wsh_packed_containers
163       WHERE parent_sequence_number IS NULL
164       START WITH sequence_number = p_sequence_number
165       AND delivery_id = p_delivery_id
166       CONNECT BY PRIOR parent_sequence_number = sequence_number
167       AND delivery_id = p_delivery_id;
168 
169 BEGIN
170    OPEN c1(X_sequence_number, X_delivery_id);
171    FETCH c1 INTO X_master_serial_number;
172    CLOSE c1;
173 END get_master_serial_number;
174 
175 
176 END WSH_CONT_PKG;