pbb-iso.py
1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import sys
import transaction
from opensipkd.iso8583.bjb.pbb.models import Log
from opensipkd.iso8583.bjb.pbb import Doc
from payment_report.scripts.pbb import App as BaseApp
from payment_report.scripts.common import (
get_iso,
get_keys,
)
class App(BaseApp):
def __run_payment(self):
last = self.get_last_id('pbb payment last id')
q_iso = self.__get_query_iso(last.as_int())
found = False
for row_pay, row_inq in q_iso.limit(1000):
iso = get_iso(row_pay.iso_request, Doc, self.option.debug)
stan = iso.getBit(11)
ntb = iso.getBit(48)
d = get_keys(iso)
s = f"STAN {stan} NTB {ntb} Channel {d['channel']}"
self.log.info(s)
q = self.rpt_session.query(Log).filter_by(
bit_011=stan, bit_048=ntb)
iso_log = q.first()
if not iso_log:
iso_values = iso.get_values()
bits = dict(mti='0200')
for bit in iso_values:
value = iso_values[bit]
field = 'bit_{}'.format(str(bit).zfill(3))
bits[field] = value
iso_log = Log(**bits)
iso_log.error = d['channel'], # Numpang di field error
last.nilai = str(row_inq.id)
with transaction.manager:
self.rpt_session.add(iso_log)
self.rpt_session.add(last)
found = True
return found
def run_reversal(self): # Override
pass
app = App(sys.argv[1:])
app.run()