Commit 58a3285d by aa.gusti

init

1 parent 42e428a1
......@@ -20,57 +20,6 @@ from sqlalchemy.orm import (
from zope.sqlalchemy import ZopeTransactionExtension
from ...models import (CommonModel, DefaultModel as BaseDefaultModel,
Base as EisBase, DBSession as EisDBSession)
TABLE_ARGS = {'extend_existing':True,
'schema':'eis'
}
class DefaultModel(BaseDefaultModel):
def save(self):
if self.id:
#Who knows another user edited, so use merge ()
EisDBSession.merge(self)
else:
EisDBSession.add(self)
@classmethod
def query(cls):
return EisDBSession.query(cls)
@classmethod
def query_id(cls, id):
return cls.query().filter_by(id=id)
@classmethod
def delete(cls, id):
cls.query_id(id).delete()
@classmethod
def count(cls):
return EisDBSession.query(func.count('id')).scalar()
class KodeModel(DefaultModel):
kode = Column(String(32))
status = Column(SmallInteger, nullable=False, default=0)
created = Column(DateTime, nullable=True, default=datetime.utcnow)
updated = Column(DateTime, nullable=True)
create_uid = Column(Integer, nullable=True, default=1)
update_uid = Column(Integer, nullable=True)
@classmethod
def query_kode(cls,kode):
return cls.query().filter_by(kode=kode)
@classmethod
def get_active(cls):
return cls.query().filter_by(status=1).all()
class NamaModel(KodeModel):
nama = Column(String(128))
@classmethod
def query_nama(cls, nama):
return cls.query().filter_by(nama=nama)
from .eis import Eis, Slide, Chart, ChartItem, EisParams, ArPayment, LastUpdate
\ No newline at end of file
from ...eis.models import (DefaultModel, EisBase, EisDBSession)
from ...eis.models import Eis, Slide, Chart, ChartItem, EisParams,TABLE_ARGS, NamaModel
from .eis import EisSipkdArPayment, EisSipkdApPayment, EisSipkdPbPayment, Harian, EisSipkdAnggaran
\ No newline at end of file
......@@ -20,8 +20,8 @@ from sqlalchemy.orm import (
)
from ..models import (EisDBSession, DefaultModel, EisBase, NamaModel, TABLE_ARGS)
class Eis(EisBase, NamaModel):
__tablename__ = 'wells'
class Harian(EisBase, NamaModel):
__tablename__ = 'harian'
tahun = Column(Integer)
amt_tahun = Column(BigInteger)
amt_bulan = Column(BigInteger)
......@@ -33,7 +33,7 @@ class Eis(EisBase, NamaModel):
@classmethod
def sum_data(cls, kode, tahun):
q = EisDBSession.query(cls).filter_by(
q = cls.query().filter_by(
kode==kode,
tahun=tahun).first()
if q:
......@@ -47,72 +47,56 @@ class Eis(EisBase, NamaModel):
@classmethod
def sum_order_id(cls, tahun):
q = EisDBSession.query(cls).filter_by(
tahun=tahun)
q = cls.query().\
filter_by(tahun=tahun)
if q:
return q
return
class Slide(NamaModel, EisBase):
__tablename__ = 'slides'
source_type = Column(String(16)) #grid, image, chart-line, chart-pie, chart-bar
source_id = Column(String(128))
order_id = Column(Integer, default=0)
aktif = Column(SmallInteger, default=0)
__table_args__ = TABLE_ARGS
class Chart(NamaModel, EisBase):
__tablename__ = 'charts'
chart_type = Column(String(16))
label = Column(String(128)) #digunakan jika chart membutuhkan label
devider = Column(BigInteger, default=1)
status = Column(SmallInteger, default=0)
class EisSipkdArPayment(NamaModel, EisBase):
__tablename__ = 'sipkd_ar_payment'
tanggal = Column(DateTime(timezone=False))
departemen_kd = Column(String(16))
departemen_nm = Column(String(255))
rekening_kd = Column(String(16))
rekening_nm = Column(String(255))
jumlah = Column(BigInteger)
level_id = Column(Integer)
__table_args__ = (UniqueConstraint('kode'),
TABLE_ARGS)
class ChartItem(NamaModel, EisBase):
__tablename__ = 'chart_items'
value_1 = Column(BigInteger, default=0)
value_2 = Column(BigInteger, default=0)
value_3 = Column(BigInteger, default=0)
value_4 = Column(BigInteger, default=0)
value_5 = Column(BigInteger, default=0)
value_6 = Column(BigInteger, default=0)
value_7 = Column(BigInteger, default=0)
value_8 = Column(BigInteger, default=0)
value_9 = Column(BigInteger, default=0)
value10 = Column(BigInteger, default=0)
value11 = Column(BigInteger, default=0)
value12 = Column(BigInteger, default=0)
chart_id = Column(Integer, ForeignKey('eis.charts.id'))
source_type = Column(String(32), default='realisasi')
rekening_kd = Column(String(128))
color = Column(String(6))
highlight = Column(String(6))
is_sum = Column(SmallInteger, default=0)
updated = Column(DateTime)
created = Column(DateTime)
create_uid = Column(Integer)
update_uid = Column(Integer)
chart = relationship("Chart")
status = Column(SmallInteger, default=0)
class EisSipkdApPayment(NamaModel, EisBase):
__tablename__ = 'sipkd_ap_payment'
tanggal = Column(DateTime(timezone=False))
tanggal = Column(DateTime(timezone=False))
departemen_kd = Column(String(16))
departemen_nm = Column(String(255))
rekening_kd = Column(String(16))
rekening_nm = Column(String(255))
jumlah = Column(BigInteger)
level_id = Column(Integer)
__table_args__ = (UniqueConstraint('kode'),
TABLE_ARGS)
class EisParams(NamaModel, EisBase):
__tablename__ = 'params'
last_update = Column(DateTime(timezone=False), nullable=True)
__table_args__ = (TABLE_ARGS)
class LastUpdate(DefaultModel, EisBase):
__tablename__ = 'last_update'
wells = Column(DateTime(timezone=False), nullable=True)
__table_args__ = (TABLE_ARGS)
class ArPayment(NamaModel, EisBase):
__tablename__ = 'ar_payment'
class EisSipkdPbPayment(NamaModel, EisBase):
__tablename__ = 'sipkd_pb_payment'
tanggal = Column(DateTime(timezone=False))
tanggal = Column(DateTime(timezone=False))
denda = Column(BigInteger)
bayar = Column(BigInteger)
__table_args__ = (UniqueConstraint('tanggal','kode'),
departemen_kd = Column(String(16))
departemen_nm = Column(String(255))
rekening_kd = Column(String(16))
rekening_nm = Column(String(255))
jumlah = Column(BigInteger)
level_id = Column(Integer)
__table_args__ = (UniqueConstraint('kode'),
TABLE_ARGS)
class EisSipkdAnggaran(NamaModel, EisBase):
__tablename__ = 'sipkd_anggaran'
tahun = Column(String(4))
departemen_kd = Column(String(16))
departemen_nm = Column(String(255))
jumlah = Column(BigInteger)
level_id = Column(Integer)
__table_args__ = (UniqueConstraint('tahun', 'kode', 'departemen_kd'),
TABLE_ARGS)
\ No newline at end of file
RouteData = {
'options': ['insert if not exists','delete first'],
'csv': ['route.csv'],
'keys':['kode'],
}
HarianData = {
'options': [],
'csv': ['harian.csv'],
'keys':['kode'],
}
ApPaymentData = {
'options': [],
'csv': ['ap_payment.csv'],
'keys':['kode'],
}
ArPaymentData = {
'options': [],
'csv': ['ar_payment.csv'],
'keys': ['kode']
}
PbPaymentData = {
'options': [],
'csv': ['pb_payment.csv'],
'keys':['kode'],
}
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
"tahun","kode","nama","amt_tahun","amt_bulan","amt_minggu","amt_hari","order_id","aktif","status","created","updated","create_uid","update_uid"
2017,"4","PENDAPATAN DAERAH",270304991668,12242123958,12242123958,3577607966,20,1,1,,"2017-05-05 20:00:19.353075",1,1
2017,"4.1","PENDAPATAN ASLI DAERAH",270304991668,12242123958,12242123958,3577607966,20,1,1,,"2017-05-05 20:00:19.353075",1,1
2017,"4.1.1","PAJAK DAERAH",270304991668,12242123958,12242123958,3577607966,20,1,1,,"2017-05-05 20:00:19.353075",1,1
2017,"4.1.1.01","PAJAK HOTEL",6822046440,89380000,89380000,89380000,1,0,1,,"2017-05-05 19:59:57.119622",1,1
2017,"4.1.1.02","PAJAK RESTORAN",67112609599,270271579,270271579,209278299,2,0,1,,"2017-05-05 19:59:57.119622",1,1
2017,"4.1.1.03","PAJAK HIBURAN",13556215526,17168863,17168863,14288863,3,0,1,,"2017-05-05 19:59:57.119622",1,1
2017,"4.1.1.04","PAJAK REKLAME",5588472846,151501786,151501786,34788064,4,0,1,,"2017-05-05 19:59:57.119622",1,1
2017,"4.1.1.05","PAJAK PENERANGAN JALAN",8383025652,0,0,0,5,0,1,,"2017-05-05 19:59:57.119622",1,1
2017,"4.1.1.06","PAJAK PARKIR DAN GALIAN",8246913185,132909250,132909250,131334250,7,0,1,,"2017-05-05 19:59:57.119622",1,1
2017,"4.1.1.07","PAJAK AIR TANAH",465415392,38072466,38072466,13789027,8,0,1,,"2017-05-05 19:59:57.119622",1,1
2017,"4.1.1.11","PAJAK BPHTB",112470623589,7021433355,7021433355,1666770579,10,0,1,,"2017-05-05 20:00:17.482882",1,1
2017,"4.1.1.12","PAJAK BUMI DAN BANGUNAN PERDESAAN PERKOTAAN",47659669439,4521386659,4521386659,1417978884,12,0,1,,"2017-05-05 20:00:19.149218",1,1
2017,"5","BELANJA DAERAH",270304991668,12242123958,12242123958,3577607966,20,1,1,,"2017-05-05 20:00:19.353075",1,1
2017,"5.1","BELANJA TIDAK LANGSUNG",270304991668,12242123958,12242123958,3577607966,20,1,1,,"2017-05-05 20:00:19.353075",1,1
2017,"5.2","BELANJA LANGSUNG",270304991668,12242123958,12242123958,3577607966,20,1,1,,"2017-05-05 20:00:19.353075",1,1
No preview for this file type
kode,nama,path,status
eis,EIS,/eis,1
eis-carousel,Carousel,/eis/carousel,1
eis-carousel-act,Carousel Action,/eis/carousel/{act}/act,1
eis-carousel-add,Carousel Add,/eis/carousel/add,1
eis-carousel-edit,Carousel Edit,/eis/carousel/{id}/edit,1
eis-carousel-delete,Carousel Delete,/eis/carousel/{id}/delete,1
eis-dashboard,EIS,/eis/dashboard,1
eis-dashboard-act,EIS Act,/eis/dashboard/{act}/act,1
eis-dashboard-calc-all,EIS Calc ALL,/eis/dashboad/calc/all,1
eis-home,EIS Home,/eis/home,1
eis-act,EIS Home Act,/eis/{act}/act,1
eis-calc-all,EIS Calc ALL,/eis/calc/all,1
eis-chart,Chart,/eis/chart,1
eis-chart-act,EIS Chart Action,/eis/chart/{act}/act,1
eis-chart-add,EIS Chart Add,/eis/chart/add,1
eis-chart-edit,EIS Chart Edit,/eis/chart/{id}/edit,1
eis-chart-delete,EIS Chart Delet,/eis/chart/{id}/delete,1
eis-chart-item,Chart Item,/eis/chart/item/{chart_id},1
eis-chart-item-act,EIS Chart Item Action,/eis/chart/item/{chart_id}/{act}/act,1
eis-chart-item-add,EIS Chart Item Add,/eis/chart/item/{chart_id}/add,1
eis-chart-item-edit,EIS Chart Item Edit,/eis/chart/item/{chart_id}/{id}/edit,1
eis-chart-item-delete,EIS Chart Item Delet,/eis/chart/item/{chart_id}/{id}/delete,1
eis-item,EIS Item,/eis/item,1
eis-item-act,EIS Item Action,/eis/item/{act}/act,1
eis-item-add,EIS Item Add,/eis/item/add,1
eis-item-edit,EIS Item Edit,/eis/item/{id}/edit,1
eis-item-delete,EIS Item Delete,/eis/item/{id}/delete,1
eis-slide,EIS Slide,/eis/slide,1
eis-slide-act,EIS Slide Act,/eis/slide/{act}/act,1
eis-slide-add,EIS Slide Add,/eis/slide/add,1
eis-slide-edit,EIS Slide Edit,/eis/slide/{id}/edit,1
eis-slide-delete,EIS Slide Delete,/eis/slide/{id}/delete,1
eis-sipkd,Integrasi Keuangan,/eis/sipkd,1
eis-sipkd-act,Integrasi Keuangan Act,/eis/sipkd/{act}/act,1
eis-sipkd-dashboard,Dashboard Integrasi Keuangan,/eis/sipkd/dashboard,1
eis-sipkd-anggaran,Anggaran,/eis/sipkd/anggaran,1
eis-sipkd-anggaran-act,Anggaran Act,/eis/sipkd/anggaran/{act}/act,1
eis-sipkd-realisasi,Realisasi,/eis/sipkd/realisasi,1
eis-sipkd-realisasi-act,Realisasi Act,/eis/sipkd/realisasi/{act}/act,1
eis-sipkd-grafik,Grafik,/eis/sipkd/grafik,1
eis-sipkd-grafik-act,Grafik Act,/eis/sipkd/grafik/{act}/act,1
eis-sipkd-harian,Harian,/eis/sipkd/harian,1
eis-sipkd-harian-act,Harian Act,/eis/sipkd/harian/{act}/act,1
\ No newline at end of file
RouteData = {
'options': ['insert if not exists','delete first'],
'csv': ['route.csv'],
'keys':['kode'],
}
import os
from .data.routes import RouteData
from ...scripts.initial_data import InitialData
from ..models import (
EisBase as ModuleBase,
CommonModel,
EisDBSession as ModuleDBSession,
Eis,Slide, Chart, ChartItem, EisSipkdArPayment, EisSipkdApPayment
)
from .data.routes import RouteData
from .data.slide import SlideData
from .data.wells import EisData
from .data.chart import ChartData
from .data.chart_item import ChartItemData
from .data import (RouteData, ArPaymentData, ApPaymentData, PbPaymentData,
HarianData)
from ...scripts.DbTools import (
get_pkeys,
execute,
split_tablename,
)
from ..models import (
EisBase as ModuleBase,
CommonModel,
EisDBSession as ModuleDBSession,
Eis,Slide, Chart, ChartItem
)
fixtures = [
('routes', RouteData),
('eis.charts', ChartData),
('eis.chart_items', ChartItemData),
('eis.slides', SlideData),
('eis.wells', EisData),
('eis.sipkd_ar_payment', ArPaymentData),
('eis.sipkd_ap_payment', ApPaymentData),
('eis.sipkd_pb_payment', PbPaymentData),
('eis.harian', HarianData),
# ('eis.chart_items', ChartItemData),
# ('eis.slides', SlideData),
# ('eis.wells', EisData),
]
def insert():
......
......@@ -20,21 +20,20 @@ from ..models import (
from ..models import *
from . import initial_data
#from .tools import mkdir
from ...scripts.initializedb import create_schema, read_file
from ...tools import get_settings
from ...eis.scripts.initializedb import main as eisMain
def main(settings):
'eis'
eisMain(settings)
if 'eis.url' in settings and settings['eis.url']:
engine = engine_from_config(settings, 'eis.')
else:
engine = ModuleDBSession.bind;
create_schema(engine, 'eis')
ModuleBase.metadata.create_all(engine)
ModuleDBSession.configure(bind=engine)
print('**********************')
#create_schema(engine, 'eis')
#ModuleBase.metadata.create_all(engine)
#ModuleDBSession.configure(bind=engine)
initial_data.insert()
transaction.commit()
print('****EIS CREATED****')
print('****EIS SIPKD CREATED****')
from ...views.base_views import BaseView as OsBaseView
from ...views.common import DataTables, ColumnDT
from ...views import widget
from pyramid.view import (
view_config,
)
class BaseView(OsBaseView):
pass
# @view_config(route_name='eis', renderer='templates/home.pt')
# def view_home(self):
# return dict(modules = ['eis'])
\ No newline at end of file
from sqlalchemy import func
from ..tools import date_from_str #, row2dict
from pyramid.view import (
view_config,
)
from ..models import EisDBSession, EisSipkdAnggaran
from ..views import BaseView
from datetime import datetime
########
# APP Home #
########
class Anggaran(BaseView):
def cek_value(self,value,devider,simbol):
if value<devider:
return "{0:,.0f}".format(value)
else:
return "{0:,.0f} {1}".format(value/devider,simbol)
@view_config(route_name='eis-sipkd-anggaran', renderer='templates/anggaran.pt',
permission='eis-sipkd-anggaran')
def view_app(self):
tahun = self.ses['tahun']
params = self.params
kode = 'kode' in params and params['kode'] or ''
ar_qry = ap_qry = pb_qry = None
ar_rows = ap_rows = pb_rows = {}
jml_ar = jml_ap = 0
ar_qry = EisDBSession.query(EisSipkdAnggaran.kode,
EisSipkdAnggaran.nama,
EisSipkdAnggaran.level_id,
func.sum(EisSipkdAnggaran.jumlah).label('jumlah')).\
group_by(EisSipkdAnggaran.kode,
EisSipkdAnggaran.nama,
EisSipkdAnggaran.level_id,
).\
filter(EisSipkdAnggaran.tahun == tahun ).\
order_by(EisSipkdAnggaran.kode)
level_id = 2
if not kode:
ar_qry = ar_qry.filter(EisSipkdAnggaran.level_id <= level_id,
EisSipkdAnggaran.level_id > level_id-2,)
ap_qry = ar_qry.filter(EisSipkdAnggaran.kode.like('5%'))
pb_qry = ar_qry.filter(EisSipkdAnggaran.kode.like('6%'))
ar_qry = ar_qry.filter(EisSipkdAnggaran.kode.like('4%'))
title = "RINGKASAN APBD"
ar_rows = row2dict(ar_qry.all())
pb_rows = row2dict(pb_qry.all())
for row in ap_rows:
if row['level_id'] == level_id:
jml_ap += row['jumlah']
else:
level_id = kode.count('.')+2
ar_qry = ar_qry.filter(EisSipkdAnggaran.kode.like(kode+'%'),
EisSipkdAnggaran.level_id <= level_id,
EisSipkdAnggaran.level_id > level_id-1,
)
title = 'nama' in params and params['nama'] or ''
ar_rows = row2dict(ar_qry.all())
for row in ar_rows:
if row['level_id'] == level_id:
jml_ar += row['jumlah']
return dict(project='EIS', ar_rows=ar_rows, ap_rows = ap_rows,
sd_row=jml_ar-jml_ap, level_id=level_id, pb_rows=pb_rows,
title=title, kode=kode)
def row2dict(rows):
return [dict(zip(row.keys(), list(row))) for row in rows]
# import json
from pyramid.view import (
view_config,
)
# from pyramid.httpexceptions import (
# HTTPFound,
# )
from ..views import BaseView
from ..models import EisDBSession
from ..models import Eis, Chart, ChartItem, Slide
#from ..tools import row2dict
class dashboard(BaseView):
def cek_value(self,value,devider,simbol):
if value<devider:
return "{0:,.0f}".format(value)
else:
return "{0:,.2f} {1}".format(value/devider,simbol)
@view_config(route_name='eis-dashboard', renderer='templates/dashboard.pt')
def view_app(self):
tahun = self.ses['tahun']
datas = EisDBSession.query(Slide).filter(Slide.status==1).order_by(Slide.order_id)
if not datas:
datas = {}
return dict(project='EIS', datas=datas)
@view_config(route_name='eis-dashboard-act', renderer='json')
def view_act(self):
tahun = self.ses['tahun']
req = self.req
params = req.params
id = 'id' in params and params['id'] or 0
json_data = {}
json_data['success']=False
if req.matchdict['act']=='grid':
rows = EisDBSession.query(Eis).filter(Eis.id==id)
if not rows:
return json_data
for row in rows:
row_dicted = row.to_dict()
amt_hari = float(row_dicted['amt_hari'])
amt_minggu = float(row_dicted['amt_minggu']) #+amt_hari
amt_bulan = float(row_dicted['amt_bulan']) #+amt_hari
amt_tahun = float(row_dicted['amt_tahun']) #+amt_bulan
json_data['success']= True
json_data['tahun'] = self.cek_value(amt_tahun,1000000000, 'M')
json_data['bulan'] = self.cek_value(amt_bulan,1000000000, 'M')
json_data['minggu'] = self.cek_value(amt_minggu,1000000000, 'M')
json_data['hari'] = self.cek_value(amt_hari,1000000000, 'M')
return json_data
#######################################################################
# GRAFIK LINE/BAR
#######################################################################
elif req.matchdict['act']=='linebar':
rows = EisDBSession.query(Chart).filter(Chart.id==id).first()
if not rows:
return json_data
json_data['label'] = rows.label.split(',')
rows = EisDBSession.query(ChartItem).filter(ChartItem.chart_id==id).\
order_by(ChartItem.id)
for row in rows:
json_data[row.source_type] = [row.value_1/row.chart.devider,row.value_2/row.chart.devider,row.value_3/row.chart.devider,
row.value_4/row.chart.devider,row.value_5/row.chart.devider,row.value_6/row.chart.devider,
row.value_7/row.chart.devider,row.value_8/row.chart.devider,row.value_9/row.chart.devider,
row.value10/row.chart.devider,row.value11/row.chart.devider,row.value12/row.chart.devider,]
json_data['success']= True
return json_data
#######################################################################
# GRAFIK LINGKARAN
#######################################################################
elif req.matchdict['act']=='pie':
rows = EisDBSession.query(Chart).filter(Chart.id==id).first()
if not rows:
return json_data
json_data['label'] = rows.label.split(',')
rows = EisDBSession.query(ChartItem).filter(ChartItem.chart_id==id).\
order_by(ChartItem.id)
json_data['rows'] = {}
for row in rows:
anama = {}
anama['nama'] = row.nama
anama['color'] = row.color
anama ['highlight'] = row.highlight
anama ['value'] = row.value_1/row.chart.devider
json_data['rows'][row.nama] =anama
json_data['success']= True
return json_data
......@@ -7,7 +7,7 @@ from pyramid.httpexceptions import (
)
from ..views import BaseView
from ..models import EisDBSession
from ..models.eis import Eis, Chart, ChartItem, Slide
from ..models import Eis, Chart, ChartItem, Slide
#from ..tools import row2dict
########
# APP Home #
......@@ -19,8 +19,8 @@ class eis(BaseView):
else:
return "{0:,.0f} {1}".format(value/devider,simbol)
@view_config(route_name='eis', renderer='templates/eis.pt',
permission='eis')
@view_config(route_name='eis-sipkd', renderer='templates/eis.pt',
permission='eis-sipkd')
def view_app(self):
tahun = self.ses['tahun']
datas = EisDBSession.query(Slide).filter(Slide.status==1).order_by(Slide.order_id) or {}
......@@ -34,7 +34,7 @@ class eis(BaseView):
line_datas=line_datas, bar_datas=bar_datas,
pie_datas=pie_datas, )#, datas=Eis.sum_order_id('2014'))
@view_config(route_name='eis-act', renderer='json')
@view_config(route_name='eis-sipkd-act', renderer='json')
def view_app_act(self):
tahun = self.ses['tahun']
req = self.req
......
import os
import uuid
#from ..tools import row2dict, xls_reader
from datetime import datetime
from sqlalchemy import not_, func
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..models import (
EisDBSession
)
from ..models.eis import (
Eis
)
from ..views import BaseView, ColumnDT, DataTables
SESS_ADD_FAILED = 'Tambah carousel gagal'
SESS_EDIT_FAILED = 'Edit carousel gagal'
rek_widget = widget.AutocompleteInputWidget(
size=60,
values = '/rekening/act/headof',
min_length=1)
class Amount(colander.Schema):
amt_tahun = colander.SchemaNode(
colander.Integer(),
default = 0,
missing = 0)
amt_bulan = colander.SchemaNode(
colander.Integer(),
default = 0,
missing = 0)
amt_minggu = colander.SchemaNode(
colander.Integer(),
default = 0,
missing = 0)
amt_hari = colander.SchemaNode(
colander.Integer(),
default = 0,
missing = 0)
class AddSchema(colander.Schema):
tahun = colander.SchemaNode(
colander.Integer())
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=18),
oid='kode')
nama = colander.SchemaNode(
colander.String(),
widget = rek_widget,
validator=colander.Length(max=128),
oid = 'nama')
order_id = colander.SchemaNode(
colander.Integer(),
default = 0,
missing = 0)
amount = Amount()
status = colander.SchemaNode(
colander.Boolean())
aktif = colander.SchemaNode(
colander.Boolean())
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class view_carousel(BaseView):
########
# List #
########
@view_config(route_name='eis-carousel', renderer='templates/eis-carousel/list.pt',
permission='eis-carousel')
def view_list(self):
return dict(a={})
##########
# Action #
##########
@view_config(route_name='eis-carousel-act', renderer='json',
permission='eis-carousel-act')
def view_act(self):
ses = self.req.session
request = self.req
params = request.params
url_dict = request.matchdict
if url_dict['act']=='grid':
columns = []
columns.append(ColumnDT(Eis.id))
columns.append(ColumnDT(Eis.tahun))
columns.append(ColumnDT(Eis.kode))
columns.append(ColumnDT(Eis.nama))
columns.append(ColumnDT(Eis.amt_tahun, ))
columns.append(ColumnDT(Eis.amt_bulan, ))
columns.append(ColumnDT(Eis.amt_minggu, ))
columns.append(ColumnDT(Eis.amt_hari, ))
columns.append(ColumnDT(Eis.order_id, ))
columns.append(ColumnDT(Eis.status, ))
columns.append(ColumnDT(Eis.aktif, ))
columns.append(ColumnDT(func.to_char(Eis.updated, "DD-MM-YYYY"), ))
query = EisDBSession.query().select_from(Eis)
rowTable = DataTables(request.GET, query, columns)
return rowTable.output_result()
elif url_dict['act']=='hon':
term = 'term' in params and params['term'] or ''
prefix = 'prefix' in params and params['prefix'] or ''
qry = EisDBSession.query(Eis).\
filter(Eis.status == 1).\
filter(Eis.nama.ilike('%%%s%%' % term)).\
order_by(Eis.nama)
r = []
for row in qry.all():
d = dict(
id = row.id,
value = row.nama,
kode = row.kode,
)
r.append(d)
return r
@view_config(route_name='eis-carousel-add', renderer='templates/eis-carousel/add.pt',
permission='eis-carousel-add')
def view_add(self):
request = self.req
ses = self.ses
form = get_form(request, AddSchema)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
#request.session[SESS_ADD_FAILED] = e.render()
#form.set_appstruct(rowd)
return dict(form=form)
#return HTTPFound(location=request.route_url('carousel-add'))
save_request(request, dict(controls))
return route_list(request)
elif SESS_ADD_FAILED in request.session:
return dict(form=form)
#return self.session_failed(SESS_ADD_FAILED)
return dict(form=form)
@view_config(route_name='eis-carousel-edit', renderer='templates/eis-carousel/add.pt',
permission='eis-carousel-edit')
def view_edit(self):
request = self.req
row = query_id(request).first()
if not row:
return id_not_found(request)
#values = row.to_dict()
rowd={}
rowd['id'] = row.id
rowd['tahun'] = row.tahun
rowd['kode'] = row.kode
rowd['nama'] = row.nama
rowd['order_id'] = row.order_id
rowd['status'] = row.status
rowd['aktif'] = row.aktif
rowd['amount'] = {}
rowd['amount']['amt_tahun'] = row.amt_tahun or 0
rowd['amount']['amt_bulan'] = row.amt_bulan or 0
rowd['amount']['amt_minggu'] = row.amt_minggu or 0
rowd['amount']['amt_hari'] = row.amt_hari or 0
form = get_form(request, EditSchema)
form.set_appstruct(rowd)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
return dict(form=form)
save_request(request, dict(controls), row)
return route_list(request)
elif SESS_EDIT_FAILED in request.session:
return session_failed(SESS_EDIT_FAILED)
return dict(form=form)
##########
# Delete #
##########
@view_config(route_name='eis-carousel-delete', renderer='templates/eis-carousel/delete.pt',
permission='eis-carousel-delete')
def view_delete(self):
request = self.req
q = query_id(request)
row = q.first()
if not row:
return self.id_not_found(request)
form = Form(colander.Schema(), buttons=('hapus','batal'))
if request.POST:
if 'hapus' in request.POST:
msg = 'Carousel ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
except:
msg = 'Carousel ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
return route_list(request)
return dict(row=row,
form=form.render())
#######
# Add #
#######
def form_validator(form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(Eis).filter_by(id=uid)
row = q.first()
else:
row = None
def get_form(request, class_form, row=None):
schema = class_form(validator=form_validator)
schema = schema.bind()
schema.request = request
if row:
schema.deserialize(row)
return Form(schema, buttons=('simpan','batal'))
def session_failed(self, session_name):
#r = dict(form=self.session[session_name])
del self.session[session_name]
#return r
def save_request(request, values, row=None):
if 'id' in request.matchdict:
values['id'] = request.matchdict['id']
row = save(values, request.user, row)
request.session.flash('Carousel sudah disimpan.')
def save(values, user, row=None):
# print(">>", values)
# sys.exit()
if not row:
row = Eis()
row.created = datetime.now()
row.create_uid = user.id
else:
row.updated = datetime.now()
row.update_uid = user.id
row.from_dict(values)
row.from_dict(values['amount'])
row.status = 'status' in values and values['status'] and 1 or 0
row.aktif = 'aktif' in values and values['aktif'] and 1 or 0
EisDBSession.add(row)
EisDBSession.flush()
return row
def route_list(request):
return HTTPFound(location=request.route_url('eis-carousel'))
########
# Edit #
########
def query_id(request):
return EisDBSession.query(Eis).filter_by(id=request.matchdict['id'])
def id_not_found(request):
msg = 'Carousel ID %s Tidak Ditemukan.' % request.matchdict['id']
request.session.flash(msg, 'error')
return route_list(request)
import os
import uuid
#from ..tools import row2dict, xls_reader
from datetime import datetime
from sqlalchemy import not_, func
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
import colander
from deform import (
Form,
widget,
ValidationFailure,
)
from ..models import (
EisDBSession
)
from ..models.eis import (
Chart
)
from ..views import BaseView, ColumnDT, DataTables
SESS_ADD_FAILED = 'Tambah eis-chart gagal'
SESS_EDIT_FAILED = 'Edit eis-chart gagal'
@colander.deferred
def deferred_chart_type(node, kw):
values = kw.get('chart_types', [])
return widget.SelectWidget(values=values)
CHART_TYPES = (('line','Line'),
('bar','Bar'),
('pie', 'Pie'))
class AddSchema(colander.Schema):
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=18),
oid='kode')
nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128),
oid = 'nama')
label = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128))
chart_type = colander.SchemaNode(
colander.String(),
widget=deferred_chart_type
)
devider = colander.SchemaNode(
colander.Integer(),
default = 1000,
validator=colander.Range(min=1, max=1000000))
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class view_eis_chart(BaseView):
########
# List #
########
@view_config(route_name='eis-chart', renderer='templates/eis-chart/list.pt',
permission='read')
def view_list(self):
return dict(a={})
##########
# Action #
##########
@view_config(route_name='eis-chart-act', renderer='json',
permission='read')
def eis_chart_act(self):
ses = self.req.session
req = self.req
params = req.params
url_dict = req.matchdict
if url_dict['act']=='grid':
columns = []
columns.append(ColumnDT(Chart.id))
columns.append(ColumnDT(Chart.kode))
columns.append(ColumnDT(Chart.nama))
columns.append(ColumnDT(Chart.chart_type))
columns.append(ColumnDT(Chart.devider))
query = EisDBSession.query().select_from(Chart)
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
elif url_dict['act']=='hon':
term = 'term' in params and params['term'] or ''
prefix = 'prefix' in params and params['prefix'] or ''
chart_type = 'chart_type' in params and params['chart_type'] or ''
qry = EisDBSession.query(Chart).\
filter(Chart.status == 1,
Chart.chart_type==chart_type,
Chart.nama.ilike('%%%s%%' % term)).\
order_by(Chart.nama)
r = []
for row in qry.all():
d = dict(
id = row.id,
value = row.nama,
kode = row.kode,
)
r.append(d)
return r
#######
# Add #
#######
def form_validator(self, form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(Chart).filter_by(id=uid)
row = q.first()
else:
row = None
def get_form(self, class_form, row=None):
schema = class_form(validator=self.form_validator)
schema = schema.bind(chart_types=CHART_TYPES)
schema.request = self.req
if row:
schema.deserialize(row)
return Form(schema, buttons=('simpan','batal'))
def save(self, values, user, row=None):
if not row:
row = Chart()
row.created = datetime.now()
row.create_uid = user.id
row.from_dict(values)
row.updated = datetime.now()
row.update_uid = user.id
row.aktif = 'aktif' in values and values['aktif'] and 1 or 0
EisDBSession.add(row)
EisDBSession.flush()
return row
def save_request(self, values, row=None):
if 'id' in self.req.matchdict:
values['id'] = self.req.matchdict['id']
row = self.save(values, self.req.user, row)
self.req.session.flash('Chart sudah disimpan.')
def route_list(self):
return HTTPFound(location=self.req.route_url('eis-chart'))
def session_failed(self, session_name):
r = dict(form=self.ses[session_name])
del self.ses[session_name]
return r
@view_config(route_name='eis-chart-add', renderer='templates/eis-chart/add.pt',
permission='add')
def view_eis_chart_add(self):
req = self.req
ses = self.ses
form = self.get_form(AddSchema)
if req.POST:
if 'simpan' in req.POST:
controls = req.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
req.session[SESS_ADD_FAILED] = e.render()
return HTTPFound(location=req.route_url('eis-chart-add'))
self.save_request(dict(controls))
return self.route_list()
elif SESS_ADD_FAILED in req.session:
return self.session_failed(SESS_ADD_FAILED)
return dict(form=form.render())
########
# Edit #
########
def query_id(self):
return EisDBSession.query(Chart).filter_by(id=self.req.matchdict['id'])
def id_not_found(self):
msg = 'Chart ID %s Tidak Ditemukan.' % self.req.matchdict['id']
request.session.flash(msg, 'error')
return route_list()
@view_config(route_name='eis-chart-edit', renderer='templates/eis-chart/add.pt',
permission='edit')
def view_eis_chart_edit(self):
request = self.req
row = self.query_id().first()
if not row:
return id_not_found(request)
form = self.get_form(EditSchema)
#form.set_appstruct(rowd)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
request.session[SESS_EDIT_FAILED] = e.render()
return HTTPFound(location=request.route_url('eis-chart-edit',
id=row.id))
self.save_request(dict(controls), row)
return self.route_list()
elif SESS_EDIT_FAILED in request.session:
return self.session_failed(SESS_EDIT_FAILED)
values = row.to_dict()
return dict(form=form.render(appstruct=values))
##########
# Delete #
##########
@view_config(route_name='eis-chart-delete', renderer='templates/eis-chart/delete.pt',
permission='delete')
def view_eis_chart_delete(self):
request = self.req
q = self.query_id()
row = q.first()
if not row:
return self.id_not_found(request)
form = Form(colander.Schema(), buttons=('hapus','batal'))
if request.POST:
if 'hapus' in request.POST:
msg = 'Chart ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
except:
msg = 'Chart ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
return self.route_list()
return dict(row=row,
form=form.render())
import os
import uuid
#from osipkd.tools import row2dict, xls_reader
from datetime import datetime
from sqlalchemy import not_, func
from pyramid.view import (view_config,)
from pyramid.httpexceptions import ( HTTPFound, )
import colander
from deform import (Form, widget, ValidationFailure, )
from ..models import EisDBSession
#from ..models.eis import ARPaymentDetail as AR
from ..views import BaseView, ColumnDT, DataTables
SESS_ADD_FAILED = 'Tambah eis-item gagal'
SESS_EDIT_FAILED = 'Edit eis-item gagal'
def deferred_sumber_id(node, kw):
values = kw.get('sumber_id', [])
return widget.SelectWidget(values=values)
SUMBER_ID = (
(1, 'Manual'),
(2, 'PBB'),
(3, 'BPHTB'),
(4, 'PADL'),
)
class AddSchema(colander.Schema):
kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=18),
oid='kode')
nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=128),
oid = 'nama')
ref_kode = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
)
ref_nama = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=64),
)
tanggal = colander.SchemaNode(
colander.Date(),
)
amount = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
default = 0
)
kecamatan_kd = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
missing=colander.drop)
kecamatan_nm = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=64),
missing=colander.drop)
kelurahan_kd = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
missing=colander.drop
)
kelurahan_nm = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=64),
missing=colander.drop)
is_kota = colander.SchemaNode(
colander.Boolean(),
) # deferred_source_type)
status = colander.SchemaNode(
colander.Boolean(),
) # deferred_source_type)
sumber_id = colander.SchemaNode(
colander.String(),
validator=colander.Length(max=32),
widget=widget.SelectWidget(values=SUMBER_ID)) # deferred_source_type)
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget(readonly=True))
class view_eis_item(BaseView):
########
# List #
########
@view_config(route_name='eis-item', renderer='templates/eis-item/list.pt',
permission='read')
def view_list(self):
ses = self.req.session
req = self.req
params = req.params
url_dict = req.matchdict
return dict(project='EIS')
##########
# Action #
##########
@view_config(route_name='eis-item-act', renderer='json',
permission='read')
def eis_item_act(self):
ses = self.req.session
req = self.req
params = req.params
url_dict = req.matchdict
if url_dict['act']=='grid':
columns = []
columns.append(ColumnDT('id'))
columns.append(ColumnDT('kode'))
columns.append(ColumnDT('nama'))
columns.append(ColumnDT('ref_kode'))
columns.append(ColumnDT('ref_nama'))
columns.append(ColumnDT('tanggal', ))
columns.append(ColumnDT('amount', ))
query = EisDBSession.query().select_from(AR)
rowTable = DataTables(req.GET, query, columns)
return rowTable.output_result()
#######
# Add #
#######
def form_validator(self, form, value):
if 'id' in form.request.matchdict:
uid = form.request.matchdict['id']
q = EisDBSession.query(AR).filter_by(id=uid)
row = q.first()
else:
row = None
def get_form(self, class_form, row=None):
schema = class_form(validator=self.form_validator)
schema = schema.bind(sumber_id=SUMBER_ID)
schema.request = self.req
if row:
schema.deserialize(row)
return Form(schema, buttons=('simpan','batal'))
def save(self, values, user, row=None):
if not row:
row = AR()
row.created = datetime.now()
row.create_uid = user.id
row.from_dict(values)
row.updated = datetime.now()
row.update_uid = user.id
row.disable = 'disable' in values and values['disable'] and 1 or 0
row.is_kota = 'is_kota' in values and values['is_kota'] and 1 or 0
EisDBSession.add(row)
EisDBSession.flush()
return row
def save_request(self, values, row=None):
if 'id' in self.req.matchdict:
values['id'] = self.req.matchdict['id']
row = self.save(values, self.req.user, row)
self.req.session.flash('AR sudah disimpan.')
def route_list(self):
return HTTPFound(location=self.req.route_url('eis-item') )
def session_failed(self, session_name):
#r = dict(form=self.session[session_name])
del self.session[session_name]
#return r
@view_config(route_name='eis-item-add', renderer='templates/eis-item/add.pt',
permission='add')
def view_eis_item_add(self):
req = self.req
ses = self.session
form = self.get_form(AddSchema)
if req.POST:
if 'simpan' in req.POST:
controls = req.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
#req.session[SESS_ADD_FAILED] = e.render()
#form.set_appstruct(rowd)
return dict(form=form)
#return HTTPFound(location=req.route_url('eis-item-add'))
self.save_request(dict(controls))
return self.route_list()
elif SESS_ADD_FAILED in req.session:
return dict(form=form)
#return self.session_failed(SESS_ADD_FAILED)
return dict(form=form)
########
# Edit #
########
def query_id(self):
return EisDBSession.query(AR).filter_by(id=self.req.matchdict['id'])
def id_not_found(self):
msg = 'AR ID %s Tidak Ditemukan.' % self.req.matchdict['id']
request.session.flash(msg, 'error')
return route_list()
@view_config(route_name='eis-item-edit', renderer='templates/eis-item/add.pt',
permission='edit')
def view_eis_item_edit(self):
request = self.req
row = self.query_id().first()
if not row:
return id_not_found(request)
#values = row.to_dict()
rowd={}
rowd['id'] = row.id
rowd['kode'] = row.kode
rowd['nama'] = row.nama
rowd['ref_kode'] = row.ref_kode
rowd['ref_nama'] = row.ref_nama
rowd['tanggal'] = row.tanggal
rowd['amount'] = row.amount
rowd['kecamatan_kd'] = row.kecamatan_kd
rowd['kecamatan_nm'] = row.kecamatan_nm
rowd['kelurahan_kd'] = row.kelurahan_kd
rowd['kelurahan_nm'] = row.kelurahan_nm
rowd['is_kota'] = row.is_kota
rowd['status'] = row.status
rowd['sumber_id'] = row.sumber_id
form = self.get_form(EditSchema)
form.set_appstruct(rowd)
if request.POST:
if 'simpan' in request.POST:
controls = request.POST.items()
try:
controls = form.validate(controls)
except ValidationFailure as e:
return dict(form=form)
#request.session[SESS_EDIT_FAILED] = e.render()
#return HTTPFound(location=request.route_url('eis-item-edit',
# id=row.id))
self.save_request(dict(controls), row)
return self.route_list()
elif SESS_EDIT_FAILED in request.session:
return self.session_failed(SESS_EDIT_FAILED)
return dict(form=form)
##########
# Delete #
##########
@view_config(route_name='eis-item-delete', renderer='templates/eis-item/delete.pt',
permission='delete')
def view_eis_item_delete(self):
request = self.req
q = self.query_id()
row = q.first()
if not row:
return self.id_not_found(request)
form = Form(colander.Schema(), buttons=('hapus','batal'))
if request.POST:
if 'hapus' in request.POST:
msg = 'AR ID %d %s sudah dihapus.' % (row.id, row.nama)
try:
q.delete()
EisDBSession.flush()
except:
msg = 'AR ID %d %s tidak dapat dihapus.' % (row.id, row.nama)
request.session.flash(msg)
return self.route_list()
return dict(row=row,
form=form.render())
import json
from pyramid.view import (
view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
)
from ..views import BaseView
from ..models import EisDBSession
from ..models import Harian, Chart, ChartItem, Slide
#from ..tools import row2dict
########
# APP Home #
########
class eis(BaseView):
def cek_value(self,value,devider,simbol):
if value<devider:
return "{0:,.0f}".format(value)
else:
return "{0:,.0f} {1}".format(value/devider,simbol)
@view_config(route_name='eis-sipkd-harian', renderer='templates/harian.pt',
permission='eis-sipkd-harian')
def view_app(self):
tahun = self.ses['tahun']
ar_datas = Harian.query().filter(Harian.status==1).\
filter(Harian.kode.like('4%')).\
order_by(Harian.kode) or {}
ap_datas = Harian.query().filter(Harian.status==1).\
filter(Harian.kode.like('5%')).\
order_by(Harian.kode) or {}
return dict(project='EIS', ar_datas=ar_datas, ap_datas=ap_datas)
@view_config(route_name='eis-sipkd-harian-act', renderer='json')
def view_app_act(self):
tahun = self.ses['tahun']
req = self.req
params = req.params
id = 'id' in params and params['id'] or 0
json_data = {}
json_data['success']=False
if req.matchdict['act']=='grid':
rows = EisDBSession.query(Harian).filter(Harian.id==id)
if not rows:
return json_data
for row in rows:
row_dicted = row.to_dict()
amt_hari = float(row_dicted['amt_hari'])
amt_minggu = float(row_dicted['amt_minggu']) #+amt_hari
amt_bulan = float(row_dicted['amt_bulan']) #+amt_hari
amt_tahun = float(row_dicted['amt_tahun']) #+amt_bulan
json_data['success']= True
json_data['tahun'] = self.cek_value(amt_tahun,1, '')
json_data['bulan'] = self.cek_value(amt_bulan,1, '')
json_data['minggu'] = self.cek_value(amt_minggu,1, '')
json_data['hari'] = self.cek_value(amt_hari,1, '')
return json_data
from sqlalchemy import func
from ..tools import date_from_str #, row2dict
from pyramid.view import (
view_config,
)
from ..models import EisDBSession, EisSipkdArPayment, EisSipkdApPayment, EisSipkdPbPayment
from ..views import BaseView
from datetime import datetime
########
# APP Home #
########
class Realisasi(BaseView):
def cek_value(self,value,devider,simbol):
if value<devider:
return "{0:,.0f}".format(value)
else:
return "{0:,.0f} {1}".format(value/devider,simbol)
@view_config(route_name='eis-sipkd-realisasi', renderer='templates/realisasi.pt',
permission='eis-sipkd-realisasi')
def view_app(self):
tahun = self.ses['tahun']
params = self.params
kode = 'kode' in params and params['kode'] or ''
ar_qry = EisDBSession.query(EisSipkdArPayment.rekening_kd,
EisSipkdArPayment.rekening_nm,
EisSipkdArPayment.level_id,
func.sum(EisSipkdArPayment.jumlah).label('jumlah')).\
group_by(EisSipkdArPayment.rekening_kd,
EisSipkdArPayment.rekening_nm,
EisSipkdArPayment.level_id,
).\
filter(EisSipkdArPayment.tanggal.between(
date_from_str('01-01-'+tahun), datetime.now())
).\
order_by(EisSipkdArPayment.rekening_kd)
ap_qry = EisDBSession.query(EisSipkdApPayment.rekening_kd,
EisSipkdApPayment.rekening_nm,
EisSipkdApPayment.level_id,
func.sum(EisSipkdApPayment.jumlah).label('jumlah')).\
group_by(EisSipkdApPayment.rekening_kd,
EisSipkdApPayment.rekening_nm,
EisSipkdApPayment.level_id).\
filter(EisSipkdApPayment.tanggal.between(
date_from_str('01-01-'+tahun), datetime.now())
).\
order_by(EisSipkdApPayment.rekening_kd)
pb_qry = EisDBSession.query(EisSipkdPbPayment.rekening_kd,
EisSipkdPbPayment.rekening_nm,
EisSipkdPbPayment.level_id,
func.sum(EisSipkdPbPayment.jumlah).label('jumlah')).\
group_by(EisSipkdPbPayment.rekening_kd,
EisSipkdPbPayment.rekening_nm,
EisSipkdPbPayment.level_id).\
filter(EisSipkdPbPayment.tanggal.between(
date_from_str('01-01-'+tahun), datetime.now())
).\
order_by(EisSipkdPbPayment.rekening_kd)
level_id = 2
if not kode:
ar_qry = ar_qry.filter(EisSipkdArPayment.level_id <= level_id,
EisSipkdArPayment.level_id > level_id-2,)
ap_qry = ap_qry.filter(EisSipkdApPayment.level_id <= level_id,
EisSipkdApPayment.level_id > level_id-2,)
pb_qry = pb_qry.filter(EisSipkdPbPayment.level_id <= level_id,
EisSipkdPbPayment.level_id > level_id-2,)
title = "RINGKASAN REALISASI APBD"
else:
level_id = kode.count('.')+2
ar_qry = ar_qry.filter(EisSipkdArPayment.rekening_kd.like(kode+'%'),
EisSipkdArPayment.level_id <= level_id,
EisSipkdArPayment.level_id > level_id-1,
)
ap_qry = ap_qry.filter(EisSipkdApPayment.rekening_kd.like(kode+'%'),
EisSipkdApPayment.level_id <= level_id,
EisSipkdApPayment.level_id > level_id-1,
)
pb_qry = pb_qry.filter(EisSipkdPbPayment.rekening_kd.like(kode+'%'),
EisSipkdPbPayment.level_id <= level_id,
EisSipkdPbPayment.level_id > level_id-1,
)
title = 'nama' in params and params['nama'] or ''
jml_ar = jml_ap = 0
ar_rows = row2dict(ar_qry.all())
ap_rows = row2dict(ap_qry.all())
pb_rows = row2dict(pb_qry.all())
for row in ar_rows:
if row['level_id'] == level_id:
jml_ar += row['jumlah']
for row in ap_rows:
if row['level_id'] == level_id:
jml_ap += row['jumlah']
return dict(project='EIS', ar_rows=ar_rows, ap_rows = ap_rows,
sd_row=jml_ar-jml_ap, level_id=level_id, pb_rows=pb_rows,
title=title, kode=kode)
@view_config(route_name='eis-sipkd-realisasi-act', renderer='json')
def view_app_act(self):
tahun = self.ses['tahun']
req = self.req
params = req.params
id = 'id' in params and params['id'] or 0
json_data = {}
json_data['success']=False
if req.matchdict['act']=='grid':
rows = EisDBSession.query(Eis).filter(Eis.id==id)
if not rows:
return json_data
for row in rows:
row_dicted = row.to_dict()
amt_hari = float(row_dicted['amt_hari'])
amt_minggu = float(row_dicted['amt_minggu']) #+amt_hari
amt_bulan = float(row_dicted['amt_bulan']) #+amt_hari
amt_tahun = float(row_dicted['amt_tahun']) #+amt_bulan
json_data['success']= True
json_data['tahun'] = self.cek_value(amt_tahun,1, '')
json_data['bulan'] = self.cek_value(amt_bulan,1, '')
json_data['minggu'] = self.cek_value(amt_minggu,1, '')
json_data['hari'] = self.cek_value(amt_hari,1, '')
return json_data
#######################################################################
# GRAFIK LINE/BAR
#######################################################################
elif req.matchdict['act']=='linebar':
rows = EisDBSession.query(Chart).filter(Chart.id==id).first()
if not rows:
return json_data
json_data['label'] = rows.label.split(',')
rows = EisDBSession.query(ChartItem).filter(ChartItem.chart_id==id).\
order_by(ChartItem.id)
for row in rows:
json_data[row.source_type] = [row.value_1/row.chart.devider,row.value_2/row.chart.devider,row.value_3/row.chart.devider,
row.value_4/row.chart.devider,row.value_5/row.chart.devider,row.value_6/row.chart.devider,
row.value_7/row.chart.devider,row.value_8/row.chart.devider,row.value_9/row.chart.devider,
row.value10/row.chart.devider,row.value11/row.chart.devider,row.value12/row.chart.devider,]
json_data['success']= True
return json_data
#######################################################################
# GRAFIK LINGKARAN
#######################################################################
elif req.matchdict['act']=='pie':
rows = EisDBSession.query(Chart).filter(Chart.id==id).first()
if not rows:
return json_data
json_data['label'] = rows.label.split(',')
rows = EisDBSession.query(ChartItem).filter(ChartItem.chart_id==id).\
order_by(ChartItem.id)
json_data['rows'] = {}
for row in rows:
anama = {}
anama['nama'] = row.nama
anama['color'] = row.color
anama ['highlight'] = row.highlight
anama ['value'] = row.value_1/row.chart.devider
json_data['rows'][row.nama] =anama
json_data['success']= True
return json_data
def row2dict(rows):
return [dict(zip(row.keys(), list(row))) for row in rows]
<html metal:use-macro="load: base-eis.pt">
<div metal:fill-slot="scripts">
<div class="col-md-12 judul">
<div class="col-md-2 judul">
<img class="" src="/static/img/logo.png" style="height:80px; width:80px; padding-bottom:10px;">
</div>
<div class="col-md-8 sub-judul">
EKSEKUTIF SUMMARY APBD<br>
TAHUN ${request.session['tahun']}
</div>
</div>
<div class="col-md-12">
<div class="col-md-1"><b>&nbsp;</b></div>
<div class="col-md-10 sub-judul bg-primary">
<div class="col-md-12">
${title}
</div>
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div class="col-md-12">
<div class="col-md-1"><b>&nbsp;</b></div>
<div class="col-md-7">
<div class="col-md-12 table-title bg-success"><b>URAIAN</b></div>
</div>
<div class="col-md-3 table-title bg-success " style="text-align:right;"><right><b>JUMLAH</b></right></div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div class="col-md-12" tal:repeat="row ar_rows">
<div tal:condition="float(row.level_id/2)!=float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.kode}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-info">
<a href="/eis/sipkd/anggaran?kode=${row.kode}&nama=${row.nama}">${row.nama}</a>
</div>
</div>
<div class="col-md-3 table-body-right bg-info">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div tal:condition="float(row.level_id/2)==float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.kode}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-warning"><a href="/eis/sipkd/anggaran?kode=${row.kode}&nama=${row.nama}">${row.nama}</a></div>
</div>
<div class="col-md-3 table-body-right bg-warning">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
</div>
<div class="col-md-12" tal:repeat="row ap_rows">
<div tal:condition="float(row.level_id/2)!=float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.kode}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-info">
<a href="/eis/sipkd/anggaran?kode=${row.kode}&nama=${row.nama}">${row.nama}</a>
</div>
</div>
<div class="col-md-3 table-body-right bg-info">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div tal:condition="float(row.level_id/2)==float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.kode}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-warning"><a href="/eis/sipkd/anggaran?kode=${row.kode}&nama=${row.nama}">${row.nama}</a></div>
</div>
<div class="col-md-3 table-body-right bg-warning">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
</div>
<div class="col-md-12" tal:condition="level_id<3 and not kode">
<div class="col-md-1">&nbsp;</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-danger" >SURPLUS/DEFISIT</div>
</div>
<div class="col-md-3 table-body-right bg-danger">
${sd_row}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div class="col-md-12" tal:repeat="row pb_rows">
<div tal:condition="float(row.level_id/2)!=float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.kode}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-info">
<a href="/eis/sipkd/anggaran?kode=${row.kode}&nama=${row.nama}">${row.nama}</a>
</div>
</div>
<div class="col-md-3 table-body-right bg-info">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div tal:condition="float(row.level_id/2)==float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.kode}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-warning"><a href="/eis/sipkd/anggaran?kode=${row.kode}&nama=${row.nama}">${row.nama}</a></div>
</div>
<div class="col-md-3 table-body-right bg-warning">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
</div>
</div>
</html>
<html metal:use-macro="load: base.pt">
<div metal:fill-slot="left-menu">
<link href="/static/css/navbar-fixed-left.css" rel="stylesheet">
<div class="nav-side-menu">
<div class="brand">Eksekutif Summary</div>
<i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i>
<div class="menu-list">
<ul id="menu-content" class="menu-content collapse out">
<!--li>
<a href="#">
<i class="fa fa-dashboard fa-lg"></i> Executive Summary
</a>
</li-->
<li data-toggle="collapse" data-target="#tabular" class="collapsed active">
<a href="#"><i class="fa fa-gift fa-lg"></i> Tabular <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="tabular">
<li tal:repeat="dat tab_datas"><a href="#" onclick="javascript:hide_other();$('#grid-${dat.id}').show();">${dat.nama}</a></li>
</ul>
<li data-toggle="collapse" data-target="#line" class="collapsed">
<a href="#"><i class="fa fa-globe fa-lg"></i> Line Graph <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="line">
<li tal:repeat="dat line_datas"><a href="#" onclick="javascript:hide_other();$('#chart-line-${dat.id}').show();">${dat.nama}</a></li>
</ul>
<li data-toggle="collapse" data-target="#bar" class="collapsed">
<a href="#"><i class="fa fa-car fa-lg"></i> Bar Graph <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="bar">
<li tal:repeat="dat bar_datas"><a href="#" onclick="javascript:hide_other();$('#chart-bar-${dat.id}').show();">${dat.nama}</a></li>
</ul>
<li data-toggle="collapse" data-target="#pie" class="collapsed">
<a href="#"><i class="fa fa-car fa-lg"></i> Pie Graph <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="pie">
<li tal:repeat="dat pie_datas"><a href="#" onclick="javascript:hide_other();$('#chart-pie-${dat.id}').show();">${dat.nama}</a></li>
</ul>
</ul>
</div>
</div>
<div metal:fill-slot="content">
<style>
body {
/*background-image: url("static/img/bg1.jpg");*/
}
.judul {
margin-top: 0px;
padding-top: 5px;
text-align:center;
color: #777;
background-color:rgb(205,205,205);
}
.sub-judul {
text-align:center;
margin-top: 1px;
padding-top:5px;
padding-botom:5px;
font-size: 30px;
font-weight: normal;
}
.data {
margin-top: 0px;
color: #777;
font-size: 0px;
font-weight: normal;
background-color:rgb(255,255,255);
}
.table-title {
margin-top: 5px;
padding-top:5px;
padding-botom:5px;
font-size: 20px;
font-weight: normal;
}
.table-body {
margin-top: 5px;
padding-top:5px;
padding-botom:5px;
font-size: 20px;
font-weight: normal;
}
.table-body-right {
margin-top: 5px;
font-size: 20px;
padding-top:5px;
padding-botom:5px;
font-weight: normal;
text-align:right;
}
</style>
</div>
</html>
\ No newline at end of file
......@@ -5,25 +5,23 @@
<script type="text/javascript" src="/static/chart/legend/legend.js"> </script>
</div>
<div metal:fill-slot="company">
<a class="navbar-brand" href="/eis">${request.company}</a>
</div>
<div metal:fill-slot="navs">
<ul class="nav navbar-nav">
<li><a href="/eis" class="navbar-brand"><strong>${request.company}</strong></a></li>
<!-- Admin Menu -->
<li><a href="/eis/sipkd" class="navbar-brand"><strong>${request.company}</strong></a></li>
<!-- Menu Master-->
<li><a href="/eis/sipkd/anggaran">Anggaran</a>
<li><a href="/eis/sipkd/realisasi">Realisasi</a>
<li><a href="/eis/sipkd/grafik">Grafik</a>
<li><a href="/eis/sipkd/harian">Harian</a>
<li class="dropdown" tal:condition="request.user.user_name=='admin'">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Konfigurasi <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/eis/carousel">Carousel</a></li>
<li><a href="/eis/carousel">Slider</a></li>
<li><a href="/eis/chart">Chart</a></li>
<!-- <li><a href="/eis-chart-item">Chart Item</a></li> -->
<li><a href="/eis/slide">Slide</a></li>
</ul>
</li>
</ul>
</div>
</html>
<html metal:use-macro="load: base-eis.pt">
<div metal:fill-slot="left-menu">
<link href="/static/css/navbar-fixed-left.css" rel="stylesheet">
<div class="nav-side-menu">
<div class="brand">Eksekutif Summary</div>
<i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i>
<div class="menu-list">
<ul id="menu-content" class="menu-content collapse out">
<li data-toggle="collapse" data-target="#target" class="collapsed active">
<a href="#"><i class="fa fa-gift fa-lg"></i> Target <span class="arrow"></span></a>
<ul class="sub-menu collapse" id="target">
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan APBD</a></li>
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan Pendapatan</a></li>
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan Belanja</a></li>
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan Pajak</a></li>
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan Retribusi</a></li>
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan APBD</a></li>
</ul>
</li>
<li data-toggle="collapse" data-target="#realisasi" class="collapsed active">
<a href="#"><i class="fa fa-gift fa-lg"></i> Realisasi <span class="arrow"></span></a>
<ul class="sub-menu collapse" id="realisasi">
<li><a href="#" onclick="javascript:hide_other();$('#realisasi-ringkas').show();">Ringkasan</a></li>
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan Pendapatan</a></li>
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan Belanja</a></li>
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan Pajak</a></li>
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan Retribusi</a></li>
<li><a href="#" onclick="javascript:hide_other();$('#target-ringkas').show();">Ringkasan APBD</a></li> </ul>
</li>
</ul>
</div>
</div>
</div>
<div metal:fill-slot="scripts">
<script>
/*$(function(){
......
<html metal:use-macro="load: base.pt">
<div metal:fill-slot="left-menu">
<link href="/static/css/navbar-fixed-left.css" rel="stylesheet">
<style>
body {
/*background-image: url("static/img/bg1.jpg");*/
}
.judul {
margin-top: 25px;
color: #777;
font-size: 30px;
font-weight: normal;
padding-bottom:10px;
padding-top:10px;
background-color:rgb(205,205,205);
text-align:center;
margin-left:5px;
margin-right:5px;
}
@media (min-width: 992px) {
.judul {
margin-left:320px;
}
}
.subjudul {
margin-top: 0px;
margin-bottom: 20px;
font-size: 30px;
text-align:center;
color: #777;
padding-left:0px;
}
@media (min-width: 992px) {
.subjudul {
margin-top: 100px;
font-size: 30px;
padding-left:320px;
text-align:center;
}
}
.data {
margin-top: 25px;
font-weight: normal;
text-align:center;
margin-left:5px;
margin-right:5px;
}
@media (min-width: 992px) {
.data {
margin-left:320px;
}
}
.alert {
border-radius: 0px !important;
}
.alert-judul {
color: #fff;
background-color: #6497C9;
border-color: #5580AA;
}
.alert-judul h3 {
margin-top: 4px !important;
margin-bottom: 4px !important;
}
</style>
<div class="nav-side-menu" style="display:block;">
<div class="brand">Eksekutif Summary</div>
<!-- <i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i> -->
<div class="menu-list">
<ul id="menu-content" class="menu-content collapse out">
<li data-toggle="collapse" data-target="#pendapatan" class="collapsed active">
<a href="#"><i class="fa fa-gift fa-lg"></i> Pendapatan <span class="arrow"></span></a>
<ul class="sub-menu collapse" id="pendapatan">
<li tal:repeat="row ar_datas">
<a href="#" onclick="javascript:hide_other();$('#grid-${row.id}').show();">${row.nama}</a>
</li>
</ul>
</li>
<li data-toggle="collapse" data-target="#belanja" class="collapsed active">
<a href="#"><i class="fa fa-gift fa-lg"></i> Belanja <span class="arrow"></span></a>
<ul class="sub-menu collapse" id="belanja">
<li tal:repeat="row ap_datas">
<a href="#">${row.nama}</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row judul">
<div class="col-md-2">
<img class="" src="/static/img/logo.png" style="height:80px; width:80px;padding-bottom:5px;">
</div>
<div class="col-md-10">
EKSEKUTIF SUMMARY PAJAK DAERAH
<h4>Tahun ${request.session['tahun']}</h4>
</div>
</div>
</div>
<div metal:fill-slot="content">
<div class="data" style="display:none;" tal:repeat="dat ar_datas" id="grid-${dat.id}">
<!--TITLE-->
<div class="row">
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row"> <!--hari minggu-->
<div class="col-md-6">
<div class="alert alert-success">
<h4>&nbsp;</h4>
<h4><u>Hari ini</u></h4>
<h2>Rp. <span id="hari_${dat.id}">${dat.amt_hari}</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
<div class="col-md-6">
<div class="alert alert-info">
<h4>&nbsp;</h4>
<h4><u>Minggu ini</u></h4>
<h2>Rp. <span id="minggu_${dat.id}">${dat.amt_minggu}</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
</div>
<p>
<div class="row"> <!--bulan tahun-->
<div class="col-md-6">
<div class="alert alert-warning">
<h4>&nbsp;</h4>
<h4><u>Bulan ini</u></h4>
<h2>Rp. <span id="bulan_${dat.id}">${dat.amt_bulan}</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
<div class="col-md-6">
<div class="alert alert-danger">
<h4>&nbsp;</h4>
<h4><u>Tahun ini</u></h4>
<h2>Rp. <span id="tahun_${dat.id}">${dat.amt_tahun}</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
</div>
</div>
</div>
<div metal:fill-slot="scripts">
<script>
function hide_other(){
$('.data').hide();
};
var bar_chart_options = {
responsive:true
};
</script>
</div>
</html>
<html metal:use-macro="load: base.pt">
<div metal:fill-slot="left-menu">
<link href="/static/css/navbar-fixed-left.css" rel="stylesheet">
<div class="nav-side-menu">
<div class="brand">Eksekutif Summary</div>
<i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i>
<div class="menu-list">
<ul id="menu-content" class="menu-content collapse out">
<!--li>
<a href="#">
<i class="fa fa-dashboard fa-lg"></i> Executive Summary
</a>
</li-->
<li data-toggle="collapse" data-target="#pendapatan" class="collapsed active">
<a href="#"><i class="fa fa-gift fa-lg"></i> Pendatan <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="pendapatan">
<li tal:repeat="dat ar_datas"><a href="#" onclick="javascript:hide_other();$('#grid-${dat.id}').show();">${dat.nama}</a></li>
</ul>
<li data-toggle="collapse" data-target="#belanja" class="collapsed">
<a href="#"><i class="fa fa-globe fa-lg"></i> Belanja <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="belanja">
<li tal:repeat="dat ap_datas"><a href="#" onclick="javascript:hide_other();$('#grid-${dat.id}').show();">${dat.nama}</a></li>
</ul>
</ul>
</div>
</div>
</div>
<div metal:fill-slot="scripts">
<script>
function formatNumber(num) {
return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")
};
function hide_other(){
$('.data').hide();
};
var bar_chart_options = {
responsive:true
};
</script>
<style>
body {
/*background-image: url("static/img/bg1.jpg");*/
}
.judul {
margin-top: 25px;
color: #777;
font-size: 30px;
font-weight: normal;
padding-bottom:10px;
padding-top:10px;
background-color:rgb(205,205,205);
text-align:center;
margin-left:5px;
margin-right:5px;
}
@media (min-width: 992px) {
.judul {
margin-left:320px;
}
}
.welcome {
margin-top: 0px;
margin-bottom: 20px;
font-size: 30px;
text-align:center;
background-color:rgb(205,205,205);
color: #777;
margin-left:5px;
margin-right:5px;
position: relative;
}
.welcome p{
position: absolute;
top: 75%;
left: 0;
right: 0;
}
@media (min-width: 992px) {
.welcome {
margin-left:320px;
}
}
.data {
margin-top: 25px;
font-weight: normal;
text-align:center;
margin-left:5px;
margin-right:5px;
}
@media (min-width: 992px) {
.data {
margin-left:320px;
}
}
.alert {
border-radius: 0px !important;
}
.alert-judul {
color: #fff;
background-color: #6497C9;
border-color: #5580AA;
}
.alert-judul h3 {
margin-top: 4px !important;
margin-bottom: 4px !important;
}
</style>
<div class="row judul">
<div class="col-md-2">
<img class="" src="/static/img/logo.png" style="height:80px; width:80px;padding-bottom:5px;">
</div>
<div class="col-md-10">
EKSEKUTIF SUMMARY KEUANGAN DAERAH<br>
TAHUN ${request.session['tahun']}
</div>
</div>
<div class="row data welcome">
SELAMAT DATANG
</div>
<div class="data" style="display:none;" tal:repeat="dat ar_datas" id="grid-${dat.id}">
<!--TITLE-->
<div class="row">
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row"> <!--hari minggu-->
<div class="col-md-6">
<div class="alert alert-success">
<h4>&nbsp;</h4>
<h4><u>Hari ini</u></h4>
<h2>Rp. <span id="hari_${dat.id}"></span></h2>
<h4>&nbsp;</h4>
</div>
</div>
<div class="col-md-6">
<div class="alert alert-info">
<h4>&nbsp;</h4>
<h4><u>Minggu ini</u></h4>
<h2>Rp. <span id="minggu_${dat.id}">${dat.amt_minggu}</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
</div>
<p>
<div class="row"> <!--bulan tahun-->
<div class="col-md-6">
<div class="alert alert-warning">
<h4>&nbsp;</h4>
<h4><u>Bulan ini</u></h4>
<h2>Rp. <span id="bulan_${dat.id}">${dat.amt_bulan}</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
<div class="col-md-6">
<div class="alert alert-danger">
<h4>&nbsp;</h4>
<h4><u>Tahun ini</u></h4>
<h2>Rp. <span id="tahun_${dat.id}">${dat.amt_tahun}</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$("#hari_${dat.id}").html(formatNumber(${dat.amt_hari}));
$("#minggu_${dat.id}").html(formatNumber(${dat.amt_minggu}));
$("#bulan_${dat.id}").html(formatNumber(${dat.amt_bulan}));
$("#tahun_${dat.id}").html(formatNumber(${dat.amt_tahun}));
});
</script>
</div>
<div class="data" style="display:none;" tal:repeat="dat ap_datas" id="grid-${dat.id}">
<!--TITLE-->
<div class="row">
<div class="col-md-12">
<div class="alert alert-judul">
<h3>${dat.nama}</h3>
</div>
</div>
</div>
<div class="row"> <!--hari minggu-->
<div class="col-md-6">
<div class="alert alert-success">
<h4>&nbsp;</h4>
<h4><u>Hari ini</u></h4>
<h2>Rp. <span id="hari_${dat.id}"></span></h2>
<h4>&nbsp;</h4>
</div>
</div>
<div class="col-md-6">
<div class="alert alert-info">
<h4>&nbsp;</h4>
<h4><u>Minggu ini</u></h4>
<h2>Rp. <span id="minggu_${dat.id}">${dat.amt_minggu}</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
</div>
<p>
<div class="row"> <!--bulan tahun-->
<div class="col-md-6">
<div class="alert alert-warning">
<h4>&nbsp;</h4>
<h4><u>Bulan ini</u></h4>
<h2>Rp. <span id="bulan_${dat.id}">${dat.amt_bulan}</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
<div class="col-md-6">
<div class="alert alert-danger">
<h4>&nbsp;</h4>
<h4><u>Tahun ini</u></h4>
<h2>Rp. <span id="tahun_${dat.id}">${dat.amt_tahun}</span></h2>
<h4>&nbsp;</h4>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$("#hari_${dat.id}").html(formatNumber(${dat.amt_hari}));
$("#minggu_${dat.id}").html(formatNumber(${dat.amt_minggu}));
$("#bulan_${dat.id}").html(formatNumber(${dat.amt_bulan}));
$("#tahun_${dat.id}").html(formatNumber(${dat.amt_tahun}));
});
</script>
</div>
</div>
</html>
......@@ -63,13 +63,17 @@
<i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i>
<div class="menu-list">
<ul id="menu-content" class="menu-content collapse out">
<!--li>
<a href="#">
<i class="fa fa-dashboard fa-lg"></i> Executive Summary
</a>
</li-->
<li data-toggle="collapse" data-target="#target" class="collapsed active">
<a href="#"><i class="fa fa-gift fa-lg"></i> Target <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="tabular">
<li tal:repeat="dat tab_datas"><a href="#" onclick="javascript:hide_other();$('#grid-${dat.id}').show();">${dat.nama}</a>
</li>
</ul>
<li data-toggle="collapse" data-target="#tabular" class="collapsed active">
<a href="#"><i class="fa fa-gift fa-lg"></i> Tabular <span class="arrow"></span></a>
<a href="#"><i class="fa fa-gift fa-lg"></i> Target <span class="arrow"></span></a>
</li>
<ul class="sub-menu collapse" id="tabular">
<li tal:repeat="dat tab_datas"><a href="#" onclick="javascript:hide_other();$('#grid-${dat.id}').show();">${dat.nama}</a>
......
<html metal:use-macro="load: base-eis.pt">
<div metal:fill-slot="scripts">
<div class="col-md-12 judul">
<div class="col-md-2 judul">
<img class="" src="/static/img/logo.png" style="height:80px; width:80px; padding-bottom:10px;">
</div>
<div class="col-md-8 sub-judul">
EKSEKUTIF SUMMARY REALISASI APBD<br>
TAHUN ${request.session['tahun']}
</div>
</div>
<div class="col-md-12">
<div class="col-md-1"><b>&nbsp;</b></div>
<div class="col-md-10 sub-judul bg-primary">
<div class="col-md-12">
${title}
</div>
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div class="col-md-12">
<div class="col-md-1"><b>&nbsp;</b></div>
<div class="col-md-7">
<div class="col-md-12 table-title bg-success"><b>URAIAN</b></div>
</div>
<div class="col-md-3 table-title bg-success " style="text-align:right;"><right><b>JUMLAH</b></right></div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div class="col-md-12" tal:repeat="row ar_rows">
<div tal:condition="float(row.level_id/2)!=float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.rekening_kd}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-info">
<a href="/eis/sipkd/realisasi?kode=${row.rekening_kd}&nama=${row.rekening_nm}">${row.rekening_nm}</a>
</div>
</div>
<div class="col-md-3 table-body-right bg-info">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div tal:condition="float(row.level_id/2)==float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.rekening_kd}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-warning"><a href="/eis/sipkd/realisasi?kode=${row.rekening_kd}&nama=${row.rekening_nm}">${row.rekening_nm}</a></div>
</div>
<div class="col-md-3 table-body-right bg-warning">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
</div>
<div class="col-md-12" tal:repeat="row ap_rows">
<div tal:condition="float(row.level_id/2)!=float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.rekening_kd}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-info">
<a href="/eis/sipkd/realisasi?kode=${row.rekening_kd}&nama=${row.rekening_nm}">${row.rekening_nm}</a>
</div>
</div>
<div class="col-md-3 table-body-right bg-info">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div tal:condition="float(row.level_id/2)==float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.rekening_kd}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-warning"><a href="/eis/sipkd/realisasi?kode=${row.rekening_kd}&nama=${row.rekening_nm}">${row.rekening_nm}</a></div>
</div>
<div class="col-md-3 table-body-right bg-warning">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
</div>
<div class="col-md-12" tal:condition="level_id<3 and not kode">
<div class="col-md-1">&nbsp;</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-danger" >SURPLUS/DEFISIT</div>
</div>
<div class="col-md-3 table-body-right bg-danger">
${sd_row}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div class="col-md-12" tal:repeat="row pb_rows">
<div tal:condition="float(row.level_id/2)!=float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.rekening_kd}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-info">
<a href="/eis/sipkd/realisasi?kode=${row.rekening_kd}&nama=${row.rekening_nm}">${row.rekening_nm}</a>
</div>
</div>
<div class="col-md-3 table-body-right bg-info">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
<div tal:condition="float(row.level_id/2)==float(row.level_id//2)">
<div class="col-md-1">&nbsp;
<!-- <div class="table-body bg-info">${row.rekening_kd}</div> -->
</div>
<div class="col-md-7">
<div class="col-md-12 table-body bg-warning"><a href="/eis/sipkd/realisasi?kode=${row.rekening_kd}&nama=${row.rekening_nm}">${row.rekening_nm}</a></div>
</div>
<div class="col-md-3 table-body-right bg-warning">
${row.jumlah}
</div>
<div class="col-md-1"><b>&nbsp;</b></div>
</div>
</div>
</div>
</html>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!