Issue #23507:initial commit
[xtuple] / foundation-database / public / functions / deleteitemsite.sql
1 CREATE OR REPLACE FUNCTION deleteItemSite(pItemsiteid INTEGER) RETURNS INTEGER AS $$
2 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple. 
3 -- See www.xtuple.com/CPAL for the full text of the software license.
4 DECLARE
5   _result INTEGER;
6   _lotserial BOOLEAN;
7   _bbom BOOLEAN;
8   _mfg BOOLEAN;
9   _standard BOOLEAN;
10
11 BEGIN
12
13   IF ( ( SELECT (itemsite_qtyonhand <> 0)
14          FROM itemsite
15          WHERE (itemsite_id=pItemsiteid) ) ) THEN
16     RETURN -9;
17   END IF;
18
19   SELECT metric_value='t' INTO _bbom
20     FROM metric
21    WHERE (metric_name='BBOM');
22
23   SELECT metric_value='t' INTO _lotserial
24     FROM metric
25    WHERE (metric_name='LotSerialControl');
26
27   SELECT metric_value NOT IN ('PostBooks', 'Standard') INTO _mfg
28     FROM metric
29    WHERE (metric_name='Application');
30
31   SELECT metric_value='Standard' INTO _standard
32     FROM metric
33    WHERE (metric_name='Application');
34
35   SELECT invhist_id INTO _result
36   FROM invhist
37   WHERE (invhist_itemsite_id=pItemsiteid)
38   LIMIT 1;
39   IF (FOUND) THEN
40     RETURN -1;
41   END IF;
42
43   IF (_lotserial) THEN
44     SELECT lsdetail_id INTO _result
45     FROM lsdetail
46     WHERE (lsdetail_itemsite_id=pItemsiteid)
47     LIMIT 1;
48     IF (FOUND) THEN
49       RETURN -1;
50     END IF;
51   END IF;
52
53   SELECT wo_id INTO _result
54   FROM wo
55   WHERE (wo_itemsite_id=pItemsiteid)
56   LIMIT 1;
57   IF (FOUND) THEN
58     RETURN -2;
59   END IF;
60
61   SELECT womatl_id INTO _result
62   FROM womatl
63   WHERE (womatl_itemsite_id=pItemsiteid)
64   LIMIT 1;
65   IF (FOUND) THEN
66     RETURN -2;
67   END IF;
68
69   SELECT womatlvar_id INTO _result
70   FROM womatlvar
71   WHERE ( (womatlvar_parent_itemsite_id=pItemsiteid)
72    OR (womatlvar_component_itemsite_id=pItemsiteid) )
73   LIMIT 1;
74   IF (FOUND) THEN
75     RETURN -2;
76   END IF;
77
78   IF (_bbom) THEN
79     SELECT brdvar_id INTO _result
80     FROM xtmfg.brdvar
81     WHERE ( (brdvar_itemsite_id=pItemsiteid)
82      OR (brdvar_parent_itemsite_id=pItemsiteid) )
83     LIMIT 1;
84     IF (FOUND) THEN
85       RETURN -2;
86     END IF;
87   END IF;
88
89   SELECT coitem_id INTO _result
90   FROM coitem
91   WHERE (coitem_itemsite_id=pItemsiteid)
92   LIMIT 1;
93   IF (FOUND) THEN
94     RETURN -3;
95   END IF;
96
97   SELECT cohist_id INTO _result
98   FROM cohist
99   WHERE (cohist_itemsite_id=pItemsiteid)
100   LIMIT 1;
101   IF (FOUND) THEN
102     RETURN -3;
103   END IF;
104
105   SELECT quitem_id INTO _result
106   FROM quitem
107   WHERE (quitem_itemsite_id=pItemsiteid)
108   LIMIT 1;
109   IF (FOUND) THEN
110     RETURN -3;
111   END IF;
112
113   SELECT cmitem_id INTO _result
114   FROM cmitem
115   WHERE (cmitem_itemsite_id=pItemsiteid)
116   LIMIT 1;
117   IF (FOUND) THEN
118     RETURN -3;
119   END IF;
120
121
122   SELECT poitem_id INTO _result
123   FROM poitem
124   WHERE (poitem_itemsite_id=pItemsiteid)
125   LIMIT 1;
126   IF (FOUND) THEN
127     RETURN -4;
128   END IF;
129
130   SELECT recv_id INTO _result
131   FROM recv
132   WHERE (recv_itemsite_id=pItemsiteid)
133   LIMIT 1;
134   IF (FOUND) THEN
135     RETURN -4;
136   END IF;
137
138   SELECT poreject_id INTO _result
139   FROM poreject
140   WHERE (poreject_itemsite_id=pItemsiteid)
141   LIMIT 1;
142   IF (FOUND) THEN
143     RETURN -4;
144   END IF;
145
146   SELECT pr_id INTO _result
147   FROM pr
148   WHERE (pr_itemsite_id=pItemsiteid)
149   LIMIT 1;
150   IF (FOUND) THEN
151     RETURN -4;
152   END IF;
153
154   IF (_mfg OR _standard) THEN
155     SELECT planord_id INTO _result
156     FROM planord
157     WHERE (planord_itemsite_id=pItemsiteid)
158     LIMIT 1;
159     IF (FOUND) THEN
160       RETURN -5;
161     END IF;
162   END IF;
163
164   IF (_mfg) THEN
165     SELECT pschitem_id INTO _result
166     FROM xtmfg.pschitem
167     WHERE (pschitem_itemsite_id=pItemsiteid)
168     LIMIT 1;
169     IF (FOUND) THEN
170       RETURN -6;
171     END IF;
172
173     SELECT woopervar_id INTO _result
174     FROM xtmfg.woopervar
175     WHERE (woopervar_parent_itemsite_id=pItemsiteid)
176     LIMIT 1;
177     IF (FOUND) THEN
178       RETURN -2;
179     END IF;
180     
181   END IF;
182
183   IF (_mfg OR _standard) THEN
184     SELECT itemsite_id INTO _result
185     FROM itemsite
186     WHERE (itemsite_supply_itemsite_id=pItemsiteid)
187     LIMIT 1;
188     IF (FOUND) THEN
189       RETURN -7;
190     END IF;
191   END IF;
192
193   DELETE FROM invcnt
194   WHERE (invcnt_itemsite_id=pItemsiteid);
195
196   DELETE FROM itemloc
197   WHERE (itemloc_itemsite_id=pItemsiteid);
198   DELETE FROM itemlocdist
199   WHERE (itemlocdist_itemsite_id=pItemsiteid);
200
201   IF (_bbom) THEN
202     DELETE FROM xtmfg.brddist
203     WHERE (brddist_itemsite_id=pItemsiteid);
204   END IF;
205
206   DELETE FROM itemsite
207   WHERE (itemsite_id=pItemsiteid);
208
209   RETURN 0;
210
211 END;
212 $$ LANGUAGE plpgsql;