Project

General

Profile

Feature #3301 » PFILOUPDATEMDSTOCKINFOPROD_KJL_20250214.sql

Tri Rizqiaty, 02/14/2025 10:15 AM

 
1
??ALTER PROCEDURE [dbo].[PFILOUPDATEMDSTOCKINFOPROD_KJL]
2

3
(
4

5
	@MaterialID VARCHAR(20)
6

7
	,@Quantity DECIMAL(22,2)
8

9
	,@TotalPrice DECIMAL(20,2)
10

11
	,@DocType VARCHAR(20)
12

13
	,@UserID VARCHAR(20)
14

15
	,@CompanyID VARCHAR(20)
16

17
	,@LogisticArea VARCHAR(20)
18

19
	,@Warehouse VARCHAR(20)
20

21
	,@Storage VARCHAR(20)
22

23
	,@Bin VARCHAR(20)
24

25
	,@ReceiverLogisticArea VARCHAR(20)
26

27
	,@ReceiverWarehouse VARCHAR(20) 
28

29
	,@ReceiverStorage VARCHAR(20)
30

31
	,@ReceiverBin VARCHAR(20)
32

33
	,@DocIDRef VARCHAR(20)
34

35
	,@DocTypeRef VARCHAR(20)
36

37
	,@TransTypeRef VARCHAR(20)
38

39
	,@ItemFlow VARCHAR(50)
40

41
	,@StockStatus VARCHAR(20)
42

43
	,@DocStatus VARCHAR(20)
44

45
	,@DocNoHead VARCHAR(20)
46

47
	,@SPK VARCHAR(20)
48

49
	,@ProcessID VARCHAR(20)
50

51
)
52

53
AS
54

55

56

57
--DECLARE @MaterialID VARCHAR(20) = '00000003'
58

59
--DECLARE @Quantity DECIMAL(22,2) = 5
60

61
--DECLARE @TotalPrice DECIMAL(20,2) = '0'
62

63
--DECLARE @DocType VARCHAR(20) = 'MIX'
64

65
--DECLARE @UserID VARCHAR(20) = 'tri'
66

67
--DECLARE @CompanyID VARCHAR(20) = '1000'
68

69
--DECLARE @LogisticArea VARCHAR(20) = ''
70

71
--DECLARE @Warehouse VARCHAR(20) = '0001'
72

73
--DECLARE @Storage VARCHAR(20) = ''
74

75
--DECLARE @Bin VARCHAR(20) = 'LOT1'
76

77
--DECLARE @ReceiverLogisticArea VARCHAR(20) = ''
78

79
--DECLARE @ReceiverWarehouse VARCHAR(20) = ''
80

81
--DECLARE @ReceiverStorage VARCHAR(20) = ''
82

83
--DECLARE @ReceiverBin VARCHAR(20) = ''
84

85
--DECLARE @DocIDRef VARCHAR(20) = '00000336'
86

87
--DECLARE @DocTypeRef VARCHAR(20) = 'SPK'
88

89
--DECLARE @TransTypeRef VARCHAR(20) = 'PRD'
90

91
--DECLARE @ItemFlow VARCHAR(50) = 'ISSU'--'ISSU' --ISSU --RCPT
92

93
--DECLARE @StockStatus VARCHAR(20) = '0001'
94

95
--DECLARE @DocStatus VARCHAR(20) = '4' -- 1:Draft , 2:In Process, 3:Done, 4:Cancel
96

97
--DECLARE @DocNoHead VARCHAR(20) = '00000337'
98

99
--DECLARE @SPK VARCHAR(20) = '00000336'
100

101

102

103
DECLARE @now VARCHAR(20) = dbo.fn_formatdatetime(GETDATE(), 'yyyymmdd')
104

105
DECLARE @now16 VARCHAR(20) = dbo.fn_formatdatetime(GETDATE(), 'yyyymmddhhnnss')
106

107

108

109
DECLARE @IsSuccess VARCHAR(250)
110

111

112

113
DECLARE @TblMAT4 TABLE
114

115
(
116

117
	[MaterialID] [VARCHAR](10) NOT NULL,
118

119
	[SeqID] [BIGINT] NOT NULL,
120

121
	[CompanyID] [VARCHAR](4) NOT NULL,
122

123
	[LogisticAreaID] [VARCHAR](10) NOT NULL,
124

125
	[Warehouse] [VARCHAR](20) NOT NULL,
126

127
	[Storage] [VARCHAR](10) NOT NULL,
128

129
	[Bin] [VARCHAR](10) NOT NULL,
130

131
	[StockStatus] [VARCHAR](10) NOT NULL,
132

133
	[GLValuationID] [VARCHAR](20) NULL,
134

135
	[Qty] DECIMAL(22,2) NULL,
136

137
	[TotalValuation] [DECIMAL](18, 2) NULL,
138

139
	[Sequence] [INT] NULL,
140

141
	[SerialNumber] [VARCHAR](50) NULL,
142

143
	[CreateBy] [VARCHAR](18) NULL,
144

145
	[CreateDate] [VARCHAR](14) NULL,
146

147
	[ChangeBy] [VARCHAR](18) NULL,
148

149
	[ChangeDate] [VARCHAR](14) NULL,
150

151
	[SORDID] [VARCHAR](18) NULL,
152

153
	[PRODID] [VARCHAR](18) NULL,
154

155
	[INTRID] [VARCHAR](18) NULL,
156

157
	[POID] [VARCHAR](18) NULL,
158

159
	[StockType] [VARCHAR](10) NULL,
160

161
	[DocIDRef] [VARCHAR](10) NULL,
162

163
	[DocTypeRef] [VARCHAR](10) NULL,
164

165
	[TransTypeRef] [VARCHAR](10) NULL
166

167
)
168

169
INSERT INTO @TblMAT4
170

171
SELECT [MaterialID]
172

173
      ,[SeqID]
174

175
      ,[CompanyID]
176

177
      ,[LogisticAreaID]
178

179
      ,[Warehouse]
180

181
      ,[Storage]
182

183
      ,[Bin]
184

185
      ,[StockStatus]
186

187
      ,[GLValuationID]
188

189
      ,[Qty]
190

191
      ,[TotalValuation]
192

193
      ,[Sequence]
194

195
      ,[SerialNumber]
196

197
      ,[CreateBy]
198

199
      ,[CreateDate]
200

201
      ,[ChangeBy]
202

203
      ,[ChangeDate]
204

205
      ,[SORDID]
206

207
      ,[PRODID]
208

209
      ,[INTRID]
210

211
      ,[POID]
212

213
      ,[StockType]
214

215
      ,[DocIDRef]
216

217
      ,[DocTypeRef]
218

219
      ,[TransTypeRef]
220

221
FROM dbo.PMDMAT0004
222

223
WHERE MaterialID = @MaterialID
224

225

226

227
DECLARE @MAP_MAT1 DECIMAL(22,2) = 0 
228

229
DECLARE @NewTotalValuation DECIMAL(22,2)
230

231
DECLARE @CekItemNotDoneAloc VARCHAR(20)
232

233
DECLARE @CekItemNotDone VARCHAR(20)
234

235
DECLARE @SisaQty DECIMAL(22,2) = @Quantity
236

237

238

239
IF(@DocType != 'SPK' AND @ItemFLow = 'ISSU' AND (@DocTypeRef = '' OR @DocTypeRef = 'SPK'))
240

241
BEGIN
242

243

244

245
	SELECT @MAP_MAT1 = MAP FROM dbo.PMDMAT0001 WHERE MaterialID = @MaterialID
246

247

248

249
	DECLARE @SumQtyMAT4 DECIMAL(22,2)
250

251
	SELECT @SumQtyMAT4 =  SUM(CONVERT(DECIMAL(22,2),Qty)) FROM @TblMAT4 
252

253
	WHERE (CompanyID = @CompanyID OR @CompanyID = '')
254

255
		AND (LogisticAreaID = @LogisticArea OR @LogisticArea = '')
256

257
		AND (Warehouse = @Warehouse OR @Warehouse = '')
258

259
		AND (Storage = @Storage OR @Storage = '')
260

261
		AND (Bin = @Bin OR @Bin = '')
262

263
		AND StockStatus = '0001'
264

265

266

267
	IF(@Quantity <= @SumQtyMAT4)
268

269
	BEGIN
270

271
		DECLARE @row DECIMAL(22,0) = 0
272

273
		DECLARE @SisaQuantity DECIMAL(22,2) = @Quantity
274

275
		DECLARE @c_materialid VARCHAR(20)
276

277
		DECLARE @c_seq VARCHAR(20)
278

279
		DECLARE @c_qty VARCHAR(20)
280

281
		DECLARE cur_mat4 CURSOR FOR (SELECT MaterialID, SeqID, Qty FROM @TblMAT4 WHERE (CompanyID = @CompanyID OR @CompanyID = '') 
282

283
									AND (LogisticAreaID = @LogisticArea OR @LogisticArea = '') AND (Warehouse = @Warehouse OR @Warehouse = '')	
284

285
									AND (Storage = @Storage OR @Storage = '') AND (Bin = @Bin OR @Bin = '') AND StockStatus = '0001')
286

287
		OPEN cur_mat4
288

289
		FETCH cur_mat4 INTO @c_materialid, @c_seq, @c_qty
290

291
		WHILE @@Fetch_Status = 0
292

293
		BEGIN
294

295
			SET @row = @row + 1
296

297
			DECLARE @QuantityAlocate DECIMAL(22,2)
298

299
			IF(@SisaQuantity <= 0)
300

301
			BREAK
302

303

304

305
			DECLARE @SisaQtyMat4 DECIMAL(22,2)
306

307
			IF(@SisaQuantity > @c_qty)
308

309
			BEGIN 
310

311
				SET @SisaQtyMat4 = 0
312

313
				SET @SisaQuantity = @SisaQuantity - @c_qty
314

315
				SET @QuantityAlocate = @c_qty
316

317
			END
318

319
			ELSE IF(@SisaQuantity < @c_qty)
320

321
			BEGIN  
322

323
				SET @SisaQtyMat4 = @c_qty - @SisaQuantity
324

325
				SET @SisaQuantity = @SisaQuantity - @c_qty	 
326

327
				SET @QuantityAlocate = @c_qty - @SisaQtyMat4
328

329
			END
330

331
			ELSE IF(@SisaQuantity = @c_qty)
332

333
			BEGIN 
334

335
				SET @SisaQtyMat4 = 0
336

337
				SET @SisaQuantity = @SisaQuantity - @c_qty
338

339
				SET @QuantityAlocate = @c_qty
340

341
			END
342

343

344

345
			DECLARE @MaxSeqMat4Detail VARCHAR(20) = (SELECT MAX(SeqID) FROM @TblMAT4)
346

347

348

349
			IF(@DocStatus = '2')
350

351
			BEGIN
352

353
				
354

355
				SET @NewTotalValuation = @MAP_MAT1 * @SisaQtyMat4
356

357
				UPDATE dbo.PMDMAT0004
358

359
				SET Qty = @SisaQtyMat4
360

361
					,TotalValuation = @NewTotalValuation
362

363
					,ChangeBy = @UserID
364

365
					,ChangeDate = @now16
366

367
				----SELECT * FROM dbo.PMDMAT0004
368

369
				WHERE MaterialID = @c_materialid
370

371
					AND SeqID = @c_seq
372

373
				--SELECT @SisaQuantity, @QuantityAlocate
374

375
				IF(@SisaQuantity <= 0)
376

377
				BEGIN
378

379
					INSERT INTO PMDMAT0004
380

381
					SELECT @MaterialID AS MaterialID
382

383
						  ,@MaxSeqMat4Detail + 1 -- @row --pakai row jika quantity alocate displit
384

385
						  ,@CompanyID
386

387
						  ,@LogisticArea
388

389
						  ,@Warehouse
390

391
						  ,@Storage
392

393
						  ,@Bin
394

395
						  ,'0004' AS StockStatus
396

397
						  ,'' AS [GLValuationID]
398

399
						  ,@Quantity --,@QuantityAlocate  --jika quantity alocate displit
400

401
						  ,@MAP_MAT1 * @Quantity AS [TotalValuation]
402

403
						  ,@MaxSeqMat4Detail + 1 --@roq --pakai row jika quantity alocate displit
404

405
						  ,'' AS [SerialNumber]
406

407
						  ,@UserID
408

409
						  ,@now16
410

411
						  ,@UserID
412

413
						  ,@now16
414

415
						  ,'' AS [SORDID]
416

417
						  ,@DocNoHead AS [PRODID]
418

419
						  ,'' AS [INTRID]
420

421
						  ,'' AS [POID]
422

423
						  ,'1'[StockType]
424

425
						  ,@DocIDRef AS [DocIDRef]
426

427
						  ,@DocTypeRef AS [DocTypeRef]
428

429
						  ,@TransTypeRef AS [TransTypeRef]
430

431
					FROM @TblMAT4 
432

433
					WHERE SeqID = @MaxSeqMat4Detail	
434

435
				END
436

437
			END
438

439
			IF(@DocStatus = '4')
440

441
			BEGIN
442

443
				DECLARE @DataProdExist DECIMAL(22,0)
444

445
				SELECT @DataProdExist = COUNT(@MaterialID) FROM @TblMAT4 
446

447
				WHERE MaterialID = @MaterialID
448

449
					AND PRODID = @DocNoHead
450

451
					AND StockStatus = '0004'
452

453
					--AND Qty = @Quantity
454

455

456

457
				IF(@DataProdExist > 0)
458

459
				BEGIN
460

461
					DELETE FROM PMDMAT0004
462

463
					--SELECT * FROM PMDMAT0004 
464

465
					WHERE MaterialID = @MaterialID
466

467
						AND PRODID = @DocNoHead
468

469
						AND Qty = @Quantity
470

471
						AND StockStatus = '0004'
472

473
				END
474

475
				ELSE IF(@DataProdExist <= 0)
476

477
				BEGIN
478

479
					SET @NewTotalValuation = @MAP_MAT1 * @SisaQtyMat4
480

481
					UPDATE dbo.PMDMAT0004
482

483
					SET Qty = @SisaQtyMat4
484

485
						,TotalValuation = @NewTotalValuation
486

487
						,ChangeBy = @UserID
488

489
						,ChangeDate = @now16
490

491
					--SELECT * FROM dbo.PMDMAT0004
492

493
					WHERE MaterialID = @c_materialid
494

495
						AND SeqID = @c_seq
496

497
				END
498

499

500

501
				UPDATE PMDMATWIP
502

503
				SET DocStatus = @DocStatus
504

505
					,StockStatus = '0005'
506

507
					,ChangeBy = @UserID
508

509
					,ChangeDate = @now16
510

511
				--SELECT * FROM PMDMATWIP
512

513
				WHERE MaterialID = @MaterialID
514

515
					AND ProdID = @DocNoHead
516

517
					AND FlowType = @ItemFlow
518

519

520

521
				UPDATE PTRPRODUCTIONITEM
522

523
				SET Status = '2'
524

525
				,ChangeBy = @UserID
526

527
				,ChangeDate = @now16
528

529
				--SELECT * FROM PTRPRODUCTIONITEM
530

531
				WHERE DocNo = @DocNoHead
532

533
					AND MaterialID = @MaterialID
534

535
					END
536

537

538

539
		FETCH cur_mat4 INTO @c_materialid, @c_seq, @c_qty 
540

541
		END
542

543
		CLOSE cur_mat4
544

545
		DEALLOCATE cur_mat4
546

547

548

549
		SET @IsSuccess = 'Y'
550

551
	END
552

553
	ELSE 
554

555
	BEGIN
556

557
		SET @IsSuccess = 'OVERQTY'
558

559
	END
560

561
END
562

563

564

565
IF(@DocType != 'SPK' AND @ItemFLow = 'ISSU' AND (@DocTypeRef <> 'SPK'))
566

567
BEGIN
568

569
	
570

571
	UPDATE PMDMATWIP
572

573
	SET StockStatus = '0005'
574

575
		,ChangeBy = @UserID
576

577
		,ChangeDate = @now16
578

579
	--SELECT * FROM PMDMATWIP
580

581
	WHERE SpkID = @SPK
582

583
		AND MaterialID = @MaterialID
584

585
		AND StockStatus = '0001'
586

587
		AND ProdID = @DocIDRef
588

589

590

591
	UPDATE PTRPRODUCTIONITEM
592

593
	SET Status = '2'
594

595
		,ChangeBy = @UserID
596

597
		,ChangeDate = @now16
598

599
	--SELECT * FROM PTRPRODUCTIONITEM
600

601
	WHERE DocNo = @DocIDRef
602

603
		AND MaterialID = @MaterialID
604

605

606

607
	IF(@DocStatus = '4')
608

609
	BEGIN
610

611
		UPDATE PMDMATWIP
612

613
		SET DocStatus = @DocStatus
614

615
			,StockStatus = '0005'
616

617
			,ChangeBy = @UserID
618

619
			,ChangeDate = @now16
620

621
		--SELECT * FROM PMDMATWIP
622

623
		WHERE SpkID = @SPK
624

625
			AND MaterialID = @MaterialID
626

627
			AND ProdID = @DocNoHead
628

629

630

631
		UPDATE PTRPRODUCTIONITEM
632

633
		SET Status = '2'
634

635
		,ChangeBy = @UserID
636

637
		,ChangeDate = @now16
638

639
		--SELECT * FROM PTRPRODUCTIONITEM
640

641
		WHERE DocNo = @DocNoHead
642

643
			AND MaterialID = @MaterialID
644

645
	END
646

647

648

649
	SET @IsSuccess = 'Y'
650

651
END
652

653

654

655

656

657
IF(@DocType != 'SPK' AND @ItemFLow = 'RCPT' AND @DocStatus = '4')
658

659
BEGIN
660

661
	UPDATE PMDMATWIP
662

663
	SET DocStatus = @DocStatus
664

665
		,StockStatus = '0001'
666

667
		,ChangeBy = @UserID
668

669
		,ChangeDate = @now16
670

671
	--SELECT * FROM PMDMATWIP
672

673
	WHERE MaterialID = @MaterialID
674

675
		AND ProdID = @DocNoHead
676

677
		AND FlowType = @ItemFlow
678

679

680

681
	UPDATE PMDMATWIP
682

683
	SET --DocStatus = @DocStatus
684

685
		StockStatus = '0001'
686

687
		,ChangeBy = @UserID
688

689
		,ChangeDate = @now16
690

691
	--SELECT * FROM PMDMATWIP
692

693
	WHERE MaterialID = @MaterialID
694

695
		AND ProdID = @SPK
696

697

698

699
	UPDATE PTRPRODUCTIONITEM
700

701
	SET Status = '1'
702

703
		,ChangeBy = @UserID
704

705
		,ChangeDate = @now16
706

707
	--SELECT * FROM PTRPRODUCTIONITEM
708

709
	WHERE DocNo = @SPK
710

711
		AND MaterialID = @MaterialID
712

713

714

715
	UPDATE PTRPRODUCTIONITEM
716

717
	SET Status = '1'
718

719
		,ChangeBy = @UserID
720

721
		,ChangeDate = @now16
722

723
	--SELECT * FROM PTRPRODUCTIONITEM
724

725
	WHERE DocNo = @DocNoHead
726

727
		AND MaterialID = @MaterialID
728

729

730

731
	----UPDATE PTRPRODUCTIONHEAD
732

733
	----SET DocStatus = @DocStatus
734

735
	----	,ProcessStatus = 'C'
736

737
	----	,ChangeBy = @UserID
738

739
	----	,ChangeDate = @now16
740

741
	------SELECT * FROM PTRPRODUCTIONHEAD
742

743
	----WHERE DocNo = @SPK
744

745
	----	AND FinishGoods = @MaterialID
746

747

748

749
	SET @IsSuccess = 'Y'
750

751
END
752

753
ELSE SET @IsSuccess = 'Y'
754

755
--IF(@DocType != 'SPK' AND @ItemFLow = 'RCPT' AND @DocStatus = '4' AND @FinishGood = @MaterialID)
756

757
--BEGIN
758

759
--	SELECT 
760

761
--END
762

763

764

765
SELECT @IsSuccess AS IsSuccess
766

767

768

769
DELETE FROM @TblMAT4
770

771

772

773

774

775

776

777

778

779

780

781

782

783

(1-1/3)