rekening.py 2.17 KB
from sqlalchemy import (
    Column,
    Integer,
    DateTime,
    String,
    SmallInteger
)
from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.schema import FetchedValue

from . import PAD_TABLE_ARGS, DefaultModel, Base


class PjdlRekening(Base, DefaultModel):
    __tablename__ = 'tblrekening'
    __table_args__ = PAD_TABLE_ARGS

    id = Column(Integer, primary_key=True)
    rekeningkd = Column(String(15), nullable=False, unique=True)
    rekeningnm = Column(String(150))
    levelid = Column(Integer)
    issummary = Column(SmallInteger, nullable=False)
    defsign = Column(SmallInteger, nullable=True)
    isppkd = Column(SmallInteger, nullable=False, server_default=FetchedValue())
    tmt = Column(DateTime)
    enabled = Column(SmallInteger)
    create_date = Column(DateTime)
    create_uid = Column(Integer)
    write_date = Column(DateTime)
    write_uid = Column(Integer)
    insidentil = Column(SmallInteger, server_default=FetchedValue())
    # reksts_id = Column(BigInteger)
    # rek_akrual_id = Column(BigInteger)

    @hybrid_property
    def kode(self):
        return self.rekeningkd

    @kode.setter
    def kode(self, kode):
        self.rekeningkd = kode

    @hybrid_property
    def nama(self):
        return self.rekeningnm

    @nama.setter
    def nama(self, kode):
        self.rekeningnm = kode

    @classmethod
    def query_kode(cls, kode):
        return cls.query().filter(cls.rekeningkd == kode)

    @classmethod
    def query_nama(cls, nama):
        return cls.query().filter(cls.rekeningnm == nama)

    @classmethod
    def query_register(cls, order_field="rekeningnm"):
        return cls.query_from(columns =[cls.rekeningkd.label('Kode Rekening'), 
                                        cls.rekeningnm.label('Nama Rekening'),
                                        cls.issummary.label('Summary'),
                                        cls.tmt, cls.enabled.label('aktif')]). \
            order_by(getattr(cls, order_field))

    @classmethod
    def get_list(cls):
        r = []
        q = cls.query().order_by(cls.rekeningnm)
        for row in q:
            g = (str(row.id), f"{row.kode}/ {row.nama}")
            r.append(g)
        return r