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
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
85 additions
and
52 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
0.1.4 27-5-2021
---------------
---------------
- Tambah channel BAYARIN
- Tambah channel BAYARIN
...
...
payment_report/models.py
View file @
d7048d5
...
@@ -150,7 +150,9 @@ class Pbb(Base, Common):
...
@@ -150,7 +150,9 @@ class Pbb(Base, Common):
# Bit 41 / 42 / 43
# Bit 41 / 42 / 43
channel_nama
=
Column
(
String
(
32
),
nullable
=
False
)
channel_nama
=
Column
(
String
(
32
),
nullable
=
False
)
# Bit 107
# 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
))
tgl_batal
=
Column
(
DateTime
(
timezone
=
True
))
__table_args__
=
dict
(
__table_args__
=
dict
(
UniqueConstraint
(
'stan'
,
'ntb'
),
UniqueConstraint
(
'stan'
,
'ntb'
),
...
...
payment_report/scripts/bphtb.py
View file @
d7048d5
import
sys
import
sys
from
sqlalchemy
import
(
Column
,
Integer
,
DateTime
,
String
,
Date
,
ForeignKey
,
)
import
transaction
import
transaction
from
opensipkd.waktu
import
dmyhms
from
opensipkd.waktu
import
dmyhms
from
opensipkd.bphtb.models.default
import
(
from
opensipkd.bphtb.models.default
import
(
IsoPayment
,
IsoReversal
,
Payment
,
Payment
,
Invoice
,
Invoice
,
Perolehan
,
Perolehan
,
...
@@ -24,6 +30,32 @@ from .common import (
...
@@ -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
):
class
App
(
BaseApp
):
iso_class
=
Doc
iso_class
=
Doc
report_orm
=
Bphtb
report_orm
=
Bphtb
...
...
payment_report/scripts/common.py
View file @
d7048d5
...
@@ -14,7 +14,7 @@ from sqlalchemy.orm import sessionmaker
...
@@ -14,7 +14,7 @@ from sqlalchemy.orm import sessionmaker
import
transaction
import
transaction
from
zope.sqlalchemy
import
register
from
zope.sqlalchemy
import
register
from
opensipkd.waktu
import
dmyhms
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
opensipkd.iso8583.bjb.scripts.common
import
get_module_object
from
..models
import
Base
from
..models
import
Base
...
@@ -106,12 +106,22 @@ def get_channel_name(bit_018, bit_041, bit_042, bit_043):
...
@@ -106,12 +106,22 @@ def get_channel_name(bit_018, bit_041, bit_042, bit_043):
return
'LAINNYA'
return
'LAINNYA'
def
get_channel_name_by_iso
(
iso
):
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
:
try
:
return
get_channel_name
(
d
[
bit_name
]
=
iso
.
getBit
(
bit
)
iso
.
getBit
(
18
),
iso
.
getBit
(
41
),
iso
.
getBit
(
42
),
iso
.
getBit
(
43
))
except
BitNotSet
:
except
BitNotSet
:
return
'LAINNYA'
lengkap
=
False
continue
if
lengkap
:
d
[
'channel'
]
=
get_channel_name
(
iso
.
getBit
(
18
),
iso
.
getBit
(
41
),
iso
.
getBit
(
42
),
iso
.
getBit
(
43
))
else
:
d
[
'channel'
]
=
'LAINNYA'
return
d
def
get_channel_name_by_row
(
row
):
def
get_channel_name_by_row
(
row
):
...
@@ -119,11 +129,12 @@ def get_channel_name_by_row(row):
...
@@ -119,11 +129,12 @@ def get_channel_name_by_row(row):
def
get_keys
(
iso
):
def
get_keys
(
iso
):
return
dict
(
d
=
get_channel_info_by_iso
(
iso
)
d
.
update
(
dict
(
nomor_bayar
=
iso
.
get_invoice_id
()
.
strip
(),
nomor_bayar
=
iso
.
get_invoice_id
()
.
strip
(),
stan
=
iso
.
get_stan
()
.
strip
(),
stan
=
iso
.
get_stan
()
.
strip
(),
ntb
=
iso
.
get_ntb
()
.
strip
()
,
ntb
=
iso
.
get_ntb
()
.
strip
()
))
channel
=
get_channel_name_by_iso
(
iso
))
return
d
def
create_log
(
log_file
):
def
create_log
(
log_file
):
...
...
payment_report/scripts/pbb.py
View file @
d7048d5
...
@@ -117,9 +117,27 @@ class App(BaseApp):
...
@@ -117,9 +117,27 @@ class App(BaseApp):
self
.
log
.
error
(
msg
)
self
.
log
.
error
(
msg
)
def
__log_progress
(
self
,
s_tgl
,
d
):
def
__log_progress
(
self
,
s_tgl
,
d
):
self
.
log
.
info
(
self
.
log
.
info
(
f
'Tgl bayar {s_tgl}, {d}'
)
f
'Tgl bayar {s_tgl}, Nomor bayar {d["nomor_bayar"]}, '
f
'STAN {d["stan"]}, NTB {d["ntb"]}, Channel {d["channel"]}'
)
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
):
def
__run_payment
(
self
):
last
=
self
.
get_last_id
(
'pbb payment last id'
)
last
=
self
.
get_last_id
(
'pbb payment last id'
)
...
@@ -136,26 +154,9 @@ class App(BaseApp):
...
@@ -136,26 +154,9 @@ class App(BaseApp):
if
not
psppt
:
if
not
psppt
:
self
.
__log_not_found
(
s_tgl
,
d
)
self
.
__log_not_found
(
s_tgl
,
d
)
continue
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
)
self
.
__log_progress
(
s_tgl
,
d
)
rpt
=
Pbb
(
d
=
self
.
__create_data
(
row_inq
,
iso
,
d
,
tgl_bayar
,
psppt
)
stan
=
d
[
'stan'
],
ntb
=
d
[
'ntb'
],
rpt
=
Pbb
(
**
d
)
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
)
last
.
nilai
=
str
(
row_inq
.
id
)
last
.
nilai
=
str
(
row_inq
.
id
)
with
transaction
.
manager
:
with
transaction
.
manager
:
self
.
rpt_session
.
add
(
rpt
)
self
.
rpt_session
.
add
(
rpt
)
...
@@ -175,26 +176,8 @@ class App(BaseApp):
...
@@ -175,26 +176,8 @@ class App(BaseApp):
if
not
psppt
:
if
not
psppt
:
self
.
__log_not_found
(
s_tgl
,
d
)
self
.
__log_not_found
(
s_tgl
,
d
)
continue
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
)
self
.
__log_progress
(
s_tgl
,
d
)
d
=
dict
(
d
=
self
.
__create_data
(
row_inq
,
iso
,
d
,
tgl_bayar
,
psppt
)
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
)
rpt
=
self
.
get_report
(
iso
)
rpt
=
self
.
get_report
(
iso
)
if
not
rpt
:
if
not
rpt
:
rpt
=
Pbb
()
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