Commit 0edc25be by taufikyu

revisi chart detail

1 parent a4d8fce6
...@@ -240,4 +240,6 @@ id,kode,nama,path,factory,perm_name,disabled,created,updated,create_uid ...@@ -240,4 +240,6 @@ id,kode,nama,path,factory,perm_name,disabled,created,updated,create_uid
255,"arinvoice-ws-act","Invoice WS","/arinvoicews/{act}/act",,"read",0,"2020-09-18 16:45:45",,1 255,"arinvoice-ws-act","Invoice WS","/arinvoicews/{act}/act",,"read",0,"2020-09-18 16:45:45",,1
256,"public-act","Public","/public/{act}",,"read",0,"2020-09-18 16:45:45",,1 256,"public-act","Public","/public/{act}",,"read",0,"2020-09-18 16:45:45",,1
257,"ranking","Ranking","/ranking",,"read",0,"2020-10-13 08:38:45",,1 257,"ranking","Ranking","/ranking",,"read",0,"2020-10-13 08:38:45",,1
258,"ranking-det","Ranking Detail","/ranking/det",,"read",0,"2020-10-13 08:38:45",,1
\ No newline at end of file \ No newline at end of file
258,"ranking-det","Ranking Detail","/ranking/det",,"read",0,"2020-10-13 08:38:45",,1
259,"rek-det","Rekening Detail","/rek/det",,"read",0,"2020-10-13 08:38:45",,1
260,"chart-det","Chart Detail","/chart/det",,"read",0,"2020-10-13 08:38:45",,1
\ No newline at end of file \ No newline at end of file
...@@ -150,13 +150,6 @@ class AddSchema(colander.Schema): ...@@ -150,13 +150,6 @@ class AddSchema(colander.Schema):
title="Objek", title="Objek",
oid = "objek_pajak_nm" oid = "objek_pajak_nm"
) )
keterangan = colander.SchemaNode(
colander.String(),
title="Keterangan",
oid = "keterangan",
missing=None,
widget=widget.TextAreaWidget(rows=3, cols=10, css_class="forme")
)
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String(), colander.String(),
...@@ -221,6 +214,13 @@ class AddSchema(colander.Schema): ...@@ -221,6 +214,13 @@ class AddSchema(colander.Schema):
missing=colander.drop, missing=colander.drop,
oid = "jumlah" oid = "jumlah"
) )
keterangan = colander.SchemaNode(
colander.String(),
title="Keterangan",
oid = "keterangan",
missing=None,
widget=widget.TextAreaWidget(rows=3, cols=10, css_class="forme")
)
no_skrd = colander.SchemaNode( no_skrd = colander.SchemaNode(
colander.String(), colander.String(),
oid = "no_skrd" oid = "no_skrd"
......
import sys
import re
import logging
import os
import qrcode
import base64
from email.utils import parseaddr
from sqlalchemy import not_, func, or_, desc
from datetime import datetime
from time import gmtime, strftime, strptime
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..tools import (
_DTnumberformat,
multi_dict_values,
odt_export,
terbilang,
thousand,
dmy,
BULANS,
get_settings
)
from ..models import DBSession
from ..models.isipkd import(
Pegawai, ObjekPajak, SubjekPajak, ARInvoice,
Unit, UserUnit,Wilayah, Pajak, Rekening,
ARSts, ARStsItem, ARSspd, ARTbp
)
from datatables import (
ColumnDT, DataTables)
from ..security import group_finder,group_in
from daftar import (STATUS, deferred_status,
daftar_subjekpajak, deferred_subjekpajak,
daftar_objekpajak, deferred_objekpajak,
daftar_wilayah, deferred_wilayah,
daftar_unit, deferred_unit,
daftar_pajak, deferred_pajak,
auto_op_nm, auto_unit_nm, auto_wp_nm, auto_wp_nm3
)
SESS_ADD_FAILED = 'Gagal tambah Tagihan'
SESS_EDIT_FAILED = 'Gagal edit Tagihan'
log = logging.getLogger(__name__)
@view_config(route_name='chart-det', renderer='templates/chart_det.pt')
def view_detail(request):
params = request.params
url_dict = request.matchdict
kd = ''
unit = ''
if 'kode' in params and params['kode']:
rekening = Rekening.query().filter(func.trim(Rekening.kode)==params['kode'].strip()).first()
level = rekening.level_id
kd = rekening.kode.strip()
unit = rekening.nama.strip()
rek = Rekening.query().filter(Rekening.level_id==(level+1)).order_by(Rekening.kode).all()
else:
rek = Rekening.query().filter(Rekening.level_id==2).order_by(Rekening.kode).all()
reks = []
for r in rek:
reks.append(dict(
kode=r.kode.strip(),
nama=r.nama.strip(),
target=[0,0,0,0,0,0,0,0,0,0,0,0],
realisasi=[0,0,0,0,0,0,0,0,0,0,0,0],
persen=[0,0,0,0,0,0,0,0,0,0,0,0]
))
payments = DBSession.query(
ARSspd.tgl_bayar.label('tanggal'),
ARSspd.bayar.label('jumlah'),
ARInvoice.rek_kode.label('rek_kode'),
Unit.kode.label('kode'),
Unit.nama.label('nama'),
).join(ARInvoice, ARInvoice.id == ARSspd.arinvoice_id).\
join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARSspd.tahun_id==params['year']).order_by(ARInvoice.unit_kode)\
.all()
for p in payments:
for re in reks:
if p.rek_kode.strip().startswith(re['kode']):
## chart realisasi
for x in range(12):
if p.tanggal.month == x+1:
re['realisasi'][x] += int(p.jumlah)
invoices = DBSession.query(
ARInvoice.tgl_tetap.label('tanggal'),
ARInvoice.jumlah.label('jumlah'),
ARInvoice.rek_kode.label('rek_kode'),
Unit.kode.label('kode'),
Unit.nama.label('nama'),
).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARInvoice.tahun_id==params['year']).order_by(ARInvoice.unit_kode)\
.all()
for i in invoices:
for re in reks:
if i.rek_kode.strip().startswith(re['kode']):
## chart target
for x in range(12):
if i.tanggal.month == x+1:
re['target'][x] += int(p.jumlah)
##Hitung persen
for re in reks:
for x in range(12):
re['persen'][x] = re['target'][x]>0 and str(round((float(re['realisasi'][x])/float(re['target'][x]))*100,2)) or '0'
##hanya yang isi saja yang diambil
#re_ = []
#for re in reks:
# if sum(re['target'])>0 and sum(re['realisasi'])>0:
# re_.append(re)
#
#if len(re_)==0:
# raise HTTPFound(location=request.route_url('home'))
#data = re_
#count_unit = len(re_) > 3 and 3 or 4
if len(reks)==0:
raise HTTPFound(location=request.route_url('home'))
data = reks
count_unit = len(reks) > 3 and 3 or 4
return dict(data=data, count_unit=count_unit, kd=kd, unit=unit)
...@@ -119,7 +119,12 @@ def view_det(request): ...@@ -119,7 +119,12 @@ def view_det(request):
data_dashboard = dict( data_dashboard = dict(
sopd4 = [] sopd4 = []
) )
opds = Unit.query().filter(Unit.level_id==4).order_by(Unit.kode).all() level = DBSession.query(Unit.level_id).filter(func.trim(Unit.kode)==params['kode']).scalar()
opds = DBSession.query(Unit).filter(Unit.level_id==(level+1),
Unit.kode.ilike(params['kode']+'%'))\
.order_by(Unit.kode).all()
if not opds:
raise HTTPFound(location=request.route_url('home'))
for op in opds: for op in opds:
data_dashboard['sopd4'].append(dict(kode=op.kode.strip(), level=op.level_id, unit=op.nama.strip(), nominal=0)) data_dashboard['sopd4'].append(dict(kode=op.kode.strip(), level=op.level_id, unit=op.nama.strip(), nominal=0))
...@@ -134,16 +139,13 @@ def view_det(request): ...@@ -134,16 +139,13 @@ def view_det(request):
func.max(Unit.level_id).label('level_id'), func.max(Unit.level_id).label('level_id'),
).join(ARInvoice, ARInvoice.id == ARSspd.arinvoice_id).\ ).join(ARInvoice, ARInvoice.id == ARSspd.arinvoice_id).\
join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\ join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARSspd.tahun_id==tahun_berjalan, filter(ARSspd.tahun_id==tahun_berjalan).\
Unit.level_id==4).\
group_by(func.trim(Unit.kode)).all() group_by(func.trim(Unit.kode)).all()
for sopd in opd: for sopd in opd:
for unit4 in data_dashboard['sopd4']: for unit4 in data_dashboard['sopd4']:
if sopd.kode.startswith(unit4['kode']): if sopd.kode.startswith(unit4['kode']):
unit4['nominal']+=sopd.jumlah unit4['nominal']+=sopd.jumlah
print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>', opd)
return dict(project='esipkd', dates=dates, data = data_dashboard, unit_kode=unit_kode, unit_nama=unit_nama, statusadmin=statusadmin) return dict(project='esipkd', dates=dates, data = data_dashboard, unit_kode=unit_kode, unit_nama=unit_nama, statusadmin=statusadmin)
else: else:
return dict(project='esipkd', statusadmin=statusadmin) return dict(project='esipkd', statusadmin=statusadmin)
......
import sys
import re
import logging
import os
import qrcode
import base64
from email.utils import parseaddr
from sqlalchemy import not_, func, or_, desc
from datetime import datetime
from time import gmtime, strftime, strptime
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..tools import (
_DTnumberformat,
multi_dict_values,
odt_export,
terbilang,
thousand,
dmy,
BULANS,
get_settings
)
from ..models import DBSession
from ..models.isipkd import(
Pegawai, ObjekPajak, SubjekPajak, ARInvoice,
Unit, UserUnit,Wilayah, Pajak, Rekening,
ARSts, ARStsItem, ARSspd, ARTbp
)
from datatables import (
ColumnDT, DataTables)
from ..security import group_finder,group_in
from daftar import (STATUS, deferred_status,
daftar_subjekpajak, deferred_subjekpajak,
daftar_objekpajak, deferred_objekpajak,
daftar_wilayah, deferred_wilayah,
daftar_unit, deferred_unit,
daftar_pajak, deferred_pajak,
auto_op_nm, auto_unit_nm, auto_wp_nm, auto_wp_nm3
)
SESS_ADD_FAILED = 'Gagal tambah Tagihan'
SESS_EDIT_FAILED = 'Gagal edit Tagihan'
log = logging.getLogger(__name__)
@view_config(route_name='rek-det', renderer='templates/rekening/rekening_det.pt')
def view_detail(request):
params = request.params
level = DBSession.query(Rekening.level_id).filter(Rekening.kode==params['kode']).scalar()
rek = Rekening.query().filter(Rekening.level_id==(level+1)).order_by(Rekening.kode).all()
reks = []
for r in rek:
reks.append(dict(kode=r.kode.strip(), nama=r.nama.strip(), target=0, realisasi=0, persen=0))
payments = DBSession.query(
ARSspd.tgl_bayar.label('tanggal'),
ARSspd.bayar.label('jumlah'),
ARInvoice.rek_kode.label('rek_kode'),
Unit.kode.label('kode'),
Unit.nama.label('nama'),
).join(ARInvoice, ARInvoice.id == ARSspd.arinvoice_id).\
join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARSspd.tahun_id==params['year']).order_by(ARInvoice.unit_kode)
payments = payments.all()
for p in payments:
## JIKA ADA FILTER DEPARTEMEN
if 'unit' in params and params['unit']:
if p.kode.strip().startswith(params['unit'].strip()):
## REKENING
for r in reks:
if p.rek_kode.strip().startswith(r['kode']):
r['realisasi'] += int(p.jumlah)
## JIKA TIDAK ADA FILTER DEPARTEMEN
elif not 'unit' in params or not params['unit']:
## REKENING
for r in reks:
if p.rek_kode.strip().startswith(r['kode']):
r['realisasi'] += int(p.jumlah)
invoices = DBSession.query(
ARInvoice.tgl_tetap.label('tanggal'),
ARInvoice.jumlah.label('jumlah'),
ARInvoice.rek_kode.label('rek_kode'),
Unit.kode.label('kode'),
Unit.nama.label('nama'),
).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARInvoice.tahun_id==params['year']).order_by(ARInvoice.unit_kode)
invoices = invoices.all()
for i in invoices:
## JIKA ADA FILTER DEPARTEMEN
if 'unit' in params and params['unit']:
if i.kode.strip().startswith(params['unit'].strip()):
## REKENING
for r in reks:
if i.rek_kode.strip().startswith(r['kode']):
r['target'] += int(i.jumlah)
## JIKA TIDAK ADA FILTER DEPARTEMEN
elif not 'unit' in params or not params['unit']:
## REKENING
for r in reks:
if i.rek_kode.strip().startswith(r['kode']):
r['target'] += int(i.jumlah)
## Hitung Persen
for r in reks:
r['persen'] = r['target']>0 and str(round((float(r['realisasi'])/float(r['target']))*100,2)) or '0'
if len(reks)==0:
raise HTTPFound(location=request.route_url('home'))
count_rek = len(reks) > 3 and 3 or 4
return dict(data=reks, count_rek=count_rek)
...@@ -107,17 +107,6 @@ ...@@ -107,17 +107,6 @@
${error}</p> ${error}</p>
</div> </div>
</div> </div>
<!--keterangan -->
<div class="form-group" tal:define="field form['keterangan']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-9">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<!--periode_1 --> <!--periode_1 -->
<div class="form-group" tal:define="field form['periode_1']" id="item-${field.oid}"> <div class="form-group" tal:define="field form['periode_1']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}"> <label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
...@@ -257,6 +246,17 @@ ...@@ -257,6 +246,17 @@
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> </div> ${error}</p> </div>
</div> </div>
<!--keterangan -->
<div class="form-group" tal:define="field form['keterangan']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-9">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<!-- Nama Pejabat --> <!-- Nama Pejabat -->
<div class="form-group" tal:define="field form['pejabat_nama']" id="item-${field.oid}"> <div class="form-group" tal:define="field form['pejabat_nama']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}"> <label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
......
...@@ -56,17 +56,6 @@ ...@@ -56,17 +56,6 @@
${error}</p> ${error}</p>
</div> </div>
</div> </div>
<!--keterangan -->
<div class="form-group" tal:define="field form['keterangan']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-9">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<!--kode --> <!--kode -->
<div class="form-group" tal:define="field form['kode']" id="item-${field.oid}"> <div class="form-group" tal:define="field form['kode']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}"> <label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
...@@ -209,6 +198,17 @@ ...@@ -209,6 +198,17 @@
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> </div> ${error}</p> </div>
</div> </div>
<!--keterangan -->
<div class="form-group" tal:define="field form['keterangan']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}</label>
<div class="col-md-9">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<!-- Nama Pejabat --> <!-- Nama Pejabat -->
<div class="form-group" tal:define="field form['pejabat_nama']" id="item-${field.oid}"> <div class="form-group" tal:define="field form['pejabat_nama']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}"> <label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
......
<html metal:use-macro="load: base.pt">
<div metal:fill-slot="content">
<style>
h4 {
font-weight:bold;
text-align:left;
color: #15915b;
}
h5 {
font-weight:bold;
font-size:18px;
text-align:left;
color: #264184;
}
.wraplabel {
border:1px solid #15915b;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
padding:10px;
margin-top:10px;
margin-bottom:20px;
}
.labeltab {
color:#264184;
font-weight:bold;
font-size:16px;
}
.textlabel {
display:block;
text-align:right;
color:#005500;
font-weight:bold;
}
.wrapchart {
border:1px solid #c4c4c4;
padding:0px;
margin-top:10px;
margin-bottom:20px;
}
.table {
font-size: 12px;
margin-top: 10px;
margin-bottom: 20px;
}
.table th {
background-color:#ddebf6;
}
.no-padding {
padding:0px;
}
.wrapopd {
border:1px solid #c4c4c4;
min-height:120px;
padding-top:5px;
padding-bottom:5px;
}
.kodeopd {
display:block;
color:#264184;
font-size:120%;
font-weight:bold;
}
.namaopd {
display:block;
color:#264184;
font-weight:500;
}
.jmlopd {
display:block;
font-size:120%;
color:#264184;
font-weight:bold;
text-align:right;
position: absolute;
bottom: 5px;
right: 10px;
}
.picker {
font-size:13px;
}
.link-styleless {
text-decoration: none !important;
color:inherit !important;
cursor: pointer;
}
.modal-body {
overflow-x:scroll !important;
}
.bgth {
background-color: #ddebf6 !important;
}
.modal-backdrop {
visibility: hidden !important;
}
.modal.in {
background-color: rgba(0,0,0,0.5);
}
.modal { overflow: auto !important; }
tr.header
{
cursor:pointer;
}
.content {
display: none;
}
</style>
<div class="col-md-12">
<font class="labeltab">Perkembangan Realisasi Pendapatan Daerah tahun ${request.params['year']}</font><br>
<font class="labeltab">${(kd and unit) and '{} [{}]'.format(unit,kd) or ''}</font><br>
<div class="clearfix"></div>
<tal:block tal:repeat="c data">
<div class="col-md-6">
<canvas id="chart${c['kode']}" class="wrapchart link-styleless" href="/chart/det?year=${request.params['year']}&kode=${c['kode']}">
</canvas>
</div>
</tal:block>
</div>
<div class="clearfix"></div>
<script type="text/javascript" src="/static/js/Chart.min.js"></script>
<script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script>
<script>
$(document).ready(function () {
});
</script>
</div>
</html>
...@@ -124,16 +124,19 @@ Selamat datang di aplikasi SIPANDU ...@@ -124,16 +124,19 @@ Selamat datang di aplikasi SIPANDU
</div> </div>
</tal:block> </tal:block>
<tal:block tal:condition="statusadmin"> <tal:block tal:condition="statusadmin">
<div class="col-md-6"> <div class="col-md-5">
<h4>REALISASI PENDAPATAN DAERAH TAHUN ${dates['year']}</h4> <h4>REALISASI PENDAPATAN DAERAH TAHUN ${dates['year']}</h4>
<font class="labeltab">Tanggal : ${dates['day'].strftime('%d-%m-%Y')}</font> <font class="labeltab">Tanggal : ${dates['day'].strftime('%d-%m-%Y')}</font>
</div> </div>
<div class="col-md-6"> <div class="col-md-7">
<form method="get"> <form method="get">
<div class="col-md-5"> <div class="col-md-3">
<input id="date" type="text" class="form-control date" name="date" onchange="this.form.submit()" value="${dates['day'].strftime('%d-%m-%Y')}"> <input type="text" class="form-control date" name="awal" onchange="this.form.submit()" value="${dates['awal'].strftime('%d-%m-%Y')}">
</div> </div>
<div class="col-md-7"> <div class="col-md-3">
<input type="text" class="form-control date" name="akhir" onchange="this.form.submit()" value="${dates['akhir'].strftime('%d-%m-%Y')}">
</div>
<div class="col-md-6">
<select id="unit" class="form-control" name="unit" onchange="this.form.submit()"> <select id="unit" class="form-control" name="unit" onchange="this.form.submit()">
<option></option> <option></option>
<option tal:repeat="o opds" value="${o.kode.strip()}">${o.kode.strip()} - ${o.nama}</option> <option tal:repeat="o opds" value="${o.kode.strip()}">${o.kode.strip()} - ${o.nama}</option>
...@@ -163,23 +166,46 @@ Selamat datang di aplikasi SIPANDU ...@@ -163,23 +166,46 @@ Selamat datang di aplikasi SIPANDU
<font class="textlabel">${'{:n}'.format(data['tabular']['minggu']['n'])}</font> <font class="textlabel">${'{:n}'.format(data['tabular']['minggu']['n'])}</font>
</div> </div>
</div> </div>
<div class="col-md-3"> <!--<div class="col-md-3">
<div class="wraplabel"> <div class="wraplabel">
<font class="labeltab">Hari ini</font> <font class="labeltab">Hari ini</font>
<font class="textlabel">${'{:n}'.format(data['tabular']['hari']['q'])}</font> <font class="textlabel">${'{:n}'.format(data['tabular']['hari']['q'])}</font>
<font class="textlabel">${'{:n}'.format(data['tabular']['hari']['n'])}</font> <font class="textlabel">${'{:n}'.format(data['tabular']['hari']['n'])}</font>
</div> </div>
</div>-->
</div>
<div class="col-md-12">
<div class="col-md-4">
<div class="wraplabel">
<font class="labeltab">Penerimaan s/d Hari Kemarin</font><br>
<font class="textlabel">${'{:n}'.format(data['tabular']['hari_kemarin']['q'])}</font>
<font class="textlabel">${'{:n}'.format(data['tabular']['hari_kemarin']['n'])}</font>
</div>
</div>
<div class="col-md-4">
<div class="wraplabel">
<font class="labeltab">Penerimaan Hari Ini</font>
<font class="textlabel">${'{:n}'.format(data['tabular']['ini']['q'])}</font>
<font class="textlabel">${'{:n}'.format(data['tabular']['ini']['n'])}</font>
</div>
</div>
<div class="col-md-4">
<div class="wraplabel">
<font class="labeltab">Penerimaan s/d Hari Ini</font>
<font class="textlabel">${'{:n}'.format(data['tabular']['hari_ini']['q'])}</font>
<font class="textlabel">${'{:n}'.format(data['tabular']['hari_ini']['n'])}</font>
</div>
</div> </div>
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<div class="col-md-7"> <div class="col-md-7">
<font class="labeltab">Perkembangan Realisasi Pendapatan Daerah tahun ${dates['year']}</font><br> <font class="labeltab">Perkembangan Realisasi Pendapatan Daerah tahun ${dates['year']}</font><br>
<div class="clearfix"></div> <div class="clearfix"></div>
<canvas id="chart" class="wrapchart"> <canvas id="chart" class="wrapchart link-styleless" href="/chart/det?year=${dates['year']}">
</canvas> </canvas>
</div> </div>
<div class="col-md-5"> <div class="col-md-5">
<a class="link-styleless" title="klik untuk melihat daftar lengkap ranking" data-toggle="modal" href="/ranking"> <a class="link-styleless" title="klik untuk melihat daftar lengkap ranking" href="/ranking?date=${dates['day'].strftime('%d-%m-%Y')}">
<font class="labeltab">Daftar Penerimaan Pendapatan Daerah Periode ${dates['year']}</font><br> <font class="labeltab">Daftar Penerimaan Pendapatan Daerah Periode ${dates['year']}</font><br>
<div class="clearfix"></div> <div class="clearfix"></div>
<table class="table table-bordered"> <table class="table table-bordered">
...@@ -187,7 +213,9 @@ Selamat datang di aplikasi SIPANDU ...@@ -187,7 +213,9 @@ Selamat datang di aplikasi SIPANDU
<tr> <tr>
<th style="text-align:center;">No</th> <th style="text-align:center;">No</th>
<th style="text-align:center;">Nama Unit</th> <th style="text-align:center;">Nama Unit</th>
<th style="text-align:center;">Nominal</th> <th style="text-align:center;">Target</th>
<th style="text-align:center;">Realisasi</th>
<th style="text-align:center;">Persen</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
...@@ -195,7 +223,9 @@ Selamat datang di aplikasi SIPANDU ...@@ -195,7 +223,9 @@ Selamat datang di aplikasi SIPANDU
<tr> <tr>
<td style="text-align:center;">${s['peringkat']}</td> <td style="text-align:center;">${s['peringkat']}</td>
<td style="text-align:left;">${s['unit']}</td> <td style="text-align:left;">${s['unit']}</td>
<td style="text-align:right;">${'{:n}'.format(s['nominal'])}</td> <td style="text-align:right;">${'{:n}'.format(s['target'])}</td>
<td style="text-align:right;">${'{:n}'.format(s['realisasi'])}</td>
<td style="text-align:right;">${s['persen']}</td>
</tr> </tr>
</tal:block> </tal:block>
</tbody> </tbody>
...@@ -205,8 +235,8 @@ Selamat datang di aplikasi SIPANDU ...@@ -205,8 +235,8 @@ Selamat datang di aplikasi SIPANDU
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<tal:block tal:repeat="r data['rek']"> <tal:block tal:repeat="r data['rek']">
<a class="link-styleless" title="klik untuk melihat daftar lengkap rekening" data-toggle="modal" data-target="#rekeningdetail${r['kode'].replace('.','')}"> <a class="link-styleless" title="klik untuk melihat daftar lengkap rekening" href="/rek/det?${r['kode'] and 'kode='+r['kode'] or ''}${dates['year'] and '&year='+str(dates['year']) or ''}${('unit' in request.params and request.params['unit']) and '&unit='+request.params['unit'].strip() or ''}">
<div class="col-md-3 wrapopd"> <div class="col-md-${data['count_rek']} wrapopd">
<font class="kodeopd">${r['kode']}</font> <font class="kodeopd">${r['kode']}</font>
<font class="namaopd">${r['nama']}</font> <font class="namaopd">${r['nama']}</font>
<font class="jmlopd">${'{:n}'.format(r['realisasi'])}</font> <font class="jmlopd">${'{:n}'.format(r['realisasi'])}</font>
...@@ -218,73 +248,6 @@ Selamat datang di aplikasi SIPANDU ...@@ -218,73 +248,6 @@ Selamat datang di aplikasi SIPANDU
<div class="clearfix"></div> <div class="clearfix"></div>
<!-- MODAL START HERE --> <!-- MODAL START HERE -->
<!--MODAL DETAIL REKENING -->
<tal:block tal:repeat="ru data['rek']">
<div class="modal fade" id="rekeningdetail${ru['kode'].replace('.','')}" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
</div>
<div class="modal-body">
<div class="col-md-12">
<h5>Detail Rekening Penerimaan Periode ${dates['day'].strftime('%d-%m-%Y')}</h5>
</div>
<div class="clearfix"></div>
<table class="table table-bordered">
<thead>
<tr>
<th style="text-align:center;">No</th>
<th style="text-align:center;">Kode Rekening</th>
<th style="text-align:center;">JENIS PENERIMAAN</th>
<th style="text-align:center;">TARGET<br>Rp.</th>
<th style="text-align:center;">REALISASI<br>Rp.</th>
<th style="text-align:center;">%</th>
</tr>
</thead>
<tbody>
<tal:block tal:repeat="r data['rek']">
<tal:block tal:condition="ru['kode']==r['kode']">
<tr>
<td style="text-align:right;"><b>${'{}.'.format(r['no'])}</b></td>
<td style="text-align:left;"><b>${r['kode']}</b></td>
<td style="text-align:left;"><b>${r['nama'].upper()}</b></td>
<td style="text-align:right;"></td>
<td style="text-align:right;"></td>
<td style="text-align:right;"></td>
</tr>
<tal:block tal:repeat="rd data['rekdet']">
<tr>
<tal:block tal:condition="rd['kode'].startswith(r['kode'])">
<td style="text-align:right;"></td>
<td style="text-align:left;">${rd['kode']}</td>
<td style="text-align:left;">${'{}. {}'.format(rd['no'],rd['nama'])}</td>
<td style="text-align:right;">${'{:n}'.format(rd['target'])}</td>
<td style="text-align:right;">${'{:n}'.format(rd['realisasi'])}</td>
<td style="text-align:right;">${rd['persen']}</td>
</tal:block>
</tr>
</tal:block>
<tr class="bgth">
<td style="text-align:right;"></td>
<td style="text-align:left;"></td>
<td style="text-align:left;"><b>${'JUMLAH {} :'.format(r['no'])}</b></td>
<td style="text-align:right;"><b>${'{:n}'.format(r['target'])}</b></td>
<td style="text-align:right;"><b>${'{:n}'.format(r['realisasi'])}</b></td>
<td style="text-align:right;"><b>${r['persen']}</b></td>
</tr>
</tal:block>
</tal:block>
</tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</tal:block>
</div> </div>
<script type="text/javascript" src="/static/js/Chart.min.js"></script> <script type="text/javascript" src="/static/js/Chart.min.js"></script>
...@@ -347,16 +310,16 @@ Selamat datang di aplikasi SIPANDU ...@@ -347,16 +310,16 @@ Selamat datang di aplikasi SIPANDU
data: { data: {
labels: ['Jan','Feb','Mar','Apr','Mei','Jun','Jul','Agt','Sep','Okt','Nov','Des'], labels: ['Jan','Feb','Mar','Apr','Mei','Jun','Jul','Agt','Sep','Okt','Nov','Des'],
datasets: [{ datasets: [{
label: 'Transaksi', label: 'Target',
backgroundColor: "#264184", backgroundColor: "#264184",
borderColor: "#264184", borderColor: "#264184",
data: ${data['chart']['q']}, data: ${str(data['chart']['t']).replace('L','')},
}, },
{ {
label: 'Nominal', label: 'Realisasi',
backgroundColor: "#15915b", backgroundColor: "#15915b",
borderColor: "#15915b", borderColor: "#15915b",
data: ${str(data['chart']['n']).replace('L','')}, data: ${str(data['chart']['r']).replace('L','')},
}] }]
}, },
options: { options: {
...@@ -380,7 +343,7 @@ Selamat datang di aplikasi SIPANDU ...@@ -380,7 +343,7 @@ Selamat datang di aplikasi SIPANDU
displayColors: false, displayColors: false,
borderWidth: 0, borderWidth: 0,
}, },
backgroundColor: "rgba(0, 0, 0, 0)", backgroundColor: "rgba(255, 255, 255, 1)",
titleFontSize: 11, titleFontSize: 11,
mode: 'point' mode: 'point'
}, },
...@@ -430,7 +393,10 @@ Selamat datang di aplikasi SIPANDU ...@@ -430,7 +393,10 @@ Selamat datang di aplikasi SIPANDU
"submitFormat": "dd-mm-yyyy", "submitFormat": "dd-mm-yyyy",
"format": "dd-mm-yyyy",}); "format": "dd-mm-yyyy",});
}); });
$('#chart').click(function(){
window.location = $(this).attr('href');
return false;
});
$('.date').attr('readonly', true); $('.date').attr('readonly', true);
$('.date').css('background-color', 'transparent'); $('.date').css('background-color', 'transparent');
<tal:block tal:condition="'unit' in request.params and request.params['unit']"> <tal:block tal:condition="'unit' in request.params and request.params['unit']">
......
...@@ -104,6 +104,9 @@ ...@@ -104,6 +104,9 @@
.content { .content {
display: none; display: none;
} }
table tr:hover {
background-color: #9FAFD1;
}
</style> </style>
<tal:block tal:condition="statusadmin"> <tal:block tal:condition="statusadmin">
<div class="col-md-12"> <div class="col-md-12">
...@@ -120,7 +123,7 @@ ...@@ -120,7 +123,7 @@
<tbody> <tbody>
<tal:block tal:repeat="so4 data['sopd4']"> <tal:block tal:repeat="so4 data['sopd4']">
<tal:block tal:condition="so4['kode'].startswith(unit_kode)"> <tal:block tal:condition="so4['kode'].startswith(unit_kode)">
<tr> <tr class="header" title="klik untuk melihat daftar lengkap ranking" href="/ranking/det?date=${request.params['date']}&kode=${so4['kode']}&unit=${so4['unit']}">
<td style="text-align:left;">${so4['kode']}</td> <td style="text-align:left;">${so4['kode']}</td>
<td style="text-align:left;">${so4['unit']}</td> <td style="text-align:left;">${so4['unit']}</td>
<td style="text-align:right;">${'{:n}'.format(so4['nominal'])}</td> <td style="text-align:right;">${'{:n}'.format(so4['nominal'])}</td>
...@@ -138,20 +141,26 @@ ...@@ -138,20 +141,26 @@
<script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script> <script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script>
<script> <script>
$(document).ready(function () { $(document).ready(function () {
$('tr.header').click(function() {
$('.expanded').slideUp(100, function() {}); $('table tr').click(function(){
if (!$(this).hasClass('expanded-header')) { window.location = $(this).attr('href');
$(this).nextUntil('tr.header').addClass('expanded').slideToggle(100, function() {}); return false;
$('.expanded-header').removeClass('expanded-header'); });
$(this).addClass('expanded-header');
} else { $('tr.header').click(function() {
$(this).removeClass('expanded-header'); $('.expanded').slideUp(100, function() {});
} if (!$(this).hasClass('expanded-header')) {
}); $(this).nextUntil('tr.header').addClass('expanded').slideToggle(100, function() {});
$('.expanded-header').removeClass('expanded-header');
$(this).addClass('expanded-header');
} else {
$(this).removeClass('expanded-header');
}
});
$('.date').pickadate({ $('.date').pickadate({
"submitFormat": "dd-mm-yyyy", "submitFormat": "dd-mm-yyyy",
"format": "dd-mm-yyyy",}); "format": "dd-mm-yyyy",
}); });
$('.date').attr('readonly', true); $('.date').attr('readonly', true);
...@@ -159,6 +168,8 @@ ...@@ -159,6 +168,8 @@
<tal:block tal:condition="'unit' in request.params and request.params['unit']"> <tal:block tal:condition="'unit' in request.params and request.params['unit']">
$("#unit").val("${request.params['unit'].strip()}"); $("#unit").val("${request.params['unit'].strip()}");
</tal:block> </tal:block>
});
</script> </script>
</tal:block> </tal:block>
</div> </div>
......
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
<tbody> <tbody>
<tal:block tal:repeat="so data['sopd']"> <tal:block tal:repeat="so data['sopd']">
<tal:block tal:condition="so['nominal']"> <tal:block tal:condition="so['nominal']">
<tr class="header" title="klik untuk melihat daftar lengkap ranking" href="/ranking/det?kode=${so['kode']}&unit=${so['unit']}"> <tr class="header" title="klik untuk melihat daftar lengkap ranking" href="/ranking/det?date=${request.params['date']}&kode=${so['kode']}&unit=${so['unit']}">
<td style="text-align:center;">${so['peringkat']}</td> <td style="text-align:center;">${so['peringkat']}</td>
<td style="text-align:left;">${so['kode']}</td> <td style="text-align:left;">${so['kode']}</td>
<td style="text-align:left;">${so['unit']}</td> <td style="text-align:left;">${so['unit']}</td>
...@@ -143,25 +143,25 @@ ...@@ -143,25 +143,25 @@
<script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script> <script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script>
<script> <script>
$(document).ready(function () { $(document).ready(function () {
$('table tr').click(function(){ $('table tr').click(function(){
window.location = $(this).attr('href'); window.location = $(this).attr('href');
return false; return false;
}); });
$('tbody>tr:not(.header)').hide(); $('tbody>tr:not(.header)').hide();
$('tr.header').click(function() { $('tr.header').click(function() {
$('.expanded').slideUp(100, function() {}); $('.expanded').slideUp(100, function() {});
if (!$(this).hasClass('expanded-header')) { if (!$(this).hasClass('expanded-header')) {
$(this).nextUntil('tr.header').addClass('expanded').slideToggle(100, function() {}); $(this).nextUntil('tr.header').addClass('expanded').slideToggle(100, function() {});
$('.expanded-header').removeClass('expanded-header'); $('.expanded-header').removeClass('expanded-header');
$(this).addClass('expanded-header'); $(this).addClass('expanded-header');
} else { } else {
$(this).removeClass('expanded-header'); $(this).removeClass('expanded-header');
} }
}); });
$('.date').pickadate({ $('.date').pickadate({
"submitFormat": "dd-mm-yyyy", "submitFormat": "dd-mm-yyyy",
"format": "dd-mm-yyyy",}); "format": "dd-mm-yyyy",
}); });
$('.date').attr('readonly', true); $('.date').attr('readonly', true);
...@@ -169,6 +169,7 @@ ...@@ -169,6 +169,7 @@
<tal:block tal:condition="'unit' in request.params and request.params['unit']"> <tal:block tal:condition="'unit' in request.params and request.params['unit']">
$("#unit").val("${request.params['unit'].strip()}"); $("#unit").val("${request.params['unit'].strip()}");
</tal:block> </tal:block>
});
</script> </script>
</tal:block> </tal:block>
</div> </div>
......
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<style>
h4 {
font-weight:bold;
text-align:left;
color: #15915b;
}
h5 {
font-weight:bold;
font-size:18px;
text-align:left;
color: #264184;
}
.wraplabel {
border:1px solid #15915b;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
padding:10px;
margin-top:10px;
margin-bottom:20px;
}
.labeltab {
color:#264184;
font-weight:bold;
font-size:16px;
}
.textlabel {
display:block;
text-align:right;
color:#005500;
font-weight:bold;
}
.wrapchart {
border:1px solid #c4c4c4;
padding:0px;
margin-top:10px;
margin-bottom:20px;
}
.table {
font-size: 12px;
margin-top: 10px;
margin-bottom: 20px;
}
.table th {
background-color:#ddebf6;
}
.no-padding {
padding:0px;
}
.wrapopd {
border:1px solid #c4c4c4;
min-height:120px;
padding-top:5px;
padding-bottom:5px;
}
.kodeopd {
display:block;
color:#264184;
font-size:120%;
font-weight:bold;
}
.namaopd {
display:block;
color:#264184;
font-weight:500;
}
.jmlopd {
display:block;
font-size:120%;
color:#264184;
font-weight:bold;
text-align:right;
position: absolute;
bottom: 5px;
right: 10px;
}
.picker {
font-size:13px;
}
.link-styleless {
text-decoration: none !important;
color:inherit !important;
cursor: pointer;
}
.modal-body {
overflow-x:scroll !important;
}
.bgth {
background-color: #ddebf6 !important;
}
.modal-backdrop {
visibility: hidden !important;
}
.modal.in {
background-color: rgba(0,0,0,0.5);
}
.modal { overflow: auto !important; }
tr.header
{
cursor:pointer;
}
.content {
display: none;
}
</style>
<div class="col-md-12">
<tal:block tal:repeat="r data">
<a class="link-styleless" title="klik untuk melihat daftar lengkap rekening" href="/rek/det?${r['kode'] and 'kode='+r['kode'] or ''}${request.params['year'] and '&year='+str(request.params['year']) or ''}${('unit' in request.params and request.params['unit']) and '&unit='+request.params['unit'].strip() or ''}">
<div class="col-md-${count_rek} wrapopd">
<font class="kodeopd">${r['kode']}</font>
<font class="namaopd">${r['nama']}</font>
<font class="jmlopd">${'{:n}'.format(r['realisasi'])}</font>
</div>
</a>
</tal:block>
</div>
<div class="col-md-12">
<div class="clearfix"></div>
</div>
<script type="text/javascript" src="/static/js/Chart.min.js"></script>
<script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script>
<script>
$(document).ready(function () {
$('tr.header').click(function() {
$('.expanded').slideUp(100, function() {});
if (!$(this).hasClass('expanded-header')) {
$(this).nextUntil('tr.header').addClass('expanded').slideToggle(100, function() {});
$('.expanded-header').removeClass('expanded-header');
$(this).addClass('expanded-header');
} else {
$(this).removeClass('expanded-header');
}
});
$('.date').pickadate({
"submitFormat": "dd-mm-yyyy",
"format": "dd-mm-yyyy",
});
$('.date').attr('readonly', true);
$('.date').css('background-color', 'transparent');
});
</script>
</div>
</html>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!