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
bukan dari tabel ISO8583 karena sudah memperhatikan channel MANUAL (input
......
......@@ -120,6 +120,13 @@ class App(BaseApp):
self.base_q_perolehan = self.prod_session.query(
AlternativePerolehan)
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
s_tgl = self.last_pay.tanggal.strftime('%d-%m-%Y')
......@@ -151,9 +158,9 @@ class App(BaseApp):
iso.get_ntb()
def get_iso_v2(self):
q = self.prod_session.query(Log).filter_by(
mti='0210', bit_003=PAYMENT_CODE, bit_039='00')
q = q.filter(func.trim(Log.bit_062) == self.invoice_id)
if not self.base_q_log:
return
q = self.base_q_log.filter(func.trim(Log.bit_062) == self.invoice_id)
q = q.order_by(Log.id.desc())
row = q.first()
if not row:
......
......@@ -4,6 +4,7 @@ from datetime import (
datetime,
)
from sqlalchemy import func
from sqlalchemy.exc import ProgrammingError
from opensipkd.string import FixLength
from opensipkd.waktu import dmyhms
from opensipkd.pad.models.default import (
......@@ -62,6 +63,11 @@ class App(BaseApp):
Usaha.id == Pajak.usaha_id,)
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_pay_date(self): # Override
return self.last_pay.sspdtgl.date()
......@@ -101,6 +107,8 @@ class App(BaseApp):
iso.get_ntb(), row.bank_id
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 = q.order_by(Log.id.desc())
row = q.first()
......
......@@ -11,6 +11,7 @@ from sqlalchemy import (
UniqueConstraint,
func,
)
from sqlalchemy.exc import DatabaseError
from ISO8583.ISO8583 import BitNotSet
import transaction
from sismiop.services.base import get_id
......@@ -50,6 +51,22 @@ def to_date(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):
__tablename__ = 'pbb_payment'
id = Column(Integer, primary_key=True)
......@@ -89,7 +106,11 @@ class App(BaseApp):
return
d = Doc()
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.iso_payment_orm, self.iso_inquiry_orm).filter(
self.iso_payment_orm.inquiry_id == self.iso_inquiry_orm.id)
......@@ -102,9 +123,13 @@ class App(BaseApp):
factory = self.get_factory('h2h_db_url')
self.h2h_session = factory()
else:
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')
try:
self.prod_session.query(Log).first()
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:
factory = self.get_factory('json_db_url')
self.json_session = factory()
......@@ -176,6 +201,8 @@ class App(BaseApp):
iso.get_ntb(), str(iso.get_bank_id()), user_id, row_inq.tgl
def get_iso_v2(self):
if not self.h2h_session:
return
q = self.base_q_log.filter_by(bit_061=self.invoice_id)
q = q.order_by(Log.id.desc())
row = q.first()
......@@ -241,6 +268,8 @@ class App(BaseApp):
tgl_inquiry = self.get_source(psppt)
discount = hasattr(psppt, 'discount') and psppt.discount or None
tgl = to_date(psppt.tgl_pembayaran_sppt)
if ntb:
ntb = ntb.strip()
return dict(
kd_propinsi=psppt.kd_propinsi, kd_dati2=psppt.kd_dati2,
kd_kecamatan=psppt.kd_kecamatan, kd_kelurahan=psppt.kd_kelurahan,
......@@ -251,7 +280,7 @@ class App(BaseApp):
denda_sppt=psppt.denda_sppt or 0, discount=discount or 0,
tgl_pembayaran_sppt=tgl, tgl_inquiry=tgl_inquiry,
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,
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!