Commit fd27fe0e by Ari Agung Prasetiyo

menu input opsen pkb bbnkb

1 parent f6d3e267
...@@ -16,12 +16,14 @@ from pyramid.paster import ( ...@@ -16,12 +16,14 @@ from pyramid.paster import (
get_appsettings, get_appsettings,
setup_logging, setup_logging,
) )
from zope.sqlalchemy import register
PCDBSession = scoped_session(sessionmaker()) PCDBSession = scoped_session(sessionmaker())
PCBase = declarative_base() PCBase = declarative_base()
register(PCDBSession)
class DefaultModel(models.DefaultModel): class DefaultModel(models.DefaultModel):
db_session = PCDBSession
@classmethod @classmethod
def count(cls, db_session=PCDBSession): def count(cls, db_session=PCDBSession):
return super().count(db_session) return super().count(db_session)
...@@ -35,8 +37,8 @@ class DefaultModel(models.DefaultModel): ...@@ -35,8 +37,8 @@ class DefaultModel(models.DefaultModel):
return super().query_from(columns, filters, db_session) return super().query_from(columns, filters, db_session)
@classmethod @classmethod
def query_id(cls, row_id, db_session=PCDBSession): def query_id(cls, row_id):
return super.query_id(row_id, db_session) return super().query_id(row_id)
@classmethod @classmethod
def delete(cls, row_id, db_session=PCDBSession): def delete(cls, row_id, db_session=PCDBSession):
...@@ -304,6 +306,13 @@ class UploadRealisasiOpsen(PCBase, DefaultModel): ...@@ -304,6 +306,13 @@ class UploadRealisasiOpsen(PCBase, DefaultModel):
nilai_realisasi = Column(Float) nilai_realisasi = Column(Float)
@classmethod @classmethod
def get_no_urut(cls, row=None):
result = PCDBSession.query(func.max(cls.no_urut)).scalar()
result = result and result > 0 and result + 1 or 1
return result
@classmethod
def qry_sum_pkb(cls, columns=[]): def qry_sum_pkb(cls, columns=[]):
columns.extend([ columns.extend([
func.sum(cls.nilai_realisasi).label('bayar'), func.sum(cls.nilai_realisasi).label('bayar'),
......
...@@ -52,3 +52,9 @@ eis-slide-act,EIS Slide Act,/eis/slide/{act}/act,1,0 ...@@ -52,3 +52,9 @@ eis-slide-act,EIS Slide Act,/eis/slide/{act}/act,1,0
eis-slide-add,EIS Slide Add,/eis/slide/add,1,0 eis-slide-add,EIS Slide Add,/eis/slide/add,1,0
eis-slide-edit,EIS Slide Edit,/eis/slide/{id}/edit,1,0 eis-slide-edit,EIS Slide Edit,/eis/slide/{id}/edit,1,0
eis-slide-delete,EIS Slide Delete,/eis/slide/{id}/delete,1,0 eis-slide-delete,EIS Slide Delete,/eis/slide/{id}/delete,1,0
eis-pkbbbnkb,EIS PKB BBNKB,/eis/pkbbbnkb,1,0,1,,pkbbbnkb,Views,view_list,,form.pt
eis-pkbbbnkb-act,EIS PKB BBNKB Act,/eis/pkbbbnkb/{act}/act,1,0,,,pkbbbnkb,Views
eis-pkbbbnkb-add,EIS PKB BBNKB Add,/eis/pkbbbnkb/add,1,0,,,pkbbbnkb,Views
eis-pkbbbnkb-edit,EIS PKB BBNKB Edit,/eis/pkbbbnkb/{id}/edit,1,0,,,pkbbbnkb,Views
eis-pkbbbnkb-delete,EIS PKB BBNKB Delete,/eis/pkbbbnkb/{id}/delete,1,0,,,pkbbbnkb,Views
import colander
from deform import widget
from opensipkd.base.widgets import widget_os
from pyramid.view import view_config
from ..models.payment import UploadRealisasiOpsen
from . import BaseView
from ..models import Targets
from ..models.payment import PCDBSession
from datetime import date
items = (("Opsen PKB", "Opsen PKB"), ('Opsen BBNKB', 'Opsen BBNKB'),)
class ListSchema(colander.Schema):
id = colander.SchemaNode(
colander.Integer(),
title="Action")
no_urut = colander.SchemaNode(
colander.Integer(),
oid="no_urut", )
kode_rekening = colander.SchemaNode(
colander.String(),
title="Kode Rekening")
nama_rekening = colander.SchemaNode(
colander.String(),
title="Nama Rekening")
keterangan = colander.SchemaNode(
colander.String(),
title="Keterangan")
nilai_realisasi = colander.SchemaNode(
colander.String(),
thousand={"separator":"."},
title="Nilai Realisasi")
class AddSchema(colander.Schema):
nama_rekening = colander.SchemaNode(
colander.String(),
widget=widget.SelectWidget(values=items),
title="Jenis",
oid="nama_rekening",
)
keterangan = colander.SchemaNode(
colander.String(),
title="Keterangan")
nilai_realisasi = colander.SchemaNode(
colander.Integer(),
widget=widget.TextInputWidget(min = 0, attributes={'type':'number','max':max,'min':min}),
validator=colander.Range(min=0),
title="Nilai Realisasi")
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class Views(BaseView):
def __init__(self, request):
super().__init__(request)
self.list_schema = ListSchema
self.add_schema = AddSchema
self.edit_schema = EditSchema
self.list_route = 'eis-pkbbbnkb'
self.table = UploadRealisasiOpsen
self.db_session = PCDBSession
# def view_list(self):
# return super().view_list()
# def view_act(self):
# return super().view_act()
# def view_view(self):
# return super().view_view()
def form_validator(self, form, value):
exc = colander.Invalid(form, '')
if 'id' in form.request.matchdict:
uid = int(form.request.matchdict['id'])
q = UploadRealisasiOpsen.query_id(uid)
current = q.first()
else:
value['no_urut'] = UploadRealisasiOpsen.get_no_urut()
value['tanggal'] = date.today().strftime("%Y-%m-%d")
value['kode_rekening'] = '4.1.01.20.01.0001'
if value["nama_rekening"] == 'Opsen BBNKB':
value['kode_rekening'] = '4.1.01.20.02.0001'
def view_add(self):
return super().view_add()
# def get_values(self, row, istime=False, null=False):
# d = super().get_values(row, istime, null)
# d["kiri"] = d
# d["kanan"] = d
# return d
# def view_edit(self):
# return super().view_edit()
# def view_delete(self):
# return super().view_delete()
\ No newline at end of file \ No newline at end of file
<html metal:use-macro="load: eis-base.pt"
tal:define="scripts scripts|scripts" >
<div metal:fill-slot="content">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-fw fa-plus"></i>&nbsp;${request.title}</h3>
</div>
<div class="panel-body">
<div tal:content="structure form"></div>
</div>
</div>
</div>
<div metal:fill-slot="scripts">
<script>
$(document).ready(function () {
$(".readonly").attr("readonly", true);
${structure:scripts}
});
</script>
<div metal:define-slot="scripts">
<script src="${home}/static/v3/js/plugin/datatables/jquery.dataTables.min.js"></script>
<script src="${home}/static/v3/js/plugin/datatables/dataTables.colVis.min.js"></script>
<script src="${home}/static/v3/js/plugin/datatables/dataTables.tableTools.min.js"></script>
<script src="${home}/static/v3/js/plugin/datatables/dataTables.bootstrap.min.js"></script>
<script src="${home}/static/v3/js/plugin/datatable-responsive/datatables.responsive.min.js"></script>
</div>
</div>
</html>
<html metal:use-macro="load: ./base.pt"
tal:define="
home request._host;">
<div metal:fill-slot="content">
<div class="jarviswidget jarviswidget-color-blueLight"> <!-- jarviswidget -->
<div tal:content="structure form"></div>
</div>
</div>
</html>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!