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 d7048d52
authored
Jun 16, 2021
by
Owo Sugiana
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Bug fixed saat tabel pembayaran_sppt tidak memiliki field discount
1 parent
559cf5cb
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
86 additions
and
53 deletions
CHANGES.txt
payment_report/models.py
payment_report/scripts/bphtb.py
payment_report/scripts/common.py
payment_report/scripts/pbb.py
CHANGES.txt
View file @
d7048d5
0.1.5 16-6-2021
---------------
- Bug fixed saat tabel pembayaran_sppt tidak memiliki field discount
- Log PBB disertai nilai bit terkait untuk memudahkan analisa nama channel
0.1.4 27-5-2021
---------------
- Tambah channel BAYARIN
...
...
payment_report/models.py
View file @
d7048d5
...
...
@@ -150,7 +150,9 @@ class Pbb(Base, Common):
# Bit 41 / 42 / 43
channel_nama
=
Column
(
String
(
32
),
nullable
=
False
)
# Bit 107
user_id
=
Column
(
String
(
8
))
user_id
=
Column
(
String
(
16
))
# Bit 32
bank_id
=
Column
(
String
(
4
))
tgl_batal
=
Column
(
DateTime
(
timezone
=
True
))
__table_args__
=
dict
(
UniqueConstraint
(
'stan'
,
'ntb'
),
...
...
payment_report/scripts/bphtb.py
View file @
d7048d5
import
sys
from
sqlalchemy
import
(
Column
,
Integer
,
DateTime
,
String
,
Date
,
ForeignKey
,
)
import
transaction
from
opensipkd.waktu
import
dmyhms
from
opensipkd.bphtb.models.default
import
(
IsoPayment
,
IsoReversal
,
Payment
,
Invoice
,
Perolehan
,
...
...
@@ -24,6 +30,32 @@ from .common import (
)
class
IsoPayment
(
Base
):
__tablename__
=
'bphtb_payment'
__table_args__
=
dict
(
schema
=
'bphtb'
)
id
=
Column
(
Integer
,
ForeignKey
(
Payment
.
id
),
primary_key
=
True
)
tgl
=
Column
(
DateTime
(
timezone
=
True
),
nullable
=
False
)
iso_request
=
Column
(
String
(
1024
),
nullable
=
False
)
transmission
=
Column
(
DateTime
(
timezone
=
True
),
nullable
=
False
)
settlement
=
Column
(
Date
,
nullable
=
False
)
stan
=
Column
(
Integer
,
nullable
=
False
)
invoice_id
=
Column
(
Integer
,
ForeignKey
(
Invoice
.
id
),
nullable
=
False
)
invoice_no
=
Column
(
String
(
32
),
nullable
=
False
)
ntb
=
Column
(
String
(
32
),
nullable
=
False
)
ntp
=
Column
(
String
(
32
),
nullable
=
False
,
unique
=
True
)
bank_id
=
Column
(
Integer
)
channel_id
=
Column
(
Integer
)
bank_ip
=
Column
(
String
(
15
),
nullable
=
False
)
class
IsoReversal
(
Base
):
__tablename__
=
'bphtb_reversal'
__table_args__
=
dict
(
schema
=
'bphtb'
)
id
=
Column
(
Integer
,
ForeignKey
(
IsoPayment
.
id
),
primary_key
=
True
)
tgl
=
Column
(
DateTime
(
timezone
=
True
),
nullable
=
False
)
iso_request
=
Column
(
String
(
1024
),
nullable
=
False
)
class
App
(
BaseApp
):
iso_class
=
Doc
report_orm
=
Bphtb
...
...
payment_report/scripts/common.py
View file @
d7048d5
...
...
@@ -14,7 +14,7 @@ from sqlalchemy.orm import sessionmaker
import
transaction
from
zope.sqlalchemy
import
register
from
opensipkd.waktu
import
dmyhms
from
iso8583_web.models.conf
import
Conf
as
BaseConf
from
opensipkd.views.models
import
Conf
as
BaseConf
from
opensipkd.iso8583.bjb.scripts.common
import
get_module_object
from
..models
import
Base
...
...
@@ -106,12 +106,22 @@ def get_channel_name(bit_018, bit_041, bit_042, bit_043):
return
'LAINNYA'
def
get_channel_name_by_iso
(
iso
):
try
:
return
get_channel_name
(
def
get_channel_info_by_iso
(
iso
):
d
=
dict
()
lengkap
=
True
for
bit
in
(
18
,
32
,
41
,
42
,
43
):
bit_name
=
f
'bit_{bit}'
try
:
d
[
bit_name
]
=
iso
.
getBit
(
bit
)
except
BitNotSet
:
lengkap
=
False
continue
if
lengkap
:
d
[
'channel'
]
=
get_channel_name
(
iso
.
getBit
(
18
),
iso
.
getBit
(
41
),
iso
.
getBit
(
42
),
iso
.
getBit
(
43
))
except
BitNotSet
:
return
'LAINNYA'
else
:
d
[
'channel'
]
=
'LAINNYA'
return
d
def
get_channel_name_by_row
(
row
):
...
...
@@ -119,11 +129,12 @@ def get_channel_name_by_row(row):
def
get_keys
(
iso
):
return
dict
(
d
=
get_channel_info_by_iso
(
iso
)
d
.
update
(
dict
(
nomor_bayar
=
iso
.
get_invoice_id
()
.
strip
(),
stan
=
iso
.
get_stan
()
.
strip
(),
ntb
=
iso
.
get_ntb
()
.
strip
()
,
channel
=
get_channel_name_by_iso
(
iso
))
ntb
=
iso
.
get_ntb
()
.
strip
()
))
return
d
def
create_log
(
log_file
):
...
...
payment_report/scripts/pbb.py
View file @
d7048d5
...
...
@@ -117,9 +117,27 @@ class App(BaseApp):
self
.
log
.
error
(
msg
)
def
__log_progress
(
self
,
s_tgl
,
d
):
self
.
log
.
info
(
f
'Tgl bayar {s_tgl}, Nomor bayar {d["nomor_bayar"]}, '
f
'STAN {d["stan"]}, NTB {d["ntb"]}, Channel {d["channel"]}'
)
self
.
log
.
info
(
f
'Tgl bayar {s_tgl}, {d}'
)
def
__create_data
(
self
,
row_inq
,
iso
,
d
,
tgl_bayar
,
psppt
):
sppt
=
self
.
get_sppt
(
psppt
)
nama_wp
=
get_nama_wp
(
iso
,
sppt
)
user_id
=
get_user_id
(
iso
)
discount
=
hasattr
(
psppt
,
'discount'
)
and
psppt
.
discount
or
None
return
dict
(
stan
=
d
[
'stan'
],
ntb
=
d
[
'ntb'
],
kd_propinsi
=
psppt
.
kd_propinsi
,
kd_dati2
=
psppt
.
kd_dati2
,
kd_kecamatan
=
psppt
.
kd_kecamatan
,
kd_kelurahan
=
psppt
.
kd_kelurahan
,
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
,
jml_sppt_yg_dibayar
=
iso
.
get_amount
(),
denda_sppt
=
psppt
.
denda_sppt
,
tgl_pembayaran_sppt
=
tgl_bayar
.
date
(),
tgl_rekam_byr_sppt
=
tgl_bayar
,
nm_wp_sppt
=
nama_wp
,
channel_kode
=
iso
.
get_channel
()
.
strip
(),
channel_nama
=
d
[
'channel'
],
user_id
=
user_id
,
pbb_yg_harus_dibayar_sppt
=
sppt
.
pbb_yg_harus_dibayar_sppt
,
tgl_inquiry
=
row_inq
.
tgl
,
discount
=
discount
,
bank_id
=
d
[
'bit_32'
])
def
__run_payment
(
self
):
last
=
self
.
get_last_id
(
'pbb payment last id'
)
...
...
@@ -136,26 +154,9 @@ class App(BaseApp):
if
not
psppt
:
self
.
__log_not_found
(
s_tgl
,
d
)
continue
sppt
=
self
.
get_sppt
(
psppt
)
nama_wp
=
get_nama_wp
(
iso
,
sppt
)
user_id
=
get_user_id
(
iso
)
self
.
__log_progress
(
s_tgl
,
d
)
rpt
=
Pbb
(
stan
=
d
[
'stan'
],
ntb
=
d
[
'ntb'
],
kd_propinsi
=
psppt
.
kd_propinsi
,
kd_dati2
=
psppt
.
kd_dati2
,
kd_kecamatan
=
psppt
.
kd_kecamatan
,
kd_kelurahan
=
psppt
.
kd_kelurahan
,
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
,
jml_sppt_yg_dibayar
=
iso
.
get_amount
(),
denda_sppt
=
psppt
.
denda_sppt
,
tgl_pembayaran_sppt
=
tgl_bayar
.
date
(),
tgl_rekam_byr_sppt
=
tgl_bayar
,
nm_wp_sppt
=
nama_wp
,
channel_kode
=
iso
.
get_channel
()
.
strip
(),
channel_nama
=
d
[
'channel'
],
user_id
=
user_id
,
pbb_yg_harus_dibayar_sppt
=
sppt
.
pbb_yg_harus_dibayar_sppt
,
tgl_inquiry
=
row_inq
.
tgl
,
discount
=
psppt
.
discount
)
d
=
self
.
__create_data
(
row_inq
,
iso
,
d
,
tgl_bayar
,
psppt
)
rpt
=
Pbb
(
**
d
)
last
.
nilai
=
str
(
row_inq
.
id
)
with
transaction
.
manager
:
self
.
rpt_session
.
add
(
rpt
)
...
...
@@ -175,26 +176,8 @@ class App(BaseApp):
if
not
psppt
:
self
.
__log_not_found
(
s_tgl
,
d
)
continue
sppt
=
self
.
get_sppt
(
psppt
)
nama_wp
=
get_nama_wp
(
iso
,
sppt
)
user_id
=
get_user_id
(
iso
)
self
.
__log_progress
(
s_tgl
,
d
)
d
=
dict
(
stan
=
d
[
'stan'
],
ntb
=
d
[
'ntb'
],
kd_propinsi
=
psppt
.
kd_propinsi
,
kd_dati2
=
psppt
.
kd_dati2
,
kd_kecamatan
=
psppt
.
kd_kecamatan
,
kd_kelurahan
=
psppt
.
kd_kelurahan
,
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
,
jml_sppt_yg_dibayar
=
iso
.
get_amount
(),
denda_sppt
=
psppt
.
denda_sppt
,
tgl_pembayaran_sppt
=
tgl_bayar
.
date
(),
tgl_rekam_byr_sppt
=
tgl_bayar
,
nm_wp_sppt
=
nama_wp
,
channel_kode
=
iso
.
get_channel
()
.
strip
(),
channel_nama
=
d
[
'channel'
],
user_id
=
user_id
,
pbb_yg_harus_dibayar_sppt
=
sppt
.
pbb_yg_harus_dibayar_sppt
,
tgl_inquiry
=
row_inq
.
tgl
,
discount
=
psppt
.
discount
)
d
=
self
.
__create_data
(
row_inq
,
iso
,
d
,
tgl_bayar
,
psppt
)
rpt
=
self
.
get_report
(
iso
)
if
not
rpt
:
rpt
=
Pbb
()
...
...
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