posting_pbb_pay.py 6.6 KB
                unitkey = SipkdUnit.get_key_by_kode(row.unit_kd)
                kodekey = row.kode
                #CEK DULU DATA SKP
                #row_skp = SipkdDBSession.query(SipkdSkp).\
                #                         filter_by(UNITKEY = unitkey,
                #                                   NOSKP   = row.ref_kode) #cek by no bayar
                #if row_skp:
                #    statuskd = '64' #Penerimaan (Rek.Bend)-Penetapan
                #else:
                #    statuskd = '63' #Penerimaan (Rek.Bend)-Tanpa Penetapan
                
                if not row.ref_kode or row.ref_kode=='0' or row.ref_kode=='00':
                    statuskd = '63' #Penerimaan (Rek.Bend)-Tanpa Penetapan
                else:
                    statuskd = '64' #Penerimaan (Rek.Bend)-Penetapan
                row_tbp = SipkdDBSession.query(SipkdTbp).\
                        filter(SipkdTbp.notbp == kodekey,
                               SipkdTbp.unitkey == unitkey).first()
                if not row_tbp:
                    row_tbp = SipkdTbp()
                keybend = '2084_'
                row_tbp.unitkey  = unitkey
                row_tbp.notbp    = kodekey 
                row_tbp.keybend1 = keybend

                row_tbp.kdstatus = statuskd
                row_tbp.keybend2 = keybend
                row_tbp.idxkode  = '1' #pendapatan
                row_tbp.tgltbp   = row.tgl_trans
                row_tbp.penyetor = row.nama
                row_tbp.alamat   = row.alamat
                row_tbp.uraitbp  = row.rekening_nm
                row_tbp.tglvalid = row.tgl_trans
                SipkdDBSession.add(row_tbp)
                SipkdDBSession.flush()
                
                if row.pokok+row.denda+row.bunga>0:
                    rekening_key =  SipkdRek4.get_key_by_kode(row.rekening_kd)
                    row_tbpdet =  SipkdDBSession.query(SipkdTbpDet).\
                            filter(SipkdTbpDet.notbp == SipkdTbp.notbp,
                                   SipkdTbpDet.mtgkey == rekening_key,
                                   SipkdTbpDet.unitkey  == unitkey
                                    ).first()
                    if not row_tbpdet:
                        row_tbpdet = SipkdTbpDet()
                    
                    row_tbpdet.unitkey = unitkey
                    row_tbpdet.notbp   = kodekey
                    row_tbpdet.nilai   = row.pokok
                    row_tbpdet.mtgkey  = rekening_key
                    row_tbpdet.nojetra = '11' #Penerimaan STS/TBP
                    SipkdDBSession.add(row_tbpdet)
                    SipkdDBSession.flush()
                if row.denda+row.bunga>0:
                    rekening_key =  SipkdRek4.get_key_by_kode('4.1.4.07.12.')
                    row_tbpdet =  SipkdDBSession.query(SipkdTbpDet).\
                            filter(SipkdTbpDet.notbp == SipkdTbp.notbp,
                                    SipkdTbpDet.mtgkey == rekening_key
                                    ).first()
                    if not row_tbpdet:
                        row_tbpdet = SipkdTbpDet()

                    row_tbpdet.unitkey = unitkey
                    row_tbpdet.notbp   = kodekey
                    row_tbpdet.nilai   = row.denda+row.bunga
                    row_tbpdet.mtgkey  = rekening_key
                    row_tbpdet.nojetra = '11' #Penerimaan STS/TBP
                    SipkdDBSession.add(row_tbpdet)
                    SipkdDBSession.flush()

                #Insert into BKU   
                row_bku = SipkdDBSession.query(SipkdBkuTbp).\
                        filter(SipkdBkuTbp.unitkey    == unitkey,
                                SipkdBkuTbp.nobkuskpd == kodekey,
                                SipkdBkuTbp.notbp     == kodekey).first()
                if not row_bku:
                    row_bku = SipkdBkuTbp()
                keybend = '2084_'
                row_bku = SipkdBkuTbp()
                row_bku.unitkey     = unitkey
                row_bku.nobkuskpd   = kodekey
                row_bku.notbp       = kodekey
                row_bku.idxttd      = keybend
                row_bku.tglbkuskpd  = row.tgl_trans
                row_bku.uraian      = row.nama
                row_bku.tglvalid    = row.tgl_trans
                row_bku.keybend     = keybend
                SipkdDBSession.add(row_bku)
                SipkdDBSession.flush()
                row_bku.tglvalid    = row.tgl_trans
                SipkdDBSession.add(row_bku)
                SipkdDBSession.flush()
    
                """"if (row.denda+row.bunga)>0:  
                    row_tbpdet = SipkdTbpDet()
                    row_tbpdet.UNITKEY = unitkey
                    row_tbpdet.NOTBP   = kodekey
                    row_tbpdet.NILAI   = row.denda+row.bunga
                    row_tbpdet.MTGKEY  = SipkdRek4.get_key_by_kode(row.rekening_kd)
                    row_tbpdet.NOJETRA = '11' #Penerimaan STS/TBP
                    SipkdDBSession.add(row_tbpdet)
                    SipkdDBSession.flush()
                
                
                if row_skp:
                    row_skptbp = SipkdSkpTbp()
                    row_skptbp.UNITKEY = unitkey
                    row_skptbp.NOTBP   = row_tbp.NOTBP
                    row_skptbp.NOSKP   = row.ref_kode
                    SipkdDBSession.add(row_skptbp)
                    SipkdDBSession.flush()
                """
                
                row.posted = 1
                DBSession.add(row)
                DBSession.flush()
            else:
                unitkey = SipkdUnit.get_key_by_kode(row.unit_kd)
                notbp = row.kode
                row_bku = SipkdDBSession.query(SipkdBkuTbp).\
                                         filter_by(unitkey = unitkey,
                                                   notbp   = notbp,
                                                   ).delete()
                                                   
                row_tbpdet = SipkdDBSession.query(SipkdTbpDet).\
                                         filter_by(unitkey = unitkey,
                                                   notbp   = notbp).delete()
                # row_skptbp = SipkdDBSession.query(SipkdSkpTbp).\
                                         # filter_by(unitkey = unitkey,
                                                   # notbp   = notbp).delete()
                row_tbp = SipkdDBSession.query(SipkdTbp).\
                                         filter_by(unitkey = unitkey,
                                                   notbp   = notbp).delete()
                SipkdDBSession.flush()
                row.posted = 0
                DBSession.add(row)
                DBSession.flush()