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