Commit ec69c917 by Owo Sugiana

Tambah pengenalan tabel gw_payment di PJDL

1 parent 59cc2ecb
3.1.8 2025-05-20 3.1.8 2025-05-20
---------------- ----------------
- Tambah pengenalan tabel gw_payment di PBB dan BPHTB - Tambah pengenalan tabel gw_payment di PBB, BPHTB, dan PJDL
3.1.7 2025-02-27 3.1.7 2025-02-27
---------------- ----------------
......
...@@ -443,14 +443,15 @@ class App(BaseApp): ...@@ -443,14 +443,15 @@ class App(BaseApp):
channel_name = get_channel_name_by_row(row) channel_name = get_channel_name_by_row(row)
return channel_id, channel_name, stan, ntb return channel_id, channel_name, stan, ntb
def get_api(self, psppt): def get_api(self):
q = self.base_q_api.filter_by(bit_059='1', bit_061=self.invoice_id) q = self.base_q_api.filter_by(bit_059='1', bit_061=self.invoice_id)
q = q.order_by(ApiLog.id.desc()) q = q.order_by(ApiLog.id.desc())
row = q.first() row = q.first()
if not row: if not row:
return return
channel_nama = BIT_18_NAMES[row.bit_018] channel_nama = BIT_18_NAMES[row.bit_018]
return row.bit_018, channel_nama, row.bit_011, row.bit_037, row.bit_032 return row.bit_018, channel_nama, row.bit_011, row.bit_037, \
int(row.bit_032)
def get_invoice_cartenz(self, pay): def get_invoice_cartenz(self, pay):
if pay.no_transaksi_byr in ('KB', 'KBT'): if pay.no_transaksi_byr in ('KB', 'KBT'):
...@@ -591,7 +592,7 @@ class App(BaseApp): ...@@ -591,7 +592,7 @@ class App(BaseApp):
else: else:
channel_nama = self.get_va_channel(pay.tanggal) or 'MANUAL' channel_nama = self.get_va_channel(pay.tanggal) or 'MANUAL'
elif self.api_session: elif self.api_session:
source = self.get_api(pay) source = self.get_api()
if source: if source:
channel_id, channel_nama, stan, ntb, bank_id = source channel_id, channel_nama, stan, ntb, bank_id = source
else: else:
......
...@@ -6,7 +6,10 @@ from opensipkd.iso8583.bjb.pad.structure import PAYMENT_CODE ...@@ -6,7 +6,10 @@ from opensipkd.iso8583.bjb.pad.structure import PAYMENT_CODE
from opensipkd.iso8583.bjb.pad.doc import Doc as BjbDoc from opensipkd.iso8583.bjb.pad.doc import Doc as BjbDoc
from opensipkd.iso8583.bjb.pad.models import Log from opensipkd.iso8583.bjb.pad.models import Log
from opensipkd.iso8583.multi.doc import Doc as MultiDoc from opensipkd.iso8583.multi.doc import Doc as MultiDoc
from ..models import Pad from ..models import (
Pad,
ApiLog,
)
from ..common import ( from ..common import (
get_iso, get_iso,
get_channel_info_by_iso, get_channel_info_by_iso,
...@@ -14,6 +17,7 @@ from ..common import ( ...@@ -14,6 +17,7 @@ from ..common import (
BaseApp, BaseApp,
one_day, one_day,
BANK_NAMES, BANK_NAMES,
BIT_18_NAMES,
) )
...@@ -52,6 +56,12 @@ class App(BaseApp): ...@@ -52,6 +56,12 @@ class App(BaseApp):
except ProgrammingError: except ProgrammingError:
self.prod_session.rollback() self.prod_session.rollback()
self.base_q_log = None self.base_q_log = None
if 'api_db_url' in self.conf:
factory = self.get_factory('api_db_url')
self.api_session = factory()
self.base_q_api = self.api_session.query(ApiLog)
else:
self.api_session = 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()
...@@ -110,6 +120,16 @@ class App(BaseApp): ...@@ -110,6 +120,16 @@ class App(BaseApp):
return channel_id, channel_nama, row.bit_011, row.bit_048.strip(), \ return channel_id, channel_nama, row.bit_011, row.bit_048.strip(), \
bank_id bank_id
def get_api(self, inv_id):
q = self.base_q_api.filter_by(bit_059='2', bit_061=inv_id)
q = q.order_by(ApiLog.id.desc())
row = q.first()
if not row:
return
channel_nama = BIT_18_NAMES[row.bit_018]
return row.bit_018, channel_nama, row.bit_011, row.bit_037, \
int(row.bit_032)
def create_data(self, pay): # Override def create_data(self, pay): # Override
Invoice = self.models.Invoice Invoice = self.models.Invoice
q_inv = self.base_q_inv.filter(Invoice.id == pay.spt_id) q_inv = self.base_q_inv.filter(Invoice.id == pay.spt_id)
...@@ -119,25 +139,36 @@ class App(BaseApp): ...@@ -119,25 +139,36 @@ class App(BaseApp):
invoice_id['SptNo'] = inv.sptno invoice_id['SptNo'] = inv.sptno
try: try:
invoice_id['Prefix'] = getattr(self.service, 'PREFIX') invoice_id['Prefix'] = getattr(self.service, 'PREFIX')
has_prefix = True
except AttributeError: except AttributeError:
pass has_prefix = False
self.invoice_id = invoice_id.get_raw() self.invoice_id = invoice_id.get_raw()
source = self.get_iso_v2() if has_prefix:
if source: p = len(invoice_id['Prefix'])
channel_id, channel_name, stan, ntb, bank_id = source inv_id = self.invoice_id[p:]
else:
inv_id = self.invoice_id
stan = ntb = bank_id = None
channel_id = '0000'
channel_name = 'MANUAL'
if self.api_session:
source = self.get_api(inv_id)
if source:
channel_id, channel_name, stan, ntb, bank_id = source
else: else:
source = self.get_iso_v1(pay) source = self.get_iso_v2()
if source: if source:
channel_id, channel_name, stan, ntb, bank_id = source channel_id, channel_name, stan, ntb, bank_id = source
else: else:
stan = ntb = bank_id = None source = self.get_iso_v1(pay)
channel_id = '0000' if source:
tgl = pay.sspdtgl.date() channel_id, channel_name, stan, ntb, bank_id = source
channel_name = self.get_va_channel(tgl) else:
if not channel_name: tgl = pay.sspdtgl.date()
p = len(invoice_id['Prefix']) channel_name = self.get_va_channel(tgl)
inv_id = self.invoice_id[p:] if not channel_name:
channel_name = self.get_va_channel(tgl, inv_id) or 'MANUAL' channel_name = self.get_va_channel(tgl, inv_id) or \
'MANUAL'
return dict( return dict(
id=pay.id, stan=stan, ntb=ntb, tgl=pay.sspdtgl.date(), id=pay.id, stan=stan, ntb=ntb, tgl=pay.sspdtgl.date(),
jam=pay.sspdtgl.time(), nomor_bayar=invoice_id.get_raw(), jam=pay.sspdtgl.time(), nomor_bayar=invoice_id.get_raw(),
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!