import-sipkd-master.py 1.8 KB
from models_sipkd_master import RekPendapatan, RekBelanja, RekBiaya, SipkdDBSession, SipkdBase, DaftUnit
from models_eis import Rekening as EisRekening, EisBase, EisDBSession, Opd

from conf import sipkd_url, sipkd_url_master
from sqlalchemy import create_engine
from datetime import datetime
from datetime import date

eng_master = create_engine(sipkd_url_master)
SipkdDBSession.configure(bind=eng_master)
SipkdBase.metadata.bind = eng_master
SipkdBase.metadata.create_all(eng_master)

now = datetime.now()
tanggal = now.date()
tahun = now.strftime('%Y')

def import_rekening(tabel):
    query = SipkdDBSession.query(tabel)
    for row in query.all():
        rek = EisDBSession.query(EisRekening).\
                      filter_by(tahun=tahun,
                         kode=row.kdper.strip()
                         ).first()
        if not rek:
            rek = EisRekening()
            rek.tahun = tahun
            rek.kode = row.kdper.strip()
        rek.nama = row.nmper.strip()
        rek.level_id = row.kdper.strip().count('.')
        EisDBSession.add(rek)
        EisDBSession.flush()
    EisDBSession.commit()

def import_opd():
    query = SipkdDBSession.query(DaftUnit)
    for row in query.all():
        row_target = EisDBSession.query(Opd).\
                      filter_by(tahun=tahun,
                         kode=row.kdunit.strip()
                         ).first()
        if not row_target:
            row_target = Opd()
            row_target.tahun = tahun
            row_target.kode = row.kdunit.strip()
        row_target.nama = row.nmunit.strip()
        row_target.level_id = row.kdunit.strip().count('.')
        EisDBSession.add(row_target)
        EisDBSession.flush()
    EisDBSession.commit()
        
#import_rekening(RekPendapatan)
#import_rekening(RekBelanja)
#import_rekening(RekBiaya)
import_opd()