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 ff41c4d1
authored
Dec 28, 2022
by
Owo Sugiana
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Tambah PAD Only H2H untuk Cimahi
1 parent
31cb5a30
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
120 additions
and
0 deletions
CHANGES.txt
payment_report/pad/only_h2h.py
payment_report/scripts/common.py
CHANGES.txt
View file @
ff41c4d
2.9 2022-12-28
--------------
- Tambah BPHTB Kabupaten Serang
- Tambah PAD Cimahi
2.8 2022-12-26
--------------
...
...
payment_report/pad/only_h2h.py
0 → 100644
View file @
ff41c4d
import
requests
from
sqlalchemy
import
func
import
transaction
from
opensipkd.waktu
import
dmyhms
from
opensipkd.string
import
FixLength
from
opensipkd.iso8583.bjb.pad.structure
import
(
PAYMENT_CODE
,
INVOICE_PROFILE
,
)
from
opensipkd.iso8583.bjb.pad.models
import
Log
from
payment_report.scripts.tools
import
(
plain_values
,
update
,
)
from
payment_report.scripts.common
import
(
InvalidSource
,
one_day
,
get_channel_name_by_row
,
row_limit
,
)
class
Handler
:
def
__init__
(
self
,
parent
):
self
.
parent
=
parent
def
filter_tgl
(
self
,
q
):
q
=
q
.
filter
(
Log
.
created
>=
self
.
parent
.
tgl_awal
,
Log
.
created
<
self
.
parent
.
tgl_akhir
+
one_day
,
Log
.
ip
.
__ne__
(
None
))
return
q
.
filter_by
(
mti
=
'0210'
,
bit_003
=
PAYMENT_CODE
,
bit_039
=
'00'
)
def
get_payment_query
(
self
):
q
=
self
.
parent
.
h2h_session
.
query
(
Log
)
return
self
.
filter_tgl
(
q
)
.
order_by
(
Log
.
id
)
def
get_count
(
self
):
# dipanggil parent
q
=
self
.
parent
.
h2h_session
.
query
(
func
.
count
(
Log
.
id
))
q
=
self
.
filter_tgl
(
q
)
return
q
.
scalar
()
def
get_last_time
(
self
):
# dipanggil parent
return
dmyhms
(
self
.
parent
.
last_pay
.
created
)
def
get_report
(
self
,
pay
):
session
=
self
.
parent
.
get_session_for_save
()
q
=
session
.
query
(
self
.
parent
.
report_orm
)
.
filter_by
(
id
=
pay
.
id
)
return
q
.
first
()
def
create_data
(
self
,
pay
):
tgl
=
pay
.
created
.
date
()
jam
=
pay
.
created
.
time
()
channel_name
=
get_channel_name_by_row
(
pay
)
channel_id
=
pay
.
bit_018
or
'0000'
profile
=
pay
.
bit_062_data
if
not
profile
:
profile
=
FixLength
(
INVOICE_PROFILE
)
profile
.
set_raw
(
pay
.
bit_062
)
return
dict
(
id
=
pay
.
id
,
tgl
=
tgl
,
jam
=
jam
,
nomor_bayar
=
self
.
parent
.
invoice_id
,
jenis_pajak
=
profile
[
'Nama Rekening'
]
.
strip
(),
masa_pajak
=
0
,
npwpd
=
profile
[
'NPWPD'
]
.
strip
(),
nama_wp
=
profile
[
'Nama'
]
.
strip
(),
pokok
=
float
(
profile
[
'Tagihan'
]),
denda
=
float
(
profile
[
'Denda'
]),
bunga
=
0
,
jml_bayar
=
float
(
pay
.
bit_004
),
channel_id
=
channel_id
,
channel_name
=
channel_name
,
bank_id
=
int
(
pay
.
bit_032
))
def
update_from_date
(
self
):
q
=
self
.
get_payment_query
()
no
=
self
.
parent
.
offset
found
=
False
for
pay
in
q
.
offset
(
self
.
parent
.
offset
)
.
limit
(
row_limit
):
found
=
True
self
.
parent
.
invoice_id
=
pay
.
bit_061
.
strip
()
no
+=
1
try
:
source
=
self
.
create_data
(
pay
)
d
=
plain_values
(
source
)
rpt
=
self
.
get_report
(
pay
)
if
rpt
:
target
=
rpt
.
to_dict
()
target_update
,
log_msg
=
update
(
source
,
target
)
if
target_update
:
s
=
', '
.
join
(
log_msg
)
msg
=
f
'UPDATE {d} change {s}'
rpt
.
from_dict
(
target_update
)
else
:
msg
=
f
'ALREADY SAME {d}'
rpt
=
None
if
self
.
parent
.
count
==
1
and
self
.
last
:
# Hemat log
print
(
msg
)
print
(
'Log yang sama, abaikan.'
)
return
else
:
msg
=
f
'INSERT {d}'
rpt
=
self
.
parent
.
report_orm
(
**
source
)
msg
=
f
'{self.parent.get_prefix_log()} {msg}'
log_method
=
self
.
parent
.
log
.
info
except
InvalidSource
as
e
:
msg
=
str
(
e
)
log_method
=
self
.
parent
.
log
.
warning
rpt
=
None
e
=
self
.
parent
.
get_estimate
(
no
)
log_method
(
f
'#{no}/{self.parent.count} {msg}, estimate {e}'
)
if
rpt
:
session
=
self
.
parent
.
get_session_for_save
()
with
transaction
.
manager
:
session
.
add
(
rpt
)
self
.
parent
.
last_pay
=
pay
self
.
parent
.
offset
+=
row_limit
return
found
payment_report/scripts/common.py
View file @
ff41c4d
...
...
@@ -306,6 +306,11 @@ class BaseApp:
if
'db_url'
in
self
.
conf
:
factory
=
self
.
get_factory
(
'db_url'
)
self
.
prod_session
=
factory
()
if
'h2h_db_url'
in
self
.
conf
:
factory
=
self
.
get_factory
(
'h2h_db_url'
)
self
.
h2h_session
=
factory
()
else
:
self
.
h2h_session
=
None
factory
=
self
.
get_factory
(
'report_db_url'
)
self
.
rpt_session
=
factory
()
register
(
self
.
rpt_session
)
...
...
@@ -402,6 +407,9 @@ class BaseApp:
pass
def
update_last
(
self
):
if
self
.
handler
:
self
.
last
.
nilai
=
self
.
handler
.
get_last_time
()
else
:
self
.
last
.
nilai
=
self
.
get_last_time
()
with
transaction
.
manager
:
self
.
rpt_session
.
add
(
self
.
last
)
...
...
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