Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Owo Sugiana
/
sismiop-models
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 547db4ef
authored
Apr 22, 2020
by
Owo Sugiana
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Tambah tabel tempat_pembayaran
1 parent
3f365f1c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
137 additions
and
58 deletions
sismiop/models/default.py
sismiop/models/tempat_pembayaran.py
sismiop/scripts/inquiry.py
sismiop/services/base.py
sismiop/services/bogor_kota/__init__.py
sismiop/models/default.py
View file @
547db4e
...
...
@@ -11,6 +11,7 @@ from .pembayaran_sppt import PembayaranSpptMixin
from
.kelurahan
import
KelurahanMixin
from
.kecamatan
import
KecamatanMixin
from
.propinsi
import
PropinsiMixin
from
.tempat_pembayaran
import
TempatPembayaranMixin
Base
=
declarative_base
()
...
...
@@ -40,6 +41,9 @@ class Propinsi(Base, PropinsiMixin):
pass
class
TempatPembayaran
(
Base
,
TempatPembayaranMixin
):
pass
class
PenguranganCovid
(
Base
):
__tablename__
=
'pengurangan_covid'
kd_propinsi
=
Column
(
String
(
2
),
primary_key
=
True
)
...
...
@@ -51,7 +55,7 @@ class PenguranganCovid(Base):
kd_jns_op
=
Column
(
String
(
1
),
primary_key
=
True
)
thn_pajak_sppt
=
Column
(
String
(
4
),
primary_key
=
True
)
pembayaran_sppt_ke
=
Column
(
Integer
,
primary_key
=
True
)
pokok
=
Column
(
Float
,
nullable
=
False
)
bayar
=
Column
(
Float
,
nullable
=
False
)
denda
=
Column
(
Float
,
nullable
=
False
)
#__table_args__ = (
# ForeignKeyConstraint(
...
...
sismiop/models/tempat_pembayaran.py
0 → 100644
View file @
547db4e
from
sqlalchemy
import
(
Column
,
String
,
)
from
sqlalchemy.ext.declarative
import
declared_attr
class
TempatPembayaranMixin
:
@declared_attr
def
__tablename__
(
self
):
return
'tempat_pembayaran'
@declared_attr
def
kd_kanwil
(
self
):
return
Column
(
String
(
2
),
primary_key
=
True
)
@declared_attr
def
kd_kantor
(
self
):
return
Column
(
String
(
2
),
primary_key
=
True
)
@declared_attr
def
kd_tp
(
self
):
return
Column
(
String
(
2
),
primary_key
=
True
)
sismiop/scripts/inquiry.py
View file @
547db4e
...
...
@@ -51,10 +51,32 @@ def show(inq):
show_val
(
'Nama Wajib Pajak'
,
inq
.
get_nama_wp
())
show_rp
(
'Tagihan'
,
inq
.
tagihan
)
show_rp
(
'Denda'
,
inq
.
denda
)
show_rp
(
'Total Bayar'
,
inq
.
total_bayar
)
show_rp
(
'Total Bayar
Sebelumnya
'
,
inq
.
total_bayar
)
show_rp
(
'Total Tagihan'
,
inq
.
total
)
show_val
(
'Jatuh Tempo'
,
inq
.
get_jatuh_tempo
())
show_val
(
'Bulan Tunggakan'
,
inq
.
bln_tunggakan
)
show_val
(
'Tahun Pajak'
,
inq
.
get_tahun
())
def
show_fields
(
row
,
fieldnames
):
for
fieldname
in
fieldnames
:
value
=
getattr
(
row
,
fieldname
)
show_rp
(
'Field '
+
fieldname
,
value
)
def
show_payment
(
module_name
,
inq
,
pay
):
print
(
'Berhasil dibayar pada urutan ke-{}'
.
format
(
pay
.
pembayaran_sppt_ke
))
if
module_name
not
in
[
'bogor_kota'
]:
return
print
(
'Tabel pembayaran_sppt'
)
show_fields
(
pay
,
[
'jml_sppt_yg_dibayar'
,
'denda_sppt'
])
pc
=
inq
.
get_pengurangan_covid
(
pay
)
if
not
pc
:
return
print
(
'Tabel pengurangan_covid'
)
show_fields
(
pc
,
[
'bayar'
,
'denda'
])
def
main
(
argv
=
sys
.
argv
):
...
...
@@ -96,9 +118,7 @@ def main(argv=sys.argv):
kd_tp
=
conf
.
get
(
'main'
,
'kd_tp'
))
nip
=
conf
.
get
(
'main'
,
'nip_pencatat'
)
pay
=
inq
.
do_payment
(
tp
,
nip
,
tgl_bayar
)
print
(
'Berhasil dibayar pada urutan ke-{}'
.
format
(
pay
.
pembayaran_sppt_ke
))
show_payment
(
module_name
,
inq
,
pay
)
if
option
.
reversal
:
rev
=
Reversal
(
invoice_id
)
pay
=
rev
.
payment
...
...
sismiop/services/base.py
View file @
547db4e
...
...
@@ -18,7 +18,8 @@ DBSession = None
locale
.
setlocale
(
locale
.
LC_ALL
,
'id_ID.utf8'
)
INVOICE_ID
=
[
# Nomor Objek Pajak
NOP
=
[
(
'Propinsi'
,
2
,
'N'
),
(
'Kabupaten'
,
2
,
'N'
),
(
'Kecamatan'
,
3
,
'N'
),
...
...
@@ -26,6 +27,9 @@ INVOICE_ID = [
(
'Blok'
,
3
,
'N'
),
(
'Urut'
,
4
,
'N'
),
(
'Jenis'
,
1
,
'N'
),
]
INVOICE_ID
=
NOP
+
[
(
'Tahun'
,
4
,
'N'
),
]
...
...
@@ -38,11 +42,14 @@ def thousand(n):
return
locale
.
format
(
'
%0
.f'
,
n
,
True
)
def
get_
id
(
row
):
def
get_
nop
(
row
):
return
''
.
join
(
[
row
.
kd_propinsi
,
row
.
kd_dati2
,
row
.
kd_kecamatan
,
row
.
kd_kelurahan
,
row
.
kd_blok
,
row
.
no_urut
,
row
.
kd_jns_op
,
row
.
thn_pajak_sppt
])
row
.
kd_kelurahan
,
row
.
kd_blok
,
row
.
no_urut
,
row
.
kd_jns_op
])
def
get_id
(
row
):
return
''
.
join
([
get_nop
(
row
),
row
.
thn_pajak_sppt
])
class
Query
:
...
...
@@ -106,11 +113,18 @@ class Query:
class
Inquiry
(
Query
):
def
__init__
(
self
,
invoice_id
=
None
,
persen_denda
=
2
,
invoice
=
None
):
def
__init__
(
self
,
invoice_id
=
None
,
persen_denda
=
2
,
invoice
=
None
,
tgl_bayar
=
None
):
Query
.
__init__
(
self
,
invoice_id
,
invoice
)
if
not
self
.
invoice
:
return
self
.
persen_denda
=
persen_denda
if
self
.
invoice
:
self
.
hitung
()
if
tgl_bayar
:
self
.
tgl_bayar
=
tgl_bayar
else
:
self
.
tgl_bayar
=
datetime
.
now
()
self
.
hitung
()
def
get_kelurahan_model
(
self
):
pass
...
...
@@ -191,22 +205,18 @@ class Inquiry(Query):
tagihan
=
self
.
invoice
.
pbb_yg_harus_dibayar_sppt
-
sisa
self
.
tagihan
=
round_up
(
tagihan
)
def
hitung_denda
(
self
,
tgl_bayar
):
bln_tunggakan
,
denda
=
hitung_denda
(
def
hitung_denda
(
self
):
self
.
bln_tunggakan
,
denda
=
hitung_denda
(
self
.
tagihan
,
self
.
invoice
.
tgl_jatuh_tempo_sppt
,
self
.
persen_denda
,
tgl_bayar
)
self
.
tgl_bayar
.
date
()
)
self
.
denda
=
round_up
(
denda
)
def
hitung
(
self
,
tgl_bayar
=
None
):
if
tgl_bayar
is
None
:
tgl_bayar
=
date
.
today
()
def
hitung
(
self
):
self
.
hitung_pokok
()
self
.
hitung_denda
(
tgl_bayar
)
self
.
hitung_denda
()
self
.
total
=
self
.
tagihan
+
self
.
denda
def
do_payment
(
self
,
bank_fields
,
nip_pencatat
,
tgl_bayar
=
None
):
if
not
tgl_bayar
:
tgl_bayar
=
datetime
.
now
()
def
do_payment
(
self
,
bank_fields
,
nip_pencatat
):
Payment
=
self
.
get_payment_model
()
bayar
=
self
.
invoice2payment
()
if
bayar
:
...
...
@@ -226,7 +236,7 @@ class Inquiry(Query):
bayar
.
thn_pajak_sppt
=
self
.
invoice
.
thn_pajak_sppt
bayar
.
pembayaran_sppt_ke
=
ke
bayar
.
tgl_rekam_byr_sppt
=
datetime
.
now
()
bayar
.
tgl_pembayaran_sppt
=
tgl_bayar
bayar
.
tgl_pembayaran_sppt
=
self
.
tgl_bayar
bayar
.
jml_sppt_yg_dibayar
=
self
.
total
bayar
.
denda_sppt
=
self
.
denda
bayar
.
nip_rekam_byr_sppt
=
nip_pencatat
...
...
@@ -234,7 +244,6 @@ class Inquiry(Query):
DBSession
.
add
(
bayar
)
self
.
invoice
.
status_pembayaran_sppt
=
'1'
# Lunas
DBSession
.
add
(
self
.
invoice
)
DBSession
.
flush
()
return
bayar
def
before_save
(
self
,
bayar
):
...
...
@@ -252,7 +261,6 @@ class Reversal(Query):
self
.
invoice
.
status_pembayaran_sppt
=
'0'
DBSession
.
add
(
self
.
invoice
)
self
.
before_save
()
DBSession
.
flush
()
def
before_save
(
self
):
pass
...
...
sismiop/services/bogor_kota/__init__.py
View file @
547db4e
from
time
import
time
from
datetime
import
date
from
opensipkd.hitung
import
round_up
from
opensipkd.hitung
import
(
round_up
,
hitung_denda
,
)
from
sismiop.models.default
import
(
PenguranganPst
,
PenguranganCovid
,
...
...
@@ -24,45 +27,61 @@ class Inquiry(BaseInquiry):
kd_kelurahan_pemohon
=
inv_id
[
'Kelurahan'
],
kd_blok_pemohon
=
inv_id
[
'Blok'
],
no_urut_pemohon
=
inv_id
[
'Urut'
],
kd_jns_op_pemohon
=
inv_id
[
'Jenis'
],
thn_pe
ng_pst
=
inv_id
[
'Tahun'
])
thn_pe
layanan
=
inv_id
[
'Tahun'
])
pst
=
q
.
first
()
return
pst
and
pst
.
no_sk
and
pst
.
status_sk_peng_pst
!=
'2'
def
hitung
(
self
,
tgl_bayar
=
None
):
# Override
if
tgl_bayar
is
None
:
tgl_bayar
=
date
.
today
()
self
.
hitung_pokok
()
self
.
hitung_denda
(
tgl_bayar
)
def
hitung_denda
(
self
):
# Override
self
.
bln_tunggakan
,
self
.
denda
=
hitung_denda
(
self
.
tagihan
,
self
.
invoice
.
tgl_jatuh_tempo_sppt
,
self
.
persen_denda
,
self
.
tgl_bayar
.
date
())
def
rumus_normal
(
self
):
self
.
denda
=
round_up
(
self
.
denda
)
self
.
total
=
self
.
tagihan
+
self
.
denda
if
self
.
total
<
1
:
def
rumus_pengurang_pokok
(
self
):
if
self
.
tgl_bayar
.
month
==
4
:
pengurang
=
0.15
elif
self
.
tgl_bayar
.
month
==
5
:
pengurang
=
0.1
elif
self
.
tgl_bayar
.
month
==
6
:
pengurang
=
0.05
else
:
return
self
.
field_jml_sppt_yg_dibayar
=
self
.
tagihan
self
.
field_denda_sppt
=
self
.
denda
=
0
self
.
pengurang_pokok
=
int
(
pengurang
*
self
.
tagihan
)
self
.
total
=
self
.
tagihan
=
self
.
tagihan
-
self
.
pengurang_pokok
return
True
def
rumus_denda_sebagai_pengurang
(
self
):
self
.
field_denda_sppt
=
self
.
pengurang_denda
=
self
.
denda
=
\
int
(
self
.
denda
)
self
.
field_jml_sppt_yg_dibayar
=
self
.
tagihan
+
self
.
denda
self
.
denda
=
0
self
.
total
=
self
.
tagihan
# self.tagihan, self.denda, dan self.total digunakan untuk ISO8583
def
hitung
(
self
):
# Override
self
.
hitung_pokok
()
self
.
hitung_denda
()
self
.
rumus_normal
()
if
self
.
total
<
1
or
self
.
tgl_bayar
.
year
!=
2020
:
return
# Pengurangan pokok
self
.
pengurang_pokok
=
self
.
pengurang_denda
=
0
if
self
.
invoice
.
thn_pajak_sppt
==
'2020'
:
if
tgl_bayar
.
year
==
2020
and
not
self
.
is_pst
():
if
tgl_bayar
.
month
==
4
:
pengurang
=
0.15
elif
tgl_bayar
.
month
==
5
:
pengurang
=
0.1
elif
tgl_bayar
.
month
==
4
:
pengurang
=
0.5
self
.
pokok
=
self
.
tagihan
self
.
pengurang_pokok
=
round_up
(
pengurang
*
self
.
tagihan
)
self
.
tagihan
-=
self
.
pengurang_pokok
self
.
denda
=
0
elif
self
.
invoice
.
thn_pajak_sppt
<
'2020'
:
if
tgl_bayar
.
year
==
2020
:
if
tgl_bayar
.
month
in
(
4
,
5
,
6
):
self
.
pengurang_denda
=
self
.
denda
self
.
denda
=
0
else
:
return
self
.
total
=
self
.
tagihan
+
self
.
denda
if
not
self
.
is_pst
()
and
self
.
rumus_pengurang_pokok
():
return
elif
self
.
invoice
.
thn_pajak_sppt
<
'2020'
and
\
self
.
tgl_bayar
.
month
in
(
4
,
5
,
6
):
self
.
rumus_denda_sebagai_pengurang
()
def
before_save
(
self
,
bayar
):
# Override
if
not
self
.
pengurang_pokok
and
not
self
.
pengurang_denda
:
return
bayar
.
denda_sppt
=
self
.
denda
bayar
.
jml_sppt_yg_dibayar
=
self
.
field_jml_sppt_yg_dibayar
bayar
.
denda_sppt
=
self
.
field_denda_sppt
inv
=
self
.
invoice
pc
=
PenguranganCovid
(
kd_propinsi
=
bayar
.
kd_propinsi
,
kd_dati2
=
bayar
.
kd_dati2
,
...
...
@@ -72,15 +91,20 @@ class Inquiry(BaseInquiry):
kd_jns_op
=
bayar
.
kd_jns_op
,
thn_pajak_sppt
=
bayar
.
thn_pajak_sppt
,
pembayaran_sppt_ke
=
bayar
.
pembayaran_sppt_ke
)
if
self
.
pengurang_pokok
:
bayar
.
jml_sppt_yg_dibayar
=
self
.
pokok
pc
.
pokok
=
self
.
pengurang_pokok
pc
.
bayar
=
self
.
pengurang_pokok
pc
.
denda
=
0
elif
self
.
pengurang_denda
:
pc
.
pokok
=
0
pc
.
denda
=
self
.
pengurang_denda
pc
.
bayar
=
pc
.
denda
=
self
.
pengurang_denda
DBSession
=
get_db_session
()
DBSession
.
add
(
pc
)
def
get_pengurangan_covid
(
self
,
pay
):
DBSession
=
get_db_session
()
q
=
DBSession
.
query
(
PenguranganCovid
)
q
=
self
.
get_filter
(
q
)
q
=
q
.
filter_by
(
pembayaran_sppt_ke
=
pay
.
pembayaran_sppt_ke
)
return
q
.
first
()
class
Reversal
(
BaseReversal
):
def
before_save
(
self
):
# Override
...
...
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