Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Owo Sugiana
/
payment-report
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit b197bc90
authored
Aug 02, 2022
by
Owo Sugiana
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
nip_pospbb optional
1 parent
9a543323
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
51 additions
and
24 deletions
CHANGES.txt
log2iso.ini
payment_report/models.py
payment_report/scripts/log2iso.py
payment_report/scripts/log2iso_init.py
payment_report/scripts/pbb.py
CHANGES.txt
View file @
b197bc9
2.0 2022-0
7-30
2.0 2022-0
8-02
--------------
- Perbedaan utama dari versi 0.x adalah kini berangkat dari tabel aslinya dan
bukan dari tabel ISO8583 karena sudah memperhatikan channel MANUAL (input
...
...
@@ -6,3 +6,4 @@
- Memahami channel VA dan QRIS
- Menyimpan log file dari Cartenz ke tabel log_file
- Menerjemahkan log_file menjadi log_iso
- nip_pospbb optional
log2iso.ini
View file @
b197bc9
...
...
@@ -3,5 +3,5 @@ models = opensipkd.iso8583.bjb.pbb.models
service
=
opensipkd.iso8583.bjb.pbb.doc
db_url
=
postgresql://cartenz:pass@localhost/h2h_pbb
report_db_url
=
postgresql://pcpd:pass@localhost/pcpd
pid_file
=
/home/sugiana/tmp/pbb-
log
.pid
log_file
=
/home/sugiana/log/pbb-
log
.log
pid_file
=
/home/sugiana/tmp/pbb-
iso
.pid
log_file
=
/home/sugiana/log/pbb-
iso
.log
payment_report/models.py
View file @
b197bc9
...
...
@@ -177,7 +177,7 @@ class Pbb(Base, Common):
# Bit 7 / Transmission DateTime
tgl_rekam_byr_sppt
=
Column
(
DateTime
(
timezone
=
True
),
nullable
=
False
)
# Bit 62 / Invoice Profile
nm_wp_sppt
=
Column
(
String
(
3
0
),
nullable
=
False
)
nm_wp_sppt
=
Column
(
String
(
5
0
),
nullable
=
False
)
# Bit 18
channel_kode
=
Column
(
String
(
4
),
nullable
=
False
)
# Bit 41 / 42 / 43
...
...
@@ -189,7 +189,7 @@ class Pbb(Base, Common):
tgl_batal
=
Column
(
DateTime
(
timezone
=
True
))
__table_args__
=
dict
(
UniqueConstraint
(
'kd_propinsi'
,
'kd_dati2'
,
'kd_kecamatan'
,
'kd_kelurahan'
,
'kd_blok'
,
'no_urut'
,
'kd_jns_op'
,
'thn_pajak_sppt'
)
,
kd_propinsi
,
kd_dati2
,
kd_kecamatan
,
kd_kelurahan
,
kd_blok
,
no_urut
,
kd_jns_op
,
thn_pajak_sppt
,
pembayaran_sppt_ke
),
)
payment_report/scripts/log2iso.py
View file @
b197bc9
...
...
@@ -51,8 +51,10 @@ class App(BaseApp):
self
.
report_orm
=
Log
if
self
.
conf
[
'models'
]
.
find
(
'bphtb'
)
>
-
1
:
self
.
conf_name
=
'bphtb log file last id'
self
.
pajak
=
'bphtb'
else
:
self
.
conf_name
=
'pbb log file last id'
self
.
pajak
=
'pbb'
register
(
self
.
prod_session
)
def
get_option
(
self
,
argv
):
# Override
...
...
@@ -88,13 +90,16 @@ class App(BaseApp):
int
(
year
),
int
(
month
),
int
(
day
),
int
(
hour
),
int
(
minute
),
int
(
sec
),
int
(
msec
)
*
1000
)
iso
=
self
.
service
.
Doc
()
iso
.
setIsoContent
(
raw
[
4
:]
.
encode
(
'utf-8'
))
try
:
iso
.
setIsoContent
(
raw
[
4
:]
.
encode
(
'utf-8'
))
except
ValueError
as
e
:
raise
InvalidSource
(
'ID {log_file.id} tidak dipahami: {str(e)}'
)
try
:
if
iso
.
getBit
(
3
)
!=
self
.
service
.
PAYMENT_CODE
:
raise
InvalidSource
(
f
'ID {log_file.id} bukan payment'
)
except
BitNotSet
:
raise
InvalidSource
(
f
'ID {log_file.id} bit 3 tidak ada'
)
d
=
dict
(
mti
=
iso
.
getMTI
(),
created
=
waktu
)
d
=
dict
(
id
=
log_file
.
id
,
mti
=
iso
.
getMTI
(),
created
=
waktu
)
for
bit
in
iso
.
get_bit_definition
():
try
:
value
=
iso
.
getBit
(
bit
)
...
...
@@ -102,9 +107,20 @@ class App(BaseApp):
continue
field
=
'bit_{}'
.
format
(
str
(
bit
)
.
zfill
(
3
))
d
[
field
]
=
value
profile
=
FixLength
(
self
.
service
.
INVOICE_PROFILE
)
profile
.
set_raw
(
iso
.
getBit
(
62
))
d
[
'bit_062_data'
]
=
profile
.
to_dict
()
if
self
.
pajak
==
'bphtb'
:
try
:
profile
=
FixLength
(
self
.
service
.
INVOICE_PROFILE
)
profile
.
set_raw
(
iso
.
getBit
(
47
))
d
[
'bit_047_data'
]
=
profile
.
to_dict
()
profile
=
FixLength
(
self
.
service
.
INVOICE_PROFILE2
)
profile
.
set_raw
(
iso
.
getBit
(
48
))
d
[
'bit_048_data'
]
=
profile
.
to_dict
()
except
BitNotSet
:
pass
else
:
profile
=
FixLength
(
self
.
service
.
INVOICE_PROFILE
)
profile
.
set_raw
(
iso
.
getBit
(
62
))
d
[
'bit_062_data'
]
=
profile
.
to_dict
()
return
d
def
get_last_time
(
self
):
# Override
...
...
payment_report/scripts/log2iso_init.py
View file @
b197bc9
...
...
@@ -21,10 +21,6 @@ def main(argv=sys.argv[1:]):
append_csv
(
Conf
,
'conf_log2iso.csv'
,
[
'nama'
])
db_session
.
commit
()
models
=
get_module_object
(
conf
.
get
(
'main'
,
'models'
))
class
Log
(
Base
,
models
.
LogMixin
):
pass
db_url
=
conf
.
get
(
'main'
,
'db_url'
)
engine
=
create_engine
(
db_url
,
echo
=
True
)
Base
.
metadata
.
create_all
(
engine
)
payment_report/scripts/pbb.py
View file @
b197bc9
...
...
@@ -118,16 +118,16 @@ class App(BaseApp):
self
.
Psppt
=
self
.
models
.
PembayaranSppt
self
.
Sppt
=
self
.
models
.
Sppt
self
.
base_q_sppt
=
self
.
prod_session
.
query
(
self
.
Sppt
)
self
.
nip_pospbb
=
self
.
conf
[
'nip_pospbb'
]
self
.
nip_pospbb
=
self
.
conf
.
get
(
'nip_pospbb'
)
if
'h2h_db_url'
in
self
.
conf
:
factory
=
self
.
get_factory
(
'h2h_db_url'
)
self
.
h2h_session
=
factory
()
self
.
base_q_log
=
self
.
get_base_q_log
()
else
:
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'
)
self
.
base_q_log
=
self
.
get_base_q_log
()
except
DatabaseError
:
self
.
h2h_session
=
None
if
'json_db_url'
in
self
.
conf
:
...
...
@@ -137,6 +137,10 @@ class App(BaseApp):
else
:
self
.
json_session
=
None
def
get_base_q_log
(
self
):
return
self
.
h2h_session
.
query
(
Log
)
.
filter_by
(
mti
=
'0210'
,
bit_003
=
PAYMENT_CODE
,
bit_039
=
'00'
)
def
get_sppt
(
self
,
psppt
):
q
=
self
.
base_q_sppt
.
filter_by
(
kd_propinsi
=
psppt
.
kd_propinsi
,
...
...
@@ -250,7 +254,9 @@ class App(BaseApp):
channel_kode
,
channel_nama
,
stan
,
ntb
,
bank_id
=
source
else
:
channel_kode
=
'0000'
if
psppt
.
nip_rekam_byr_sppt
.
strip
()
==
self
.
nip_pospbb
:
if
self
.
nip_pospbb
and
\
psppt
.
nip_rekam_byr_sppt
.
strip
()
==
\
self
.
nip_pospbb
:
channel_nama
=
'POSPBB'
else
:
tgl
=
psppt
.
tgl_rekam_byr_sppt
.
date
()
...
...
@@ -266,6 +272,14 @@ class App(BaseApp):
raise
InvalidSource
(
msg
)
channel_kode
,
channel_nama
,
stan
,
ntb
,
bank_id
,
user_id
,
\
tgl_inquiry
=
self
.
get_source
(
psppt
)
try
:
bayar
=
psppt
.
jml_sppt_yg_dibayar
denda
=
psppt
.
denda_sppt
pokok
=
sppt
.
pbb_yg_harus_dibayar_sppt
except
AttributeError
:
bayar
=
psppt
.
jml_pbb_yg_dibayar
denda
=
psppt
.
jml_denda_sppt
pokok
=
sppt
.
pbb_yg_hrs_dibayar_sppt
discount
=
hasattr
(
psppt
,
'discount'
)
and
psppt
.
discount
or
None
tgl
=
to_date
(
psppt
.
tgl_pembayaran_sppt
)
if
ntb
:
...
...
@@ -276,13 +290,13 @@ class App(BaseApp):
kd_blok
=
psppt
.
kd_blok
,
no_urut
=
psppt
.
no_urut
,
kd_jns_op
=
psppt
.
kd_jns_op
,
thn_pajak_sppt
=
psppt
.
thn_pajak_sppt
,
pembayaran_sppt_ke
=
psppt
.
pembayaran_sppt_ke
,
stan
=
stan
,
ntb
=
ntb
,
jml_sppt_yg_dibayar
=
psppt
.
jml_sppt_yg_dibayar
,
d
enda_sppt
=
psppt
.
denda_sppt
or
0
,
discount
=
discount
or
0
,
tgl_
pembayaran_sppt
=
tgl
,
tgl_
inquiry
=
tgl_inquiry
,
jml_sppt_yg_dibayar
=
bayar
,
denda_sppt
=
denda
or
0
,
d
iscount
=
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
.
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
)
pbb_yg_harus_dibayar_sppt
=
pokok
)
def
get_report
(
self
,
psppt
):
# Override
q
=
self
.
rpt_session
.
query
(
Pbb
)
.
filter_by
(
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment