DECLARE 
  @pi_tahun SMALLINT,
  @pi_mata_uang VARCHAR(3)

SET @pi_tahun = 2014
SET @pi_mata_uang = UPPER('IDR')

-----------------------------------
DECLARE @hasil TABLE ( 
                  bulan TINYINT,
                  valuta VARCHAR(3),
                  jt_1_gt FLOAT,
                  jt_1_og FLOAT,
                  jt_2_gt FLOAT,
                  jt_2_og FLOAT,
                  jt_3_gt FLOAT,
                  jt_3_og FLOAT,
                  jt_4_gt FLOAT,
                  jt_4_og FLOAT,
                  no_ref VARCHAR(11))

DECLARE @p_bulan TINYINT = 1;
DECLARE @kode_mata_uang VARCHAR(2)

SELECT
  @kode_mata_uang=Kode
FROM
  dbo.Mata_Uang
WHERE
  Deskripsi = @pi_mata_uang

WHILE @p_bulan <= 12
BEGIN
  --PRINT @p_bulan;

  DECLARE 
    @no_ref VARCHAR(11),
    @tgl_buat DATETIME,
    @tgl_kirim DATETIME,
    @tgl_terima DATETIME,
    @tgl_jatuh_tempo DATETIME,
    @tgl_lunas DATETIME,
    @gtog VARCHAR(2),
    @telat INT,
    @jml_lunas FLOAT

  DECLARE list_cursor CURSOR FAST_FORWARD FOR  
  
  SELECT
    ntm.No_Ref,
    ntm.Tgl_Buat,
    ns.Tgl_Kirim,
    ns.Tgl_Terima,
    --DATEADD(DAY,30,ns.Tgl_Terima) AS Tgl_Jatuh_Tempo,
    DATEADD(DAY,30,COALESCE(ns.Tgl_Terima,ntm.Tgl_Buat)) AS Tgl_Jatuh_Tempo,  -- jika tidak ada Tgl_Terima, gunakan Tgl_Buat [?]
    ntm.Tgl_Lunas,
    ntm.GT_OG,
    DATEDIFF(DAY,DATEADD(DAY,30,ns.Tgl_Terima),ntm.Tgl_Lunas) AS Telat,
    ntm.Jml_Lunas
  FROM
    Note_Terbit_Master AS ntm LEFT OUTER JOIN 
    dbo.Note_Shipping AS ns ON ntm.No_Ref = ns.No_Ref
  WHERE
    ntm.Status = 'I'
    --AND MONTH(ns.Tgl_Terima) = @p_bulan
    --AND YEAR(ns.Tgl_Terima) = @pi_tahun
    AND MONTH(ntm.Tgl_Lunas) = @p_bulan
    AND YEAR(ntm.Tgl_Lunas) = @pi_tahun
    AND Mata_Uang = @kode_mata_uang
    AND ntm.Jenis IN (SELECT
                        Kode
                      FROM
                        dbo.Note_Jenis
                      WHERE
                        Description LIKE '%klaim%'
                        AND Tipe=1)

  OPEN list_cursor  
  FETCH NEXT FROM list_cursor INTO @no_ref, @tgl_buat, @tgl_kirim, @tgl_terima, @tgl_jatuh_tempo, @tgl_lunas, @gtog, @telat, @jml_lunas

  WHILE @@FETCH_STATUS = 0  
  BEGIN  

    IF @telat<=0 AND @gtog='GT'
      BEGIN
        INSERT @hasil
                (bulan,
                 valuta,
                 jt_1_gt,
                 jt_1_og,
                 jt_2_gt,
                 jt_2_og,
                 jt_3_gt,
                 jt_3_og,
                 jt_4_gt,
                 jt_4_og,
                 no_ref)
        VALUES
                (@p_bulan, -- bulan - varchar(12)
                 @pi_mata_uang, -- valuta - varchar(3)
                 @jml_lunas, -- jt_1_gt - float
                 0.0, -- jt_1_og - float
                 0.0, -- jt_2_gt - float
                 0.0, -- jt_2_og - float
                 0.0, -- jt_3_gt - float
                 0.0, -- jt_3_og - float
                 0.0, -- jt_4_gt - float
                 0.0  -- jt_4_og - float
                 ,@no_ref
                 )
      END
      
    IF @telat<=0 AND @gtog='OG'
      BEGIN
        INSERT @hasil
                (bulan,
                 valuta,
                 jt_1_gt,
                 jt_1_og,
                 jt_2_gt,
                 jt_2_og,
                 jt_3_gt,
                 jt_3_og,
                 jt_4_gt,
                 jt_4_og,
                 no_ref)
        VALUES
                (@p_bulan, -- bulan - varchar(12)
                 @pi_mata_uang, -- valuta - varchar(3)
                 0.0, -- jt_1_gt - float
                 @jml_lunas, -- jt_1_og - float
                 0.0, -- jt_2_gt - float
                 0.0, -- jt_2_og - float
                 0.0, -- jt_3_gt - float
                 0.0, -- jt_3_og - float
                 0.0, -- jt_4_gt - float
                 0.0  -- jt_4_og - float
                 ,@no_ref
                 )
      END
      
    IF @telat>=31 AND @telat<=60 AND @gtog='GT'
      BEGIN
        INSERT @hasil
                (bulan,
                 valuta,
                 jt_1_gt,
                 jt_1_og,
                 jt_2_gt,
                 jt_2_og,
                 jt_3_gt,
                 jt_3_og,
                 jt_4_gt,
                 jt_4_og,
                 no_ref)
        VALUES
                (@p_bulan, -- bulan - varchar(12)
                 @pi_mata_uang, -- valuta - varchar(3)
                 0.0, -- jt_1_gt - float
                 0.0, -- jt_1_og - float
                 @jml_lunas, -- jt_2_gt - float
                 0.0, -- jt_2_og - float
                 0.0, -- jt_3_gt - float
                 0.0, -- jt_3_og - float
                 0.0, -- jt_4_gt - float
                 0.0  -- jt_4_og - float
                 ,@no_ref
                 )
      END
      
    IF @telat>=31 AND @telat<=60 AND @gtog='OG'
      BEGIN
        INSERT @hasil
                (bulan,
                 valuta,
                 jt_1_gt,
                 jt_1_og,
                 jt_2_gt,
                 jt_2_og,
                 jt_3_gt,
                 jt_3_og,
                 jt_4_gt,
                 jt_4_og,
                 no_ref)
        VALUES
                (@p_bulan, -- bulan - varchar(12)
                 @pi_mata_uang, -- valuta - varchar(3)
                 0.0, -- jt_1_gt - float
                 0.0, -- jt_1_og - float
                 0.0, -- jt_2_gt - float
                 @jml_lunas, -- jt_2_og - float
                 0.0, -- jt_3_gt - float
                 0.0, -- jt_3_og - float
                 0.0, -- jt_4_gt - float
                 0.0  -- jt_4_og - float
                 ,@no_ref
                 )
      END

    IF @telat>=61 AND @telat<=90 AND @gtog='GT'
      BEGIN
        INSERT @hasil
                (bulan,
                 valuta,
                 jt_1_gt,
                 jt_1_og,
                 jt_2_gt,
                 jt_2_og,
                 jt_3_gt,
                 jt_3_og,
                 jt_4_gt,
                 jt_4_og,
                 no_ref)
        VALUES
                (@p_bulan, -- bulan - varchar(12)
                 @pi_mata_uang, -- valuta - varchar(3)
                 0.0, -- jt_1_gt - float
                 0.0, -- jt_1_og - float
                 0.0, -- jt_2_gt - float
                 0.0, -- jt_2_og - float
                 @jml_lunas, -- jt_3_gt - float
                 0.0, -- jt_3_og - float
                 0.0, -- jt_4_gt - float
                 0.0  -- jt_4_og - float
                 ,@no_ref
                 )
      END
      
    IF @telat>=61 AND @telat<=90 AND @gtog='OG'
      BEGIN
        INSERT @hasil
                (bulan,
                 valuta,
                 jt_1_gt,
                 jt_1_og,
                 jt_2_gt,
                 jt_2_og,
                 jt_3_gt,
                 jt_3_og,
                 jt_4_gt,
                 jt_4_og,
                 no_ref)
        VALUES
                (@p_bulan, -- bulan - varchar(12)
                 @pi_mata_uang, -- valuta - varchar(3)
                 0.0, -- jt_1_gt - float
                 0.0, -- jt_1_og - float
                 0.0, -- jt_2_gt - float
                 0.0, -- jt_2_og - float
                 0.0, -- jt_3_gt - float
                 @jml_lunas, -- jt_3_og - float
                 0.0, -- jt_4_gt - float
                 0.0  -- jt_4_og - float
                 ,@no_ref
                 )
      END

--

    IF @telat>90 AND @gtog='GT'
      BEGIN
        INSERT @hasil
                (bulan,
                 valuta,
                 jt_1_gt,
                 jt_1_og,
                 jt_2_gt,
                 jt_2_og,
                 jt_3_gt,
                 jt_3_og,
                 jt_4_gt,
                 jt_4_og,
                 no_ref)
        VALUES
                (@p_bulan, -- bulan - varchar(12)
                 @pi_mata_uang, -- valuta - varchar(3)
                 0.0, -- jt_1_gt - float
                 0.0, -- jt_1_og - float
                 0.0, -- jt_2_gt - float
                 0.0, -- jt_2_og - float
                 0.0, -- jt_3_gt - float
                 0.0, -- jt_3_og - float
                 @jml_lunas, -- jt_4_gt - float
                 0.0  -- jt_4_og - float
                 ,@no_ref
                 )
      END
      
    IF @telat>90 AND @gtog='OG'
      BEGIN
        INSERT @hasil
                (bulan,
                 valuta,
                 jt_1_gt,
                 jt_1_og,
                 jt_2_gt,
                 jt_2_og,
                 jt_3_gt,
                 jt_3_og,
                 jt_4_gt,
                 jt_4_og,
                 no_ref)
        VALUES
                (@p_bulan, -- bulan - varchar(12)
                 @pi_mata_uang, -- valuta - varchar(3)
                 0.0, -- jt_1_gt - float
                 0.0, -- jt_1_og - float
                 0.0, -- jt_2_gt - float
                 0.0, -- jt_2_og - float
                 0.0, -- jt_3_gt - float
                 0.0, -- jt_3_og - float
                 0.0, -- jt_4_gt - float
                 @jml_lunas  -- jt_4_og - float
                 ,@no_ref
                 )
      END

    FETCH NEXT FROM list_cursor INTO @no_ref, @tgl_buat, @tgl_kirim, @tgl_terima, @tgl_jatuh_tempo, @tgl_lunas, @gtog, @telat, @jml_lunas  
  END  

  CLOSE list_cursor  
  DEALLOCATE list_cursor 

   
  SET @p_bulan = @p_bulan + 1;
END;

--SELECT
--  jt_3_gt,
--  jt_4_gt,
--  no_ref
--FROM
--  @hasil
--WHERE
--  bulan=9
  

SELECT
  bulan,
  valuta,
  SUM(jt_1_gt) AS jt_1_gt,
  SUM(jt_1_og) AS jt_1_og,
  SUM(jt_2_gt) AS jt_2_gt,
  SUM(jt_2_og) AS jt_2_og,
  SUM(jt_3_gt) AS jt_3_gt,
  SUM(jt_3_og) AS jt_3_og,
  SUM(jt_4_gt) AS jt_4_gt,
  SUM(jt_4_og) AS jt_4_og
FROM
  @hasil
GROUP BY
  bulan,
  valuta
ORDER BY
  bulan