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 369e1dad
authored
Apr 30, 2021
by
Owo Sugiana
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Tambah channel VA PBB
1 parent
448b4353
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
198 additions
and
5 deletions
CHANGES.txt
payment_report/scripts/data/conf.csv
payment_report/scripts/pospbb.py
payment_report/scripts/va_pbb.py
setup.py
CHANGES.txt
View file @
369e1da
0.1.3
29
-4-2021
0.1.3
30
-4-2021
---------------
- Tambah pospbb
- Tambah channel Virtual Account PBB
- Tambah channel POSPBB
- Tambah opsi --update-from-id dan --update-from-date
- Perbaikan channel
...
...
payment_report/scripts/data/conf.csv
View file @
369e1da
...
...
@@ -10,3 +10,4 @@ pbb reversal last date,1-1-2000 00:00:00,reversal.tgl terakhir yang diproses
pbb2 payment last id,0,log_iso.id terakhir yang diproses
pbb2 reversal last id,0,log_iso.id terakhir yang diproses
pospbb last id,0,pembayaran_sppt.id terakhir yang diproses
va pbb last id,0,pembayaran_sppt.id terakhir yang diproses
payment_report/scripts/pospbb.py
View file @
369e1da
...
...
@@ -26,6 +26,7 @@ from .common import (
NIP_PENCATAT
=
'888888888'
CHANNEL_KODE
=
'7000'
CHANNEL_NAMA
=
'POSPBB'
LAST_CONF
=
'pospbb last id'
ERR_NOT_FOUND
=
'SPPT ID {invoice_id} tidak ada di sppt'
...
...
@@ -84,12 +85,12 @@ class App(BaseApp):
f
'jml_sppt_yg_dibayar {row.jml_sppt_yg_dibayar}'
)
def
__run_payment
(
self
):
last
=
self
.
get_last_id
(
'pospbb last id'
)
last
=
self
.
get_last_id
(
LAST_CONF
)
q_psppt
=
self
.
__get_query_psppt
(
last
.
as_int
())
found
=
False
for
psppt
in
q_psppt
.
limit
(
1000
):
stan
=
psppt
.
tgl_pembayaran_sppt
.
strftime
(
'
%
y
%
m
%
d'
)
ntb
=
f
'
POSPBB
-{psppt.id}'
ntb
=
f
'
{CHANNEL_NAMA}
-{psppt.id}'
if
self
.
get_report
(
stan
,
ntb
):
continue
sppt_id
=
get_id
(
psppt
)
...
...
@@ -133,7 +134,7 @@ class App(BaseApp):
self
.
__log_not_found
(
sppt_id
)
continue
stan
=
psppt
.
tgl_pembayaran_sppt
.
strftime
(
'
%
y
%
m
%
d'
)
ntb
=
f
'
POSPBB
-{psppt.id}'
ntb
=
f
'
{CHANNEL_NAMA}
-{psppt.id}'
tgl_bayar
=
get_tgl_bayar
(
psppt
)
user_id
=
str
(
psppt
.
user_id
)
disc
=
psppt
.
discount
or
0
...
...
payment_report/scripts/va_pbb.py
0 → 100644
View file @
369e1da
import
sys
from
sqlalchemy
import
(
Column
,
Integer
,
)
import
transaction
from
opensipkd.waktu
import
(
dmyhms
,
create_datetime
,
date_from_str
,
)
from
sismiop.models.default
import
PembayaranSppt
as
BasePsppt
from
sismiop.services.base
import
(
get_db_session
,
get_id
,
)
from
opensipkd.iso8583.bjb.scripts.common
import
get_module_object
from
..models
import
Pbb
from
.common
import
(
get_iso
,
get_keys
,
BaseApp
,
)
NIP_PENCATAT
=
'222222222'
CHANNEL_KODE
=
'7001'
CHANNEL_NAMA
=
'VA'
LAST_CONF
=
'va pbb last id'
ERR_NOT_FOUND
=
'SPPT ID {invoice_id} tidak ada di sppt'
class
PembayaranSppt
(
BasePsppt
):
__table_args__
=
dict
(
extend_existing
=
True
)
id
=
Column
(
Integer
,
nullable
=
False
)
user_id
=
Column
(
Integer
)
def
get_tgl_bayar
(
row
):
t
=
row
.
tgl_rekam_byr_sppt
return
create_datetime
(
t
.
year
,
t
.
month
,
t
.
day
,
t
.
hour
,
t
.
minute
,
t
.
second
)
class
App
(
BaseApp
):
report_orm
=
Pbb
def
__init__
(
self
,
argv
):
super
()
.
__init__
(
argv
)
if
not
self
.
pid
:
return
self
.
models
=
get_module_object
(
self
.
conf
[
'models'
])
self
.
Sppt
=
self
.
models
.
Sppt
self
.
base_q_psppt
=
self
.
prod_session
.
query
(
PembayaranSppt
)
.
filter_by
(
nip_rekam_byr_sppt
=
NIP_PENCATAT
)
self
.
base_q_sppt
=
self
.
prod_session
.
query
(
self
.
Sppt
)
def
get_db_session
(
self
):
# Override
return
get_db_session
()
def
get_sppt
(
self
,
psppt
):
q
=
self
.
base_q_sppt
.
filter_by
(
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
)
return
q
.
first
()
def
__get_query_psppt
(
self
,
last_id
):
q
=
self
.
base_q_psppt
.
filter
(
PembayaranSppt
.
id
>
last_id
)
return
q
.
order_by
(
PembayaranSppt
.
id
)
def
__log_not_found
(
self
,
sppt_id
):
msg
=
ERR_NOT_FOUND
.
format
(
invoice_id
=
sppt_id
)
self
.
log
.
error
(
msg
)
def
__log_progress
(
self
,
row
,
sppt_id
):
s_tgl
=
dmyhms
(
row
.
tgl_rekam_byr_sppt
)
self
.
log
.
info
(
f
'Tgl bayar {s_tgl}, Nomor bayar {sppt_id}, '
f
'pembayaran ke {row.pembayaran_sppt_ke}, ID {row.id}, '
f
'jml_sppt_yg_dibayar {row.jml_sppt_yg_dibayar}'
)
def
__run_payment
(
self
):
last
=
self
.
get_last_id
(
LAST_CONF
)
q_psppt
=
self
.
__get_query_psppt
(
last
.
as_int
())
found
=
False
for
psppt
in
q_psppt
.
limit
(
1000
):
stan
=
psppt
.
tgl_pembayaran_sppt
.
strftime
(
'
%
y
%
m
%
d'
)
ntb
=
f
'{CHANNEL_NAMA}-{psppt.id}'
if
self
.
get_report
(
stan
,
ntb
):
continue
sppt_id
=
get_id
(
psppt
)
sppt
=
self
.
get_sppt
(
psppt
)
if
not
sppt
:
self
.
__log_not_found
(
sppt_id
)
continue
tgl_bayar
=
get_tgl_bayar
(
psppt
)
user_id
=
str
(
psppt
.
user_id
)
disc
=
psppt
.
discount
or
0
self
.
__log_progress
(
psppt
,
sppt_id
)
rpt
=
Pbb
(
stan
=
stan
,
ntb
=
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
=
psppt
.
jml_sppt_yg_dibayar
,
denda_sppt
=
psppt
.
denda_sppt
,
tgl_pembayaran_sppt
=
psppt
.
tgl_pembayaran_sppt
,
tgl_rekam_byr_sppt
=
psppt
.
tgl_rekam_byr_sppt
,
nm_wp_sppt
=
sppt
.
nm_wp_sppt
,
channel_kode
=
CHANNEL_KODE
,
channel_nama
=
CHANNEL_NAMA
,
user_id
=
user_id
,
pbb_yg_harus_dibayar_sppt
=
sppt
.
pbb_yg_harus_dibayar_sppt
,
tgl_inquiry
=
tgl_bayar
,
discount
=
disc
)
last
.
nilai
=
str
(
psppt
.
id
)
with
transaction
.
manager
:
self
.
rpt_session
.
add
(
rpt
)
self
.
rpt_session
.
add
(
last
)
found
=
True
return
found
def
__update_from_id
(
self
):
q_psppt
=
self
.
__get_query_psppt
(
self
.
last_id
)
found
=
False
for
psppt
in
q_psppt
.
limit
(
1000
):
sppt_id
=
get_id
(
psppt
)
sppt
=
self
.
get_sppt
(
psppt
)
if
not
sppt
:
self
.
__log_not_found
(
sppt_id
)
continue
stan
=
psppt
.
tgl_pembayaran_sppt
.
strftime
(
'
%
y
%
m
%
d'
)
ntb
=
f
'{CHANNEL_NAMA}-{psppt.id}'
tgl_bayar
=
get_tgl_bayar
(
psppt
)
user_id
=
str
(
psppt
.
user_id
)
disc
=
psppt
.
discount
or
0
rpt
=
self
.
get_report
(
stan
,
ntb
)
if
not
rpt
:
rpt
=
Pbb
()
self
.
__log_progress
(
psppt
,
sppt_id
)
d
=
dict
(
stan
=
stan
,
ntb
=
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
=
psppt
.
jml_sppt_yg_dibayar
,
denda_sppt
=
psppt
.
denda_sppt
,
tgl_pembayaran_sppt
=
psppt
.
tgl_pembayaran_sppt
,
tgl_rekam_byr_sppt
=
psppt
.
tgl_rekam_byr_sppt
,
nm_wp_sppt
=
sppt
.
nm_wp_sppt
,
channel_kode
=
CHANNEL_KODE
,
channel_nama
=
CHANNEL_NAMA
,
user_id
=
user_id
,
pbb_yg_harus_dibayar_sppt
=
sppt
.
pbb_yg_harus_dibayar_sppt
,
tgl_inquiry
=
tgl_bayar
,
discount
=
disc
)
rpt
.
from_dict
(
d
)
with
transaction
.
manager
:
self
.
rpt_session
.
add
(
rpt
)
found
=
True
self
.
last_id
=
psppt
.
id
return
found
def
run_payment
(
self
):
# Override
if
self
.
option
.
update_from_id
:
self
.
last_id
=
self
.
option
.
update_from_id
func
=
self
.
__update_from_id
elif
self
.
option
.
update_from_date
:
tgl
=
date_from_str
(
self
.
option
.
update_from_date
)
q
=
self
.
prod_session
.
query
(
PembayaranSppt
)
.
filter
(
PembayaranSppt
.
tgl_rekam_byr_sppt
>=
tgl
)
.
order_by
(
PembayaranSppt
.
tgl_rekam_byr_sppt
)
row
=
q
.
first
()
self
.
last_id
=
row
.
id
-
1
func
=
self
.
__update_from_id
else
:
func
=
self
.
__run_payment
while
True
:
found
=
func
()
if
not
found
:
break
def
main
(
argv
=
sys
.
argv
[
1
:]):
app
=
App
(
argv
)
app
.
run
()
setup.py
View file @
369e1da
...
...
@@ -37,6 +37,7 @@ setup(
'payment_report_init_db = payment_report.scripts.common:init_db'
,
'pbb_report = payment_report.scripts.pbb:main'
,
'pospbb_report = payment_report.scripts.pospbb:main'
,
'va_pbb_report = payment_report.scripts.va_pbb:main'
,
'bphtb_report = payment_report.scripts.bphtb:main'
,
'bphtb2_report = payment_report.scripts.bphtb2:main'
,
'pad_report = payment_report.scripts.pad:main'
,
...
...
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