pcpd.py 9.6 KB
from pyramid.view import (
    view_config,
    )
from ..views import BaseView
from ..models import *
from ..models.eis import Eis, Chart, ChartItem, Slide
from datatables import ColumnDT, DataTables
from sqlalchemy import func, and_, String
from sqlalchemy.sql.expression import cast
from ..models.payment import PaymentPBB, PaymentPAD, PaymentBPHTB, PaymentWEBR
class Views(BaseView):
    @view_config(route_name='eis-pcpd', renderer='templates/pcpd.pt',
                    permission='eis')
    def view_app(self):
        return{"module":"pad"}
        
    @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']
        if act =='grid':
            rows = DBSession.query(Eis).filter(Eis.id==id)
            if not rows:
                return json_data
        elif act=='pbb':
            qry = PaymentPBB.sum_daily()
            data = {r.tanggal:r.bayar-r.denda for r in qry}
            return dict(data=data)
            # return dict(project='EIS', datas=datas, tab_datas=tab_datas,
            #             line_datas=line_datas, bar_datas=bar_datas,
            #             pie_datas=pie_datas, )#, datas=Eis.sum_order_id('2014'))

    def view_pajak(self):
        return {"module": 'pajak'}

    def view_pbb(self):
        return {"module":'pbb'}
    
    def view_bphtb(self):
        return {"module": 'bphtb'}
    
    def view_pjdl(self):
        return {"module": 'pjdl'}

    def view_webr(self):
        return {"module": 'webr'}

# 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', renderer='templates/eis.pt',
#                  permission='eis')
#     def view_app(self):
#         tahun = self.ses['tahun']
#         datas = DBSession.query(Slide).filter(Slide.status==1).order_by(Slide.order_id) or {}
            
#         tab_datas = DBSession.query(Slide).filter(Slide.source_type=='grid').order_by(Slide.order_id) or {}
#         line_datas = DBSession.query(Slide).filter(Slide.source_type=='chart-line').order_by(Slide.order_id)or {}
#         bar_datas = DBSession.query(Slide).filter(Slide.source_type=='chart-bar').order_by(Slide.order_id)or {}
#         pie_datas = DBSession.query(Slide).filter(Slide.source_type=='chart-pie').order_by(Slide.order_id)or {}
            
#         return dict(project='EIS', datas=datas, tab_datas=tab_datas,
#                     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')
#     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
        
#         if req.matchdict['act']=='grid':
#             rows = DBSession.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 = DBSession.query(Chart).filter(Chart.id==id).first()
#             if not rows:
#                 return json_data
            
#             json_data['label'] = rows.label.split(',')
#             rows = DBSession.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 = DBSession.query(Chart).filter(Chart.id==id).first()
#             if not rows:
#                 return json_data
            
#             json_data['label'] = rows.label.split(',')
#             rows = DBSession.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


#         elif req.matchdict['act']=='dasboard':
#             # max_tahun = DBSession.query(func.max(Eis.tahun)).scalar()
#             max_tahun = ses['tahun']
#             subqx = DBSession.query(
#                     func.max(Eis.nama).label('nama'),
#                     func.sum(ChartItem.value_1+ChartItem.value_2+ChartItem.value_3+ChartItem.value_4+\
#                         ChartItem.value_5+ChartItem.value_6+ChartItem.value_7+ChartItem.value_8+ChartItem.value_9+\
#                         ChartItem.value10+ChartItem.value11+ChartItem.value12).label('target'),
#                     func.sum(Eis.amt_bulan).label('amt_bulan'),
#                     func.sum(Eis.amt_tahun).label('amt_tahun'),
#                     func.sum(
#                         (ChartItem.value_1+ChartItem.value_2+ChartItem.value_3+ChartItem.value_4+ChartItem.value_5+\
#                         ChartItem.value_6+ChartItem.value_7+ChartItem.value_8+ChartItem.value_9+ChartItem.value10+\
#                         ChartItem.value11+ChartItem.value12) - Eis.amt_tahun).label('sisa_target'),
#                     cast(func.round((func.sum(Eis.amt_tahun)/
#                      func.sum(ChartItem.value_1+ChartItem.value_2+ChartItem.value_3+ChartItem.value_4+\
#                         ChartItem.value_5+ChartItem.value_6+ChartItem.value_7+ChartItem.value_8+ChartItem.value_9+\
#                         ChartItem.value10+ChartItem.value11+ChartItem.value12))*100,2),String).label('persen')).\
#                     join(ChartItem, and_(func.trim(ChartItem.rekening_kd)==func.trim(Eis.kode),ChartItem.source_type=='target')).\
#                     join(Chart, and_(Chart.id == ChartItem.chart_id, Chart.chart_type == 'line')).\
#                     filter(Eis.tahun==max_tahun).\
#                     group_by(Eis.kode,Eis.nama,Eis.tahun).order_by(Eis.kode).subquery()

#             subq = DBSession.query(
#                     (Eis.nama).label('nama'),
#                     (ChartItem.value_1*12).label('target'),
#                     (Eis.amt_bulan).label('amt_bulan'),
#                     (Eis.amt_tahun).label('amt_tahun'),
#                     ((ChartItem.value_1*12) - Eis.amt_tahun).label('sisa_target'),
#                     cast(func.round(((Eis.amt_tahun)/
#                      (ChartItem.value_1*12))*100,2),String).label('persen')).\
#                     join(ChartItem, and_(func.trim(ChartItem.rekening_kd)==func.trim(Eis.kode),ChartItem.source_type=='target')).\
#                     join(Chart, and_(Chart.id == ChartItem.chart_id, Chart.chart_type == 'line')).\
#                     filter(Eis.tahun==max_tahun).\
#                     order_by(Eis.kode).subquery()

#             query = DBSession.query().select_from(subq)
#             columns = [
#               ColumnDT(subq.c.nama, mData="jenis_pajak"),
#               ColumnDT(subq.c.target, mData="target"),
#               ColumnDT(subq.c.amt_bulan, mData="realisasi_bulan_ini"),
#               ColumnDT(subq.c.amt_tahun, mData="realisasi_sampai_dengan"),
#               ColumnDT(subq.c.sisa_target, mData="sisa_target"),
#               ColumnDT(subq.c.persen, mData="persen"),
#             ]
#             rowTable = DataTables(req.GET, query, columns)
#             return rowTable.output_result()