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
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
47 additions
and
20 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
- Perbedaan utama dari versi 0.x adalah kini berangkat dari tabel aslinya dan
bukan dari tabel ISO8583 karena sudah memperhatikan channel MANUAL (input
bukan dari tabel ISO8583 karena sudah memperhatikan channel MANUAL (input
...
@@ -6,3 +6,4 @@
...
@@ -6,3 +6,4 @@
- Memahami channel VA dan QRIS
- Memahami channel VA dan QRIS
- Menyimpan log file dari Cartenz ke tabel log_file
- Menyimpan log file dari Cartenz ke tabel log_file
- Menerjemahkan log_file menjadi log_iso
- Menerjemahkan log_file menjadi log_iso
- nip_pospbb optional
log2iso.ini
View file @
b197bc9
...
@@ -3,5 +3,5 @@ models = opensipkd.iso8583.bjb.pbb.models
...
@@ -3,5 +3,5 @@ models = opensipkd.iso8583.bjb.pbb.models
service
=
opensipkd.iso8583.bjb.pbb.doc
service
=
opensipkd.iso8583.bjb.pbb.doc
db_url
=
postgresql://cartenz:pass@localhost/h2h_pbb
db_url
=
postgresql://cartenz:pass@localhost/h2h_pbb
report_db_url
=
postgresql://pcpd:pass@localhost/pcpd
report_db_url
=
postgresql://pcpd:pass@localhost/pcpd
pid_file
=
/home/sugiana/tmp/pbb-
log
.pid
pid_file
=
/home/sugiana/tmp/pbb-
iso
.pid
log_file
=
/home/sugiana/log/pbb-
log
.log
log_file
=
/home/sugiana/log/pbb-
iso
.log
payment_report/models.py
View file @
b197bc9
...
@@ -177,7 +177,7 @@ class Pbb(Base, Common):
...
@@ -177,7 +177,7 @@ class Pbb(Base, Common):
# Bit 7 / Transmission DateTime
# Bit 7 / Transmission DateTime
tgl_rekam_byr_sppt
=
Column
(
DateTime
(
timezone
=
True
),
nullable
=
False
)
tgl_rekam_byr_sppt
=
Column
(
DateTime
(
timezone
=
True
),
nullable
=
False
)
# Bit 62 / Invoice Profile
# Bit 62 / Invoice Profile
nm_wp_sppt
=
Column
(
String
(
3
0
),
nullable
=
False
)
nm_wp_sppt
=
Column
(
String
(
5
0
),
nullable
=
False
)
# Bit 18
# Bit 18
channel_kode
=
Column
(
String
(
4
),
nullable
=
False
)
channel_kode
=
Column
(
String
(
4
),
nullable
=
False
)
# Bit 41 / 42 / 43
# Bit 41 / 42 / 43
...
@@ -189,7 +189,7 @@ class Pbb(Base, Common):
...
@@ -189,7 +189,7 @@ class Pbb(Base, Common):
tgl_batal
=
Column
(
DateTime
(
timezone
=
True
))
tgl_batal
=
Column
(
DateTime
(
timezone
=
True
))
__table_args__
=
dict
(
__table_args__
=
dict
(
UniqueConstraint
(
UniqueConstraint
(
'kd_propinsi'
,
'kd_dati2'
,
'kd_kecamatan'
,
'kd_kelurahan'
,
kd_propinsi
,
kd_dati2
,
kd_kecamatan
,
kd_kelurahan
,
'kd_blok'
,
'no_urut'
,
'kd_jns_op'
,
'thn_pajak_sppt'
)
,
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):
...
@@ -51,8 +51,10 @@ class App(BaseApp):
self
.
report_orm
=
Log
self
.
report_orm
=
Log
if
self
.
conf
[
'models'
]
.
find
(
'bphtb'
)
>
-
1
:
if
self
.
conf
[
'models'
]
.
find
(
'bphtb'
)
>
-
1
:
self
.
conf_name
=
'bphtb log file last id'
self
.
conf_name
=
'bphtb log file last id'
self
.
pajak
=
'bphtb'
else
:
else
:
self
.
conf_name
=
'pbb log file last id'
self
.
conf_name
=
'pbb log file last id'
self
.
pajak
=
'pbb'
register
(
self
.
prod_session
)
register
(
self
.
prod_session
)
def
get_option
(
self
,
argv
):
# Override
def
get_option
(
self
,
argv
):
# Override
...
@@ -88,13 +90,16 @@ class App(BaseApp):
...
@@ -88,13 +90,16 @@ class App(BaseApp):
int
(
year
),
int
(
month
),
int
(
day
),
int
(
hour
),
int
(
year
),
int
(
month
),
int
(
day
),
int
(
hour
),
int
(
minute
),
int
(
sec
),
int
(
msec
)
*
1000
)
int
(
minute
),
int
(
sec
),
int
(
msec
)
*
1000
)
iso
=
self
.
service
.
Doc
()
iso
=
self
.
service
.
Doc
()
try
:
iso
.
setIsoContent
(
raw
[
4
:]
.
encode
(
'utf-8'
))
iso
.
setIsoContent
(
raw
[
4
:]
.
encode
(
'utf-8'
))
except
ValueError
as
e
:
raise
InvalidSource
(
'ID {log_file.id} tidak dipahami: {str(e)}'
)
try
:
try
:
if
iso
.
getBit
(
3
)
!=
self
.
service
.
PAYMENT_CODE
:
if
iso
.
getBit
(
3
)
!=
self
.
service
.
PAYMENT_CODE
:
raise
InvalidSource
(
f
'ID {log_file.id} bukan payment'
)
raise
InvalidSource
(
f
'ID {log_file.id} bukan payment'
)
except
BitNotSet
:
except
BitNotSet
:
raise
InvalidSource
(
f
'ID {log_file.id} bit 3 tidak ada'
)
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
():
for
bit
in
iso
.
get_bit_definition
():
try
:
try
:
value
=
iso
.
getBit
(
bit
)
value
=
iso
.
getBit
(
bit
)
...
@@ -102,6 +107,17 @@ class App(BaseApp):
...
@@ -102,6 +107,17 @@ class App(BaseApp):
continue
continue
field
=
'bit_{}'
.
format
(
str
(
bit
)
.
zfill
(
3
))
field
=
'bit_{}'
.
format
(
str
(
bit
)
.
zfill
(
3
))
d
[
field
]
=
value
d
[
field
]
=
value
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
=
FixLength
(
self
.
service
.
INVOICE_PROFILE
)
profile
.
set_raw
(
iso
.
getBit
(
62
))
profile
.
set_raw
(
iso
.
getBit
(
62
))
d
[
'bit_062_data'
]
=
profile
.
to_dict
()
d
[
'bit_062_data'
]
=
profile
.
to_dict
()
...
...
payment_report/scripts/log2iso_init.py
View file @
b197bc9
...
@@ -21,10 +21,6 @@ def main(argv=sys.argv[1:]):
...
@@ -21,10 +21,6 @@ def main(argv=sys.argv[1:]):
append_csv
(
Conf
,
'conf_log2iso.csv'
,
[
'nama'
])
append_csv
(
Conf
,
'conf_log2iso.csv'
,
[
'nama'
])
db_session
.
commit
()
db_session
.
commit
()
models
=
get_module_object
(
conf
.
get
(
'main'
,
'models'
))
models
=
get_module_object
(
conf
.
get
(
'main'
,
'models'
))
class
Log
(
Base
,
models
.
LogMixin
):
pass
db_url
=
conf
.
get
(
'main'
,
'db_url'
)
db_url
=
conf
.
get
(
'main'
,
'db_url'
)
engine
=
create_engine
(
db_url
,
echo
=
True
)
engine
=
create_engine
(
db_url
,
echo
=
True
)
Base
.
metadata
.
create_all
(
engine
)
Base
.
metadata
.
create_all
(
engine
)
payment_report/scripts/pbb.py
View file @
b197bc9
...
@@ -118,16 +118,16 @@ class App(BaseApp):
...
@@ -118,16 +118,16 @@ class App(BaseApp):
self
.
Psppt
=
self
.
models
.
PembayaranSppt
self
.
Psppt
=
self
.
models
.
PembayaranSppt
self
.
Sppt
=
self
.
models
.
Sppt
self
.
Sppt
=
self
.
models
.
Sppt
self
.
base_q_sppt
=
self
.
prod_session
.
query
(
self
.
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
:
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
()
self
.
base_q_log
=
self
.
get_base_q_log
()
else
:
else
:
try
:
try
:
self
.
prod_session
.
query
(
Log
)
.
first
()
self
.
prod_session
.
query
(
Log
)
.
first
()
self
.
h2h_session
=
self
.
prod_session
self
.
h2h_session
=
self
.
prod_session
self
.
base_q_log
=
self
.
h2h_session
.
query
(
Log
)
.
filter_by
(
self
.
base_q_log
=
self
.
get_base_q_log
()
mti
=
'0210'
,
bit_003
=
PAYMENT_CODE
,
bit_039
=
'00'
)
except
DatabaseError
:
except
DatabaseError
:
self
.
h2h_session
=
None
self
.
h2h_session
=
None
if
'json_db_url'
in
self
.
conf
:
if
'json_db_url'
in
self
.
conf
:
...
@@ -137,6 +137,10 @@ class App(BaseApp):
...
@@ -137,6 +137,10 @@ class App(BaseApp):
else
:
else
:
self
.
json_session
=
None
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
):
def
get_sppt
(
self
,
psppt
):
q
=
self
.
base_q_sppt
.
filter_by
(
q
=
self
.
base_q_sppt
.
filter_by
(
kd_propinsi
=
psppt
.
kd_propinsi
,
kd_propinsi
=
psppt
.
kd_propinsi
,
...
@@ -250,7 +254,9 @@ class App(BaseApp):
...
@@ -250,7 +254,9 @@ class App(BaseApp):
channel_kode
,
channel_nama
,
stan
,
ntb
,
bank_id
=
source
channel_kode
,
channel_nama
,
stan
,
ntb
,
bank_id
=
source
else
:
else
:
channel_kode
=
'0000'
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'
channel_nama
=
'POSPBB'
else
:
else
:
tgl
=
psppt
.
tgl_rekam_byr_sppt
.
date
()
tgl
=
psppt
.
tgl_rekam_byr_sppt
.
date
()
...
@@ -266,6 +272,14 @@ class App(BaseApp):
...
@@ -266,6 +272,14 @@ class App(BaseApp):
raise
InvalidSource
(
msg
)
raise
InvalidSource
(
msg
)
channel_kode
,
channel_nama
,
stan
,
ntb
,
bank_id
,
user_id
,
\
channel_kode
,
channel_nama
,
stan
,
ntb
,
bank_id
,
user_id
,
\
tgl_inquiry
=
self
.
get_source
(
psppt
)
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
discount
=
hasattr
(
psppt
,
'discount'
)
and
psppt
.
discount
or
None
tgl
=
to_date
(
psppt
.
tgl_pembayaran_sppt
)
tgl
=
to_date
(
psppt
.
tgl_pembayaran_sppt
)
if
ntb
:
if
ntb
:
...
@@ -276,13 +290,13 @@ class App(BaseApp):
...
@@ -276,13 +290,13 @@ class App(BaseApp):
kd_blok
=
psppt
.
kd_blok
,
no_urut
=
psppt
.
no_urut
,
kd_blok
=
psppt
.
kd_blok
,
no_urut
=
psppt
.
no_urut
,
kd_jns_op
=
psppt
.
kd_jns_op
,
thn_pajak_sppt
=
psppt
.
thn_pajak_sppt
,
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
,
pembayaran_sppt_ke
=
psppt
.
pembayaran_sppt_ke
,
stan
=
stan
,
ntb
=
ntb
,
jml_sppt_yg_dibayar
=
psppt
.
jml_sppt_yg_dibayar
,
jml_sppt_yg_dibayar
=
bayar
,
denda_sppt
=
denda
or
0
,
d
enda_sppt
=
psppt
.
denda_sppt
or
0
,
discount
=
discount
or
0
,
d
iscount
=
discount
or
0
,
tgl_pembayaran_sppt
=
tgl
,
tgl_
pembayaran_sppt
=
tgl
,
tgl_
inquiry
=
tgl_inquiry
,
tgl_inquiry
=
tgl_inquiry
,
tgl_rekam_byr_sppt
=
psppt
.
tgl_rekam_byr_sppt
,
tgl_rekam_byr_sppt
=
psppt
.
tgl_rekam_byr_sppt
,
nm_wp_sppt
=
sppt
.
nm_wp_sppt
.
strip
(),
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
,
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
def
get_report
(
self
,
psppt
):
# Override
q
=
self
.
rpt_session
.
query
(
Pbb
)
.
filter_by
(
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