Project

General

Profile

Feature #3865 » PRPTSTOCKMUTASI_202509191357.sql

Tri Rizqiaty, 09/19/2025 04:26 PM

 
1
??USE [MinovaES_Tulisan_Dev]
2

3
GO
4

5
/****** Object:  StoredProcedure [dbo].[PRPTSTOCKMUTASI]    Script Date: 17/09/2025 15.39.55 ******/
6

7
SET ANSI_NULLS ON
8

9
GO
10

11
SET QUOTED_IDENTIFIER ON
12

13
GO
14

15
ALTER PROCEDURE [dbo].[PRPTSTOCKMUTASI]
16

17
(
18

19
	@Period VARCHAR(20)
20

21
	,@Warehouse VARCHAR(20)
22

23
	,@MaterialType VARCHAR(20)
24

25
	,@MaterialID VARCHAR(20)
26

27
)
28

29
AS
30

31

32

33
--DECLARE @Period VARCHAR(20) = '202508'
34

35
--DECLARE @Warehouse VARCHAR(20) = ''
36

37
--DECLARE @MaterialType VARCHAR(20) = ''
38

39
--DECLARE @MaterialID VARCHAR(20) = '00000003'
40

41

42

43
DECLARE @StarDate VARCHAR(20) = @Period + '01'
44

45
DECLARE @EndDate VARCHAR(20) = CONVERT(NVARCHAR(8), DATEADD(d, -1, DATEADD(m, 1,@StarDate)), 112)
46

47

48

49
DECLARE @TblStock TABLE
50

51
(
52

53
	MaterialID VARCHAR(20)
54

55
	,CompanyID VARCHAR(20)
56

57
	,LogisticAreaID VARCHAR(20)
58

59
	,Warehouse VARCHAR(20)
60

61
	,Storage VARCHAR(20)
62

63
	,Bin VARCHAR(20)
64

65
	,StockStatus VARCHAR(20)
66

67
	,Qty DECIMAL(22,2)
68

69
	,MaterialDesc VARCHAR(500)
70

71
	,WarehouseDesc VARCHAR(500)
72

73
)
74

75

76

77
INSERT INTO @TblStock
78

79
SELECT mat4.MaterialID, mat4.CompanyID, mat4.LogisticAreaID, mat4.Warehouse, mat4.Storage, mat4.Bin, mat4.StockStatus, mat4.Qty
80

81
		,mat4.MaterialID + ' - ' + mat1.ExternalID AS MaterialDesc
82

83
		,wh.Description AS WarehouseDesc
84

85
FROM dbo.PMDMAT0004 AS mat4
86

87
LEFT JOIN dbo.PMDMAT0001 AS mat1
88

89
	ON mat1.MaterialID = mat4.MaterialID
90

91
LEFT JOIN dbo.PCMFILOWAREHOUSE AS wh
92

93
	ON wh.Warehouse = mat4.Warehouse
94

95
WHERE mat4.StockStatus = '0001'
96

97
	AND (mat4.MaterialID = @MaterialID OR @MaterialID = '')
98

99
	AND (mat1.MaterialType = @MaterialType OR @MaterialType = '')
100

101
	AND (mat4.Warehouse = @Warehouse OR @Warehouse = '')
102

103

104

105
DECLARE @TblDoc TABLE
106

107
(
108

109
	DocNo VARCHAR(20)
110

111
	,DocType VARCHAR(20)
112

113
	,DocDate VARCHAR(20)
114

115
	,Description VARCHAR(500)
116

117
	,MaterialID VARCHAR(20)
118

119
	,MaterialType VARCHAR(20)
120

121
	,Warehouse VARCHAR(20)
122

123
	,Quantity DECIMAL(22,2)
124

125
	,ItemFlow VARCHAR(20)
126

127
	,QtyAdjust DECIMAL(22,2)
128

129
	,DocTypeDesc VARCHAR(500)
130

131
	,DocDateDesc VARCHAR(20)
132

133
	,MaterialDesc VARCHAR(500)
134

135
	,MatTypeDesc VARCHAR(500)
136

137
	,WarehouseDesc VARCHAR(500)
138

139
)
140

141

142

143
INSERT INTO @TblDoc
144

145
SELECT DISTINCT head.DocNo
146

147
				,head.DocType
148

149
				,head.DocDate
150

151
				,head.Description
152

153
				,item.MaterialID
154

155
				,item.MaterialType
156

157
				,ISNULL(CASE WHEN item.Warehouse <> '' THEN item.Warehouse ELSE head.Warehouse END,'') AS Warehouse
158

159
				,item.Quantity
160

161
				,item.ItemFlow
162

163
				,item.QtyAdjust
164

165
				,dt.DocTypeDesc
166

167
				,dbo.fn_formatdatetime(head.DocDate,'dd mmmm yyyy') AS DocDateDesc
168

169
				,item.MaterialID + ' - ' + mat1.ExternalID AS MaterialDesc
170

171
				,mattype.Description AS MatTypeDesc
172

173
				,wh.Description AS WarehouseDesc
174

175
FROM dbo.PTRMATERIALHEAD AS head WITH(NOLOCK)
176

177
LEFT JOIN dbo.PTRMATERIALITEM AS item WITH(NOLOCK)
178

179
	ON head.DocNo = item.DocNo
180

181
LEFT JOIN dbo.PCMBSDOCTYPE AS dt
182

183
	ON dt.DocType = head.DocType
184

185
LEFT JOIN dbo.PMDMAT0001 AS mat1
186

187
	ON mat1.MaterialID = item.MaterialID
188

189
LEFT JOIN dbo.PCMFILOMATTYPE AS mattype
190

191
	ON mattype.MaterialType = item.MaterialType
192

193
LEFT JOIN dbo.PCMFILOWAREHOUSE AS wh
194

195
	ON wh.Warehouse = (CASE WHEN item.Warehouse <> '' THEN item.Warehouse ELSE head.Warehouse END)
196

197
WHERE ((CASE WHEN item.Warehouse <> '' THEN item.Warehouse ELSE head.Warehouse END) = @Warehouse OR @Warehouse = '')
198

199
	AND (item.MaterialType = @MaterialType OR @MaterialType = '')
200

201
	AND (item.MaterialID = @MaterialID OR @MaterialID = '')
202

203
	AND (head.DocDate >= @StarDate AND head.DocDate <= @EndDate)
204

205
	AND item.MaterialID IS NOT NULL
206

207

208

209
--SELECT * FROM @TblDoc
210

211

212

213
DECLARE @TblDocQty TABLE
214

215
(
216

217
	DocNo VARCHAR(20)
218

219
	,DocType VARCHAR(20)
220

221
	,DocDate VARCHAR(20)
222

223
	,Description VARCHAR(500)
224

225
	,MaterialID VARCHAR(20)
226

227
	,MaterialType VARCHAR(20)
228

229
	,Warehouse VARCHAR(20)
230

231
	,Quantity DECIMAL(22,2)
232

233
	,ItemFlow VARCHAR(20)
234

235
	,QtyAdjust DECIMAL(22,2)
236

237
	,DocTypeDesc VARCHAR(500)
238

239
	,DocDateDesc VARCHAR(20)
240

241
	,MaterialDesc VARCHAR(500)
242

243
	,MatTypeDesc VARCHAR(500)
244

245
	,WarehouseDesc VARCHAR(500)
246

247
	,QtyIn DECIMAL(22,2)
248

249
	,QtyOut DECIMAL(22,2)
250

251
	,BalanceDoc DECIMAL(22,2)
252

253
)
254

255

256

257
INSERT INTO @TblDocQty
258

259
SELECT *
260

261
	,Quantity AS QtyIn
262

263
	,0 AS QtyOut
264

265
	,Quantity-0 AS BalanceDoc
266

267
FROM @TblDoc WHERE DocType IN ('RCSP','RTCU') 
268

269

270

271
INSERT INTO @TblDocQty
272

273
SELECT *
274

275
	,0 AS QtyIn
276

277
	,Quantity AS QtyOut
278

279
	,0-Quantity AS BalanceDoc
280

281
FROM @TblDoc WHERE DocType IN ('GICU','RTSP')
282

283

284

285
INSERT INTO @TblDocQty
286

287
SELECT *
288

289
	,Quantity AS QtyIn
290

291
	,0 AS QtyOut
292

293
	,Quantity-0 AS BalanceDoc
294

295
FROM @TblDoc WHERE DocType IN ('MTPR') AND ItemFlow = 'RCPT'
296

297

298

299
INSERT INTO @TblDocQty
300

301
SELECT *
302

303
	,0 AS QtyIn
304

305
	,Quantity AS QtyOut
306

307
	,0-Quantity AS BalanceDoc
308

309
FROM @TblDoc WHERE DocType IN ('MTPR') AND ItemFlow = 'ISSU'
310

311

312

313
INSERT INTO @TblDocQty
314

315
SELECT *
316

317
	,QtyAdjust AS QtyIn
318

319
	,0 AS QtyOut
320

321
	,QtyAdjust-0 AS BalanceDoc
322

323
FROM @TblDoc WHERE DocType IN ('SA') AND ItemFlow = 'RCPT'
324

325

326

327
INSERT INTO @TblDocQty
328

329
SELECT *
330

331
	,0 AS QtyIn
332

333
	,QtyAdjust AS QtyOut
334

335
	,0-QtyAdjust AS BalanceDoc
336

337
FROM @TblDoc WHERE DocType IN ('SA') AND ItemFlow = 'ISSU'
338

339

340

341
DECLARE @TblResult TABLE
342

343
(
344

345
	RowNo DECIMAL(22,0)
346

347
	,DocNo VARCHAR(20)
348

349
	,DocType VARCHAR(20)
350

351
	,DocDate VARCHAR(20)
352

353
	,Description VARCHAR(500)
354

355
	,MaterialID VARCHAR(20)
356

357
	,MaterialType VARCHAR(20)
358

359
	,Warehouse VARCHAR(20)
360

361
	,Quantity DECIMAL(22,2)
362

363
	,ItemFlow VARCHAR(20)
364

365
	,QtyAdjust DECIMAL(22,2)
366

367
	,DocTypeDesc VARCHAR(500)
368

369
	,DocDateDesc VARCHAR(20)
370

371
	,MaterialDesc VARCHAR(500)
372

373
	,MatTypeDesc VARCHAR(500)
374

375
	,WarehouseDesc VARCHAR(500)
376

377
	,QtyIn DECIMAL(22,2)
378

379
	,QtyOut DECIMAL(22,2)
380

381
	,Balance DECIMAL(22,2)
382

383
	,BalanceAwal DECIMAL(22,2)
384

385
	,BalanceAkhir DECIMAL(22,2)
386

387
)
388

389
INSERT INTO @TblResult
390

391
SELECT ROW_NUMBER() OVER (PARTITION BY tbldoc.MaterialID, tbldoc.Warehouse ORDER BY  tbldoc.Warehouse, tbldoc.MaterialID, tbldoc.DocNo ASC) AS RowNo
392

393
		,*
394

395
		,0 AS BalanceAwal
396

397
		,0 AS BalancAkhir
398

399
FROM @TblDocQty AS tbldoc
400

401

402

403
INSERT INTO @TblResult
404

405
SELECT DISTINCT 0 AS RowNo
406

407
		,'' AS DocNo
408

409
		,'' AS DocType
410

411
		,'' AS DocDate
412

413
		,'Saldo awal' AS Description
414

415
		,tblstok.MaterialID AS MaterialID
416

417
		,'' AS MaterialType
418

419
		,tblstok.Warehouse AS Warehouse 
420

421
		,tblstok.Qty AS Quantity 
422

423
		,'' AS ItemFlow
424

425
		,0 AS QtyAdjust
426

427
		,'' AS DocTypeDesc
428

429
		,'' AS DocDateDesc
430

431
		,tblstok.MaterialDesc AS MaterialDesc 
432

433
		,'' AS MatTypeDesc
434

435
		,tblstok.WarehouseDesc AS WarehouseDesc
436

437
		,0 AS QtyIn
438

439
		,0 AS QtyOut 
440

441
		,0 AS Balance
442

443
		,tblstok.Qty AS BalanceAwal
444

445
		,0 AS BalancAkhir
446

447
FROM @TblStock AS tblstok
448

449
LEFT JOIN ( SELECT tbldoc.Warehouse, tbldoc.MaterialID, SUM(tbldoc.BalanceDoc) AS SumBalance
450

451
			FROM @TblDocQty AS tbldoc
452

453
			GROUP BY tbldoc.Warehouse, tbldoc.MaterialID ) AS tbldocsum
454

455
	ON tbldocsum.MaterialID = tblstok.MaterialID
456

457
WHERE tbldocsum.Warehouse = tblstok.Warehouse
458

459

460

461
INSERT INTO @TblResult
462

463
SELECT DISTINCT '9999999999' AS RowNo
464

465
		,'' AS DocNo
466

467
		,'' AS DocType
468

469
		,'' AS DocDate
470

471
		,'Stock akhir' AS Description
472

473
		,tblstk.MaterialID AS MaterialID
474

475
		,'' AS MaterialType
476

477
		,tblstk.Warehouse AS Warehouse 
478

479
		,tblstk.Qty AS Quantity 
480

481
		,'' AS ItemFlow
482

483
		,ISNULL(tbldocsum.SumBalance,0) AS QtyAdjust ---- diisi sum balance dr document
484

485
		,'' AS DocTypeDesc
486

487
		,'' AS DocDateDesc
488

489
		,tblstk.MaterialDesc AS MaterialDesc 
490

491
		,'' AS MatTypeDesc
492

493
		,tblstk.WarehouseDesc AS WarehouseDesc
494

495
		,0 AS QtyIn
496

497
		,0 AS QtyOut 
498

499
		,0 AS Balance
500

501
		,0 AS BalanceAwal
502

503
		,tblstk.Qty + ISNULL(tbldocsum.SumBalance,0) AS BalancAkhir
504

505
FROM @TblStock AS tblstk
506

507
LEFT JOIN ( SELECT tbldoc.Warehouse, tbldoc.MaterialID, SUM(tbldoc.BalanceDoc) AS SumBalance
508

509
			FROM @TblDocQty AS tbldoc
510

511
			GROUP BY tbldoc.Warehouse, tbldoc.MaterialID ) AS tbldocsum
512

513
	ON tbldocsum.MaterialID = tblstk.MaterialID
514

515
WHERE tbldocsum.Warehouse = tblstk.Warehouse
516

517

518

519
INSERT INTO @TblResult
520

521
SELECT DISTINCT '0' AS RowNo
522

523
		,'' AS DocNo
524

525
		,'' AS DocType
526

527
		,'' AS DocDate
528

529
		,'Stock awal' AS Description
530

531
		,tbldocsum.MaterialID AS MaterialID
532

533
		,'' AS MaterialType
534

535
		,tbldocsum.Warehouse AS Warehouse 
536

537
		,0 AS Quantity 
538

539
		,'' AS ItemFlow
540

541
		,ISNULL(tbldocsum.SumBalance,0) AS QtyAdjust ---- diisi sum balance dr document
542

543
		,'' AS DocTypeDesc
544

545
		,'' AS DocDateDesc
546

547
		,'' AS MaterialDesc 
548

549
		,'' AS MatTypeDesc
550

551
		,'' AS WarehouseDesc
552

553
		,0 AS QtyIn
554

555
		,0 AS QtyOut 
556

557
		,0 AS Balance
558

559
		,0 AS BalanceAwal
560

561
		,0 AS BalancAkhir
562

563
FROM ( SELECT tbldoc.Warehouse, tbldoc.MaterialID, tbldoc.WarehouseDesc, tbldoc.MaterialDesc, SUM(tbldoc.BalanceDoc) AS SumBalance
564

565
			FROM @TblDocQty AS tbldoc
566

567
			GROUP BY tbldoc.Warehouse, tbldoc.MaterialID, tbldoc.WarehouseDesc, tbldoc.MaterialDesc ) AS tbldocsum
568

569
WHERE tbldocsum.Warehouse = ''
570

571

572

573
INSERT INTO @TblResult
574

575
SELECT DISTINCT '9999999999' AS RowNo
576

577
		,'' AS DocNo
578

579
		,'' AS DocType
580

581
		,'' AS DocDate
582

583
		,'Stock akhir' AS Description
584

585
		,tbldocsum.MaterialID AS MaterialID
586

587
		,'' AS MaterialType
588

589
		,tbldocsum.Warehouse AS Warehouse 
590

591
		,0 AS Quantity 
592

593
		,'' AS ItemFlow
594

595
		,ISNULL(tbldocsum.SumBalance,0) AS QtyAdjust ---- diisi sum balance dr document
596

597
		,'' AS DocTypeDesc
598

599
		,'' AS DocDateDesc
600

601
		,'' AS MaterialDesc 
602

603
		,'' AS MatTypeDesc
604

605
		,'' AS WarehouseDesc
606

607
		,0 AS QtyIn
608

609
		,0 AS QtyOut 
610

611
		,0 AS Balance
612

613
		,0 AS BalanceAwal
614

615
		,ISNULL(tbldocsum.SumBalance,0) AS BalancAkhir
616

617
FROM ( SELECT tbldoc.Warehouse, tbldoc.MaterialID, tbldoc.WarehouseDesc, tbldoc.MaterialDesc, SUM(tbldoc.BalanceDoc) AS SumBalance
618

619
			FROM @TblDocQty AS tbldoc
620

621
			GROUP BY tbldoc.Warehouse, tbldoc.MaterialID, tbldoc.WarehouseDesc, tbldoc.MaterialDesc ) AS tbldocsum
622

623
WHERE tbldocsum.Warehouse = ''
624

625

626

627

628

629
SELECT * 
630

631
		,dbo.fn_formatdatetime(@StarDate, 'dd/mm/yyyy') AS StartDateDesc
632

633
		,dbo.fn_formatdatetime(@EndDate, 'dd/mm/yyyy') AS EndDateDesc
634

635
		,dbo.fn_formatdatetime(@StarDate, 'mmmm yyyy') AS PeriodeDesc
636

637
FROM @TblResult
638

639
ORDER BY MaterialID, Warehouse, RowNo
640

641

642

643
--SELECT * 
644

645
--		,dbo.fn_formatdatetime(@StarDate, 'dd/mm/yyyy') AS StartDateDesc
646

647
--		,dbo.fn_formatdatetime(@EndDate, 'dd/mm/yyyy') AS EndDateDesc
648

649
--		,dbo.fn_formatdatetime(@StarDate, 'mmmm yyyy') AS PeriodeDesc
650

651
--FROM @TblDocQty AS DocQty
652

653

654

655

656

657

658

659

(2-2/12)