Commit 7e027e2f by Owo Sugiana

Deteksi ketiadaan tabel log_iso

1 parent 61fa38dd
2.0 2022-07-18 2.0 2022-07-20
-------------- --------------
- Perbedaan utama dari versi 0.x adalah kini berangkat dari tabel aslinya dan - Perbedaan utama dari versi 0.x adalah kini berangkat dari tabel aslinya dan
bukan dari tabel ISO8583 karena sudah memperhatikan channel MANUAL (input bukan dari tabel ISO8583 karena sudah memperhatikan channel MANUAL (input
......
...@@ -120,6 +120,13 @@ class App(BaseApp): ...@@ -120,6 +120,13 @@ class App(BaseApp):
self.base_q_perolehan = self.prod_session.query( self.base_q_perolehan = self.prod_session.query(
AlternativePerolehan) AlternativePerolehan)
self.base_q_pay = self.prod_session.query(AlternativePayment) self.base_q_pay = self.prod_session.query(AlternativePayment)
self.base_q_log = self.prod_session.query(Log).filter_by(
mti='0210', bit_003=PAYMENT_CODE, bit_039='00')
try:
self.base_q_log.first()
except ProgrammingError:
self.prod_session.rollback()
self.base_q_log = None
def get_last_time(self): # Override def get_last_time(self): # Override
s_tgl = self.last_pay.tanggal.strftime('%d-%m-%Y') s_tgl = self.last_pay.tanggal.strftime('%d-%m-%Y')
...@@ -151,9 +158,9 @@ class App(BaseApp): ...@@ -151,9 +158,9 @@ class App(BaseApp):
iso.get_ntb() iso.get_ntb()
def get_iso_v2(self): def get_iso_v2(self):
q = self.prod_session.query(Log).filter_by( if not self.base_q_log:
mti='0210', bit_003=PAYMENT_CODE, bit_039='00') return
q = q.filter(func.trim(Log.bit_062) == self.invoice_id) q = self.base_q_log.filter(func.trim(Log.bit_062) == self.invoice_id)
q = q.order_by(Log.id.desc()) q = q.order_by(Log.id.desc())
row = q.first() row = q.first()
if not row: if not row:
......
...@@ -4,6 +4,7 @@ from datetime import ( ...@@ -4,6 +4,7 @@ from datetime import (
datetime, datetime,
) )
from sqlalchemy import func from sqlalchemy import func
from sqlalchemy.exc import ProgrammingError
from opensipkd.string import FixLength from opensipkd.string import FixLength
from opensipkd.waktu import dmyhms from opensipkd.waktu import dmyhms
from opensipkd.pad.models.default import ( from opensipkd.pad.models.default import (
...@@ -62,6 +63,11 @@ class App(BaseApp): ...@@ -62,6 +63,11 @@ class App(BaseApp):
Usaha.id == Pajak.usaha_id,) Usaha.id == Pajak.usaha_id,)
self.base_q_log = self.prod_session.query(Log).filter_by( self.base_q_log = self.prod_session.query(Log).filter_by(
mti='0210', bit_003=PAYMENT_CODE, bit_039='00') mti='0210', bit_003=PAYMENT_CODE, bit_039='00')
try:
self.base_q_log.first()
except ProgrammingError:
self.prod_session.rollback()
self.base_q_log = None
def get_pay_date(self): # Override def get_pay_date(self): # Override
return self.last_pay.sspdtgl.date() return self.last_pay.sspdtgl.date()
...@@ -101,6 +107,8 @@ class App(BaseApp): ...@@ -101,6 +107,8 @@ class App(BaseApp):
iso.get_ntb(), row.bank_id iso.get_ntb(), row.bank_id
def get_iso_v2(self): def get_iso_v2(self):
if not self.base_q_log:
return
q = self.base_q_log.filter(func.trim(Log.bit_061) == self.invoice_id) q = self.base_q_log.filter(func.trim(Log.bit_061) == self.invoice_id)
q = q.order_by(Log.id.desc()) q = q.order_by(Log.id.desc())
row = q.first() row = q.first()
......
...@@ -11,6 +11,7 @@ from sqlalchemy import ( ...@@ -11,6 +11,7 @@ from sqlalchemy import (
UniqueConstraint, UniqueConstraint,
func, func,
) )
from sqlalchemy.exc import DatabaseError
from ISO8583.ISO8583 import BitNotSet from ISO8583.ISO8583 import BitNotSet
import transaction import transaction
from sismiop.services.base import get_id from sismiop.services.base import get_id
...@@ -50,6 +51,22 @@ def to_date(dt): ...@@ -50,6 +51,22 @@ def to_date(dt):
return dt return dt
class AlternativePayment(Base):
__tablename__ = 'payment'
id = Column(String(32), primary_key=True)
inquiry_id = Column(Integer, nullable=False)
propinsi = Column(String(2), nullable=False)
kabupaten = Column(String(2), nullable=False)
kecamatan = Column(String(3), nullable=False)
kelurahan = Column(String(3), nullable=False)
blok = Column(String(3), nullable=False)
urut = Column(String(4), nullable=False)
jenis = Column(String(1), nullable=False)
tahun = Column(Integer, nullable=False)
ke = Column(Integer, nullable=False)
iso_request = Column(String(2048), nullable=False)
class JsonLog(Base): class JsonLog(Base):
__tablename__ = 'pbb_payment' __tablename__ = 'pbb_payment'
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
...@@ -89,7 +106,11 @@ class App(BaseApp): ...@@ -89,7 +106,11 @@ class App(BaseApp):
return return
d = Doc() d = Doc()
self.iso_inquiry_orm = d.iso_inquiry_model self.iso_inquiry_orm = d.iso_inquiry_model
self.iso_payment_orm = d.iso_payment_model try:
self.prod_session.query(d.iso_payment_model).first()
self.iso_payment_orm = d.iso_payment_model
except DatabaseError:
self.iso_payment_orm = AlternativePayment
self.base_q_iso = self.prod_session.query( self.base_q_iso = self.prod_session.query(
self.iso_payment_orm, self.iso_inquiry_orm).filter( self.iso_payment_orm, self.iso_inquiry_orm).filter(
self.iso_payment_orm.inquiry_id == self.iso_inquiry_orm.id) self.iso_payment_orm.inquiry_id == self.iso_inquiry_orm.id)
...@@ -102,9 +123,13 @@ class App(BaseApp): ...@@ -102,9 +123,13 @@ class App(BaseApp):
factory = self.get_factory('h2h_db_url') factory = self.get_factory('h2h_db_url')
self.h2h_session = factory() self.h2h_session = factory()
else: else:
self.h2h_session = self.prod_session try:
self.base_q_log = self.h2h_session.query(Log).filter_by( self.prod_session.query(Log).first()
mti='0210', bit_003=PAYMENT_CODE, bit_039='00') self.h2h_session = self.prod_session
self.base_q_log = self.h2h_session.query(Log).filter_by(
mti='0210', bit_003=PAYMENT_CODE, bit_039='00')
except DatabaseError:
self.h2h_session = None
if 'json_db_url' in self.conf: if 'json_db_url' in self.conf:
factory = self.get_factory('json_db_url') factory = self.get_factory('json_db_url')
self.json_session = factory() self.json_session = factory()
...@@ -176,6 +201,8 @@ class App(BaseApp): ...@@ -176,6 +201,8 @@ class App(BaseApp):
iso.get_ntb(), str(iso.get_bank_id()), user_id, row_inq.tgl iso.get_ntb(), str(iso.get_bank_id()), user_id, row_inq.tgl
def get_iso_v2(self): def get_iso_v2(self):
if not self.h2h_session:
return
q = self.base_q_log.filter_by(bit_061=self.invoice_id) q = self.base_q_log.filter_by(bit_061=self.invoice_id)
q = q.order_by(Log.id.desc()) q = q.order_by(Log.id.desc())
row = q.first() row = q.first()
...@@ -241,6 +268,8 @@ class App(BaseApp): ...@@ -241,6 +268,8 @@ class App(BaseApp):
tgl_inquiry = self.get_source(psppt) tgl_inquiry = self.get_source(psppt)
discount = hasattr(psppt, 'discount') and psppt.discount or None discount = hasattr(psppt, 'discount') and psppt.discount or None
tgl = to_date(psppt.tgl_pembayaran_sppt) tgl = to_date(psppt.tgl_pembayaran_sppt)
if ntb:
ntb = ntb.strip()
return dict( return dict(
kd_propinsi=psppt.kd_propinsi, kd_dati2=psppt.kd_dati2, kd_propinsi=psppt.kd_propinsi, kd_dati2=psppt.kd_dati2,
kd_kecamatan=psppt.kd_kecamatan, kd_kelurahan=psppt.kd_kelurahan, kd_kecamatan=psppt.kd_kecamatan, kd_kelurahan=psppt.kd_kelurahan,
...@@ -251,7 +280,7 @@ class App(BaseApp): ...@@ -251,7 +280,7 @@ class App(BaseApp):
denda_sppt=psppt.denda_sppt or 0, discount=discount or 0, denda_sppt=psppt.denda_sppt or 0, discount=discount or 0,
tgl_pembayaran_sppt=tgl, tgl_inquiry=tgl_inquiry, tgl_pembayaran_sppt=tgl, tgl_inquiry=tgl_inquiry,
tgl_rekam_byr_sppt=psppt.tgl_rekam_byr_sppt, tgl_rekam_byr_sppt=psppt.tgl_rekam_byr_sppt,
nm_wp_sppt=sppt.nm_wp_sppt, channel_kode=channel_kode, nm_wp_sppt=sppt.nm_wp_sppt.strip(), channel_kode=channel_kode,
channel_nama=channel_nama, bank_id=bank_id, user_id=user_id, channel_nama=channel_nama, bank_id=bank_id, user_id=user_id,
pbb_yg_harus_dibayar_sppt=sppt.pbb_yg_harus_dibayar_sppt) pbb_yg_harus_dibayar_sppt=sppt.pbb_yg_harus_dibayar_sppt)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!