Commit a4686f6b by aagusti

Merge branch 'master' of https://git.opensipkd.com/taufik/esipkd

2 parents 5fc00751 0b26f711
from email.utils import parseaddr from email.utils import parseaddr
import colander import colander
from deform import ( from deform import (
Form, Form,
widget, widget,
ValidationFailure, ValidationFailure,
) )
from ..models import DBSession,User, Group, Route from ..models import DBSession,User, Group, Route
from ..models.isipkd import Param from ..models.isipkd import Param
from ..models.isipkd import( from ..models.isipkd import(
Wilayah, Jabatan, Unit, Rekening, SubjekPajak, Pajak, ObjekPajak Wilayah, Jabatan, Unit, Rekening, SubjekPajak, Pajak, ObjekPajak
) )
############################# #############################
## Untuk perhitungan bunga ## ## Untuk perhitungan bunga ##
############################# #############################
def hitung_bunga(pokok, jatuh_tempo): def hitung_bunga(pokok, jatuh_tempo):
row = DBSession.query(Param.denda).first() row = DBSession.query(Param.denda).first()
if row: if row:
persen_denda = row.denda persen_denda = row.denda
else: else:
return 0 return 0
kini = date.today() kini = date.today()
denda = bln_tunggakan = 0 denda = bln_tunggakan = 0
jatuh_tempo = jatuh_tempo jatuh_tempo = jatuh_tempo
x = (kini.year - jatuh_tempo.year) * 12 x = (kini.year - jatuh_tempo.year) * 12
y = kini.month - jatuh_tempo.month y = kini.month - jatuh_tempo.month
bln_tunggakan = x + y + 1 bln_tunggakan = x + y + 1
if kini.day <= jatuh_tempo.day: if kini.day <= jatuh_tempo.day:
bln_tunggakan -= 1 bln_tunggakan -= 1
if bln_tunggakan < 1: if bln_tunggakan < 1:
bln_tunggakan = 0 bln_tunggakan = 0
if bln_tunggakan > 24: if bln_tunggakan > 24:
bln_tunggakan = 24 bln_tunggakan = 24
denda = bln_tunggakan * persen_denda / 100 * pokok denda = bln_tunggakan * persen_denda / 100 * pokok
return denda return denda
################################### ###################################
## Untuk validasi struktur email ## ## Untuk validasi struktur email ##
################################### ###################################
def email_validator(node, value): def email_validator(node, value):
name, email = parseaddr(value) name, email = parseaddr(value)
if not email or email.find('@') < 0: if not email or email.find('@') < 0:
raise colander.Invalid(node, 'Invalid email format') raise colander.Invalid(node, 'Invalid email format')
############################ ############################
## Untuk pemilihan Status ## ## Untuk pemilihan Status ##
############################ ############################
@colander.deferred @colander.deferred
def deferred_status(node, kw): def deferred_status(node, kw):
values = kw.get('daftar_status', []) values = kw.get('daftar_status', [])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
STATUS = ( STATUS = (
(1, 'Aktif'), (1, 'Aktif'),
(0, 'Inaktif'), (0, 'Inaktif'),
) )
############################# #############################
## Untuk pemilihan Summary ## ## Untuk pemilihan Summary ##
############################# #############################
@colander.deferred @colander.deferred
def deferred_summary(node, kw): def deferred_summary(node, kw):
values = kw.get('daftar_summary', []) values = kw.get('daftar_summary', [])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
SUMMARIES = ( SUMMARIES = (
(1, 'Header'), (1, 'Header'),
(0, 'Detail'), (0, 'Detail'),
) )
################################## ##################################
## Untuk pemilihan User Pegawai ## ## Untuk pemilihan User Pegawai ##
################################## ##################################
@colander.deferred @colander.deferred
def deferred_user_pegawai(node, kw): def deferred_user_pegawai(node, kw):
values = kw.get('daftar_user_pegawai',[]) values = kw.get('daftar_user_pegawai',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_user_pegawai(): def daftar_user_pegawai():
rows = DBSession.query(User rows = DBSession.query(User
).filter(User.id>=3, ).filter(User.id>=3,
User.status==1 User.status==1
).all() ).all()
r=[] r=[]
d = (0,'Pilih User Pegawai') d = (0,'Pilih User Pegawai')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.email+' : '+row.user_name) d = (row.id, row.email+' : '+row.user_name)
r.append(d) r.append(d)
return r return r
############################# #############################
## Untuk pemilihan Wilayah ## ## Untuk pemilihan Wilayah ##
############################# #############################
@colander.deferred @colander.deferred
def deferred_wilayah(node, kw): def deferred_wilayah(node, kw):
values = kw.get('daftar_wilayah',[]) values = kw.get('daftar_wilayah',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_wilayah(): def daftar_wilayah():
rows = DBSession.query(Wilayah.id, rows = DBSession.query(Wilayah.id,
Wilayah.kode, Wilayah.kode,
Wilayah.nama Wilayah.nama
).filter_by(level_id=2 ).filter_by(level_id=2
).all() ).all()
r=[] r=[]
d = (0,'Pilih Wilayah') d = (0,'Pilih Wilayah')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
r.append(d) r.append(d)
return r return r
############################### ###############################
## Untuk pemilihan Wilayah 1 ## ## Untuk pemilihan Wilayah 1 ##
############################### ###############################
@colander.deferred @colander.deferred
def deferred_wilayah1(node, kw): def deferred_wilayah1(node, kw):
values = kw.get('daftar_wilayah1',[]) values = kw.get('daftar_wilayah1',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_wilayah1(): def daftar_wilayah1():
rows = DBSession.query(Wilayah.id, rows = DBSession.query(Wilayah.id,
Wilayah.kode, Wilayah.kode,
Wilayah.nama Wilayah.nama
).filter_by(level_id=1 ).filter_by(level_id=1
).all() ).all()
r=[] r=[]
d = (0,'Pilih Wilayah') d = (0,'Pilih Wilayah')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
r.append(d) r.append(d)
return r return r
############################# #############################
## Untuk pemilihan Jabatan ## ## Untuk pemilihan Jabatan ##
############################# #############################
@colander.deferred @colander.deferred
def deferred_jabatan(node, kw): def deferred_jabatan(node, kw):
values = kw.get('daftar_jabatan',[]) values = kw.get('daftar_jabatan',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_jabatan(): def daftar_jabatan():
rows = DBSession.query(Jabatan.id, rows = DBSession.query(Jabatan.id,
Jabatan.nama Jabatan.nama
).filter(Jabatan.status==1 ).filter(Jabatan.status==1
).all() ).all()
r=[] r=[]
d = (0,'Pilih Jabatan') d = (0,'Pilih Jabatan')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.nama) d = (row.id, row.nama)
r.append(d) r.append(d)
return r return r
#################################### ####################################
## Untuk pemilihan Unit Kerja/OPD ## ## Untuk pemilihan Unit Kerja/OPD ##
#################################### ####################################
@colander.deferred @colander.deferred
def deferred_unit(node, kw): def deferred_unit(node, kw):
values = kw.get('daftar_unit',[]) values = kw.get('daftar_unit',[])
return widget.Select2Widget(values=values) return widget.Select2Widget(values=values)
def daftar_unit(): def daftar_unit():
#rows = DBSession.query(Unit).filter_by(level_id=4).all() #rows = DBSession.query(Unit).filter_by(level_id=4).all()
rows = DBSession.query(Unit rows = DBSession.query(Unit
# ).filter(Unit.level_id.in_([3,4]) # ).filter(Unit.level_id.in_([3,4])
).filter(Unit.level_id >= 3 ).filter(Unit.level_id >= 3
).all() ).all()
r=[] r=[]
d = (0,'Pilih OPD') d = (0,'Pilih OPD')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
r.append(d) r.append(d)
return r return r
############################## ##############################
## Untuk pemilihan Rekening ## ## Untuk pemilihan Rekening ##
############################## ##############################
@colander.deferred @colander.deferred
def deferred_rekening(node, kw): def deferred_rekening(node, kw):
values = kw.get('daftar_rekening',[]) values = kw.get('daftar_rekening',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_rekening(): def daftar_rekening():
rows = DBSession.query(Rekening rows = DBSession.query(Rekening
).filter_by(is_summary=0 ).filter_by(is_summary=0
).all() ).all()
r=[] r=[]
d = (0,'Pilih Rekening') d = (0,'Pilih Rekening')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
r.append(d) r.append(d)
return r return r
@colander.deferred @colander.deferred
def deferred_rekening1(node, kw): def deferred_rekening1(node, kw):
values = kw.get('daftar_rekening1',[]) values = kw.get('daftar_rekening1',[])
return widget.Select2Widget(values=values) return widget.Select2Widget(values=values)
def daftar_rekening1(): def daftar_rekening1():
#rows = DBSession.query(Rekening).filter_by(is_summary=0).all() #rows = DBSession.query(Rekening).filter_by(is_summary=0).all()
rows = DBSession.query(Rekening rows = DBSession.query(Rekening
).filter(Rekening.level_id.in_([5,6,7,8,9]) ).filter(Rekening.level_id.in_([5,6,7,8,9])
).all() ).all()
r=[] r=[]
d = (0,'Pilih Rekening') d = (0,'Pilih Rekening')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
r.append(d) r.append(d)
return r return r
@colander.deferred @colander.deferred
def deferred_rekening2(node, kw): def deferred_rekening2(node, kw):
values = kw.get('daftar_rekening2',[]) values = kw.get('daftar_rekening2',[])
return widget.Select2Widget(values=values) return widget.Select2Widget(values=values)
def daftar_rekening2(): def daftar_rekening2():
rows = DBSession.query(Rekening rows = DBSession.query(Rekening
).filter(Rekening.level_id.in_([4,5]), ).filter(Rekening.level_id.in_([4,5]),
Rekening.nama.ilike('%Denda%') Rekening.nama.ilike('%Denda%')
).all() ).all()
r=[] r=[]
d = (0,'Pilih Rekening Denda') d = (0,'Pilih Rekening Denda')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
r.append(d) r.append(d)
return r return r
########################### ###########################
## Untuk pemilihan Pajak ## ## Untuk pemilihan Pajak ##
########################### ###########################
@colander.deferred @colander.deferred
def deferred_pajak(node, kw): def deferred_pajak(node, kw):
values = kw.get('daftar_pajak',[]) values = kw.get('daftar_pajak',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_pajak(): def daftar_pajak():
rows = DBSession.query(Pajak rows = DBSession.query(Pajak
).filter(Pajak.status==1 ).filter(Pajak.status==1
).all() ).all()
r=[] r=[]
d = (0,'Pilih Rekening') d = (0,'Pilih Rekening')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
r.append(d) r.append(d)
return r return r
############################ ############################
## Untuk pemilihan Subjek ## ## Untuk pemilihan Subjek ##
############################ ############################
@colander.deferred @colander.deferred
def deferred_subjekpajak(node, kw): def deferred_subjekpajak(node, kw):
values = kw.get('daftar_subjekpajak',[]) values = kw.get('daftar_subjekpajak',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_subjekpajak(): def daftar_subjekpajak():
rows = DBSession.query(SubjekPajak rows = DBSession.query(SubjekPajak
).filter(SubjekPajak.status==1 ).filter(SubjekPajak.status==1
).all() ).all()
r=[] r=[]
d = (0,'Pilih Penyetor') d = (0,'Pilih Penyetor')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
r.append(d) r.append(d)
return r return r
########################### ###########################
## Untuk pemilihan Objek ## ## Untuk pemilihan Objek ##
########################### ###########################
@colander.deferred @colander.deferred
def deferred_objekpajak(node, kw): def deferred_objekpajak(node, kw):
values = kw.get('daftar_objekpajak',[]) values = kw.get('daftar_objekpajak',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_objekpajak(): def daftar_objekpajak():
rows = DBSession.query(ObjekPajak rows = DBSession.query(ObjekPajak
).filter(ObjekPajak.status==1 ).filter(ObjekPajak.status==1
).all() ).all()
r=[] r=[]
d = (0,'Pilih Objek') d = (0,'Pilih Objek')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
r.append(d) r.append(d)
return r return r
########################## ##########################
## Untuk pemilihan User ## ## Untuk pemilihan User ##
########################## ##########################
@colander.deferred @colander.deferred
def deferred_user(node, kw): def deferred_user(node, kw):
values = kw.get('daftar_user',[]) values = kw.get('daftar_user',[])
return widget.SelectWidget(values=values) return widget.Selec2tWidget(values=values)
def daftar_user(): def daftar_user():
rows = DBSession.query(User rows = DBSession.query(User
).all() ).all()
r=[] r=[]
d = (0,'Pilih User') d = (0,'Pilih User')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.user_name+' : '+row.email) d = (row.id, row.user_name+' : '+row.email)
r.append(d) r.append(d)
return r return r
########################### ###########################
## Untuk pemilihan Group ## ## Untuk pemilihan Group ##
########################### ###########################
@colander.deferred @colander.deferred
def deferred_group(node, kw): def deferred_group(node, kw):
values = kw.get('daftar_group',[]) values = kw.get('daftar_group',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_group(): def daftar_group():
rows = DBSession.query(Group rows = DBSession.query(Group
).all() ).all()
r=[] r=[]
d = (0,'Pilih Group') d = (0,'Pilih Group')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.group_name) d = (row.id, row.group_name)
r.append(d) r.append(d)
return r return r
########################### ###########################
## Untuk pemilihan Route ## ## Untuk pemilihan Route ##
########################### ###########################
@colander.deferred @colander.deferred
def deferred_route(node, kw): def deferred_route(node, kw):
values = kw.get('daftar_route',[]) values = kw.get('daftar_route',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_route(): def daftar_route():
rows = DBSession.query(Route rows = DBSession.query(Route
).order_by(Route.kode ).order_by(Route.kode
).all() ).all()
r=[] r=[]
d = (0,'Pilih Route') d = (0,'Pilih Route')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.nama) d = (row.id, row.nama)
r.append(d) r.append(d)
return r return r
###################################### ######################################
## Kumpulan Headofkode & Headofname ## ## Kumpulan Headofkode & Headofname ##
###################################### ######################################
auto_unit_nm_sptpd = widget.AutocompleteInputWidget( auto_unit_nm_sptpd = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/skpd/hon_sptpd/act', values = '/skpd/hon_sptpd/act',
min_length=1) min_length=1)
auto_unit_nm2 = widget.AutocompleteInputWidget( auto_unit_nm2 = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/skpd/hon_tbp/act', values = '/skpd/hon_tbp/act',
min_length=1) min_length=1)
auto_unit_nm = widget.AutocompleteInputWidget( auto_unit_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/skpd/hon/act', values = '/skpd/hon/act',
min_length=1) min_length=1)
auto_unit_kode = widget.AutocompleteInputWidget( auto_unit_kode = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/skpd/hoc/act', values = '/skpd/hoc/act',
min_length=1) min_length=1)
auto_wp_nm = widget.AutocompleteInputWidget( auto_wp_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/wp/hon/act', values = '/wp/hon/act',
min_length=1) min_length=1)
auto_wp_nm1 = widget.AutocompleteInputWidget( auto_wp_nm1 = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/wp/hon1/act', values = '/wp/hon1/act',
min_length=1) min_length=1)
auto_wp_nm3 = widget.AutocompleteInputWidget( auto_wp_nm3 = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/wp/hon2/act', values = '/wp/hon2/act',
min_length=1) min_length=1)
auto_wp_nm4 = widget.AutocompleteInputWidget( auto_wp_nm4 = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/wp/hon3/act', values = '/wp/hon3/act',
min_length=1) min_length=1)
auto_wp_nm2 = widget.AutocompleteInputWidget( auto_wp_nm2 = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/wp/ho_objek/act', values = '/wp/ho_objek/act',
min_length=1) min_length=1)
auto_op_nm = widget.AutocompleteInputWidget( auto_op_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/op/hon/act', values = '/op/hon/act',
min_length=1) min_length=1)
auto_group_nm = widget.AutocompleteInputWidget( auto_group_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/group/hon/act', values = '/group/hon/act',
min_length=1) min_length=1)
auto_route_nm = widget.AutocompleteInputWidget( auto_route_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/group/hon/act', values = '/group/hon/act',
min_length=1) min_length=1)
auto_user_nm = widget.AutocompleteInputWidget( auto_user_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/user/hon/act', values = '/user/hon/act',
min_length=1) min_length=1)
auto_wilayah_nm = widget.AutocompleteInputWidget( auto_wilayah_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/wilayah/hon/act', values = '/wilayah/hon/act',
min_length=1) min_length=1)
auto_rekening_nm = widget.AutocompleteInputWidget( auto_rekening_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/rekening/hon/act', values = '/rekening/hon/act',
min_length=1) min_length=1)
auto_pajak_nm = widget.AutocompleteInputWidget( auto_pajak_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/pajak/hon/act', values = '/pajak/hon/act',
min_length=1) min_length=1)
...@@ -182,15 +182,23 @@ def get_payment(request, data): ...@@ -182,15 +182,23 @@ def get_payment(request, data):
rdata = [] rdata = []
for k in row_payment: for k in row_payment:
if not k.ntp:
k.ntp = ''
else:
k.ntb = k.ntp.strip()
if not k.ntb:
k.ntb = ''
else:
k.ntb = k.ntb.strip()
d = dict( d = dict(
kd_bayar = data['kd_bayar'], kd_bayar = data['kd_bayar'],
ntp = k.ntp and k.ntp.strip() or '', ntp = k.ntp,
pembayaran_ke = k.pembayaran_ke, pembayaran_ke = k.pembayaran_ke,
bunga = k.bunga, bunga = k.bunga,
bayar = k.bayar, bayar = k.bayar,
tgl_bayar = ymd(k.tgl_bayar), tgl_bayar = ymd(k.tgl_bayar),
jatuh_tempo = ymd(k.jatuh_tempo), jatuh_tempo = ymd(k.jatuh_tempo),
ntb = k.ntb and k.ntb.strip() or '', ntb = k.ntb,
bank_id = k.bank_id, bank_id = k.bank_id,
channel_id = k.channel_id, channel_id = k.channel_id,
) )
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!