Commit e6e71033 by Owo Sugiana

PBB memahami tabel log_iso universal

1 parent e6687c42
3.0.2 2023-05-17
----------------
- PBB kini memahami tabel log_iso dengan struktur universal (JSON).
3.0.1 2023-04-14 3.0.1 2023-04-14
---------------- ----------------
- Tambah tabel pbb_invoice yang merupakan salinan tabel sppt. Tabel ini diisi - Tambah tabel pbb_invoice yang merupakan salinan tabel sppt. Tabel ini diisi
......
...@@ -37,6 +37,7 @@ from ..common import ( ...@@ -37,6 +37,7 @@ from ..common import (
get_channel_info_by_iso, get_channel_info_by_iso,
get_channel_name_by_row, get_channel_name_by_row,
get_channel_name_by_dict, get_channel_name_by_dict,
get_channel_name,
BaseApp, BaseApp,
one_day, one_day,
VaInvoice, VaInvoice,
...@@ -129,6 +130,12 @@ class App(BaseApp): ...@@ -129,6 +130,12 @@ class App(BaseApp):
if 'h2h_db_url' in self.conf: if 'h2h_db_url' in self.conf:
factory = self.get_factory('h2h_db_url') factory = self.get_factory('h2h_db_url')
self.h2h_session = factory() self.h2h_session = factory()
try:
self.h2h_session.query(UniversalLog.bits).first()
self.is_universal_log = True
except ProgrammingError:
self.h2h_session.rollback()
self.is_universal_log = False
self.base_q_log = self.get_base_q_log() self.base_q_log = self.get_base_q_log()
elif self.prod_session: elif self.prod_session:
try: try:
...@@ -145,9 +152,17 @@ class App(BaseApp): ...@@ -145,9 +152,17 @@ class App(BaseApp):
else: else:
self.json_session = None self.json_session = None
def get_log_model(self):
return self.is_universal_log and UniversalLog or Log
def get_base_q_log(self): def get_base_q_log(self):
return self.h2h_session.query(Log).filter_by( Log = self.get_log_model()
mti='0210', bit_003=PAYMENT_CODE, bit_039='00') q = self.h2h_session.query(Log).filter_by(mti='0210')
if self.is_universal_log:
return q.filter(
Log.bits.op('->>')('3') == PAYMENT_CODE,
Log.bits.op('->>')('39') == '00')
return q.filter_by(bit_003=PAYMENT_CODE, bit_039='00')
def get_sppt(self, psppt): def get_sppt(self, psppt):
q = self.base_q_sppt.filter_by( q = self.base_q_sppt.filter_by(
...@@ -217,11 +232,23 @@ class App(BaseApp): ...@@ -217,11 +232,23 @@ class App(BaseApp):
def get_iso_v2(self): def get_iso_v2(self):
if not self.h2h_session: if not self.h2h_session:
return return
q = self.base_q_log.filter_by(bit_061=self.invoice_id) Log = self.get_log_model()
q = self.base_q_log
if self.is_universal_log:
q = q.filter(Log.bits.op('->>')('61') == self.invoice_id)
else:
q = q.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()
if not row: if not row:
return return
if self.is_universal_log:
channel_id = row.bits['18'].strip()
channel_nama = get_channel_name(
row.bits['18'], row.bits['32'], row.bits['41'], row.bits['42'],
row.bits['43'])
return channel_id, channel_nama, row.bits['11'], \
row.bits['48'].strip(), row.bits['32'], row.bits['107']
channel_id = row.bit_018.strip() channel_id = row.bit_018.strip()
channel_nama = get_channel_name_by_row(row) channel_nama = get_channel_name_by_row(row)
return channel_id, channel_nama, row.bit_011, \ return channel_id, channel_nama, row.bit_011, \
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!