Commit 92410da4 by aa.gusti

PB Form

1 parent b501404b
...@@ -23,4 +23,4 @@ from zope.sqlalchemy import ZopeTransactionExtension ...@@ -23,4 +23,4 @@ from zope.sqlalchemy import ZopeTransactionExtension
from ...eis.models import (DefaultModel, EisBase, EisDBSession) from ...eis.models import (DefaultModel, EisBase, EisDBSession)
from ...eis.models import Eis, Slide, Chart, ChartItem, EisParams,TABLE_ARGS, NamaModel from ...eis.models import Eis, Slide, Chart, ChartItem, EisParams,TABLE_ARGS, NamaModel
from .eis import EisSipkdArPayment, EisSipkdApPayment, EisSipkdPbPayment, EisSipkdAnggaran
\ No newline at end of file \ No newline at end of file
from .eis import EisSipkdArPayment, EisSipkdApPayment, EisSipkdPbPayment, EisSipkdAnggaran, EisRekening
\ No newline at end of file \ No newline at end of file
...@@ -64,3 +64,19 @@ class EisSipkdAnggaran(NamaModel, EisBase): ...@@ -64,3 +64,19 @@ class EisSipkdAnggaran(NamaModel, EisBase):
level_id = Column(Integer) level_id = Column(Integer)
__table_args__ = (UniqueConstraint('tahun', 'kode', 'departemen_kd'), __table_args__ = (UniqueConstraint('tahun', 'kode', 'departemen_kd'),
TABLE_ARGS) TABLE_ARGS)
class EisRekening(NamaModel, EisBase):
__tablename__ = 'sipkd_rekening'
tahun = Column(Integer)
level_id = Column(SmallInteger, default=1)
#parent_id = Column(Integer, ForeignKey('eis.sipkd_rekening.id'),)
status = Column(SmallInteger, default=1)
defsign = Column(SmallInteger, default=1)
#children = relationship("Rekening",
# backref=backref('parent', remote_side='Rekening.id'))
__table_args__= (
UniqueConstraint('kode', 'tahun', name='rekening_uq'),
#ForeignKeyConstraint(['parent_id'], ForeignKey('rekening.id')),
TABLE_ARGS
)
\ No newline at end of file \ No newline at end of file
...@@ -15,3 +15,13 @@ eis-sipkd-harian-act,Harian Act,/eis/sipkd/harian/{act}/act,1 ...@@ -15,3 +15,13 @@ eis-sipkd-harian-act,Harian Act,/eis/sipkd/harian/{act}/act,1
eis-sipkd-harian-edt,Edit EIS Harian,/eis/sipkd/harian/{id}/edit,1 eis-sipkd-harian-edt,Edit EIS Harian,/eis/sipkd/harian/{id}/edit,1
eis-sipkd-harian-add,Tambah EIS Harian,/eis/sipkd/harian/add,1 eis-sipkd-harian-add,Tambah EIS Harian,/eis/sipkd/harian/add,1
eis-sipkd-harian-del,Hapus EIS Harian,/eis/sipkd/harian/{id}/del,1 eis-sipkd-harian-del,Hapus EIS Harian,/eis/sipkd/harian/{id}/del,1
eis-sipkd-ar-payment,Pendapatan,/eis/sipkd/ar/payment,1
eis-sipkd-ar-payment-act,Pendapatan Act,/eis/sipkd/ar/payment/{act}/act,1
eis-sipkd-ar-payment-edt,Edit Pendapatan,/eis/sipkd/ar/payment/{id}/edit,1
eis-sipkd-ar-payment-add,Tambah Pendapatan,/eis/sipkd/ar/payment/add,1
eis-sipkd-ar-payment-del,Hapus Pendapatan,/eis/sipkd/ar/payment/{id}/del,1
eis-sipkd-ap-payment,Belanja,/eis/sipkd/ap/payment,1
eis-sipkd-ap-payment-act,Belanja Act,/eis/sipkd/ap/payment/{act}/act,1
eis-sipkd-ap-payment-edt,Edit Belanja,/eis/sipkd/ap/payment/{id}/edit,1
eis-sipkd-ap-payment-add,Tambah Belanja,/eis/sipkd/ap/payment/add,1
eis-sipkd-ap-payment-del,Hapus Belanja,/eis/sipkd/ap/payment/{id}/del,1
\ No newline at end of file \ No newline at end of file
...@@ -14,11 +14,11 @@ from ...scripts.DbTools import ( ...@@ -14,11 +14,11 @@ from ...scripts.DbTools import (
) )
fixtures = [ fixtures = [
('routes', RouteData), ('routes', RouteData),
('eis.sipkd_ar_payment', ArPaymentData), #('eis.sipkd_ar_payment', ArPaymentData),
('eis.sipkd_ap_payment', ApPaymentData), #('eis.sipkd_ap_payment', ApPaymentData),
('eis.sipkd_pb_payment', PbPaymentData), #('eis.sipkd_pb_payment', PbPaymentData),
('eis.harian', HarianData), #('eis.harian', HarianData),
('eis.sipkd_anggaran', AnggaranData), #('eis.sipkd_anggaran', AnggaranData),
# ('eis.chart_items', ChartItemData), # ('eis.chart_items', ChartItemData),
# ('eis.slides', SlideData), # ('eis.slides', SlideData),
# ('eis.wells', EisData), # ('eis.wells', EisData),
......
import os
import uuid
#from ..tools import row2dict, xls_reader
from datetime import datetime
from sqlalchemy import not_, func, literal_column
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..models import (
EisDBSession
)
from ..models import (
EisSipkdApPayment as ApPayment, EisRekening
)
from ..views import BaseView, ColumnDT, DataTables
from ..tools import dmy_to_date, dmy
SESS_ADD_FAILED = 'Tambah sipkd-ap-payment gagal'
SESS_EDIT_FAILED = 'Edit sipkd-ap-payment gagal'
@colander.deferred
def deferred_chart_type(node, kw):
values = kw.get('chart_types', [])
return widget.SelectWidget(values=values)
class AddSchema(colander.Schema):
tanggal = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=10),
oid='tanggal')
tahun = colander.SchemaNode(
colander.Integer()
)
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=18),
oid='kode')
nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128),
oid = 'nama')
departemen_kd = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128))
departemen_nm = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128))
jumlah = colander.SchemaNode(
colander.Integer())
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class view_eis_chart(BaseView):
########
# List #
########
@view_config(route_name='eis-sipkd-ap-payment', renderer='templates/ap-payment/list.pt',
permission='read')
def view_list(self):
return dict(a={})
##########
# Action #
##########
@view_config(route_name='eis-sipkd-ap-payment-act', renderer='json',
permission='eis-sipkd-ap-payment-act')
def act(self):
ses = self.req.session
req = self.req
params = req.params
url_dict = req.matchdict
if url_dict['act']=='grid':
columns = []
columns.append(ColumnDT(ApPayment.id))
columns.append(ColumnDT(ApPayment.tanggal))
columns.append(ColumnDT(ApPayment.kode))
columns.append(ColumnDT(ApPayment.nama))
columns.append(ColumnDT(ApPayment.jumlah))
columns.append(ColumnDT(ApPayment.level_id))
query = EisDBSession.query().select_from(ApPayment)
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
#######
# Add #
#######
def form_validator(self, form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(ApPayment).filter_by(id=uid)
row = q.first()
else:
row = None
def get_form(self, class_form, row=None):
schema = class_form(validator=self.form_validator)
schema = schema.bind()
schema.request = self.req
if row:
schema.deserialize(row)
return Form(schema, buttons=('simpan','batal'))
def save(self, values, user, row=None):
if not row:
row = ApPayment()
row.created = datetime.now()
row.create_uid = user.id
row.from_dict(values)
row.updated = datetime.now()
row.update_uid = user.id
row.tanggal = dmy_to_date(values['tanggal']);
row.aktif = 'aktif' in values and values['aktif'] and 1 or 0
row.level_id = row.kode.count('.')
EisDBSession.add(row)
EisDBSession.flush()
validate_parent(row.departemen_kd, row.departemen_nm, row.kode, row.tanggal, row.tahun)
calculate(ApPayment, row.tahun, row.tanggal)
return row
def save_request(self, values, row=None):
if 'id' in self.req.matchdict:
values['id'] = self.req.matchdict['id']
row = self.save(values, self.req.user, row)
self.req.session.flash('ApPayment sudah disimpan.')
def route_list(self):
return HTTPFound(location=self.req.route_url('eis-sipkd-ap-payment'))
def session_failed(self, session_name):
r = dict(form=self.ses[session_name])
del self.ses[session_name]
return r
@view_config(route_name='eis-sipkd-ap-payment-add', renderer='templates/ap-payment/add.pt',
permission='eis-sipkd-ap-payment-add')
def view_add(self):
req = self.req
ses = self.ses
form = self.get_form(AddSchema)
if req.POST:
if 'simpan' in req.POST:
controls = req.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
req.session[SESS_ADD_FAILED] = e.render()
return HTTPFound(location=req.route_url('eis-sipkd-ap-payment-add'))
self.save_request(dict(controls))
return self.route_list()
elif SESS_ADD_FAILED in req.session:
return self.session_failed(SESS_ADD_FAILED)
return dict(form=form.render())
########
# Edit #
########
def query_id(self):
return EisDBSession.query(ApPayment).filter_by(id=self.req.matchdict['id'])
def id_not_found(self):
msg = 'ApPayment ID %s Tidak Ditemukan.' % self.req.matchdict['id']
request.session.flash(msg, 'error')
return route_list()
@view_config(route_name='eis-sipkd-ap-payment-edt', renderer='templates/ap-payment/add.pt',
permission='eis-sipkd-ap-payment-edt')
def view_edit(self):
request = self.req
row = self.query_id().first()
if not row:
return id_not_found(request)
form = self.get_form(EditSchema)
#form.set_appstruct(rowd)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
request.session[SESS_EDIT_FAILED] = e.render()
return HTTPFound(location=request.route_url('eis-sipkd-ap-payment-edit',
id=row.id))
self.save_request(dict(controls), row)
return self.route_list()
elif SESS_EDIT_FAILED in request.session:
return self.session_failed(SESS_EDIT_FAILED)
values = row.to_dict()
values['tanggal'] = dmy(row.tanggal)
return dict(form=form.render(appstruct=values))
##########
# Delete #
##########
@view_config(route_name='eis-sipkd-ap-payment-del', renderer='templates/ap-payment/delete.pt',
permission='eis-sipkd-ap-payment-del')
def view_delete(self):
request = self.req
q = self.query_id()
row = q.first()
if not row:
return self.id_not_found(request)
form = Form(colander.Schema(), buttons=('hapus','batal'))
if request.POST:
if 'hapus' in request.POST:
msg = 'ApPayment ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
except:
msg = 'ApPayment ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
return self.route_list()
return dict(row=row,
form=form.render())
def validate_parent(departemen_kd, departemen_nm, rekening, tanggal, tahun):
kode = rekening.split('.')
rekening = "\'" + rekening + "\'"
rows = EisDBSession.query(EisRekening).\
filter(literal_column(rekening).like(
func.concat(EisRekening.kode,'%'))).all()
for row in rows:
if not row.kode:
continue
induk = EisDBSession.query(ApPayment).\
filter_by(tahun=str(tahun),
kode=row.kode.strip(),
departemen_kd = departemen_kd.strip(),
tanggal = tanggal,
).first()
if not induk:
induk = ApPayment()
induk.tahun = str(tahun)
induk.kode = row.kode.strip()
induk.departemen_kd = departemen_kd.strip()
induk.tanggal = tanggal
induk.level_id = row.kode.count('.')
induk.nama = row.nama.strip()
EisDBSession.add(induk)
EisDBSession.flush()
def calculate(tabel, tahun, tanggal=None):
query = EisDBSession.query(tabel).filter_by(tahun = str(tahun)).\
order_by(tabel.departemen_kd, tabel.tanggal, tabel.kode.desc())
if tanggal:
query = query.filter_by(tanggal=tanggal)
old_level = 0
levels = {}
jumlahs = {}
key = ""
for row in query.all():
if row.level_id > old_level:
print('Lebih', jumlahs, key)
old_level = row.level_id
key = 'a'+str(row.level_id)
#JIKA level sama dengan sebelumnya jumlahkan
if row.level_id == old_level:
print('Sama')
if not key in jumlahs:
jumlahs[key] = row.jumlah and row.jumlah or 0
else:
jumlahs[key] += row.jumlah and row.jumlah or 0
#JIKA level < sebelumnya update current row
if row.level_id < old_level:
print('Kurang', jumlahs, key)
print('kode: ', row.kode, 'level: ', row.level_id, 'old: ', old_level, 'key: ', key, 'jml: ', row.jumlah, 'jmls: ', jumlahs)
row.jumlah = jumlahs[key]
EisDBSession.add(row)
EisDBSession.flush()
jumlahs[key] = 0 #key sebelumnya diset jadi 0
key = 'a'+str(row.level_id)
if not key in jumlahs:
jumlahs[key] = row.jumlah and row.jumlah or 0
else:
jumlahs[key] += row.jumlah and row.jumlah or 0
old_level = row.level_id
print('kode: ', row.kode, 'level: ', row.level_id, 'old: ', old_level, 'key: ', key, 'jml: ', row.jumlah, 'jmls: ', jumlahs)
import os
import uuid
#from ..tools import row2dict, xls_reader
from datetime import datetime
from sqlalchemy import not_, func, literal_column
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..models import (
EisDBSession
)
from ..models import (
EisSipkdArPayment as ArPayment, EisRekening
)
from ..views import BaseView, ColumnDT, DataTables
from ..tools import dmy_to_date, dmy
SESS_ADD_FAILED = 'Tambah sipkd-ar-payment gagal'
SESS_EDIT_FAILED = 'Edit sipkd-ar-payment gagal'
@colander.deferred
def deferred_chart_type(node, kw):
values = kw.get('chart_types', [])
return widget.SelectWidget(values=values)
class AddSchema(colander.Schema):
tanggal = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=10),
oid='tanggal')
tahun = colander.SchemaNode(
colander.Integer()
)
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=18),
oid='kode')
nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128),
oid = 'nama')
departemen_kd = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128))
departemen_nm = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128))
jumlah = colander.SchemaNode(
colander.Integer())
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class view_eis_chart(BaseView):
########
# List #
########
@view_config(route_name='eis-sipkd-ar-payment', renderer='templates/ar-payment/list.pt',
permission='read')
def view_list(self):
return dict(a={})
##########
# Action #
##########
@view_config(route_name='eis-sipkd-ar-payment-act', renderer='json',
permission='eis-sipkd-ar-payment-act')
def act(self):
ses = self.req.session
req = self.req
params = req.params
url_dict = req.matchdict
if url_dict['act']=='grid':
columns = []
columns.append(ColumnDT(ArPayment.id))
columns.append(ColumnDT(ArPayment.tanggal))
columns.append(ColumnDT(ArPayment.kode))
columns.append(ColumnDT(ArPayment.nama))
columns.append(ColumnDT(ArPayment.jumlah))
columns.append(ColumnDT(ArPayment.level_id))
query = EisDBSession.query().select_from(ArPayment)
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
#######
# Add #
#######
def form_validator(self, form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(ArPayment).filter_by(id=uid)
row = q.first()
else:
row = None
def get_form(self, class_form, row=None):
schema = class_form(validator=self.form_validator)
schema = schema.bind()
schema.request = self.req
if row:
schema.deserialize(row)
return Form(schema, buttons=('simpan','batal'))
def save(self, values, user, row=None):
if not row:
row = ArPayment()
row.created = datetime.now()
row.create_uid = user.id
row.from_dict(values)
row.updated = datetime.now()
row.update_uid = user.id
row.tanggal = dmy_to_date(values['tanggal']);
row.aktif = 'aktif' in values and values['aktif'] and 1 or 0
row.level_id = row.kode.count('.')
EisDBSession.add(row)
EisDBSession.flush()
validate_parent(row.departemen_kd, row.departemen_nm, row.kode, row.tanggal, row.tahun)
calculate(ArPayment, row.tahun, row.tanggal)
return row
def save_request(self, values, row=None):
if 'id' in self.req.matchdict:
values['id'] = self.req.matchdict['id']
row = self.save(values, self.req.user, row)
self.req.session.flash('ArPayment sudah disimpan.')
def route_list(self):
return HTTPFound(location=self.req.route_url('eis-sipkd-ar-payment'))
def session_failed(self, session_name):
r = dict(form=self.ses[session_name])
del self.ses[session_name]
return r
@view_config(route_name='eis-sipkd-ar-payment-add', renderer='templates/ar-payment/add.pt',
permission='eis-sipkd-ar-payment-add')
def view_add(self):
req = self.req
ses = self.ses
form = self.get_form(AddSchema)
if req.POST:
if 'simpan' in req.POST:
controls = req.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
req.session[SESS_ADD_FAILED] = e.render()
return HTTPFound(location=req.route_url('eis-sipkd-ar-payment-add'))
self.save_request(dict(controls))
return self.route_list()
elif SESS_ADD_FAILED in req.session:
return self.session_failed(SESS_ADD_FAILED)
return dict(form=form.render())
########
# Edit #
########
def query_id(self):
return EisDBSession.query(ArPayment).filter_by(id=self.req.matchdict['id'])
def id_not_found(self):
msg = 'ArPayment ID %s Tidak Ditemukan.' % self.req.matchdict['id']
request.session.flash(msg, 'error')
return route_list()
@view_config(route_name='eis-sipkd-ar-payment-edt', renderer='templates/ar-payment/add.pt',
permission='eis-sipkd-ar-payment-edt')
def view_edit(self):
request = self.req
row = self.query_id().first()
if not row:
return id_not_found(request)
form = self.get_form(EditSchema)
#form.set_appstruct(rowd)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
request.session[SESS_EDIT_FAILED] = e.render()
return HTTPFound(location=request.route_url('eis-sipkd-ar-payment-edit',
id=row.id))
self.save_request(dict(controls), row)
return self.route_list()
elif SESS_EDIT_FAILED in request.session:
return self.session_failed(SESS_EDIT_FAILED)
values = row.to_dict()
values['tanggal'] = dmy(row.tanggal)
return dict(form=form.render(appstruct=values))
##########
# Delete #
##########
@view_config(route_name='eis-sipkd-ar-payment-del', renderer='templates/ar-payment/delete.pt',
permission='eis-sipkd-ar-payment-del')
def view_delete(self):
request = self.req
q = self.query_id()
row = q.first()
if not row:
return self.id_not_found(request)
form = Form(colander.Schema(), buttons=('hapus','batal'))
if request.POST:
if 'hapus' in request.POST:
msg = 'ArPayment ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
except:
msg = 'ArPayment ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
return self.route_list()
return dict(row=row,
form=form.render())
def validate_parent(departemen_kd, departemen_nm, rekening, tanggal, tahun):
kode = rekening.split('.')
rekening = "\'" + rekening + "\'"
rows = EisDBSession.query(EisRekening).\
filter(literal_column(rekening).like(
func.concat(EisRekening.kode,'%'))).all()
for row in rows:
if not row.kode:
continue
induk = EisDBSession.query(ArPayment).\
filter_by(tahun=str(tahun),
kode=row.kode.strip(),
departemen_kd = departemen_kd.strip(),
tanggal = tanggal,
).first()
if not induk:
induk = ArPayment()
induk.tahun = str(tahun)
induk.kode = row.kode.strip()
induk.departemen_kd = departemen_kd.strip()
induk.tanggal = tanggal
induk.level_id = row.kode.count('.')
induk.nama = row.nama.strip()
EisDBSession.add(induk)
EisDBSession.flush()
def calculate(tabel, tahun, tanggal=None):
query = EisDBSession.query(tabel).filter_by(tahun = str(tahun)).\
order_by(tabel.departemen_kd, tabel.tanggal, tabel.kode.desc())
if tanggal:
query = query.filter_by(tanggal=tanggal)
old_level = 0
levels = {}
jumlahs = {}
key = ""
for row in query.all():
if row.level_id > old_level:
print('Lebih', jumlahs, key)
old_level = row.level_id
key = 'a'+str(row.level_id)
#JIKA level sama dengan sebelumnya jumlahkan
if row.level_id == old_level:
print('Sama')
if not key in jumlahs:
jumlahs[key] = row.jumlah
else:
jumlahs[key] += row.jumlah
#JIKA level < sebelumnya update current row
if row.level_id < old_level:
print('Kurang', jumlahs, key)
print('kode: ', row.kode, 'level: ', row.level_id, 'old: ', old_level, 'key: ', key, 'jml: ', row.jumlah, 'jmls: ', jumlahs)
row.jumlah = jumlahs[key]
EisDBSession.add(row)
EisDBSession.flush()
jumlahs[key] = 0 #key sebelumnya diset jadi 0
key = 'a'+str(row.level_id)
if not key in jumlahs:
jumlahs[key] = row.jumlah
else:
jumlahs[key] += row.jumlah
old_level = row.level_id
print('kode: ', row.kode, 'level: ', row.level_id, 'old: ', old_level, 'key: ', key, 'jml: ', row.jumlah, 'jmls: ', jumlahs)
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<div tal:content="structure form"/>
</div>
<div metal:fill-slot="scripts">
<script>
$('#tanggal').datepicker({
changeMonth: true,
changeYear: true,
dateFormat:'dd-mm-yy'
});
</script>
</div>
</html>
...@@ -6,10 +6,11 @@ ...@@ -6,10 +6,11 @@
<thead> <thead>
<tr> <tr>
<th>ID</th> <th>ID</th>
<th>Tanggal</th>
<th>Kode</th> <th>Kode</th>
<th>Uraian</th> <th>Uraian</th>
<th>Type</th> <th>Jumlah</th>
<th>Pembagi</th> <th>Level</th>
</tr> </tr>
</thead> </thead>
...@@ -23,7 +24,8 @@ ...@@ -23,7 +24,8 @@
var mID; var mID;
var mThn; var mThn;
var oTable; var oTable;
var oTableUrl = "/eis/chart/grid/act"; var oTableUri = "/eis/sipkd/ap/payment";
var oTableUrl = oTableUri + "/grid/act";
$(document).ready(function () { $(document).ready(function () {
oTable = $('#table1').DataTable({ oTable = $('#table1').DataTable({
...@@ -52,6 +54,7 @@ ...@@ -52,6 +54,7 @@
columns: [ columns: [
null, null,
{"width": "75px"}, {"width": "75px"},
{"width": "75px"},
null, null,
{"width": "75px"}, {"width": "75px"},
{"width": "75px", "sClass": "right"}, {"width": "75px", "sClass": "right"},
...@@ -66,7 +69,6 @@ ...@@ -66,7 +69,6 @@
}, },
"lengthMenu": "Tampil _MENU_ baris " "lengthMenu": "Tampil _MENU_ baris "
}, },
}); });
var tb_array = [ var tb_array = [
...@@ -98,23 +100,17 @@ ...@@ -98,23 +100,17 @@
} }
}); });
$('#btn_item').click(function () {
if (mID) window.location = '/eis/chart/item/'+mID;
else alert('Pilih Baris dulu');
});
$('#btn_add').click(function () { $('#btn_add').click(function () {
window.location = '/eis/chart/add'; window.location = oTableUri + '/add';
}); });
$('#btn_edit').click(function () { $('#btn_edit').click(function () {
if (mID) window.location = '/eis/chart/'+mID+'/edit'; if (mID) window.location = oTableUri + '/'+mID+'/edit';
else alert('Pilih Baris yang akan di edit'); else alert('Pilih Baris yang akan di edit');
}); });
$('#btn_delete').click(function () { $('#btn_delete').click(function () {
if (mID) window.location = '/eis/chart/'+mID+'/delete'; if (mID) window.location = oTableUri + '/'+ mID+'/delete';
else alert('Pilih Baris yang akan di hapus'); else alert('Pilih Baris yang akan di hapus');
}); });
}) })
......
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<div tal:content="structure form"/>
</div>
<div metal:fill-slot="scripts">
<script>
$('#tanggal').datepicker({
changeMonth: true,
changeYear: true,
dateFormat:'dd-mm-yy'
});
</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">Peringatan</h3>
</div>
<div class="panel-body">
${request.title} #${row.kode} ${row.nama} ?
</div>
</div>
<div tal:content="structure form"/>
</div>
</html>
<html metal:use-macro="load: ../base.pt">
<div metal:fill-slot="content">
<h4>${request.title}</h4>
<hr>
<table id="table1" class="table table-bordered table-hover table-condensed">
<thead>
<tr>
<th>ID</th>
<th>Tanggal</th>
<th>Kode</th>
<th>Uraian</th>
<th>Jumlah</th>
<th>Level</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div metal:fill-slot="scripts">
<script>
var mID;
var mThn;
var oTable;
var oTableUri = "/eis/sipkd/ar/payment";
var oTableUrl = oTableUri + "/grid/act";
$(document).ready(function () {
oTable = $('#table1').DataTable({
dom : '<"toolbar">lfrtip',
processing : true,
serverSide : true,
ajax : oTableUrl,
stateSave : true,
scrollCollapse: true,
sort : true,
info : false,
filter : true,
autoWidth : false,
paginate : true,
paginationType: "full_numbers",
lengthMenu: [
[10, 25, 50, 100],
[10, 25, 50, 100]
],
columnDefs: [{
searchable: false,
visible: false,
targets: [0]
}],
columns: [
null,
{"width": "75px"},
{"width": "75px"},
null,
{"width": "75px"},
{"width": "75px", "sClass": "right"},
],
"language": {
"search" : "Cari: ",
"paginate":{
"first" : "Pertama ",
"last" : "Akhir ",
"previous": "Mundur ",
"next" : "Maju ",
},
"lengthMenu": "Tampil _MENU_ baris "
},
});
var tb_array = [
'<div class="btn pull-left">',
' <button id="btn_add" class="btn btn btn-primary" type="button">Tambah</button>',
' <button id="btn_edit" class="btn btn btn-primary" type="button">Edit</button>',
' <button id="btn_delete" class="btn btn btn-danger" type="button">Hapus</button>',
' <button id="btn_csv" class="btn btn btn-default" type="button">CSV</button>',
' <button id="btn_item" class="btn btn btn-warning" type="button">Item data</button>',
' &nbsp;',
'</div>',
];
var tb = tb_array.join(' ');
$("div.toolbar").html(tb);
$("div.toolbar").attr('style', 'display:block; float: left; margin-bottom:6px; line-height:16px;');
$('#table1 tbody').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
var aData = oTable.row( this ).data();
oTable.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
mID = aData[0];
oTable.$('tr.row_selected').removeClass('row_selected');
$(this).addClass('row_selected');
}
});
$('#btn_add').click(function () {
window.location = oTableUri + '/add';
});
$('#btn_edit').click(function () {
if (mID) window.location = oTableUri + '/'+mID+'/edit';
else alert('Pilih Baris yang akan di edit');
});
$('#btn_delete').click(function () {
if (mID) window.location = oTableUri + '/'+ mID+'/delete';
else alert('Pilih Baris yang akan di hapus');
});
})
</script>
</div>
</html>
...@@ -147,6 +147,8 @@ ...@@ -147,6 +147,8 @@
<li><a href="/eis/chart">Chart</a></li> <li><a href="/eis/chart">Chart</a></li>
<li><a href="/eis/slide">Slide</a></li> <li><a href="/eis/slide">Slide</a></li>
<li><a href="/eis/carousel">Harian</a></li> <li><a href="/eis/carousel">Harian</a></li>
<li><a href="/eis/sipkd/ar/payment">Pendapatan</a></li>
<li><a href="/eis/sipkd/ap/payment">Belanja</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!