Commit 5a1e5685 by taufikyu

revisi eis

1 parent d4887d64
......@@ -8,7 +8,7 @@ from pyramid.httpexceptions import (HTTPFound, HTTPForbidden, HTTPNotFound)
from pyramid.security import (remember, forget, authenticated_userid,)
from deform import (Form, ValidationFailure, widget,)
from ..tools import dmy, date_from_str, int_to_roman
from sqlalchemy import func
from sqlalchemy import func, and_
from ..models import (DBSession, User,)
from ..models.isipkd import(
......@@ -51,14 +51,9 @@ def view_home(request):
break
if statusadmin == True:
if 'date' in request.params and request.params['date']:
request.session['date'] = request.params['date'].strip()
if 'date' in request.session and request.session['date']:
now = date_from_str(request.session['date'])
now = date_from_str(request.params['date'].strip())
else:
now = date.today()
request.session['date'] = dmy(now)
if 'unit' in request.params:
request.session['unit'] = request.params['unit'].strip()
dates = dict(
year = now.year,
month = now.month,
......@@ -76,18 +71,24 @@ def view_home(request):
q = [0,0,0,0,0,0,0,0,0,0,0,0],
n = [0,0,0,0,0,0,0,0,0,0,0,0],
),
rek= [],
rekdet= [],
sopd10= [],
sopd= [],
rek = [], ## Rekening Header
rekdet = [], ## Rekening Detail
sopd = [], ## Ranking Penerimaan
sopd10 = [], ## 10 Ranking Penerimaan
sopd4 = []
)
#List Untuk Header
opd_ls = Unit.query().filter(Unit.level_id==3).order_by(Unit.kode).all()
#List Rekening Lv 3
reks41 = Rekening.query().filter(Rekening.level_id==3, Rekening.kode.ilike('4.1.%')).order_by(Rekening.kode).all()
no3=0
for r in reks41:
no3+=1
no_roman = int_to_roman(no3)
data_dashboard['rek'].append(dict(no=no_roman,kode=r.kode.strip(), nama=r.nama.strip(), target=0, realisasi=0, persen=0))
#List Rekening Lv 4
reks41det = Rekening.query().filter(Rekening.level_id.between(3,4), Rekening.kode.ilike('4.1.%')).order_by(Rekening.kode).all()
for r in reks41det:
if r.level_id==3:
......@@ -96,6 +97,7 @@ def view_home(request):
no4+=1
data_dashboard['rekdet'].append(dict(no=no4, kode=r.kode.strip(), level=r.level_id, nama=r.nama.strip(), target=0, realisasi=0, persen=0))
#QUERY PAYMENT
payments = DBSession.query(
ARSspd.tgl_bayar.label('tanggal'),
ARSspd.bayar.label('jumlah'),
......@@ -107,8 +109,9 @@ def view_home(request):
filter(ARSspd.tahun_id==dates['year']).order_by(ARInvoice.unit_kode)
payments = payments.all()
for p in payments:
if 'unit' in request.session and request.session['unit']:
if p.kode.strip().startswith(request.session['unit']):
## JIKA ADA FILTER DEPARTEMEN DI HEADER
if 'unit' in request.params and request.params['unit']:
if p.kode.strip().startswith(request.params['unit'].strip()):
data_dashboard['tabular']['tahun']['q'] += 1
data_dashboard['tabular']['tahun']['n'] += int(p.jumlah)
if p.tanggal.month == dates['month']:
......@@ -124,7 +127,16 @@ def view_home(request):
if p.tanggal.month == x+1:
data_dashboard['chart']['q'][x] += int(1)
data_dashboard['chart']['n'][x] += int(p.jumlah)
elif not 'unit' in request.session or not request.session['unit']:
## Rekening
for r in data_dashboard['rek']:
if p.rek_kode.strip().startswith(r['kode']):
r['realisasi'] += int(p.jumlah)
for r in data_dashboard['rekdet']:
if p.rek_kode.strip().startswith(r['kode']):
r['realisasi'] += int(p.jumlah)
## JIKA TIDAK ADA FILTER DEPARTEMEN HEADER
elif not 'unit' in request.params or not request.params['unit']:
data_dashboard['tabular']['tahun']['q'] += 1
data_dashboard['tabular']['tahun']['n'] += int(p.jumlah)
if p.tanggal.month == dates['month']:
......@@ -140,6 +152,7 @@ def view_home(request):
if p.tanggal.month == x+1:
data_dashboard['chart']['q'][x] += int(1)
data_dashboard['chart']['n'][x] += int(p.jumlah)
## Rekening
for r in data_dashboard['rek']:
if p.rek_kode.strip().startswith(r['kode']):
r['realisasi'] += int(p.jumlah)
......@@ -147,6 +160,7 @@ def view_home(request):
if p.rek_kode.strip().startswith(r['kode']):
r['realisasi'] += int(p.jumlah)
#QUERY INVOICE
invoices = DBSession.query(
ARInvoice.tgl_tetap.label('tanggal'),
ARInvoice.jumlah.label('jumlah'),
......@@ -157,38 +171,71 @@ def view_home(request):
filter(ARInvoice.tahun_id==dates['year']).order_by(ARInvoice.unit_kode)
invoices = invoices.all()
for i in invoices:
## JIKA ADA FILTER DEPARTEMEN DI HEADER
if 'unit' in request.params and request.params['unit']:
if i.kode.strip().startswith(request.params['unit'].strip()):
## REKENING
for r in data_dashboard['rek']:
if i.rek_kode.strip().startswith(r['kode']):
r['target'] += int(i.jumlah)
for r in data_dashboard['rekdet']:
if i.rek_kode.strip().startswith(r['kode']):
r['target'] += int(i.jumlah)
## JIKA TIDAK ADA FILTER DEPARTEMEN HEADER
elif not 'unit' in request.params or not request.params['unit']:
for r in data_dashboard['rek']:
if i.rek_kode.strip().startswith(r['kode']):
r['target'] += int(i.jumlah)
for r in data_dashboard['rekdet']:
if i.rek_kode.strip().startswith(r['kode']):
r['target'] += int(i.jumlah)
##REKENING##
for r in data_dashboard['rek']:
r['persen'] = r['realisasi'] and str(round((float(r['realisasi'])/float(r['target']))*100,2)).replace('.0','') or '0'
for r in data_dashboard['rekdet']:
r['persen'] = r['realisasi'] and str(round((float(r['realisasi'])/float(r['target']))*100,2)).replace('.0','') or '0'
#Unit
opds = Unit.query().filter(Unit.level_id.between(3,4)).order_by(Unit.kode).all()
for op in opds:
if op.level_id==3:
data_dashboard['sopd'].append(dict(peringkat=0,kode=op.kode.strip(), level=op.level_id, unit=op.nama.strip(), nominal=0))
if op.level_id==4:
data_dashboard['sopd4'].append(dict(kode=op.kode.strip(), level=op.level_id, unit=op.nama.strip(), nominal=0))
##RANKING##
tanggal_berjalan = datetime.now()
tanggal_berjalan = dates['day']
tahun_berjalan = tanggal_berjalan.year
opd = DBSession.query(
func.sum(ARSspd.bayar).label('jumlah'),
func.max(Unit.kode).label('kode'),
func.max(Unit.nama).label('nama'),
func.max(func.trim(Unit.kode)).label('kode'),
func.max(func.trim(Unit.nama)).label('nama'),
func.max(Unit.level_id).label('level_id'),
).join(ARInvoice, ARInvoice.id == ARSspd.arinvoice_id).\
join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARSspd.tahun_id==tahun_berjalan)\
.group_by(func.trim(Unit.kode))\
.order_by(func.sum(ARSspd.bayar).desc()).all()
prev_opd = ''
i = -1
filter(ARSspd.tahun_id==tahun_berjalan,
Unit.level_id>=3).\
group_by(func.trim(Unit.kode)).all()
for sopd in opd:
i += 1
if sopd.level_id>=3:
for unit3 in data_dashboard['sopd']:
if sopd.kode.startswith(unit3['kode']):
unit3['nominal']+=sopd.jumlah
if sopd.level_id>=4:
for unit4 in data_dashboard['sopd4']:
if sopd.kode.startswith(unit4['kode']):
unit4['nominal']+=sopd.jumlah
##SORT
data_dashboard['sopd'] = sorted(data_dashboard['sopd'], key = lambda i: (i['nominal']), reverse=True)
i=-1
for opd in data_dashboard['sopd']:
i+=1
if i < 10:
data_dashboard['sopd10'].append(dict(peringkat=i+1, kode=sopd.kode, unit=sopd.nama, nominal=sopd.jumlah))
data_dashboard['sopd'].append(dict(peringkat=i+1, kode=sopd.kode, unit=sopd.nama, nominal=sopd.jumlah))
data_dashboard['sopd10'].append(dict(peringkat=i+1, kode=opd['kode'], unit=opd['unit'], nominal=opd['nominal']))
opd['peringkat'] = i+1
##REKENING##
for r in data_dashboard['rek']:
r['persen'] = r['realisasi'] and str(round((float(r['realisasi'])/float(r['target']))*100,2)).replace('.0','') or '0'
for r in data_dashboard['rekdet']:
r['persen'] = r['realisasi'] and str(round((float(r['realisasi'])/float(r['target']))*100,2)).replace('.0','') or '0'
return dict(project='esipkd', dates=dates, data = data_dashboard, opds=opd_ls, statusadmin=statusadmin)
else:
......
......@@ -14,6 +14,8 @@ from ..models.isipkd import (DBSession, ARInvoice, ARSspd, User, Unit,
ObjekPajak, SubjekPajak, Rekening, Wilayah)
from .arinvoice import save as save_invoice
from ..models.rpc import DepartemenRoute
import logging
log = logging.getLogger(__name__)
now = datetime.now()
datenow = now.date()
......@@ -174,6 +176,11 @@ def set_invoice(request, data):
'pokok','denda','bunga','jumlah','periode_1',
'periode_2','jatuh_tempo','tgl_tetap','no_skrd']
get_mandatory(data, param)
## LOGGING SET INVOICE ##
log.error('==== SET INVOICE ====')
log.error(data)
values = clear_null_value(data)
if 'jatuh_tempo' in values and values['jatuh_tempo']:
values['jatuh_tempo'] = date_from_str(values['jatuh_tempo'])
......@@ -259,6 +266,11 @@ def get_payment(request, data):
"""
auth_from_rpc(request)
get_mandatory(data, ['kd_bayar'])
## LOGGING GET PAYMENT ##
log.error('==== GET PAYMENT ====')
log.error(data)
row_invoice = DBSession.query(ARInvoice).filter_by(kode=data['kd_bayar']).first()
if not row_invoice:
raise JsonRpcBillNotFoundError
......@@ -337,6 +349,10 @@ def send_payment(request, data):
)
# print('>>>>>>>>>>> DEBUG DATA PAYMENT',d)
## LOGGING SEND PAYMENT ##
log.error('==== SEND PAYMENT ====')
log.error(d)
response = requests.post(ws_url, data=json.dumps(d), verify=False)
if response.status_code != 200:
continue
......
......@@ -82,6 +82,7 @@
.link-styleless {
text-decoration: none !important;
color:inherit !important;
cursor: pointer;
}
.modal-body {
overflow-x:scroll !important;
......@@ -89,6 +90,13 @@
.bgth {
background-color: #ddebf6 !important;
}
.modal-backdrop {
visibility: hidden !important;
}
.modal.in {
background-color: rgba(0,0,0,0.5);
}
.modal { overflow: auto !important; }
</style>
<tal:block tal:condition="not statusadmin">
<div class="well">
......@@ -118,15 +126,15 @@ Selamat datang di aplikasi SIPANDU
<tal:block tal:condition="statusadmin">
<div class="col-md-6">
<h4>REALISASI PENDAPATAN DAERAH TAHUN ${dates['year']}</h4>
<font class="labeltab">Tanggal : ${request.session['date']}</font>
<font class="labeltab">Tanggal : ${dates['day'].strftime('%d-%m-%Y')}</font>
</div>
<div class="col-md-6">
<form method="get">
<div class="col-md-5">
<input id="date" type="text" class="form-control date" name="date" value="${request.session['date']}">
<input id="date" type="text" class="form-control date" name="date" onchange="this.form.submit()" value="${dates['day'].strftime('%d-%m-%Y')}">
</div>
<div class="col-md-7">
<select id="unit" class="form-control" name="unit">
<select id="unit" class="form-control" name="unit" onchange="this.form.submit()">
<option></option>
<option tal:repeat="o opds" value="${o.kode.strip()}">${o.kode.strip()} - ${o.nama}</option>
</select>
......@@ -197,7 +205,7 @@ Selamat datang di aplikasi SIPANDU
</div>
<div class="col-md-12">
<tal:block tal:repeat="r data['rek']">
<a class="link-styleless" title="klik untuk melihat daftar lengkap rekening" data-toggle="modal" data-target="#rekeningdetail">
<a class="link-styleless" title="klik untuk melihat daftar lengkap rekening" data-toggle="modal" data-target="#rekeningdetail${r['kode'].replace('.','')}">
<div class="col-md-3 wrapopd">
<font class="kodeopd">${r['kode']}</font>
<font class="namaopd">${r['nama']}</font>
......@@ -208,6 +216,9 @@ Selamat datang di aplikasi SIPANDU
</div>
<div class="col-md-12">
<div class="clearfix"></div>
<!-- MODAL START HERE -->
<!-- MODAL RANKING-->
<div class="modal fade" id="ranking" tabindex="-1" role="dialog">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
......@@ -215,8 +226,8 @@ Selamat datang di aplikasi SIPANDU
<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-6">
<h5>Ranking Penerimaan OPD Periode ${dates['day'].strftime('%d-%m-%Y')}</h5>
<div class="col-md-12">
<h5>Detail Ranking Penerimaan OPD Periode ${dates['day'].strftime('%d-%m-%Y')}</h5>
</div>
<div class="clearfix"></div>
<table class="table table-bordered">
......@@ -230,13 +241,15 @@ Selamat datang di aplikasi SIPANDU
</thead>
<tbody>
<tal:block tal:repeat="so data['sopd']">
<tr>
<tal:block tal:condition="so['nominal']">
<tr class="link-styleless" title="klik untuk melihat daftar lengkap ranking" data-toggle="modal" data-target="#ranking${so['kode'].replace('.','')}">
<td style="text-align:center;">${so['peringkat']}</td>
<td style="text-align:left;">${so['kode']}</td>
<td style="text-align:left;">${so['unit']}</td>
<td style="text-align:right;">${'{:n}'.format(so['nominal'])}</td>
</tr>
</tal:block>
</tal:block>
</tbody>
</table>
</div>
......@@ -246,8 +259,50 @@ Selamat datang di aplikasi SIPANDU
</div>
</div>
</div>
<div class="modal fade" id="rekeningdetail" tabindex="-1" role="dialog">
<!--MODAL DETAIL RANKING -->
<tal:block tal:repeat="so data['sopd']">
<div class="modal fade" id="ranking${so['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>Ranking Penerimaan ${so['kode']} - ${so['unit']} 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;">Kode Unit</th>
<th style="text-align:center;">Nama Unit</th>
<th style="text-align:center;">Nominal</th>
</tr>
</thead>
<tbody>
<tal:block tal:repeat="so4 data['sopd4']">
<tal:block tal:condition="so4['kode'].startswith(so['kode'])">
<tr>
<td style="text-align:left;">${so4['kode']}</td>
<td style="text-align:left;">${so4['unit']}</td>
<td style="text-align:right;">${'{:n}'.format(so4['nominal'])}</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>
<!--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">
......@@ -271,6 +326,7 @@ Selamat datang di aplikasi SIPANDU
</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>
......@@ -300,6 +356,7 @@ Selamat datang di aplikasi SIPANDU
<td style="text-align:right;"><b>${r['persen']}</b></td>
</tr>
</tal:block>
</tal:block>
</tbody>
</table>
</div>
......@@ -309,6 +366,8 @@ Selamat datang di aplikasi SIPANDU
</div>
</div>
</div>
</tal:block>
</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>
......@@ -453,13 +512,11 @@ Selamat datang di aplikasi SIPANDU
"submitFormat": "dd-mm-yyyy",
"format": "dd-mm-yyyy",});
});
$("#date, #unit").change(function(){
$(this).parents('form').submit();
});
$('.date').attr('readonly', true);
$('.date').css('background-color', 'transparent');
<tal:block tal:condition="'unit' in request.session and request.session['unit']">
$("#unit").val("${request.session['unit']}");
<tal:block tal:condition="'unit' in request.params and request.params['unit']">
$("#unit").val("${request.params['unit'].strip()}");
</tal:block>
</script>
</tal:block>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!