Project

General

Profile

Problem-Bug #146 ยป SQL_create_sp_insert_production_schedule_outer_from_hatc_filename2.sql

Kittisak Isarapongporn, 25 Oct 2023 14:02

 
1
USE [wms-ani-ckd]
2
GO
3

    
4
/****** Object:  StoredProcedure [dbo].[sp_insert_production_schedule_outer_from_hatc_filename2]    Script Date: 10/25/2023 2:01:04 PM ******/
5
SET ANSI_NULLS ON
6
GO
7

    
8
SET QUOTED_IDENTIFIER ON
9
GO
10

    
11

    
12

    
13

    
14

    
15

    
16

    
17

    
18

    
19
CREATE PROCEDURE [dbo].[sp_insert_production_schedule_outer_from_hatc_filename2] 
20
	@filename VARCHAR(1000)
21
AS
22
BEGIN
23

    
24
SET NOCOUNT ON
25

    
26
-- DECLARE TEMP TABLE
27
DECLARE @tempTable table (
28
	pc_no VARCHAR(20)
29
	,part_no VARCHAR(20)
30
	,part_color VARCHAR(20)
31
	,control_no VARCHAR(20)
32
	,model_no VARCHAR(20)
33
	,maker_code VARCHAR(20)
34
	,line_no VARCHAR(20)
35
	,case_no NUMERIC
36

    
37
	,case_packing_seq NUMERIC
38
	,item_no NUMERIC
39
	,packing_no NUMERIC
40

    
41
	,c_no VARCHAR(10)
42
	,cont_no VARCHAR(10)
43

    
44
	,case_code VARCHAR(20)
45
	,set_part_seq NUMERIC
46

    
47
	,staging_plan_date VARCHAR(50)
48
	,staging_plan_qty NUMERIC
49

    
50
	,inner_plan_date VARCHAR(20)
51
	,inner_plan_qty NUMERIC
52
	,outer_plan_date VARCHAR(20)
53
	,outer_plan_qty NUMERIC
54

    
55
	,vanning_plan_date VARCHAR(20)
56

    
57
	,packing_qty_in_case NUMERIC
58
	,bag_qty_in_packing NUMERIC
59
	,parts_qty_in_bag NUMERIC
60

    
61
	,hatc_ref_id NUMERIC
62
	,linecontrol_ref_id NUMERIC
63
	,tagreceive_ref_id NUMERIC
64
)
65

    
66
-- CREATE OUTER SCHEDULE DETAIL
67
DECLARE @pc_no VARCHAR(20)
68
DECLARE @part_no VARCHAR(20)
69
DECLARE @part_color VARCHAR(20)
70
DECLARE @control_no VARCHAR(20)
71
DECLARE @model_no VARCHAR(20)
72
DECLARE @maker_code VARCHAR(20)
73
DECLARE @line_no VARCHAR(20)
74

    
75
DECLARE @case_packing_seq NUMERIC
76
DECLARE @item_no NUMERIC
77
DECLARE @packing_no NUMERIC
78

    
79
DECLARE @c_no VARCHAR(10)
80
DECLARE @cont_no VARCHAR(10)
81

    
82
DECLARE @case_code VARCHAR(20)
83
DECLARE @set_part_seq NUMERIC
84

    
85
DECLARE @staging_plan_date VARCHAR(50)
86

    
87
DECLARE @inner_plan_date VARCHAR(20)
88
DECLARE @outer_plan_date VARCHAR(20)
89

    
90
DECLARE @vanning_plan_date VARCHAR(20)
91

    
92
DECLARE @packing_qty_in_case NUMERIC
93
DECLARE @bag_qty_in_packing NUMERIC
94
DECLARE @parts_qty_in_bag NUMERIC
95

    
96
DECLARE @hatc_ref_id NUMERIC
97
DECLARE @linecontrol_ref_id NUMERIC
98
DECLARE @tagreceive_ref_id NUMERIC
99

    
100
DECLARE @case_no_from NUMERIC
101
DECLARE @case_no_to NUMERIC
102

    
103
DECLARE @staging_plan_qty NUMERIC
104
DECLARE @inner_plan_qty NUMERIC
105
DECLARE @outer_plan_qty NUMERIC
106

    
107

    
108
DECLARE @current_case_no NUMERIC
109

    
110
DECLARE @qty NUMERIC
111

    
112
DECLARE sp_insert_production_schedule_outer_from_hatc_filename_cs_ CURSOR FOR
113
SELECT
114

    
115
h.pc_no
116
, h.dc_full_part_no
117
, h.part_color
118
, h.control_no
119
, h.model_code
120
, h.maker_code
121
, t.line_no
122

    
123
-- Will extract the case
124
, CONVERT(int, h.case_no_from) As case_no_from
125
, CONVERT(int, h.case_no_to) As case_no_to
126

    
127
, h.case_packing_seq
128
, h.item_no
129
, h.packing_no
130

    
131
--, l.case_no -- Not use this value
132
--, l.container_no
133

    
134
, h.case_code
135
, ISNULL(seq.set_part_seq, 0)
136

    
137
, [dbo].[getWorkingDate](h.packing_date, -1) -- staging_plan_date
138
, h.packing_date -- inner_plan_date
139
, h.packing_date -- outer_plan_date
140
, [dbo].[getWorkingDate](h.packing_date, 1) -- vanning_plan_date
141

    
142
--, h.packing_qty_in_case
143
, IIF( CAST(parts_qty_in_packing AS int) = 0 AND CAST(parts_qty_in_bag AS int) = 0
144
		, 1 -- For direct items
145
		, h.packing_qty_in_case
146
		)
147

    
148
--, h.parts_qty_in_packing
149
, IIF( CAST(parts_qty_in_packing AS int) = 0 AND CAST(parts_qty_in_bag AS int) = 0
150
		, h.packing_qty_in_case -- For direct items
151
		, h.parts_qty_in_packing
152
		)
153

    
154
, h.parts_qty_in_bag
155

    
156
, h.id
157
--, l.id
158
, t.id
159

    
160
, IIF( CAST(parts_qty_in_packing AS int) = 0 AND CAST(parts_qty_in_bag AS int) = 0
161
		, CAST(packing_qty_in_case AS int) 
162
			* 1 -- CAST(case_usage AS int)
163
		, IIF(CAST(parts_qty_in_packing AS int)=0,1,CAST(parts_qty_in_packing AS int))
164
			* IIF(CAST(parts_qty_in_bag AS int)=0,1,CAST(parts_qty_in_bag AS int))
165
			* CAST(packing_qty_in_case AS int) 
166
			* 1 --IIF(model_code = 'PPP', 1, CAST(case_usage AS int))
167
		)
168

    
169
FROM 
170
(
171
SELECT *
172
FROM OriginalHatc 
173
WHERE filename=@filename
174
AND ISNUMERIC(case_no_from)=1
175
AND part_no NOT LIKE '%E+%'
176
AND pc_no NOT LIKE '%E+%'
177
) h
178

    
179
--LEFT JOIN OriginalLineControl l
180
--ON RIGHT(h.pc_no, 6) = REPLACE(l.pc_no, '-', '')
181
--AND ( 
182
--	( h.model_code!='PPP' AND h.control_no = l.control_no )
183
--	OR ( h.model_code='PPP' AND LEFT(h.control_no,4) = LEFT(l.control_no,4) ) 
184
--	)
185
/** Fixed use container no from Line Control only **/
186
--AND ( 
187
--	CAST(IIF(ISNUMERIC(l.case_no)=1, l.case_no, 0) AS Int)
188
--		BETWEEN CAST(h.case_no_from As int) AND CAST(h.case_no_to As int) 
189
--	)
190

    
191
LEFT JOIN SetPartSeqMaster seq
192
ON REPLACE(REPLACE(seq.part_no, '-', ''), ' ', '') = REPLACE(h.dc_full_part_no, ' ', '')
193
AND seq.control_no = h.control_no
194

    
195
LEFT JOIN OriginalTagReceive t
196
ON h.dc_full_part_no = t.part_no
197
AND h.pc_no = t.pc_no
198
AND h.part_color = t.part_color
199
AND ( 
200
	( h.model_code!='PPP' AND LEFT(h.control_no,3) = LEFT(t.control_no,3) )
201
	OR ( h.model_code='PPP' AND LEFT(h.control_no,4) = LEFT(t.control_no,4)) 
202
	)
203
/** Add to map with SEQ_ITM(case_no-packing_no) for PBP **/
204
AND ( t.model_no != 'PPP'
205
	OR ( t.model_no = 'PPP' AND CAST([dbo].[Wordparser] ( t.seq_itm, 1, '-') As int) BETWEEN CAST(h.case_no_from As int) AND CAST(h.case_no_to As int) )
206
	)
207

    
208
OPEN sp_insert_production_schedule_outer_from_hatc_filename_cs_
209
FETCH NEXT FROM sp_insert_production_schedule_outer_from_hatc_filename_cs_
210
INTO 
211

    
212
@pc_no
213
, @part_no
214
, @part_color
215
, @control_no
216
, @model_no
217
, @maker_code
218
, @line_no
219

    
220
, @case_no_from
221
, @case_no_to
222

    
223
, @case_packing_seq
224
, @item_no
225
, @packing_no
226

    
227
--, @c_no
228
--, @cont_no
229

    
230
, @case_code
231
, @set_part_seq
232

    
233
, @staging_plan_date
234
, @inner_plan_date
235
, @outer_plan_date
236
, @vanning_plan_date
237

    
238
, @packing_qty_in_case
239
, @bag_qty_in_packing
240
, @parts_qty_in_bag
241

    
242
, @hatc_ref_id
243
--, @linecontrol_ref_id
244
, @tagreceive_ref_id
245

    
246
, @qty
247
	;
248
	
249
WHILE (@@FETCH_STATUS = 0)
250
BEGIN
251

    
252
	SET @current_case_no = @case_no_from
253

    
254
	WHILE (@current_case_no <= @case_no_to)
255
	BEGIN
256

    
257
		-- Find container no
258
		SET @cont_no = NULL
259
		SET @linecontrol_ref_id = NULL
260
		SELECT 
261
			@cont_no = container_no
262
			, @linecontrol_ref_id = id
263
		FROM OriginalLineControl
264
		WHERE RIGHT(@pc_no, 6) = REPLACE(pc_no, '-', '')
265
			AND ( 
266
				( @model_no!='PPP' AND @control_no = control_no )
267
				OR ( @model_no='PPP' AND LEFT(@control_no,4) = LEFT(control_no,4) ) 
268
				)
269
			/** Fixed use container no from Line Control only **/
270
			AND @current_case_no = CAST(IIF(ISNUMERIC(case_no)=1, case_no, 0) AS Int)
271

    
272
		-- Insert into temp table
273
		MERGE @tempTable AS Target
274
		USING 
275
		(
276
			SELECT
277
				@pc_no AS pc_no
278
				, @part_no AS part_no
279
				, @part_color AS part_color
280
				, @control_no AS control_no
281
				, @model_no AS model_no
282
				, @maker_code AS maker_code
283
				, @line_no AS line_no
284
				, @current_case_no AS case_no
285
				, @case_packing_seq AS case_packing_seq
286
				, @item_no AS item_no
287
				, @packing_no AS packing_no
288
				, @current_case_no AS c_no -- Used case_no as c_no
289
				, @cont_no AS cont_no
290
				, @case_code AS case_code
291
				, @set_part_seq AS set_part_seq
292
				, @staging_plan_date AS staging_plan_date
293
				, @qty AS staging_plan_qty
294
				, @inner_plan_date AS inner_plan_date
295
				, @qty AS inner_plan_qty
296
				, @outer_plan_date AS outer_plan_date
297
				, @qty AS outer_plan_qty
298
				, @vanning_plan_date AS vanning_plan_date
299
				, @packing_qty_in_case AS packing_qty_in_case
300
				, @bag_qty_in_packing AS bag_qty_in_packing
301
				, @parts_qty_in_bag AS parts_qty_in_bag
302
				, @hatc_ref_id AS hatc_ref_id
303
				, @linecontrol_ref_id AS linecontrol_ref_id
304
				, @tagreceive_ref_id AS tagreceive_ref_id
305
		)
306
		AS Source
307
		ON Source.pc_no = Target.pc_no
308
		AND Source.part_no = Target.part_no
309
		AND Source.part_color = Target.part_color
310
		AND Source.control_no = Target.control_no
311
		AND Source.case_no = Target.case_no
312
		AND Source.case_packing_seq = Target.case_packing_seq
313
		AND Source.item_no = Target.item_no
314
		AND Source.packing_no = Target.packing_no
315
		WHEN NOT MATCHED BY Target THEN
316
			INSERT (
317
				[pc_no]
318
				,[part_no]
319
				,[part_color]
320
				,[control_no]
321
				,[model_no]
322
				,[maker_code]
323
				,[line_no]
324
				,[case_no]
325
				,[case_packing_seq]
326
				,[item_no]
327
				,[packing_no]
328
				,[c_no]
329
				,[cont_no]
330
				,[case_code]
331
				,[set_part_seq]
332
				,[staging_plan_date]
333
				,[staging_plan_qty]
334
				,[inner_plan_date]
335
				,[inner_plan_qty]
336
				,[outer_plan_date]
337
				,[outer_plan_qty]
338
				,[vanning_plan_date]
339
				,[packing_qty_in_case]
340
				,[bag_qty_in_packing]
341
				,[parts_qty_in_bag]
342
				,[hatc_ref_id]
343
				,[linecontrol_ref_id]
344
				,[tagreceive_ref_id]
345
				)
346
			VALUES (
347
				
348
				Source.pc_no
349
				, Source.part_no
350
				, Source.part_color
351
				, Source.control_no
352
				, Source.model_no
353
				, Source.maker_code
354
				, Source.line_no
355
				, Source.case_no
356
				, Source.case_packing_seq
357
				, Source.item_no
358
				, Source.packing_no
359
				, Source.c_no
360
				, Source.cont_no
361
				, Source.case_code
362
				, Source.set_part_seq
363
				, Source.staging_plan_date
364
				, Source.staging_plan_qty
365
				, Source.inner_plan_date
366
				, Source.inner_plan_qty
367
				, Source.outer_plan_date
368
				, Source.outer_plan_qty
369
				, Source.vanning_plan_date
370
				, Source.packing_qty_in_case
371
				, Source.bag_qty_in_packing
372
				, Source.parts_qty_in_bag
373
				, Source.hatc_ref_id
374
				, Source.linecontrol_ref_id
375
				, Source.tagreceive_ref_id
376
				);
377

    
378

    
379
		-- Goto next case
380
		SET @current_case_no = @current_case_no + 1
381
	END
382
	
383

    
384
	FETCH NEXT FROM sp_insert_production_schedule_outer_from_hatc_filename_cs_
385
	INTO 
386

    
387
	@pc_no
388
	, @part_no
389
	, @part_color
390
	, @control_no
391
	, @model_no
392
	, @maker_code
393
	, @line_no
394

    
395
	, @case_no_from
396
	, @case_no_to
397

    
398
	, @case_packing_seq
399
	, @item_no
400
	, @packing_no
401

    
402
	--, @c_no
403
	--, @cont_no
404

    
405
	, @case_code
406
	, @set_part_seq
407

    
408
	, @staging_plan_date
409
	, @inner_plan_date
410
	, @outer_plan_date
411
	, @vanning_plan_date
412

    
413
	, @packing_qty_in_case
414
	, @bag_qty_in_packing
415
	, @parts_qty_in_bag
416

    
417
	, @hatc_ref_id
418
	--, @linecontrol_ref_id
419
	, @tagreceive_ref_id
420

    
421
	, @qty
422
END
423

    
424

    
425

    
426
CLOSE sp_insert_production_schedule_outer_from_hatc_filename_cs_;
427
DEALLOCATE sp_insert_production_schedule_outer_from_hatc_filename_cs_;
428

    
429
-- 2023-10-25 : Replace the simple insert with merge with duplicated check
430

    
431
MERGE ProductionScheduleOuter AS Target
432
USING @tempTable AS s
433
ON s.pc_no = Target.pc_no
434
		AND s.part_no = Target.part_no
435
		AND s.part_color = Target.part_color
436
		AND s.control_no = Target.control_no
437
		AND s.case_no = Target.case_no
438
		AND s.case_packing_seq = Target.case_packing_seq
439
		AND s.item_no = Target.item_no
440
		AND s.packing_no = Target.packing_no
441
WHEN NOT MATCHED BY Target THEN
442

    
443
-- Finally copy all entries to ProductionScheduleOuter
444
-- Insert outer detail
445
		INSERT 
446
		(
447
			[pc_no]
448
			,[part_no]
449
			,[part_color]
450
			,[control_no]
451
			,[model_no]
452
			,[maker_code]
453
			,[line_no]
454
			,[case_no]
455
			,[case_packing_seq]
456
			,[item_no]
457
			,[packing_no]
458
			,[c_no]
459
			,[cont_no]
460
			,[case_code]
461
			,[set_part_seq]
462
			,[staging_plan_date]
463
			,[staging_plan_qty]
464
			,[inner_plan_date]
465
			,[inner_plan_qty]
466
			,[outer_plan_date]
467
			,[outer_plan_qty]
468
			,[vanning_plan_date]
469
			,[packing_qty_in_case]
470
			,[bag_qty_in_packing]
471
			,[parts_qty_in_bag]
472
			,[hatc_ref_id]
473
			,[linecontrol_ref_id]
474
			,[tagreceive_ref_id]
475
			,[status]
476
			,[stage]
477
			,[create_user_id]
478
		)
479

    
480
		VALUES ( 
481
			s.[pc_no]
482
			, s.[part_no]
483
			, s.[part_color]
484
			, s.[control_no]
485
			, s.[model_no]
486
			, s.[maker_code]
487
			, s.[line_no]
488
			, s.[case_no]
489
			, s.[case_packing_seq]
490
			, s.[item_no]
491
			, s.[packing_no]
492
			, s.[c_no]
493
			, s.[cont_no]
494
			, s.[case_code]
495
			, s.[set_part_seq]
496
			, s.[staging_plan_date]
497
			, s.[staging_plan_qty]
498
			, s.[inner_plan_date]
499
			, s.[inner_plan_qty]
500
			, s.[outer_plan_date]
501
			, s.[outer_plan_qty]
502
			, s.[vanning_plan_date]
503
			, s.[packing_qty_in_case]
504
			, s.[bag_qty_in_packing]
505
			, s.[parts_qty_in_bag]
506
			, s.[hatc_ref_id]
507
			, s.[linecontrol_ref_id]
508
			, s.[tagreceive_ref_id]
509
		
510
			,'IMPORTED'
511
			,'IMPORTED'
512
			, 'admin'
513
		);
514

    
515
END
516
GO
517

    
518

    
    (1-1/1)