Commit fdf95065 by aagusti

wp

1 parent ce0b07d1
...@@ -90,7 +90,7 @@ class DefaultModel(CommonModel): ...@@ -90,7 +90,7 @@ class DefaultModel(CommonModel):
cls.query_id(id).delete() cls.query_id(id).delete()
class KodeModel(DefaultModel): class KodeModel(DefaultModel):
kode = Column(String(64), unique=True) kode = Column(String(64))
@classmethod @classmethod
def query_kode(cls, kode): def query_kode(cls, kode):
return cls.query().filter_by(kode=kode) return cls.query().filter_by(kode=kode)
......
...@@ -12,15 +12,16 @@ from sqlalchemy import ( ...@@ -12,15 +12,16 @@ from sqlalchemy import (
ForeignKey, ForeignKey,
UniqueConstraint UniqueConstraint
) )
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship, backref
from ..models import( from ..models import(
DBSession,
DefaultModel, DefaultModel,
KodeModel, KodeModel,
NamaModel, NamaModel,
Base, Base,
User
) )
##################### ###########################
# #
########################### ###########################
class Pkb(DefaultModel,Base): class Pkb(DefaultModel,Base):
...@@ -65,6 +66,7 @@ class UnitRekening(Base): ...@@ -65,6 +66,7 @@ class UnitRekening(Base):
class Jabatan(NamaModel, Base): class Jabatan(NamaModel, Base):
__tablename__ = 'jabatans' __tablename__ = 'jabatans'
status = Column(Integer, default=1) status = Column(Integer, default=1)
UniqueConstraint('kode')
#nama = Column(String(128)) #nama = Column(String(128))
class Pegawai(NamaModel, Base): class Pegawai(NamaModel, Base):
...@@ -73,7 +75,8 @@ class Pegawai(NamaModel, Base): ...@@ -73,7 +75,8 @@ class Pegawai(NamaModel, Base):
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)
UniqueConstraint('kode')
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)
...@@ -98,15 +101,27 @@ class Wilayah(NamaModel,Base): ...@@ -98,15 +101,27 @@ class Wilayah(NamaModel,Base):
parent = relationship("Wilayah", parent = relationship("Wilayah",
backref="child", backref="child",
remote_side=[id]) remote_side=[id])
class SubjekPajak(NamaModel, Base): class SubjekPajak(NamaModel, Base):
__tablename__ = 'subjekpajaks' __tablename__ = 'subjekpajaks'
#nama = Column(String(128))
status = Column(Integer, default=1) status = Column(Integer, default=1)
alamat_1 = Column(String(128)) alamat_1 = Column(String(128))
alamat_2 = Column(String(128)) alamat_2 = Column(String(128))
kelurahan = Column(String(128))
kecamatan = Column(String(128))
kota = Column(String(128))
user_id = Column(Integer, ForeignKey('users.id'), nullable=True)
user = relationship(User,backref=backref('subjekpajak'))
UniqueConstraint('kode')
@classmethod
def get_by_user(cls, user_id):
return DBSession.query(cls).filter(cls.user_id==user_id).first()
class ObjekPajak(NamaModel, Base): class ObjekPajak(NamaModel, Base):
__tablename__ = 'objekpajaks' __tablename__ = 'objekpajaks'
__table_args__ = (UniqueConstraint('subjekpajak_id', 'kode',
name='objekpajak_kode_uq'),
)
status = Column(Integer, default=1) status = Column(Integer, default=1)
alamat_1 = Column(String(128)) alamat_1 = Column(String(128))
alamat_2 = Column(String(128)) alamat_2 = Column(String(128))
...@@ -114,10 +129,15 @@ class ObjekPajak(NamaModel, Base): ...@@ -114,10 +129,15 @@ class ObjekPajak(NamaModel, Base):
unit_id = Column(Integer,ForeignKey("units.id")) unit_id = Column(Integer,ForeignKey("units.id"))
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"))
subjekpajak = relationship(SubjekPajak, backref=backref('objekpajak'))
pajak = relationship(Pajak, backref=backref('objekpajak'))
wilayah = relationship(Wilayah, backref=backref('objekpajak'))
class Sptpd(Base): class Sptpd(Base):
__tablename__ = 'sptpds' __tablename__ = 'sptpds'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
kode = Column(String, unique=True)
unit_id = Column(Integer) unit_id = Column(Integer)
subjek_pajak_id = Column(Integer, ForeignKey("subjekpajaks.id")) subjek_pajak_id = Column(Integer, ForeignKey("subjekpajaks.id"))
objek_pajak_id = Column(Integer, ForeignKey("objekpajaks.id")) objek_pajak_id = Column(Integer, ForeignKey("objekpajaks.id"))
...@@ -155,7 +175,7 @@ class Sts(Base): ...@@ -155,7 +175,7 @@ class Sts(Base):
class StsItem(Base): class StsItem(Base):
__tablename__ = 'sts_item' __tablename__ = 'sts_item'
sts_id = Column(Integer, primary_key=True) sts_id = Column(Integer, primary_key=True)
sptpd_id = Column(Integer, primary_key=True) sspd_id = Column(Integer, primary_key=True)
class SSPD(Base): class SSPD(Base):
__tablename__ = 'sspd' __tablename__ = 'sspd'
......
PajakData = {
'options': ['insert if not exists'],
'csv': 'pajak.csv',
}
id,kode,uraian,level_id,is_summary id,kode,nama,level_id,is_summary
1,4.,PENDAPATAN DAERAH,1,1 1,4.,PENDAPATAN DAERAH,1,1
2,4.1.,PENDAPATAN ASLI DAERAH,2,1 2,4.1.,PENDAPATAN ASLI DAERAH,2,1
3,4.1.1.,Pajak Daerah,3,1 3,4.1.1.,Pajak Daerah,3,1
......
id,kode,uraian,level_id,is_summary id,kode,nama,level_id,is_summary
1,1.,URUSAN WAJIB,1,1 1,1.,URUSAN WAJIB,1,1
2,1.01.,Pendidikan,2,1 2,1.01.,Pendidikan,2,1
3,1.01.01.,DINAS PENDIDIKAN,3,1 3,1.01.01.,DINAS PENDIDIKAN,3,1
......
...@@ -10,6 +10,8 @@ from data.routes import RouteData ...@@ -10,6 +10,8 @@ from data.routes import RouteData
from data.apps import AppsData from data.apps import AppsData
from data.unit import UnitData from data.unit import UnitData
from data.rekening import RekeningData from data.rekening import RekeningData
from data.pajak import PajakData
from DbTools import ( from DbTools import (
get_pkeys, get_pkeys,
execute, execute,
...@@ -30,6 +32,7 @@ fixtures = [ ...@@ -30,6 +32,7 @@ fixtures = [
('routes', RouteData), ('routes', RouteData),
('units', UnitData), ('units', UnitData),
('rekenings', RekeningData), ('rekenings', RekeningData),
('pajaks', PajakData),
] ]
def insert(): def insert():
......
from email.utils import parseaddr
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..models import DBSession,User
from ..models.isipkd import(
Wilayah, Jabatan, Unit, Rekening, SubjekPajak, Pajak
)
def email_validator(node, value):
name, email = parseaddr(value)
if not email or email.find('@') < 0:
raise colander.Invalid(node, 'Invalid email format')
STATUS = (
(1, 'Aktif'),
(0, 'Inaktif'),
)
@colander.deferred
def deferred_status(node, kw):
values = kw.get('daftar_status', [])
return widget.SelectWidget(values=values)
SUMMARIES = (
(1, 'Header'),
(0, 'Detail'),
)
@colander.deferred
def deferred_summary(node, kw):
values = kw.get('daftar_summary', [])
return widget.SelectWidget(values=values)
def daftar_wilayah():
rows = DBSession.query(Wilayah.id, Wilayah.nama).all()
r=[]
d = (0,'Pilih Wilayah')
r.append(d)
for row in rows:
d = (row.id, row.nama)
r.append(d)
return r
@colander.deferred
def deferred_wilayah(node, kw):
values = kw.get('daftar_wilayah',[])
return widget.SelectWidget(values=values)
def daftar_jabatan():
rows = DBSession.query(Jabatan.id, Jabatan.nama).all()
r=[]
d = (0,'Pilih Jabatan')
r.append(d)
for row in rows:
d = (row.id, row.nama)
r.append(d)
return r
@colander.deferred
def deferred_jabatan(node, kw):
values = kw.get('daftar_jabatan',[])
return widget.SelectWidget(values=values)
def daftar_unit():
rows = DBSession.query(Unit).filter_by(level_id=3).all()
r=[]
d = (0,'Pilih SKPD')
r.append(d)
for row in rows:
d = (row.id, row.kode+':'+row.nama)
r.append(d)
return r
@colander.deferred
def deferred_unit(node, kw):
values = kw.get('daftar_unit',[])
return widget.SelectWidget(values=values)
def daftar_rekening():
rows = DBSession.query(Rekening).filter_by(is_summary=0).all()
r=[]
d = (0,'Pilih REKENING')
r.append(d)
for row in rows:
d = (row.id, row.kode+':'+row.nama)
r.append(d)
return r
@colander.deferred
def deferred_rekening(node, kw):
values = kw.get('daftar_rekening',[])
return widget.SelectWidget(values=values)
def daftar_user():
rows = DBSession.query(User).all()
r=[]
d = (0,'Pilih USER')
r.append(d)
for row in rows:
d = (row.id, row.email+':'+row.user_name)
r.append(d)
return r
@colander.deferred
def deferred_user(node, kw):
values = kw.get('daftar_user',[])
return widget.SelectWidget(values=values)
def daftar_pajak():
rows = DBSession.query(Pajak).all()
r=[]
d = (0,'Pilih PAJAK')
r.append(d)
for row in rows:
d = (row.id, row.kode+':'+row.nama)
r.append(d)
return r
@colander.deferred
def deferred_pajak(node, kw):
values = kw.get('daftar_pajak',[])
return widget.SelectWidget(values=values)
def daftar_subjekpajak():
rows = DBSession.query(SubjekPajak).all()
r=[]
d = (0,'Pilih SP')
r.append(d)
for row in rows:
d = (row.id, row.kode+':'+row.nama)
r.append(d)
return r
@colander.deferred
def deferred_subjekpajak(node, kw):
values = kw.get('daftar_subjekpajak',[])
return widget.SelectWidget(values=values)
\ No newline at end of file \ No newline at end of file
...@@ -16,6 +16,8 @@ from ..models import DBSession ...@@ -16,6 +16,8 @@ from ..models import DBSession
from ..models.isipkd import( from ..models.isipkd import(
Jabatan, Jabatan,
) )
from daftar import STATUS, deferred_status
from datatables import ( from datatables import (
ColumnDT, DataTables) ColumnDT, DataTables)
...@@ -23,8 +25,6 @@ from datatables import ( ...@@ -23,8 +25,6 @@ from datatables import (
SESS_ADD_FAILED = 'Gagal tambah jabatan' SESS_ADD_FAILED = 'Gagal tambah jabatan'
SESS_EDIT_FAILED = 'Gagal edit jabatan' SESS_EDIT_FAILED = 'Gagal edit jabatan'
from ..tools import STATUS
######## ########
# List # # List #
######## ########
...@@ -37,11 +37,6 @@ def view_list(request): ...@@ -37,11 +37,6 @@ def view_list(request):
####### #######
# Add # # Add #
####### #######
def email_validator(node, value):
name, email = parseaddr(value)
if not email or email.find('@') < 0:
raise colander.Invalid(node, 'Invalid email format')
def form_validator(form, value): def form_validator(form, value):
def err_kode(): def err_kode():
raise colander.Invalid(form, raise colander.Invalid(form,
...@@ -74,11 +69,6 @@ def form_validator(form, value): ...@@ -74,11 +69,6 @@ def form_validator(form, value):
elif found: elif found:
err_name() err_name()
@colander.deferred
def deferred_summary(node, kw):
values = kw.get('daftar_summary', [])
return widget.SelectWidget(values=values)
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String(), colander.String(),
...@@ -90,7 +80,7 @@ class AddSchema(colander.Schema): ...@@ -90,7 +80,7 @@ class AddSchema(colander.Schema):
status = colander.SchemaNode( status = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=STATUS), widget=deferred_status,
title="Status") title="Status")
......
...@@ -24,10 +24,17 @@ from ..models.isipkd import( ...@@ -24,10 +24,17 @@ from ..models.isipkd import(
from datatables import ( from datatables import (
ColumnDT, DataTables) ColumnDT, DataTables)
from daftar import (STATUS, deferred_status,
daftar_subjekpajak, deferred_subjekpajak,
daftar_wilayah, deferred_wilayah,
daftar_unit, deferred_unit,
daftar_pajak, deferred_pajak,
)
SESS_ADD_FAILED = 'Gagal tambah Objek Pajak' SESS_ADD_FAILED = 'Gagal tambah Objek Pajak'
SESS_EDIT_FAILED = 'Gagal edit Objek Pajak' SESS_EDIT_FAILED = 'Gagal edit Objek Pajak'
from ..tools import STATUS from daftar import STATUS
######## ########
# List # # List #
######## ########
...@@ -57,13 +64,15 @@ def form_validator(form, value): ...@@ -57,13 +64,15 @@ def form_validator(form, value):
r = q.first() r = q.first()
else: else:
r = None r = None
q = DBSession.query(ObjekPajak).filter_by(kode=value['kode']) q = DBSession.query(ObjekPajak).\
filter(ObjekPajak.kode==value['kode'],
ObjekPajak.subjekpajak_id==value['subjekpajak_id'])
found = q.first() found = q.first()
if r: if r:
if found and found.id != r.id: if found and found.id != r.id:
err_kode() err_kode()
elif found: elif found:
err_email() err_kode()
if 'nama' in value: # optional if 'nama' in value: # optional
found = ObjekPajak.get_by_nama(value['nama']) found = ObjekPajak.get_by_nama(value['nama'])
if r: if r:
...@@ -72,36 +81,26 @@ def form_validator(form, value): ...@@ -72,36 +81,26 @@ def form_validator(form, value):
elif found: elif found:
err_name() err_name()
@colander.deferred
def deferred_status(node, kw):
values = kw.get('daftar_status', [])
return widget.SelectWidget(values=values)
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
unit_select = DBSession.query(Unit.id, Unit.nama).filter(Unit.level_id>2).all()
wilayah_select = DBSession.query(Wilayah.id, Wilayah.nama).filter(Wilayah.level_id>1).all()
pajak_select = DBSession.query(Pajak.id, Pajak.nama).all()
sp_select = DBSession.query(SubjekPajak.id, SubjekPajak.nama).all()
subjekpajak_id = colander.SchemaNode( subjekpajak_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=sp_select), widget=deferred_subjekpajak,
title="Subjek Pajak" title="Subjek Pajak"
) )
wilayah_id = colander.SchemaNode( wilayah_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=wilayah_select), widget=deferred_wilayah,
title="Wilayah" title="Wilayah"
) )
unit_id = colander.SchemaNode( unit_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=unit_select), widget=deferred_unit,
title="SKPD/Unit Kerja" title="SKPD/Unit Kerja"
) )
pajak_id = colander.SchemaNode( pajak_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=pajak_select), widget=deferred_pajak,
title="Pajak" title="Pajak"
) )
kode = colander.SchemaNode( kode = colander.SchemaNode(
...@@ -113,7 +112,7 @@ class AddSchema(colander.Schema): ...@@ -113,7 +112,7 @@ class AddSchema(colander.Schema):
title="Uraian") title="Uraian")
status = colander.SchemaNode( status = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=STATUS), widget=deferred_status,
title="Status") title="Status")
class EditSchema(AddSchema): class EditSchema(AddSchema):
...@@ -124,7 +123,11 @@ class EditSchema(AddSchema): ...@@ -124,7 +123,11 @@ class EditSchema(AddSchema):
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 = schema.bind(daftar_status=STATUS) schema = schema.bind(daftar_status=STATUS,
daftar_subjekpajak=daftar_subjekpajak(),
daftar_pajak=daftar_pajak(),
daftar_unit=daftar_unit(),
daftar_wilayah=daftar_wilayah())
schema.request = request schema.request = request
return Form(schema, buttons=('simpan','batal')) return Form(schema, buttons=('simpan','batal'))
...@@ -238,16 +241,17 @@ def view_act(request): ...@@ -238,16 +241,17 @@ def view_act(request):
if url_dict['act']=='grid': if url_dict['act']=='grid':
columns = [] columns = []
columns.append(ColumnDT('id')) columns.append(ColumnDT('id'))
columns.append(ColumnDT('registrasi')) columns.append(ColumnDT('subjekpajak.kode'))
columns.append(ColumnDT('kode')) columns.append(ColumnDT('kode'))
columns.append(ColumnDT('nama')) columns.append(ColumnDT('nama'))
columns.append(ColumnDT('pajak')) columns.append(ColumnDT('pajak.kode'))
columns.append(ColumnDT('wilayah')) columns.append(ColumnDT('wilayah.nama'))
columns.append(ColumnDT('status')) columns.append(ColumnDT('status'))
query = DBSession.query(ObjekPajak.id, ObjekPajak.kode,ObjekPajak.nama, query = DBSession.query(ObjekPajak).join(SubjekPajak).join(Pajak).join(Wilayah)
""".id, ObjekPajak.kode,ObjekPajak.nama,
Rekening.kode.label('pajak'), SubjekPajak.kode.label('registrasi'), Rekening.kode.label('pajak'), SubjekPajak.kode.label('registrasi'),
Wilayah.nama.label('wilayah'), ObjekPajak.status).\ Wilayah.nama.label('wilayah'), ObjekPajak.status).\
join(SubjekPajak).join(Wilayah).join(Pajak).join(Rekening) join(SubjekPajak).join(Wilayah).join(Pajak).join(Rekening)
"""
rowTable = DataTables(req, ObjekPajak, query, columns) rowTable = DataTables(req, ObjekPajak, query, columns)
return rowTable.output_result() return rowTable.output_result()
...@@ -18,7 +18,7 @@ from ..models.isipkd import( ...@@ -18,7 +18,7 @@ from ..models.isipkd import(
Rekening Rekening
) )
from ..tools import STATUS from daftar import STATUS, deferred_status, daftar_rekening, deferred_rekening
from datatables import ( from datatables import (
ColumnDT, DataTables) ColumnDT, DataTables)
...@@ -61,11 +61,6 @@ def form_validator(form, value): ...@@ -61,11 +61,6 @@ def form_validator(form, value):
if found and found.id != r.id: if found and found.id != r.id:
err_kode() err_kode()
@colander.deferred
def deferred_status(node, kw):
values = kw.get('daftar_status', [])
return widget.SelectWidget(values=values)
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
rekening_select = DBSession.query(Rekening.id,Rekening.nama).\ rekening_select = DBSession.query(Rekening.id,Rekening.nama).\
filter(Rekening.level_id==5).all() filter(Rekening.level_id==5).all()
...@@ -77,7 +72,7 @@ class AddSchema(colander.Schema): ...@@ -77,7 +72,7 @@ class AddSchema(colander.Schema):
rekening_id = colander.SchemaNode( rekening_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=rekening_select), widget=deferred_rekening,
title="Rekening") title="Rekening")
tahun = colander.SchemaNode( tahun = colander.SchemaNode(
...@@ -89,7 +84,7 @@ class AddSchema(colander.Schema): ...@@ -89,7 +84,7 @@ class AddSchema(colander.Schema):
title='Tarif (%)') title='Tarif (%)')
status = colander.SchemaNode( status = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=STATUS), widget=deferred_status,
title="Status") title="Status")
...@@ -101,7 +96,8 @@ class EditSchema(AddSchema): ...@@ -101,7 +96,8 @@ class EditSchema(AddSchema):
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 = schema.bind(daftar_status=STATUS) schema = schema.bind(daftar_status=STATUS,
daftar_rekening=daftar_rekening())
schema.request = request schema.request = request
return Form(schema, buttons=('simpan','batal')) return Form(schema, buttons=('simpan','batal'))
......
...@@ -12,14 +12,16 @@ from deform import ( ...@@ -12,14 +12,16 @@ from deform import (
widget, widget,
ValidationFailure, ValidationFailure,
) )
from ..models import DBSession from ..models import DBSession, User
from ..models.isipkd import( from ..models.isipkd import(
Pegawai, Pegawai,
Jabatan, Jabatan,
Unit Unit
) )
from ..tools import STATUS from daftar import (STATUS, deferred_status,
daftar_jabatan, deferred_jabatan,
daftar_unit, deferred_unit)
from datatables import ( from datatables import (
ColumnDT, DataTables) ColumnDT, DataTables)
...@@ -39,17 +41,16 @@ def view_list(request): ...@@ -39,17 +41,16 @@ def view_list(request):
####### #######
# Add # # Add #
####### #######
def email_validator(node, value):
name, email = parseaddr(value)
if not email or email.find('@') < 0:
raise colander.Invalid(node, 'Invalid email format')
def form_validator(form, value): def form_validator(form, value):
def err_kode(): def err_kode():
raise colander.Invalid(form, raise colander.Invalid(form,
'Kode pegawai %s sudah digunakan oleh ID %d' % ( 'Kode pegawai %s sudah digunakan oleh ID %d' % (
value['kode'], found.id)) value['kode'], found.id))
def err_kode():
raise colander.Invalid(form,
'User dengan Pegawai %s sudah ada' % (value['nama']))
if 'id' in form.request.matchdict: if 'id' in form.request.matchdict:
uid = form.request.matchdict['id'] uid = form.request.matchdict['id']
q = DBSession.query(Pegawai).filter_by(id=uid) q = DBSession.query(Pegawai).filter_by(id=uid)
...@@ -61,17 +62,9 @@ def form_validator(form, value): ...@@ -61,17 +62,9 @@ def form_validator(form, value):
if r: if r:
if found and found.id != r.id: if found and found.id != r.id:
err_kode() err_kode()
if r and r.user_id:
@colander.deferred err_user()
def deferred_status(node, kw):
values = kw.get('daftar_status', [])
return widget.SelectWidget(values=values)
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
unit_select = DBSession.query(Unit.id,Unit.nama).\
filter(Unit.level_id==3).all()
jabatan_select = DBSession.query(Jabatan.id,Jabatan.nama).all()
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String(), colander.String(),
title="NIP") title="NIP")
...@@ -80,18 +73,23 @@ class AddSchema(colander.Schema): ...@@ -80,18 +73,23 @@ class AddSchema(colander.Schema):
unit_id = colander.SchemaNode( unit_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=unit_select), widget=deferred_unit,
title="SKPD") title="SKPD")
jabatan_id = colander.SchemaNode( jabatan_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=jabatan_select), widget=deferred_jabatan,
title="Jabatan") title="Jabatan")
status = colander.SchemaNode( status = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=STATUS), widget=deferred_status,
title="Status") title="Status")
login = colander.SchemaNode(
colander.Boolean(),
missing = colander.drop,
title="Buat Login")
class EditSchema(AddSchema): class EditSchema(AddSchema):
...@@ -102,26 +100,35 @@ class EditSchema(AddSchema): ...@@ -102,26 +100,35 @@ class EditSchema(AddSchema):
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 = schema.bind(daftar_status=STATUS) schema = schema.bind(daftar_status=STATUS, daftar_jabatan=daftar_jabatan(),
daftar_unit=daftar_unit())
schema.request = request schema.request = request
return Form(schema, buttons=('simpan','batal')) return Form(schema, buttons=('simpan','batal'))
def save(values, row=None): def save(values, row=None):
login = None
if 'login' in values and values['login']:
login = User()
login.user_password = values['kode']
login.status=values['status']
login.user_name=values['nama']
login.email=values['kode']+'@local'
DBSession.add(login)
DBSession.flush()
if not row: if not row:
row = Pegawai() row = Pegawai()
row.user_id = 'login' in values and values['login'] and not row.user_id and login.id or None
row.from_dict(values) row.from_dict(values)
#if values['password']:
# row.password = values['password']
DBSession.add(row) DBSession.add(row)
DBSession.flush() DBSession.flush()
return row return row
def save_request(values, request, row=None): def save_request(values, request, row=None):
if 'id' in request.matchdict: if 'id' in request.matchdict:
values['id'] = request.matchdict['id'] values['id'] = request.matchdict['id']
print "****",values, "****", request
row = save(values, row) row = save(values, row)
request.session.flash('pegawai %s sudah disimpan.' % row.kode) request.session.flash('Pegawai <strong>%s</strong> sudah disimpan.' % row.nama)
def route_list(request): def route_list(request):
return HTTPFound(location=request.route_url('pegawai')) return HTTPFound(location=request.route_url('pegawai'))
......
...@@ -27,7 +27,12 @@ from datatables import ( ...@@ -27,7 +27,12 @@ from datatables import (
SESS_ADD_FAILED = 'Gagal tambah Objek Pajak' SESS_ADD_FAILED = 'Gagal tambah Objek Pajak'
SESS_EDIT_FAILED = 'Gagal edit Objek Pajak' SESS_EDIT_FAILED = 'Gagal edit Objek Pajak'
from ..tools import STATUS from daftar import (STATUS, deferred_status,
daftar_subjekpajak, deferred_subjekpajak,
daftar_wilayah, deferred_wilayah,
daftar_unit, deferred_unit,
daftar_pajak, deferred_pajak,
)
######## ########
# List # # List #
######## ########
...@@ -71,37 +76,27 @@ def form_validator(form, value): ...@@ -71,37 +76,27 @@ def form_validator(form, value):
err_name() err_name()
elif found: elif found:
err_name() err_name()
@colander.deferred
def deferred_status(node, kw):
values = kw.get('daftar_status', [])
return widget.SelectWidget(values=values)
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
unit_select = DBSession.query(Unit.id, Unit.nama).filter(Unit.level_id>2).all()
wilayah_select = DBSession.query(Wilayah.id, Wilayah.nama).filter(Wilayah.level_id>1).all()
pajak_select = DBSession.query(Pajak.id, Pajak.nama).all()
sp_select = DBSession.query(SubjekPajak.id, SubjekPajak.nama).all()
subjekpajak_id = colander.SchemaNode( subjekpajak_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=sp_select), widget=deferred_subjekpajak,
title="Subjek Pajak" title="Subjek Pajak"
) )
wilayah_id = colander.SchemaNode( wilayah_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=wilayah_select), widget=deferred_wilayah,
title="Wilayah" title="Wilayah"
) )
unit_id = colander.SchemaNode( unit_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=unit_select), widget=deferred_unit,
title="SKPD/Unit Kerja" title="SKPD"
) )
pajak_id = colander.SchemaNode( pajak_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=pajak_select), widget=deferred_pajak,
title="Pajak" title="Pajak"
) )
kode = colander.SchemaNode( kode = colander.SchemaNode(
...@@ -113,7 +108,7 @@ class AddSchema(colander.Schema): ...@@ -113,7 +108,7 @@ class AddSchema(colander.Schema):
title="Uraian") title="Uraian")
status = colander.SchemaNode( status = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=STATUS), widget=deferred_status,
title="Status") title="Status")
class EditSchema(AddSchema): class EditSchema(AddSchema):
...@@ -124,7 +119,9 @@ class EditSchema(AddSchema): ...@@ -124,7 +119,9 @@ class EditSchema(AddSchema):
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 = schema.bind(daftar_status=STATUS) schema = schema.bind(daftar_status=STATUS,
daftar_subjekpajak=daftar_subjekpajak(),
)
schema.request = request schema.request = request
return Form(schema, buttons=('simpan','batal')) return Form(schema, buttons=('simpan','batal'))
......
...@@ -42,8 +42,10 @@ ...@@ -42,8 +42,10 @@
<li tal:attributes="class request.path == '/' and 'active'"><a href="/">Home</a></li> <li tal:attributes="class request.path == '/' and 'active'"><a href="/">Home</a></li>
<li tal:attributes="class request.path == '/pkb/add' and 'active'"><a href="/pkb/add">PKB</a></li> <li tal:attributes="class request.path == '/pkb/add' and 'active'"><a href="/pkb/add">PKB</a></li>
<li tal:attributes="class request.path == '/pap/add' and 'active'"><a href="/pap/add">PAP</a></li> <li tal:attributes="class request.path == '/pap/add' and 'active'"><a href="/pap/add">PAP</a></li>
<li tal:attributes="class request.path == '/sptpd' and 'active'"><a href="/sptpd">Register Bayar</a></li> <li tal:attributes="class request.path == '/sptpd' and 'active'"><a href="/sptpd">No. Bayar</a></li>
<li tal:attributes="class request.path == '/sspd' and 'active'"><a href="/sspd">Penerimaan</a></li> <li tal:attributes="class request.path == '/sspd' and 'active'"><a href="/sspd">Penerimaan</a></li>
<li tal:attributes="class request.path == '/sts' and 'active'"><a href="/sts">STS</a></li>
<!--li tal:attributes="class request.path == '/pbbkb' and 'active'"><a href="/pbbkb">PBB-KB</a></li> <!--li tal:attributes="class request.path == '/pbbkb' and 'active'"><a href="/pbbkb">PBB-KB</a></li>
<li tal:attributes="class request.path == '/pbbkb' and 'active'"><a href="/pbbkb">PBB-KB</a></li> <li tal:attributes="class request.path == '/pbbkb' and 'active'"><a href="/pbbkb">PBB-KB</a></li>
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<tr> <tr>
<th>ID</th> <th>ID</th>
<th>Registrasi</th> <th>Registrasi</th>
<th>No. OP</th> <th>No.</th>
<th>Uraian</th> <th>Uraian</th>
<th>Rekening</th> <th>Rekening</th>
<th>Wilayah</th> <th>Wilayah</th>
...@@ -64,9 +64,9 @@ ...@@ -64,9 +64,9 @@
"aoColumns": [ "aoColumns": [
null, null,
{"sWidth": "100px", "sClass": "left"}, {"sWidth": "100px", "sClass": "left"},
{"sWidth": "50px", "sClass": "left"}, {"sWidth": "30px", "sClass": "center"},
null, null,
{"sWidth": "100px", "sClass": "center"}, {"sWidth": "75px", "sClass": "center"},
null, null,
{"sWidth": "40px", "sClass": "center"} {"sWidth": "40px", "sClass": "center"}
], ],
......
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content" class="form-550">
<h3>Tambah Objek</h3>
<hr>
<div tal:content="structure form"/>
</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 Objek ID #${row.id} ${row.nama} ?
</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 Objek</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>Daftar No. Bayar</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>ID</th>
<th>Registrasi</th>
<th>No.</th>
<th>Uraian</th>
<th>Rekening</th>
<th>Wilayah</th>
<th>Status</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;
var oTable;
var iPos;
var oFormUrl = "/op/";
var oTableUrl = oFormUrl+"grid/act";
$(document).ready(function () {
oTable = $('#table1').dataTable({
"sAjaxSource": oTableUrl,
"bServerSide": true,
"bProcessing": true,
"sDom": '<"toolbar">lfrtip',
"bScrollCollapse": true,
"bSort": true,
"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]}
],
"aoColumns": [
null,
{"sWidth": "100px", "sClass": "left"},
{"sWidth": "30px", "sClass": "center"},
null,
{"sWidth": "75px", "sClass": "center"},
null,
{"sWidth": "40px", "sClass": "center"}
],
});
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_edit" class="btn btn btn-primary pull-left" type="button">Edit</button>',
' <button id="btn_delete" class="btn btn btn-danger pull-left" type="button">Hapus</button>',
' <button id="btn_print" class="btn btn btn-primary pull-left" type="button">Print</button>',
' &nbsp;',
'</div>',
];
var tb = tb_array.join(' ');
$("div.toolbar").html(tb);
$('#table1 tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
mID = '';
$(this).removeClass('selected');
} else {
iPos = oTable.fnGetPosition(this);
var aData = oTable.fnGetData(iPos);
mID = aData[0];
oTable.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
}
});
$('#btn_tambah').click(function () {
window.location = oFormUrl+'add';
});
$('#btn_edit').click(function () {
if (mID) {
window.location = oFormUrl+mID+'/edit';
} else {
alert('Silahkan pilih data yang akan diedit');
}
});
$('#btn_delete').click(function () {
if (mID) {
var hapus = confirm('Hapus data ini?');
if (hapus == true) {
window.location = oFormUrl+mID+'/delete';
};
} else {
alert('Silahkan pilih data yang akan dihapus');
}
});
});
</script>
</div>
</html>
...@@ -16,7 +16,8 @@ from ..models import DBSession ...@@ -16,7 +16,8 @@ from ..models import DBSession
from ..models.isipkd import( from ..models.isipkd import(
Wilayah, Wilayah,
) )
from daftar import (
deferred_wilayah, daftar_wilayah)
from datatables import ( from datatables import (
ColumnDT, DataTables) ColumnDT, DataTables)
...@@ -67,28 +68,6 @@ def form_validator(form, value): ...@@ -67,28 +68,6 @@ def form_validator(form, value):
elif found: elif found:
err_name() err_name()
@colander.deferred
def deferred_summary(node, kw):
values = kw.get('daftar_summary', [])
return widget.SelectWidget(values=values)
SUMMARIES = (
(1, 'Header'),
(0, 'Detail'),
)
def wilayah_select():
return DBSession.query(Wilayah.id, Wilayah.nama).all()
@colander.deferred
def deferred_wilayah_select(node, kw):
choices = kw.get('wilayah_select()')
return widget.SelectWidget(values=choices)
@colander.deferred
def deferred_wilayah_select_default(node, kw):
print kw
return kw[1]
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String(), colander.String(),
...@@ -100,13 +79,10 @@ class AddSchema(colander.Schema): ...@@ -100,13 +79,10 @@ class AddSchema(colander.Schema):
title="Level") title="Level")
parent_id = colander.SchemaNode( parent_id = colander.SchemaNode(
colander.Integer(), colander.Integer(),
#default=deferred_wilayah_select_default, widget=deferred_wilayah,
#widget=deferred_wilayah_select,
widget=widget.SelectWidget(values=wilayah_select()),
title="Parent", title="Parent",
missing=colander.drop) missing=colander.drop)
class EditSchema(AddSchema): class EditSchema(AddSchema):
id = colander.SchemaNode(colander.Integer(), id = colander.SchemaNode(colander.Integer(),
missing=colander.drop, missing=colander.drop,
...@@ -115,7 +91,7 @@ class EditSchema(AddSchema): ...@@ -115,7 +91,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(validator=form_validator)
schema = schema.bind(choices=wilayah_select()) schema = schema.bind(daftar_wilayah=daftar_wilayah())
schema.request = request schema.request = request
return Form(schema, buttons=('simpan','batal')) return Form(schema, buttons=('simpan','batal'))
...@@ -123,8 +99,8 @@ def save(values, row=None): ...@@ -123,8 +99,8 @@ def save(values, row=None):
if not row: if not row:
row = Wilayah() row = Wilayah()
row.from_dict(values) row.from_dict(values)
#if values['password']: if not row.parent_id or row.parent_id==0 or row.parent_id=='0':
# row.password = values['password'] row.parent_id=None
DBSession.add(row) DBSession.add(row)
DBSession.flush() DBSession.flush()
return row return row
...@@ -132,7 +108,6 @@ def save(values, row=None): ...@@ -132,7 +108,6 @@ def save(values, row=None):
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']
print "****",values, "****", request
row = save(values, row) row = save(values, row)
request.session.flash('wilayah %s sudah disimpan.' % row.kode) request.session.flash('wilayah %s sudah disimpan.' % row.kode)
......
...@@ -12,7 +12,7 @@ from deform import ( ...@@ -12,7 +12,7 @@ from deform import (
widget, widget,
ValidationFailure, ValidationFailure,
) )
from ..models import DBSession from ..models import DBSession, User, UserGroup, Group
from ..models.isipkd import( from ..models.isipkd import(
SubjekPajak, SubjekPajak,
) )
...@@ -20,7 +20,8 @@ from ..models.isipkd import( ...@@ -20,7 +20,8 @@ from ..models.isipkd import(
from datatables import ( from datatables import (
ColumnDT, DataTables) ColumnDT, DataTables)
from ..tools import STATUS from daftar import (STATUS, deferred_status,
daftar_user, deferred_user)
SESS_ADD_FAILED = 'Gagal tambah wp' SESS_ADD_FAILED = 'Gagal tambah wp'
...@@ -38,11 +39,6 @@ def view_list(request): ...@@ -38,11 +39,6 @@ def view_list(request):
####### #######
# Add # # Add #
####### #######
def email_validator(node, value):
name, email = parseaddr(value)
if not email or email.find('@') < 0:
raise colander.Invalid(node, 'Invalid email format')
def form_validator(form, value): def form_validator(form, value):
def err_kode(): def err_kode():
raise colander.Invalid(form, raise colander.Invalid(form,
...@@ -51,8 +47,13 @@ def form_validator(form, value): ...@@ -51,8 +47,13 @@ def form_validator(form, value):
def err_name(): def err_name():
raise colander.Invalid(form, raise colander.Invalid(form,
'Uraian %s sudah digunakan oleh ID %d' % ( 'Nama %s sudah digunakan oleh ID %d' % (
value['uraian'], found.id)) value['nama'], found.id))
def err_user():
raise colander.Invalid(form,
'User ID %s sudah digunakan oleh ID %d' % (
value['user_id'], found.id))
if 'id' in form.request.matchdict: if 'id' in form.request.matchdict:
uid = form.request.matchdict['id'] uid = form.request.matchdict['id']
...@@ -66,36 +67,76 @@ def form_validator(form, value): ...@@ -66,36 +67,76 @@ def form_validator(form, value):
if found and found.id != r.id: if found and found.id != r.id:
err_kode() err_kode()
elif found: elif found:
err_email() err_kode()
if 'uraian' in value: # optional
found = SubjekPajak.get_by_uraian(value['uraian']) if 'nama' in value: # optional
found = SubjekPajak.get_by_nama(value['nama'])
if r: if r:
if found and found.id != r.id: if found and found.id != r.id:
err_name() err_name()
elif found: elif found:
err_name() err_name()
if 'user_id' in value and int(value['user_id'])>0:
found = SubjekPajak.get_by_user(value['user_id'])
if r:
if found and found.id != r.id:
err_user()
elif found:
err_user()
if 'login' in value and int(value['user_id'])==0:
found = User.get_by_name(value['kode'])
if r:
if found and found.id != r.id:
err_user()
elif found:
err_user()
@colander.deferred
def deferred_status(node, kw):
values = kw.get('daftar_status', [])
return widget.SelectWidget(values=values)
class AddSchema(colander.Schema): class AddSchema(colander.Schema):
kode = colander.SchemaNode( kode = colander.SchemaNode(
colander.String(), colander.String(),
) )
nama = colander.SchemaNode( nama = colander.SchemaNode(
colander.String()) colander.String()
)
alamat_1 = colander.SchemaNode( alamat_1 = colander.SchemaNode(
colander.String()) colander.String()
)
alamat_2 = colander.SchemaNode( alamat_2 = colander.SchemaNode(
colander.String(), colander.String(),
missing=colander.drop) missing=colander.drop
status = colander.SchemaNode( )
kelurahan= colander.SchemaNode(
colander.String(),
missing=colander.drop
)
kecamatan= colander.SchemaNode(
colander.String(),
missing=colander.drop
)
kota = colander.SchemaNode(
colander.String(),
missing=colander.drop
)
propinsi = colander.SchemaNode(
colander.String(),
missing=colander.drop
)
status = colander.SchemaNode(
colander.Integer(), colander.Integer(),
widget=widget.SelectWidget(values=STATUS), widget=deferred_status,
title="Status") title="Status")
user_id = colander.SchemaNode(
colander.Integer(),
widget=deferred_user,
default=0,
title="User")
login = colander.SchemaNode(
colander.Boolean(),
missing = colander.drop,
title='Buat Login'
)
class EditSchema(AddSchema): class EditSchema(AddSchema):
id = colander.SchemaNode(colander.Integer(), id = colander.SchemaNode(colander.Integer(),
missing=colander.drop, missing=colander.drop,
...@@ -104,24 +145,47 @@ class EditSchema(AddSchema): ...@@ -104,24 +145,47 @@ class EditSchema(AddSchema):
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 = schema.bind(daftar_status=STATUS) schema = schema.bind(daftar_status=STATUS,
daftar_user=daftar_user(),
)
schema.request = request schema.request = request
return Form(schema, buttons=('simpan','batal')) return Form(schema, buttons=('simpan','batal'))
def save(values, row=None): def save(values, row=None):
login = None
if 'login' in values and values['login'] and int(values['user_id'])==0:
login = User()
login.user_password = values['kode']
login.status=values['status']
login.user_name=values['kode']
login.email=values['kode']+'@ws'
DBSession.add(login)
DBSession.flush()
if not row: if not row:
row = SubjekPajak() row = SubjekPajak()
row.from_dict(values) row.from_dict(values)
#if values['password']: if login:
# row.password = values['password'] row.user_id=login.id
if not row.user_id:
row.user_id=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']
print "****",values, "****", request
row = save(values, row) row = save(values, row)
request.session.flash('wp %s sudah disimpan.' % row.kode) request.session.flash('wp %s sudah disimpan.' % row.kode)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!