default.py 10.2 KB
from sqlalchemy import (
    Column,
    DateTime,
    Integer,
    String,
    Float,
    Date,
    Text,
    ForeignKey,
    UniqueConstraint,
    )
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql.expression import text


Base = declarative_base()


class Departemen(Base):
    __tablename__ = 'departemen'
    id = Column(Integer, primary_key=True)
    status = Column(Integer, nullable=False)
    created = Column(DateTime)
    updated = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    kode = Column(String(32))
    nama = Column(String(128))
    parent_id = Column(Integer, ForeignKey('departemen.id'))
    kategori = Column(String(32))
    alamat = Column(String(255))
    singkat = Column(String(32))
    level_id = Column(Integer)


class Rekening(Base):
    __tablename__ = 'rekening'
    id = Column(Integer, primary_key=True)
    created = Column(DateTime)
    updated = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    kode = Column(String(32))
    nama = Column(String(128))
    tahun = Column(Integer)
    level_id = Column(Integer)
    parent_id = Column(Integer, ForeignKey('rekening.id'))
    status = Column(Integer)
    defsign = Column(Integer)
    __table_args__ = (
        UniqueConstraint('kode', 'tahun'),)


class Produk(Base):
    __tablename__ = 'produk'
    id = Column(Integer, primary_key=True)
    created = Column(DateTime)
    updated = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    kode = Column(String(32), unique=True)
    nama = Column(String(128))
    status = Column(Integer)
    harga = Column(Float, nullable=False)
    tarif = Column(Float, nullable=False)
    no_urut = Column(Integer)
    denda_id = Column(Integer)
    produk_denda_id = Column(Integer)
    rekening_id = Column(Integer, ForeignKey(Rekening.id))
    __table_args__ = (
        UniqueConstraint('rekening_id', 'no_urut'),
        dict(schema='webr'))


class Subjek(Base):
    __tablename__ = 'subjek'
    id = Column(Integer, primary_key=True)
    created = Column(DateTime)
    updated = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    kode = Column(String(32), unique=True)
    nama = Column(String(128))
    status = Column(Integer)
    no_urut = Column(Integer)
    alamat_1 = Column(String(128))
    alamat_2 = Column(String(128))
    kelurahan = Column(String(128))
    kecamatan = Column(String(128))
    kota = Column(String(128))
    provinsi = Column(String(128))
    email = Column(String(40))
    phone = Column(String(16))
    fax = Column(String(16))
    mobile = Column(String(16))
    website = Column(String(64))
    is_vendor = Column(Integer)
    is_customer = Column(Integer)
    bank = Column(String(16))
    bank_accnt = Column(String(16))
    pic = Column(String(16))
    pic_mobile = Column(String(16))
    pic_email = Column(String(16))
    pic_jabatan = Column(String(16))
    user_id = Column(Integer, ForeignKey('users.id'))
    departemen_id = Column(Integer, ForeignKey(Departemen.id))
    jenis_id = Column(Integer)
    __table_args__ = (
        dict(schema='webr'),)


class Kecamatan(Base):
    __tablename__ = 'kecamatan'
    id = Column(Integer, primary_key=True)
    created = Column(DateTime)
    updated = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    kode = Column(String(32), unique=True)
    nama = Column(String(128))
    status = Column(Integer)
    __table_args__ = (
        dict(schema='webr'),)


class Kelurahan(Base):
    __tablename__ = 'kelurahan'
    id = Column(Integer, primary_key=True)
    created = Column(DateTime)
    updated = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    kode = Column(String(32))
    nama = Column(String(128))
    status = Column(Integer)
    kecamatan_id = Column(Integer, ForeignKey(Kecamatan.id))
    __table_args__ = (
        UniqueConstraint('kode', 'kecamatan_id'),
        dict(schema='webr'))


class Tarif(Base):
    __tablename__ = 'produk_tarif'
    status = Column(Integer, nullable=False)
    created = Column(DateTime)
    updated = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    kode = Column(String(32))
    id = Column(Integer, primary_key=True)
    produk_id = Column(Integer, ForeignKey(Produk.id))
    rekening_id = Column(Integer, ForeignKey(Rekening.id))
    posisi = Column(Integer)
    tarif = Column(Float)
    satuan_tarif = Column(String(128))
    tarif2 = Column(Float)
    satuan_tarif2 = Column(String(128))
    dasar_hukum = Column(String(128))
    nama_lokasi_tarif = Column(String(128))
    __table_args__ = (
        dict(schema='webr'),)


class Pegawai(Base):
    __tablename__ = 'pegawai'
    id = Column(Integer, primary_key=True)
    kode = Column(String(32))
    status = Column(Integer, nullable=False)
    created = Column(DateTime)
    updated = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    nama = Column(String(128))
    alamat = Column(String(255))
    nik = Column(String(18))
    email = Column(String(64))
    phone = Column(String(16))
    fax = Column(String(16))
    mobile = Column(String(16))
    website = Column(String(64))


class Objek(Base):
    __tablename__ = 'objek'
    id = Column(Integer, primary_key=True)
    created = Column(DateTime)
    updated = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    kode = Column(String(32), unique=True)
    nama = Column(String(128))
    departemen_id = Column(Integer, ForeignKey(Departemen.id))
    produk_id = Column(Integer, ForeignKey(Produk.id))
    no_urut = Column(Integer)
    status = Column(Integer)
    jenis = Column(Integer)
    alamat_1 = Column(String(128))
    alamat_2 = Column(String(128))
    tarif = Column(Float)
    luas_tanah = Column(Float)
    subjek_id = Column(Integer, ForeignKey(Subjek.id))
    produk_tarif_id = Column(Integer, ForeignKey(Tarif.id))
    produk_item_id = Column(Integer, ForeignKey('webr.produk_item.id'))
    kecamatan_id = Column(Integer, ForeignKey(Kecamatan.id))
    kelurahan_id = Column(Integer, ForeignKey(Kelurahan.id))
    jns_objek = Column(Integer)
    jenis_pemakaian_id = Column(Integer, ForeignKey('webr.jenis_pemakaian.id'))
    luas_tanah_pemakaian = Column(Float)
    njop_tanah = Column(Float)
    luas_bangunan = Column(Float)
    harga_satuan = Column(Float)
    nilai_satuan = Column(Float)
    panjang = Column(Float)
    lebar = Column(Float)
    tinggi = Column(Float)
    lama_pengenaan = Column(Integer)
    satuan_pengenaan = Column(String(128))
    rekening_id = Column(Integer, ForeignKey(Rekening.id))
    nama_kegiatan = Column(String(128))
    kode_kegiatan = Column(String(128))
    __table_args__ = (
        UniqueConstraint('departemen_id', 'produk_id', 'no_urut'),
        dict(schema='webr'))


class Invoice(Base):
    __tablename__ = 'ar_invoice'
    id = Column(Integer, primary_key=True)
    created = Column(DateTime)
    updated = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    kode = Column(String(32), unique=True)
    no_urut = Column(Integer)
    tahun = Column(Integer)
    departemen_id = Column(Integer, ForeignKey(Departemen.id))
    departemen_kode = Column(String(32))
    departemen_nama = Column(String(128))
    objek_id = Column(Integer, ForeignKey(Objek.id))
    objek_kode = Column(String(32))
    objek_nama = Column(String(128))
    objek_alamat_1 = Column(String(128))
    objek_alamat_2 = Column(String(128))
    produk_id = Column(Integer, ForeignKey(Produk.id))
    produk_kode = Column(String(32))
    produk_nama = Column(String(128))
    rekening_id = Column(Integer, ForeignKey(Rekening.id))
    rekening_kode = Column(String(32))
    rekening_nama = Column(String(128))
    pejabat_id = Column(Integer, ForeignKey(Pegawai.id))
    pejabat_nm = Column(String(128))
    subjek_id = Column(Integer, ForeignKey(Subjek.id))
    subjek_kode = Column(String(32))
    subjek_nama = Column(String(64))
    subjek_alamat_1 = Column(String(128))
    subjek_alamat_2 = Column(String(128))
    dasar = Column(Integer, nullable=False)
    tarif = Column(Float)
    pokok = Column(Integer, nullable=False)
    pengurang = Column(Integer, nullable=False)
    penambah = Column(Integer, nullable=False)
    setoran = Column(Integer, nullable=False)
    terutang = Column(Integer, nullable=False)
    denda = Column(Integer, nullable=False)
    bunga = Column(Integer, nullable=False)
    jumlah = Column(Integer, nullable=False)
    jml_angsuran = Column(Integer, nullable=False)
    catatan = Column(String(500))
    nama_lain = Column(String(30))
    jenis_penerimaan = Column(Integer, nullable=False)
    jenis = Column(Integer)
    no_skrd = Column(String(64))
    tgl_skrd = Column(Date)
    periode_1 = Column(Date)
    periode_2 = Column(Date)
    periode = Column(String(128))
    tgl_terima = Column(Date)
    jatuh_tempo = Column(Date)
    penyetor_id = Column(Integer)
    penyetor_kode = Column(String(32))
    penyetor_nama = Column(String(128))
    status = Column(Integer, nullable=False)
    __table_args__ = (
        UniqueConstraint('tahun', 'departemen_id', 'no_urut'),
        dict(schema='webr'))


class Payment(Base):
    __tablename__ = 'ar_payment'
    id = Column(Integer, primary_key=True)
    status = Column(Integer, nullable=False)
    created = Column(DateTime)
    updated = Column(DateTime)
    kode = Column(String(32), unique=True)
    tahun = Column(Integer)
    departemen_id = Column(Integer, ForeignKey(Departemen.id))
    no_urut = Column(Integer)
    ar_invoice_id = Column(Integer, ForeignKey(Invoice.id))
    pembayaran_ke = Column(Integer)
    bunga = Column(Integer, nullable=False)
    bayar = Column(Integer, nullable=False)
    tgl_bayar = Column(DateTime(timezone=True))
    jatuh_tempo = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    create_date = Column(DateTime(timezone=True))
    update_date = Column(DateTime(timezone=True))
    posted = Column(Integer, nullable=False, server_default=text('0'))
    ntb = Column(String(20))
    bank_id = Column(Integer)
    channel_id = Column(Integer)
    __table_args__ = (
        UniqueConstraint('tahun', 'departemen_id', 'no_urut'),
        dict(schema='webr'))