models.py 6.53 KB
from sqlalchemy import (
    Column,
    Integer,
    BigInteger,
    Float,
    String,
    Date,
    Time,
    DateTime,
    UniqueConstraint,
    )
from sqlalchemy.ext.declarative import declarative_base


Base = declarative_base()


class Common:
    def to_dict(self):
        values = {}
        for column in self.__table__.columns:
            values[column.name] = getattr(self, column.name)
        return values

    def from_dict(self, values):
        for column in self.__table__.columns:
            if column.name in values:
                setattr(self, column.name, values[column.name])


class Pad(Base, Common):
    __tablename__ = 'pad_report'
    # pad.pad_sspd.id
    id = Column(Integer, primary_key=True)
    # Bit 11
    stan = Column(String(6))
    # Bit 48
    ntb = Column(String(32))
    # pad.pad_sspd.create_date / log_iso.created
    tgl = Column(Date, nullable=False)
    # pad.pad_sspd.sspdjam / log_iso.created
    jam = Column(Time, nullable=False)
    # Bit 61
    nomor_bayar = Column(String(25), nullable=False)
    # pad.pad_usaha.usahanm
    jenis_pajak = Column(String(64), nullable=False)
    # pad.pad_spt.masadari
    masa_pajak = Column(Date, nullable=False)
    # pad.pad_customer.npwpd
    npwpd = Column(String(17))
    # pad.pad_customer.customernm
    nama_wp = Column(String(150), nullable=False)
    # pad.pad_sspd.jml_bayar - pad.pad_sspd.denda
    pokok = Column(Float, nullable=False)
    # pad.pad_sspd.denda
    denda = Column(Float, nullable=False)
    # pad.pad_sspd.bunga
    bunga = Column(Float, nullable=False)
    # pad.pad_sspd.jml_bayar
    jml_bayar = Column(Float, nullable=False)
    # Bit 32
    bank_id = Column(Integer)
    # Bit 18
    channel_id = Column(String(4), nullable=False)
    # Bit 41 / 42 / 43
    channel_name = Column(String(32), nullable=False)
    # pad_reversal.tgl
    tgl_batal = Column(DateTime(timezone=True))


class Webr(Base, Common):
    __tablename__ = 'webr_report'
    # webr.ar_payment.id
    id = Column(Integer, primary_key=True)
    # Bit 11
    stan = Column(String(6))
    # Bit 48
    ntb = Column(String(32))
    # log_iso.created
    tgl = Column(Date, nullable=False)
    # log_iso.created
    jam = Column(Time, nullable=False)
    # Bit 61
    nomor_bayar = Column(String(16), nullable=False)
    # webr.ar_invoice.subjek_nama
    nama_wp = Column(String(150), nullable=False)
    # webr.ar_invoice.jumlah - webr.ar_invoice.bunga
    pokok = Column(Float, nullable=False)
    # webr.ar_payment.bunga
    denda = Column(Float, nullable=False)
    # webr.ar_payment.bayar
    jml_bayar = Column(Float, nullable=False)
    # Bit 18
    channel_id = Column(String(4), nullable=False)
    # Bit 41 / 42 / 43
    channel_name = Column(String(32), nullable=False)
    # webr.ar_payment.status
    status = Column(Integer, nullable=False)
    # webr.ar_invoice.produk_nama
    produk = Column(String(225), nullable=False)
    tgl_batal = Column(DateTime(timezone=True))


class Bphtb(Base, Common):
    __tablename__ = 'bphtb_report'
    # bphtb.bphtb_bank.id
    id = Column(Integer, primary_key=True)
    # Bit 11
    stan = Column(String(6))
    # Bit 58
    ntb = Column(String(32))
    # bphtb.bphtb_bank.tanggal
    tgl = Column(Date, nullable=False)
    # bphtb.bphtb_bank.jam
    jam = Column(Time, nullable=False)
    # Bit 62
    invoice_id = Column(String(16), nullable=False)
    # Bit 61
    nop = Column(String(22), nullable=False)
    # bphtb.bphtb_bank.wp_nama
    wp_nama = Column(String(225), nullable=False)
    # bphtb.bphtb_bank.wp_alamat
    wp_alamat = Column(String(225), nullable=False)
    # bphtb.bphtb_sspd.op_alamat
    op_alamat = Column(String(225), nullable=False)
    # bphtb.bphtb_bank.npop
    npop = Column(Float, nullable=False)
    # bphtb.bphtb_bank.bumi_luas
    bumi_luas = Column(Integer, nullable=False)
    # bphtb.bphtb_bank.bng_luas
    bng_luas = Column(Integer, nullable=False)
    # Bit 4
    nilai_bphtb = Column(Float, nullable=False)
    # bphtb.bphtb_perolehan.nama
    jenis_perolehan = Column(String(100), nullable=False)
    # bphtb.bphtb_ppat.nama
    ppat = Column(String(50), nullable=False)
    # Bit 18
    channel_id = Column(String(4), nullable=False)
    # Bit 41 / 42 / 43
    channel_nama = Column(String(32), nullable=False)
    # bphtb.bphtb_reversal.tgl
    tgl_batal = Column(DateTime(timezone=True))
    status_pembayaran = Column(Integer)


class Pbb(Base, Common):
    __tablename__ = 'pbb_report'
    id = Column(Integer, primary_key=True)
    # Bit 11
    stan = Column(String(6))
    # Bit 48
    ntb = Column(String(32))
    # Field pembayaran_sppt.kd_propinsi
    kd_propinsi = Column(String(2), nullable=False)
    # Field pembayaran_sppt.kd_dati2
    kd_dati2 = Column(String(2), nullable=False)
    # Field pembayaran_sppt.kd_kecamatan
    kd_kecamatan = Column(String(3), nullable=False)
    # Field pembayaran_sppt.kd_kelurahan
    kd_kelurahan = Column(String(3), nullable=False)
    # Field pembayaran_sppt.kd_blok
    kd_blok = Column(String(3), nullable=False)
    # Field pembayaran_sppt.no_urut
    no_urut = Column(String(4), nullable=False)
    # Field pembayaran_sppt.kd_jns_op
    kd_jns_op = Column(String(1), nullable=False)
    # Field pembayaran_sppt.thn_pajak_sppt
    thn_pajak_sppt = Column(String(4), nullable=False)
    # Field pembayaran_sppt.pembayaran_sppt_ke
    pembayaran_sppt_ke = Column(Integer, nullable=False)
    # Field sppt.pbb_yg_harus_dibayar_sppt
    pbb_yg_harus_dibayar_sppt = Column(Float, nullable=False)
    # Field pembayaran_sppt.jml_sppt_yg_dibayar
    jml_sppt_yg_dibayar = Column(BigInteger, nullable=False)
    # Field pembayaran_sppt.denda_sppt
    denda_sppt = Column(BigInteger, nullable=False)
    # Field pembayaran_sppt.discount
    discount = Column(BigInteger, nullable=False)
    # Bit 7 / Transmission Date Inquiry
    tgl_inquiry = Column(DateTime(timezone=True))
    # Bit 7 / Transmission Date
    tgl_pembayaran_sppt = Column(Date, nullable=False)
    # Bit 7 / Transmission DateTime
    tgl_rekam_byr_sppt = Column(DateTime(timezone=True), nullable=False)
    # Bit 62 / Invoice Profile
    nm_wp_sppt = Column(String(50), nullable=False)
    # Bit 18
    channel_kode = Column(String(4), nullable=False)
    # Bit 41 / 42 / 43
    channel_nama = Column(String(32), nullable=False)
    # Bit 107
    user_id = Column(String(16))
    # Bit 32
    bank_id = Column(String(4))
    tgl_batal = Column(DateTime(timezone=True))
    __table_args__ = dict(
        UniqueConstraint(
            kd_propinsi, kd_dati2, kd_kecamatan, kd_kelurahan,
            kd_blok, no_urut, kd_jns_op, thn_pajak_sppt,
            pembayaran_sppt_ke),
        )