pkbbbnkb.py 3.15 KB
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()