models_webr.py 4.93 KB
from datetime import datetime
from sqlalchemy import (
    Column,
    Integer,
    BigInteger,
    SmallInteger,
    Text,
    DateTime,
    String,
    Float,
    Date,
    UniqueConstraint,
    ForeignKey,
    Index,
    create_engine,
    )

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import (
    scoped_session,
    sessionmaker,
    relationship, backref
    )

from conf import webr_url as url

WebrBase = declarative_base()
WebrDBSession = scoped_session(sessionmaker())    
engine_webr = create_engine(url, echo=False)
WebrDBSession.configure(bind=engine_webr)
WebrBase.metadata.bind = engine_webr

from models_default import (DefaultModel as BaseDefaultModel,
                            NamaModel, CommonModel)
                            
class DefaultModel(BaseDefaultModel):
    @classmethod
    def query(cls):
        return WebrDBSession.query(cls)

    @classmethod
    def count(cls):
        return WebrDBSession.query(func.count('id')).scalar()
    
class Rekening(NamaModel,WebrBase):
    __tablename__ = 'rekenings'
    id            = Column(Integer,    primary_key=True)
    kode          = Column(String(24), unique=True)
    nama          = Column(String(128))
    level_id      = Column(SmallInteger)
    is_summary    = Column(SmallInteger)
    parent_id     = Column(SmallInteger)

    
class ARInvoice(CommonModel, WebrBase):
    __tablename__   = 'arinvoices'
    id              = Column(Integer, primary_key=True)
    tahun_id        = Column(Integer)
    unit_id         = Column(Integer, ForeignKey("units.id"))
    no_id           = Column(Integer)
    subjek_pajak_id = Column(Integer, ForeignKey("subjekpajaks.id"))
    objek_pajak_id  = Column(Integer, ForeignKey("objekpajaks.id"))
    kode            = Column(String(32), unique=True)
    unit_kode       = Column(String(32))
    unit_nama       = Column(String(128))
    rekening_id     = Column(Integer, ForeignKey("rekenings.id"))
    rek_kode        = Column(String(16))    
    rek_nama        = Column(String(64))   
    wp_kode         = Column(String(16))
    wp_nama         = Column(String(64))
    wp_alamat_1     = Column(String(128))
    wp_alamat_2     = Column(String(128))
    op_kode         = Column(String(16))
    op_nama         = Column(String(64))
    op_alamat_1     = Column(String(128))
    op_alamat_2     = Column(String(128))
    #------------------------------Khusus untuk SPTPD--------------------------------------------#
    dasar           = Column(BigInteger)  # dasar = sum(dpp)
    tarif           = Column(Float)       # dasar/jumlah (agak berbeda dengan tarif yang di item)
    pokok           = Column(BigInteger)  # pokok = sum(total_pajak)
    denda           = Column(BigInteger)  
    bunga           = Column(BigInteger)  
    jumlah          = Column(BigInteger)  # pokok + denda + bunga
    #--------------------------------------------------------------------------------------------#
    periode_1       = Column(Date)
    periode_2       = Column(Date)
    tgl_tetap       = Column(Date)
    jatuh_tempo     = Column(Date)
    status_grid     = Column(SmallInteger, nullable=False, default=0) # 0 Register - 1 Pembayaran_cepat - 2 SPTPD
    status_bayar    = Column(SmallInteger, nullable=False, default=0) # 0 belum bayar - 1 sudah bayar - 2 batal
    is_sspd         = Column(SmallInteger, nullable=False, default=0) # Penambahan baru (29122016)
    is_tbp          = Column(SmallInteger, nullable=False, default=0) # Penambahan baru (29122016)
    is_sts          = Column(SmallInteger, nullable=False, default=0) # Penambahan baru (29122016)
    owner_id        = Column(Integer) # user login yg membuat invoice
    wilayah_id      = Column(Integer, ForeignKey("wilayahs.id"))
    create_uid      = Column(Integer)
    update_uid      = Column(Integer)
    create_date     = Column(DateTime(timezone=True))
    update_date     = Column(DateTime(timezone=True))
    UniqueConstraint(tahun_id,unit_id,no_id,name='arinvoice_uq')

    
class ARSspd(CommonModel, WebrBase):
    __tablename__ = 'arsspds'
    id            = Column(Integer, primary_key=True)
    tahun_id      = Column(Integer)
    unit_id       = Column(Integer, ForeignKey("units.id"))
    arinvoice_id  = Column(Integer, ForeignKey("arinvoices.id"))
    pembayaran_ke = Column(Integer)
    bunga         = Column(BigInteger)
    bayar         = Column(BigInteger)
    tgl_bayar     = Column(DateTime)
    create_uid    = Column(Integer)
    update_uid    = Column(Integer)
    create_date   = Column(DateTime(timezone=True))
    update_date   = Column(DateTime(timezone=True))
    posted        = Column(SmallInteger, nullable=False, default=0)
    ntb           = Column(String(20))   
    ntp           = Column(String(20))
    bank_id       = Column(Integer)
    channel_id    = Column(Integer)
    arinvoices    = relationship("ARInvoice", backref=backref('arsspds'))
    UniqueConstraint(arinvoice_id,pembayaran_ke,name='arsspd_uq')
    UniqueConstraint(tahun_id,unit_id,name='arsspd_no_uq')