Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
eis
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 5e2b429b
authored
Jun 11, 2025
by
aa.gustiana@gmail.com
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
perhitungan pajak
1 parent
0630031e
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
145 additions
and
29 deletions
eispajak/scripts/data/routes.csv
eispajak/views/pcpd.py
eispajak/scripts/data/routes.csv
View file @
5e2b429
kode,nama,path,status,type,is_menu,parent_id,file_name,class_name,func_name,permission,template
eis-pcpd,PCPD,/eis/pcpd,1,0,
1
eis-pcpd,PCPD,/eis/pcpd,1,0,
0
eis-pcpd-act,PCPD Act,/eis/pcpd/{act}/act,1,0
eis-pajak,Pajak,#,1,0,1
eis-pajak-kumulatif,Pajak,/eis/pajak,1,0,1,eis-pajak,pcpd,Views,view_pajak,eis,pcpd.pt
...
...
@@ -10,6 +10,7 @@ eis-resto,Restoran,/eis/resto,1,0,1,eis-pajak,pcpd,Views,view_resto,eis,pcpd.pt
eis-hiburan,Hiburan,/eis/hiburan,1,0,1,eis-pajak,pcpd,Views,view_hiburan,eis,pcpd.pt
eis-parkir,Parkir,/eis/parkir,1,0,1,eis-pajak,pcpd,Views,view_parkir,eis,pcpd.pt
eis-ppju,PPJU,/eis/ppju,1,0,1,eis-pajak,pcpd,Views,view_ppju,eis,pcpd.pt
eis-walet,Walet,/eis/walet,1,0,1,eis-pajak,pcpd,Views,view_walet,eis,pcpd.pt
eis-minerba,Minerba,/eis/minerba,1,0,1,eis-pajak,pcpd,Views,view_minerba,eis,pcpd.pt
eis-reklame,Reklame,/eis/reklame,1,0,1,eis-pajak,pcpd,Views,view_reklame,eis,pcpd.pt
eis-atd,Air Tanah,/eis/atd,1,0,1,eis-pajak,pcpd,Views,view_atd,eis,pcpd.pt
...
...
eispajak/views/pcpd.py
View file @
5e2b429
...
...
@@ -12,6 +12,20 @@ from ..models.payment import PaymentPBB, PaymentPAD, PaymentBPHTB, PaymentWEBR
from
datetime
import
timedelta
logger
=
logging
.
getLogger
(
__name__
)
PAD_TYP
=
{
"hotel"
:
[
"PBJT - JASA PERHOTELAN"
],
"resto"
:
[
"RESTORAN"
,
"PBJT - MAKANAN DAN/ATAU MINUMAN"
],
"hiburan"
:
[
"PBJT - JASA KESENIAN DAN HIBURAN"
],
"ppju"
:
[
"PBJT - TENAGA LISTRIK"
],
"minerba"
:
[
"MINERAL BUKAN LOGAM DAN BATUAN"
],
"opsen"
:
[
"OPSEN BBNKB"
,
"OPSEN PKB"
],
"parkir"
:
[
"PBJT - JASA PARKIR"
],
"walet"
:
[
"PENGELOLAAN SARANG BURUNG WALET DAN SEJENISNYA"
],
"atd"
:
[
"AIR TANAH"
],
"reklame"
:
[
"REKLAME"
],
"pbb"
:
[
"PBB"
,
"BPHTB"
]
}
class
Views
(
BaseView
):
@view_config
(
route_name
=
'eis-pcpd'
,
renderer
=
'templates/pcpd.pt'
,
...
...
@@ -42,13 +56,19 @@ class Views(BaseView):
"monthtrAccTrx"
:
[(
"JAN"
,
100
),
(
"FEB"
,
200
),
(
"MAR"
,
300
),
(
"APR"
,
200
),
(
"MAY"
,
100
),
(
"JUN"
,
100
),
(
"JUL"
,
700
)],
}
def
get_daily_data
(
self
,
table
,
field
,
today
,
filters
):
def
get_daily_data
(
self
,
table
,
field
,
today
,
filters
,
typ
=
None
):
columns
=
[
field
.
label
(
"step"
)]
qry
=
table
.
qry_sum
(
columns
)
\
.
group_by
(
field
)
\
.
order_by
(
field
)
# for i, f in enumerate(filters):
qry
=
qry
.
filter
(
filters
)
if
typ
!=
None
:
if
typ
==
"pbb"
:
qry
=
qry
.
filter
(
table
.
jenis_pajak
.
notin_
(
PAD_TYP
[
typ
]))
else
:
qry
=
qry
.
filter
(
table
.
jenis_pajak
.
in_
(
PAD_TYP
[
typ
]))
daily
=
[]
dailyTrx
=
[]
dailyAcc
=
[]
...
...
@@ -94,16 +114,16 @@ class Views(BaseView):
self
.
get_daily_data
(
PaymentPBB
,
field
,
str
(
today
.
year
),
filter_exp
)
field
=
func
.
to_char
(
PaymentPBB
.
tgl_pembayaran_sppt
,
'
IYYY-
MM'
)
field
=
func
.
to_char
(
PaymentPBB
.
tgl_pembayaran_sppt
,
'MM'
)
month
,
monthTrx
,
monthly
,
monthlyTrx
,
monthlyAcc
,
monthlyAccTrx
=
\
self
.
get_daily_data
(
PaymentPBB
,
field
,
None
,
filter_exp
)
field
=
func
.
to_char
(
PaymentPBB
.
tgl_pembayaran_sppt
,
'WW'
)
filter_exp
=
PaymentPBB
.
tgl_pembayaran_sppt
.
between
(
today
-
timedelta
(
weeks
=
6
),
today
)
week
,
weekTrx
,
weekly
,
weeklyTrx
,
weeklyAcc
,
weeklyAccTrx
=
\
self
.
get_daily_data
(
PaymentPBB
,
field
,
None
,
filter_exp
)
field
=
func
.
to_char
(
PaymentPBB
.
tgl_pembayaran_sppt
,
'YYYY-IW'
)
return
{
"today"
:
amt
,
"trx"
:
trx
,
"daily"
:
daily
,
...
...
@@ -183,15 +203,13 @@ class Views(BaseView):
else
:
today
=
datetime
.
now
()
.
date
()
filter_ex
=
[]
if
typ
==
'hotel'
:
filter_ex
=
[
PaymentPAD
.
jenis_pajak
==
"PBJT - JASA PERHOTELAN"
,]
field
=
func
.
to_char
(
PaymentPAD
.
tgl
,
'yyyy-mm-dd'
)
filter_exp
=
PaymentPAD
.
tgl
.
between
(
today
-
timedelta
(
6
),
today
)
amt
,
trx
,
daily
,
dailyTrx
,
dailyAcc
,
dailyAccTrx
=
\
self
.
get_daily_data
(
PaymentPAD
,
field
,
today
.
strftime
(
"
%
Y-
%
m-
%
d"
),
filter_exp
)
today
.
strftime
(
"
%
Y-
%
m-
%
d"
),
filter_exp
,
typ
)
filter_exp
=
PaymentPAD
.
tgl
.
between
(
today
-
timedelta
(
days
=
6
),
today
)
...
...
@@ -199,17 +217,18 @@ class Views(BaseView):
filter_exp
=
PaymentPAD
.
tgl
.
between
(
datetime
.
strptime
(
f
"{today.year}-01-01"
,
"
%
Y-
%
m-
%
d"
),
today
)
ytd
,
ytdTrx
,
yearly
,
yearlyTrx
,
yearlyAcc
,
yearlyAccTrx
=
\
self
.
get_daily_data
(
PaymentPAD
,
field
,
str
(
today
.
year
),
filter_exp
)
self
.
get_daily_data
(
PaymentPAD
,
field
,
str
(
today
.
year
),
filter_exp
,
typ
)
field
=
func
.
to_char
(
PaymentPAD
.
tgl
,
'
YYYY-
MM'
)
field
=
func
.
to_char
(
PaymentPAD
.
tgl
,
'MM'
)
month
,
monthTrx
,
monthly
,
monthlyTrx
,
monthlyAcc
,
monthlyAccTrx
=
\
self
.
get_daily_data
(
PaymentPAD
,
field
,
None
,
filter_exp
)
self
.
get_daily_data
(
PaymentPAD
,
field
,
None
,
filter_exp
,
typ
)
field
=
func
.
to_char
(
PaymentPAD
.
tgl
,
'
YYYY-
WW'
)
field
=
func
.
to_char
(
PaymentPAD
.
tgl
,
'WW'
)
filter_exp
=
PaymentPAD
.
tgl
.
between
(
today
-
timedelta
(
weeks
=
6
),
today
)
week
,
weekTrx
,
weekly
,
weeklyTrx
,
weeklyAcc
,
weeklyAccTrx
=
\
self
.
get_daily_data
(
PaymentPAD
,
field
,
None
,
filter_exp
)
self
.
get_daily_data
(
PaymentPAD
,
field
,
None
,
filter_exp
,
typ
)
return
{
"today"
:
amt
,
"trx"
:
trx
,
...
...
@@ -232,7 +251,6 @@ class Views(BaseView):
"monthlyAccTrx"
:
monthlyAccTrx
,
}
def
get_webr_data
(
self
):
if
log
.
root
.
level
==
logging
.
DEBUG
:
today
=
datetime
.
strptime
(
'2025-06-05'
,
"
%
Y-
%
m-
%
d"
)
...
...
@@ -255,7 +273,8 @@ class Views(BaseView):
filter_exp
=
PaymentWEBR
.
tgl
.
between
(
datetime
.
strptime
(
f
"{today.year}-01-01"
,
"
%
Y-
%
m-
%
d"
),
today
)
ytd
,
ytdTrx
,
yearly
,
yearlyTrx
,
yearlyAcc
,
yearlyAccTrx
=
\
self
.
get_daily_data
(
PaymentWEBR
,
field
,
str
(
today
.
year
),
filter_exp
)
self
.
get_daily_data
(
PaymentWEBR
,
field
,
str
(
today
.
year
),
filter_exp
)
field
=
func
.
to_char
(
PaymentWEBR
.
tgl
,
'YYYY-MM'
)
month
,
monthTrx
,
monthly
,
monthlyTrx
,
monthlyAcc
,
monthlyAccTrx
=
\
...
...
@@ -288,29 +307,121 @@ class Views(BaseView):
"monthlyAccTrx"
:
monthlyAccTrx
,
}
@view_config
(
route_name
=
'eis-pcpd-act'
,
renderer
=
'json'
)
def
loop_data
(
self
,
src
,
dst
):
for
key
,
val
in
enumerate
(
src
):
found
=
False
for
key2
,
val2
in
enumerate
(
dst
):
if
val
[
0
]
==
val2
[
0
]:
found
=
True
dst
[
key2
][
1
]
+=
float
(
val
[
1
])
if
not
found
:
dst
.
append
([
val
[
0
],
float
(
val
[
1
])])
dst
.
sort
()
def
get_pajak_data
(
self
):
pbb
=
self
.
get_pbb_data
()
bphtb
=
self
.
get_bphtb_data
()
pdl
=
self
.
get_pad_data
(
"pbb"
)
daily
=
[]
dailyTrx
=
[]
dailyAcc
=
[]
dailyAccTrx
=
[]
monthly
=
[]
monthlyTrx
=
[]
monthlyAcc
=
[]
monthlyAccTrx
=
[]
weekly
=
[]
weeklyTrx
=
[]
weeklyAcc
=
[]
weeklyAccTrx
=
[]
self
.
loop_data
(
pbb
[
"daily"
],
daily
)
self
.
loop_data
(
pbb
[
"dailyTrx"
],
dailyTrx
)
self
.
loop_data
(
pbb
[
"dailyAcc"
],
dailyAcc
)
self
.
loop_data
(
pbb
[
"dailyAccTrx"
],
dailyAccTrx
)
self
.
loop_data
(
pbb
[
"monthly"
],
monthly
)
self
.
loop_data
(
pbb
[
"monthlyTrx"
],
monthlyTrx
)
self
.
loop_data
(
pbb
[
"monthlyAcc"
],
monthlyAcc
)
self
.
loop_data
(
pbb
[
"monthlyAccTrx"
],
monthlyAccTrx
)
self
.
loop_data
(
pbb
[
"weekly"
],
weekly
)
self
.
loop_data
(
pbb
[
"weeklyTrx"
],
weeklyTrx
)
self
.
loop_data
(
pbb
[
"weeklyAcc"
],
weeklyAcc
)
self
.
loop_data
(
pbb
[
"weeklyAccTrx"
],
weeklyAccTrx
)
self
.
loop_data
(
bphtb
[
"daily"
],
daily
)
self
.
loop_data
(
bphtb
[
"dailyTrx"
],
dailyTrx
)
self
.
loop_data
(
bphtb
[
"dailyAcc"
],
dailyAcc
)
self
.
loop_data
(
bphtb
[
"dailyAccTrx"
],
dailyAccTrx
)
self
.
loop_data
(
bphtb
[
"monthly"
],
monthly
)
self
.
loop_data
(
bphtb
[
"monthlyTrx"
],
monthlyTrx
)
self
.
loop_data
(
bphtb
[
"monthlyAcc"
],
monthlyAcc
)
self
.
loop_data
(
bphtb
[
"monthlyAccTrx"
],
monthlyAccTrx
)
self
.
loop_data
(
bphtb
[
"weekly"
],
weekly
)
self
.
loop_data
(
bphtb
[
"weeklyTrx"
],
weeklyTrx
)
self
.
loop_data
(
bphtb
[
"weeklyAcc"
],
weeklyAcc
)
self
.
loop_data
(
bphtb
[
"weeklyAccTrx"
],
weeklyAccTrx
)
self
.
loop_data
(
pdl
[
"daily"
],
daily
)
self
.
loop_data
(
pdl
[
"dailyTrx"
],
dailyTrx
)
self
.
loop_data
(
pdl
[
"dailyAcc"
],
dailyAcc
)
self
.
loop_data
(
pdl
[
"dailyAccTrx"
],
dailyAccTrx
)
self
.
loop_data
(
pdl
[
"monthly"
],
monthly
)
self
.
loop_data
(
pdl
[
"monthlyTrx"
],
monthlyTrx
)
self
.
loop_data
(
pdl
[
"monthlyAcc"
],
monthlyAcc
)
self
.
loop_data
(
pdl
[
"monthlyAccTrx"
],
monthlyAccTrx
)
self
.
loop_data
(
pdl
[
"weekly"
],
weekly
)
self
.
loop_data
(
pdl
[
"weeklyTrx"
],
weeklyTrx
)
self
.
loop_data
(
pdl
[
"weeklyAcc"
],
weeklyAcc
)
self
.
loop_data
(
pdl
[
"weeklyAccTrx"
],
weeklyAccTrx
)
resp
=
{
"today"
:
float
(
pbb
.
get
(
"today"
,
0
))
+
float
(
bphtb
.
get
(
"today"
,
0
))
+
float
(
pdl
.
get
(
"today"
,
0
)),
"trx"
:
float
(
pbb
.
get
(
"trx"
,
0
))
+
float
(
bphtb
.
get
(
"trx"
,
0
))
+
float
(
pdl
.
get
(
"trx"
,
0
)),
"daily"
:
daily
,
"dailyTrx"
:
dailyTrx
,
"dailyAcc"
:
dailyAcc
,
"dailyAccTrx"
:
dailyAccTrx
,
"ytd"
:
float
(
pbb
.
get
(
"ytd"
,
0
))
+
float
(
bphtb
.
get
(
"ytd"
,
0
))
+
float
(
pdl
.
get
(
"ytd"
,
0
)),
"trxYtd"
:
float
(
pbb
.
get
(
"trxYtd"
,
0
))
+
float
(
bphtb
.
get
(
"trxYtd"
,
0
))
+
float
(
pdl
.
get
(
"trxYtd"
,
0
)),
"pie"
:
[(
"I"
,
100
,
'#16a75c'
),
(
"II"
,
200
,
'#ffb900'
),
(
"III"
,
300
,
'#133132'
),
(
"IV"
,
200
,
'#123456'
),
(
"V"
,
100
,
'#545355'
)],
"weekly"
:
weekly
,
"weeklyTrx"
:
weeklyTrx
,
"weeklyAcc"
:
weeklyAcc
,
"weeklyAccTrx"
:
weeklyAccTrx
,
"monthly"
:
monthly
,
"monthlyTrx"
:
monthlyTrx
,
"monthlyAcc"
:
monthlyAcc
,
"monthlyAccTrx"
:
monthlyAccTrx
,
}
return
resp
@
view_config
(
route_name
=
'eis-pcpd-act'
,
renderer
=
'json'
)
def
view_app_act
(
self
):
tahun
=
self
.
ses
[
'tahun'
]
req
=
self
.
req
ses
=
req
.
session
params
=
req
.
params
id
=
'id'
in
params
and
params
[
'id'
]
or
0
json_data
=
{}
json_data
[
'success'
]
=
False
act
=
req
.
matchdict
[
'act'
]
tahun
=
self
.
ses
[
'tahun'
]
req
=
self
.
req
ses
=
req
.
session
params
=
req
.
params
id
=
'id'
in
params
and
params
[
'id'
]
or
0
json_data
=
{}
json_data
[
'success'
]
=
False
act
=
req
.
matchdict
[
'act'
]
if
act
==
'grid'
:
rows
=
DBSession
.
query
(
Eis
)
.
filter
(
Eis
.
id
==
id
)
rows
=
DBSession
.
query
(
Eis
)
.
filter
(
Eis
.
id
==
id
)
if
not
rows
:
return
json_data
elif
act
==
'pbb'
:
resp
=
self
.
get_pbb_data
()
resp
=
self
.
get_pbb_data
()
elif
act
==
'bphtb'
:
resp
=
self
.
get_bphtb_data
()
resp
=
self
.
get_bphtb_data
()
elif
act
==
'webr'
:
resp
=
self
.
get_webr_data
()
resp
=
self
.
get_webr_data
()
elif
act
==
'pajak'
:
resp
=
self
.
get_pajak_data
()
else
:
resp
=
self
.
get_pad_data
(
act
)
resp
[
"time"
]
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
resp
=
self
.
get_pad_data
(
act
)
resp
[
"time"
]
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
return
resp
def
view_pajak
(
self
):
...
...
@@ -364,3 +475,7 @@ class Views(BaseView):
def
view_opsen
(
self
):
return
{
"module"
:
'opsen'
,
"title"
:
"Opsen Pajak PKB dan BBNKB"
}
def
view_walet
(
self
):
return
{
"module"
:
'walet'
,
"title"
:
"Pajak Sarang Burung Walet"
}
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