Project

General

Profile

Feature #2818 » PRPTFIBUKUBESAR_20240626.sql

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

 
1
??USE [MinovaES_ERP_2021]
2

3
GO
4

5
/****** Object:  StoredProcedure [dbo].[PRPTFIBUKUBESAR]    Script Date: 26/06/2024 10.02.00 ******/
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
);
210

211

212

213
INSERT INTO @TPosting
214

215
SELECT DISTINCT
216

217
       ROW_NUMBER() OVER (PARTITION BY post.GLAccountID ORDER BY post.PostingDate, post.GLAccountID ASC),
218

219
       *
220

221
FROM dbo.PTRFILOPOSTING AS post
222

223
WHERE post.FiscalYear = @FiscalYear
224

225
      --AND (CONVERT(DECIMAL(22,0),post.FiscalPeriod) BETWEEN CONVERT(DECIMAL(22,0),@FiscalPeriod) AND CONVERT(DECIMAL(22,0),@FiscalPeriodTo))
226

227
      AND (post.FiscalPeriod
228

229
      BETWEEN @FiscalPeriod AND @FiscalPeriodTo
230

231
          )
232

233
      AND
234

235
      (
236

237
          post.GLAccountID = @GlAccount
238

239
          OR @GlAccount = ''
240

241
      )
242

243
      AND
244

245
      (
246

247
          post.CostCenter = @CostCenter
248

249
          OR @CostCenter = ''
250

251
      )
252

253
      AND
254

255
      (
256

257
          post.CompanyID = @CompanyID
258

259
          OR @CompanyID = ''
260

261
      );
262

263

264

265

266

267
INSERT INTO @TblSaldo
268

269
SELECT DISTINCT
270

271
       docpost.rowno,
272

273
       gl.GlAccount,
274

275
       gl.Description,
276

277
       docpost.DocNo,
278

279
       dochead.Description AS DocDesc,
280

281
       docpost.FiscalYear,
282

283
       docpost.FiscalPeriod,
284

285
       dbo.fn_formatdatetime_indonesia(docpost.PostingDate, 'dd/mm/yyyy') AS PostingDate,
286

287
       curr.CurrencyDescription,
288

289
       docpost.AmountDebet,
290

291
       docpost.AmountCredit,
292

293
       0,
294

295
       compcurr.CurrencyDescription,
296

297
       docpost.AmountDebetCompCurr,
298

299
       docpost.AmountCreditCompCurr,
300

301
       0,
302

303
       fltyp.Description AS subledgertype,
304

305
       fintem.SubLedgerID AS subledgerid,
306

307
       SL.[Description] AS subledgerdesc,
308

309
       gl.AccountSubTyp,
310

311
       gl.AccountClass,   
312

313
	   fintem.Description itemdesc
314

315
FROM dbo.PCMFILOCOAGL AS gl
316

317
    LEFT JOIN @TPosting AS docpost
318

319
        ON gl.GlAccount = docpost.GLAccountID
320

321
    LEFT JOIN dbo.PTRFINANCEHEAD AS dochead
322

323
        ON dochead.DocNo = docpost.DocNo
324

325
           AND
326

327
           (
328

329
               docpost.FiscalYear = @FiscalYear
330

331
               OR @FiscalYear = ''
332

333
           )
334

335
           AND (CONVERT(DECIMAL(22, 0), docpost.FiscalPeriod) >= CONVERT(DECIMAL(22, 0), @FiscalPeriod))
336

337
		   --LEFT JOIN PTRFINANCEITEM AS docitem WITH (NOLOCK) ON dochead.DocNo = docitem.DocNo
338

339
		   --	and docitem.GLAccountID =  gl.GlAccount
340

341
    LEFT JOIN dbo.PHRPYCURR AS curr
342

343
        ON curr.Currency = docpost.Currency
344

345
    LEFT JOIN dbo.PHRPYCURR AS compcurr
346

347
        ON compcurr.Currency = docpost.CompanyCurrency
348

349
    LEFT JOIN dbo.PTRFINANCEITEM AS fintem
350

351
        ON fintem.DocNo = dochead.DocNo
352

353
           AND fintem.GLAccountID = gl.GlAccount AND docpost.DocItemID = fintem.DocItemID
354

355
    LEFT JOIN PCMFILOSLTYPE AS fltyp
356

357
        ON fintem.SubLedgerType = fltyp.SubLedgerType
358

359
           AND fintem.GLAccountID = gl.GlAccount
360

361
    LEFT JOIN PMDSL0001 AS SL
362

363
        ON SL.SubLedgerID = fintem.SubLedgerID
364

365
WHERE (
366

367
          gl.AccountClass = @AccountGroup
368

369
          OR @AccountGroup = ''
370

371
      )
372

373
      AND
374

375
      (
376

377
          gl.GlAccount = @GlAccount
378

379
          OR @GlAccount = ''
380

381
      )
382

383
      AND
384

385
      (
386

387
          fintem.SubLedgerType = @SubLedgerType
388

389
          OR @SubLedgerType = ''
390

391
      )
392

393
          
394

395
--            AND ( docpost.FiscalYear = @FiscalYear OR @FiscalYear = '' )
396

397
--            AND ( docpost.FiscalPeriod = @FiscalPeriod OR @FiscalPeriod = '' )
398

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

401
ORDER BY gl.GlAccount;
402

403

404

405

406

407
DECLARE @TableGL TABLE
408

409
(
410

411
    GLAccountID VARCHAR(20) --, AccSubType VARCHAR(20), AccClass VARCHAR(20)
412

413
);
414

415

416

417
IF (@SubLedgerType <> '')
418

419
BEGIN
420

421
    INSERT INTO @TableGL
422

423
    SELECT DISTINCT
424

425
           GLAccountID --, AccSubType, AccClass
426

427
    FROM @TblSaldo;
428

429
END;
430

431
ELSE
432

433
BEGIN
434

435
    INSERT INTO @TableGL
436

437
    SELECT DISTINCT
438

439
           GlAccount --, AccountSubTyp, AccountClass
440

441
    FROM PCMFILOCOAGL;
442

443
END;
444

445

446

447
INSERT INTO @TblSaldo
448

449
SELECT DISTINCT
450

451
       '0',
452

453
       gl.GlAccount,
454

455
       gl.Description,
456

457
       '',
458

459
       'Saldo Awal',
460

461
       saldoawal.FiscalYear,
462

463
       saldoawal.FiscalPeriod,
464

465
       '',
466

467
       saldoawal.Currency,
468

469
       0,   --saldoawal.AmountDebet ,
470

471
       0,   --saldoawal.AmountCredit ,
472

473
       CASE
474

475
           WHEN gl.AccountType = 'PL'
476

477
                AND @FiscalPeriod = '01' THEN
478

479
               0
480

481
           ELSE
482

483
               ISNULL(saldoawal.AmountBalance, 0)
484

485
       END, --saldoawal.AmountBalance ,
486

487
       saldoawal.CompanyCurrency,
488

489
       0,   --saldoawal.AmountDebetCompCurr ,
490

491
       0,   --saldoawal.AmountCreditCompCurr ,
492

493
       CASE
494

495
           WHEN gl.AccountType = 'PL'
496

497
                AND @FiscalPeriod = '01' THEN
498

499
               0
500

501
           ELSE
502

503
               ISNULL(saldoawal.AmountBalanceCompCurr, 0)
504

505
       END, --saldoawal.AmountBalanceCompCurr ,
506

507
       '',
508

509
       '',
510

511
       '',
512

513
       gl.AccountSubTyp,
514

515
       gl.AccountClass,
516

517
	   ''
518

519
FROM dbo.PCMFILOCOAGL AS gl
520

521
    INNER JOIN @TableGL AS tgl
522

523
        ON gl.GlAccount = tgl.GLAccountID
524

525
    LEFT JOIN dbo.PTRFICOMPACCBALANCE AS saldoawal
526

527
        ON gl.GlAccount = saldoawal.GlAccount
528

529
           AND saldoawal.FiscalPeriod = @BeforePeriod
530

531
           AND saldoawal.FiscalYear = @BeforeYear
532

533
           AND
534

535
           (
536

537
               saldoawal.BusinessUnit = @BusinessUnit
538

539
               OR @BusinessUnit = ''
540

541
           )
542

543
           AND
544

545
           (
546

547
               saldoawal.CompanyID = @CompanyID
548

549
               OR @CompanyID = ''
550

551
           )
552

553
WHERE (
554

555
          gl.AccountClass = @AccountGroup
556

557
          OR @AccountGroup = ''
558

559
      )
560

561
      AND
562

563
      (
564

565
          gl.GlAccount = @GlAccount
566

567
          OR @GlAccount = ''
568

569
      )
570

571
      AND
572

573
      (
574

575
          saldoawal.CostCenter = @CostCenter
576

577
          OR @CostCenter = ''
578

579
      );
580

581

582

583
INSERT INTO @TblSaldoSum
584

585
SELECT DISTINCT
586

587
       ts.AccSubType,
588

589
       ts.AccClass,
590

591
       ts.GLAccountID, --,ts.FiscalYear ,ts.FiscalPeriod
592

593
       SUM(ts.AmountDebet),
594

595
       SUM(ts.AmountCredit),
596

597
       SUM(ts.AmountBalance),
598

599
       SUM(ts.AmountDebetCompCurr),
600

601
       SUM(ts.AmountCreditCompCurr),
602

603
       SUM(ts.AmountBalanceCompCurr)
604

605
FROM @TblSaldo AS ts
606

607
GROUP BY ts.AccSubType,
608

609
         ts.AccClass,
610

611
         ts.GLAccountID; --,ts.FiscalYear ,ts.FiscalPeriod
612

613

614

615
INSERT INTO @TblSaldo
616

617
SELECT DISTINCT
618

619
       '9999999999999',
620

621
       saldoawal.GLAccountID,
622

623
       saldoawal.GLAccounntDesc,
624

625
       '',
626

627
       'Saldo Akhir',
628

629
       @FiscalYear,
630

631
       @FiscalPeriodTo,
632

633
       '',
634

635
       saldoawal.Currency,
636

637
       saldosum.AmountDebet,
638

639
       saldosum.AmountCredit,
640

641
       --saldoawal.AmountBalance ,
642

643
       CASE
644

645
           WHEN saldoawal.AccSubType = 'AS' THEN
646

647
               ISNULL(saldoawal.AmountBalance, 0) + ISNULL(saldosum.AmountDebet, 0) - ISNULL(saldosum.AmountCredit, 0)
648

649
           WHEN saldoawal.AccSubType = 'LI' THEN
650

651
               CASE
652

653
                   WHEN saldoawal.AccClass = 'EQX' THEN
654

655
       (ISNULL(saldoawal.AmountBalance, 0) + ISNULL(saldosum.AmountCredit, 0) + ISNULL(saldosum.AmountDebet, 0))
656

657
                   ELSE
658

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

661
               END
662

663
           WHEN saldoawal.AccSubType = 'IN' THEN
664

665
       (ISNULL(saldoawal.AmountBalance, 0) + ISNULL(saldosum.AmountCredit, 0) - ISNULL(saldosum.AmountDebet, 0)) * -1
666

667
           WHEN saldoawal.AccSubType = 'EX' THEN
668

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

671
       END AmountBalanceNew,
672

673
       saldoawal.CompCurr,
674

675
       saldosum.AmountDebetCompCurr,
676

677
       saldosum.AmountCreditCompCurr,
678

679
       --saldoawal.AmountBalanceCompCurr ,
680

681
       CASE
682

683
           WHEN saldoawal.AccSubType = 'AS' THEN
684

685
               ISNULL(saldoawal.AmountBalanceCompCurr, 0) + ISNULL(saldosum.AmountDebetCompCurr, 0)
686

687
               - ISNULL(saldosum.AmountCreditCompCurr, 0)
688

689
           WHEN saldoawal.AccSubType = 'LI' THEN
690

691
               CASE
692

693
                   WHEN saldoawal.AccClass = 'EQX' THEN
694

695
       (ISNULL(saldoawal.AmountBalanceCompCurr, 0) + ISNULL(saldosum.AmountCreditCompCurr, 0)
696

697
        + ISNULL(saldosum.AmountDebetCompCurr, 0)
698

699
       )
700

701
                   ELSE
702

703
       (ISNULL(saldoawal.AmountBalanceCompCurr, 0) + ISNULL(saldosum.AmountCreditCompCurr, 0)
704

705
        - ISNULL(saldosum.AmountDebetCompCurr, 0)
706

707
       ) * -1
708

709
               END
710

711
           WHEN saldoawal.AccSubType = 'IN' THEN
712

713
       (ISNULL(saldoawal.AmountBalanceCompCurr, 0) + ISNULL(saldosum.AmountCreditCompCurr, 0)
714

715
        - ISNULL(saldosum.AmountDebetCompCurr, 0)
716

717
       ) * -1
718

719
           WHEN saldoawal.AccSubType = 'EX' THEN
720

721
               ISNULL(saldoawal.AmountBalanceCompCurr, 0) + ISNULL(saldosum.AmountDebetCompCurr, 0)
722

723
               - ISNULL(saldosum.AmountCreditCompCurr, 0)
724

725
       END AmountBalanceCompCurrNew,
726

727
       '',
728

729
       '',
730

731
       '',
732

733
       saldoawal.AccSubType,
734

735
       saldoawal.AccClass,
736

737
	   saldoawal.ItemDesc
738

739
FROM @TblSaldo AS saldoawal
740

741
    LEFT JOIN @TblSaldoSum AS saldosum
742

743
        ON saldosum.AccSubType = saldoawal.AccSubType
744

745
           AND saldosum.AccClass = saldoawal.AccClass
746

747
WHERE saldoawal.DocDesc = 'Saldo Awal'
748

749
      AND saldoawal.GLAccountID = saldosum.GLAccountID;
750

751

752

753
/*
754

755
INSERT  INTO @TblSaldo
756

757
        SELECT DISTINCT
758

759
                '9999999999999' ,
760

761
                gl.GlAccount ,
762

763
                gl.Description ,
764

765
                '' ,
766

767
                'Saldo Akhir' ,
768

769
                saldoawal.FiscalYear ,
770

771
                saldoawal.FiscalPeriod ,
772

773
                '' ,
774

775
                saldoawal.Currency ,
776

777
                saldoawal.AmountDebet ,
778

779
                saldoawal.AmountCredit ,
780

781
                saldoawal.AmountBalance ,
782

783
                saldoawal.CompanyCurrency ,
784

785
                saldoawal.AmountDebetCompCurr ,
786

787
                saldoawal.AmountCreditCompCurr ,
788

789
                saldoawal.AmountBalanceCompCurr ,
790

791
                '' ,
792

793
                '' ,
794

795
				''
796

797
        FROM    dbo.PCMFILOCOAGL AS gl
798

799
				INNER JOIN @TableGL AS tgl ON gl.GlAccount = tgl.GLAccountID
800

801
                LEFT JOIN dbo.PTRFICOMPACCBALANCE AS saldoawal ON gl.GlAccount = saldoawal.GlAccount
802

803
                                                              AND saldoawal.FiscalPeriod = @FiscalPeriod
804

805
                                                              AND saldoawal.FiscalYear = @FiscalYear
806

807
                                                              AND ( saldoawal.BusinessUnit = @BusinessUnit
808

809
                                                              OR @BusinessUnit = ''
810

811
                                                              )
812

813
                                                              AND ( saldoawal.CompanyID = @CompanyID
814

815
                                                              OR @CompanyID = ''
816

817
                                                              )
818

819
        WHERE  ( gl.AccountClass = @AccountGroup
820

821
                  OR @AccountGroup = ''
822

823
                )
824

825
                AND ( gl.GlAccount = @GlAccount
826

827
                      OR @GlAccount = ''
828

829
                    )
830

831
				AND (saldoawal.CostCenter = @CostCenter OR @CostCenter = '')
832

833
*/
834

835

836

837

838

839
SELECT DISTINCT
840

841
    --- *, a.subledgerid
842

843

844

845
       a.RowNumber,
846

847
       a.GLAccountID,
848

849
       a.GLAccounntDesc,
850

851
       a.DocNo,
852

853
       a.DocDesc,
854

855
       a.FiscalYear,
856

857
       a.FiscalPeriod,
858

859
       a.PostingDate,
860

861
       a.Currency,
862

863
       a.AmountDebet,
864

865
       a.AmountCredit,
866

867
       a.AmountBalance,
868

869
       a.CompCurr,
870

871
       a.AmountDebetCompCurr,
872

873
       a.AmountCreditCompCurr,
874

875
	   a.AmountBalanceCompCurr,
876

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

879
       a.subledgertype,
880

881
       --a.subledgerid  ,
882

883

884

885
       CASE
886

887
           WHEN a.subledgerid IS NULL THEN
888

889
               ''
890

891
           ELSE
892

893
               a.subledgerid
894

895
       END AS subledgerid,
896

897
       a.subledgerdesc,
898

899
       a.AccSubType,
900

901
       a.AccClass,
902

903
	   a.ItemDesc
904

905
FROM @TblSaldo a
906

907
ORDER BY a.GLAccountID,
908

909
         a.RowNumber;
(1-1/3)