Commit 1da78899 by pindya

tambah field, format halaman public, dan perbaikan

1 parent e785091e
...@@ -391,6 +391,10 @@ class ARInvoice(CommonModel, Base): ...@@ -391,6 +391,10 @@ class ARInvoice(CommonModel, Base):
denda_rekening_id = Column(Integer, nullable=True, default=0) denda_rekening_id = Column(Integer, nullable=True, default=0)
## 17 Sep 2020 ## 17 Sep 2020
no_skrd = Column(String(128)) no_skrd = Column(String(128))
## 07 Okt 2020
pejabat_nama = Column(String(64))
pejabat_pangkat = Column(String(64))
pejabat_nip = Column(String(64))
subjekpajaks = relationship("SubjekPajak", backref=backref('arinvoices')) subjekpajaks = relationship("SubjekPajak", backref=backref('arinvoices'))
objekpajaks = relationship("ObjekPajak", backref=backref('arinvoices')) objekpajaks = relationship("ObjekPajak", backref=backref('arinvoices'))
......
No preview for this file type
...@@ -217,6 +217,21 @@ class AddSchema(colander.Schema): ...@@ -217,6 +217,21 @@ class AddSchema(colander.Schema):
colander.String(), colander.String(),
oid = "no_skrd" oid = "no_skrd"
) )
pejabat_nama = colander.SchemaNode(
colander.String(),
title="Nama Pejabat",
oid = "pejabat_nama"
)
pejabat_pangkat = colander.SchemaNode(
colander.String(),
title="Pangkat Pejabat",
oid = "pejabat_pangkat"
)
pejabat_nip = colander.SchemaNode(
colander.String(),
title="NIP",
oid = "pejabat_nip"
)
class EditSchema(AddSchema): class EditSchema(AddSchema):
id = colander.SchemaNode(colander.Integer(), id = colander.SchemaNode(colander.Integer(),
...@@ -828,6 +843,9 @@ def view_pdf(request): ...@@ -828,6 +843,9 @@ def view_pdf(request):
ARInvoice.jatuh_tempo.label('jatuh_tempo'), ARInvoice.jatuh_tempo.label('jatuh_tempo'),
ARInvoice.pokok.label('pokok'), ARInvoice.pokok.label('pokok'),
ARInvoice.denda.label('denda'), ARInvoice.denda.label('denda'),
ARInvoice.pejabat_nama.label('pejabat_nama'),
ARInvoice.pejabat_pangkat.label('pejabat_pangkat'),
ARInvoice.pejabat_nip.label('pejabat_nip'),
ARSspd.ntp.label('ntp'), ARSspd.ntp.label('ntp'),
ARSspd.ntb.label('ntb'), ARSspd.ntb.label('ntb'),
ARSspd.tgl_bayar.label('tgl_bayar'), ARSspd.tgl_bayar.label('tgl_bayar'),
...@@ -836,6 +854,9 @@ def view_pdf(request): ...@@ -836,6 +854,9 @@ def view_pdf(request):
.outerjoin(ARSspd, ARSspd.arinvoice_id==ARInvoice.id)\ .outerjoin(ARSspd, ARSspd.arinvoice_id==ARInvoice.id)\
.filter(ARInvoice.id==params['id']).first() .filter(ARInvoice.id==params['id']).first()
item = Item() item = Item()
item.pejabat_nama = row.pejabat_nama
item.pejabat_pangkat = row.pejabat_pangkat
item.pejabat_nip = row.pejabat_nip
item.opd = row.unit_nama item.opd = row.unit_nama
item.wp_nama = row.wp_nama item.wp_nama = row.wp_nama
item.wp_alamat = (row.wp_alamat_2 and row.wp_alamat_2 != '-') and ('{} {}'.format(row.wp_alamat_1, row.wp_alamat_2)) or row.wp_alamat_1 item.wp_alamat = (row.wp_alamat_2 and row.wp_alamat_2 != '-') and ('{} {}'.format(row.wp_alamat_1, row.wp_alamat_2)) or row.wp_alamat_1
......
...@@ -350,6 +350,10 @@ def view_public(request): ...@@ -350,6 +350,10 @@ def view_public(request):
ARInvoice.jatuh_tempo.label('jatuh_tempo'), ARInvoice.jatuh_tempo.label('jatuh_tempo'),
ARInvoice.pokok.label('pokok'), ARInvoice.pokok.label('pokok'),
ARInvoice.denda.label('denda'), ARInvoice.denda.label('denda'),
ARInvoice.pejabat_nama.label('pejabat_nama'),
ARInvoice.pejabat_pangkat.label('pejabat_pangkat'),
ARInvoice.pejabat_nip.label('pejabat_nip'),
ARInvoice.id.label('invoice_id'),
ARSspd.ntp.label('ntp'), ARSspd.ntp.label('ntp'),
ARSspd.ntb.label('ntb'), ARSspd.ntb.label('ntb'),
ARSspd.tgl_bayar.label('tgl_bayar'), ARSspd.tgl_bayar.label('tgl_bayar'),
...@@ -359,5 +363,9 @@ def view_public(request): ...@@ -359,5 +363,9 @@ def view_public(request):
.filter(ARInvoice.id==params['id']).first() .filter(ARInvoice.id==params['id']).first()
if row: if row:
found = True found = True
jml = terbilang(row.jumlah) + ' Rupiah'
tahun = datetime.now().year
qrcodename = 'skrd_{}{}'.format(row.invoice_id,'.png')
return dict(data=row, found=found) return dict(data=row, jml_terbilang=jml, tahun=tahun, qrcodename=qrcodename, found=found)
...@@ -245,8 +245,44 @@ ...@@ -245,8 +245,44 @@
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> </div> ${error}</p> </div>
</div>
</div> <!-- Nama Pejabat -->
<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}">
${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></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>
<!-- Pangkat Pejabat -->
<div class="form-group" tal:define="field form['pejabat_pangkat']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></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>
<!-- NIP Pejabat -->
<div class="form-group" tal:define="field form['pejabat_nip']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></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>
</div> </div>
</div> </div>
......
...@@ -197,6 +197,43 @@ ...@@ -197,6 +197,43 @@
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> </div> ${error}</p> </div>
</div>
<!-- Nama Pejabat -->
<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}">
${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></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>
<!-- Pangkat Pejabat -->
<div class="form-group" tal:define="field form['pejabat_pangkat']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></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>
<!-- NIP Pejabat -->
<div class="form-group" tal:define="field form['pejabat_nip']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></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> </div>
</div> </div>
</div> </div>
......
<html metal:use-macro="load: ../base.public.pt"> <html metal:use-macro="load: ../base.public.pt">
<div metal:fill-slot="content"> <div metal:fill-slot="content">
<style> <style type="text/css">
h4 { .borderless {
font-weight:bold; border-top: hidden;
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 { .table {
font-size: 12px; font-size: 14px;
margin-top: 10px; margin-top: 10px;
margin-bottom: 20px; margin-bottom: 20px;
} }
.table th { .border {
background-color:#ddebf6; border : 2px solid;
}
.no-padding {
padding:0px;
} }
.wrapopd { .padding {
border:1px solid #c4c4c4; padding: 15px;
min-height:120px;
padding-top:5px;
padding-bottom:5px;
} }
.kodeopd { h3 {
display:block;
color:#264184;
font-size:120%;
font-weight:bold; font-weight:bold;
text-align:center;
} }
.namaopd { h4 {
display:block;
color:#264184;
font-weight:500;
}
.jmlopd {
display:block;
font-size:120%;
color:#264184;
font-weight:bold; font-weight:bold;
text-align:right; text-align:center;
position: absolute;
bottom: 5px;
right: 10px;
} }
.picker { table tr td {
font-size:13px; padding-top: 1px !important;
padding-bottom: 1px !important;
vertical-align: middle !important;
} }
.link-styleless { hr {
text-decoration: none !important; border-top: 1px dashed black;
color:inherit !important;
} }
.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { table.table-fit {
background-color: transparent !important; width: auto !important;
border : none !important; table-layout: auto !important;
border-radius : 0px !important;
-moz-border-radius : 0px !important;
-webkit-border-radius : 0px !important;
box-shadow : none !important;
-moz-box-shadow : none !important;
-webkit-box-shadow : none !important;
opacity: 1;
} }
.border { table.table-fixed {
border : 1px solid #ccc; width: 100%;
table-layout: fixed !important;
} }
.padding { table.table-fit thead th, table.table-fit tfoot th {
padding: 15px; width: auto !important;
} }
.table { table.table-fit tbody td, table.table-fit tfoot td {
font-size:13px !important; width: auto !important;
}
table.main-table td{
border: 1px solid black !important;
} }
.bold { table.child td {
font-weight: bold !important; border: none !important;
} }
</style> </style>
<tal:block tal:condition="not found"> <tal:block tal:condition="not found">
<h2>Data tidak ditemukan</h2> <h2>Data tidak ditemukan</h2>
</tal:block> </tal:block>
<tal:block tal:condition="found and data"> <tal:block tal:condition="found and data">
<form class="form-horizontal"> <!-- <div class="col-md-12" align="center">
<div class="col-md-12" align="center"> <h2>No. Skrd : ${data.no_skrd}</h2>
<h2>No. Skrd : ${data.no_skrd}</h2> <br>
<br> </div> -->
</div> <div class="col-md-10 col-md-offset-1">
<div class="col-md-6 col-md-offset-3"> <div class="border padding">
<div class="border padding"> <table class="table table-bordered main-table">
<table class="table"> <tr>
<tr> <td><b>PEMERINTAH PROVINSI JAWA BARAT <br>
<td class="bold">Kode Bayar</td> OPD ${data.unit_nama}</b>
<td> : </td> </td>
<td>${data.kode}</td> <td align="center"><h3>SKRD</h3></td>
</tr> <td align="center"><b>No. SKRD</b></td>
<tr> </tr>
<td class="bold">Masa Retribusi</td> <tr>
<td> : </td> <td></td>
<td>${data.periode_1} s/d ${data.periode_2}</td> <td align="center"><b>SURAT KETETAPAN RETRIBUSI DAERAH</b></td>
</tr> <td align="center"><b>${data.no_skrd}</b></td>
<tr> </tr>
<td class="bold">Tahun</td> <tr>
<td> : </td> <td></td>
<td>${data.tahun_id}</td> <td align="center">
</tr> <table class="table table-fit child">
<tr> <tr class="borderless">
<td class="bold">Tanggal Jatuh Tempo</td> <td>Masa Retribusi</td>
<td> : </td> <td>: <b>${data.periode_1} s/d ${data.periode_2}</b></td>
<td>${data.jatuh_tempo.strftime('%d-%m-%Y')}</td> </tr>
</tr> <tr class="borderless">
<tr> <td>Tahun</td>
<td class="bold">Nama</td> <td>: <b>${data.tahun_id}</b></td>
<td> : </td> </tr>
<td>${data.wp_nama}</td> </table>
</tr> </td>
<tr> <td align="center">Kode Bayar<br><b>${data.kode}</b></td>
<td class="bold">Alamat</td> </tr>
<td> : </td> <tr>
<td>${(data.wp_alamat_2 and data.wp_alamat_2 != '-') and ('{} {}'.format(data.wp_alamat_1, data.wp_alamat_2)) or data.wp_alamat_1}</td> <td colspan="3">
</tr> <table class="table table-fit child">
<tr> <tr class="borderless">
<td class="bold">NPWRD</td> <td>Nama</td>
<td> : </td> <td>:</td>
<td>${data.wp_kode}</td> <td><b>${data.wp_nama}</b></td>
</tr> </tr>
<tr> <tr class="borderless">
<td class="bold">Kode Rekening</td> <td>Alamat</td>
<td> : </td> <td>:</td>
<td>${data.rek_kode}</td> <td><b>${(data.wp_alamat_2 and data.wp_alamat_2 != '-') and ('{} {}'.format(data.wp_alamat_1, data.wp_alamat_2)) or data.wp_alamat_1}</b></td>
</tr> </tr>
<tr> <tr class="borderless">
<td class="bold">Jenis Retribusi Daerah</td> <td>NPWRD</td>
<td> : </td> <td>:</td>
<td>${data.rek_nama}</td> <td><b>${data.wp_kode}</b></td>
</tr> </tr>
<tr> </table>
<td class="bold">Jumlah</td> </td>
<td> : </td> </tr>
<td>${'{:n}'.format(data.jumlah)}</td> <tr>
</tr> <td colspan="3">Tanggal Jatuh Tempo: <b>${data.jatuh_tempo.strftime('%d-%m-%Y')}</b></td>
</table> </tr>
</div> <tr align="center">
</div> <td>Kode Rekening</td>
</form> <td>Jenis Retribusi Daerah</td>
<td>Jumlah (Rp.)</td>
</tr>
<tr>
<td align="center"><b>${data.rek_kode}</b></td>
<td><b>${data.rek_nama}</b></td>
<td align="right"><b>${'{:n}'.format(data.jumlah)}</b></td>
</tr>
<tr>
<td></td>
<td>Jumlah Ketetapan Pokok</td>
<td align="right"><b>${'{:n}'.format(data.jumlah)}</b></td>
</tr>
<tr>
<td align="center">Dengan Huruf</td>
<td><b>${jml_terbilang}</b></td>
<td></td>
</tr>
<tr>
<td colspan="3"><b>PERHATIAN</b></td>
</tr>
<tr>
<td colspan="3">
<ol>
<li>Penyetoran dilakukan melalui Bendahara Penerima atau Kas Daerah (Bank Jabar) dengan menggunakan SKRD ini.</li>
<li>Apabila SKRD ini tidak atau kurang bayar setelah lewat waktu paling lama 30 hari sejak SKRD ini ditetapkan dikarenakan sanksi administratif berupa bunga sebesar 2 % per bulan.</li>
</ol>
</td>
</tr>
<tr>
<td align="center"><p><img src="/tmp/${qrcodename}" width="150" height="150"></p></td>
<td></td>
<td align="center"><b>${data.tgl_tetap.strftime('%d %B')}, Tahun ${data.tahun_id}</b><br>
${data.pejabat_pangkat}<br><br><br><br><br>
${data.pejabat_nama}<br>
NIP. ${data.pejabat_nip}
</td>
</tr>
</table>
<hr>
<table class="table table-bordered main-table">
<tr>
<td align="center">No. SKRD <b>${data.no_skrd}</b></td>
</tr>
<tr><td align="center"><h4>TANDA TERIMA</h4></td></tr>
<tr>
<td align="center">
<table class="table table-fit child">
<tr class="borderless">
<td>NPWRD</td>
<td>:</td>
<td><b>${data.wp_kode}</b></td>
</tr>
<tr class="borderless">
<td>Nama</td>
<td>:</td>
<td><b>${data.wp_nama}</b></td>
</tr>
<tr class="borderless">
<td>Alamat</td>
<td>:</td>
<td><b>${(data.wp_alamat_2 and data.wp_alamat_2 != '-') and ('{} {}'.format(data.wp_alamat_1, data.wp_alamat_2)) or data.wp_alamat_1}</b></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table class="table child">
<tr class="borderless">
<td>Status Pembayaran</td>
<td>:</td>
<td><b>${(data.ntb and 'H2H Bank' or data.ntp and 'Manual' or '-')}</b></td>
<td rowspan="5" align="center">........,.................. Tahun ${tahun} <br>
Yang Menerima <br><br><br><br><br>
.....................................
</td>
</tr>
<tr class="borderless">
<td>Tanggal Pembayaran</td>
<td>:</td>
<td><b>${data.tgl_bayar}</b></td>
</tr>
<tr class="borderless">
<td>Pokok</td>
<td>:</td>
<td><b>${'{:n}'.format(data.pokok)}</b></td>
</tr>
<tr class="borderless">
<td>Denda</td>
<td>:</td>
<td><b>${'{:n}'.format(data.denda)}</b></td>
</tr>
<tr class="borderless">
<td>Jumlah</td>
<td>:</td>
<td><b>${'{:n}'.format(data.jumlah)}</b></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</tal:block> </tal:block>
</div> </div>
</html> </html>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!