Project

General

Profile

Feature #2818 » PRPTFIBUKUBESAR_20240626_WithCashActDiTblPosting.sql

Tri Rizqiaty, 06/26/2024 03:17 PM

 
1
??USE [MinovaES_Easy]
2

3
GO
4

5
/****** Object:  StoredProcedure [dbo].[PRPTFIBUKUBESAR]    Script Date: 26/06/2024 13.48.50 ******/
6

7
SET ANSI_NULLS ON
8

9
GO
10

11
SET QUOTED_IDENTIFIER ON
12

13
GO
14

15
ALTER PROCEDURE [dbo].[PRPTFIBUKUBESAR]
16

17
(
18

19
	@FiscalYear VARCHAR(20)
20

21
	,@FiscalPeriod VARCHAR(20)
22

23
	,@FiscalPeriodTo VARCHAR(20)
24

25
	,@CompanyID VARCHAR(20)
26

27
	,@GlAccount VARCHAR(20)
28

29
	,@BusinessUnit VARCHAR(20)
30

31
	,@AccountGroup VARCHAR(20)
32

33
	,@SubLedgerType VARCHAR(20)
34

35
	,@CostCenter VARCHAR(20)
36

37
)
38

39
AS
40

41

42

43
--DECLARE @FiscalYear VARCHAR(20) = '2022';
44

45
--DECLARE @FiscalPeriod VARCHAR(20) = '02';
46

47
--DECLARE @FiscalPeriodTo VARCHAR(20) = '02';
48

49
--DECLARE @CompanyID VARCHAR(20) = '';
50

51
--DECLARE @GlAccount VARCHAR(20) = '';
52

53
--DECLARE @BusinessUnit VARCHAR(20) = '';
54

55
--DECLARE @AccountGroup VARCHAR(20) = '';
56

57
--DECLARE @SubLedgerType VARCHAR(20) = '';
58

59
--DECLARE @CostCenter VARCHAR(20) = '';
60

61

62

63
DECLARE @BeforePeriod VARCHAR(20)
64

65
    = SUBSTRING(CONVERT(NVARCHAR(8), DATEADD(d, -1, @FiscalYear + @FiscalPeriod + '01'), 112), 5, 2);
66

67
DECLARE @BeforeYear VARCHAR(20)
68

69
    = LEFT(CONVERT(NVARCHAR(8), DATEADD(d, -1, @FiscalYear + @FiscalPeriod + '01'), 112), 4);
70

71

72

73

74

75
DECLARE @TblSaldo TABLE
76

77
(
78

79
    RowNumber DECIMAL(18, 0),
80

81
    GLAccountID VARCHAR(30),
82

83
    GLAccounntDesc VARCHAR(250),
84

85
    DocNo VARCHAR(30),
86

87
    DocDesc VARCHAR(500),
88

89
    FiscalYear VARCHAR(20),
90

91
    FiscalPeriod VARCHAR(20),
92

93
    PostingDate VARCHAR(50),
94

95
    Currency VARCHAR(20),
96

97
    AmountDebet DECIMAL(30, 2),
98

99
    AmountCredit DECIMAL(30, 2),
100

101
    AmountBalance DECIMAL(30, 2),
102

103
    CompCurr VARCHAR(20),
104

105
    AmountDebetCompCurr DECIMAL(30, 2),
106

107
    AmountCreditCompCurr DECIMAL(30, 2),
108

109
    AmountBalanceCompCurr DECIMAL(30, 2),
110

111
    subledgertype VARCHAR(50),
112

113
    subledgerid VARCHAR(50),
114

115
    subledgerdesc VARCHAR(250),
116

117
    AccSubType VARCHAR(20),
118

119
    AccClass VARCHAR(20),
120

121
	ItemDesc VARCHAR(500)
122

123
);
124

125

126

127
DECLARE @TblSaldoSum TABLE
128

129
(
130

131
    AccSubType VARCHAR(20),
132

133
    AccClass VARCHAR(20),
134

135
    GLAccountID VARCHAR(50),
136

137
    AmountDebet DECIMAL(30, 2),
138

139
    AmountCredit DECIMAL(30, 2),
140

141
    AmountBalance DECIMAL(30, 2),
142

143
    AmountDebetCompCurr DECIMAL(30, 2),
144

145
    AmountCreditCompCurr DECIMAL(30, 2),
146

147
    AmountBalanceCompCurr DECIMAL(30, 2)
148

149
);
150

151

152

153
DECLARE @TPosting TABLE
154

155
(
156

157
    rowno DECIMAL(18, 0),
158

159
    [DocNo] [VARCHAR](15) NOT NULL,
160

161
    [DocItemID] [BIGINT] NOT NULL,
162

163
    [DocType] [VARCHAR](5) NULL,
164

165
    [DocDate] [VARCHAR](8) NULL,
166

167
    [DocStatus] [VARCHAR](2) NULL,
168

169
    [FiscalYear] [VARCHAR](5) NULL,
170

171
    [FiscalPeriod] [VARCHAR](5) NULL,
172

173
    [CompanyID] [VARCHAR](5) NULL,
174

175
    [BusinessUnit] [VARCHAR](10) NULL,
176

177
    [CostCenter] [VARCHAR](10) NULL,
178

179
    [SLType] [VARCHAR](30) NULL,
180

181
    [SLID] [VARCHAR](30) NULL,
182

183
    [PostingDate] [VARCHAR](8) NULL,
184

185
    [GLAccountID] [VARCHAR](20) NULL,
186

187
    [Currency] [VARCHAR](5) NULL,
188

189
    [AmountDebet] [DECIMAL](18, 2) NULL,
190

191
    [AmountCredit] [DECIMAL](18, 2) NULL,
192

193
    [AmountDebetCompCurr] [DECIMAL](18, 2) NULL,
194

195
    [AmountCreditCompCurr] [DECIMAL](18, 2) NULL,
196

197
    [CreateBy] [VARCHAR](18) NULL,
198

199
    [CreateDate] [VARCHAR](14) NULL,
200

201
    [ChangeBy] [VARCHAR](18) NULL,
202

203
    [ChangeDate] [VARCHAR](18) NULL,
204

205
    [CompanyCurrency] [VARCHAR](5) NULL,
206

207
    [ItemStatus] [VARCHAR](2) NULL
208

209
	,CashActivityType  [VARCHAR](50) 
210

211
	,CashActivityDetail [VARCHAR](50)
212

213
);
214

215

216

217
INSERT INTO @TPosting
218

219
SELECT DISTINCT
220

221
       ROW_NUMBER() OVER (PARTITION BY post.GLAccountID ORDER BY post.PostingDate, post.GLAccountID ASC),
222

223
       *
224

225
FROM dbo.PTRFILOPOSTING AS post
226

227
WHERE post.FiscalYear = @FiscalYear
228

229
      --AND (CONVERT(DECIMAL(22,0),post.FiscalPeriod) BETWEEN CONVERT(DECIMAL(22,0),@FiscalPeriod) AND CONVERT(DECIMAL(22,0),@FiscalPeriodTo))
230

231
      AND (post.FiscalPeriod
232

233
      BETWEEN @FiscalPeriod AND @FiscalPeriodTo
234

235
          )
236

237
      AND
238

239
      (
240

241
          post.GLAccountID = @GlAccount
242

243
          OR @GlAccount = ''
244

245
      )
246

247
      AND
248

249
      (
250

251
          post.CostCenter = @CostCenter
252

253
          OR @CostCenter = ''
254

255
      )
256

257
      AND
258

259
      (
260

261
          post.CompanyID = @CompanyID
262

263
          OR @CompanyID = ''
264

265
      );
266

267

268

269

270

271
INSERT INTO @TblSaldo
272

273
SELECT DISTINCT
274

275
       docpost.rowno,
276

277
       gl.GlAccount,
278

279
       gl.Description,
280

281
       docpost.DocNo,
282

283
       dochead.Description AS DocDesc,
284

285
       docpost.FiscalYear,
286

287
       docpost.FiscalPeriod,
288

289
       dbo.fn_formatdatetime_indonesia(docpost.PostingDate, 'dd/mm/yyyy') AS PostingDate,
290

291
       curr.CurrencyDescription,
292

293
       docpost.AmountDebet,
294

295
       docpost.AmountCredit,
296

297
       0,
298

299
       compcurr.CurrencyDescription,
300

301
       docpost.AmountDebetCompCurr,
302

303
       docpost.AmountCreditCompCurr,
304

305
       0,
306

307
       fltyp.Description AS subledgertype,
308

309
       fintem.SubLedgerID AS subledgerid,
310

311
       SL.[Description] AS subledgerdesc,
312

313
       gl.AccountSubTyp,
314

315
       gl.AccountClass,   
316

317
	   fintem.Description itemdesc
318

319
FROM dbo.PCMFILOCOAGL AS gl
320

321
    LEFT JOIN @TPosting AS docpost
322

323
        ON gl.GlAccount = docpost.GLAccountID
324

325
    LEFT JOIN dbo.PTRFINANCEHEAD AS dochead
326

327
        ON dochead.DocNo = docpost.DocNo
328

329
           AND
330

331
           (
332

333
               docpost.FiscalYear = @FiscalYear
334

335
               OR @FiscalYear = ''
336

337
           )
338

339
           AND (CONVERT(DECIMAL(22, 0), docpost.FiscalPeriod) >= CONVERT(DECIMAL(22, 0), @FiscalPeriod))
340

341
		   --LEFT JOIN PTRFINANCEITEM AS docitem WITH (NOLOCK) ON dochead.DocNo = docitem.DocNo
342

343
		   --	and docitem.GLAccountID =  gl.GlAccount
344

345
    LEFT JOIN dbo.PHRPYCURR AS curr
346

347
        ON curr.Currency = docpost.Currency
348

349
    LEFT JOIN dbo.PHRPYCURR AS compcurr
350

351
        ON compcurr.Currency = docpost.CompanyCurrency
352

353
    LEFT JOIN dbo.PTRFINANCEITEM AS fintem
354

355
        ON fintem.DocNo = dochead.DocNo
356

357
           AND fintem.GLAccountID = gl.GlAccount AND docpost.DocItemID = fintem.DocItemID
358

359
    LEFT JOIN PCMFILOSLTYPE AS fltyp
360

361
        ON fintem.SubLedgerType = fltyp.SubLedgerType
362

363
           AND fintem.GLAccountID = gl.GlAccount
364

365
    LEFT JOIN PMDSL0001 AS SL
366

367
        ON SL.SubLedgerID = fintem.SubLedgerID
368

369
WHERE (
370

371
          gl.AccountClass = @AccountGroup
372

373
          OR @AccountGroup = ''
374

375
      )
376

377
      AND
378

379
      (
380

381
          gl.GlAccount = @GlAccount
382

383
          OR @GlAccount = ''
384

385
      )
386

387
      AND
388

389
      (
390

391
          fintem.SubLedgerType = @SubLedgerType
392

393
          OR @SubLedgerType = ''
394

395
      )
396

397
          
398

399
--            AND ( docpost.FiscalYear = @FiscalYear OR @FiscalYear = '' )
400

401
--            AND ( docpost.FiscalPeriod = @FiscalPeriod OR @FiscalPeriod = '' )
402

403
--AND (docpost.CostCenter = @CostCenter OR @CostCenter = '')
404

405
ORDER BY gl.GlAccount;
406

407

408

409

410

411
DECLARE @TableGL TABLE
412

413
(
414

415
    GLAccountID VARCHAR(20) --, AccSubType VARCHAR(20), AccClass VARCHAR(20)
416

417
);
418

419

420

421
IF (@SubLedgerType <> '')
422

423
BEGIN
424

425
    INSERT INTO @TableGL
426

427
    SELECT DISTINCT
428

429
           GLAccountID --, AccSubType, AccClass
430

431
    FROM @TblSaldo;
432

433
END;
434

435
ELSE
436

437
BEGIN
438

439
    INSERT INTO @TableGL
440

441
    SELECT DISTINCT
442

443
           GlAccount --, AccountSubTyp, AccountClass
444

445
    FROM PCMFILOCOAGL;
446

447
END;
448

449

450

451
INSERT INTO @TblSaldo
452

453
SELECT DISTINCT
454

455
       '0',
456

457
       gl.GlAccount,
458

459
       gl.Description,
460

461
       '',
462

463
       'Saldo Awal',
464

465
       saldoawal.FiscalYear,
466

467
       saldoawal.FiscalPeriod,
468

469
       '',
470

471
       saldoawal.Currency,
472

473
       0,   --saldoawal.AmountDebet ,
474

475
       0,   --saldoawal.AmountCredit ,
476

477
       CASE
478

479
           WHEN gl.AccountType = 'PL'
480

481
                AND @FiscalPeriod = '01' THEN
482

483
               0
484

485
           ELSE
486

487
               ISNULL(saldoawal.AmountBalance, 0)
488

489
       END, --saldoawal.AmountBalance ,
490

491
       saldoawal.CompanyCurrency,
492

493
       0,   --saldoawal.AmountDebetCompCurr ,
494

495
       0,   --saldoawal.AmountCreditCompCurr ,
496

497
       CASE
498

499
           WHEN gl.AccountType = 'PL'
500

501
                AND @FiscalPeriod = '01' THEN
502

503
               0
504

505
           ELSE
506

507
               ISNULL(saldoawal.AmountBalanceCompCurr, 0)
508

509
       END, --saldoawal.AmountBalanceCompCurr ,
510

511
       '',
512

513
       '',
514

515
       '',
516

517
       gl.AccountSubTyp,
518

519
       gl.AccountClass,
520

521
	   ''
522

523
FROM dbo.PCMFILOCOAGL AS gl
524

525
    INNER JOIN @TableGL AS tgl
526

527
        ON gl.GlAccount = tgl.GLAccountID
528

529
    LEFT JOIN dbo.PTRFICOMPACCBALANCE AS saldoawal
530

531
        ON gl.GlAccount = saldoawal.GlAccount
532

533
           AND saldoawal.FiscalPeriod = @BeforePeriod
534

535
           AND saldoawal.FiscalYear = @BeforeYear
536

537
           AND
538

539
           (
540

541
               saldoawal.BusinessUnit = @BusinessUnit
542

543
               OR @BusinessUnit = ''
544

545
           )
546

547
           AND
548

549
           (
550

551
               saldoawal.CompanyID = @CompanyID
552

553
               OR @CompanyID = ''
554

555
           )
556

557
WHERE (
558

559
          gl.AccountClass = @AccountGroup
560

561
          OR @AccountGroup = ''
562

563
      )
564

565
      AND
566

567
      (
568

569
          gl.GlAccount = @GlAccount
570

571
          OR @GlAccount = ''
572

573
      )
574

575
      AND
576

577
      (
578

579
          saldoawal.CostCenter = @CostCenter
580

581
          OR @CostCenter = ''
582

583
      );
584

585

586

587
INSERT INTO @TblSaldoSum
588

589
SELECT DISTINCT
590

591
       ts.AccSubType,
592

593
       ts.AccClass,
594

595
       ts.GLAccountID, --,ts.FiscalYear ,ts.FiscalPeriod
596

597
       SUM(ts.AmountDebet),
598

599
       SUM(ts.AmountCredit),
600

601
       SUM(ts.AmountBalance),
602

603
       SUM(ts.AmountDebetCompCurr),
604

605
       SUM(ts.AmountCreditCompCurr),
606

607
       SUM(ts.AmountBalanceCompCurr)
608

609
FROM @TblSaldo AS ts
610

611
GROUP BY ts.AccSubType,
612

613
         ts.AccClass,
614

615
         ts.GLAccountID; --,ts.FiscalYear ,ts.FiscalPeriod
616

617

618

619
INSERT INTO @TblSaldo
620

621
SELECT DISTINCT
622

623
       '9999999999999',
624

625
       saldoawal.GLAccountID,
626

627
       saldoawal.GLAccounntDesc,
628

629
       '',
630

631
       'Saldo Akhir',
632

633
       @FiscalYear,
634

635
       @FiscalPeriodTo,
636

637
       '',
638

639
       saldoawal.Currency,
640

641
       saldosum.AmountDebet,
642

643
       saldosum.AmountCredit,
644

645
       --saldoawal.AmountBalance ,
646

647
       CASE
648

649
           WHEN saldoawal.AccSubType = 'AS' THEN
650

651
               ISNULL(saldoawal.AmountBalance, 0) + ISNULL(saldosum.AmountDebet, 0) - ISNULL(saldosum.AmountCredit, 0)
652

653
           WHEN saldoawal.AccSubType = 'LI' THEN
654

655
               CASE
656

657
                   WHEN saldoawal.AccClass = 'EQX' THEN
658

659
       (ISNULL(saldoawal.AmountBalance, 0) + ISNULL(saldosum.AmountCredit, 0) + ISNULL(saldosum.AmountDebet, 0))
660

661
                   ELSE
662

663
       (ISNULL(saldoawal.AmountBalance, 0) + ISNULL(saldosum.AmountCredit, 0) - ISNULL(saldosum.AmountDebet, 0)) * -1
664

665
               END
666

667
           WHEN saldoawal.AccSubType = 'IN' THEN
668

669
       (ISNULL(saldoawal.AmountBalance, 0) + ISNULL(saldosum.AmountCredit, 0) - ISNULL(saldosum.AmountDebet, 0)) * -1
670

671
           WHEN saldoawal.AccSubType = 'EX' THEN
672

673
               ISNULL(saldoawal.AmountBalance, 0) + ISNULL(saldosum.AmountDebet, 0) - ISNULL(saldosum.AmountCredit, 0)
674

675
       END AmountBalanceNew,
676

677
       saldoawal.CompCurr,
678

679
       saldosum.AmountDebetCompCurr,
680

681
       saldosum.AmountCreditCompCurr,
682

683
       --saldoawal.AmountBalanceCompCurr ,
684

685
       CASE
686

687
           WHEN saldoawal.AccSubType = 'AS' THEN
688

689
               ISNULL(saldoawal.AmountBalanceCompCurr, 0) + ISNULL(saldosum.AmountDebetCompCurr, 0)
690

691
               - ISNULL(saldosum.AmountCreditCompCurr, 0)
692

693
           WHEN saldoawal.AccSubType = 'LI' THEN
694

695
               CASE
696

697
                   WHEN saldoawal.AccClass = 'EQX' THEN
698

699
       (ISNULL(saldoawal.AmountBalanceCompCurr, 0) + ISNULL(saldosum.AmountCreditCompCurr, 0)
700

701
        + ISNULL(saldosum.AmountDebetCompCurr, 0)
702

703
       )
704

705
                   ELSE
706

707
       (ISNULL(saldoawal.AmountBalanceCompCurr, 0) + ISNULL(saldosum.AmountCreditCompCurr, 0)
708

709
        - ISNULL(saldosum.AmountDebetCompCurr, 0)
710

711
       ) * -1
712

713
               END
714

715
           WHEN saldoawal.AccSubType = 'IN' THEN
716

717
       (ISNULL(saldoawal.AmountBalanceCompCurr, 0) + ISNULL(saldosum.AmountCreditCompCurr, 0)
718

719
        - ISNULL(saldosum.AmountDebetCompCurr, 0)
720

721
       ) * -1
722

723
           WHEN saldoawal.AccSubType = 'EX' THEN
724

725
               ISNULL(saldoawal.AmountBalanceCompCurr, 0) + ISNULL(saldosum.AmountDebetCompCurr, 0)
726

727
               - ISNULL(saldosum.AmountCreditCompCurr, 0)
728

729
       END AmountBalanceCompCurrNew,
730

731
       '',
732

733
       '',
734

735
       '',
736

737
       saldoawal.AccSubType,
738

739
       saldoawal.AccClass,
740

741
	   saldoawal.ItemDesc
742

743
FROM @TblSaldo AS saldoawal
744

745
    LEFT JOIN @TblSaldoSum AS saldosum
746

747
        ON saldosum.AccSubType = saldoawal.AccSubType
748

749
           AND saldosum.AccClass = saldoawal.AccClass
750

751
WHERE saldoawal.DocDesc = 'Saldo Awal'
752

753
      AND saldoawal.GLAccountID = saldosum.GLAccountID;
754

755

756

757
/*
758

759
INSERT  INTO @TblSaldo
760

761
        SELECT DISTINCT
762

763
                '9999999999999' ,
764

765
                gl.GlAccount ,
766

767
                gl.Description ,
768

769
                '' ,
770

771
                'Saldo Akhir' ,
772

773
                saldoawal.FiscalYear ,
774

775
                saldoawal.FiscalPeriod ,
776

777
                '' ,
778

779
                saldoawal.Currency ,
780

781
                saldoawal.AmountDebet ,
782

783
                saldoawal.AmountCredit ,
784

785
                saldoawal.AmountBalance ,
786

787
                saldoawal.CompanyCurrency ,
788

789
                saldoawal.AmountDebetCompCurr ,
790

791
                saldoawal.AmountCreditCompCurr ,
792

793
                saldoawal.AmountBalanceCompCurr ,
794

795
                '' ,
796

797
                '' ,
798

799
				''
800

801
        FROM    dbo.PCMFILOCOAGL AS gl
802

803
				INNER JOIN @TableGL AS tgl ON gl.GlAccount = tgl.GLAccountID
804

805
                LEFT JOIN dbo.PTRFICOMPACCBALANCE AS saldoawal ON gl.GlAccount = saldoawal.GlAccount
806

807
                                                              AND saldoawal.FiscalPeriod = @FiscalPeriod
808

809
                                                              AND saldoawal.FiscalYear = @FiscalYear
810

811
                                                              AND ( saldoawal.BusinessUnit = @BusinessUnit
812

813
                                                              OR @BusinessUnit = ''
814

815
                                                              )
816

817
                                                              AND ( saldoawal.CompanyID = @CompanyID
818

819
                                                              OR @CompanyID = ''
820

821
                                                              )
822

823
        WHERE  ( gl.AccountClass = @AccountGroup
824

825
                  OR @AccountGroup = ''
826

827
                )
828

829
                AND ( gl.GlAccount = @GlAccount
830

831
                      OR @GlAccount = ''
832

833
                    )
834

835
				AND (saldoawal.CostCenter = @CostCenter OR @CostCenter = '')
836

837
*/
838

839

840

841

842

843
SELECT DISTINCT
844

845
    --- *, a.subledgerid
846

847

848

849
       a.RowNumber,
850

851
       a.GLAccountID,
852

853
       a.GLAccounntDesc,
854

855
       a.DocNo,
856

857
       a.DocDesc,
858

859
       a.FiscalYear,
860

861
       a.FiscalPeriod,
862

863
       a.PostingDate,
864

865
       a.Currency,
866

867
       a.AmountDebet,
868

869
       a.AmountCredit,
870

871
       a.AmountBalance,
872

873
       a.CompCurr,
874

875
       a.AmountDebetCompCurr,
876

877
       a.AmountCreditCompCurr,
878

879
	   a.AmountBalanceCompCurr,
880

881
       --CASE WHEN a.AccSubType = 'IN' THEN a.AmountBalanceCompCurr  * -1 ELSE a.AmountBalanceCompCurr END AS AmountBalanceCompCurr,
882

883
       a.subledgertype,
884

885
       --a.subledgerid  ,
886

887

888

889
       CASE
890

891
           WHEN a.subledgerid IS NULL THEN
892

893
               ''
894

895
           ELSE
896

897
               a.subledgerid
898

899
       END AS subledgerid,
900

901
       a.subledgerdesc,
902

903
       a.AccSubType,
904

905
       a.AccClass,
906

907
	   a.ItemDesc
908

909
FROM @TblSaldo a
910

911
ORDER BY a.GLAccountID,
912

913
         a.RowNumber;
(2-2/3)