Commit ae9c745e by aagusti

gilang

1 parent c68590bc
...@@ -7,14 +7,16 @@ class EngInformix(object): ...@@ -7,14 +7,16 @@ class EngInformix(object):
self.database = None self.database = None
self.user = None self.user = None
self.password = None self.password = None
settings = get_settings() settings = get_settings()
url = settings['otherdb.url'] url = settings['otherdb.url']
self.dbtype, url = url.split('://') self.dbtype, url = url.split('://')
user_pass, url = url.split('@') user_pass, url = url.split('@')
self.user, self.password = user_pass.split(':') self.user, self.password = user_pass.split(':')
self.server, self.database = url.split('/') self.server, self.database = url.split('/')
def connect(self):
def connect(self):
self.conn = informixdb.connect(self.database, user=self.user, password=self.password) self.conn = informixdb.connect(self.database, user=self.user, password=self.password)
return self.conn return self.conn
...@@ -33,6 +35,7 @@ class EngInformix(object): ...@@ -33,6 +35,7 @@ class EngInformix(object):
cursor.execute(sql) cursor.execute(sql)
row = cursor.fetchone() row = cursor.fetchone()
return row return row
def query_obj(self, sql): def query_obj(self, sql):
if not self.conn: if not self.conn:
self.connect() self.connect()
......
...@@ -22,23 +22,66 @@ from ..models import( ...@@ -22,23 +22,66 @@ from ..models import(
User, User,
CommonModel CommonModel
) )
###########################
# #######################
########################### ## Model E-SIPKD ##
#######################
class Pkb(DefaultModel,Base): class Pkb(DefaultModel,Base):
__tablename__ = 'pkbs' __tablename__ = 'pkbs'
id = Column(BigInteger, primary_key=True) id = Column(BigInteger, primary_key=True)
nik = Column(String(16)) kd_status = Column(SmallInteger, default=0)
no_rangka = Column(String(16)) flag_sms = Column(SmallInteger, default=0)
email = Column(String(32)) no_ktp = Column(String(16))
mobile_phone = Column(String(16)) no_rangka = Column(String(40))
email = Column(String(40))
no_hp = Column(String(20))
tg_pros_daftar = Column(Date)
jam_daftar = Column(String(10))
ket = Column(String(40))
kd_bayar = Column(String(16))
kd_wil = Column(String(2))
kd_wil_proses = Column(String(2))
nm_pemilik = Column(String(40))
no_polisi = Column(String(10))
warna_tnkb = Column(String(40))
milik_ke = Column(Integer)
nm_merek_kb = Column(String(40))
nm_model_kb = Column(String(40))
th_buatan = Column(String(4))
tg_akhir_pjklm = Column(Date)
tg_akhir_pjkbr = Column(Date)
bbn_pok = Column(BigInteger, default=0)
bbn_den = Column(BigInteger, default=0)
pkb_pok = Column(BigInteger, default=0)
pkb_den = Column(BigInteger, default=0)
swd_pok = Column(BigInteger, default=0)
swd_den = Column(BigInteger, default=0)
adm_stnk = Column(BigInteger, default=0)
adm_tnkb = Column(BigInteger, default=0)
jumlah = Column(BigInteger, default=0)
tg_bayar_bank = Column(Date)
jam_bayar_bank = Column(String(10))
kd_trn_bank = Column(String(20))
kd_trn_dpd = Column(String(20))
ivr = Column(String(2))
class Pap(DefaultModel,Base): class Pap(DefaultModel,Base):
__tablename__ = 'paps' __tablename__ = 'paps'
id = Column(BigInteger, primary_key=True) id = Column(BigInteger, primary_key=True)
no_skpd = Column(String(16)) kd_status = Column(SmallInteger, default=0)
email = Column(String(32)) kd_bayar = Column(String(16))
mobile_phone = Column(String(16)) npwpd = Column(String(14))
nm_perus = Column(String(40))
al_perus = Column(String(50))
vol_air = Column(BigInteger, default=0)
npa = Column(BigInteger, default=0)
bea_pok_pjk = Column(BigInteger, default=0)
bea_den_pjk = Column(BigInteger, default=0)
m_pjk_bln = Column(String(2))
m_pjk_thn = Column(String(4))
tgl_tetap = Column(Date)
tgl_jt_tempo = Column(Date)
keterangan = Column(String(255))
class Unit(NamaModel,Base): class Unit(NamaModel,Base):
__tablename__ = 'units' __tablename__ = 'units'
...@@ -123,6 +166,7 @@ class SubjekPajak(NamaModel, Base): ...@@ -123,6 +166,7 @@ class SubjekPajak(NamaModel, Base):
kecamatan = Column(String(128)) kecamatan = Column(String(128))
kota = Column(String(128)) kota = Column(String(128))
user_id = Column(Integer,ForeignKey("users.id")) user_id = Column(Integer,ForeignKey("users.id"))
provinsi = Column(String(128))
users = relationship("User", backref=backref('subjekpajaks')) users = relationship("User", backref=backref('subjekpajaks'))
UniqueConstraint('kode') UniqueConstraint('kode')
......
...@@ -90,4 +90,5 @@ id,kode,nama,path,factory,perm_name,disabled,created,updated,create_uid ...@@ -90,4 +90,5 @@ id,kode,nama,path,factory,perm_name,disabled,created,updated,create_uid
105,"reports_act","Report Action","/reports/act/{act}",,"read",0,"2015-03-08 16:45:45",,1 105,"reports_act","Report Action","/reports/act/{act}",,"read",0,"2015-03-08 16:45:45",,1
106,"arinvoice-edt-unit","ARInvoice Ubah Unit","/arinvoice/edt/unit",,"arinvoice_unit",0,"2015-03-08 16:45:45",,1 106,"arinvoice-edt-unit","ARInvoice Ubah Unit","/arinvoice/edt/unit",,"arinvoice_unit",0,"2015-03-08 16:45:45",,1
107,"arinvoice-edt-subjek","ARInvoice Ubah Subjek","/arinvoice/edt/subjek",,"arinvoice_subjek",0,"2015-03-08 16:45:45",,1 107,"arinvoice-edt-subjek","ARInvoice Ubah Subjek","/arinvoice/edt/subjek",,"arinvoice_subjek",0,"2015-03-08 16:45:45",,1
108,"pkb-edit","Jawaban PKB","/pkb/add",,"add",0,"2015-03-08 16:45:45",,1 108,"pkb-edit","Jawaban E-Samsat","/pkb/{id}/add",,"view",0,"2015-03-08 16:45:45",,1
109,"pap-edit","Jawaban E-PAP","/pap/{id}/add",,"view",0,"2015-03-08 16:45:45",,1
...@@ -45,8 +45,10 @@ def view_home(request): ...@@ -45,8 +45,10 @@ def view_home(request):
# Login # # Login #
######### #########
class Login(colander.Schema): class Login(colander.Schema):
username = colander.SchemaNode(colander.String()) username = colander.SchemaNode(colander.String(),
title="Nama Pengguna")
password = colander.SchemaNode(colander.String(), password = colander.SchemaNode(colander.String(),
title="Kata Sandi",
widget=widget.PasswordWidget()) widget=widget.PasswordWidget())
...@@ -116,10 +118,13 @@ def view_logout(request): ...@@ -116,10 +118,13 @@ def view_logout(request):
################### ###################
class Password(colander.Schema): class Password(colander.Schema):
old_password = colander.SchemaNode(colander.String(), old_password = colander.SchemaNode(colander.String(),
title="Kata Sandi Lama",
widget=widget.PasswordWidget()) widget=widget.PasswordWidget())
new_password = colander.SchemaNode(colander.String(), new_password = colander.SchemaNode(colander.String(),
title="Kata Sandi Baru",
widget=widget.PasswordWidget()) widget=widget.PasswordWidget())
retype_password = colander.SchemaNode(colander.String(), retype_password = colander.SchemaNode(colander.String(),
title="Ketik Ulang Kata Sandi",
widget=widget.PasswordWidget()) widget=widget.PasswordWidget())
......
...@@ -16,7 +16,7 @@ from deform import ( ...@@ -16,7 +16,7 @@ from deform import (
widget, widget,
ValidationFailure, ValidationFailure,
) )
from ..tools import _DTnumberformat from ..tools import _DTnumberformat,_DTstrftime
from ..models import DBSession from ..models import DBSession
from ..models.isipkd import( from ..models.isipkd import(
ObjekPajak, ObjekPajak,
...@@ -56,7 +56,7 @@ def view_list(request): ...@@ -56,7 +56,7 @@ def view_list(request):
def form_validator(form, value): def form_validator(form, value):
def err_kode(): def err_kode():
raise colander.Invalid(form, raise colander.Invalid(form,
'Kode invoice %s sudah digunakan oleh ID %d' % ( 'Kode STS %s sudah digunakan oleh ID %d' % (
value['kode'], found.id)) value['kode'], found.id))
def err_name(): def err_name():
...@@ -152,7 +152,7 @@ def save_request(values, request, row=None): ...@@ -152,7 +152,7 @@ def save_request(values, request, row=None):
if 'id' in request.matchdict: if 'id' in request.matchdict:
values['id'] = request.matchdict['id'] values['id'] = request.matchdict['id']
row = save(values, row) row = save(values, row)
request.session.flash('No Bayar %s sudah disimpan.' % row.kode) request.session.flash('STS %s sudah disimpan.' % row.kode)
def route_list(request): def route_list(request):
return HTTPFound(location=request.route_url('arsts')) return HTTPFound(location=request.route_url('arsts'))
...@@ -190,7 +190,7 @@ def query_id(request): ...@@ -190,7 +190,7 @@ def query_id(request):
return DBSession.query(ARSts).filter(ARSts.id==request.matchdict['id']) return DBSession.query(ARSts).filter(ARSts.id==request.matchdict['id'])
def id_not_found(request): def id_not_found(request):
msg = 'No Bayar ID %s tidak ditemukan atau sudah dibayar.' % request.matchdict['id'] msg = 'STS ID %s tidak ditemukan atau sudah dibayar.' % request.matchdict['id']
request.session.flash(msg, 'error') request.session.flash(msg, 'error')
return route_list(request) return route_list(request)
...@@ -227,18 +227,22 @@ def view_edit(request): ...@@ -227,18 +227,22 @@ def view_edit(request):
def view_delete(request): def view_delete(request):
q = query_id(request) q = query_id(request)
row = q.first() row = q.first()
if not row: if not row:
return id_not_found(request) return id_not_found(request)
if row.jumlah:
request.session.flash('Data tidak dapat dihapus, karena masih mempunyai item.', 'error')
return route_list(request)
form = Form(colander.Schema(), buttons=('delete','cancel')) form = Form(colander.Schema(), buttons=('delete','cancel'))
if request.POST: if request.POST:
if 'delete' in request.POST: if 'delete' in request.POST:
msg = 'No Bayar ID %d %s sudah dihapus.' % (row.id, row.kode) msg = 'STS ID %d %s sudah dihapus.' % (row.id, row.kode)
q.delete() q.delete()
DBSession.flush() DBSession.flush()
request.session.flash(msg) request.session.flash(msg)
return route_list(request) return route_list(request)
return dict(row=row, return dict(row=row, form=form.render())
form=form.render())
########## ##########
# Action # # Action #
...@@ -253,10 +257,10 @@ def view_act(request): ...@@ -253,10 +257,10 @@ def view_act(request):
columns = [] columns = []
columns.append(ColumnDT('id')) columns.append(ColumnDT('id'))
columns.append(ColumnDT('kode')) columns.append(ColumnDT('kode'))
columns.append(ColumnDT('tgl_sts', filter=_DTstrftime))
columns.append(ColumnDT('nama')) columns.append(ColumnDT('nama'))
#columns.append(ColumnDT('jumlah'))
columns.append(ColumnDT('jumlah', filter=_DTnumberformat))
columns.append(ColumnDT('units.nama')) columns.append(ColumnDT('units.nama'))
columns.append(ColumnDT('jumlah', filter=_DTnumberformat))
query = DBSession.query(ARSts).\ query = DBSession.query(ARSts).\
join(Unit) join(Unit)
......
...@@ -140,6 +140,22 @@ def view_delete(request): ...@@ -140,6 +140,22 @@ def view_delete(request):
return id_not_found(request) return id_not_found(request)
form = Form(colander.Schema(), buttons=('delete','cancel')) form = Form(colander.Schema(), buttons=('delete','cancel'))
msg = 'Penerimaan ID %d %s sudah dihapus.' % (row.sts_id, row.sspd_id) msg = 'Penerimaan ID %d %s sudah dihapus.' % (row.sts_id, row.sspd_id)
### ARStsItem
jumlah = DBSession.query(ARStsItem.jumlah).\
filter(ARStsItem.sspd_id==row.sspd_id).scalar()
print'qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq',jumlah
### ARSts
jumlah1 = DBSession.query(ARSts.jumlah).\
filter(ARSts.id==request.session['sts_id']).scalar()
print'qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq',jumlah1
if jumlah:
hasil = jumlah1-jumlah
rows = DBSession.query(ARSts).filter(ARSts.id==request.session['sts_id']).first()
rows.jumlah=hasil
DBSession.add(rows)
DBSession.flush()
q.delete() q.delete()
DBSession.flush() DBSession.flush()
......
...@@ -12,6 +12,9 @@ from ..models.isipkd import( ...@@ -12,6 +12,9 @@ from ..models.isipkd import(
Wilayah, Jabatan, Unit, Rekening, SubjekPajak, Pajak, ObjekPajak Wilayah, Jabatan, Unit, Rekening, SubjekPajak, Pajak, ObjekPajak
) )
#############################
## 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:
...@@ -33,19 +36,33 @@ def hitung_bunga(pokok, jatuh_tempo): ...@@ -33,19 +36,33 @@ def hitung_bunga(pokok, jatuh_tempo):
denda = bln_tunggakan * persen_denda / 100 * pokok denda = bln_tunggakan * persen_denda / 100 * pokok
return denda return denda
###################################
## 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 ##
############################
@colander.deferred
def deferred_status(node, kw):
values = kw.get('daftar_status', [])
return widget.SelectWidget(values=values)
STATUS = ( STATUS = (
(1, 'Aktif'), (1, 'Aktif'),
(0, 'Inaktif'), (0, 'Inaktif'),
) )
#############################
## Untuk pemilihan Summary ##
#############################
@colander.deferred @colander.deferred
def deferred_status(node, kw): def deferred_summary(node, kw):
values = kw.get('daftar_status', []) values = kw.get('daftar_summary', [])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
SUMMARIES = ( SUMMARIES = (
...@@ -53,24 +70,30 @@ SUMMARIES = ( ...@@ -53,24 +70,30 @@ SUMMARIES = (
(0, 'Detail'), (0, 'Detail'),
) )
#############################
## Untuk pemilihan Wilayah ##
#############################
@colander.deferred @colander.deferred
def deferred_summary(node, kw): def deferred_wilayah(node, kw):
values = kw.get('daftar_summary', []) 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, Wilayah.nama).all() rows = DBSession.query(Wilayah.id, Wilayah.kode, Wilayah.nama).filter_by(level_id=2).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.nama) d = (row.id, row.kode+' : '+row.nama)
r.append(d) r.append(d)
return r return r
#############################
## Untuk pemilihan Jabatan ##
#############################
@colander.deferred @colander.deferred
def deferred_wilayah(node, kw): def deferred_jabatan(node, kw):
values = kw.get('daftar_wilayah',[]) values = kw.get('daftar_jabatan',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_jabatan(): def daftar_jabatan():
...@@ -83,119 +106,99 @@ def daftar_jabatan(): ...@@ -83,119 +106,99 @@ def daftar_jabatan():
r.append(d) r.append(d)
return r return r
####################################
## Untuk pemilihan Unit Kerja/OPD ##
####################################
@colander.deferred @colander.deferred
def deferred_jabatan(node, kw): def deferred_unit(node, kw):
values = kw.get('daftar_jabatan',[]) values = kw.get('daftar_unit',[])
return widget.SelectWidget(values=values) return widget.SelectWidget(values=values)
def daftar_unit(): def daftar_unit():
rows = DBSession.query(Unit).filter_by(level_id=3).all() rows = DBSession.query(Unit).filter_by(level_id=3).all()
r=[] r=[]
d = (0,'Pilih OPD') d = (0,'Pilih OPD')
#d = (0,'Pilih SKPD')
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)
return r
@colander.deferred
def deferred_unit(node, kw):
values = kw.get('daftar_unit',[])
return widget.SelectWidget(values=values)
def daftar_rekening():
rows = DBSession.query(Rekening).filter_by(is_summary=0).all()
r=[]
d = (0,'Pilih REKENING')
r.append(d)
for row in rows:
d = (row.id, row.kode+':'+row.nama)
r.append(d) r.append(d)
return r return r
##############################
## 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_user(): rows = DBSession.query(Rekening).filter_by(is_summary=0).all()
rows = DBSession.query(User).all()
r=[]
d = (0,'Pilih USER')
r.append(d)
for row in rows:
d = (row.id, row.email+':'+row.user_name)
r.append(d)
return r
@colander.deferred
def deferred_user(node, kw):
values = kw.get('daftar_user',[])
return widget.SelectWidget(values=values)
def daftar_pajak():
rows = DBSession.query(Pajak).all()
r=[] r=[]
d = (0,'Pilih PAJAK') 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 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_subjekpajak(): rows = DBSession.query(Pajak).all()
rows = DBSession.query(SubjekPajak).all()
r=[] r=[]
d = (0,'Pilih SP') d = (0,'Pilih Pajak')
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 ##
############################
@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_objekpajak(): def daftar_subjekpajak():
rows = DBSession.query(ObjekPajak).all() rows = DBSession.query(SubjekPajak).all()
r=[] r=[]
d = (0,'Pilih SP') d = (0,'Pilih Subjek')
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 ##
###########################
@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)
@colander.deferred
def deferred_subjekpajak(node, kw):
values = kw.get('daftar_subjekpajak',[])
return widget.SelectWidget(values=values)
def daftar_objekpajak(): def daftar_objekpajak():
rows = DBSession.query(ObjekPajak).all() rows = DBSession.query(ObjekPajak).all()
r=[] r=[]
d = (0,'Pilih SP') 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 ##
##########################
@colander.deferred @colander.deferred
def deferred_user(node, kw): def deferred_user(node, kw):
values = kw.get('daftar_user',[]) values = kw.get('daftar_user',[])
...@@ -207,10 +210,13 @@ def daftar_user(): ...@@ -207,10 +210,13 @@ def daftar_user():
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 ##
###########################
@colander.deferred @colander.deferred
def deferred_group(node, kw): def deferred_group(node, kw):
values = kw.get('daftar_group',[]) values = kw.get('daftar_group',[])
...@@ -226,6 +232,9 @@ def daftar_group(): ...@@ -226,6 +232,9 @@ def daftar_group():
r.append(d) r.append(d)
return r return r
###########################
## 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',[])
...@@ -241,7 +250,9 @@ def daftar_route(): ...@@ -241,7 +250,9 @@ def daftar_route():
r.append(d) r.append(d)
return r return r
## Kumpulan Headofkode & Headofname ######################################
## Kumpulan Headofkode & Headofname ##
######################################
auto_unit_nm = widget.AutocompleteInputWidget( auto_unit_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/skpd/hon/act', values = '/skpd/hon/act',
......
...@@ -19,7 +19,8 @@ from ..models.isipkd import( ...@@ -19,7 +19,8 @@ from ..models.isipkd import(
Unit, Unit,
Wilayah, Wilayah,
Pajak, Pajak,
Rekening Rekening,
ARInvoice
) )
from datatables import ( from datatables import (
...@@ -105,8 +106,7 @@ class AddSchema(colander.Schema): ...@@ -105,8 +106,7 @@ class AddSchema(colander.Schema):
title="Pajak" title="Pajak"
) )
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String(), colander.String())
)
nama = colander.SchemaNode( nama = colander.SchemaNode(
colander.String(), colander.String(),
title="Uraian") title="Uraian")
...@@ -147,7 +147,7 @@ def save_request(values, request, row=None): ...@@ -147,7 +147,7 @@ def save_request(values, request, row=None):
values['id'] = request.matchdict['id'] values['id'] = request.matchdict['id']
print "****",values, "****", request print "****",values, "****", request
row = save(values, row) row = save(values, row)
request.session.flash('op %s sudah disimpan.' % row.kode) request.session.flash('Objek %s sudah disimpan.' % row.kode)
def route_list(request): def route_list(request):
return HTTPFound(location=request.route_url('op')) return HTTPFound(location=request.route_url('op'))
...@@ -183,7 +183,7 @@ def query_id(request): ...@@ -183,7 +183,7 @@ def query_id(request):
return DBSession.query(ObjekPajak).filter_by(id=request.matchdict['id']) return DBSession.query(ObjekPajak).filter_by(id=request.matchdict['id'])
def id_not_found(request): def id_not_found(request):
msg = 'op ID %s not found.' % request.matchdict['id'] msg = 'Objek ID %s not found.' % request.matchdict['id']
request.session.flash(msg, 'error') request.session.flash(msg, 'error')
return route_list(request) return route_list(request)
...@@ -191,8 +191,15 @@ def id_not_found(request): ...@@ -191,8 +191,15 @@ def id_not_found(request):
permission='edit') permission='edit')
def view_edit(request): def view_edit(request):
row = query_id(request).first() row = query_id(request).first()
id = row.id
if not row: if not row:
return id_not_found(request) return id_not_found(request)
x = DBSession.query(ARInvoice).filter(ARInvoice.objek_pajak_id==id).first()
if x:
request.session.flash('Tidak bisa diedit, karena objek sudah digunakan di daftar bayar.','error')
return route_list(request)
form = get_form(request, EditSchema) form = get_form(request, EditSchema)
if request.POST: if request.POST:
if 'simpan' in request.POST: if 'simpan' in request.POST:
...@@ -217,18 +224,24 @@ def view_edit(request): ...@@ -217,18 +224,24 @@ def view_edit(request):
def view_delete(request): def view_delete(request):
q = query_id(request) q = query_id(request)
row = q.first() row = q.first()
id = row.id
x = DBSession.query(ARInvoice).filter(ARInvoice.objek_pajak_id==id).first()
if x:
request.session.flash('Tidak bisa dihapus, karena objek sudah digunakan di daftar bayar.','error')
return route_list(request)
if not row: if not row:
return id_not_found(request) return id_not_found(request)
form = Form(colander.Schema(), buttons=('delete','cancel')) form = Form(colander.Schema(), buttons=('delete','cancel'))
if request.POST: if request.POST:
if 'delete' in request.POST: if 'delete' in request.POST:
msg = 'op ID %d %s has been deleted.' % (row.id, row.kode) msg = 'Objek %s sudah dihapus.' % (row.kode)
q.delete() q.delete()
DBSession.flush() DBSession.flush()
request.session.flash(msg) request.session.flash(msg)
return route_list(request) return route_list(request)
return dict(row=row, return dict(row=row, form=form.render())
form=form.render())
########## ##########
# Action # # Action #
......
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<!--arinvoice_id -------------------------------> <!--arinvoice_id ------------------------------->
<div tal:define="field form['arinvoice_id']"> <div tal:define="field form['arinvoice_id']">
......
...@@ -202,7 +202,6 @@ ...@@ -202,7 +202,6 @@
<label class="control-label col-md-3"> <label class="control-label col-md-3">
PEMBAYARAN</label> PEMBAYARAN</label>
</div> </div>
<<<<<<< HEAD
<!--tgl_bayar -------------------------------> <!--tgl_bayar ------------------------------->
<div class="form-group" tal:define="field form['tgl_bayar']" id="item-${field.oid}"> <div class="form-group" tal:define="field form['tgl_bayar']" 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}">
...@@ -215,8 +214,6 @@ ...@@ -215,8 +214,6 @@
*</p> *</p>
</div> </div>
</div> </div>
=======
>>>>>>> aa2db1210dbe0b6f7b09e18c512117de747379b4
<!--bunga -------------------------------> <!--bunga ------------------------------->
<div class="form-group" tal:define="field form['bunga']" id="item-${field.oid}"> <div class="form-group" tal:define="field form['bunga']" 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}">
...@@ -237,23 +234,7 @@ ...@@ -237,23 +234,7 @@
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
*</p> *</p>
</div> </div>
<<<<<<< HEAD
</div> </div>
=======
</div>
<!--tgl_bayar ------------------------------->
<div class="form-group" tal:define="field form['tgl_bayar']" 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()">
*</p>
</div>
</div>
>>>>>>> aa2db1210dbe0b6f7b09e18c512117de747379b4
</div> </div>
</div> </div>
......
...@@ -44,23 +44,26 @@ ...@@ -44,23 +44,26 @@
var iPos; var iPos;
var oFormUrl = "/arsspd/"; var oFormUrl = "/arsspd/";
var oTableUrl = oFormUrl+"grid/act"; var oTableUrl = oFormUrl+"grid/act";
$(document).ready(function () { $(document).ready(function () {
oTable = $('#table1').dataTable({ oTable = $('#table1').dataTable({
"sAjaxSource": oTableUrl, "sAjaxSource" : oTableUrl,
"bServerSide": true, "bServerSide" : true,
"bProcessing": true, "bProcessing" : true,
"sDom": '<"toolbar">lfrtip', "sDom" : '<"toolbar">lfrtip',
"bScrollCollapse": true, "bScrollCollapse": true,
"bSort": true, "bSort" : true,
"bInfo": false, "bInfo" : false,
"bFilter": true, "bFilter" : true,
"bAutoWidth": false, "bAutoWidth" : false,
"bPaginate": true, "bPaginate" : true,
"sPaginationType": "full_numbers", "sPaginationType": "full_numbers",
"lengthMenu": [ "lengthMenu": [
[10, 25, 50, -1], [10, 25, 50, -1],
[10, 25, 50, "All"] [10, 25, 50, "All"]
], ],
"aoColumnDefs": [ "aoColumnDefs": [
{"bSearchable": false, "bVisible": false, "aTargets": [0]} {"bSearchable": false, "bVisible": false, "aTargets": [0]}
], ],
...@@ -76,7 +79,7 @@ ...@@ -76,7 +79,7 @@
//{"sWidth": "75px", "sClass": "center"}, //{"sWidth": "75px", "sClass": "center"},
//{"sWidth": "40px", "sClass": "center"}, //{"sWidth": "40px", "sClass": "center"},
//{"sWidth": "40px", "sClass": "center"}, //{"sWidth": "40px", "sClass": "center"},
{"sWidth": "50px", "sClass": "center"}, {"sWidth": "60px", "sClass": "center"},
], ],
}); });
......
...@@ -110,16 +110,16 @@ ...@@ -110,16 +110,16 @@
var mID; var mID;
var oTable; var oTable;
var iPos; var iPos;
//Nambahin variable sts_id & kondisi untuk pemanggilan grid
var oFormUrl = "/arstsitem/"; var oFormUrl = "/arstsitem/";
var sts_id = $('#id').val(); var sts_id = $('#id').val();
//Nambahin variable sts_id & kondisi untuk pemanggilan grid
if (!sts_id){ if (!sts_id){
kosong = '0'; kosong = '0';
var oTableUrl = oFormUrl+"grid/act?sts_id="+kosong; var oTableUrl = oFormUrl+"grid/act?sts_id="+kosong;
} }else{
else{
var oTableUrl = oFormUrl+"grid/act?sts_id="+sts_id; var oTableUrl = oFormUrl+"grid/act?sts_id="+sts_id;
} }
$(document).ready(function () { $(document).ready(function () {
oTable = $('#table1').dataTable({ oTable = $('#table1').dataTable({
"sAjaxSource" : oTableUrl, "sAjaxSource" : oTableUrl,
...@@ -153,9 +153,9 @@ ...@@ -153,9 +153,9 @@
var tb_array = [ var tb_array = [
'<div class="btn-group pull-left">', '<div class="btn-group pull-left">',
' <button id="btn_tambah" class="btn btn btn-primary pull-left" type="button">Pilih</button>', '<button id="btn_tambah" class="btn btn btn-primary pull-left" type="button">Pilih</button>',
' <button id="btn_delete" class="btn btn btn-danger pull-left" type="button">Hapus</button>', '<button id="btn_delete" class="btn btn btn-danger pull-left" type="button">Hapus</button>',
' <button id="btn_print" class="btn btn btn-primary pull-left" type="button">Cetak</button>', '<button id="btn_print" class="btn btn btn-primary pull-left" type="button">Cetak</button>',
//' <button id="btn_close" class="btn btn btn-warning" type="button">Tutup</button>', //' <button id="btn_close" class="btn btn btn-warning" type="button">Tutup</button>',
' &nbsp;', ' &nbsp;',
'</div>', '</div>',
......
...@@ -19,9 +19,10 @@ ...@@ -19,9 +19,10 @@
<tr> <tr>
<th>ID</th> <th>ID</th>
<th>Kode</th> <th>Kode</th>
<th>Tanggal</th>
<th>Uraian</th> <th>Uraian</th>
<th>Jumlah</th>
<th>OPD</th> <th>OPD</th>
<th>Jumlah</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
...@@ -32,29 +33,33 @@ ...@@ -32,29 +33,33 @@
<script src="/static/datatables/media/js/jquery.dataTables.ext.js"></script> <script src="/static/datatables/media/js/jquery.dataTables.ext.js"></script>
<script src="/static/datatables/extensions/TableTools/media/js/ZeroClipboard.js"></script> <script src="/static/datatables/extensions/TableTools/media/js/ZeroClipboard.js"></script>
<script src="/static/datatables/media/js/dataTables.bootstrap.js"></script> <script src="/static/datatables/media/js/dataTables.bootstrap.js"></script>
<script> <script>
var mID; var mID;
var oTable; var oTable;
var iPos; var iPos;
var oFormUrl = "/arsts/"; var oFormUrl = "/arsts/";
var oTableUrl = oFormUrl+"grid/act"; var oTableUrl = oFormUrl+"grid/act";
$(document).ready(function () { $(document).ready(function () {
oTable = $('#table1').dataTable({ oTable = $('#table1').dataTable({
"sAjaxSource": oTableUrl, "sAjaxSource" : oTableUrl,
"bServerSide": true, "bServerSide" : true,
"bProcessing": true, "bProcessing" : true,
"sDom": '<"toolbar">lfrtip', "sDom" : '<"toolbar">lfrtip',
"bScrollCollapse": true, "bScrollCollapse": true,
"bSort": true, "bSort" : true,
"bInfo": false, "bInfo" : false,
"bFilter": true, "bFilter" : true,
"bAutoWidth": false, "bAutoWidth" : false,
"bPaginate": true, "bPaginate" : true,
"sPaginationType": "full_numbers", "sPaginationType": "full_numbers",
"lengthMenu": [ "lengthMenu": [
[10, 25, 50, -1], [10, 25, 50, -1],
[10, 25, 50, "All"] [10, 25, 50, "All"]
], ],
"aoColumnDefs": [ "aoColumnDefs": [
{"bSearchable": false, "bVisible": false, "aTargets": [0]} {"bSearchable": false, "bVisible": false, "aTargets": [0]}
], ],
...@@ -62,9 +67,10 @@ ...@@ -62,9 +67,10 @@
"aoColumns": [ "aoColumns": [
null, null,
{"sWidth": "100px", "sClass": "left"}, {"sWidth": "100px", "sClass": "left"},
{"sWidth": "40px"},
null, null,
{"sWidth": "100px", "sClass": "right"},
null, null,
{"sWidth": "80px", "sClass": "right"},
], ],
}); });
......
...@@ -61,10 +61,12 @@ ...@@ -61,10 +61,12 @@
"bAutoWidth" : false, "bAutoWidth" : false,
"bPaginate" : true, "bPaginate" : true,
"sPaginationType" : "full_numbers", "sPaginationType" : "full_numbers",
"lengthMenu": [ "lengthMenu": [
[10, 25, 50, -1], [10, 25, 50, -1],
[10, 25, 50, "All"] [10, 25, 50, "All"]
], ],
"aoColumnDefs": [ "aoColumnDefs": [
{"bSearchable": false, "bVisible": false, "aTargets": [0]} {"bSearchable": false, "bVisible": false, "aTargets": [0]}
], ],
...@@ -77,7 +79,7 @@ ...@@ -77,7 +79,7 @@
null, null,
null, null,
{"sWidth": "75px", "sClass": "right"}, {"sWidth": "75px", "sClass": "right"},
{"sWidth": "50px", "sClass": "center"}, {"sWidth": "60px", "sClass": "center"},
{"sWidth": "50px", "sClass": "center"}, {"sWidth": "50px", "sClass": "center"},
], ],
......
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Akun<b class="caret"></b></a> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Akun<b class="caret"></b></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="/logout">${request.user and request.user.nice_username()} Keluar</a></li> <li><a href="/logout">${request.user and request.user.nice_username()} Keluar</a></li>
<li><a href="/password">Ubah password</a></li> <li><a href="/password">Ubah Kata Sandi</a></li>
</ul> </ul>
</li> </li>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<h3 class="panel-title">Warning</h3> <h3 class="panel-title">Warning</h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">
Hapus Objek ID #${row.id} ${row.nama} ? Hapus Objek # ${row.kode} ${row.nama} ?
</div> </div>
</div> </div>
......
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
<thead> <thead>
<tr> <tr>
<th>ID</th> <th>ID</th>
<th>Registrasi</th> <th>Kode Subjek</th>
<th>No.</th> <th>Kode Objek</th>
<th>Uraian</th> <th>Uraian</th>
<th>Rekening</th> <th>Rekening</th>
<th>Wilayah</th> <th>Wilayah</th>
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
"aoColumns": [ "aoColumns": [
null, null,
{"sWidth": "100px", "sClass": "left"}, {"sWidth": "100px", "sClass": "left"},
{"sWidth": "30px", "sClass": "center"}, {"sWidth": "80px", "sClass": "center"},
null, null,
{"sWidth": "75px", "sClass": "center"}, {"sWidth": "75px", "sClass": "center"},
null, null,
......
<html metal:use-macro="load: ../base.pt"> <html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550"> <div metal:fill-slot="content" class="form-550">
<<<<<<< HEAD
<h4>Tambah Tarif</h4> <h4>Tambah Tarif</h4>
=======
<h4>Tambah Pajak</h4>
>>>>>>> aa2db1210dbe0b6f7b09e18c512117de747379b4
<hr> <hr>
<!--div tal:content="structure form"/--> <!--div tal:content="structure form"/-->
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8" <form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
......
<html metal:use-macro="load: ../base.pt"> <html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550"> <div metal:fill-slot="content" class="form-550">
<<<<<<< HEAD
<h4>Edit Tarif</h4> <h4>Edit Tarif</h4>
=======
<h4>Edit Pegawai</h4>
>>>>>>> aa2db1210dbe0b6f7b09e18c512117de747379b4
<hr> <hr>
<!--div tal:content="structure form"/--> <!--div tal:content="structure form"/-->
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8" <form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<div metal:fill-slot="content"> <div metal:fill-slot="content">
<link href="/static/datatables/extensions/TableTools/css/dataTables.tableTools.min.css" rel="stylesheet"> <link href="/static/datatables/extensions/TableTools/css/dataTables.tableTools.min.css" rel="stylesheet">
<link href="/static/datatables/media/css/dataTables.bootstrap.css" rel="stylesheet"> <link href="/static/datatables/media/css/dataTables.bootstrap.css" rel="stylesheet">
<h4>Tarif</h4> <h4>Tarif</h4>
<hr> <hr>
<div class="container"> <div class="container">
......
<html metal:use-macro="load: base.pt"> <html metal:use-macro="load: base.pt">
<div metal:fill-slot="content"> <div metal:fill-slot="content" class="form-signin">
<link rel="stylesheet" href="/static/css/signin.css">
<div tal:content="structure form"/> <div class="container-fluid">
<h4 class="form-signin-heading">Ubah Kata Sandi</h4>
</div> <hr>
<div tal:content="structure form"/>
</div>
</div> <!-- /container -->
</html> </html>
\ No newline at end of file \ No newline at end of file
<html metal:use-macro="load: ../base.pt"> <html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550"> <div metal:fill-slot="content" class="form-550">
<<<<<<< HEAD
<h4>Edit Kode Rekening</h4> <h4>Edit Kode Rekening</h4>
=======
<h4>Edit Rekening</h4>
>>>>>>> aa2db1210dbe0b6f7b09e18c512117de747379b4
<hr> <hr>
<!--div tal:content="structure form"/--> <!--div tal:content="structure form"/-->
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8" <form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
......
...@@ -3,12 +3,7 @@ ...@@ -3,12 +3,7 @@
<div metal:fill-slot="content"> <div metal:fill-slot="content">
<link href="/static/datatables/extensions/TableTools/css/dataTables.tableTools.min.css" rel="stylesheet"> <link href="/static/datatables/extensions/TableTools/css/dataTables.tableTools.min.css" rel="stylesheet">
<link href="/static/datatables/media/css/dataTables.bootstrap.css" rel="stylesheet"> <link href="/static/datatables/media/css/dataTables.bootstrap.css" rel="stylesheet">
<<<<<<< HEAD
<h4>Kode Rekening</h4> <h4>Kode Rekening</h4>
=======
<h4>Rekening</h4>
>>>>>>> aa2db1210dbe0b6f7b09e18c512117de747379b4
<hr> <hr>
<!--div class="container"> <!--div class="container">
<form class="form-inline" role="form" id="frm_upload" name="frm_upload"> <form class="form-inline" role="form" id="frm_upload" name="frm_upload">
......
...@@ -9,18 +9,6 @@ ...@@ -9,18 +9,6 @@
<input type="hidden" name="__formid__" value="deform"/> <input type="hidden" name="__formid__" value="deform"/>
<div class="col-md-12"> <div class="col-md-12">
<!--user_id ------------------------------->
<div class="form-group" tal:define="field form['user_id']" 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>
<!--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}">
...@@ -106,7 +94,7 @@ ...@@ -106,7 +94,7 @@
</div> </div>
</div> </div>
<!--propinsi -------------------------------> <!--propinsi ------------------------------->
<div class="form-group" tal:define="field form['propinsi']" id="item-${field.oid}"> <div class="form-group" tal:define="field form['provinsi']" 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}">
${field.title}<span id="error-${field.oid}" class="text text-danger" ${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<h3 class="panel-title">Warning</h3> <h3 class="panel-title">Warning</h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">
Hapus Subjek ID #${row.id} ${row.nama} ? Hapus Subjek # ${row.kode} ${row.nama} ?
</div> </div>
</div> </div>
......
...@@ -9,18 +9,6 @@ ...@@ -9,18 +9,6 @@
<input type="hidden" name="__formid__" value="deform"/> <input type="hidden" name="__formid__" value="deform"/>
<div class="col-md-12"> <div class="col-md-12">
<!--user_id ------------------------------->
<div class="form-group" tal:define="field form['user_id']" 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>
<!--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}">
...@@ -106,7 +94,7 @@ ...@@ -106,7 +94,7 @@
</div> </div>
</div> </div>
<!--propinsi -------------------------------> <!--propinsi ------------------------------->
<div class="form-group" tal:define="field form['propinsi']" id="item-${field.oid}"> <div class="form-group" tal:define="field form['provinsi']" 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}">
${field.title}<span id="error-${field.oid}" class="text text-danger" ${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
......
...@@ -15,6 +15,7 @@ from deform import ( ...@@ -15,6 +15,7 @@ from deform import (
from ..models import DBSession, User, UserGroup, Group from ..models import DBSession, User, UserGroup, Group
from ..models.isipkd import( from ..models.isipkd import(
SubjekPajak, SubjekPajak,
ARInvoice
) )
from datatables import ( from datatables import (
...@@ -81,7 +82,7 @@ def form_validator(form, value): ...@@ -81,7 +82,7 @@ def form_validator(form, value):
err_user() err_user()
elif found: elif found:
err_user() err_user()
if 'login' in value and int(value['user_id'])==0: if 'login' in value: # and int(value['user_id'])==0:
found = User.get_by_name(value['kode']) found = User.get_by_name(value['kode'])
if r: if r:
if found and found.id != r.id: if found and found.id != r.id:
...@@ -90,11 +91,13 @@ def form_validator(form, value): ...@@ -90,11 +91,13 @@ def form_validator(form, value):
err_user() err_user()
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
'''
user_id = colander.SchemaNode( user_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget = deferred_user, widget = deferred_user,
#oid="user_id", #oid="user_id",
title="User") title="User")
'''
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String(), colander.String(),
) )
...@@ -122,7 +125,7 @@ class AddSchema(colander.Schema): ...@@ -122,7 +125,7 @@ class AddSchema(colander.Schema):
colander.String(), colander.String(),
missing=colander.drop missing=colander.drop
) )
propinsi = colander.SchemaNode( provinsi = colander.SchemaNode(
colander.String(), colander.String(),
missing=colander.drop missing=colander.drop
) )
...@@ -152,9 +155,9 @@ def get_form(request, class_form): ...@@ -152,9 +155,9 @@ def get_form(request, class_form):
schema.request = request schema.request = request
return Form(schema, buttons=('simpan','batal')) return Form(schema, buttons=('simpan','batal'))
def save(values, row=None): def save(request,values, row=None):
login = None login = None
if 'login' in values and values['login'] and int(values['user_id'])==0: if 'login' in values and values['login']: # and int(values['user_id'])==0:
login = User() login = User()
login.user_password = values['kode'] login.user_password = values['kode']
login.status = values['status'] login.status = values['status']
...@@ -166,13 +169,19 @@ def save(values, row=None): ...@@ -166,13 +169,19 @@ def save(values, row=None):
if not row: if not row:
row = SubjekPajak() row = SubjekPajak()
row.from_dict(values) row.from_dict(values)
#Sementara untuk user yg masuk ke Subjek adalah user yg login dan yg menginputkan data subjek (Bukan subjek yg dibuatkan user login)
if login: if login:
row.user_id=login.id row.user_id=request.user.id #login.id
else:
row.user_id=request.user.id
if not row.user_id: if not row.user_id:
row.user_id=None row.user_id=None
DBSession.add(row) DBSession.add(row)
DBSession.flush() DBSession.flush()
if row.user_id: if row.user_id:
q = DBSession.query(UserGroup).join(Group).filter(UserGroup.user_id==row.user_id, q = DBSession.query(UserGroup).join(Group).filter(UserGroup.user_id==row.user_id,
Group.group_name=='wp').first() Group.group_name=='wp').first()
...@@ -182,13 +191,14 @@ def save(values, row=None): ...@@ -182,13 +191,14 @@ def save(values, row=None):
usergroup.group_id = DBSession.query(Group.id).filter_by(group_name='wp').scalar() usergroup.group_id = DBSession.query(Group.id).filter_by(group_name='wp').scalar()
DBSession.add(usergroup) DBSession.add(usergroup)
DBSession.flush() DBSession.flush()
return row return row
def save_request(values, request, row=None): def save_request(values, request, row=None):
if 'id' in request.matchdict: if 'id' in request.matchdict:
values['id'] = request.matchdict['id'] values['id'] = request.matchdict['id']
row = save(values, row) row = save(request, values, row)
request.session.flash('wp %s sudah disimpan.' % row.kode) request.session.flash('Subjek %s sudah disimpan.' % row.kode)
def route_list(request): def route_list(request):
return HTTPFound(location=request.route_url('wp')) return HTTPFound(location=request.route_url('wp'))
...@@ -224,7 +234,7 @@ def query_id(request): ...@@ -224,7 +234,7 @@ def query_id(request):
return DBSession.query(SubjekPajak).filter_by(id=request.matchdict['id']) return DBSession.query(SubjekPajak).filter_by(id=request.matchdict['id'])
def id_not_found(request): def id_not_found(request):
msg = 'wp ID %s not found.' % request.matchdict['id'] msg = 'Subjek ID %s not found.' % request.matchdict['id']
request.session.flash(msg, 'error') request.session.flash(msg, 'error')
return route_list(request) return route_list(request)
...@@ -232,8 +242,15 @@ def id_not_found(request): ...@@ -232,8 +242,15 @@ def id_not_found(request):
permission='edit') permission='edit')
def view_edit(request): def view_edit(request):
row = query_id(request).first() row = query_id(request).first()
id = row.id
if not row: if not row:
return id_not_found(request) return id_not_found(request)
x = DBSession.query(ARInvoice).filter(ARInvoice.subjek_pajak_id==id).first()
if x:
request.session.flash('Tidak bisa diedit, karena subjek sudah digunakan di daftar bayar.','error')
return route_list(request)
form = get_form(request, EditSchema) form = get_form(request, EditSchema)
if request.POST: if request.POST:
if 'simpan' in request.POST: if 'simpan' in request.POST:
...@@ -261,18 +278,24 @@ def view_edit(request): ...@@ -261,18 +278,24 @@ def view_edit(request):
def view_delete(request): def view_delete(request):
q = query_id(request) q = query_id(request)
row = q.first() row = q.first()
id = row.id
x = DBSession.query(ARInvoice).filter(ARInvoice.subjek_pajak_id==id).first()
if x:
request.session.flash('Tidak bisa dihapus, karena subjek sudah digunakan di daftar bayar.','error')
return route_list(request)
if not row: if not row:
return id_not_found(request) return id_not_found(request)
form = Form(colander.Schema(), buttons=('delete','cancel')) form = Form(colander.Schema(), buttons=('delete','cancel'))
if request.POST: if request.POST:
if 'delete' in request.POST: if 'delete' in request.POST:
msg = 'wp ID %d %s has been deleted.' % (row.id, row.kode) msg = 'Subjek %s sudah dihapus.' % (row.kode)
q.delete() q.delete()
DBSession.flush() DBSession.flush()
request.session.flash(msg) request.session.flash(msg)
return route_list(request) return route_list(request)
return dict(row=row, return dict(row=row, form=form.render())
form=form.render())
########## ##########
# Action # # Action #
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!