Commit f6d3e267 by Ari Agung Prasetiyo

update menu realtime realisasi

1 parent 01bc4e2a
...@@ -3,7 +3,7 @@ import sys ...@@ -3,7 +3,7 @@ import sys
from opensipkd.base import models from opensipkd.base import models
from sqlalchemy import (Column, Integer, DateTime, String, Float, from sqlalchemy import (Column, Integer, DateTime, String, Float,
BigInteger, SmallInteger, Date, Time, BigInteger, SmallInteger, Date, Time,
UniqueConstraint, func, literal_column) UniqueConstraint, func, literal_column, Text)
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import engine_from_config from sqlalchemy import engine_from_config
from opensipkd.tools import get_settings from opensipkd.tools import get_settings
...@@ -290,6 +290,45 @@ class Targets(PCBase, DefaultModel): ...@@ -290,6 +290,45 @@ class Targets(PCBase, DefaultModel):
return query return query
class UploadRealisasiOpsen(PCBase, DefaultModel):
__tablename__ = 'upload_realisasi_opsen'
__table_args__ = {'schema': 'public'}
id = Column(Integer, primary_key=True)
created = Column(DateTime(timezone=True), nullable=False)
updated = Column(DateTime)
no_urut = Column(Integer)
tanggal = Column(Date)
kode_rekening = Column(String(64))
nama_rekening = Column(String(255))
keterangan = Column(Text)
nilai_realisasi = Column(Float)
@classmethod
def qry_sum_pkb(cls, columns=[]):
columns.extend([
func.sum(cls.nilai_realisasi).label('bayar'),
literal_column("0").label('denda'),
func.count(cls.id).label('trx')
])
qry = PCDBSession.query().select_from(cls).where(cls.kode_rekening=='4.1.01.20.01.0001')
for col in columns:
qry = qry.add_columns(col)
return qry
@classmethod
def qry_sum_bbnkb(cls, columns=[]):
columns.extend([
func.sum(cls.nilai_realisasi).label('bayar'),
literal_column("0").label('denda'),
func.count(cls.id).label('trx')
])
qry = PCDBSession.query().select_from(cls).where(cls.kode_rekening=='4.1.01.20.02.0001')
for col in columns:
qry = qry.add_columns(col)
return qry
def get_connection(settings): def get_connection(settings):
url = 'pcpd.url' in settings and settings['pcpd.url'] and 'pcpd.' or 'sqlalchemy.' url = 'pcpd.url' in settings and settings['pcpd.url'] and 'pcpd.' or 'sqlalchemy.'
......
...@@ -3,9 +3,9 @@ eis-pcpd,PCPD,/eis/pcpd,1,0,0 ...@@ -3,9 +3,9 @@ eis-pcpd,PCPD,/eis/pcpd,1,0,0
eis-pcpd-act,PCPD Act,/eis/pcpd/{act}/act,1,0 eis-pcpd-act,PCPD Act,/eis/pcpd/{act}/act,1,0
eis-pajak,Dashboard,#,1,0,1 eis-pajak,Dashboard,#,1,0,1
eis-pajak-kumulatif,Komposisi Penerimaan,/eis/pajak,1,0,1,eis-pajak,pcpd,Views,view_pajak,,pcpd_pajak.pt eis-pajak-kumulatif,Komposisi Penerimaan,/eis/pajak,1,0,1,eis-pajak,pcpd,Views,view_pajak,,pcpd_pajak.pt
eis-pajak-kumulatif2,Realtime Realisasi,/eis/pajak2,1,0,1,eis-pajak,pcpd,Views,view_pajak,,pcpd_pajak2.pt eis-pajak-kumulatif2,Realtime Realisasi,/eis/realtime-realisasi,1,0,1,eis-pajak,pcpd,Views,view_pajak,,realtime_realisasi.pt
eis-pajak-kumulatif3,Trend Penerimaan,/eis/pajak3,1,0,1,eis-pajak,pcpd,Views,view_pajak,,pcpd_pajak3.pt eis-pajak-kumulatif3,Trend Penerimaan,/eis/trend-penerimaan,1,0,1,eis-pajak,pcpd,Views,view_pajak,,trend_penerimaan.pt
eis-pajak-kumulatif4,Realtime Piutang,/eis/pajak4,1,0,1,eis-pajak,pcpd,Views,view_pajak,,pcpd_pajak4.pt eis-pajak-kumulatif4,Realtime Piutang,/eis/realtime-piutang,1,0,1,eis-pajak,pcpd,Views,view_pajak,,realtime_piutang.pt
eis-pbb,PBB,/eis/pbb,0,0,1,eis-pajak,pcpd,Views,view_pbb,,pbb.pt eis-pbb,PBB,/eis/pbb,0,0,1,eis-pajak,pcpd,Views,view_pbb,,pbb.pt
eis-bphtb,BPHTB,/eis/bphtb,0,0,1,eis-pajak,pcpd,Views,view_bphtb,eis,pcpd.pt eis-bphtb,BPHTB,/eis/bphtb,0,0,1,eis-pajak,pcpd,Views,view_bphtb,eis,pcpd.pt
eis-pbjt,PBJT,#,0,0,1,eis-pajak eis-pbjt,PBJT,#,0,0,1,eis-pajak
......
...@@ -8,7 +8,7 @@ from ..models.eis import Eis, Chart, ChartItem, Slide ...@@ -8,7 +8,7 @@ from ..models.eis import Eis, Chart, ChartItem, Slide
from datatables import ColumnDT, DataTables from datatables import ColumnDT, DataTables
from sqlalchemy import func, and_, String from sqlalchemy import func, and_, String
from sqlalchemy.sql.expression import cast from sqlalchemy.sql.expression import cast
from ..models.payment import PaymentPBB, PaymentPAD, PaymentBPHTB, PaymentWEBR, Targets from ..models.payment import PaymentPBB, PaymentPAD, PaymentBPHTB, PaymentWEBR, Targets, UploadRealisasiOpsen
from opensipkd.pbb.monitoring.models import PembayaranSppt, Kecamatan, Kelurahan, Sppt from opensipkd.pbb.monitoring.models import PembayaranSppt, Kecamatan, Kelurahan, Sppt
from datetime import timedelta from datetime import timedelta
from ..models.payment import PCDBSession from ..models.payment import PCDBSession
...@@ -21,7 +21,8 @@ PAD_TYP = { ...@@ -21,7 +21,8 @@ PAD_TYP = {
"hiburan": ["PBJT - JASA KESENIAN DAN HIBURAN"], "hiburan": ["PBJT - JASA KESENIAN DAN HIBURAN"],
"ppju": ["PBJT - TENAGA LISTRIK"], "ppju": ["PBJT - TENAGA LISTRIK"],
"minerba": ["MINERAL BUKAN LOGAM DAN BATUAN"], "minerba": ["MINERAL BUKAN LOGAM DAN BATUAN"],
"opsen": ["OPSEN BBNKB", "OPSEN PKB"], "opsen_pkb": [ "OPSEN PKB"],
"opsen_bbnkb": ["OPSEN BBNKB"],
"parkir": ["PBJT - JASA PARKIR"], "parkir": ["PBJT - JASA PARKIR"],
"walet": ["PENGELOLAAN SARANG BURUNG WALET DAN SEJENISNYA"], "walet": ["PENGELOLAAN SARANG BURUNG WALET DAN SEJENISNYA"],
"atd": ["AIR TANAH"], "atd": ["AIR TANAH"],
...@@ -30,15 +31,16 @@ PAD_TYP = { ...@@ -30,15 +31,16 @@ PAD_TYP = {
} }
jenis_pajak = { jenis_pajak = {
"opsen": { "opsen_pkb": {
"kode": "41012", "kode": "4.1.01.20.01.0001",
"nama": "Opsen", "nama": "Opsen PKB",
"subs": [ "subs": []
{"kode": "4.1.1.10", },
"nama": "Opsen PKB"}, "opsen_bbnkb": {
{"kode": "4.1.1.11", "kode": "4.1.01.20.02.0001",
"nama": "Opsen BBNKB"}, "nama": "Opsen BBNKB",
]}, "subs": []
},
"pbb": { "pbb": {
"kode": "4.1.1.0", "kode": "4.1.1.0",
"nama": "Pajak Bumi & Bangunan", "nama": "Pajak Bumi & Bangunan",
...@@ -130,12 +132,22 @@ class Views(BaseView): ...@@ -130,12 +132,22 @@ class Views(BaseView):
if PCDBSession.registry().in_transaction(): if PCDBSession.registry().in_transaction():
PCDBSession.rollback() PCDBSession.rollback()
columns = [field.label("step")] columns = [field.label("step")]
qry = table.qry_sum(columns) \ if typ == 'opsen_pkb':
.group_by(field)\ qry = table.qry_sum_pkb(columns) \
.order_by(field) .group_by(field)\
.order_by(field)
elif typ == 'opsen_bbnkb':
qry = table.qry_sum_bbnkb(columns) \
.group_by(field)\
.order_by(field)
else:
qry = table.qry_sum(columns) \
.group_by(field)\
.order_by(field)
qry = qry.filter(*filters) qry = qry.filter(*filters)
if typ != None: opsen = ["opsen_pkb", "opsen_bbnkb"]
if typ != None and typ not in opsen:
if typ == "pajak": if typ == "pajak":
qry = qry.filter(table.jenis_pajak.notin_(PAD_TYP['pbb'])) qry = qry.filter(table.jenis_pajak.notin_(PAD_TYP['pbb']))
else: else:
...@@ -176,8 +188,15 @@ class Views(BaseView): ...@@ -176,8 +188,15 @@ class Views(BaseView):
if kode: if kode:
if kode == "pajak": if kode == "pajak":
return 0 return 0
targets = targets.filter( elif kode == 'opsen_pkb':
Targets.kode.ilike(jenis_pajak[kode]["kode"]+'%')) targets = targets.filter(
Targets.kode.ilike('4.1.1.10%'))
elif kode == 'opsen_bbnkb':
targets = targets.filter(
Targets.kode.ilike('4.1.1.11%'))
else:
targets = targets.filter(
Targets.kode.ilike(jenis_pajak[kode]["kode"]+'%'))
targets = targets.first() targets = targets.first()
if targets: if targets:
target = targets.perubahan or targets.murni or 0 target = targets.perubahan or targets.murni or 0
...@@ -434,6 +453,136 @@ class Views(BaseView): ...@@ -434,6 +453,136 @@ class Views(BaseView):
"monthlyAccTrx": monthlyAccTrx, "monthlyAccTrx": monthlyAccTrx,
"target": 0, "target": 0,
} }
def get_pkb_data(self):
if log.root.level == logging.DEBUG:
today = datetime.strptime('2025-06-05', "%Y-%m-%d")
else:
today = datetime.now().date()
# Harian
field = func.to_char(UploadRealisasiOpsen.tanggal, 'yyyy-mm-dd')
filter_exp = UploadRealisasiOpsen.tanggal.between(
today-timedelta(days=6), today)
amt, trx, daily, dailyTrx, dailyAcc, dailyAccTrx = \
self.get_daily_data(UploadRealisasiOpsen, field,
today.strftime("%Y-%m-%d"), filter_exp, 'opsen_pkb')
#Tahunan
field = func.to_char(UploadRealisasiOpsen.tanggal, 'IYYY')
filter_exp = UploadRealisasiOpsen.tanggal.between(
datetime.strptime(f"{today.year}-01-01", "%Y-%m-%d"), today)
ytd, ytdTrx, yearly, yearlyTrx, yearlyAcc, yearlyAccTrx = \
self.get_daily_data(UploadRealisasiOpsen, field,
str(today.year), filter_exp, 'opsen_pkb')
#Bulanan
field = func.to_char(UploadRealisasiOpsen.tanggal, 'YYYY-MM')
month, monthTrx, monthly, monthlyTrx, monthlyAcc, monthlyAccTrx = \
self.get_daily_data(UploadRealisasiOpsen, field, None, filter_exp, 'opsen_pkb')
#Mingguan
field = func.to_char(UploadRealisasiOpsen.tanggal, 'YYYY-WW')
filter_exp = UploadRealisasiOpsen.tanggal.between(
today-timedelta(weeks=6), today)
week, weekTrx, weekly, weeklyTrx, weeklyAcc, weeklyAccTrx = \
self.get_daily_data(UploadRealisasiOpsen, field, None, filter_exp, 'opsen_pkb')
try:
ytd_target = self.get_targets("opsen_pkb")
except:
ytd_target = 0
ytd_persen = round(ytd/ytd_target * 100, 2) if ytd_target > 0 else 0
return {"today": amt,
"trx": trx,
"daily": daily,
"dailyTrx": dailyTrx,
"dailyAcc": dailyAcc,
"dailyAccTrx": dailyAccTrx,
"ytd": ytd,
"trxYtd": ytdTrx,
"pie": [("I", 100, '#16a75c'), ("II", 200, '#ffb900'),
("III", 300, '#133132'), ("IV", 200, '#123456'),
("V", 100, '#545355')],
"weekly": weekly,
"weeklyTrx": weeklyTrx,
"weeklyAcc": weeklyAcc,
"weeklyAccTrx": weeklyAccTrx,
"monthly": monthly,
"monthlyTrx": monthlyTrx,
"monthlyAcc": monthlyAcc,
"monthlyAccTrx": monthlyAccTrx,
"ytdTarget": ytd_target,
"ytdPersen": ytd_persen,
}
def get_bbnkb_data(self):
if log.root.level == logging.DEBUG:
today = datetime.strptime('2025-06-05', "%Y-%m-%d")
else:
today = datetime.now().date()
# Harian
field = func.to_char(UploadRealisasiOpsen.tanggal, 'yyyy-mm-dd')
filter_exp = UploadRealisasiOpsen.tanggal.between(
today-timedelta(days=6), today)
amt, trx, daily, dailyTrx, dailyAcc, dailyAccTrx = \
self.get_daily_data(UploadRealisasiOpsen, field,
today.strftime("%Y-%m-%d"), filter_exp, 'opsen_bbnkb')
#Tahunan
field = func.to_char(UploadRealisasiOpsen.tanggal, 'IYYY')
filter_exp = UploadRealisasiOpsen.tanggal.between(
datetime.strptime(f"{today.year}-01-01", "%Y-%m-%d"), today)
ytd, ytdTrx, yearly, yearlyTrx, yearlyAcc, yearlyAccTrx = \
self.get_daily_data(UploadRealisasiOpsen, field,
str(today.year), filter_exp, 'opsen_bbnkb')
#Bulanan
field = func.to_char(UploadRealisasiOpsen.tanggal, 'YYYY-MM')
month, monthTrx, monthly, monthlyTrx, monthlyAcc, monthlyAccTrx = \
self.get_daily_data(UploadRealisasiOpsen, field, None, filter_exp, 'opsen_bbnkb')
#Mingguan
field = func.to_char(UploadRealisasiOpsen.tanggal, 'YYYY-WW')
filter_exp = UploadRealisasiOpsen.tanggal.between(
today-timedelta(weeks=6), today)
week, weekTrx, weekly, weeklyTrx, weeklyAcc, weeklyAccTrx = \
self.get_daily_data(UploadRealisasiOpsen, field, None, filter_exp, 'opsen_bbnkb')
try:
ytd_target = self.get_targets("opsen_bbnkb")
except:
ytd_target = 0
ytd_persen = round(ytd/ytd_target * 100, 2) if ytd_target > 0 else 0
return {"today": amt,
"trx": trx,
"daily": daily,
"dailyTrx": dailyTrx,
"dailyAcc": dailyAcc,
"dailyAccTrx": dailyAccTrx,
"ytd": ytd,
"trxYtd": ytdTrx,
"pie": [("I", 100, '#16a75c'), ("II", 200, '#ffb900'),
("III", 300, '#133132'), ("IV", 200, '#123456'),
("V", 100, '#545355')],
"weekly": weekly,
"weeklyTrx": weeklyTrx,
"weeklyAcc": weeklyAcc,
"weeklyAccTrx": weeklyAccTrx,
"monthly": monthly,
"monthlyTrx": monthlyTrx,
"monthlyAcc": monthlyAcc,
"monthlyAccTrx": monthlyAccTrx,
"ytdTarget": ytd_target,
"ytdPersen": ytd_persen,
}
def loop_data(self, src, dst): def loop_data(self, src, dst):
for key, val in enumerate(src): for key, val in enumerate(src):
...@@ -578,6 +727,12 @@ class Views(BaseView): ...@@ -578,6 +727,12 @@ class Views(BaseView):
target = self.get_targets(jenis) target = self.get_targets(jenis)
if jenis == "pbb": if jenis == "pbb":
realisasi = self.get_pbb_data()["ytd"] realisasi = self.get_pbb_data()["ytd"]
elif jenis == "opsen_pkb":
realisasi = self.get_pkb_data()["ytd"]
elif jenis == "opsen_bbnkb":
realisasi = self.get_bbnkb_data()["ytd"]
elif jenis == "bphtb": elif jenis == "bphtb":
realisasi = self.get_bphtb_data()["ytd"] realisasi = self.get_bphtb_data()["ytd"]
...@@ -617,7 +772,8 @@ class Views(BaseView): ...@@ -617,7 +772,8 @@ class Views(BaseView):
data.update(self.get_grid_pajak("atd")) data.update(self.get_grid_pajak("atd"))
data.update(self.get_grid_pajak("pbb")) data.update(self.get_grid_pajak("pbb"))
data.update(self.get_grid_pajak("bphtb")) data.update(self.get_grid_pajak("bphtb"))
data.update(self.get_grid_pajak("opsen")) data.update(self.get_grid_pajak("opsen_pkb"))
data.update(self.get_grid_pajak("opsen_bbnkb"))
return [{"kode": data[d]["kode"], return [{"kode": data[d]["kode"],
"nama": data[d]["nama"], "nama": data[d]["nama"],
"target": data[d]["target"], "target": data[d]["target"],
......
...@@ -12,17 +12,25 @@ ...@@ -12,17 +12,25 @@
<div metal:fill-slot="content"> <div metal:fill-slot="content">
<!-- Main Title --> <!-- Main Title -->
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-2">
<img src="${home}/eis/static/bapend.png" class="icon-rounded" alt="" align="left">
</div>
<div class="col-md-8">
<div class="text-center" style="margin-bottom: 20px; padding: 15px 0;"> <div class="text-center" style="margin-bottom: 20px; padding: 15px 0;">
<h2 style="margin: 0; font-weight: bold; color: #333; text-transform: uppercase; letter-spacing: 1px;"> <h2 style="margin: 0; font-weight: bold; color: #333;text-transform: uppercase; letter-spacing: 1px;
background-color:#aca8a8">
LAPORAN REALTIME REALISASI PAJAK DAERAH LAPORAN REALTIME REALISASI PAJAK DAERAH
</h2> </h2>
<h3 style="margin: 5px 0 0; font-weight: bold; color: #cc5200; text-transform: uppercase; letter-spacing: 1px;"> <h3 style="margin: 5px 0 0; font-weight: bold; color: #cc5200; text-transform: uppercase; letter-spacing: 1px;">
DATA DAN INFORMASI DATA DAN INFORMASI
</h3> </h3>
<h4 id="tanggalHariIni" style="margin: 5px 0 0; color: #003399; font-weight: bold;"></h4> <h4 id="tanggalHariIni" style="margin: 5px 0 0; color: #003399; font-weight: bold;"></h4>
</div> </div>
</div> </div>
<div class="col-md-2">
<img src="${home}/eis/static/img_logo.png" class="icon-rounded" alt="" align="left" width="
100">
</div>
</div> </div>
<div class="row hide"> <div class="row hide">
...@@ -88,21 +96,22 @@ ...@@ -88,21 +96,22 @@
<div class="col-md-8"> <div class="col-md-8">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<img src="${home}/eis/static/bapend.png" class="icon-rounded" alt="" align="left">
<h5 class="text-left bold">Target dan Realisasi per Pajak <h5 class="text-left bold">Target dan Realisasi per Pajak
<i class="fa fa-info-circle pull-right icon-color"></i>
</h5> </h5>
</div> </div>
<div class="panel-body"> <div class="panel-body">
<table class="table table-bordered table-sm" id="table1"> <table class="table table-bordered table-sm" id="table1">
<thead> <thead>
<tr> <tr>
<th class="align-middle text-center">Kode</th> <th rowspan="2" style="vertical-align: middle;text-align:center !important;">Kode</th>
<th class="align-middle text-center">Uraian</th> <th rowspan="2" style="vertical-align: middle;text-align:center !important;">Uraian</th>
<th class="text-center">Target</th> <th rowspan="2" style="vertical-align: middle;text-align:center !important;">Target</th>
<th class="text-center">Realisasi</th> <th colspan="2" style="vertical-align: middle;text-align:center !important;">Realisasi Hari Ini</th>
<th class="text-center">Selisih</th> <th rowspan="2" style="vertical-align: middle;text-align:center !important;">Sisa Target<br>(Rp.)</th>
<th class="text-center">%</th> </tr>
<tr>
<th style="vertical-align: middle;text-align:center !important;">(Rp.)</th>
<th style="vertical-align: middle;text-align:center !important;">(%)</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
...@@ -119,8 +128,8 @@ ...@@ -119,8 +128,8 @@
<td colspan="2" class="text-right">Jumlah</td> <td colspan="2" class="text-right">Jumlah</td>
<td><span id="sum_target"></span></td> <td><span id="sum_target"></span></td>
<td><span id="sum_realisasi"></span></td> <td><span id="sum_realisasi"></span></td>
<td><span id="sum_sisa"></span></td>
<td><span id="sum_persen"></span></td> <td><span id="sum_persen"></span></td>
<td><span id="sum_sisa"></span></td>
</tfoot> </tfoot>
</table> </table>
</div> </div>
...@@ -130,16 +139,16 @@ ...@@ -130,16 +139,16 @@
<div class="col-md-4"> <div class="col-md-4">
<div class="panel panel-default" id="gaugePanel" style="min-height: 500px;"> <div class="panel panel-default" id="gaugePanel" style="min-height: 500px;">
<div class="panel-heading" style="padding: 10px 15px;"> <div class="panel-heading" style="padding: 10px 15px;">
<h5 class="text-center bold" style="margin: 0;">REALISASI PAJAK DAERAH</h5> <h5 class="text-center bold" style="margin: 0;border:1px solid">REALISASI PAJAK DAERAH</h5>
<h3><b>Realisasi: Rp.<span id="gaugeRealisasi">0</span></b></h3>
</div> </div>
<div class="panel-body" style="padding: 0; height: calc(100% - 50px); overflow: hidden; display: flex; flex-direction: column;"> <div class="panel-body" style="padding: 0; height: calc(85% - 50px); overflow: hidden; display: flex; flex-direction: column;">
<div id="chartContainer" style="flex: 1; display: flex; align-items: center; justify-content: center; margin: 0; padding: 0;"> <div id="chartContainer" style="flex: 1; display: flex; align-items: center; justify-content: center; margin: 0; padding: 0;">
<canvas id="gaugeChart" width="100%" height="100%"></canvas> <canvas id="gaugeChart" width="50%" height="50%"></canvas>
</div> </div>
<div class="text-center" style="padding: 10px; background: rgba(0,0,0,0.02); border-top: 1px solid #ddd;"> <h4 id="gaugePercentage" class="text-center" style="color: #333; font-size: 16px;">63.70%</h4>
<h4 id="gaugePercentage" style="margin: 2px 0; font-weight: bold; color: #333; font-size: 16px;">63.70%</h4> <div class="text-left" style="padding: 10px; background: rgba(0,0,0,0.02); border-top: 1px solid #ddd;">
<p style="margin: 1px 0; font-size: 11px; color: #666;">Realisasi: Rp.<span id="gaugeRealisasi">2.343.460.022.116</span></p> <h3><b>Target: Rp.<span id="gaugeTarget">3.679.068.431.493</span></b></h3>
<p style="margin: 1px 0; font-size: 11px; color: #666;">Target: Rp.<span id="gaugeTarget">3.679.068.431.493</span></p>
</div> </div>
</div> </div>
</div> </div>
...@@ -608,13 +617,13 @@ ...@@ -608,13 +617,13 @@
"searching": false, "searching": false,
"info": false, "info": false,
"autoWidth": false, "autoWidth": false,
"scrollX": true, "ordering": false,
"order": [[0, 'asc']],
"columnDefs": [ "columnDefs": [
{ className: 'text-center', width: "50px", targets: [0] }, { className: 'text-center', width: "10px", targets: [0] },
{ className: 'text-left', targets: [1] }, { className: 'text-left', width: "150px",targets: [1] },
{ className: 'text-right', width: "100px", targets: [2, 3, 4], render: $.fn.dataTable.render.number('.', ',', 0, '') }, { className: 'text-right', width: "50px", targets: [2, 3], render: $.fn.dataTable.render.number('.', ',', 0, '') },
{ className: 'text-right', width: "100px", targets: [5], render: $.fn.dataTable.render.number('.', ',', 2, '') }, { className: 'text-right', width: "50px", targets: [4], render: $.fn.dataTable.render.number('.', ',', 2, '') },
{ className: 'text-right', width: "50px", targets: [5], render: $.fn.dataTable.render.number('.', ',', 0, '') },
] ]
} }
); );
...@@ -636,8 +645,8 @@ ...@@ -636,8 +645,8 @@
row.nama, row.nama,
row.target, row.target,
row.realisasi, row.realisasi,
row.persen.toFixed(2),
row.sisa, row.sisa,
row.persen.toFixed(2)
]); ]);
sum_target += row.target; sum_target += row.target;
sum_realisasi += row.realisasi; sum_realisasi += row.realisasi;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!