-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEOMStockLinesProc3.sql
More file actions
300 lines (279 loc) · 12.4 KB
/
EOMStockLinesProc3.sql
File metadata and controls
300 lines (279 loc) · 12.4 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
/* First run this file with variables set in header - declare variables - drop tables, recreate tables, insert into tables - then query tables */
/* EOM_INVOICING_CREATE_TABLES.sql */
--Admin Order Data by Parent or Customer
/*decalre variables These are being declared via the stored procedure - just need to redeclare cust so as we can get the rates*/
var cust varchar2(20)
exec :cust := 'LUXOTTICA'
var cust2 varchar2(20)
exec :cust := 'TABCORP'
var ordernum varchar2(20)
exec :ordernum := '1363806'
var stock varchar2(20)
exec :stock := 'COURIER'
var stock2 VARCHAR2(50)
EXEC :stock2 := 'FEE*'
var source varchar2(20)
exec :source := 'BSPRINTNSW'
var sAnalysis varchar2(20) /*VerbalOrderEntryFee*/
exec SELECT RM_ANAL INTO :sAnalysis FROM RM where RM_CUST = :cust;
var anal varchar2(20)
exec :anal := '49'
var start_date varchar2(20)
exec :start_date := To_Date('31-Mar-2014')
var end_date varchar2(20)
exec :end_date := To_Date('1-Apr-2014')
var nx NUMBER
EXEC :nx := 1810105
DECLARE CURSOR TestCursor IS SELECT XR_CODE FROM XR WHERE XR_CODE LIKE 'PRJ_%';
tgc_rec TestCursor%TYPE;
OPEN TestCUrsor;
FETCH TestCursor INTO tgc_rec;
WHILE(TestCursor%FOUND)
LOOP
DBMS_OUTPUT.PUT_LINE(tgc_rec.XR_CODE);
--FETCH TestCursor INTO tgc_rec;
END LOOP
CLOSE TestCursor;
/*Stocks*/
DECLARE
TYPE DespStkCurTyp IS REF CURSOR;
cdsg_stock_cust_in IM.IM_CUST%TYPE;
cdsg_nx_in NI.NI_NV_EXT_TYPE%TYPE;
cdsg_line_stock_in SD.SD_STOCK%TYPE;
cdsg_date_from_in ST.ST_DESP_DATE%TYPE;
cdsg_date_to_in ST.ST_DESP_DATE%TYPE;
cdsg_cust_in RM.RM_CUST%TYPE;
sql_stmt VARCHAR2(2000);
DespStk_cv DespStkCurTyp;
BEGIN
DespStk_rec DespStkCurTyp%ROWTYPE;
CREATE OR REPLACE PROCEDURE DESP_STOCK_GET (
cdsg_stock_cust_in IN IM.IM_CUST%TYPE,
cdsg_nx_in IN NI.NI_NV_EXT_TYPE%TYPE,
cdsg_line_stock_in IN SD.SD_STOCK%TYPE,
cdsg_date_from_in IN ST.ST_DESP_DATE%TYPE,
cdsg_date_to_in IN ST.ST_DESP_DATE%TYPE,
cdsg_cust_in IN RM.RM_CUST%TYPE
) AS
CURSOR cdsg_cur IS
sql_stmt := 'SELECT SH_CUST,SH_ORDER,
RM_PARENT,
CASE WHEN IM_CUST <> cdsg_stock_cust_in THEN SH_SPARE_STR_4
WHEN IM_CUST = cdsg_stock_cust_in THEN IM_XX_COST_CENTRE01
ELSE IM_XX_COST_CENTRE01
END AS "CostCentre",
SH_ORDER AS "Order",
SH_SPARE_STR_5 AS "OrderwareNum",
SH_CUST_REF AS "CustomerRef",
ST_PICK AS "Pickslip",
SD_XX_PICKLIST_NUM AS "PickNum",
ST_PSLIP AS "DespatchNote",
substr(To_Char(ST_DESP_DATE),0,10) AS "DespatchDate",
CASE WHEN SD_STOCK IS NOT NULL THEN SD_STOCK
ELSE NULL
END AS "FeeType",
SD_STOCK AS "Item",
SD_DESC AS "Description",
SL_PSLIP_QTY AS "Qty",
SD_QTY_UNIT AS "UOI",
/* CASE WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in AND IM_OWNED_BY = 0 THEN SD_SELL_PRICE
WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in AND IM_OWNED_BY = 1 THEN NI_SELL_VALUE/NI_NX_QUANTITY
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) IS NOT NULL THEN BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK)
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) IS NULL THEN SD_XX_OW_UNIT_PRICE
ELSE NULL
END AS "Batch/UnitPrice",
/*CASE WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in THEN To_Number(IM_REPORTING_PRICE)
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in THEN BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK)
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND (SELECT vUnitPrice FROM Tmp_Admin_Data_BreakPrices WHERE vIIStock = SD_STOCK AND vIICust = RM_GROUP_CUST) IS NULL THEN SD_XX_OW_UNIT_PRICE
ELSE NULL
END AS "OWUnitPrice",
CASE WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in AND IM_OWNED_BY = 0 THEN SD_SELL_PRICE * SD_QTY_DESP
WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in AND IM_OWNED_BY = 1 THEN (NI_SELL_VALUE/NI_NX_QUANTITY) * SD_QTY_DESP
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) IS NOT NULL THEN BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) * SD_QTY_DESP
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) IS NULL THEN SD_XX_OW_UNIT_PRICE * SD_QTY_DESP
ELSE NULL
END AS "DExcl",
CASE WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in THEN To_Number(IM_REPORTING_PRICE)
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in THEN BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK)
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) IS NULL THEN SD_XX_OW_UNIT_PRICE
ELSE NULL
END AS "Excl_Total",
CASE WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in AND IM_OWNED_BY = 0 THEN (SD_SELL_PRICE * SD_QTY_DESP) * 1.1
WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in AND IM_OWNED_BY = 1 THEN ((NI_SELL_VALUE/NI_NX_QUANTITY) * SD_QTY_DESP) * 1.1
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) IS NOT NULL THEN (BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) * SD_QTY_DESP) * 1.1
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) IS NULL THEN (SD_XX_OW_UNIT_PRICE * SD_QTY_DESP) * 1.1
ELSE NULL
END AS "DIncl",
CASE WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in AND IM_OWNED_BY = 0 THEN (SD_SELL_PRICE * SD_QTY_DESP) * 1.1
WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in AND IM_OWNED_BY = 1 THEN ((NI_SELL_VALUE/NI_NX_QUANTITY) * SD_QTY_DESP) * 1.1
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) IS NOT NULL THEN (BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) * SD_QTY_DESP) * 1.1
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) IS NULL THEN (SD_XX_OW_UNIT_PRICE * SD_QTY_DESP) * 1.1
ELSE NULL
END AS "Incl_Total",
CASE WHEN SD_STOCK IS NOT NULL AND IM_CUST <> cdsg_stock_cust_in THEN To_Number(IM_REPORTING_PRICE)
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in THEN BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK)
WHEN SD_STOCK IS NOT NULL AND IM_CUST = cdsg_stock_cust_in AND BREAK_UNIT_PRICE(RM_GROUP_CUST,SD_STOCK) IS NULL THEN SD_XX_OW_UNIT_PRICE
ELSE NULL
END AS "ReportingPrice", */
SH_ADDRESS AS "Address",
SH_SUBURB AS "Address2",
SH_CITY AS "Suburb",
SH_STATE AS "State",
SH_POST_CODE AS "Postcode",
SH_NOTE_1 AS "DeliverTo",
SH_NOTE_2 AS "AttentionTo" ,
ST_WEIGHT AS "Weight",
ST_PACKAGES AS "Packages",
SH_SPARE_DBL_9 AS "OrderSource",
NULL AS "Pallet/Shelf Space", /*Pallet/Space*/
NULL AS "Locn", /*Locn*/
0 AS "AvailSOH",/*Avail SOH*/
0 AS "CountOfStocks",
IM_BRAND AS Brand
FROM PWIN175.SD d
INNER JOIN PWIN175.SH s ON SH_ORDER = SD_ORDER
INNER JOIN PWIN175.ST t ON ST_ORDER = SH_ORDER
INNER JOIN PWIN175.SL l ON SL_PICK = ST_PICK
INNER JOIN PWIN175.RM r ON RM_CUST = SH_CUST
INNER JOIN PWIN175.IM i ON IM_STOCK = SD_STOCK
INNER JOIN PWIN175.NI n ON NI_NV_EXT_KEY = SL_UID
WHERE NI_NV_EXT_TYPE = cdsg_nx_in AND NI_STRENGTH = 3 AND NI_DATE = ST_DESP_DATE AND NI_STOCK = SD_STOCK AND NI_STATUS <> 0
AND SH_STATUS <> 3
AND IM_CUST = cdsg_cust_in
AND SH_ORDER = ST_ORDER
AND SD_STOCK NOT LIKE cdsg_line_stock_in
AND ST_DESP_DATE >= cdsg_date_from_in AND ST_DESP_DATE <= cdsg_date_to_in
AND SD_LAST_PICK_NUM = ST_PICK
GROUP BY SH_CUST,
SH_NOTE_1,
SH_CAMPAIGN,
SH_SPARE_STR_4,
IM_XX_COST_CENTRE01,
IM_CUST,
RM_PARENT,
SH_ORDER,
ST_PICK,
SD_XX_PICKLIST_NUM,
IM_REPORTING_PRICE,
IM_NOMINAL_VALUE,
ST_PSLIP,
ST_DESP_DATE,
SD_QTY_ORDER,
SD_QTY_UNIT,
SD_STOCK,
SD_DESC,
SD_LINE,
SD_EXCL,
SD_INCL,
SD_SELL_PRICE,
SD_XX_OW_UNIT_PRICE,
SD_QTY_ORDER,
SD_QTY_ORDER,
SH_ADDRESS,
SH_SUBURB,
SH_CITY,
SH_STATE,
SH_POST_CODE,
SH_NOTE_1,
SH_NOTE_2,
ST_WEIGHT,
ST_PACKAGES,
SH_SPARE_DBL_9,
RM_GROUP_CUST,
RM_PARENT,
SH_SPARE_STR_5,
SH_CUST_REF,SH_SPARE_STR_3,SH_SPARE_STR_1,
SD_SELL_PRICE,
IM_OWNED_BY,
SD_QTY_DESP,
NI_SELL_VALUE,
NI_NX_QUANTITY,
IM_BRAND,
SL_PSLIP_QTY';
OPEN DespStk_cv FOR SQL_stmt;
LOOP
FETCH DespStk_cv INTO DespStk_rec;
EXIT WHEN DespStk_cv%NOTFOUND;
END LOOP;
CLOSE DespStk_cv;
END;
cdsg_rec cdsg_cur%ROWTYPE;
cdsg_rec cdsg_cur%ROWTYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE('Customer,Order');
OPEN cdsg_cur;
FETCH cdsg_cur INTO cdsg_rec;
WHILE cdsg_cur%FOUND
LOOP
DBMS_OUTPUT.PUT_LINE(cdsg_rec.sh_cust || ',' || cdsg_rec.sh_order);--(1 || ',' || 2 );
--FETCH cdsg_cur INTO cdsg_rec;
END LOOP;
CLOSE cdsg_cur;
END DESP_STOCK_GET;
--DBMS_OUTPUT.PUT_LINE(gc_rec.Customer || ',' || gc_rec.Parent || ',' || gc_rec.OrderwareNum || ',' || "gc_rec.Order" || ',' || gc_rec.PickNum || ',' || gc_rec.FeeType || ',' || gc_rec.Item || ',' || gc_rec.Description );
--Customer Parent CostCentre Order OrderwareNum CustomerRef Pickslip PickNum DespatchNote DespatchDate FeeType Item Description Qty UOI Batch/UnitPrice OWUnitPrice DExcl Excl_Total DIncl Incl_Total ReportingPrice Address Address2 Suburb State Postcode DeliverTo AttentionTo Weight Packages OrderSource Pallet/Shelf Space Locn AvailSOH CountOfStocks EMAIL BRAND
--Passing
/* cdsg_stock_cust_in IN IM.IM_CUST%TYPE,
cdsg_nx_in IN NI.NI_NV_EXT_TYPE%TYPE,
cdsg_line_stock_in IN SD.SD_STOCK%TYPE,
cdsg_date_from_in IN ST.ST_DESP_DATE%TYPE,
cdsg_date_to_in IN ST.ST_DESP_DATE%TYPE,
cdsg_cust_in IN RM.RM_CUST%TYPE,
cdsg_cust_in2 IN RM.RM_CUST%TYPE */
EXECUTE DESP_STOCK_GET (:cust2,:nx,:stock,:start_date,:end_date,:cust);
EXECUTE DESP_STOCK_GET ('TABCORP',1810105,'COURIER','2-Apr-2014','8-Apr-2014','LUXOTTICA')
DECLARE
PROCEDURE fetch_all_rows (limit_in IN PLS_INTEGER)
IS
CURSOR source_cur
IS
SELECT *
FROM IM WHERE IM_CUST = 'ZIONS';
TYPE source_aat IS TABLE OF source_cur%ROWTYPE
INDEX BY PLS_INTEGER;
l_source source_aat;
l_start PLS_INTEGER;
l_end PLS_INTEGER;
l_stop PLS_INTEGER;
cdsg_rec source_cur%ROWTYPE;
BEGIN
--OPEN source_cur;
--FETCH source_cur INTO cdsg_rec;
--WHILE source_cur%FOUND
--WHILE l_stop < 11
--LOOP
-- DBMS_OUTPUT.PUT_LINE(cdsg_rec.IM_CUST );
-- l_stop := 10;
--END LOOP;
DBMS_SESSION.free_unused_user_memory;
--show_pga_memory (limit_in || ' - BEFORE');
l_start := DBMS_UTILITY.get_cpu_time;
OPEN source_cur;
LOOP
FETCH source_cur
BULK COLLECT INTO l_source LIMIT limit_in;
--DBMS_OUTPUT.put_line ( l_source.IM_CUST );
--DBMS_OUTPUT.PUT_LINE(cdsg_rec.IM_CUST );
EXIT WHEN l_source.COUNT = 0;
END LOOP;
CLOSE source_cur;
l_end := DBMS_UTILITY.get_cpu_time;
DBMS_OUTPUT.put_line ( 'Elapsed CPU time for limit of '
|| limit_in
|| ' = '
|| TO_CHAR (l_end - l_start)
);
--show_pga_memory (limit_in || ' - AFTER');
END fetch_all_rows;
BEGIN
--fetch_all_rows (1);
--fetch_all_rows (5);
--fetch_all_rows (25);
--fetch_all_rows (50);
--fetch_all_rows (75);
--fetch_all_rows (100);
fetch_all_rows (1000);
--fetch_all_rows (10000);
--fetch_all_rows (100000);
END;
/