Commit 8dccc579 by aagusti

Update tgl 21 Mei 2015

1 parent ae9c745e
...@@ -12,7 +12,9 @@ from sqlalchemy import ( ...@@ -12,7 +12,9 @@ from sqlalchemy import (
ForeignKey, ForeignKey,
UniqueConstraint UniqueConstraint
) )
from sqlalchemy.orm import relationship, backref from sqlalchemy.orm import relationship, backref
from sqlalchemy.orm.exc import NoResultFound
import transaction
from ..models import( from ..models import(
DBSession, DBSession,
DefaultModel, DefaultModel,
...@@ -67,7 +69,7 @@ class Pkb(DefaultModel,Base): ...@@ -67,7 +69,7 @@ class Pkb(DefaultModel,Base):
class Pap(DefaultModel,Base): class Pap(DefaultModel,Base):
__tablename__ = 'paps' __tablename__ = 'paps'
id = Column(BigInteger, primary_key=True) id = Column(BigInteger, primary_key=True)
kd_status = Column(SmallInteger, default=0) kd_status = Column(SmallInteger, default=0)
kd_bayar = Column(String(16)) kd_bayar = Column(String(16))
npwpd = Column(String(14)) npwpd = Column(String(14))
...@@ -85,16 +87,72 @@ class Pap(DefaultModel,Base): ...@@ -85,16 +87,72 @@ class Pap(DefaultModel,Base):
class Unit(NamaModel,Base): class Unit(NamaModel,Base):
__tablename__ = 'units' __tablename__ = 'units'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
kode = Column(String(16), unique=True) kode = Column(String(16), unique=True)
nama = Column(String(128)) nama = Column(String(128))
level_id = Column(SmallInteger) level_id = Column(SmallInteger)
is_summary = Column(SmallInteger) is_summary = Column(SmallInteger)
parent_id = 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): class Rekening(NamaModel,Base):
__tablename__ = 'rekenings' __tablename__ = 'rekenings'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
kode = Column(String(24), unique=True) kode = Column(String(24), unique=True)
nama = Column(String(128)) nama = Column(String(128))
level_id = Column(SmallInteger) level_id = Column(SmallInteger)
...@@ -104,7 +162,7 @@ class Rekening(NamaModel,Base): ...@@ -104,7 +162,7 @@ class Rekening(NamaModel,Base):
class UnitRekening(Base): class UnitRekening(Base):
__tablename__ = 'unit_rekenings' __tablename__ = 'unit_rekenings'
id = Column(Integer, primary_key=True) 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")) rekening_id = Column(Integer, ForeignKey("rekenings.id"))
class Jabatan(NamaModel, Base): class Jabatan(NamaModel, Base):
...@@ -117,9 +175,9 @@ class Pegawai(NamaModel, Base): ...@@ -117,9 +175,9 @@ class Pegawai(NamaModel, Base):
__tablename__ = 'pegawais' __tablename__ = 'pegawais'
#nama = Column(String(128)) #nama = Column(String(128))
status = Column(Integer, default=1) status = Column(Integer, default=1)
jabatan_id = Column(Integer,ForeignKey("jabatans.id")) jabatan_id = Column(Integer, ForeignKey("jabatans.id"))
unit_id = Column(Integer,ForeignKey("units.id")) unit_id = Column(Integer, ForeignKey("units.id"))
user_id = Column(Integer,ForeignKey("users.id"), nullable=True) user_id = Column(Integer, ForeignKey("users.id"), nullable=True)
users = relationship("User", backref=backref('pegawais')) users = relationship("User", backref=backref('pegawais'))
UniqueConstraint('kode') UniqueConstraint('kode')
...@@ -130,25 +188,24 @@ class Pegawai(NamaModel, Base): ...@@ -130,25 +188,24 @@ class Pegawai(NamaModel, Base):
class PegawaiLogin(Base): class PegawaiLogin(Base):
__tablename__ = 'pegawai_users' __tablename__ = 'pegawai_users'
user_id = Column(Integer,ForeignKey("users.id"), primary_key=True) user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
pegawai_id = Column(Integer,ForeignKey("pegawais.id"), unique=True) pegawai_id = Column(Integer, ForeignKey("pegawais.id"), unique=True)
change_unit = Column(Integer,default=0, nullable=False) change_unit = Column(Integer, default=0, nullable=False)
class Pajak(NamaModel, Base): class Pajak(NamaModel, Base):
__tablename__ = 'pajaks' __tablename__ = 'pajaks'
status = Column(Integer, default=1) 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) tahun = Column(Integer, nullable=False, default=0)
tarif = Column(Float, default=0, nullable=False) tarif = Column(Float, nullable=False, default=0)
denda_rekening_id = Column(Integer, nullable=True, default=0)
denda_rekening_id = Column(Integer, nullable=True, default=0)
UniqueConstraint('rekening_id','tahun', name='rekening_tahun') UniqueConstraint('rekening_id','tahun', name='rekening_tahun')
rekenings = relationship("Rekening", backref=backref('pajaks')) rekenings = relationship("Rekening", backref=backref('pajaks'))
class Wilayah(NamaModel,Base): class Wilayah(NamaModel,Base):
__tablename__ = 'wilayahs' __tablename__ = 'wilayahs'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
kode = Column(String(24), unique=True) kode = Column(String(24), unique=True)
nama = Column(String(128)) nama = Column(String(128))
level_id = Column(SmallInteger) level_id = Column(SmallInteger)
...@@ -165,8 +222,9 @@ class SubjekPajak(NamaModel, Base): ...@@ -165,8 +222,9 @@ class SubjekPajak(NamaModel, Base):
kelurahan = Column(String(128)) kelurahan = Column(String(128))
kecamatan = Column(String(128)) kecamatan = Column(String(128))
kota = Column(String(128)) kota = Column(String(128))
user_id = Column(Integer,ForeignKey("users.id")) user_id = Column(Integer, ForeignKey("users.id"))
provinsi = Column(String(128)) provinsi = Column(String(128))
email = Column(String(40))
users = relationship("User", backref=backref('subjekpajaks')) users = relationship("User", backref=backref('subjekpajaks'))
UniqueConstraint('kode') UniqueConstraint('kode')
...@@ -193,9 +251,9 @@ class ObjekPajak(NamaModel, Base): ...@@ -193,9 +251,9 @@ class ObjekPajak(NamaModel, Base):
pajak_id = Column(Integer, ForeignKey("pajaks.id")) pajak_id = Column(Integer, ForeignKey("pajaks.id"))
subjekpajak_id = Column(Integer, ForeignKey("subjekpajaks.id")) subjekpajak_id = Column(Integer, ForeignKey("subjekpajaks.id"))
subjekpajaks = relationship('SubjekPajak', backref=backref('objekpajaks')) subjekpajaks = relationship('SubjekPajak', backref=backref('objekpajaks'))
pajaks = relationship('Pajak', backref=backref('objekpajaks')) pajaks = relationship('Pajak', backref=backref('objekpajaks'))
wilayahs = relationship('Wilayah', backref=backref('objekpajaks')) wilayahs = relationship('Wilayah', backref=backref('objekpajaks'))
units = relationship('Unit', backref=backref('objekpajaks')) units = relationship('Unit', backref=backref('objekpajaks'))
class ARInvoice(CommonModel, Base): class ARInvoice(CommonModel, Base):
__tablename__ = 'arinvoices' __tablename__ = 'arinvoices'
...@@ -238,8 +296,8 @@ class ARInvoice(CommonModel, Base): ...@@ -238,8 +296,8 @@ class ARInvoice(CommonModel, Base):
#bulan = Column(Integer) #bulan = Column(Integer)
#tanggal = Column(Integer) #tanggal = Column(Integer)
subjekpajaks = relationship("SubjekPajak", backref=backref('arinvoices')) subjekpajaks = relationship("SubjekPajak", backref=backref('arinvoices'))
objekpajaks = relationship("ObjekPajak", backref=backref('arinvoices')) objekpajaks = relationship("ObjekPajak", backref=backref('arinvoices'))
units = relationship("Unit", backref=backref('arinvoices')) units = relationship("Unit", backref=backref('arinvoices'))
UniqueConstraint(tahun_id,unit_id,no_id,name='arinvoice_uq') UniqueConstraint(tahun_id,unit_id,no_id,name='arinvoice_uq')
class ARSspd(CommonModel, Base): class ARSspd(CommonModel, Base):
...@@ -253,15 +311,13 @@ class ARSspd(CommonModel, Base): ...@@ -253,15 +311,13 @@ class ARSspd(CommonModel, Base):
bunga = Column(BigInteger) bunga = Column(BigInteger)
bayar = Column(BigInteger) bayar = Column(BigInteger)
tgl_bayar = Column(DateTime) tgl_bayar = Column(DateTime)
posted = Column(SmallInteger, nullable=False, default=0)
create_uid = Column(Integer) create_uid = Column(Integer)
update_uid = Column(Integer) update_uid = Column(Integer)
create_date = Column(DateTime(timezone=True)) create_date = Column(DateTime(timezone=True))
update_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) posted = Column(SmallInteger, nullable=False, default=0)
arinvoices = relationship("ARInvoice", backref=backref('arsspds')) arinvoices = relationship("ARInvoice", backref=backref('arsspds'))
units = relationship("Unit", backref=backref('arsspds'))
UniqueConstraint(arinvoice_id,pembayaran_ke,name='arsspd_uq') UniqueConstraint(arinvoice_id,pembayaran_ke,name='arsspd_uq')
UniqueConstraint(tahun_id,unit_id,no_id,name='arsspd_no_uq') UniqueConstraint(tahun_id,unit_id,no_id,name='arsspd_no_uq')
...@@ -280,17 +336,17 @@ class ARSts(NamaModel,Base): ...@@ -280,17 +336,17 @@ class ARSts(NamaModel,Base):
create_date = Column(DateTime(timezone=True)) create_date = Column(DateTime(timezone=True))
update_date = Column(DateTime(timezone=True)) update_date = Column(DateTime(timezone=True))
status_bayar = Column(SmallInteger) status_bayar = Column(SmallInteger)
units = relationship("Unit", backref=backref('arsts'))
jumlah = Column(BigInteger, nullable=False, default=0) jumlah = Column(BigInteger, nullable=False, default=0)
units = relationship("Unit", backref=backref('arsts'))
UniqueConstraint(tahun_id,unit_id,no_id,name='arsts_no_uq') UniqueConstraint(tahun_id,unit_id,no_id,name='arsts_no_uq')
class ARStsItem(Base): class ARStsItem(Base):
__tablename__ = 'arsts_item' __tablename__ = 'arsts_item'
sts_id = Column(Integer, primary_key=True) 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) rekening_id = Column(Integer, ForeignKey('rekenings.id'), primary_key=True)
jumlah = Column(BigInteger, nullable=False, default=0) 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')) rekenings = relationship("Rekening", backref=backref('arstsitems'))
class Param(Base): class Param(Base):
......
...@@ -47,11 +47,11 @@ id,kode,nama,path,factory,perm_name,disabled,created,updated,create_uid ...@@ -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 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 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 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 65,"wp","Penyetor","/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 66,"wp-act","Baca Penyetor","/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 67,"wp-add","Tambah Penyetor","/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 68,"wp-edit","Edit Penyetor","/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 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 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 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 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 ...@@ -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 105,"reports_act","Report Action","/reports/act/{act}",,"read",0,"2015-03-08 16:45:45",,1
106,"arinvoice-edt-unit","ARInvoice Ubah Unit","/arinvoice/edt/unit",,"arinvoice_unit",0,"2015-03-08 16:45:45",,1 106,"arinvoice-edt-unit","ARInvoice Ubah Unit","/arinvoice/edt/unit",,"arinvoice_unit",0,"2015-03-08 16:45:45",,1
107,"arinvoice-edt-subjek","ARInvoice Ubah Subjek","/arinvoice/edt/subjek",,"arinvoice_subjek",0,"2015-03-08 16:45:45",,1 107,"arinvoice-edt-subjek","ARInvoice Ubah Subjek","/arinvoice/edt/subjek",,"arinvoice_subjek",0,"2015-03-08 16:45:45",,1
108,"pkb-edit","Jawaban E-Samsat","/pkb/{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/{id}/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 \ No newline at end of file
...@@ -51,6 +51,14 @@ def email_validator(node, value): ...@@ -51,6 +51,14 @@ def email_validator(node, value):
name, email = parseaddr(value) name, email = parseaddr(value)
if not email or email.find('@') < 0: if not email or email.find('@') < 0:
raise colander.Invalid(node, 'Invalid email format') raise colander.Invalid(node, 'Invalid email format')
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'): def get_msisdn(msisdn, country='+62'):
for ch in msisdn: for ch in msisdn:
......
...@@ -36,7 +36,7 @@ from daftar import (STATUS, deferred_status, ...@@ -36,7 +36,7 @@ from daftar import (STATUS, deferred_status,
daftar_wilayah, deferred_wilayah, daftar_wilayah, deferred_wilayah,
daftar_unit, deferred_unit, daftar_unit, deferred_unit,
daftar_pajak, deferred_pajak, 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 # # List #
...@@ -78,42 +78,39 @@ class AddSchema(colander.Schema): ...@@ -78,42 +78,39 @@ class AddSchema(colander.Schema):
colander.Integer(), colander.Integer(),
widget=widget.HiddenWidget(), widget=widget.HiddenWidget(),
oid="unit_id", oid="unit_id",
title="SKPD", title="OPD",
) )
unit_nm = colander.SchemaNode( unit_nm = colander.SchemaNode(
colander.String(), colander.String(),
title="OPD", title="OPD",
#title="SKPD",
#widget=auto_unit_nm,
oid="unit_nm" oid="unit_nm"
) )
subjek_pajak_id = colander.SchemaNode( subjek_pajak_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.HiddenWidget(), widget=widget.HiddenWidget(),
title="Subjek Bayar", title="Penyetor",
oid = "subjek_pajak_id" oid = "subjek_pajak_id"
) )
subjek_pajak_nm = colander.SchemaNode( subjek_pajak_nm = colander.SchemaNode(
colander.String(), colander.String(),
#widget=auto_wp_nm, widget=auto_wp_nm1,
title="Penyetor",
title="Subjek",
oid = "subjek_pajak_nm" oid = "subjek_pajak_nm"
) )
subjek_pajak_us = colander.SchemaNode(
colander.Integer(),
widget=widget.HiddenWidget(),
oid = "subjek_pajak_us"
)
objek_pajak_id = colander.SchemaNode( objek_pajak_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
title="Objek Bayar", title="Objek",
widget=widget.HiddenWidget(), widget=widget.HiddenWidget(),
oid = "objek_pajak_id" oid = "objek_pajak_id"
) )
objek_pajak_nm = colander.SchemaNode( objek_pajak_nm = colander.SchemaNode(
colander.String(), colander.String(),
widget=auto_op_nm, widget=auto_op_nm,
title="Objek", title="Objek",
oid = "objek_pajak_nm" oid = "objek_pajak_nm"
) )
...@@ -143,31 +140,40 @@ class AddSchema(colander.Schema): ...@@ -143,31 +140,40 @@ class AddSchema(colander.Schema):
colander.Integer(), colander.Integer(),
default = 0, default = 0,
widget = moneywidget, widget = moneywidget,
oid = "dasar"
) )
tarif = colander.SchemaNode( tarif = colander.SchemaNode(
colander.Integer(), colander.Integer(),
default = 0, default = 0,
widget = moneywidget, widget = moneywidget,
oid = "tarif",
missing=colander.drop
) )
pokok = colander.SchemaNode( pokok = colander.SchemaNode(
colander.Integer(), colander.Integer(),
default = 0, default = 0,
widget = moneywidget, widget = moneywidget,
missing=colander.drop,
oid = "pokok"
) )
denda = colander.SchemaNode( denda = colander.SchemaNode(
colander.Integer(), colander.Integer(),
default = 0, default = 0,
widget = moneywidget, widget = moneywidget,
oid = "denda"
) )
bunga = colander.SchemaNode( bunga = colander.SchemaNode(
colander.Integer(), colander.Integer(),
default = 0, default = 0,
widget = moneywidget, widget = moneywidget,
oid = "bunga"
) )
jumlah = colander.SchemaNode( jumlah = colander.SchemaNode(
colander.Integer(), colander.Integer(),
default = 0, default = 0,
widget = moneywidget, widget = moneywidget,
missing=colander.drop,
oid = "jumlah"
) )
class EditSchema(AddSchema): class EditSchema(AddSchema):
...@@ -192,10 +198,10 @@ def save(values, row=None): ...@@ -192,10 +198,10 @@ def save(values, row=None):
row = ARInvoice() row = ARInvoice()
row.from_dict(values) row.from_dict(values)
row.dasar = re.sub("[^0-9]", "", row.dasar) 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.pokok = re.sub("[^0-9]", "", row.pokok)
row.denda = re.sub("[^0-9]", "", row.denda) row.denda = re.sub("[^0-9]", "", row.denda)
row.bunga = re.sub("[^0-9]", "", row.bunga) row.bunga = re.sub("[^0-9]", "", row.bunga)
row.tarif = re.sub("[^0-9]", "", row.tarif)
row.jumlah = re.sub("[^0-9]", "", row.jumlah) row.jumlah = re.sub("[^0-9]", "", row.jumlah)
if not row.tahun_id: if not row.tahun_id:
......
...@@ -153,7 +153,7 @@ def deferred_pajak(node, kw): ...@@ -153,7 +153,7 @@ def deferred_pajak(node, kw):
def daftar_pajak(): def daftar_pajak():
rows = DBSession.query(Pajak).all() rows = DBSession.query(Pajak).all()
r=[] r=[]
d = (0,'Pilih Pajak') d = (0,'Pilih Rekening')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
...@@ -171,7 +171,7 @@ def deferred_subjekpajak(node, kw): ...@@ -171,7 +171,7 @@ def deferred_subjekpajak(node, kw):
def daftar_subjekpajak(): def daftar_subjekpajak():
rows = DBSession.query(SubjekPajak).all() rows = DBSession.query(SubjekPajak).all()
r=[] r=[]
d = (0,'Pilih Subjek') d = (0,'Pilih Penyetor')
r.append(d) r.append(d)
for row in rows: for row in rows:
d = (row.id, row.kode+' : '+row.nama) d = (row.id, row.kode+' : '+row.nama)
...@@ -267,6 +267,11 @@ auto_wp_nm = widget.AutocompleteInputWidget( ...@@ -267,6 +267,11 @@ auto_wp_nm = widget.AutocompleteInputWidget(
size=60, size=60,
values = '/wp/hon/act', values = '/wp/hon/act',
min_length=1) min_length=1)
auto_wp_nm1 = widget.AutocompleteInputWidget(
size=60,
values = '/wp/hon1/act',
min_length=1)
auto_op_nm = widget.AutocompleteInputWidget( auto_op_nm = widget.AutocompleteInputWidget(
size=60, size=60,
......
...@@ -48,45 +48,12 @@ def view_list(request): ...@@ -48,45 +48,12 @@ def view_list(request):
####### #######
# Add # # 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): class AddSchema(colander.Schema):
subjekpajak_id = colander.SchemaNode( subjekpajak_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=deferred_subjekpajak, widget=deferred_subjekpajak,
title="Subjek" title="Penyetor"
) )
wilayah_id = colander.SchemaNode( wilayah_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
...@@ -103,13 +70,18 @@ class AddSchema(colander.Schema): ...@@ -103,13 +70,18 @@ class AddSchema(colander.Schema):
pajak_id = colander.SchemaNode( pajak_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=deferred_pajak, widget=deferred_pajak,
title="Pajak" title="Rekening"
) )
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String()) colander.String(),
widget=widget.HiddenWidget(),
oid="kode",
missing=colander.drop)
nama = colander.SchemaNode( nama = colander.SchemaNode(
colander.String(), colander.String(),
title="Uraian") widget=widget.HiddenWidget(),
oid="nama",
missing=colander.drop)
status = colander.SchemaNode( status = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=deferred_status, widget=deferred_status,
...@@ -123,7 +95,7 @@ class EditSchema(AddSchema): ...@@ -123,7 +95,7 @@ class EditSchema(AddSchema):
def get_form(request, class_form): def get_form(request, class_form):
schema = class_form(validator=form_validator) schema = class_form()
schema = schema.bind(daftar_status=STATUS, schema = schema.bind(daftar_status=STATUS,
daftar_subjekpajak=daftar_subjekpajak(), daftar_subjekpajak=daftar_subjekpajak(),
daftar_pajak=daftar_pajak(), daftar_pajak=daftar_pajak(),
...@@ -136,6 +108,15 @@ def save(values, row=None): ...@@ -136,6 +108,15 @@ def save(values, row=None):
if not row: if not row:
row = ObjekPajak() row = ObjekPajak()
row.from_dict(values) 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']: #if values['password']:
# row.password = values['password'] # row.password = values['password']
DBSession.add(row) DBSession.add(row)
...@@ -267,10 +248,13 @@ def view_act(request): ...@@ -267,10 +248,13 @@ def view_act(request):
elif url_dict['act']=='hon': elif url_dict['act']=='hon':
term = 'term' in params and params['term'] or '' 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 x = request.user.id
rows = DBSession.query(ObjekPajak).\ rows = DBSession.query(ObjekPajak).join(SubjekPajak).join(Pajak).\
filter(ObjekPajak.nama.ilike('%%%s%%' % term), filter(ObjekPajak.nama.ilike('%%%s%%' % term),
ObjekPajak.subjekpajak_id==SubjekPajak.id, ObjekPajak.subjekpajak_id==SubjekPajak.id,
SubjekPajak.id==subjek_pajak_id,
ObjekPajak.pajak_id==Pajak.id,
SubjekPajak.user_id==x).all() SubjekPajak.user_id==x).all()
r = [] r = []
for k in rows: for k in rows:
...@@ -282,6 +266,7 @@ def view_act(request): ...@@ -282,6 +266,7 @@ def view_act(request):
d['sp_nm'] = k.subjekpajaks.nama d['sp_nm'] = k.subjekpajaks.nama
d['unit_id'] = k.units.id d['unit_id'] = k.units.id
d['unit_nm'] = k.units.nama d['unit_nm'] = k.units.nama
d['tarif'] = k.pajaks.tarif
r.append(d) r.append(d)
return r return r
import colander import colander
import informixdb import informixdb
import re
from datetime import (datetime, date) from datetime import (datetime, date)
from time import (strptime, strftime, time, sleep) from time import (strptime, strftime, time, sleep)
from sqlalchemy import (not_, or_, text) from sqlalchemy import (not_, or_, text)
...@@ -9,7 +10,7 @@ from deform import (Form, widget, ValidationFailure,) ...@@ -9,7 +10,7 @@ from deform import (Form, widget, ValidationFailure,)
from datatables import (ColumnDT, DataTables) from datatables import (ColumnDT, DataTables)
from recaptcha.client import captcha 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 import (DBSession)
from ..models.isipkd import (Pap) from ..models.isipkd import (Pap)
from ..models.informix import EngInformix from ..models.informix import EngInformix
...@@ -37,21 +38,58 @@ def form_validator(form, value): ...@@ -37,21 +38,58 @@ def form_validator(form, value):
'Kode validasi harus diisi' '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): class AddSchema(colander.Schema):
npwpd = colander.SchemaNode( npwpd = colander.SchemaNode(
colander.String(), colander.String(),
widget = widget.TextInputWidget(max=14), widget = widget.TextInputWidget(max=14),
title = "NPWPD :", #validator=npwpd_validator,
title = "NPWPD",
oid="npwpd" oid="npwpd"
) )
m_pjk_bln = colander.SchemaNode( m_pjk_bln = colander.SchemaNode(
colander.String(), colander.String(),
widget=widget.SelectWidget(values=BULANS),
title = "Bulan", title = "Bulan",
oid="m_pjk_bln" oid="m_pjk_bln"
) )
m_pjk_thn = colander.SchemaNode( m_pjk_thn = colander.SchemaNode(
colander.String(), colander.String(),
widget = widget.SelectWidget(values=TAHUNS),
title = "Tahun", title = "Tahun",
oid="m_pjk_thn" oid="m_pjk_thn"
) )
...@@ -141,10 +179,19 @@ class AddSchema(colander.Schema): ...@@ -141,10 +179,19 @@ class AddSchema(colander.Schema):
) )
class EditSchema(AddSchema): class EditSchema(AddSchema):
id = colander.SchemaNode( nr = colander.SchemaNode(
colander.Integer(), colander.String(),
oid="id") oid="nr"
)
nk = colander.SchemaNode(
colander.String(),
oid="nk"
)
em = colander.SchemaNode(
colander.String(),
oid="em"
)
def get_form(request, class_form): def get_form(request, class_form):
schema = class_form(validator=form_validator) schema = class_form(validator=form_validator)
schema.request = request schema.request = request
...@@ -153,24 +200,6 @@ def get_form(request, class_form): ...@@ -153,24 +200,6 @@ def get_form(request, class_form):
def save(request, values, row=None): def save(request, values, row=None):
engInformix = EngInformix() 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 = """ sql_result = """
SELECT * FROM v_jupntepap SELECT * FROM v_jupntepap
WHERE npwpd= '{npwpd}' and m_pjk_bln= '{m_pjk_bln}' WHERE npwpd= '{npwpd}' and m_pjk_bln= '{m_pjk_bln}'
...@@ -179,59 +208,19 @@ def save(request, values, row=None): ...@@ -179,59 +208,19 @@ def save(request, values, row=None):
npwpd = values['npwpd'], npwpd = values['npwpd'],
m_pjk_bln = values['m_pjk_bln'], m_pjk_bln = values['m_pjk_bln'],
m_pjk_thn = values['m_pjk_thn'], m_pjk_thn = values['m_pjk_thn'],
#c_date = c_date , kd_status = 2)
#c_time = c_time,
kd_status = 0) p = engInformix.fetchone(sql_result)
print '----------------P Hasil Select----------------------',p
trx_timeout = 10 return p
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))
def save_request(values, request, row=None): def save_request(values, request, row=None):
if 'id' in request.matchdict: values['npwpd'] = values['npwpd']
values['id'] = request.matchdict['id'] values['m_pjk_bln'] = values['m_pjk_bln']
row = save(request.user, values, row) values['m_pjk_thn'] = values['m_pjk_thn']
request.session.flash('Tunggu beberapa saat email atau SMS akan segera dikirim.') row = save(request, values, row)
return row return row
def route_list(request): def route_list(request):
return HTTPFound(location=request.route_url('pap-add')) return HTTPFound(location=request.route_url('pap-add'))
...@@ -241,12 +230,12 @@ def session_failed(request, session_name): ...@@ -241,12 +230,12 @@ def session_failed(request, session_name):
return r return r
@view_config(route_name='pap', renderer='templates/pap/add.pt', @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', @view_config(route_name='pap-add', renderer='templates/pap/add.pt',
permission='view') )#permission='view')
def view_add(request): def view_add(request):
req = request req = request
found = 0
settings = get_settings() settings = get_settings()
print 'X--------_______SETTING INFORMIX______--------X',settings print 'X--------_______SETTING INFORMIX______--------X',settings
private_key = settings['recaptcha.private_key'] private_key = settings['recaptcha.private_key']
...@@ -266,54 +255,122 @@ def view_add(request): ...@@ -266,54 +255,122 @@ def view_add(request):
) )
if not response.is_valid: if not response.is_valid:
req.session.flash(response.error_code,'error') 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: 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) row = save_request(dict(controls), request)
print'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr',row if not row:
return HTTPFound(location=request.route_url('pap-edit',id=row.id)) 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) return route_list(request)
elif SESS_ADD_FAILED in request.session: elif SESS_ADD_FAILED in request.session:
return session_failed(request, SESS_ADD_FAILED) 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): 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', sql_result1 = """
permission='view') 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): def view_edit(request):
row = query_id(request).first() req = request
print '----------------------------X----------------------------', row found = 0
form = get_form(request, EditSchema) 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 request.POST:
if 'simpan' in request.POST: if 'simpan' in request.POST:
controls = request.POST.items() 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) return route_list(request)
elif SESS_EDIT_FAILED in request.session: elif SESS_EDIT_FAILED in request.session:
return session_failed(request, SESS_EDIT_FAILED) return session_failed(request, SESS_EDIT_FAILED)
values = row.to_dict() values = {}
values['kd_status'] = row.kd_status values['kd_status'] = row.kd_status
values['kd_bayar'] = row.kd_bayar values['kd_bayar'] = row.kd_bayar
values['npwpd1'] = row.npwpd values['npwpd1'] = row.npwpd
values['nm_perus'] = row.nm_perus values['nm_perus'] = row.nm_perus
values['al_perus'] = row.al_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_bln1'] = row.m_pjk_bln
values['m_pjk_thn1'] = row.m_pjk_thn values['m_pjk_thn1'] = row.m_pjk_thn
values['tgl_tetap'] = row.tgl_tetap values['tgl_tetap'] = row.tgl_tetap
values['tgl_jt_tempo'] = row.tgl_jt_tempo 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) form.set_appstruct(values)
return dict(form=form)
\ No newline at end of file \ No newline at end of file
return dict(form=form, private_key=private_key, found=found)
\ No newline at end of file \ No newline at end of file
...@@ -8,7 +8,7 @@ from pyramid.view import (view_config,) ...@@ -8,7 +8,7 @@ from pyramid.view import (view_config,)
from pyramid.httpexceptions import (HTTPFound,) from pyramid.httpexceptions import (HTTPFound,)
from deform import (Form, widget, ValidationFailure,) from deform import (Form, widget, ValidationFailure,)
from datatables import (ColumnDT, DataTables) 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 import (DBSession)
from ..models.isipkd import (Pkb) from ..models.isipkd import (Pkb)
from ..models.informix import EngInformix from ..models.informix import EngInformix
...@@ -211,17 +211,30 @@ class AddSchema(colander.Schema): ...@@ -211,17 +211,30 @@ class AddSchema(colander.Schema):
title = 'NTP', title = 'NTP',
oid="kd_trn_dpd" oid="kd_trn_dpd"
) )
class EditSchema(AddSchema): class EditSchema(AddSchema):
id = colander.SchemaNode( nr = colander.SchemaNode(
colander.Integer(), colander.String(),
oid="id") 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): def get_form(request, class_form):
schema = class_form(validator=form_validator) schema = class_form(validator=form_validator)
schema.request = request schema.request = request
return Form(schema, buttons=('simpan','batal')) return Form(schema, buttons=('simpan','batal'))
def save(request, values, row=None): def save(request, values, row=None):
engInformix = EngInformix() engInformix = EngInformix()
...@@ -283,54 +296,16 @@ def save(request, values, row=None): ...@@ -283,54 +296,16 @@ def save(request, values, row=None):
if p: if p:
break break
print p print p
print '--------------------------------------',msg print '--------------------Message-------------------------',msg
print '----------------P Hasil Select----------------------',p
rowd = Pkb() return p
rowd.kd_status = p.kd_status #return HTTPFound(location=request.route_url('pkb-edit', rowd=p, msg=msg))
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))
def save_request(values, request, row=None): def save_request(values, request, row=None):
if 'id' in request.matchdict: values['no_rangka'] = values['no_rangka']
values['id'] = request.matchdict['id'] values['no_ktp'] = values['no_ktp']
#values["amount"]=values["amount"].replace('.','') values['email'] = values['email']
values['no_hp'] = values['no_hp']
row = save(request, values, row) row = save(request, values, row)
request.session.flash('PKB sudah disimpan.') request.session.flash('PKB sudah disimpan.')
return row return row
...@@ -344,17 +319,17 @@ def session_failed(request, session_name): ...@@ -344,17 +319,17 @@ def session_failed(request, session_name):
return r return r
@view_config(route_name='pkb', renderer='templates/pkb/add.pt', @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', @view_config(route_name='pkb-add', renderer='templates/pkb/add.pt',
permission='view') )#permission='view')
def view_add(request): def view_add(request):
req = request req = request
found = 0
settings = get_settings() settings = get_settings()
print 'X--------_______SETTING INFORMIX______--------X',settings print 'X--------_______Setting Informix______--------X',settings
private_key = settings['recaptcha.private_key'] private_key = settings['recaptcha.private_key']
data_key = settings['recaptcha.private_key'] data_key = settings['recaptcha.private_key']
form = get_form(request, AddSchema) form = get_form(request, AddSchema)
if request.POST: if request.POST:
if 'simpan' in request.POST: if 'simpan' in request.POST:
...@@ -369,38 +344,84 @@ def view_add(request): ...@@ -369,38 +344,84 @@ def view_add(request):
) )
if not response.is_valid: if not response.is_valid:
req.session.flash(response.error_code,'error') 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: 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) row = save_request(dict(controls), request)
print'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr',row found = 1
return HTTPFound(location=request.route_url('pkb-edit',id=row.id)) 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) return route_list(request)
elif SESS_ADD_FAILED in request.session: elif SESS_ADD_FAILED in request.session:
return session_failed(request, SESS_ADD_FAILED) 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): 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', @view_config(route_name='pkb-edit', renderer='templates/pkb/edit.pt',
permission='view') )#permission='view')
def view_edit(request): def view_edit(request):
row = query_id(request).first() req = request
print '----------------------------X----------------------------', row found = 0
form = get_form(request, EditSchema) 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 request.POST:
if 'simpan' in request.POST: if 'simpan' in request.POST:
controls = request.POST.items() 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) return route_list(request)
elif SESS_EDIT_FAILED in request.session: elif SESS_EDIT_FAILED in request.session:
return session_failed(request, SESS_EDIT_FAILED) return session_failed(request, SESS_EDIT_FAILED)
values = row.to_dict() values = {}
values['kd_status'] = row.kd_status values['kd_status'] = row.kd_status
values['flag_sms'] = row.flag_sms values['flag_sms'] = row.flag_sms
values['no_rangka1'] = row.no_rangka values['no_rangka1'] = row.no_rangka
...@@ -420,20 +441,57 @@ def view_edit(request): ...@@ -420,20 +441,57 @@ def view_edit(request):
values['th_buatan'] = row.th_buatan values['th_buatan'] = row.th_buatan
values['tg_akhir_pjklm'] = row.tg_akhir_pjklm values['tg_akhir_pjklm'] = row.tg_akhir_pjklm
values['tg_akhir_pjkbr'] = row.tg_akhir_pjkbr 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['tg_bayar_bank'] = row.tg_bayar_bank
values['jam_bayar_bank'] = row.jam_bayar_bank values['jam_bayar_bank'] = row.jam_bayar_bank
values['kd_trn_bank'] = row.kd_trn_bank values['kd_trn_bank'] = row.kd_trn_bank
values['kd_trn_dpd'] = row.kd_trn_dpd 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) 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 ( ...@@ -7,6 +7,7 @@ from pyramid.httpexceptions import (
HTTPFound, HTTPFound,
) )
import colander import colander
import re
from deform import ( from deform import (
Form, Form,
widget, widget,
...@@ -15,6 +16,7 @@ from deform import ( ...@@ -15,6 +16,7 @@ from deform import (
from ..models import DBSession from ..models import DBSession
from ..models.isipkd import( from ..models.isipkd import(
Unit, Unit,
UserUnit,
) )
from datatables import ( from datatables import (
...@@ -244,4 +246,27 @@ def view_act(request): ...@@ -244,4 +246,27 @@ def view_act(request):
d['value'] = k[1] d['value'] = k[1]
d['nama'] = k[1] d['nama'] = k[1]
r.append(d) 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 @@ ...@@ -14,38 +14,41 @@
${structure:field.serialize()} ${structure:field.serialize()}
</div> </div>
</div> </div>
<!--objek_pajak_id ------------------------------->
<div tal:define="field form['objek_pajak_id']">
${structure:field.serialize()}
</div>
<!--subjek_pajak_id -------------------------------> <!--subjek_pajak_id ------------------------------->
<div tal:define="field form['subjek_pajak_id']"> <div tal:define="field form['subjek_pajak_id']">
${structure:field.serialize()} ${structure:field.serialize()}
</div> </div>
<div tal:define="field form['subjek_pajak_us']">
${structure:field.serialize()}
</div>
<!--unit_id -------------------------------> <!--unit_id ------------------------------->
<div tal:define="field form['unit_id']"> <div tal:define="field form['unit_id']">
${structure:field.serialize()} ${structure:field.serialize()}
</div> </div>
<!--objek_pajak_id ------------------------------->
<div tal:define="field form['objek_pajak_id']">
${structure:field.serialize()}
</div>
<div class="col-md-6"> <div class="col-md-6">
<!--unit_nm -------------------------------> <!--subjek_pajak_nm ------------------------------->
<div class="form-group" tal:define="field form['unit_nm']" id="item-${field.oid}"> <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}"> <label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}<span id="error-${field.oid}" class="text text-danger" ${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9" tal:define="field form['unit_nm']" > <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> ${error}</p>
</div> </div>
</div> </div>
<!--subjek_pajak_nm -------------------------------> <!--unit_nm ------------------------------->
<div class="form-group" tal:define="field form['subjek_pajak_nm']" id="item-${field.oid}"> <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}"> <label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}<span id="error-${field.oid}" class="text text-danger" ${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9"> <div class="col-md-9" tal:define="field form['unit_nm']" >
${structure:field.serialize()} ${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
...@@ -71,6 +74,9 @@ ...@@ -71,6 +74,9 @@
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9"> <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> ${error}</p>
...@@ -140,6 +146,9 @@ ...@@ -140,6 +146,9 @@
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-8"> <div class="col-md-8">
${structure:field.serialize()} ${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
*</p> *</p>
...@@ -152,6 +161,9 @@ ...@@ -152,6 +161,9 @@
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9"> <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> ${error}</p>
...@@ -190,9 +202,13 @@ ...@@ -190,9 +202,13 @@
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9"> <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> </div> ${error}</p> </div>
</div> </div>
</div> </div>
</div> </div>
...@@ -217,14 +233,108 @@ ...@@ -217,14 +233,108 @@
$("#unit_nm").attr("readonly",${has_permission(request,'arinvoice-edt-unit') and 'false' or 'true'}) $("#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_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'}) $("#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) { $("#subjek_pajak_us").attr("readonly",${has_permission(request,'arinvoice-edt-subjek') and 'false' or 'true'})
$('#objek_pajak_id').val(datum.id);
$('#subjek_pajak_id').val(datum.sp_id); $('#subjek_pajak_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#subjek_pajak_nm').val(datum.sp_nm); $('#subjek_pajak_id').val(datum.id);
$('#unit_id').val(datum.unit_id); $('#subjek_pajak_us').val(datum.user);
$('#unit_nm').val(datum.unit_nm);
//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> </script>
</fieldset> </fieldset>
</form> </form>
......
...@@ -18,34 +18,26 @@ ...@@ -18,34 +18,26 @@
<div tal:define="field form['objek_pajak_id']"> <div tal:define="field form['objek_pajak_id']">
${structure:field.serialize()} ${structure:field.serialize()}
</div> </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"> <div class="col-md-6">
<!--unit_nm -------------------------------> <!--subjek_pajak_id ------------------------------->
<div class="form-group" tal:define="field form['unit_nm']" id="item-${field.oid}"> <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}"> <label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}<span id="error-${field.oid}" class="text text-danger" ${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9" tal:define="field form['unit_nm']" > <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> ${error}</p>
</div> </div>
</div> </div>
<!--subjek_pajak_nm -------------------------------> <!--unit_id ------------------------------->
<div class="form-group" tal:define="field form['subjek_pajak_nm']" id="item-${field.oid}"> <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}"> <label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}<span id="error-${field.oid}" class="text text-danger" ${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9"> <div class="col-md-9" tal:define="field form['unit_id']" >
${structure:field.serialize()} ${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
...@@ -71,6 +63,9 @@ ...@@ -71,6 +63,9 @@
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9"> <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> ${error}</p>
...@@ -140,6 +135,9 @@ ...@@ -140,6 +135,9 @@
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-8"> <div class="col-md-8">
${structure:field.serialize()} ${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
*</p> *</p>
...@@ -152,6 +150,9 @@ ...@@ -152,6 +150,9 @@
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9"> <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> ${error}</p>
...@@ -190,6 +191,9 @@ ...@@ -190,6 +191,9 @@
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-9"> <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<script>
$("#${field.oid}").attr("readonly", true);
</script>
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> </div> ${error}</p> </div>
...@@ -217,14 +221,34 @@ ...@@ -217,14 +221,34 @@
$("#unit_nm").attr("readonly",${has_permission(request,'arinvoice-edt-unit') and 'false' or 'true'}) $("#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_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'}) $("#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_nm').bind('typeahead:selected', function(obj, datum, name) {
$('#objek_pajak_id').val(datum.id); $('#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); $('#subjek_pajak_nm').val(datum.sp_nm);
$('#unit_id').val(datum.unit_id); $('#unit_id').val(datum.unit_id);
$('#unit_nm').val(datum.unit_nm); $('#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> </script>
</fieldset> </fieldset>
</form> </form>
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<tr> <tr>
<th>ID</th> <th>ID</th>
<th>Kode</th> <th>Kode</th>
<th>Subjek</th> <th>Penyetor</th>
<th>Objek</th> <th>Objek</th>
<th>Uraian</th> <th>Uraian</th>
<th>Rekening</th> <th>Rekening</th>
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown">e-Payment<b class="caret"></b></a> <a href="#" class="dropdown-toggle" data-toggle="dropdown">e-Payment<b class="caret"></b></a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="/arinvoice">No. Bayar</a></li> <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> <li><a href="/op">Objek</a></li>
</ul> </ul>
</li> </li>
...@@ -73,6 +73,7 @@ ...@@ -73,6 +73,7 @@
<li><a href="/usergroup">User-Group</a></li> <li><a href="/usergroup">User-Group</a></li>
<li><a href="/groupperm">Group Permission</a></li> <li><a href="/groupperm">Group Permission</a></li>
<li><a href="/skpd">Unit Kerja/OPD</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="/jabatan">Jabatan</a></li>
<li><a href="/pegawai">Pegawai</a></li> <li><a href="/pegawai">Pegawai</a></li>
<li><a href="/rekening">Kode Rekening</a></li> <li><a href="/rekening">Kode Rekening</a></li>
......
...@@ -59,9 +59,6 @@ ...@@ -59,9 +59,6 @@
</div> </div>
<!--kode -------------------------------> <!--kode ------------------------------->
<div class="form-group" tal:define="field form['kode']" id="item-${field.oid}"> <div class="form-group" tal:define="field form['kode']" id="item-${field.oid}">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${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">
${structure:field.serialize()} ${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
...@@ -71,9 +68,6 @@ ...@@ -71,9 +68,6 @@
</div> </div>
<!--nama -------------------------------> <!--nama ------------------------------->
<div class="form-group" tal:define="field form['nama']" id="item-${field.oid}"> <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"> <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
......
...@@ -71,9 +71,6 @@ ...@@ -71,9 +71,6 @@
</div> </div>
<!--nama -------------------------------> <!--nama ------------------------------->
<div class="form-group" tal:define="field form['nama']" id="item-${field.oid}"> <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"> <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
...@@ -83,9 +80,6 @@ ...@@ -83,9 +80,6 @@
</div> </div>
<!--status -------------------------------> <!--status ------------------------------->
<div class="form-group" tal:define="field form['status']" id="item-${field.oid}"> <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"> <div class="col-md-9">
${structure:field.serialize()} ${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<thead> <thead>
<tr> <tr>
<th>ID</th> <th>ID</th>
<th>Kode Subjek</th> <th>Kode Penyetor</th>
<th>Kode Objek</th> <th>Kode Objek</th>
<th>Uraian</th> <th>Uraian</th>
<th>Rekening</th> <th>Rekening</th>
......
...@@ -16,12 +16,26 @@ ...@@ -16,12 +16,26 @@
<div class="col-md-13"> <div class="col-md-13">
<!--npwpd -------------------------------> <!--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}"> <label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">
${field.title}<span id="error-${field.oid}" class="text text-danger" ${field.title}<span id="error-${field.oid}" class="text text-danger"
tal:condition="field.required">&nbsp*</span></label> tal:condition="field.required">&nbsp*</span></label>
<div class="col-md-8"> <div class="col-md-9">
${structure:field.serialize()} ${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" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> ${error}</p>
...@@ -30,25 +44,40 @@ ...@@ -30,25 +44,40 @@
<!--Bulan dan Tahun -------------------------------> <!--Bulan dan Tahun ------------------------------->
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3">Periode :<span class="text text-danger">&nbsp*</span></label> <!--Bulan ------------------------------->
<div class="col-md-4" tal:define="field form['m_pjk_bln']" id="item-${field.oid}"> <label class="control-label col-md-3">
<label for="${field.oid}" class="control-label col-md-4" id="req-${field.oid}">${field.title}</label> Periode <span class="text text-danger">&nbsp*</span></label>
<div class="col-md-7"> <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()} ${structure:field.serialize()}
<p id="error-${field.oid}" class="help-block" tal:condition="field.error" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> ${error}</p>
</div> </div>
</div> <!--Tahun ------------------------------->
<div class="col-md-4" tal:define="field form['m_pjk_thn']" id="item-${field.oid}"> <label for="m_pjk_thn" class="control-label col-md-2" id="req-m_pjk_thn">
<label for="${field.oid}" class="control-label col-md-3" id="req-${field.oid}">${field.title}</label> Tahun </label>
<div class="col-md-9"> <div class="col-md-3" tal:define="field form['m_pjk_thn']" id="item-${field.oid}">
${structure:field.serialize()} ${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" <p id="error-${field.oid}" class="help-block" tal:condition="field.error"
tal:repeat="error field.error.messages()"> tal:repeat="error field.error.messages()">
${error}</p> ${error}</p>
</div> </div>
</div>
</div> </div>
<!--g-recaptcha -------------------------------> <!--g-recaptcha ------------------------------->
<!--div class="form-group"> <!--div class="form-group">
...@@ -67,209 +96,10 @@ ...@@ -67,209 +96,10 @@
value="cancel">Batal</button> value="cancel">Batal</button>
</div> </div>
</div><hr> </div>
<!--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> </fieldset>
</form> </form>
<div tal:content="structure form"/>
</div> </div>
</html> </html>
<html metal:use-macro="load: ../base.pt"> <html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content"> <div metal:fill-slot="content" class="form-550">
<h1>Edit PAP</h1> <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 tal:content="structure form"/>
</div> </div>
</html> </html>
...@@ -81,354 +81,6 @@ ...@@ -81,354 +81,6 @@
value="cancel">Batal</button> value="cancel">Batal</button>
</div> </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>
</div> </div>
......
<html metal:use-macro="load: ../base.pt"> <html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550"> <div metal:fill-slot="content" class="form-550">
<script src="https://www.google.com/recaptcha/api.js" async defer></script> <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> <hr>
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8" <form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal"> class="form-horizontal">
...@@ -87,38 +88,70 @@ ...@@ -87,38 +88,70 @@
<!--kd_bayar -------------------------------> <!--kd_bayar ------------------------------->
<label for="kd_bayar" class="control-label col-md-3" id="req-kd_bayar"> <label for="kd_bayar" class="control-label col-md-3" id="req-kd_bayar">
Kode Bayar </label> Kode Bayar </label>
<div class="col-md-4"> <div class="col-md-4" tal:define="field form['kd_bayar']" id="item-${field.oid}">
<input id="kd_bayar" class=" form-control " readonly type="text" value="" name="kd_bayar"> ${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>
<!--tg_bayar_bank -------------------------------> <!--tg_bayar_bank ------------------------------->
<label for="tg_bayar_bank" class="control-label col-md-2" id="req-tg_bayar_bank"> <label for="tg_bayar_bank" class="control-label col-md-2" id="req-tg_bayar_bank">
Tgl Bayar </label> Tgl Bayar </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['tg_bayar_bank']" id="item-${field.oid}">
<input id="tg_bayar_bank" class=" form-control " readonly type="text" value="" name="tg_bayar_bank"> ${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>
<div class="form-group"> <div class="form-group">
<!--no_rangka -------------------------------> <!--no_rangka1 ------------------------------->
<label for="no_rangka1" class="control-label col-md-3" id="req-no_rangka1"> <label for="no_rangka1" class="control-label col-md-3" id="req-no_rangka1">
No Rangka </label> No Rangka </label>
<div class="col-md-4"> <div class="col-md-4" tal:define="field form['no_rangka1']" id="item-${field.oid}">
<input id="no_rangka1" class=" form-control " readonly type="text" value="" name="no_rangka1"> ${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>
<!--no_polisi -------------------------------> <!--no_polisi ------------------------------->
<label for="no_polisi" class="control-label col-md-2" id="req-no_polisi"> <label for="no_polisi" class="control-label col-md-2" id="req-no_polisi">
No Polisi </label> No Polisi </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['no_polisi']" id="item-${field.oid}">
<input id="no_polisi" class=" form-control " readonly type="text" value="" name="no_polisi"> ${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>
<div class="form-group"> <div class="form-group">
<!--no_ktp -------------------------------> <!--no_ktp1 ------------------------------->
<label for="no_ktp1" class="control-label col-md-3" id="req-no_ktp1"> <label for="no_ktp1" class="control-label col-md-3" id="req-no_ktp">
No Identitas </label> No Identitas </label>
<div class="col-md-9"> <div class="col-md-9" tal:define="field form['no_ktp1']" id="item-${field.oid}">
<input id="no_ktp1" class=" form-control " readonly type="text" value="" name="no_ktp1"> ${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>
...@@ -126,8 +159,14 @@ ...@@ -126,8 +159,14 @@
<!--ket -------------------------------> <!--ket ------------------------------->
<label for="ket" class="control-label col-md-3" id="req-ket"> <label for="ket" class="control-label col-md-3" id="req-ket">
Keterangan </label> Keterangan </label>
<div class="col-md-9"> <div class="col-md-9" tal:define="field form['ket']" id="item-${field.oid}">
<input id="ket" class=" form-control " readonly type="text" value="" name="ket"> ${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>
...@@ -135,8 +174,14 @@ ...@@ -135,8 +174,14 @@
<!--nm_pemilik -------------------------------> <!--nm_pemilik ------------------------------->
<label for="nm_pemilik" class="control-label col-md-3" id="req-nm_pemilik"> <label for="nm_pemilik" class="control-label col-md-3" id="req-nm_pemilik">
Nama Pemilik </label> Nama Pemilik </label>
<div class="col-md-9"> <div class="col-md-9" tal:define="field form['nm_pemilik']" id="item-${field.oid}">
<input id="nm_pemilik" class=" form-control " readonly type="text" value="" name="nm_pemilik"> ${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>
...@@ -144,14 +189,26 @@ ...@@ -144,14 +189,26 @@
<!--warna_tnkb -------------------------------> <!--warna_tnkb ------------------------------->
<label for="warna_tnkb" class="control-label col-md-3" id="req-warna_tnkb"> <label for="warna_tnkb" class="control-label col-md-3" id="req-warna_tnkb">
Warna TNKB </label> Warna TNKB </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['warna_tnkb']" id="item-${field.oid}">
<input id="warna_tnkb" class=" form-control " readonly type="text" value="" name="warna_tnkb"> ${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>
<!--nm_merek_kb -------------------------------> <!--nm_merek_kb ------------------------------->
<label for="nm_merek_kb" class="control-label col-md-3" id="req-nm_merek_kb"> <label for="nm_merek_kb" class="control-label col-md-3" id="req-nm_merek_kb">
Merk Kendaraan </label> Merk Kendaraan </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['nm_merek_kb']" id="item-${field.oid}">
<input id="nm_merek_kb" class=" form-control " readonly type="text" value="" name="nm_merek_kb"> ${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>
...@@ -159,14 +216,26 @@ ...@@ -159,14 +216,26 @@
<!--nm_model_kb -------------------------------> <!--nm_model_kb ------------------------------->
<label for="nm_model_kb" class="control-label col-md-3" id="req-nm_model_kb"> <label for="nm_model_kb" class="control-label col-md-3" id="req-nm_model_kb">
Model Kendaraan </label> Model Kendaraan </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['nm_model_kb']" id="item-${field.oid}">
<input id="nm_model_kb" class=" form-control " readonly type="text" value="" name="nm_model_kb"> ${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>
<!--th_buatan -------------------------------> <!--th_buatan ------------------------------->
<label for="th_buatan" class="control-label col-md-3" id="req-th_buatan"> <label for="th_buatan" class="control-label col-md-3" id="req-th_buatan">
Thn Pembuatan </label> Thn Pembuatan </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['th_buatan']" id="item-${field.oid}">
<input id="th_buatan" class=" form-control " readonly type="text" value="" name="th_buatan"> ${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>
...@@ -174,14 +243,26 @@ ...@@ -174,14 +243,26 @@
<!--tg_akhir_pjklm -------------------------------> <!--tg_akhir_pjklm ------------------------------->
<label for="tg_akhir_pjklm" class="control-label col-md-3" id="req-tg_akhir_pjklm"> <label for="tg_akhir_pjklm" class="control-label col-md-3" id="req-tg_akhir_pjklm">
Tgl Pajak Lama </label> Tgl Pajak Lama </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['tg_akhir_pjklm']" id="item-${field.oid}">
<input id="tg_akhir_pjklm" class=" form-control " readonly type="text" value="" name="tg_akhir_pjklm"> ${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>
<!--tg_akhir_pjkbr -------------------------------> <!--tg_akhir_pjkbr ------------------------------->
<label for="tg_akhir_pjkbr" class="control-label col-md-3" id="req-tg_akhir_pjkbr"> <label for="tg_akhir_pjkbr" class="control-label col-md-3" id="req-tg_akhir_pjkbr">
Tgl Pajak Baru </label> Tgl Pajak Baru </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['tg_akhir_pjkbr']" id="item-${field.oid}">
<input id="tg_akhir_pjkbr" class=" form-control " readonly type="text" value="" name="tg_akhir_pjkbr"> ${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>
...@@ -189,14 +270,26 @@ ...@@ -189,14 +270,26 @@
<!--bbn_pok -------------------------------> <!--bbn_pok ------------------------------->
<label for="bbn_pok" class="control-label col-md-3" id="req-bbn_pok"> <label for="bbn_pok" class="control-label col-md-3" id="req-bbn_pok">
Pokok BBN </label> Pokok BBN </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['bbn_pok']" id="item-${field.oid}">
<input id="bbn_pok" class=" form-control " readonly type="text" value="" name="bbn_pok"> ${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>
<!--bbn_den -------------------------------> <!--bbn_den ------------------------------->
<label for="bbn_den" class="control-label col-md-3" id="req-bbn_den"> <label for="bbn_den" class="control-label col-md-3" id="req-bbn_den">
Denda BBN </label> Denda BBN </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['bbn_den']" id="item-${field.oid}">
<input id="bbn_den" class=" form-control " readonly type="text" value="" name="bbn_den"> ${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>
...@@ -204,14 +297,26 @@ ...@@ -204,14 +297,26 @@
<!--pkb_pok -------------------------------> <!--pkb_pok ------------------------------->
<label for="pkb_pok" class="control-label col-md-3" id="req-pkb_pok"> <label for="pkb_pok" class="control-label col-md-3" id="req-pkb_pok">
Pokok PKB </label> Pokok PKB </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['pkb_pok']" id="item-${field.oid}">
<input id="pkb_pok" class=" form-control " readonly type="text" value="" name="pkb_pok"> ${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>
<!--pkb_den -------------------------------> <!--pkb_den ------------------------------->
<label for="pkb_den" class="control-label col-md-3" id="req-pkb_den"> <label for="pkb_den" class="control-label col-md-3" id="req-pkb_den">
Denda PKB </label> Denda PKB </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['pkb_den']" id="item-${field.oid}">
<input id="pkb_den" class=" form-control " readonly type="text" value="" name="pkb_den"> ${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>
...@@ -219,14 +324,26 @@ ...@@ -219,14 +324,26 @@
<!--swd_pok -------------------------------> <!--swd_pok ------------------------------->
<label for="swd_pok" class="control-label col-md-3" id="req-swd_pok"> <label for="swd_pok" class="control-label col-md-3" id="req-swd_pok">
Pokok SWDKLLJ </label> Pokok SWDKLLJ </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['swd_pok']" id="item-${field.oid}">
<input id="swd_pok" class=" form-control " readonly type="text" value="" name="swd_pok"> ${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>
<!--swd_den -------------------------------> <!--swd_den ------------------------------->
<label for="swd_den" class="control-label col-md-3" id="req-swd_den"> <label for="swd_den" class="control-label col-md-3" id="req-swd_den">
Denda SWDKLLJ </label> Denda SWDKLLJ </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['swd_den']" id="item-${field.oid}">
<input id="swd_den" class=" form-control " readonly type="text" value="" name="swd_den"> ${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>
...@@ -234,14 +351,26 @@ ...@@ -234,14 +351,26 @@
<!--adm_stnk -------------------------------> <!--adm_stnk ------------------------------->
<label for="adm_stnk" class="control-label col-md-3" id="req-adm_stnk"> <label for="adm_stnk" class="control-label col-md-3" id="req-adm_stnk">
Adm. STNK </label> Adm. STNK </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['adm_stnk']" id="item-${field.oid}">
<input id="adm_stnk" class=" form-control " readonly type="text" value="" name="adm_stnk"> ${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>
<!--adm_tnkb -------------------------------> <!--adm_tnkb ------------------------------->
<label for="adm_tnkb" class="control-label col-md-3" id="req-adm_tnkb"> <label for="adm_tnkb" class="control-label col-md-3" id="req-adm_tnkb">
Adm. TNKB </label> Adm. TNKB </label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['adm_tnkb']" id="item-${field.oid}">
<input id="adm_tnkb" class=" form-control " readonly type="text" value="" name="adm_tnkb"> ${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>
...@@ -249,14 +378,26 @@ ...@@ -249,14 +378,26 @@
<!--jumlah -------------------------------> <!--jumlah ------------------------------->
<label for="jumlah" class="control-label col-md-3" id="req-jumlah"> <label for="jumlah" class="control-label col-md-3" id="req-jumlah">
Jumlah </label> Jumlah </label>
<div class="col-md-4"> <div class="col-md-4" tal:define="field form['jumlah']" id="item-${field.oid}">
<input id="jumlah" class=" form-control " readonly type="text" value="" name="jumlah"> ${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>
<!--kd_status -------------------------------> <!--kd_status ------------------------------->
<label for="kd_status" class="control-label col-md-2" id="req-kd_status"> <label for="kd_status" class="control-label col-md-2" id="req-kd_status">
Status.Bayar</label> Status.Bayar</label>
<div class="col-md-3"> <div class="col-md-3" tal:define="field form['kd_status']" id="item-${field.oid}">
<input id="kd_status" class=" form-control " readonly type="text" value="" name="kd_status"> ${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>
...@@ -264,8 +405,14 @@ ...@@ -264,8 +405,14 @@
<!--kd_trn_bank -------------------------------> <!--kd_trn_bank ------------------------------->
<label for="kd_trn_bank" class="control-label col-md-3" id="req-kd_trn_bank"> <label for="kd_trn_bank" class="control-label col-md-3" id="req-kd_trn_bank">
NTB </label> NTB </label>
<div class="col-md-9"> <div class="col-md-9" tal:define="field form['kd_trn_bank']" id="item-${field.oid}">
<input id="kd_trn_bank" class=" form-control " readonly type="text" value="" name="kd_trn_bank"> ${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>
...@@ -273,8 +420,14 @@ ...@@ -273,8 +420,14 @@
<!--kd_trn_dpd -------------------------------> <!--kd_trn_dpd ------------------------------->
<label for="kd_trn_dpd" class="control-label col-md-3" id="req-kd_trn_dpd"> <label for="kd_trn_dpd" class="control-label col-md-3" id="req-kd_trn_dpd">
NTP </label> NTP </label>
<div class="col-md-9"> <div class="col-md-9" tal:define="field form['kd_trn_dpd']" id="item-${field.oid}">
<input id="kd_trn_dpd" class=" form-control " readonly type="text" value="" name="kd_trn_dpd"> ${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>
......
<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"> <html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550"> <div metal:fill-slot="content" class="form-550">
<h4>Tambah Subjek</h4> <h4>Tambah Penyetor</h4>
<hr> <hr>
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8" <form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal"> class="form-horizontal">
...@@ -129,6 +129,18 @@ ...@@ -129,6 +129,18 @@
${error}</p> ${error}</p>
</div> </div>
</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 -------------------------------> <!--Button ------------------------------->
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"> <label class="control-label col-md-3">
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<h3 class="panel-title">Warning</h3> <h3 class="panel-title">Warning</h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">
Hapus Subjek # ${row.kode} ${row.nama} ? Hapus Penyetor # ${row.kode} ${row.nama} ?
</div> </div>
</div> </div>
......
<html metal:use-macro="load: ../base.pt"> <html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550"> <div metal:fill-slot="content" class="form-550">
<h4>Edit Subjek</h4> <h4>Edit Penyetor</h4>
<hr> <hr>
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8" <form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="form-horizontal"> class="form-horizontal">
...@@ -129,6 +129,18 @@ ...@@ -129,6 +129,18 @@
${error}</p> ${error}</p>
</div> </div>
</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 -------------------------------> <!--Button ------------------------------->
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3"> <label class="control-label col-md-3">
...@@ -142,6 +154,12 @@ ...@@ -142,6 +154,12 @@
</div> </div>
</div> </div>
</div> </div>
<script>
var email = $('#email').val();
if(email!=''){
$('#email').attr('readonly', true)
}
</script>
</fieldset> </fieldset>
</form> </form>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div metal:fill-slot="content"> <div metal:fill-slot="content">
<link href="/static/datatables/extensions/TableTools/css/dataTables.tableTools.min.css" rel="stylesheet"> <link href="/static/datatables/extensions/TableTools/css/dataTables.tableTools.min.css" rel="stylesheet">
<link href="/static/datatables/media/css/dataTables.bootstrap.css" rel="stylesheet"> <link href="/static/datatables/media/css/dataTables.bootstrap.css" rel="stylesheet">
<h4>Subjek</h4> <h4>Penyetor</h4>
<hr> <hr>
<div class="container"> <div class="container">
<!--form class="form-inline" role="form" id="frm_upload" name="frm_upload"> <!--form class="form-inline" role="form" id="frm_upload" name="frm_upload">
......
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 ( ...@@ -12,6 +12,7 @@ from deform import (
widget, widget,
ValidationFailure, ValidationFailure,
) )
from ..tools import (email_validator,BULANS, captcha_submit, get_settings)
from ..models import DBSession, User, UserGroup, Group from ..models import DBSession, User, UserGroup, Group
from ..models.isipkd import( from ..models.isipkd import(
SubjekPajak, SubjekPajak,
...@@ -139,6 +140,13 @@ class AddSchema(colander.Schema): ...@@ -139,6 +140,13 @@ class AddSchema(colander.Schema):
missing = colander.drop, missing = colander.drop,
title='Buat Login' title='Buat Login'
) )
email = colander.SchemaNode(
colander.String(),
validator=email_validator,
title = 'E-Mail',
missing=colander.drop,
oid = 'email'
)
class EditSchema(AddSchema): class EditSchema(AddSchema):
id = colander.SchemaNode(colander.Integer(), id = colander.SchemaNode(colander.Integer(),
...@@ -160,12 +168,22 @@ def save(request,values, row=None): ...@@ -160,12 +168,22 @@ def save(request,values, row=None):
if 'login' in values and values['login']: # and int(values['user_id'])==0: if 'login' in values and values['login']: # and int(values['user_id'])==0:
login = User() login = User()
login.user_password = values['kode'] login.user_password = values['kode']
login.status = values['status'] login.status = values['status']
login.user_name = values['kode'] login.user_name = values['email']
login.email = values['kode']+'@ws' login.email = values['email']
DBSession.add(login) DBSession.add(login)
DBSession.flush() 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: if not row:
row = SubjekPajak() row = SubjekPajak()
row.from_dict(values) row.from_dict(values)
...@@ -181,24 +199,15 @@ def save(request,values, row=None): ...@@ -181,24 +199,15 @@ def save(request,values, row=None):
DBSession.add(row) DBSession.add(row)
DBSession.flush() 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 return row
def save_request(values, request, row=None): def save_request(values, request, row=None):
if 'id' in request.matchdict: if 'id' in request.matchdict:
values['id'] = request.matchdict['id'] values['id'] = request.matchdict['id']
row = save(request, values, row) 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): def route_list(request):
return HTTPFound(location=request.route_url('wp')) return HTTPFound(location=request.route_url('wp'))
...@@ -215,12 +224,38 @@ def view_add(request): ...@@ -215,12 +224,38 @@ def view_add(request):
if request.POST: if request.POST:
if 'simpan' in request.POST: if 'simpan' in request.POST:
controls = request.POST.items() 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: try:
c = form.validate(controls) c = form.validate(controls)
except ValidationFailure, e: except ValidationFailure, e:
return dict(form=form) return dict(form=form)
#request.session[SESS_ADD_FAILED] = e.render() #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) save_request(dict(controls), request)
return route_list(request) return route_list(request)
elif SESS_ADD_FAILED in request.session: elif SESS_ADD_FAILED in request.session:
...@@ -234,7 +269,7 @@ def query_id(request): ...@@ -234,7 +269,7 @@ def query_id(request):
return DBSession.query(SubjekPajak).filter_by(id=request.matchdict['id']) return DBSession.query(SubjekPajak).filter_by(id=request.matchdict['id'])
def id_not_found(request): def id_not_found(request):
msg = 'Subjek ID %s not found.' % request.matchdict['id'] msg = 'Penyetor ID %s not found.' % request.matchdict['id']
request.session.flash(msg, 'error') request.session.flash(msg, 'error')
return route_list(request) return route_list(request)
...@@ -242,19 +277,45 @@ def id_not_found(request): ...@@ -242,19 +277,45 @@ def id_not_found(request):
permission='edit') permission='edit')
def view_edit(request): def view_edit(request):
row = query_id(request).first() row = query_id(request).first()
id = row.id uid = row.id
if not row: if not row:
return id_not_found(request) return id_not_found(request)
x = DBSession.query(ARInvoice).filter(ARInvoice.subjek_pajak_id==id).first() x = DBSession.query(ARInvoice).filter(ARInvoice.subjek_pajak_id==uid).first()
if x: 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) return route_list(request)
form = get_form(request, EditSchema) form = get_form(request, EditSchema)
if request.POST: if request.POST:
if 'simpan' in request.POST: if 'simpan' in request.POST:
controls = request.POST.items() 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: try:
c = form.validate(controls) c = form.validate(controls)
except ValidationFailure, e: except ValidationFailure, e:
...@@ -267,6 +328,41 @@ def view_edit(request): ...@@ -267,6 +328,41 @@ def view_edit(request):
elif SESS_EDIT_FAILED in request.session: elif SESS_EDIT_FAILED in request.session:
return session_failed(request, SESS_EDIT_FAILED) return session_failed(request, SESS_EDIT_FAILED)
values = row.to_dict() 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) form.set_appstruct(values)
return dict(form=form) return dict(form=form)
...@@ -282,7 +378,7 @@ def view_delete(request): ...@@ -282,7 +378,7 @@ def view_delete(request):
x = DBSession.query(ARInvoice).filter(ARInvoice.subjek_pajak_id==id).first() x = DBSession.query(ARInvoice).filter(ARInvoice.subjek_pajak_id==id).first()
if x: 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) return route_list(request)
if not row: if not row:
...@@ -290,7 +386,7 @@ def view_delete(request): ...@@ -290,7 +386,7 @@ def view_delete(request):
form = Form(colander.Schema(), buttons=('delete','cancel')) form = Form(colander.Schema(), buttons=('delete','cancel'))
if request.POST: if request.POST:
if 'delete' in request.POST: if 'delete' in request.POST:
msg = 'Subjek %s sudah dihapus.' % (row.kode) msg = 'Penyetor %s sudah dihapus.' % (row.kode)
q.delete() q.delete()
DBSession.flush() DBSession.flush()
request.session.flash(msg) request.session.flash(msg)
...@@ -330,3 +426,16 @@ def view_act(request): ...@@ -330,3 +426,16 @@ def view_act(request):
d['value'] = k[1] d['value'] = k[1]
r.append(d) r.append(d)
return r 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!