eis.py 4.05 KB
from datetime import datetime
from sqlalchemy import (
    Column,
    Integer,
    BigInteger,
    SmallInteger,
    Text,
    DateTime,
    String,
    UniqueConstraint,
    ForeignKey,
    Index
    )
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm import (
    scoped_session,
    sessionmaker,
    relationship, backref
    )
from ..models import (EisDBSession, DefaultModel, EisBase, NamaModel, TABLE_ARGS)

class Eis(EisBase, NamaModel):
    __tablename__ = 'wells'
    tahun = Column(Integer)
    amt_tahun = Column(BigInteger)
    amt_bulan = Column(BigInteger)
    amt_minggu = Column(BigInteger)
    amt_hari   = Column(BigInteger)
    order_id   = Column(SmallInteger)
    aktif      = Column(SmallInteger)
    __table_args__ = TABLE_ARGS

    @classmethod
    def sum_data(cls, kode, tahun):
        q = EisDBSession.query(cls).filter_by(
                kode==kode,
                tahun=tahun).first()
        if q:
            sum_minggu = q.amt_minggu+q.amt_hari
            sum_bulan  = q.amt_bulan + sum_minggu
            sum_tahun  = q.amt_tahun + sum_bulan
            return  dict(sum_hari = sum_hari, sum_minggu = sum_minggu, 
                         sum_bulan = sum_bulan, sum_tahun = sum_tahun)
            
        return {}
        
    @classmethod
    def sum_order_id(cls, tahun):
        q = EisDBSession.query(cls).filter_by(
                tahun=tahun)
        if q:
            return  q
        return 

class Slide(NamaModel, EisBase):
    __tablename__ = 'slides'
    source_type = Column(String(16)) #grid, image, chart-line, chart-pie, chart-bar
    source_id   = Column(String(128))
    order_id   = Column(Integer, default=0)
    aktif   = Column(SmallInteger, default=0)
    __table_args__ = TABLE_ARGS

class Chart(NamaModel, EisBase):
    __tablename__ = 'charts'
    chart_type = Column(String(16))                  
    label      = Column(String(128)) #digunakan jika chart membutuhkan label                  
    devider    = Column(BigInteger, default=1)
    status   = Column(SmallInteger, default=0)
    __table_args__ = (UniqueConstraint('kode'),
                      TABLE_ARGS)
                      
class ChartItem(NamaModel, EisBase):
    __tablename__ = 'chart_items'
    value_1 = Column(BigInteger, default=0)
    value_2 = Column(BigInteger, default=0)
    value_3 = Column(BigInteger, default=0)
    value_4 = Column(BigInteger, default=0)
    value_5 = Column(BigInteger, default=0)
    value_6 = Column(BigInteger, default=0)
    value_7 = Column(BigInteger, default=0)
    value_8 = Column(BigInteger, default=0)
    value_9 = Column(BigInteger, default=0)
    value10 = Column(BigInteger, default=0)
    value11 = Column(BigInteger, default=0)
    value12 = Column(BigInteger, default=0)
    chart_id = Column(Integer, ForeignKey('eis.charts.id'))
    source_type = Column(String(32), default='realisasi')
    rekening_kd = Column(String(128))
    color = Column(String(6))
    highlight = Column(String(6))
    is_sum   = Column(SmallInteger, default=0)
    updated    = Column(DateTime)
    created    = Column(DateTime)
    create_uid = Column(Integer)
    update_uid = Column(Integer)
    chart   = relationship("Chart")
    status   = Column(SmallInteger, default=0)
    __table_args__ = (UniqueConstraint('kode'),
                      TABLE_ARGS)
                      
class EisParams(NamaModel, EisBase):
    __tablename__ = 'params'
    last_update = Column(DateTime(timezone=False), nullable=True)
    __table_args__ = (TABLE_ARGS)
    
class LastUpdate(DefaultModel, EisBase):
    __tablename__ = 'last_update'
    wells = Column(DateTime(timezone=False), nullable=True)
    __table_args__ = (TABLE_ARGS)
    
class ArPayment(NamaModel, EisBase):
    __tablename__ = 'ar_payment'
    tanggal = Column(DateTime(timezone=False))
    denda = Column(BigInteger)
    bayar = Column(BigInteger)
    __table_args__ = (UniqueConstraint('tanggal','kode'),
                      TABLE_ARGS)