Commit 8dccc579 by aagusti

Update tgl 21 Mei 2015

1 parent ae9c745e
......@@ -12,7 +12,9 @@ from sqlalchemy import (
ForeignKey,
UniqueConstraint
)
from sqlalchemy.orm import relationship, backref
from sqlalchemy.orm import relationship, backref
from sqlalchemy.orm.exc import NoResultFound
import transaction
from ..models import(
DBSession,
DefaultModel,
......@@ -67,7 +69,7 @@ class Pkb(DefaultModel,Base):
class Pap(DefaultModel,Base):
__tablename__ = 'paps'
id = Column(BigInteger, primary_key=True)
id = Column(BigInteger, primary_key=True)
kd_status = Column(SmallInteger, default=0)
kd_bayar = Column(String(16))
npwpd = Column(String(14))
......@@ -85,16 +87,72 @@ class Pap(DefaultModel,Base):
class Unit(NamaModel,Base):
__tablename__ = 'units'
id = Column(Integer, primary_key=True)
id = Column(Integer, primary_key=True)
kode = Column(String(16), unique=True)
nama = Column(String(128))
level_id = Column(SmallInteger)
is_summary = Column(SmallInteger)
parent_id = Column(SmallInteger)
class UserUnit(Base):
__tablename__ = 'user_units'
units = relationship("Unit", backref=backref('user_units'))
users = relationship("User", backref=backref('user_units'))
user_id = Column(Integer, ForeignKey('users.id'), primary_key=True)
unit_id = Column(Integer, ForeignKey('units.id'), primary_key=True)
@classmethod
def get_by_email(cls, email):
user = User.get_by_email(email)
return cls.get_by_user(user)
@classmethod
def _get_by_user(cls, user):
return DBSession.query(cls).filter_by(user_id=user.id).all()
@classmethod
def get_by_user(cls, user):
units = []
for g in cls._get_by_user(user):
units.append(g.unit_id)
return units
@classmethod
def set_one(cls, session, user, unit):
member = DBSession.query(cls).filter_by(user_id=user.id, unit_id=unit.id)
try:
member = member.one()
except NoResultFound:
member = cls(user_id=user.id, unit_id=unit.id)
DBSession.add(member)
transaction.commit()
@classmethod
def set_all(cls, user, unit_ids=[]):
if type(user) in [StringType, UnicodeType]:
user = User.get_by_email(user)
olds = cls._get_by_user(user)
news = []
for unit_id in unit_ids:
unit = DBSession.query(Unit).get(unit_id)
member = cls.set_one(user, unit)
news.append(unit)
for old in olds:
if old not in news:
old.delete()
DBSession.commit()
@classmethod
def get_by_unit(cls, unit):
users = []
for g in DBSession.query(cls).filter_by(unit=unit):
users.append(g.user)
return users
class Rekening(NamaModel,Base):
__tablename__ = 'rekenings'
id = Column(Integer, primary_key=True)
id = Column(Integer, primary_key=True)
kode = Column(String(24), unique=True)
nama = Column(String(128))
level_id = Column(SmallInteger)
......@@ -104,7 +162,7 @@ class Rekening(NamaModel,Base):
class UnitRekening(Base):
__tablename__ = 'unit_rekenings'
id = Column(Integer, primary_key=True)
unit_id = Column(Integer,ForeignKey("units.id"))
unit_id = Column(Integer, ForeignKey("units.id"))
rekening_id = Column(Integer, ForeignKey("rekenings.id"))
class Jabatan(NamaModel, Base):
......@@ -117,9 +175,9 @@ class Pegawai(NamaModel, Base):
__tablename__ = 'pegawais'
#nama = Column(String(128))
status = Column(Integer, default=1)
jabatan_id = Column(Integer,ForeignKey("jabatans.id"))
unit_id = Column(Integer,ForeignKey("units.id"))
user_id = Column(Integer,ForeignKey("users.id"), nullable=True)
jabatan_id = Column(Integer, ForeignKey("jabatans.id"))
unit_id = Column(Integer, ForeignKey("units.id"))
user_id = Column(Integer, ForeignKey("users.id"), nullable=True)
users = relationship("User", backref=backref('pegawais'))
UniqueConstraint('kode')
......@@ -130,25 +188,24 @@ class Pegawai(NamaModel, Base):
class PegawaiLogin(Base):
__tablename__ = 'pegawai_users'
user_id = Column(Integer,ForeignKey("users.id"), primary_key=True)
pegawai_id = Column(Integer,ForeignKey("pegawais.id"), unique=True)
change_unit = Column(Integer,default=0, nullable=False)
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
pegawai_id = Column(Integer, ForeignKey("pegawais.id"), unique=True)
change_unit = Column(Integer, default=0, nullable=False)
class Pajak(NamaModel, Base):
__tablename__ = 'pajaks'
status = Column(Integer, default=1)
rekening_id = Column(Integer,ForeignKey("rekenings.id"))
rekening_id = Column(Integer, ForeignKey("rekenings.id"))
tahun = Column(Integer, nullable=False, default=0)
tarif = Column(Float, default=0, nullable=False)
denda_rekening_id = Column(Integer, nullable=True, default=0)
tarif = Column(Float, nullable=False, default=0)
denda_rekening_id = Column(Integer, nullable=True, default=0)
UniqueConstraint('rekening_id','tahun', name='rekening_tahun')
rekenings = relationship("Rekening", backref=backref('pajaks'))
class Wilayah(NamaModel,Base):
__tablename__ = 'wilayahs'
id = Column(Integer, primary_key=True)
id = Column(Integer, primary_key=True)
kode = Column(String(24), unique=True)
nama = Column(String(128))
level_id = Column(SmallInteger)
......@@ -165,8 +222,9 @@ class SubjekPajak(NamaModel, Base):
kelurahan = Column(String(128))
kecamatan = 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))
email = Column(String(40))
users = relationship("User", backref=backref('subjekpajaks'))
UniqueConstraint('kode')
......@@ -193,9 +251,9 @@ class ObjekPajak(NamaModel, Base):
pajak_id = Column(Integer, ForeignKey("pajaks.id"))
subjekpajak_id = Column(Integer, ForeignKey("subjekpajaks.id"))
subjekpajaks = relationship('SubjekPajak', backref=backref('objekpajaks'))
pajaks = relationship('Pajak', backref=backref('objekpajaks'))
wilayahs = relationship('Wilayah', backref=backref('objekpajaks'))
units = relationship('Unit', backref=backref('objekpajaks'))
pajaks = relationship('Pajak', backref=backref('objekpajaks'))
wilayahs = relationship('Wilayah', backref=backref('objekpajaks'))
units = relationship('Unit', backref=backref('objekpajaks'))
class ARInvoice(CommonModel, Base):
__tablename__ = 'arinvoices'
......@@ -238,8 +296,8 @@ class ARInvoice(CommonModel, Base):
#bulan = Column(Integer)
#tanggal = Column(Integer)
subjekpajaks = relationship("SubjekPajak", backref=backref('arinvoices'))
objekpajaks = relationship("ObjekPajak", backref=backref('arinvoices'))
units = relationship("Unit", backref=backref('arinvoices'))
objekpajaks = relationship("ObjekPajak", backref=backref('arinvoices'))
units = relationship("Unit", backref=backref('arinvoices'))
UniqueConstraint(tahun_id,unit_id,no_id,name='arinvoice_uq')
class ARSspd(CommonModel, Base):
......@@ -253,15 +311,13 @@ class ARSspd(CommonModel, Base):
bunga = Column(BigInteger)
bayar = Column(BigInteger)
tgl_bayar = Column(DateTime)
posted = Column(SmallInteger, nullable=False, default=0)
create_uid = Column(Integer)
update_uid = Column(Integer)
create_date = Column(DateTime(timezone=True))
update_date = Column(DateTime(timezone=True))
arinvoices = relationship("ARInvoice", backref=backref('arsspds'))
units = relationship("Unit", backref=backref('arsspds'))
posted = Column(SmallInteger, nullable=False, default=0)
arinvoices = relationship("ARInvoice", backref=backref('arsspds'))
units = relationship("Unit", backref=backref('arsspds'))
UniqueConstraint(arinvoice_id,pembayaran_ke,name='arsspd_uq')
UniqueConstraint(tahun_id,unit_id,no_id,name='arsspd_no_uq')
......@@ -280,17 +336,17 @@ class ARSts(NamaModel,Base):
create_date = Column(DateTime(timezone=True))
update_date = Column(DateTime(timezone=True))
status_bayar = Column(SmallInteger)
units = relationship("Unit", backref=backref('arsts'))
jumlah = Column(BigInteger, nullable=False, default=0)
units = relationship("Unit", backref=backref('arsts'))
UniqueConstraint(tahun_id,unit_id,no_id,name='arsts_no_uq')
class ARStsItem(Base):
__tablename__ = 'arsts_item'
sts_id = Column(Integer, primary_key=True)
sspd_id = Column(Integer, ForeignKey('arsspds.id'),primary_key=True)
sspd_id = Column(Integer, ForeignKey('arsspds.id'), primary_key=True)
rekening_id = Column(Integer, ForeignKey('rekenings.id'), primary_key=True)
jumlah = Column(BigInteger, nullable=False, default=0)
sspds = relationship("ARSspd", backref=backref('arstsitems'))
sspds = relationship("ARSspd", backref=backref('arstsitems'))
rekenings = relationship("Rekening", backref=backref('arstsitems'))
class Param(Base):
......
......@@ -47,11 +47,11 @@ id,kode,nama,path,factory,perm_name,disabled,created,updated,create_uid
62,"wilayah-act","Baca Wilayah","/wilayah/{act}/act",,"read",0,"2015-03-08 16:45:45",,1
63,"wilayah-add","Tambah Wilayah","/wilayah/add",,"add",0,"2015-03-08 16:45:45",,1
64,"wilayah-edit","Edit Wilayah","/wilayah/{id}/edit",,"edit",0,"2015-03-08 16:45:45",,1
65,"wp","Subjek","/wp",,"read",0,"2015-03-08 16:45:45",,1
66,"wp-act","Baca Subjek","/wp/{act}/act",,"read",0,"2015-03-08 16:45:45",,1
67,"wp-add","Tambah Subjek","/wp/add",,"add",0,"2015-03-08 16:45:45",,1
68,"wp-edit","Edit Subjek","/wp/{id}/edit",,"edit",0,"2015-03-08 16:45:45",,1
69,"wp-delete","Hapus Subjek","/wp/{id}/delete",,"delete",0,"2015-03-08 16:45:45",,1
65,"wp","Penyetor","/wp",,"read",0,"2015-03-08 16:45:45",,1
66,"wp-act","Baca Penyetor","/wp/{act}/act",,"read",0,"2015-03-08 16:45:45",,1
67,"wp-add","Tambah Penyetor","/wp/add",,"add",0,"2015-03-08 16:45:45",,1
68,"wp-edit","Edit Penyetor","/wp/{id}/edit",,"edit",0,"2015-03-08 16:45:45",,1
69,"wp-delete","Hapus Penyetor","/wp/{id}/delete",,"delete",0,"2015-03-08 16:45:45",,1
70,"op","Objek","/op",,"read",0,"2015-03-08 16:45:45",,1
71,"op-act","Baca Objek","/op/{act}/act",,"read",0,"2015-03-08 16:45:45",,1
72,"op-add","Tambah Objek","/op/add",,"add",0,"2015-03-08 16:45:45",,1
......@@ -90,5 +90,9 @@ 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
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
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
108,"pkb-edit","Jawaban E-Samsat","/pkb/{nr}/{nk}/{em}/{nh}/add",,"view",0,"2015-03-08 16:45:45",,1
109,"pap-edit","Jawaban E-PAP","/pap/{nr}/{nk}/{em}/add",,"view",0,"2015-03-08 16:45:45",,1
110,"user-unit","User OPD","/user-unit",,"read",0,"2015-03-08 16:45:45",,1
111,"user-unit-act","User OPD Act","/user-unit/{act}/act",,"read",0,"2015-03-08 16:45:45",,1
112,"user-unit-add","Tambah User OPD","/user-unit/add",,"add",0,"2015-03-08 16:45:45",,1
113,"user-unit-delete","Hapus User OPD","/user-unit/{id}/{id2}/delete",,"delete",0,"2015-03-08 16:45:45",,1
\ No newline at end of file
......@@ -51,6 +51,14 @@ def email_validator(node, value):
name, email = parseaddr(value)
if not email or email.find('@') < 0:
raise colander.Invalid(node, 'Invalid email format')
def npwpd_validator(npwpd):
try:
npwpd = int(npwpd)
return False
except ValueError:
raise colander.Invalid('Invalid NPWPD format')
return True
def get_msisdn(msisdn, country='+62'):
for ch in msisdn:
......
......@@ -36,7 +36,7 @@ from daftar import (STATUS, deferred_status,
daftar_wilayah, deferred_wilayah,
daftar_unit, deferred_unit,
daftar_pajak, deferred_pajak,
auto_op_nm, auto_unit_nm, auto_wp_nm
auto_op_nm, auto_unit_nm, auto_wp_nm, auto_wp_nm1
)
########
# List #
......@@ -78,42 +78,39 @@ class AddSchema(colander.Schema):
colander.Integer(),
widget=widget.HiddenWidget(),
oid="unit_id",
title="SKPD",
title="OPD",
)
unit_nm = colander.SchemaNode(
colander.String(),
title="OPD",
#title="SKPD",
#widget=auto_unit_nm,
oid="unit_nm"
)
subjek_pajak_id = colander.SchemaNode(
colander.Integer(),
widget=widget.HiddenWidget(),
title="Subjek Bayar",
title="Penyetor",
oid = "subjek_pajak_id"
)
subjek_pajak_nm = colander.SchemaNode(
colander.String(),
#widget=auto_wp_nm,
title="Subjek",
widget=auto_wp_nm1,
title="Penyetor",
oid = "subjek_pajak_nm"
)
subjek_pajak_us = colander.SchemaNode(
colander.Integer(),
widget=widget.HiddenWidget(),
oid = "subjek_pajak_us"
)
objek_pajak_id = colander.SchemaNode(
colander.Integer(),
title="Objek Bayar",
title="Objek",
widget=widget.HiddenWidget(),
oid = "objek_pajak_id"
)
objek_pajak_nm = colander.SchemaNode(
colander.String(),
widget=auto_op_nm,
title="Objek",
oid = "objek_pajak_nm"
)
......@@ -143,31 +140,40 @@ class AddSchema(colander.Schema):
colander.Integer(),
default = 0,
widget = moneywidget,
oid = "dasar"
)
tarif = colander.SchemaNode(
colander.Integer(),
default = 0,
widget = moneywidget,
oid = "tarif",
missing=colander.drop
)
pokok = colander.SchemaNode(
colander.Integer(),
default = 0,
widget = moneywidget,
missing=colander.drop,
oid = "pokok"
)
denda = colander.SchemaNode(
colander.Integer(),
default = 0,
widget = moneywidget,
oid = "denda"
)
bunga = colander.SchemaNode(
colander.Integer(),
default = 0,
widget = moneywidget,
oid = "bunga"
)
jumlah = colander.SchemaNode(
colander.Integer(),
default = 0,
widget = moneywidget,
missing=colander.drop,
oid = "jumlah"
)
class EditSchema(AddSchema):
......@@ -192,10 +198,10 @@ def save(values, row=None):
row = ARInvoice()
row.from_dict(values)
row.dasar = re.sub("[^0-9]", "", row.dasar)
row.tarif = re.sub("[^0-9]", "", row.tarif)
row.pokok = re.sub("[^0-9]", "", row.pokok)
row.denda = re.sub("[^0-9]", "", row.denda)
row.bunga = re.sub("[^0-9]", "", row.bunga)
row.tarif = re.sub("[^0-9]", "", row.tarif)
row.jumlah = re.sub("[^0-9]", "", row.jumlah)
if not row.tahun_id:
......
......@@ -153,7 +153,7 @@ def deferred_pajak(node, kw):
def daftar_pajak():
rows = DBSession.query(Pajak).all()
r=[]
d = (0,'Pilih Pajak')
d = (0,'Pilih Rekening')
r.append(d)
for row in rows:
d = (row.id, row.kode+' : '+row.nama)
......@@ -171,7 +171,7 @@ def deferred_subjekpajak(node, kw):
def daftar_subjekpajak():
rows = DBSession.query(SubjekPajak).all()
r=[]
d = (0,'Pilih Subjek')
d = (0,'Pilih Penyetor')
r.append(d)
for row in rows:
d = (row.id, row.kode+' : '+row.nama)
......@@ -267,6 +267,11 @@ auto_wp_nm = widget.AutocompleteInputWidget(
size=60,
values = '/wp/hon/act',
min_length=1)
auto_wp_nm1 = widget.AutocompleteInputWidget(
size=60,
values = '/wp/hon1/act',
min_length=1)
auto_op_nm = widget.AutocompleteInputWidget(
size=60,
......
......@@ -48,45 +48,12 @@ def view_list(request):
#######
# Add #
#######
def form_validator(form, value):
def err_kode():
raise colander.Invalid(form,
'Kode op %s sudah digunakan oleh ID %d' % (
value['kode'], found.id))
def err_name():
raise colander.Invalid(form,
'Uraian %s sudah digunakan oleh ID %d' % (
value['nama'], found.id))
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = DBSession.query(ObjekPajak).filter_by(id=uid)
r = q.first()
else:
r = None
q = DBSession.query(ObjekPajak).\
filter(ObjekPajak.kode==value['kode'],
ObjekPajak.subjekpajak_id==value['subjekpajak_id'])
found = q.first()
if r:
if found and found.id != r.id:
err_kode()
elif found:
err_kode()
if 'nama' in value: # optional
found = ObjekPajak.get_by_nama(value['nama'])
if r:
if found and found.id != r.id:
err_name()
elif found:
err_name()
class AddSchema(colander.Schema):
subjekpajak_id = colander.SchemaNode(
colander.Integer(),
widget=deferred_subjekpajak,
title="Subjek"
title="Penyetor"
)
wilayah_id = colander.SchemaNode(
colander.Integer(),
......@@ -103,13 +70,18 @@ class AddSchema(colander.Schema):
pajak_id = colander.SchemaNode(
colander.Integer(),
widget=deferred_pajak,
title="Pajak"
title="Rekening"
)
kode = colander.SchemaNode(
colander.String())
colander.String(),
widget=widget.HiddenWidget(),
oid="kode",
missing=colander.drop)
nama = colander.SchemaNode(
colander.String(),
title="Uraian")
widget=widget.HiddenWidget(),
oid="nama",
missing=colander.drop)
status = colander.SchemaNode(
colander.Integer(),
widget=deferred_status,
......@@ -123,7 +95,7 @@ class EditSchema(AddSchema):
def get_form(request, class_form):
schema = class_form(validator=form_validator)
schema = class_form()
schema = schema.bind(daftar_status=STATUS,
daftar_subjekpajak=daftar_subjekpajak(),
daftar_pajak=daftar_pajak(),
......@@ -136,6 +108,15 @@ def save(values, row=None):
if not row:
row = ObjekPajak()
row.from_dict(values)
p = values['pajak_id']
x = values['kode']
y = values['nama']
if not x and not y:
row1 = DBSession.query(Pajak).filter(Pajak.id==p).first()
row.kode = row1.kode
row.nama = row1.nama
print "********------",row.kode, "********--------", row.nama
#if values['password']:
# row.password = values['password']
DBSession.add(row)
......@@ -267,10 +248,13 @@ def view_act(request):
elif url_dict['act']=='hon':
term = 'term' in params and params['term'] or ''
subjek_pajak_id = 'subjek_pajak_id' in params and params['subjek_pajak_id'] or 0
x = request.user.id
rows = DBSession.query(ObjekPajak).\
rows = DBSession.query(ObjekPajak).join(SubjekPajak).join(Pajak).\
filter(ObjekPajak.nama.ilike('%%%s%%' % term),
ObjekPajak.subjekpajak_id==SubjekPajak.id,
SubjekPajak.id==subjek_pajak_id,
ObjekPajak.pajak_id==Pajak.id,
SubjekPajak.user_id==x).all()
r = []
for k in rows:
......@@ -282,6 +266,7 @@ def view_act(request):
d['sp_nm'] = k.subjekpajaks.nama
d['unit_id'] = k.units.id
d['unit_nm'] = k.units.nama
d['tarif'] = k.pajaks.tarif
r.append(d)
return r
return r
import colander
import informixdb
import re
from datetime import (datetime, date)
from time import (strptime, strftime, time, sleep)
from sqlalchemy import (not_, or_, text)
......@@ -9,7 +10,7 @@ from deform import (Form, widget, ValidationFailure,)
from datatables import (ColumnDT, DataTables)
from recaptcha.client import captcha
from ..tools import (email_validator, BULANS, captcha_submit, get_settings)
from ..tools import (email_validator,BULANS, captcha_submit, get_settings,npwpd_validator)
from ..models import (DBSession)
from ..models.isipkd import (Pap)
from ..models.informix import EngInformix
......@@ -37,21 +38,58 @@ def form_validator(form, value):
'Kode validasi harus diisi'
)
def deferred_bulan(node, kw):
values = kw.get('bulans', [])
return widget.SelectWidget(values=values)
BULANS = (('','Pilih Bulan'),
('01','Januari'),
('02','Februari'),
('03','Maret'),
('04','April'),
('05','Mei'),
('06','Juni'),
('07','Juli'),
('08','Agustus'),
('09','September'),
('10','Oktober'),
('11','November'),
('12','Desember'),
)
def deferred_tahun(node, kw):
values = kw.get('tahuns', [])
return widget.SelectWidget(values=values)
TAHUNS = (('','Pilih Tahun'),
('1990','1990'),('1991','1991'),('1992','1992'),('1993','1993'),('1994','1994'),
('1995','1995'),('1996','1996'),('1997','1997'),('1998','1998'),('1999','1999'),
('2000','2000'),('2001','2001'),('2002','2002'),('2003','2003'),('2004','2004'),
('2005','2005'),('2006','2006'),('2007','2007'),('2008','2008'),('2009','2009'),
('2010','2010'),('2011','2011'),('2012','2012'),('2013','2013'),('2014','2014'),
('2015','2015'),('2016','2016'),('2017','2017'),('2018','2018'),('2019','2019'),
('2020','2020'),('2021','2021'),('2022','2022'),('2023','2023'),('2024','2024'),
('2025','2025'),('2026','2026'),('2027','2027'),('2028','2028'),('2029','2029'),
('2030','2030'),
)
class AddSchema(colander.Schema):
npwpd = colander.SchemaNode(
colander.String(),
widget = widget.TextInputWidget(max=14),
title = "NPWPD :",
#validator=npwpd_validator,
title = "NPWPD",
oid="npwpd"
)
m_pjk_bln = colander.SchemaNode(
colander.String(),
widget=widget.SelectWidget(values=BULANS),
title = "Bulan",
oid="m_pjk_bln"
)
m_pjk_thn = colander.SchemaNode(
colander.String(),
widget = widget.SelectWidget(values=TAHUNS),
title = "Tahun",
oid="m_pjk_thn"
)
......@@ -141,10 +179,19 @@ class AddSchema(colander.Schema):
)
class EditSchema(AddSchema):
id = colander.SchemaNode(
colander.Integer(),
oid="id")
nr = colander.SchemaNode(
colander.String(),
oid="nr"
)
nk = colander.SchemaNode(
colander.String(),
oid="nk"
)
em = colander.SchemaNode(
colander.String(),
oid="em"
)
def get_form(request, class_form):
schema = class_form(validator=form_validator)
schema.request = request
......@@ -153,24 +200,6 @@ def get_form(request, class_form):
def save(request, values, row=None):
engInformix = EngInformix()
c_now = datetime.now()
c_date = c_now.strftime('%m-%d-%Y')
c_time = c_now.strftime('%H:%M:%S')
sql = """INSERT INTO v_jupntepap (npwpd, m_pjk_bln, m_pjk_thn,kd_status)
VALUES('{npwpd}', '{m_pjk_bln}', '{m_pjk_thn}', '{kd_status}')"""
row = engInformix.execute(sql.format(
npwpd = values['npwpd'],
m_pjk_bln = values['m_pjk_bln'],
m_pjk_thn = values['m_pjk_thn'],
#c_date = c_date ,
#c_time = c_time,
kd_status = 0))
tm_awal = datetime.now()
row_result = None
sql_result = """
SELECT * FROM v_jupntepap
WHERE npwpd= '{npwpd}' and m_pjk_bln= '{m_pjk_bln}'
......@@ -179,59 +208,19 @@ def save(request, values, row=None):
npwpd = values['npwpd'],
m_pjk_bln = values['m_pjk_bln'],
m_pjk_thn = values['m_pjk_thn'],
#c_date = c_date ,
#c_time = c_time,
kd_status = 0)
trx_timeout = 10
delay_after_insert = 1
awal = time()
p = None
msg = None
while time() - awal < trx_timeout:
sleep(delay_after_insert)
try:
p = engInformix.fetchone(sql_result)
except informixdb.OperationalError, msg:
msg = msg
break
except informixdb.ProgrammingError, msg:
msg = msg
break
if p:
break
print p
print '--------------------------------------',msg
rowd = Pap()
rowd.kd_status = p.kd_status
rowd.kd_bayar = p.kd_bayar
rowd.npwpd = p.npwpd
rowd.nm_perus = p.nm_perus
rowd.al_perus = p.al_perus
rowd.vol_air = p.vol_air
rowd.npa = p.npa
rowd.bea_pok_pjk = p.bea_pok_pjk
rowd.bea_den_pjk = p.bea_den_pjk
rowd.m_pjk_bln = p.m_pjk_bln
rowd.m_pjk_thn = p.m_pjk_thn
rowd.tgl_tetap = p.tgl_tetap
rowd.tgl_jt_tempo = p.tgl_jt_tempo
rowd.keterangan = p.keterangan
DBSession.add(rowd)
DBSession.flush()
return rowd
#return HTTPFound(location=request.route_url('pap-edit', row=rowd, msg=msg))
kd_status = 2)
p = engInformix.fetchone(sql_result)
print '----------------P Hasil Select----------------------',p
return p
def save_request(values, request, row=None):
if 'id' in request.matchdict:
values['id'] = request.matchdict['id']
row = save(request.user, values, row)
request.session.flash('Tunggu beberapa saat email atau SMS akan segera dikirim.')
values['npwpd'] = values['npwpd']
values['m_pjk_bln'] = values['m_pjk_bln']
values['m_pjk_thn'] = values['m_pjk_thn']
row = save(request, values, row)
return row
def route_list(request):
return HTTPFound(location=request.route_url('pap-add'))
......@@ -241,12 +230,12 @@ def session_failed(request, session_name):
return r
@view_config(route_name='pap', renderer='templates/pap/add.pt',
permission='view')
)#permission='view')
@view_config(route_name='pap-add', renderer='templates/pap/add.pt',
permission='view')
)#permission='view')
def view_add(request):
req = request
found = 0
settings = get_settings()
print 'X--------_______SETTING INFORMIX______--------X',settings
private_key = settings['recaptcha.private_key']
......@@ -266,54 +255,122 @@ def view_add(request):
)
if not response.is_valid:
req.session.flash(response.error_code,'error')
return dict(form=form, private_key=private_key)
return dict(form=form, private_key=private_key, found=found)
except ValidationFailure, e:
return dict(form=form, private_key=private_key)
return dict(form=form, private_key=private_key, found=found)
row = save_request(dict(controls), request)
print'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr',row
return HTTPFound(location=request.route_url('pap-edit',id=row.id))
if not row:
request.session.flash('Data PAP tidak ditemukan', 'error')
return route_list(request)
else:
request.session.flash('Data PAP ditemukan.')
found = 1
print '----------------Row Hasil Select--------------------',row
return HTTPFound(location=request.route_url('pap-edit',nr=row.npwpd,
nk=row.m_pjk_bln,
em=row.m_pjk_thn))
return route_list(request)
elif SESS_ADD_FAILED in request.session:
return session_failed(request, SESS_ADD_FAILED)
return dict(form=form, private_key=private_key)
########
# Edit #
########
return dict(form=form, private_key=private_key, found=found)
def query_id(request):
return DBSession.query(Pap).filter(Pap.id==request.matchdict['id'])
engInformix = EngInformix()
@view_config(route_name='pap-edit', renderer='templates/pap/add.pt',
permission='view')
sql_result1 = """
SELECT * FROM v_jupntepap
WHERE npwpd= '{npwpd}' and m_pjk_bln= '{m_pjk_bln}'
and m_pjk_thn = '{m_pjk_thn}' and kd_status='{kd_status}'
""".format(
npwpd = request.matchdict['nr'],
m_pjk_bln = request.matchdict['nk'],
m_pjk_thn = request.matchdict['em'],
kd_status = 2)
x = engInformix.fetchone(sql_result1)
print '----------------X Hasil Select----------------------',x
return x
@view_config(route_name='pap-edit', renderer='templates/pap/edit.pt',
)#permission='view')
def view_edit(request):
row = query_id(request).first()
print '----------------------------X----------------------------', row
form = get_form(request, EditSchema)
req = request
found = 0
row = query_id(request)
print '----------------Row Hasil Params--------------------',row
settings = get_settings()
print 'X--------_______SETTING INFORMIX______--------X',settings
private_key = settings['recaptcha.private_key']
data_key = settings['recaptcha.private_key']
form = get_form(request, AddSchema)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
print '------X------', controls
try:
c = form.validate(controls)
if private_key:
response = captcha_submit(
data_key,
req.params['g-recaptcha-response'],
private_key, None
)
if not response.is_valid:
req.session.flash(response.error_code,'error')
return dict(form=form, private_key=private_key, found=found)
except ValidationFailure, e:
return dict(form=form, private_key=private_key, found=found)
row = save_request(dict(controls), request)
if not row:
request.session.flash('Data PAP tidak ditemukan', 'error')
return route_list(request)
else:
request.session.flash('Data PAP ditemukan.')
found = 1
print '----------------Row Hasil Select--------------------',row
return HTTPFound(location=request.route_url('pap-edit',nr=row.npwpd,
nk=row.m_pjk_bln,
em=row.m_pjk_thn))
return route_list(request)
elif SESS_EDIT_FAILED in request.session:
return session_failed(request, SESS_EDIT_FAILED)
values = row.to_dict()
values = {}
values['kd_status'] = row.kd_status
values['kd_bayar'] = row.kd_bayar
values['npwpd1'] = row.npwpd
values['nm_perus'] = row.nm_perus
values['al_perus'] = row.al_perus
values['vol_air'] = row.vol_air
values['npa'] = row.npa
values['bea_pok_pjk'] = row.bea_pok_pjk
values['bea_den_pjk'] = row.bea_den_pjk
values['m_pjk_bln1'] = row.m_pjk_bln
values['m_pjk_thn1'] = row.m_pjk_thn
values['tgl_tetap'] = row.tgl_tetap
values['tgl_jt_tempo'] = row.tgl_jt_tempo
values['keterangan'] = row.keterangan
values['keterangan'] = row.keterangan
## Untuk yang tipe Integer ##
if row.vol_air == None:
values['vol_air'] = 0
else:
values['vol_air'] = row.vol_air
if row.npa == None:
values['npa'] = 0
else:
values['npa'] = row.npa
if row.bea_pok_pjk == None:
values['bea_pok_pjk'] = 0
else:
values['bea_pok_pjk'] = row.bea_pok_pjk
if row.bea_den_pjk == None:
values['bea_den_pjk'] = 0
else:
values['bea_den_pjk'] = row.bea_den_pjk
form.set_appstruct(values)
return dict(form=form)
\ No newline at end of file
return dict(form=form, private_key=private_key, found=found)
\ No newline at end of file
......@@ -8,7 +8,7 @@ from pyramid.view import (view_config,)
from pyramid.httpexceptions import (HTTPFound,)
from deform import (Form, widget, ValidationFailure,)
from datatables import (ColumnDT, DataTables)
from ..tools import (email_validator, BULANS, captcha_submit, get_settings)
from ..tools import (email_validator,BULANS, captcha_submit, get_settings)
from ..models import (DBSession)
from ..models.isipkd import (Pkb)
from ..models.informix import EngInformix
......@@ -211,17 +211,30 @@ class AddSchema(colander.Schema):
title = 'NTP',
oid="kd_trn_dpd"
)
class EditSchema(AddSchema):
id = colander.SchemaNode(
colander.Integer(),
oid="id")
nr = colander.SchemaNode(
colander.String(),
oid="nr"
)
nk = colander.SchemaNode(
colander.String(),
oid="nk"
)
em = colander.SchemaNode(
colander.String(),
oid="em"
)
nh = colander.SchemaNode(
colander.String(),
oid="nh"
)
def get_form(request, class_form):
schema = class_form(validator=form_validator)
schema.request = request
return Form(schema, buttons=('simpan','batal'))
def save(request, values, row=None):
engInformix = EngInformix()
......@@ -283,54 +296,16 @@ def save(request, values, row=None):
if p:
break
print p
print '--------------------------------------',msg
rowd = Pkb()
rowd.kd_status = p.kd_status
rowd.flag_sms = p.flag_sms
rowd.no_rangka = p.no_rangka
rowd.no_ktp = p.no_ktp
rowd.email = p.email
rowd.no_hp = p.no_hp
rowd.tg_pros_daftar = p.tg_pros_daftar
rowd.jam_daftar = p.jam_daftar
rowd.ket = p.ket
rowd.kd_bayar = p.kd_bayar
rowd.kd_wil = p.kd_wil
rowd.kd_wil_proses = p.kd_wil_proses
rowd.nm_pemilik = p.nm_pemilik
rowd.no_polisi = p.no_polisi
rowd.warna_tnkb = p.warna_tnkb
rowd.milik_ke = p.milik_ke
rowd.nm_merek_kb = p.nm_merek_kb
rowd.nm_model_kb = p.nm_model_kb
rowd.th_buatan = p.th_buatan
rowd.tg_akhir_pjklm = p.tg_akhir_pjklm
rowd.tg_akhir_pjkbr = p.tg_akhir_pjkbr
rowd.bbn_pok = p.bbn_pok
rowd.bbn_den = p.bbn_den
rowd.pkb_pok = p.pkb_pok
rowd.pkb_den = p.pkb_den
rowd.swd_pok = p.swd_pok
rowd.swd_den = p.swd_den
rowd.adm_stnk = p.adm_stnk
rowd.adm_tnkb = p.adm_tnkb
rowd.jumlah = p.jumlah
rowd.tg_bayar_bank = p.tg_bayar_bank
rowd.jam_bayar_bank = p.jam_bayar_bank
rowd.kd_trn_bank = p.kd_trn_bank
rowd.kd_trn_dpd = p.kd_trn_dpd
rowd.ivr = p.ivr
DBSession.add(rowd)
DBSession.flush()
return rowd
#return HTTPFound(location=request.route_url('pkb-edit', row=rowd, msg=msg))
print '--------------------Message-------------------------',msg
print '----------------P Hasil Select----------------------',p
return p
#return HTTPFound(location=request.route_url('pkb-edit', rowd=p, msg=msg))
def save_request(values, request, row=None):
if 'id' in request.matchdict:
values['id'] = request.matchdict['id']
#values["amount"]=values["amount"].replace('.','')
values['no_rangka'] = values['no_rangka']
values['no_ktp'] = values['no_ktp']
values['email'] = values['email']
values['no_hp'] = values['no_hp']
row = save(request, values, row)
request.session.flash('PKB sudah disimpan.')
return row
......@@ -344,17 +319,17 @@ def session_failed(request, session_name):
return r
@view_config(route_name='pkb', renderer='templates/pkb/add.pt',
permission='view')
)#permission='view')
@view_config(route_name='pkb-add', renderer='templates/pkb/add.pt',
permission='view')
)#permission='view')
def view_add(request):
req = request
found = 0
settings = get_settings()
print 'X--------_______SETTING INFORMIX______--------X',settings
print 'X--------_______Setting Informix______--------X',settings
private_key = settings['recaptcha.private_key']
data_key = settings['recaptcha.private_key']
form = get_form(request, AddSchema)
if request.POST:
if 'simpan' in request.POST:
......@@ -369,38 +344,84 @@ def view_add(request):
)
if not response.is_valid:
req.session.flash(response.error_code,'error')
return dict(form=form, private_key=private_key)
return dict(form=form, private_key=private_key, found=found)
except ValidationFailure, e:
return dict(form=form, private_key=private_key)
return dict(form=form, private_key=private_key, found=found)
row = save_request(dict(controls), request)
print'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr',row
return HTTPFound(location=request.route_url('pkb-edit',id=row.id))
found = 1
print '----------------Row Hasil Select--------------------',row
return HTTPFound(location=request.route_url('pkb-edit',nr=row.no_rangka,
nk=row.no_ktp,
em=row.email,
nh=row.no_hp))
return route_list(request)
elif SESS_ADD_FAILED in request.session:
return session_failed(request, SESS_ADD_FAILED)
return dict(form=form, private_key=private_key)
return dict(form=form, private_key=private_key, found=found)
########
# Edit #
########
def query_id(request):
return DBSession.query(Pkb).filter(Pkb.id==request.matchdict['id'])
engInformix = EngInformix()
sql_result1 = """
SELECT * FROM v_daftsms
WHERE no_rangka= '{no_rangka}' and no_ktp= '{no_ktp}'
and email = '{email}' and no_hp='{no_hp}' and ivr= '{ivr}'
and kd_status='{kd_status}'
""".format(
no_rangka = request.matchdict['nr'],
no_ktp = request.matchdict['nk'],
email = request.matchdict['em'],
no_hp = request.matchdict['nh'],
ivr = '11',
kd_status = 0)
x = engInformix.fetchone(sql_result1)
print '----------------Row Hasil X-------------------------',x
return x
@view_config(route_name='pkb-edit', renderer='templates/pkb/add.pt',
permission='view')
@view_config(route_name='pkb-edit', renderer='templates/pkb/edit.pt',
)#permission='view')
def view_edit(request):
row = query_id(request).first()
print '----------------------------X----------------------------', row
form = get_form(request, EditSchema)
req = request
found = 0
row = query_id(request)
print '----------------Row Hasil Params--------------------',row
settings = get_settings()
print 'X--------_______Setting Informix______--------X',settings
private_key = settings['recaptcha.private_key']
data_key = settings['recaptcha.private_key']
form = get_form(request, AddSchema)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
print '------X------', controls
try:
c = form.validate(controls)
if private_key:
response = captcha_submit(
data_key,
req.params['g-recaptcha-response'],
private_key, None
)
if not response.is_valid:
req.session.flash(response.error_code,'error')
return dict(form=form, private_key=private_key, found=found)
except ValidationFailure, e:
return dict(form=form, private_key=private_key, found=found)
row = save_request(dict(controls), request)
found = 1
print '----------------Row Hasil Select--------------------',row
return HTTPFound(location=request.route_url('pkb-edit',nr=row.no_rangka,
nk=row.no_ktp,
em=row.email,
nh=row.no_hp))
return route_list(request)
elif SESS_EDIT_FAILED in request.session:
return session_failed(request, SESS_EDIT_FAILED)
values = row.to_dict()
values = {}
values['kd_status'] = row.kd_status
values['flag_sms'] = row.flag_sms
values['no_rangka1'] = row.no_rangka
......@@ -420,20 +441,57 @@ def view_edit(request):
values['th_buatan'] = row.th_buatan
values['tg_akhir_pjklm'] = row.tg_akhir_pjklm
values['tg_akhir_pjkbr'] = row.tg_akhir_pjkbr
values['bbn_pok'] = row.bbn_pok
values['bbn_den'] = row.bbn_den
values['pkb_pok'] = row.pkb_pok
values['pkb_den'] = row.pkb_den
values['swd_pok'] = row.swd_pok
values['swd_den'] = row.swd_den
values['adm_stnk'] = row.adm_stnk
values['adm_tnkb'] = row.adm_tnkb
values['jumlah'] = row.jumlah
values['tg_bayar_bank'] = row.tg_bayar_bank
values['jam_bayar_bank'] = row.jam_bayar_bank
values['kd_trn_bank'] = row.kd_trn_bank
values['kd_trn_dpd'] = row.kd_trn_dpd
values['ivr'] = row.ivr
values['ivr'] = row.ivr
## Untuk yang tipe Integer ##
if row.bbn_pok == None:
values['bbn_pok'] = 0
else:
values['bbn_pok'] = row.bbn_pok
if row.bbn_den == None:
values['bbn_den'] = 0
else:
values['bbn_den'] = row.bbn_den
if row.pkb_pok == None:
values['pkb_pok'] = 0
else:
values['pkb_pok'] = row.pkb_pok
if row.pkb_den == None:
values['pkb_den'] = 0
else:
values['pkb_den'] = row.pkb_den
if row.swd_pok == None:
values['swd_pok'] = 0
else:
values['swd_pok'] = row.swd_pok
if row.swd_den == None:
values['swd_den'] = 0
else:
values['swd_den'] = row.swd_den
if row.adm_stnk == None:
values['adm_stnk'] = 0
else:
values['adm_stnk'] = row.adm_stnk
if row.adm_tnkb == None:
values['adm_tnkb'] = 0
else:
values['adm_tnkb'] = row.adm_tnkb
if row.jumlah == None:
values['jumlah'] = 0
else:
values['jumlah'] = row.jumlah
form.set_appstruct(values)
return dict(form=form)
return dict(form=form, private_key=private_key, found=found)
......@@ -7,6 +7,7 @@ from pyramid.httpexceptions import (
HTTPFound,
)
import colander
import re
from deform import (
Form,
widget,
......@@ -15,6 +16,7 @@ from deform import (
from ..models import DBSession
from ..models.isipkd import(
Unit,
UserUnit,
)
from datatables import (
......@@ -244,4 +246,27 @@ def view_act(request):
d['value'] = k[1]
d['nama'] = k[1]
r.append(d)
return r
return r
elif url_dict['act']=='hon_reg':
term = 'term' in params and params['term'] or ''
user_id = 'user_id' in params and params['user_id'] or 0
print '---------------User---------------',user_id
x = DBSession.query(UserUnit.unit_id).filter(UserUnit.user_id==user_id).first()
y = '%s' % x
z = int(y)
print '---------------Unit_id---------------',z
rows = DBSession.query(Unit.id, Unit.nama
).filter( Unit.id==z,
Unit.nama.ilike('%%%s%%' % term)).all()
r = []
for k in rows:
d={}
d['id'] = k[0]
d['value'] = k[1]
d['nama'] = k[1]
r.append(d)
print '---------------Unit---------------',r
return r
......@@ -14,38 +14,41 @@
${structure:field.serialize()}
</div>
</div>
<!--objek_pajak_id ------------------------------->
<div tal:define="field form['objek_pajak_id']">
${structure:field.serialize()}
</div>
<!--subjek_pajak_id ------------------------------->
<div tal:define="field form['subjek_pajak_id']">
${structure:field.serialize()}
</div>
<div tal:define="field form['subjek_pajak_us']">
${structure:field.serialize()}
</div>
<!--unit_id ------------------------------->
<div tal:define="field form['unit_id']">
${structure:field.serialize()}
</div>
<!--objek_pajak_id ------------------------------->
<div tal:define="field form['objek_pajak_id']">
${structure:field.serialize()}
</div>
<div class="col-md-6">
<!--unit_nm ------------------------------->
<div class="form-group" tal:define="field form['unit_nm']" id="item-${field.oid}">
<!--subjek_pajak_nm ------------------------------->
<div class="form-group" tal:define="field form['subjek_pajak_nm']" 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" tal:define="field form['unit_nm']" >
<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>
<!--subjek_pajak_nm ------------------------------->
<div class="form-group" tal:define="field form['subjek_pajak_nm']" id="item-${field.oid}">
<!--unit_nm ------------------------------->
<div class="form-group" tal:define="field form['unit_nm']" 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">
<div class="col-md-9" tal:define="field form['unit_nm']" >
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
......@@ -71,6 +74,9 @@
tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
......@@ -140,6 +146,9 @@
tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-8">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
*</p>
......@@ -152,6 +161,9 @@
tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
......@@ -190,9 +202,13 @@
tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p> </div>
</div>
</div>
</div>
......@@ -217,14 +233,108 @@
$("#unit_nm").attr("readonly",${has_permission(request,'arinvoice-edt-unit') and 'false' or 'true'})
$("#subjek_pajak_id").attr("readonly",${has_permission(request,'arinvoice-edt-subjek') and 'false' or 'true'})
$("#subjek_pajak_nm").attr("readonly",${has_permission(request,'arinvoice-edt-subjek') and 'false' or 'true'})
$('#objek_pajak_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#objek_pajak_id').val(datum.id);
$('#subjek_pajak_id').val(datum.sp_id);
$('#subjek_pajak_nm').val(datum.sp_nm);
$('#unit_id').val(datum.unit_id);
$('#unit_nm').val(datum.unit_nm);
});
$("#subjek_pajak_us").attr("readonly",${has_permission(request,'arinvoice-edt-subjek') and 'false' or 'true'})
$('#subjek_pajak_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#subjek_pajak_id').val(datum.id);
$('#subjek_pajak_us').val(datum.user);
//Untuk headof Objek
$('#objek_pajak_nm').typeahead({
"hint" : true,
"highlight": true,
"minLength": 1,
"remote" : "/op/hon/act?subjek_pajak_id="+$("#subjek_pajak_id").val()+"&term=%QUERY",
},{
"name" : 'objek_pajak_nm',
"displayKey": 'value',
});
$('#objek_pajak_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#objek_pajak_id').val(datum.id);
$('#tarif').val(datum.tarif);
});
//Untuk headof OPD
$('#unit_nm').typeahead({
"hint" : true,
"highlight": true,
"minLength": 1,
"remote" : "/skpd/hon_reg/act?user_id="+$("#subjek_pajak_us").val()+"&term=%QUERY",
},{
"name" : 'unit_nm',
"displayKey": 'value',
});
$('#unit_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#unit_id').val(datum.id);
});
});
$('#dasar').keyup(function(){
var dasar = this.value.length;
if(dasar > 0){
//alert(dasar);
var _dasar = $('#dasar').val();
var _dasarr = parseFloat(_dasar.replace(/[^0-9-.]/g,''));
var _tarif = $('#tarif').val();
var _denda = $('#denda').val();
var _bunga = $('#bunga').val();
var _pokok;
_pokok = (_dasarr * _tarif / 100)
$('#pokok').val(_pokok);
var _dendaa = parseFloat(_denda.replace(/[^0-9-.]/g,''));
var _bungaa = parseFloat(_bunga.replace(/[^0-9-.]/g,''));
var x;
x = _dendaa + _bungaa
var _jumlah;
_jumlah = _pokok + x
$('#jumlah').val(_jumlah);
}
});
$('#denda').keyup(function(){
var denda = this.value.length;
if(denda > 0){
//alert(denda);
var _denda = $('#denda').val();
var _dendaa = parseFloat(_denda.replace(/[^0-9-.]/g,''));
var _pokok = $('#pokok').val();
var _pokon = parseInt(_pokok);
var _bunga = $('#bunga').val();
var _bungaa = parseFloat(_bunga.replace(/[^0-9-.]/g,''));
var _bungab = parseInt(_bungaa);
var x;
x = _dendaa + _pokon
var _jumlah;
_jumlah = _bungab + x
$('#jumlah').val(_jumlah);
}
});
$('#bunga').keyup(function(){
var bunga = this.value.length;
if(bunga > 0){
//alert(bunga);
var _bunga = $('#bunga').val();
var _bungaa = parseFloat(_bunga.replace(/[^0-9-.]/g,''));
var _pokok = $('#pokok').val();
var _pokon = parseInt(_pokok);
var _denda = $('#denda').val();
var _dendaa = parseFloat(_denda.replace(/[^0-9-.]/g,''));
var _dendab = parseInt(_dendaa);
var x;
x = _dendab + _bungaa + _pokon
var _jumlah;
_jumlah = x
$('#jumlah').val(_jumlah);
}
});
</script>
</fieldset>
</form>
......
......@@ -18,34 +18,26 @@
<div tal:define="field form['objek_pajak_id']">
${structure:field.serialize()}
</div>
<!--subjek_pajak_id ------------------------------->
<div tal:define="field form['subjek_pajak_id']">
${structure:field.serialize()}
</div>
<!--unit_id ------------------------------->
<div tal:define="field form['unit_id']">
${structure:field.serialize()}
</div>
<div class="col-md-6">
<!--unit_nm ------------------------------->
<div class="form-group" tal:define="field form['unit_nm']" id="item-${field.oid}">
<!--subjek_pajak_id ------------------------------->
<div class="form-group" tal:define="field form['subjek_pajak_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" tal:define="field form['unit_nm']" >
<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>
<!--subjek_pajak_nm ------------------------------->
<div class="form-group" tal:define="field form['subjek_pajak_nm']" id="item-${field.oid}">
<!--unit_id ------------------------------->
<div class="form-group" tal:define="field form['unit_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">
<div class="col-md-9" tal:define="field form['unit_id']" >
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
......@@ -71,6 +63,9 @@
tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
......@@ -140,6 +135,9 @@
tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-8">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
*</p>
......@@ -152,6 +150,9 @@
tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
......@@ -190,6 +191,9 @@
tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p> </div>
......@@ -217,14 +221,34 @@
$("#unit_nm").attr("readonly",${has_permission(request,'arinvoice-edt-unit') and 'false' or 'true'})
$("#subjek_pajak_id").attr("readonly",${has_permission(request,'arinvoice-edt-subjek') and 'false' or 'true'})
$("#subjek_pajak_nm").attr("readonly",${has_permission(request,'arinvoice-edt-subjek') and 'false' or 'true'})
/***
$('#objek_pajak_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#objek_pajak_id').val(datum.id);
$('#subjek_pajak_id').val(datum.sp_id);
/**$('#subjek_pajak_id').val(datum.sp_id);
$('#subjek_pajak_nm').val(datum.sp_nm);
$('#unit_id').val(datum.unit_id);
$('#unit_nm').val(datum.unit_nm);
});
});*/
$('#subjek_pajak_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#subjek_pajak_id').val(datum.id);
$('#objek_pajak_nm').typeahead({
"hint" : true,
"highlight": true,
"minLength": 1,
"remote" : "/op/hon/act?subjek_pajak_id="+$("#subjek_pajak_id").val()+"&term=%QUERY",
},{
"name" : 'objek_pajak_nm',
"displayKey": 'value',
});
$('#objek_pajak_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#objek_pajak_id').val(datum.id);
$('#tarif').val(datum.tarif);
});
});
</script>
</fieldset>
</form>
......
......@@ -19,7 +19,7 @@
<tr>
<th>ID</th>
<th>Kode</th>
<th>Subjek</th>
<th>Penyetor</th>
<th>Objek</th>
<th>Uraian</th>
<th>Rekening</th>
......
......@@ -51,7 +51,7 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown">e-Payment<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/arinvoice">No. Bayar</a></li>
<li><a href="/wp">Subjek</a></li>
<li><a href="/wp">Penyetor</a></li>
<li><a href="/op">Objek</a></li>
</ul>
</li>
......@@ -73,6 +73,7 @@
<li><a href="/usergroup">User-Group</a></li>
<li><a href="/groupperm">Group Permission</a></li>
<li><a href="/skpd">Unit Kerja/OPD</a></li>
<li><a href="/user-unit">User-OPD</a></li>
<li><a href="/jabatan">Jabatan</a></li>
<li><a href="/pegawai">Pegawai</a></li>
<li><a href="/rekening">Kode Rekening</a></li>
......
......@@ -59,9 +59,6 @@
</div>
<!--kode ------------------------------->
<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}">
${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"
......@@ -71,9 +68,6 @@
</div>
<!--nama ------------------------------->
<div class="form-group" tal:define="field form['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"
......
......@@ -71,9 +71,6 @@
</div>
<!--nama ------------------------------->
<div class="form-group" tal:define="field form['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"
......@@ -83,9 +80,6 @@
</div>
<!--status ------------------------------->
<div class="form-group" tal:define="field form['status']" 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"
......
......@@ -16,7 +16,7 @@
<thead>
<tr>
<th>ID</th>
<th>Kode Subjek</th>
<th>Kode Penyetor</th>
<th>Kode Objek</th>
<th>Uraian</th>
<th>Rekening</th>
......
......@@ -16,12 +16,26 @@
<div class="col-md-13">
<!--npwpd ------------------------------->
<div class="form-group" tal:define="field form['npwpd']" id="item-${field.oid}">
<div class="form-group" tal:define="field form['npwpd']" id="item-${field.oid}" onkeyup="npwpd(this);">
<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-8">
<div class="col-md-9">
${structure:field.serialize()}
<script>
$(document).ready(function () {
//Membatasi 14 Digit & Membatasi Huruf
$('#npwpd').keyup(function(){
var npwpd = this.value.length;
if(!/^[0-9]+$/.test(this.value)){
this.value=this.value.substring(0,npwpd - 1);
}
else if (npwpd >= 14){
this.value=this.value.substring(0,14);
}
});
});
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
......@@ -30,25 +44,40 @@
<!--Bulan dan Tahun ------------------------------->
<div class="form-group">
<label class="control-label col-md-3">Periode :<span class="text text-danger">&nbsp*</span></label>
<div class="col-md-4" tal:define="field form['m_pjk_bln']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">${field.title}</label>
<div class="col-md-7">
<!--Bulan ------------------------------->
<label class="control-label col-md-3">
Periode <span class="text text-danger">&nbsp*</span></label>
<label for="m_pjk_bln1" class="control-label col-md-1" id="req-m_pjk_bln1">
Bulan </label>
<div class="col-md-3" tal:define="field form['m_pjk_bln']" id="item-${field.oid}">
${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 class="col-md-4" tal:define="field form['m_pjk_thn']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">${field.title}</label>
<div class="col-md-9">
${structure:field.serialize()}
${error}</p>
</div>
<!--Tahun ------------------------------->
<label for="m_pjk_thn" class="control-label col-md-2" id="req-m_pjk_thn">
Tahun </label>
<div class="col-md-3" tal:define="field form['m_pjk_thn']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$(document).ready(function () {
//Membatasi 4 Digit & Membatasi Huruf
$('#m_pjk_thn').keyup(function(){
var m_pjk_thn = this.value.length;
if(!/^[0-9]+$/.test(this.value)){
this.value=this.value.substring(0,m_pjk_thn - 1);
}
else if (m_pjk_thn >= 4){
this.value=this.value.substring(0,4);
}
});
});
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
${error}</p>
</div>
</div>
<!--g-recaptcha ------------------------------->
<!--div class="form-group">
......@@ -67,209 +96,10 @@
value="cancel">Batal</button>
</div>
</div><hr>
<!--INFORMIX ------------------------------->
<div class="form-group">
<!--kd_bayar ------------------------------->
<label for="kd_bayar" class="control-label col-md-3" id="req-kd_bayar">
Kode Bayar </label>
<div class="col-md-4" tal:define="field form['kd_bayar']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--kd_status ------------------------------->
<label for="kd_status" class="control-label col-md-2" id="req-kd_status">
Status.Bayar </label>
<div class="col-md-3" tal:define="field form['kd_status']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--npwpd1 ------------------------------->
<label for="npwpd1" class="control-label col-md-3" id="req-npwpd1">
NPWPD </label>
<div class="col-md-9" tal:define="field form['npwpd1']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--nm_perus ------------------------------->
<label for="nm_perus" class="control-label col-md-3" id="req-nm_perus">
Nama </label>
<div class="col-md-9" tal:define="field form['nm_perus']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--al_perus ------------------------------->
<label for="al_perus" class="control-label col-md-3" id="req-al_perus">
Alamat </label>
<div class="col-md-9" tal:define="field form['al_perus']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--Volume/NPS ------------------------------->
<label for="vol_air" class="control-label col-md-3" id="req-vol_air">
Volume </label>
<div class="col-md-3" tal:define="field form['vol_air']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--npa ------------------------------->
<label for="npa" class="control-label col-md-3" id="req-npa">
NPS </label>
<div class="col-md-3" tal:define="field form['npa']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--bea_pok_pjk ------------------------------->
<label for="bea_pok_pjk" class="control-label col-md-3" id="req-bea_pok_pjk">
Bea Pokok Pjk </label>
<div class="col-md-3" tal:define="field form['bea_pok_pjk']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--bea_den_pjk ------------------------------->
<label for="bea_den_pjk" class="control-label col-md-3" id="req-bea_den_pjk">
Bea Denda Pjk </label>
<div class="col-md-3" tal:define="field form['bea_den_pjk']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--Periode ------------------------------->
<label class="control-label col-md-3">
Periode </label>
<label for="m_pjk_bln1" class="control-label col-md-1" id="req-m_pjk_bln1">
Bulan </label>
<div class="col-md-2" tal:define="field form['m_pjk_bln1']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--Bea Denda Pjk ------------------------------->
<label for="m_pjk_thn1" class="control-label col-md-3" id="req-m_pjk_thn1">
Tahun </label>
<div class="col-md-3" tal:define="field form['m_pjk_thn1']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--tgl_tetap ------------------------------->
<label for="tgl_tetap" class="control-label col-md-3" id="req-tgl_tetap">
Tgl Penetapan </label>
<div class="col-md-3" tal:define="field form['tgl_tetap']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<label for="tgl_jt_tempo" class="control-label col-md-3" id="req-tgl_jt_tempo">
Tgl Jth Tempo </label>
<div class="col-md-3" tal:define="field form['tgl_jt_tempo']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--keterangan ------------------------------->
<label for="keterangan" class="control-label col-md-3" id="req-keterangan">
Keterangan </label>
<div class="col-md-9" tal:define="field form['keterangan']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</div>
</fieldset>
</form>
<div tal:content="structure form"/>
</form>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h1>Edit PAP</h1>
<div metal:fill-slot="content" class="form-550">
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<h4>Registrasi e-PAP</h4>
<hr>
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal">
<fieldset class="deformFormFieldset">
<input type="hidden" name="_charset_" />
<input type="hidden" name="__formid__" value="deform"/>
<div tal:condition="'id' in form">
<div tal:define="field form['id']" style="display: none;">
{structure:field.serialize()}
</div>
</div>
<div class="col-md-13">
<!--npwpd ------------------------------->
<div class="form-group" tal:define="field form['npwpd']" id="item-${field.oid}" onkeyup="npwpd(this);">
<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()}
<script>
$(document).ready(function () {
//Membatasi 14 Digit & Membatasi Huruf
$('#npwpd').keyup(function(){
var npwpd = this.value.length;
if(!/^[0-9]+$/.test(this.value)){
this.value=this.value.substring(0,npwpd - 1);
}
else if (npwpd >= 14){
this.value=this.value.substring(0,14);
}
});
});
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<!--Bulan dan Tahun ------------------------------->
<div class="form-group">
<!--Bulan ------------------------------->
<label class="control-label col-md-3">
Periode <span class="text text-danger">&nbsp*</span></label>
<label for="m_pjk_bln1" class="control-label col-md-1" id="req-m_pjk_bln1">
Bulan </label>
<div class="col-md-3" tal:define="field form['m_pjk_bln']" id="item-${field.oid}">
${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--Tahun ------------------------------->
<label for="m_pjk_thn" class="control-label col-md-2" id="req-m_pjk_thn">
Tahun </label>
<div class="col-md-3" tal:define="field form['m_pjk_thn']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$(document).ready(function () {
//Membatasi 4 Digit & Membatasi Huruf
$('#m_pjk_thn').keyup(function(){
var m_pjk_thn = this.value.length;
if(!/^[0-9]+$/.test(this.value)){
this.value=this.value.substring(0,m_pjk_thn - 1);
}
else if (m_pjk_thn >= 4){
this.value=this.value.substring(0,4);
}
});
});
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<!--g-recaptcha ------------------------------->
<!--div class="form-group">
<div class="col-md-offset-4">
<div class="g-recaptcha" data-sitekey="6LcGLQATAAAAABtqq0J20BATKsZPGXwBVj6i5zk_"></div>
</div>
</div-->
<!--Button ------------------------------->
<div class="form-group">
<label class="control-label col-md-3">
</label>
<div class="col-md-9">
<button id="deformsave" name="simpan" type="submit" class="btn btn-primary "
value="simpan">Simpan</button>
<button id="deformcancel" name="cancel" type="submit" class="btn btn-default "
value="cancel">Batal</button>
</div>
</div><hr>
<!--INFORMIX ------------------------------->
<div class="form-group">
<!--kd_bayar ------------------------------->
<label for="kd_bayar" class="control-label col-md-3" id="req-kd_bayar">
Kode Bayar </label>
<div class="col-md-4" tal:define="field form['kd_bayar']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--kd_status ------------------------------->
<label for="kd_status" class="control-label col-md-2" id="req-kd_status">
Status.Bayar </label>
<div class="col-md-3" tal:define="field form['kd_status']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--npwpd1 ------------------------------->
<label for="npwpd1" class="control-label col-md-3" id="req-npwpd1">
NPWPD </label>
<div class="col-md-9" tal:define="field form['npwpd1']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--nm_perus ------------------------------->
<label for="nm_perus" class="control-label col-md-3" id="req-nm_perus">
Nama </label>
<div class="col-md-9" tal:define="field form['nm_perus']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--al_perus ------------------------------->
<label for="al_perus" class="control-label col-md-3" id="req-al_perus">
Alamat </label>
<div class="col-md-9" tal:define="field form['al_perus']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--Volume/NPS ------------------------------->
<label for="vol_air" class="control-label col-md-3" id="req-vol_air">
Volume </label>
<div class="col-md-3" tal:define="field form['vol_air']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--npa ------------------------------->
<label for="npa" class="control-label col-md-3" id="req-npa">
NPS </label>
<div class="col-md-3" tal:define="field form['npa']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--bea_pok_pjk ------------------------------->
<label for="bea_pok_pjk" class="control-label col-md-3" id="req-bea_pok_pjk">
Bea Pokok Pjk </label>
<div class="col-md-3" tal:define="field form['bea_pok_pjk']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--bea_den_pjk ------------------------------->
<label for="bea_den_pjk" class="control-label col-md-3" id="req-bea_den_pjk">
Bea Denda Pjk </label>
<div class="col-md-3" tal:define="field form['bea_den_pjk']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--Periode ------------------------------->
<label class="control-label col-md-3">
Periode </label>
<label for="m_pjk_bln1" class="control-label col-md-1" id="req-m_pjk_bln1">
Bulan </label>
<div class="col-md-2" tal:define="field form['m_pjk_bln1']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--Bea Denda Pjk ------------------------------->
<label for="m_pjk_thn1" class="control-label col-md-3" id="req-m_pjk_thn1">
Tahun </label>
<div class="col-md-3" tal:define="field form['m_pjk_thn1']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--tgl_tetap ------------------------------->
<label for="tgl_tetap" class="control-label col-md-3" id="req-tgl_tetap">
Tgl Penetapan </label>
<div class="col-md-3" tal:define="field form['tgl_tetap']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<label for="tgl_jt_tempo" class="control-label col-md-3" id="req-tgl_jt_tempo">
Tgl Jth Tempo </label>
<div class="col-md-3" tal:define="field form['tgl_jt_tempo']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--keterangan ------------------------------->
<label for="keterangan" class="control-label col-md-3" id="req-keterangan">
Keterangan </label>
<div class="col-md-9" tal:define="field form['keterangan']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
</fieldset>
</form>
<div tal:content="structure form"/>
</div>
</html>
......@@ -81,354 +81,6 @@
value="cancel">Batal</button>
</div>
</div><hr>
<!--INFORMIX ------------------------------->
<div class="form-group">
<!--kd_bayar ------------------------------->
<label for="kd_bayar" class="control-label col-md-3" id="req-kd_bayar">
Kode Bayar </label>
<div class="col-md-4" tal:define="field form['kd_bayar']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--tg_bayar_bank ------------------------------->
<label for="tg_bayar_bank" class="control-label col-md-2" id="req-tg_bayar_bank">
Tgl Bayar </label>
<div class="col-md-3" tal:define="field form['tg_bayar_bank']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--no_rangka1 ------------------------------->
<label for="no_rangka1" class="control-label col-md-3" id="req-no_rangka1">
No Rangka </label>
<div class="col-md-4" tal:define="field form['no_rangka1']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--no_polisi ------------------------------->
<label for="no_polisi" class="control-label col-md-2" id="req-no_polisi">
No Polisi </label>
<div class="col-md-3" tal:define="field form['no_polisi']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--no_ktp1 ------------------------------->
<label for="no_ktp1" class="control-label col-md-3" id="req-no_ktp">
No Identitas </label>
<div class="col-md-9" tal:define="field form['no_ktp1']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--ket ------------------------------->
<label for="ket" class="control-label col-md-3" id="req-ket">
Keterangan </label>
<div class="col-md-9" tal:define="field form['ket']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--nm_pemilik ------------------------------->
<label for="nm_pemilik" class="control-label col-md-3" id="req-nm_pemilik">
Nama Pemilik </label>
<div class="col-md-9" tal:define="field form['nm_pemilik']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--warna_tnkb ------------------------------->
<label for="warna_tnkb" class="control-label col-md-3" id="req-warna_tnkb">
Warna TNKB </label>
<div class="col-md-3" tal:define="field form['warna_tnkb']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--nm_merek_kb ------------------------------->
<label for="nm_merek_kb" class="control-label col-md-3" id="req-nm_merek_kb">
Merk Kendaraan </label>
<div class="col-md-3" tal:define="field form['nm_merek_kb']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--nm_model_kb ------------------------------->
<label for="nm_model_kb" class="control-label col-md-3" id="req-nm_model_kb">
Model Kendaraan </label>
<div class="col-md-3" tal:define="field form['nm_model_kb']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--th_buatan ------------------------------->
<label for="th_buatan" class="control-label col-md-3" id="req-th_buatan">
Thn Pembuatan </label>
<div class="col-md-3" tal:define="field form['th_buatan']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--tg_akhir_pjklm ------------------------------->
<label for="tg_akhir_pjklm" class="control-label col-md-3" id="req-tg_akhir_pjklm">
Tgl Pajak Lama </label>
<div class="col-md-3" tal:define="field form['tg_akhir_pjklm']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--tg_akhir_pjkbr ------------------------------->
<label for="tg_akhir_pjkbr" class="control-label col-md-3" id="req-tg_akhir_pjkbr">
Tgl Pajak Baru </label>
<div class="col-md-3" tal:define="field form['tg_akhir_pjkbr']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--bbn_pok ------------------------------->
<label for="bbn_pok" class="control-label col-md-3" id="req-bbn_pok">
Pokok BBN </label>
<div class="col-md-3" tal:define="field form['bbn_pok']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--bbn_den ------------------------------->
<label for="bbn_den" class="control-label col-md-3" id="req-bbn_den">
Denda BBN </label>
<div class="col-md-3" tal:define="field form['bbn_den']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--pkb_pok ------------------------------->
<label for="pkb_pok" class="control-label col-md-3" id="req-pkb_pok">
Pokok PKB </label>
<div class="col-md-3" tal:define="field form['pkb_pok']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--pkb_den ------------------------------->
<label for="pkb_den" class="control-label col-md-3" id="req-pkb_den">
Denda PKB </label>
<div class="col-md-3" tal:define="field form['pkb_den']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--swd_pok ------------------------------->
<label for="swd_pok" class="control-label col-md-3" id="req-swd_pok">
Pokok SWDKLLJ </label>
<div class="col-md-3" tal:define="field form['swd_pok']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--swd_den ------------------------------->
<label for="swd_den" class="control-label col-md-3" id="req-swd_den">
Denda SWDKLLJ </label>
<div class="col-md-3" tal:define="field form['swd_den']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--adm_stnk ------------------------------->
<label for="adm_stnk" class="control-label col-md-3" id="req-adm_stnk">
Adm. STNK </label>
<div class="col-md-3" tal:define="field form['adm_stnk']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--adm_tnkb ------------------------------->
<label for="adm_tnkb" class="control-label col-md-3" id="req-adm_tnkb">
Adm. TNKB </label>
<div class="col-md-3" tal:define="field form['adm_tnkb']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--jumlah ------------------------------->
<label for="jumlah" class="control-label col-md-3" id="req-jumlah">
Jumlah </label>
<div class="col-md-4" tal:define="field form['jumlah']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--kd_status ------------------------------->
<label for="kd_status" class="control-label col-md-2" id="req-kd_status">
Status.Bayar</label>
<div class="col-md-3" tal:define="field form['kd_status']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--kd_trn_bank ------------------------------->
<label for="kd_trn_bank" class="control-label col-md-3" id="req-kd_trn_bank">
NTB </label>
<div class="col-md-9" tal:define="field form['kd_trn_bank']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--kd_trn_dpd ------------------------------->
<label for="kd_trn_dpd" class="control-label col-md-3" id="req-kd_trn_dpd">
NTP </label>
<div class="col-md-9" tal:define="field form['kd_trn_dpd']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
</div>
......
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550">
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<h4>Hasil Registrasi e-Samsat</h4>
<h4>Registrasi e-Samsat</h4>
<!--h4>Registrasi e-PKB</h4-->
<hr>
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal">
......@@ -87,38 +88,70 @@
<!--kd_bayar ------------------------------->
<label for="kd_bayar" class="control-label col-md-3" id="req-kd_bayar">
Kode Bayar </label>
<div class="col-md-4">
<input id="kd_bayar" class=" form-control " readonly type="text" value="" name="kd_bayar">
<div class="col-md-4" tal:define="field form['kd_bayar']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--tg_bayar_bank ------------------------------->
<label for="tg_bayar_bank" class="control-label col-md-2" id="req-tg_bayar_bank">
Tgl Bayar </label>
<div class="col-md-3">
<input id="tg_bayar_bank" class=" form-control " readonly type="text" value="" name="tg_bayar_bank">
<div class="col-md-3" tal:define="field form['tg_bayar_bank']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--no_rangka ------------------------------->
<!--no_rangka1 ------------------------------->
<label for="no_rangka1" class="control-label col-md-3" id="req-no_rangka1">
No Rangka </label>
<div class="col-md-4">
<input id="no_rangka1" class=" form-control " readonly type="text" value="" name="no_rangka1">
<div class="col-md-4" tal:define="field form['no_rangka1']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--no_polisi ------------------------------->
<label for="no_polisi" class="control-label col-md-2" id="req-no_polisi">
No Polisi </label>
<div class="col-md-3">
<input id="no_polisi" class=" form-control " readonly type="text" value="" name="no_polisi">
<div class="col-md-3" tal:define="field form['no_polisi']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
<div class="form-group">
<!--no_ktp ------------------------------->
<label for="no_ktp1" class="control-label col-md-3" id="req-no_ktp1">
<!--no_ktp1 ------------------------------->
<label for="no_ktp1" class="control-label col-md-3" id="req-no_ktp">
No Identitas </label>
<div class="col-md-9">
<input id="no_ktp1" class=" form-control " readonly type="text" value="" name="no_ktp1">
<div class="col-md-9" tal:define="field form['no_ktp1']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -126,8 +159,14 @@
<!--ket ------------------------------->
<label for="ket" class="control-label col-md-3" id="req-ket">
Keterangan </label>
<div class="col-md-9">
<input id="ket" class=" form-control " readonly type="text" value="" name="ket">
<div class="col-md-9" tal:define="field form['ket']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -135,8 +174,14 @@
<!--nm_pemilik ------------------------------->
<label for="nm_pemilik" class="control-label col-md-3" id="req-nm_pemilik">
Nama Pemilik </label>
<div class="col-md-9">
<input id="nm_pemilik" class=" form-control " readonly type="text" value="" name="nm_pemilik">
<div class="col-md-9" tal:define="field form['nm_pemilik']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -144,14 +189,26 @@
<!--warna_tnkb ------------------------------->
<label for="warna_tnkb" class="control-label col-md-3" id="req-warna_tnkb">
Warna TNKB </label>
<div class="col-md-3">
<input id="warna_tnkb" class=" form-control " readonly type="text" value="" name="warna_tnkb">
<div class="col-md-3" tal:define="field form['warna_tnkb']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--nm_merek_kb ------------------------------->
<label for="nm_merek_kb" class="control-label col-md-3" id="req-nm_merek_kb">
Merk Kendaraan </label>
<div class="col-md-3">
<input id="nm_merek_kb" class=" form-control " readonly type="text" value="" name="nm_merek_kb">
<div class="col-md-3" tal:define="field form['nm_merek_kb']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -159,14 +216,26 @@
<!--nm_model_kb ------------------------------->
<label for="nm_model_kb" class="control-label col-md-3" id="req-nm_model_kb">
Model Kendaraan </label>
<div class="col-md-3">
<input id="nm_model_kb" class=" form-control " readonly type="text" value="" name="nm_model_kb">
<div class="col-md-3" tal:define="field form['nm_model_kb']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--th_buatan ------------------------------->
<label for="th_buatan" class="control-label col-md-3" id="req-th_buatan">
Thn Pembuatan </label>
<div class="col-md-3">
<input id="th_buatan" class=" form-control " readonly type="text" value="" name="th_buatan">
<div class="col-md-3" tal:define="field form['th_buatan']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -174,14 +243,26 @@
<!--tg_akhir_pjklm ------------------------------->
<label for="tg_akhir_pjklm" class="control-label col-md-3" id="req-tg_akhir_pjklm">
Tgl Pajak Lama </label>
<div class="col-md-3">
<input id="tg_akhir_pjklm" class=" form-control " readonly type="text" value="" name="tg_akhir_pjklm">
<div class="col-md-3" tal:define="field form['tg_akhir_pjklm']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--tg_akhir_pjkbr ------------------------------->
<label for="tg_akhir_pjkbr" class="control-label col-md-3" id="req-tg_akhir_pjkbr">
Tgl Pajak Baru </label>
<div class="col-md-3">
<input id="tg_akhir_pjkbr" class=" form-control " readonly type="text" value="" name="tg_akhir_pjkbr">
<div class="col-md-3" tal:define="field form['tg_akhir_pjkbr']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -189,14 +270,26 @@
<!--bbn_pok ------------------------------->
<label for="bbn_pok" class="control-label col-md-3" id="req-bbn_pok">
Pokok BBN </label>
<div class="col-md-3">
<input id="bbn_pok" class=" form-control " readonly type="text" value="" name="bbn_pok">
<div class="col-md-3" tal:define="field form['bbn_pok']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--bbn_den ------------------------------->
<label for="bbn_den" class="control-label col-md-3" id="req-bbn_den">
Denda BBN </label>
<div class="col-md-3">
<input id="bbn_den" class=" form-control " readonly type="text" value="" name="bbn_den">
<div class="col-md-3" tal:define="field form['bbn_den']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -204,14 +297,26 @@
<!--pkb_pok ------------------------------->
<label for="pkb_pok" class="control-label col-md-3" id="req-pkb_pok">
Pokok PKB </label>
<div class="col-md-3">
<input id="pkb_pok" class=" form-control " readonly type="text" value="" name="pkb_pok">
<div class="col-md-3" tal:define="field form['pkb_pok']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--pkb_den ------------------------------->
<label for="pkb_den" class="control-label col-md-3" id="req-pkb_den">
Denda PKB </label>
<div class="col-md-3">
<input id="pkb_den" class=" form-control " readonly type="text" value="" name="pkb_den">
<div class="col-md-3" tal:define="field form['pkb_den']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -219,14 +324,26 @@
<!--swd_pok ------------------------------->
<label for="swd_pok" class="control-label col-md-3" id="req-swd_pok">
Pokok SWDKLLJ </label>
<div class="col-md-3">
<input id="swd_pok" class=" form-control " readonly type="text" value="" name="swd_pok">
<div class="col-md-3" tal:define="field form['swd_pok']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--swd_den ------------------------------->
<label for="swd_den" class="control-label col-md-3" id="req-swd_den">
Denda SWDKLLJ </label>
<div class="col-md-3">
<input id="swd_den" class=" form-control " readonly type="text" value="" name="swd_den">
<div class="col-md-3" tal:define="field form['swd_den']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -234,14 +351,26 @@
<!--adm_stnk ------------------------------->
<label for="adm_stnk" class="control-label col-md-3" id="req-adm_stnk">
Adm. STNK </label>
<div class="col-md-3">
<input id="adm_stnk" class=" form-control " readonly type="text" value="" name="adm_stnk">
<div class="col-md-3" tal:define="field form['adm_stnk']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--adm_tnkb ------------------------------->
<label for="adm_tnkb" class="control-label col-md-3" id="req-adm_tnkb">
Adm. TNKB </label>
<div class="col-md-3">
<input id="adm_tnkb" class=" form-control " readonly type="text" value="" name="adm_tnkb">
<div class="col-md-3" tal:define="field form['adm_tnkb']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -249,14 +378,26 @@
<!--jumlah ------------------------------->
<label for="jumlah" class="control-label col-md-3" id="req-jumlah">
Jumlah </label>
<div class="col-md-4">
<input id="jumlah" class=" form-control " readonly type="text" value="" name="jumlah">
<div class="col-md-4" tal:define="field form['jumlah']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
<!--kd_status ------------------------------->
<label for="kd_status" class="control-label col-md-2" id="req-kd_status">
Status.Bayar</label>
<div class="col-md-3">
<input id="kd_status" class=" form-control " readonly type="text" value="" name="kd_status">
<div class="col-md-3" tal:define="field form['kd_status']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -264,8 +405,14 @@
<!--kd_trn_bank ------------------------------->
<label for="kd_trn_bank" class="control-label col-md-3" id="req-kd_trn_bank">
NTB </label>
<div class="col-md-9">
<input id="kd_trn_bank" class=" form-control " readonly type="text" value="" name="kd_trn_bank">
<div class="col-md-9" tal:define="field form['kd_trn_bank']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......@@ -273,8 +420,14 @@
<!--kd_trn_dpd ------------------------------->
<label for="kd_trn_dpd" class="control-label col-md-3" id="req-kd_trn_dpd">
NTP </label>
<div class="col-md-9">
<input id="kd_trn_dpd" class=" form-control " readonly type="text" value="" name="kd_trn_dpd">
<div class="col-md-9" tal:define="field form['kd_trn_dpd']" id="item-${field.oid}">
${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()">
${error}</p>
</div>
</div>
......
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550">
<h4>Tambah User OPD</h4>
<hr>
<!--div tal:content="structure form"/-->
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal">
<fieldset class="deformFormFieldset">
<input type="hidden" name="_charset_" />
<input type="hidden" name="__formid__" value="deform"/>
<div class="form-group">
<div tal:condition="'id' in form">
<div tal:define="field form['id']">
${structure:field.serialize()}
</div>
</div>
<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" tal:define="field form['user_id']" >
${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>
<!--unit_id ------------------------------->
<div class="form-group" tal:define="field form['unit_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" tal:define="field form['unit_id']" >
${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>
<!--Button ------------------------------->
<div class="form-group">
<label class="control-label col-md-3">
</label>
<div class="col-md-9">
<button id="deformsave" name="save" type="submit" class="btn btn-primary "
value="save">Simpan</button>
<button id="deformcancel" name="cancel" type="submit" class="btn btn-default "
value="cancel">Batal</button>
</div>
</div>
</div>
</div>
</fieldset>
</form>
<!--script>
$('#user_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#user_id').val(datum.id);
});
$('#group_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#group_id').val(datum.id);
});
</script-->
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title">Warning</h3>
</div>
<div class="panel-body">
Hapus user ID # ${row.user_id} OPD ID# ${row.unit_id} ?
</div>
</div>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550">
<h3>Edit User OPD</h3>
<hr>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<link href="/static/datatables/extensions/TableTools/css/dataTables.tableTools.min.css" rel="stylesheet">
<link href="/static/datatables/media/css/dataTables.bootstrap.css" rel="stylesheet">
<h4>User OPD</h4>
<hr>
<div class="container">
<!--form class="form-inline" role="form" id="frm_upload" name="frm_upload">
<label for="upload" class="control-label">Upload:</label>
<input type="text" class="form-control" id="upload">
<button type="submit" class="btn btn-default">Upload</button>
</form-->
</div>
<p>
<table id="table1" name="table1" class="table table-bordered table-hover table-condensed" >
<thead>
<tr>
<th>User ID</th>
<th>Unit ID</th>
<th>User</th>
<th>OPD</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script src="/static/datatables/media/js/jquery.dataTables.min.js"></script>
<!--script src="/static/datatables/media/js/jquery.jeditable.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/media/js/dataTables.bootstrap.js"></script>
<script>
var mID, mID2;
var oTable;
var iPos;
var oFormUrl = "/user-unit/";
var oTableUrl = oFormUrl+"grid/act";
$(document).ready(function () {
oTable = $('#table1').dataTable({
"sAjaxSource" : oTableUrl,
"bServerSide" : true,
"bProcessing" : true,
"sDom" : '<"toolbar">lfrtip',
"bScrollCollapse" : true,
"bSort" : false,
"bInfo" : false,
"bFilter" : true,
"bAutoWidth" : false,
"bPaginate" : true,
"sPaginationType" : "full_numbers",
"lengthMenu": [
[10, 25, 50, -1],
[10, 25, 50, "All"]
],
"aoColumnDefs": [
{"bSearchable": false, "bVisible": false, "aTargets": [0,1]}
],
"aoColumns": [
null,
null,
null,
null
],
});
var tb_array = [
'<div class="btn-group pull-left">',
' <button id="btn_tambah" class="btn btn btn-primary pull-left" type="button">Tambah</button>',
' <button id="btn_delete" class="btn btn btn-danger pull-left" type="button">Hapus</button>',
' <button id="btn_close" class="btn btn btn-warning" type="button">Tutup</button>',
' &nbsp;',
'</div>',
];
// Pencarian Kondisi, ketika data yang dicari itu bukan dari data table
$('#table1_filter input').unbind();
$('#table1_filter input').bind('keyup', function(e) {
if(e.keyCode == 13) {
oTable.fnFilter(this.value);
}else{
var existingString = $("#table1_filter input").val();
if (existingString.length > 1) {
var oTableUrl1 = oFormUrl+"grid1/act?cari="+existingString;
oTable.fnReloadAjax(oTableUrl1);
}else{
oTable.fnReloadAjax(oTableUrl);
}
}
});
var tb = tb_array.join(' ');
$("div.toolbar").html(tb);
$('#table1 tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
mID = ''; mID2 = '';
$(this).removeClass('selected');
} else {
iPos = oTable.fnGetPosition(this);
var aData = oTable.fnGetData(iPos);
mID = aData[0];
mID2 = aData[1];
oTable.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
}
});
$('#btn_tambah').click(function () {
window.location = oFormUrl+'add';
});
$('#btn_close').click(function () {
window.location = "/"
});
$('#btn_delete').click(function () {
if (mID) {
var hapus = confirm('Hapus data ini?');
if (hapus == true) {
window.location = oFormUrl+mID+'/'+mID2+'/delete';
};
} else {
alert('Silahkan pilih data yang akan dihapus');
}
});
});
</script>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550">
<h4>Tambah Subjek</h4>
<h4>Tambah Penyetor</h4>
<hr>
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal">
......@@ -129,6 +129,18 @@
${error}</p>
</div>
</div>
<!--email ------------------------------->
<div class="form-group" tal:define="field form['email']" 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>
<!--Button ------------------------------->
<div class="form-group">
<label class="control-label col-md-3">
......
......@@ -6,7 +6,7 @@
<h3 class="panel-title">Warning</h3>
</div>
<div class="panel-body">
Hapus Subjek # ${row.kode} ${row.nama} ?
Hapus Penyetor # ${row.kode} ${row.nama} ?
</div>
</div>
......
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550">
<h4>Edit Subjek</h4>
<h4>Edit Penyetor</h4>
<hr>
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal">
......@@ -129,6 +129,18 @@
${error}</p>
</div>
</div>
<!--email ------------------------------->
<div class="form-group" tal:define="field form['email']" 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>
<!--Button ------------------------------->
<div class="form-group">
<label class="control-label col-md-3">
......@@ -142,6 +154,12 @@
</div>
</div>
</div>
<script>
var email = $('#email').val();
if(email!=''){
$('#email').attr('readonly', true)
}
</script>
</fieldset>
</form>
......
......@@ -2,7 +2,7 @@
<div metal:fill-slot="content">
<link href="/static/datatables/extensions/TableTools/css/dataTables.tableTools.min.css" rel="stylesheet">
<link href="/static/datatables/media/css/dataTables.bootstrap.css" rel="stylesheet">
<h4>Subjek</h4>
<h4>Penyetor</h4>
<hr>
<div class="container">
<!--form class="form-inline" role="form" id="frm_upload" name="frm_upload">
......
from email.utils import parseaddr
from sqlalchemy import not_, or_, func
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..models import (
DBSession,
User,
)
from ..models.isipkd import(
Unit,
UserUnit,
)
from daftar import deferred_user, daftar_user, deferred_unit, daftar_unit, auto_unit_nm, auto_user_nm
from datatables import (
ColumnDT, DataTables)
from esipkd.tools import DefaultTimeZone, _DTstrftime, _DTnumberformat, _DTactive, STATUS
SESS_ADD_FAILED = 'userunit add failed'
SESS_EDIT_FAILED = 'userunit edit failed'
########
# List #
########
@view_config(route_name='user-unit', renderer='templates/userunit/list.pt',
permission='read')
def view_list(request):
rows = DBSession.query(User).filter(User.id > 0).order_by('email')
return dict(rows=rows)
#######
# Add #
#######
def form_validator(form, value):
def err_unit():
raise colander.Invalid(form,
'User Unit sudah ada dalam database')
q = DBSession.query(UserUnit).filter(UserUnit.user_id==value['user_id'],
UserUnit.unit_id==value['unit_id'])
found = q.first()
if found:
err_unit()
class AddSchema(colander.Schema):
user_id = colander.SchemaNode(
colander.Integer(),
widget = deferred_user,
oid="user_id",
title="User")
"""
user_nm = colander.SchemaNode(
colander.String(),
widget = auto_user_nm,
oid = "user_nm",
title="User")
"""
unit_id = colander.SchemaNode(
colander.Integer(),
widget = deferred_unit,
oid="unit_id",
title="OPD")
"""
unit_nm = colander.SchemaNode(
colander.String(),
widget = auto_unit_nm,
oid = 'unit_nm',
title="OPD")
"""
def get_form(request, class_form):
schema = class_form(validator=form_validator)
schema = schema.bind(daftar_user = daftar_user(),
daftar_unit = daftar_unit())
schema.request = request
return Form(schema, buttons=('save','cancel'))
def save(values, userunit, row=None):
user = DBSession.query(User).filter_by(id=values['user_id']).first()
unit = DBSession.query(Unit).filter_by(id=values['unit_id']).first()
userunit = UserUnit.set_one(None, user, unit)
query_unit_member(values)
return user
def query_unit_member(values):
row_unit = DBSession.query(Unit).filter_by(id=values['unit_id']).first()
row_unit.member_count = DBSession.query(
func.count(UserUnit.user_id).label('c')).filter(
UserUnit.unit_id==values['unit_id']).first().c
DBSession.add(row_unit)
def save_request(values, request, row=None):
row = save(values, request.user, row)
request.session.flash('User OPD sudah disimpan.')
def route_list(request):
return HTTPFound(location=request.route_url('user-unit'))
def session_failed(request, session_name):
r = dict(form=request.session[session_name])
del request.session[session_name]
return r
@view_config(route_name='user-unit-add', renderer='templates/userunit/add.pt',
permission='add')
def view_add(request):
form = get_form(request, AddSchema)
if request.POST:
if 'save' in request.POST:
controls = request.POST.items()
#controls['email'] = controls['email'] or controls['userunit_name']+'@local'
try:
c = form.validate(controls)
except ValidationFailure, e:
return dict(form=form)
#request.session[SESS_ADD_FAILED] = e.render()
return HTTPFound(location=request.route_url('user-unit-add'))
save_request(dict(controls), request)
return route_list(request)
elif SESS_ADD_FAILED in request.session:
return session_failed(request, SESS_ADD_FAILED)
return dict(form=form)#.render())
########
# Edit #
########
def query_id(request):
return DBSession.query(UserUnit).filter(UserUnit.user_id==request.matchdict['id'],
UserUnit.unit_id==request.matchdict['id2'])
def id_not_found(request):
msg = 'User %s Unit ID %s not found.' % (request.matchdict['id'],request.matchdict['id2'])
request.session.flash(msg, 'error')
return route_list(request)
"""@view_config(route_name='user-unit-edit', renderer='templates/userunit/edit.pt',
permission='edit')
def view_edit(request):
row = query_id(request).first()
if not row:
return id_not_found(request)
form = get_form(request, EditSchema)
if request.POST:
if 'save' in request.POST:
controls = request.POST.items()
#controls['email'] = controls['email'] or controls['userunit_name']+'@local'
try:
c = form.validate(controls)
except ValidationFailure, e:
request.session[SESS_EDIT_FAILED] = e.render()
return HTTPFound(location=request.route_url('user-unit-edit',id=row.id))
save_request(dict(controls), request, row)
return route_list(request)
elif SESS_EDIT_FAILED in request.session:
return session_failed(request, SESS_EDIT_FAILED)
values = row.to_dict()
return dict(form=form.render(appstruct=values))
"""
##########
# Delete #
##########
@view_config(route_name='user-unit-delete', renderer='templates/userunit/delete.pt',
permission='delete')
def view_delete(request):
q = query_id(request)
row = q.first()
if not row:
return id_not_found(request)
form = Form(colander.Schema(), buttons=('delete','cancel'))
values= {}
if request.POST:
if 'delete' in request.POST:
values['user_id'] = request.matchdict['id']
values['unit_id'] = request.matchdict['id2']
msg = 'User ID %d OPD %d has been deleted.' % (row.user_id, row.unit_id)
DBSession.query(UserUnit).filter(UserUnit.user_id==values['user_id'],
UserUnit.unit_id==values['unit_id']).delete()
query_unit_member(values)
q.delete()
DBSession.flush()
request.session.flash(msg)
return route_list(request)
return dict(row=row, form=form.render())
##########
# Action #
##########
@view_config(route_name='user-unit-act', renderer='json',
permission='read')
def view_act(request):
req = request
params = req.params
url_dict = req.matchdict
if url_dict['act']=='grid':
columns = []
columns.append(ColumnDT('user_id'))
columns.append(ColumnDT('unit_id'))
columns.append(ColumnDT('user_name'))
columns.append(ColumnDT('nama'))
query = DBSession.query(UserUnit.user_id, UserUnit.unit_id, User.user_name, Unit.nama).\
join(User).join(Unit)
rowTable = DataTables(req, UserUnit, query, columns)
return rowTable.output_result()
if url_dict['act']=='grid1':
cari = 'cari' in params and params['cari'] or ''
columns = []
columns.append(ColumnDT('user_id'))
columns.append(ColumnDT('unit_id'))
columns.append(ColumnDT('user_name'))
columns.append(ColumnDT('nama'))
query = DBSession.query(UserUnit.user_id, UserUnit.unit_id, User.user_name, Unit.nama).\
join(User).join(Unit).\
filter(or_(User.user_name.ilike('%%%s%%' % cari),Unit.nama.ilike('%%%s%%' % cari)))
rowTable = DataTables(req, UserUnit, query, columns)
return rowTable.output_result()
......@@ -12,6 +12,7 @@ from deform import (
widget,
ValidationFailure,
)
from ..tools import (email_validator,BULANS, captcha_submit, get_settings)
from ..models import DBSession, User, UserGroup, Group
from ..models.isipkd import(
SubjekPajak,
......@@ -139,6 +140,13 @@ class AddSchema(colander.Schema):
missing = colander.drop,
title='Buat Login'
)
email = colander.SchemaNode(
colander.String(),
validator=email_validator,
title = 'E-Mail',
missing=colander.drop,
oid = 'email'
)
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.Integer(),
......@@ -160,12 +168,22 @@ def save(request,values, row=None):
if 'login' in values and values['login']: # and int(values['user_id'])==0:
login = User()
login.user_password = values['kode']
login.status = values['status']
login.user_name = values['kode']
login.email = values['kode']+'@ws'
login.status = values['status']
login.user_name = values['email']
login.email = values['email']
DBSession.add(login)
DBSession.flush()
if login.id:
q = DBSession.query(UserGroup).join(Group).filter(UserGroup.user_id==login.id,
Group.group_name=='wp').first()
if not q:
usergroup = UserGroup()
usergroup.user_id = login.id
usergroup.group_id = DBSession.query(Group.id).filter_by(group_name='wp').scalar()
DBSession.add(usergroup)
DBSession.flush()
if not row:
row = SubjekPajak()
row.from_dict(values)
......@@ -181,24 +199,15 @@ def save(request,values, row=None):
DBSession.add(row)
DBSession.flush()
if row.user_id:
q = DBSession.query(UserGroup).join(Group).filter(UserGroup.user_id==row.user_id,
Group.group_name=='wp').first()
if not q:
usergroup = UserGroup()
usergroup.user_id = row.user_id
usergroup.group_id = DBSession.query(Group.id).filter_by(group_name='wp').scalar()
DBSession.add(usergroup)
DBSession.flush()
return row
def save_request(values, request, row=None):
if 'id' in request.matchdict:
values['id'] = request.matchdict['id']
row = save(request, values, row)
request.session.flash('Subjek %s sudah disimpan.' % row.kode)
print '----------------ROW-------------------',row
if row:
request.session.flash('Penyetor sudah disimpan.')
def route_list(request):
return HTTPFound(location=request.route_url('wp'))
......@@ -215,12 +224,38 @@ def view_add(request):
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
controls_dicted = dict(controls)
#Cek Email sama ato tidak
a = form.validate(controls)
print '-------------F------------',a
b = controls_dicted['email']
d = a['login']
e = "%s" % d
if e == 'True':
if b != '':
c = "%s" % b
cek = DBSession.query(User).filter(User.email==c).first()
if cek :
request.session.flash('Email sudah digunakan.', 'error')
return HTTPFound(location=request.route_url('wp-add'))
else:
request.session.flash('Email harus diisi.','error')
return HTTPFound(location=request.route_url('wp-add'))
else:
if b != '':
c = "%s" % b
cek = DBSession.query(User).filter(User.email==c).first()
if cek :
request.session.flash('Email sudah digunakan.', 'error')
return HTTPFound(location=request.route_url('wp-add'))
try:
c = form.validate(controls)
except ValidationFailure, e:
return dict(form=form)
#request.session[SESS_ADD_FAILED] = e.render()
return HTTPFound(location=request.route_url('wp-add'))
#return HTTPFound(location=request.route_url('wp-add'))
save_request(dict(controls), request)
return route_list(request)
elif SESS_ADD_FAILED in request.session:
......@@ -234,7 +269,7 @@ def query_id(request):
return DBSession.query(SubjekPajak).filter_by(id=request.matchdict['id'])
def id_not_found(request):
msg = 'Subjek ID %s not found.' % request.matchdict['id']
msg = 'Penyetor ID %s not found.' % request.matchdict['id']
request.session.flash(msg, 'error')
return route_list(request)
......@@ -242,19 +277,45 @@ def id_not_found(request):
permission='edit')
def view_edit(request):
row = query_id(request).first()
id = row.id
uid = row.id
if not row:
return id_not_found(request)
x = DBSession.query(ARInvoice).filter(ARInvoice.subjek_pajak_id==id).first()
x = DBSession.query(ARInvoice).filter(ARInvoice.subjek_pajak_id==uid).first()
if x:
request.session.flash('Tidak bisa diedit, karena subjek sudah digunakan di daftar bayar.','error')
request.session.flash('Tidak bisa diedit, karena penyetor sudah digunakan di daftar bayar.','error')
return route_list(request)
form = get_form(request, EditSchema)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
controls_dicted = dict(controls)
#Cek Email sama ato tidak
a = form.validate(controls)
print '-------------F------------',a
b = controls_dicted['email']
d = a['login']
e = "%s" % d
if e == 'True':
if b != '':
c = "%s" % b
cek = DBSession.query(User).filter(User.email==c).first()
if cek :
request.session.flash('Email sudah digunakan.', 'error')
return HTTPFound(location=request.route_url('wp-edit',id=row.id))
else:
request.session.flash('Email harus diisi.','error')
return HTTPFound(location=request.route_url('wp-edit',id=row.id))
else:
if b != '':
c = "%s" % b
cek = DBSession.query(User).filter(User.email==c).first()
if cek :
request.session.flash('Email sudah digunakan.', 'error')
return HTTPFound(location=request.route_url('wp-edit',id=row.id))
try:
c = form.validate(controls)
except ValidationFailure, e:
......@@ -267,6 +328,41 @@ def view_edit(request):
elif SESS_EDIT_FAILED in request.session:
return session_failed(request, SESS_EDIT_FAILED)
values = row.to_dict()
if row.alamat_2 == None:
values['alamat_2'] = ''
else:
values['alamat_2'] = row.alamat_2
if row.kelurahan == None:
values['kelurahan'] = ''
else:
values['kelurahan'] = row.kelurahan
if row.kecamatan == None:
values['kecamatan'] = ''
else:
values['kecamatan'] = row.kecamatan
if row.kota == None:
values['kota'] = ''
else:
values['kota'] = row.kota
if row.provinsi == None:
values['provinsi'] = ''
else:
values['provinsi'] = row.provinsi
if row.email == None:
values['email'] = ''
else:
values['email'] = row.email
cek = DBSession.query(User).filter(User.email==row.email).first()
if cek:
values['login'] = True
form.set_appstruct(values)
return dict(form=form)
......@@ -282,7 +378,7 @@ def view_delete(request):
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')
request.session.flash('Tidak bisa dihapus, karena penyetor sudah digunakan di daftar bayar.','error')
return route_list(request)
if not row:
......@@ -290,7 +386,7 @@ def view_delete(request):
form = Form(colander.Schema(), buttons=('delete','cancel'))
if request.POST:
if 'delete' in request.POST:
msg = 'Subjek %s sudah dihapus.' % (row.kode)
msg = 'Penyetor %s sudah dihapus.' % (row.kode)
q.delete()
DBSession.flush()
request.session.flash(msg)
......@@ -330,3 +426,16 @@ def view_act(request):
d['value'] = k[1]
r.append(d)
return r
elif url_dict['act']=='hon1':
term = 'term' in params and params['term'] or ''
rows = DBSession.query(SubjekPajak.id, SubjekPajak.nama, SubjekPajak.user_id
).filter(SubjekPajak.nama.ilike('%%%s%%' % term) ).all()
r = []
for k in rows:
d={}
d['id'] = k[0]
d['value'] = k[1]
d['user'] = k[2]
r.append(d)
return r
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!