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 d785e561
authored
Sep 23, 2025
by
Ari Agung Prasetiyo
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
trend penerimaan
1 parent
d8735612
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
323 additions
and
21 deletions
eispajak/scripts/data/routes.csv
eispajak/views/penerimaan.py
eispajak/views/templates/trend_penerimaan.pt
eispajak/scripts/data/routes.csv
View file @
d785e56
...
@@ -57,4 +57,9 @@ eis-pkbbbnkb-act,EIS PKB BBNKB Act,/eis/pkbbbnkb/{act}/act,1,0,,,pkbbbnkb,Views
...
@@ -57,4 +57,9 @@ eis-pkbbbnkb-act,EIS PKB BBNKB Act,/eis/pkbbbnkb/{act}/act,1,0,,,pkbbbnkb,Views
eis-pkbbbnkb-add,EIS PKB BBNKB Add,/eis/pkbbbnkb/add,1,0,,,pkbbbnkb,Views
eis-pkbbbnkb-add,EIS PKB BBNKB Add,/eis/pkbbbnkb/add,1,0,,,pkbbbnkb,Views
eis-pkbbbnkb-edit,EIS PKB BBNKB Edit,/eis/pkbbbnkb/{id}/edit,1,0,,,pkbbbnkb,Views
eis-pkbbbnkb-edit,EIS PKB BBNKB Edit,/eis/pkbbbnkb/{id}/edit,1,0,,,pkbbbnkb,Views
eis-pkbbbnkb-delete,EIS PKB BBNKB Delete,/eis/pkbbbnkb/{id}/delete,1,0,,,pkbbbnkb,Views
eis-pkbbbnkb-delete,EIS PKB BBNKB Delete,/eis/pkbbbnkb/{id}/delete,1,0,,,pkbbbnkb,Views
eis-penerimaan,EIS PKB BBNKB,/eis/penerimaan,1,0,0,,penerimaan,Views,view_list,,form.pt
eis-penerimaan-act,EIS PKB BBNKB Act,/eis/penerimaan/{act}/act,1,0,,,penerimaan,Views
eis-penerimaan-add,EIS PKB BBNKB Add,/eis/penerimaan/add,1,0,,,penerimaan,Views
eis-penerimaan-edit,EIS PKB BBNKB Edit,/eis/penerimaan/{id}/edit,1,0,,,penerimaan,Views
eis-penerimaan-delete,EIS PKB BBNKB Delete,/eis/penerimaan/{id}/delete,1,0,,,penerimaan,Views
eispajak/views/penerimaan.py
0 → 100644
View file @
d785e56
from
pyramid.view
import
(
view_config
,
)
from
..views
import
BaseView
from
..models
import
*
import
colander
from
deform
import
widget
from
opensipkd.base.widgets
import
widget_os
from
pyramid.view
import
view_config
from
..models.payment
import
PaymentPBB
,
PaymentPAD
,
PaymentBPHTB
,
PaymentWEBR
,
Targets
,
UploadRealisasiOpsen
from
opensipkd.pbb.monitoring.models
import
PembayaranSppt
,
Kecamatan
,
Kelurahan
,
Sppt
from
.
import
BaseView
from
..models
import
Targets
from
..models.payment
import
PCDBSession
from
datetime
import
timedelta
from
sqlalchemy
import
func
,
and_
,
String
PAD_TYP
=
{
"hotel"
:
[
"HOTEL"
,
"PBJT - JASA PERHOTELAN"
],
"resto"
:
[
"RESTORAN"
,
"PBJT - MAKANAN DAN/ATAU MINUMAN"
],
"hiburan"
:
[
"HIBURAN"
,
"PBJT - JASA KESENIAN DAN HIBURAN"
],
"ppju"
:
[
"PENERANGAN JALAN"
,
"PBJT - TENAGA LISTRIK"
],
"minerba"
:
[
"MINERAL BUKAN LOGAM DAN BATUAN"
],
"opsen_pkb"
:
[
"OPSEN PKB"
],
"opsen_bbnkb"
:
[
"OPSEN BBNKB"
],
"parkir"
:
[
"PARKIR"
,
"PBJT - JASA PARKIR"
],
"walet"
:
[
"PENGELOLAAN SARANG BURUNG WALET DAN SEJENISNYA"
],
"atd"
:
[
"AIR TANAH"
],
"reklame"
:
[
"REKLAME"
],
"pbb"
:
[
"PBB"
,
"BPHTB"
]
}
jenis_pajak
=
{
"opsen_pkb"
:
{
"kode"
:
"4.1.01.20.01.0001"
,
"nama"
:
"Opsen PKB"
,
"subs"
:
[]
},
"opsen_bbnkb"
:
{
"kode"
:
"4.1.01.20.02.0001"
,
"nama"
:
"Opsen BBNKB"
,
"subs"
:
[]
},
"pbb"
:
{
"kode"
:
"4.1.1.0"
,
"nama"
:
"Pajak Bumi & Bangunan"
,
"subs"
:
[]
},
"bphtb"
:
{
"kode"
:
"4.1.0.0"
,
"nama"
:
"Bea Perolehan Hak atas Tanah dan Bangunan"
,
"subs"
:
[]
},
"resto"
:
{
"kode"
:
"4.1.1.02"
,
"nama"
:
"PBJT - Makanan dan Minuman"
,
"subs"
:
[]
},
"ppju"
:
{
"kode"
:
"4.1.1.05"
,
"nama"
:
"PBJT-Tenaga Listrik"
,
"subs"
:
[]},
"hotel"
:
{
"kode"
:
"4.1.1.01"
,
"nama"
:
"PBJT Jasa Perhotelan"
,
"subs"
:
[]
},
"parkir"
:
{
"kode"
:
"4.1.1.07"
,
"nama"
:
"Pajak Parkir"
},
"hiburan"
:
{
"kode"
:
"4.1.1.03"
,
"nama"
:
"PBJT - Jasa Kesenian dan Hiburan"
,
"subs"
:
[]
},
"reklame"
:
{
"kode"
:
"4.1.1.04"
,
"nama"
:
"Pajak Rekalme"
,
"subs"
:
[]
},
"atd"
:
{
"kode"
:
"4.1.1.08"
,
"nama"
:
"Pajak Air Tanah"
},
"walet"
:
{
"kode"
:
"4.1.1.09"
,
"nama"
:
"Pajak Sarang Burung Walet"
},
"minerba"
:
{
"kode"
:
"4.1.1.06"
,
"nama"
:
"Pajak Mineral Bukan Logam dan Batuan"
,
"subs"
:
[]
}
}
class
Views
(
BaseView
):
def
__init__
(
self
,
request
):
super
()
.
__init__
(
request
)
self
.
list_route
=
'eis-pkbbbnkb'
# def view_list(self):
# return super().view_list()
def
view_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'
]
if
act
==
'grid'
:
data
=
{}
data
.
update
(
self
.
get_grid_pajak
(
"hotel"
))
data
.
update
(
self
.
get_grid_pajak
(
"resto"
))
data
.
update
(
self
.
get_grid_pajak
(
"hiburan"
))
data
.
update
(
self
.
get_grid_pajak
(
"parkir"
))
data
.
update
(
self
.
get_grid_pajak
(
"ppju"
))
data
.
update
(
self
.
get_grid_pajak
(
"minerba"
))
data
.
update
(
self
.
get_grid_pajak
(
"walet"
))
data
.
update
(
self
.
get_grid_pajak
(
"reklame"
))
data
.
update
(
self
.
get_grid_pajak
(
"atd"
))
data
.
update
(
self
.
get_grid_pajak
(
"pbb"
))
data
.
update
(
self
.
get_grid_pajak
(
"bphtb"
))
data
.
update
(
self
.
get_grid_pajak
(
"opsen_pkb"
))
data
.
update
(
self
.
get_grid_pajak
(
"opsen_bbnkb"
))
return
[{
"kode"
:
data
[
d
][
"kode"
],
"nama"
:
data
[
d
][
"nama"
],
"realisasi_2022"
:
data
[
d
][
"realisasi_2022"
],
"realisasi_2023"
:
data
[
d
][
"realisasi_2023"
],
"realisasi_2024"
:
data
[
d
][
"realisasi_2024"
],
"realisasi_2025"
:
data
[
d
][
"realisasi_2025"
],
}
for
d
in
data
]
return
super
()
.
view_act
()
def
get_grid_pajak
(
self
,
jenis
):
realisasi_2022
=
0
realisasi_2023
=
0
realisasi_2024
=
0
realisasi_2025
=
0
if
jenis
==
"pbb"
:
realisasi_2022
=
self
.
get_pbb_data
(
'2022'
)[
"ytd"
]
realisasi_2023
=
self
.
get_pbb_data
(
'2023'
)[
"ytd"
]
realisasi_2024
=
self
.
get_pbb_data
(
'2024'
)[
"ytd"
]
realisasi_2025
=
self
.
get_pbb_data
(
'2025'
)[
"ytd"
]
elif
jenis
==
"opsen_pkb"
:
realisasi_2022
=
self
.
get_pkb_data
(
'2022'
)[
"ytd"
]
realisasi_2023
=
self
.
get_pkb_data
(
'2023'
)[
"ytd"
]
realisasi_2024
=
self
.
get_pkb_data
(
'2024'
)[
"ytd"
]
realisasi_2025
=
self
.
get_pkb_data
(
'2025'
)[
"ytd"
]
elif
jenis
==
"opsen_bbnkb"
:
realisasi_2022
=
self
.
get_bbnkb_data
(
'2022'
)[
"ytd"
]
realisasi_2023
=
self
.
get_bbnkb_data
(
'2023'
)[
"ytd"
]
realisasi_2024
=
self
.
get_bbnkb_data
(
'2024'
)[
"ytd"
]
realisasi_2025
=
self
.
get_bbnkb_data
(
'2025'
)[
"ytd"
]
elif
jenis
==
"bphtb"
:
realisasi_2022
=
self
.
get_bphtb_data
(
'2022'
)[
"ytd"
]
realisasi_2023
=
self
.
get_bphtb_data
(
'2023'
)[
"ytd"
]
realisasi_2024
=
self
.
get_bphtb_data
(
'2024'
)[
"ytd"
]
realisasi_2025
=
self
.
get_bphtb_data
(
'2025'
)[
"ytd"
]
else
:
realisasi_2022
=
self
.
get_pad_data
(
jenis
,
'2022'
)[
"ytd"
]
realisasi_2023
=
self
.
get_pad_data
(
jenis
,
'2023'
)[
"ytd"
]
realisasi_2024
=
self
.
get_pad_data
(
jenis
,
'2024'
)[
"ytd"
]
realisasi_2025
=
self
.
get_pad_data
(
jenis
,
'2025'
)[
"ytd"
]
return
{
jenis
:
{
"kode"
:
jenis_pajak
[
jenis
][
"kode"
]
.
ljust
(
8
,
'0'
),
"nama"
:
jenis_pajak
[
jenis
][
"nama"
],
"realisasi_2022"
:
realisasi_2022
,
"realisasi_2023"
:
realisasi_2023
,
"realisasi_2024"
:
realisasi_2024
,
"realisasi_2025"
:
realisasi_2025
,
}
}
def
get_pbb_data
(
self
,
tahun
):
today
=
datetime
.
now
()
.
date
()
#Total Setahun
field
=
func
.
to_char
(
PembayaranSppt
.
tgl_pembayaran_sppt
,
'IYYY'
)
filter_exp
=
PembayaranSppt
.
tgl_pembayaran_sppt
.
between
(
datetime
.
strptime
(
f
"{tahun}-01-01"
,
"
%
Y-
%
m-
%
d"
),
datetime
.
strptime
(
f
"{tahun}-12-31"
,
"
%
Y-
%
m-
%
d"
))
ytd
,
ytdTrx
,
yearly
,
yearlyTrx
,
yearlyAcc
,
yearlyAccTrx
=
\
self
.
get_daily_data
(
PembayaranSppt
,
field
,
str
(
tahun
),
filter_exp
)
return
{
"ytd"
:
ytd
,
}
def
get_bphtb_data
(
self
,
tahun
):
#Total Tahunan
field
=
func
.
to_char
(
PaymentBPHTB
.
tgl
,
'IYYY'
)
filter_exp
=
PaymentBPHTB
.
tgl
.
between
(
datetime
.
strptime
(
f
"{tahun}-01-01"
,
"
%
Y-
%
m-
%
d"
),
datetime
.
strptime
(
f
"{tahun}-12-31"
,
"
%
Y-
%
m-
%
d"
))
ytd
,
ytdTrx
,
yearly
,
yearlyTrx
,
yearlyAcc
,
yearlyAccTrx
=
\
self
.
get_daily_data
(
PaymentBPHTB
,
field
,
str
(
tahun
),
filter_exp
)
return
{
"ytd"
:
ytd
,
}
def
get_pad_data
(
self
,
typ
=
None
,
tahun
=
None
):
#Total Tahun Berjalan
field
=
func
.
to_char
(
PaymentPAD
.
tgl
,
'IYYY'
)
filter_exp
=
PaymentPAD
.
tgl
.
between
(
datetime
.
strptime
(
f
"{tahun}-01-01"
,
"
%
Y-
%
m-
%
d"
),
datetime
.
strptime
(
f
"{tahun}-12-31"
,
"
%
Y-
%
m-
%
d"
))
ytd
,
ytdTrx
,
yearly
,
yearlyTrx
,
yearlyAcc
,
yearlyAccTrx
=
\
self
.
get_daily_data
(
PaymentPAD
,
field
,
str
(
tahun
),
filter_exp
,
typ
)
return
{
"ytd"
:
ytd
,
}
def
get_webr_data
(
self
,
tahun
):
#Tahunan
field
=
func
.
to_char
(
PaymentWEBR
.
tgl
,
'IYYY'
)
filter_exp
=
PaymentWEBR
.
tgl
.
between
(
datetime
.
strptime
(
f
"{tahun}-01-01"
,
"
%
Y-
%
m-
%
d"
),
datetime
.
strptime
(
f
"{tahun}-12-31"
,
"
%
Y-
%
m-
%
d"
))
ytd
,
ytdTrx
,
yearly
,
yearlyTrx
,
yearlyAcc
,
yearlyAccTrx
=
\
self
.
get_daily_data
(
PaymentWEBR
,
field
,
str
(
tahun
),
filter_exp
)
return
{
"ytd"
:
ytd
,
}
def
get_pkb_data
(
self
,
tahun
):
#Tahunan
field
=
func
.
to_char
(
UploadRealisasiOpsen
.
tanggal
,
'IYYY'
)
filter_exp
=
UploadRealisasiOpsen
.
tanggal
.
between
(
datetime
.
strptime
(
f
"{tahun}-01-01"
,
"
%
Y-
%
m-
%
d"
),
datetime
.
strptime
(
f
"{tahun}-12-31"
,
"
%
Y-
%
m-
%
d"
))
ytd
,
ytdTrx
,
yearly
,
yearlyTrx
,
yearlyAcc
,
yearlyAccTrx
=
\
self
.
get_daily_data
(
UploadRealisasiOpsen
,
field
,
str
(
tahun
),
filter_exp
,
'opsen_pkb'
)
return
{
"ytd"
:
ytd
,
}
def
get_bbnkb_data
(
self
,
tahun
):
#Tahunan
field
=
func
.
to_char
(
UploadRealisasiOpsen
.
tanggal
,
'IYYY'
)
filter_exp
=
UploadRealisasiOpsen
.
tanggal
.
between
(
datetime
.
strptime
(
f
"{tahun}-01-01"
,
"
%
Y-
%
m-
%
d"
),
datetime
.
strptime
(
f
"{tahun}-12-31"
,
"
%
Y-
%
m-
%
d"
))
ytd
,
ytdTrx
,
yearly
,
yearlyTrx
,
yearlyAcc
,
yearlyAccTrx
=
\
self
.
get_daily_data
(
UploadRealisasiOpsen
,
field
,
str
(
tahun
),
filter_exp
,
'opsen_bbnkb'
)
return
{
"ytd"
:
ytd
,
}
def
get_daily_data
(
self
,
table
,
field
,
today
,
filters
,
typ
=
None
):
#todo ada kemungkinan menyebabkan error ke transaksi yang lain
if
type
(
filters
)
is
not
list
:
filters
=
[
filters
]
if
PCDBSession
.
registry
()
.
in_transaction
():
PCDBSession
.
rollback
()
columns
=
[
field
.
label
(
"step"
)]
if
typ
==
'opsen_pkb'
:
qry
=
table
.
qry_sum_pkb
(
columns
)
\
.
group_by
(
field
)
\
.
order_by
(
field
)
elif
typ
==
'opsen_bbnkb'
:
qry
=
table
.
qry_sum_bbnkb
(
columns
)
\
.
group_by
(
field
)
\
.
order_by
(
field
)
else
:
qry
=
table
.
qry_sum
(
columns
)
\
.
group_by
(
field
)
\
.
order_by
(
field
)
qry
=
qry
.
filter
(
*
filters
)
opsen
=
[
"opsen_pkb"
,
"opsen_bbnkb"
]
if
typ
!=
None
and
typ
not
in
opsen
:
if
typ
==
"pajak"
:
qry
=
qry
.
filter
(
table
.
jenis_pajak
.
notin_
(
PAD_TYP
[
'pbb'
]))
else
:
qry
=
qry
.
filter
(
table
.
jenis_pajak
.
in_
(
PAD_TYP
[
typ
]))
daily
=
[]
dailyTrx
=
[]
dailyAcc
=
[]
dailyAccTrx
=
[]
amt
=
trx
=
acc
=
accTrx
=
0
for
r
in
qry
:
mapped
=
r
.
_mapping
step
=
mapped
.
get
(
"step"
,
""
)
bayar
=
mapped
.
get
(
"bayar"
,
0
)
denda
=
int
(
mapped
.
get
(
"denda"
,
0
)
or
0
)
pokok
=
bayar
-
denda
tx
=
mapped
.
get
(
"trx"
,
0
)
daily
.
append
((
step
,
pokok
))
dailyTrx
.
append
((
step
,
tx
))
acc
+=
pokok
accTrx
+=
tx
dailyAcc
.
append
((
step
,
acc
))
dailyAccTrx
.
append
((
step
,
accTrx
))
if
step
==
today
:
amt
=
pokok
trx
=
tx
return
amt
,
trx
,
daily
,
dailyTrx
,
dailyAcc
,
dailyAccTrx
\ No newline at end of file
\ No newline at end of file
eispajak/views/templates/trend_penerimaan.pt
View file @
d785e56
...
@@ -138,13 +138,6 @@
...
@@ -138,13 +138,6 @@
<td
class=
"right"
>
0
</td>
<td
class=
"right"
>
0
</td>
</tr>
</tr>
</tbody>
</tbody>
<tfoot>
<td
colspan=
"2"
class=
"text-right"
>
Jumlah
</td>
<td><span
id=
"sum_target"
></span></td>
<td><span
id=
"sum_realisasi"
></span></td>
<td><span
id=
"sum_sisa"
></span></td>
<td><span
id=
"sum_persen"
></span></td>
</tfoot>
</table>
</table>
</div>
</div>
</div>
</div>
...
@@ -630,7 +623,6 @@
...
@@ -630,7 +623,6 @@
"searching"
:
false
,
"searching"
:
false
,
"info"
:
false
,
"info"
:
false
,
"autoWidth"
:
false
,
"autoWidth"
:
false
,
"scrollX"
:
true
,
"ordering"
:
false
,
"ordering"
:
false
,
"columnDefs"
:
[
"columnDefs"
:
[
{
className
:
'text-center'
,
width
:
"50px"
,
targets
:
[
0
]
},
{
className
:
'text-center'
,
width
:
"50px"
,
targets
:
[
0
]
},
...
@@ -643,7 +635,7 @@
...
@@ -643,7 +635,7 @@
var
tableRefresh
=
function
()
{
var
tableRefresh
=
function
()
{
table
.
clear
();
table
.
clear
();
var
url
=
"${url}"
.
replace
(
"/p
ajak/"
,
"
/grid/"
);
var
url
=
"${url}"
.
replace
(
"/p
cpd/pajak/"
,
"/penerimaan
/grid/"
);
$
.
get
(
url
,
{},
function
(
data
,
status
)
{
$
.
get
(
url
,
{},
function
(
data
,
status
)
{
if
(
status
===
"success"
)
{
if
(
status
===
"success"
)
{
console
.
log
(
data
);
console
.
log
(
data
);
...
@@ -656,20 +648,12 @@
...
@@ -656,20 +648,12 @@
table
.
row
.
add
([
table
.
row
.
add
([
row
.
kode
,
row
.
kode
,
row
.
nama
,
row
.
nama
,
row
.
target
,
row
.
realisasi_2022
,
row
.
realisasi
,
row
.
realisasi
_2023
,
row
.
sisa
,
row
.
realisasi_2024
,
row
.
persen
.
toFixed
(
2
)
row
.
realisasi_2025
]);
]);
sum_target
+=
row
.
target
;
sum_realisasi
+=
row
.
realisasi
;
sum_sisa
+=
row
.
sisa
;
sum_persen
+=
row
.
persen
;
});
});
$
(
'#sum_target'
).
html
(
sum_target
.
toLocaleString
(
"id-ID"
));
$
(
'#sum_realisasi'
).
html
(
sum_realisasi
.
toLocaleString
(
"id-ID"
));
$
(
'#sum_sisa'
).
html
(
sum_sisa
.
toLocaleString
(
"id-ID"
));
$
(
'#sum_persen'
).
html
((
sum_realisasi
/
sum_target
*
100
).
toFixed
(
2
));
// Update gauge with total values
// Update gauge with total values
var
gaugePercentage
=
(
sum_realisasi
/
sum_target
*
100
);
var
gaugePercentage
=
(
sum_realisasi
/
sum_target
*
100
);
...
...
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