import-sipkd.py 4.24 KB
from sipkd_models import Anggaran, Realisasi, Base, DBSession
from eis_models import (Anggaran as EisAnggaran, ApPayment as EisApPayment, 
                        ArPayment as EisArPayment, ByPayment as EisByPayment, 
                        EisBase, EisDBSession)
from conf import sipkd_url
from sqlalchemy import create_engine
from datetime import datetime
from datetime import date
engine = create_engine(sipkd_url)
DBSession.configure(bind=engine)
Base.metadata.bind = engine
Base.metadata.create_all(engine)
now = datetime.now()
tanggal = now.date()
tahun = now.strftime('%Y')

def import_anggaran():
    query = DBSession.query(Anggaran).filter_by(tahun=tahun)
    for row in query.all():
        anggaran = EisDBSession.query(EisAnggaran).\
                      filter_by(tahun=row.tahun,
                         kode=row.kd_rekening,
                         departemen_kd = row.kd_opd,
                         ).first()
        if not anggaran:
            anggaran = EisAnggaran()
            anggaran.tahun = row.tahun
            anggaran.kode = row.kd_rekening
            anggaran.departemen_kd = row.kd_opd
        anggaran.level_id = row.kd_rekening.count('.')
        anggaran.nama = row.nm_rekening
        anggaran.departemen_nm = row.nm_opd
        anggaran.murni = row.ang_murni
        anggaran.perubahan = row.ang_perubahan
        EisDBSession.add(anggaran)
        EisDBSession.flush()
    EisDBSession.commit()
    
def import_ar(all=False):
    query = DBSession.query(Realisasi)
    if not all:
        query = query.filter_by(tanggal=tanggal)
        
    for row in query.filter(Realisasi.kd_rekening.like('4%')).all():
        eis = EisDBSession.query(ArPayment).\
                      filter_by(tahun = row.tahun,
                         rekening_kd = row.kd_rekening,
                         departemen_kd = row.kd_opd,
                         tanggal = tanggal,
                         ).first()
        if not eis:
            eis = EisArPayment()
            eis.tahun = row.tahun
            eis.kode = row.kd_rekening
            eis.departemen_kd = row.kd_opd
            eis.tanggal = tanggal
        eis.level_id = row.kd_rekening.count('.')
        eis.nama = row.nm_rekening
        eis.departemen_nm = row.nm_opd
        eis.jumlah = row.realisai
        EisDBSession.add(anggaran)
        EisDBSession.flush()
    EisDBSession.commit()
    
def import_ap(all=False):
    query = DBSession.query(Realisasi)
    if not all:
        query = query.filter_by(tanggal=tanggal)
        
    for row in query.filter(Realisasi.kd_rekening.like('5%')).all():
        eis = EisDBSession.query(ArPayment).\
                      filter_by(tahun = row.tahun,
                         rekening_kd = row.kd_rekening,
                         departemen_kd = row.kd_opd,
                         tanggal = tanggal,
                         ).first()
        if not eis:
            eis = EisApPayment()
            eis.tahun = row.tahun
            eis.kode = row.kd_rekening
            eis.departemen_kd = row.kd_opd
            eis.tanggal = tanggal
        eis.level_id = row.kd_rekening.count('.')
        eis.nama = row.nm_rekening
        eis.departemen_nm = row.nm_opd
        eis.jumlah = row.realisai
        EisDBSession.add(eis)
        EisDBSession.flush()
    EisDBSession.commit()

def import_by(all=False):
    query = DBSession.query(Realisasi)
    if not all:
        query = query.filter_by(tanggal=tanggal)
        
    for row in query.filter(Realisasi.kd_rekening.like('6%')).all():
        eis = EisDBSession.query(ArPayment).\
                      filter_by(tahun = row.tahun,
                         rekening_kd = row.kd_rekening,
                         departemen_kd = row.kd_opd,
                         tanggal = tanggal,
                         ).first()
        if not eis:
            eis = EisByPayment()
            eis.tahun = row.tahun
            eis.kode = row.kd_rekening
            eis.departemen_kd = row.kd_opd
            eis.tanggal = tanggal
        eis.level_id = row.kd_rekening.count('.')
        eis.nama = row.nm_rekening
        eis.departemen_nm = row.nm_opd
        eis.jumlah = row.realisai
        EisDBSession.add(eis)
        EisDBSession.flush()
    EisDBSession.commit()
    
import_anggaran()
import_ap()
import_ar()