pcpd.py 12.5 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",
               "title" : "Realisasi Pajak dan Retribusi Daerah"}
        
    def get_dummy_data(self):
        return {"today":1000,
                "trx":155,
                "ytd":10000,
                "trxYtd":1550,
                "pie": [("I", 100, '#16a75c'), ("II", 200, '#ffb900'), 
                        ("III", 300, '#133132'), ("IV", 200,'#123456'), 
                        ("V", 100,'#545355')],
                "daily": [("I", 100), ("II", 200), ("III", 300), ("IV", 200), ("V", 100), ("VI", 100),("VII",700)],
                "dailyTrx": [("I", 50), ("II", 25), ("III", 10), ("IV", 10), ("V", 50), ("VI", 34), ("VII", 35)],
                "dailyAcc": [("I", 100), ("II", 200), ("III", 300), ("IV", 200), ("V", 100), ("VI", 100), ("VII", 700)],
                "dailyAccTrx": [("I", 100), ("II", 200), ("III", 300), ("IV", 200), ("V", 100), ("VI", 100), ("VII", 700)],
                "weekly": [("1", 100), ("2", 200), ("3", 300), ("4", 200), ("5", 100), ("6", 100), ("7", 700)],
                "weeklyTrx": [("1", 100), ("2", 200), ("3", 300), ("4", 200), ("5", 100), ("6", 100), ("7", 700)],
                "weeklyAcc": [("1", 100), ("2", 200), ("3", 300), ("4", 200), ("5", 100), ("6", 100), ("7", 700)],
                "weeklyAccTrx": [("1", 100), ("2", 200), ("3", 300), ("4", 200), ("5", 100), ("6", 100), ("7", 700)],
                "monthly": [("JAN", 100), ("FEB", 200), ("MAR", 300), ("APR", 200), ("MAY", 100), ("JUN", 100), ("JUL", 700)],
                "monthlyTrx": [("JAN", 100), ("FEB", 200), ("MAR", 300), ("APR", 400), ("MAY", 500), ("JUN", 600), ("JUL", 700)],
                "monthlyAcc": [("JAN", 100), ("FEB", 200), ("MAR", 300), ("APR", 200), ("MAY", 100), ("JUN", 100), ("JUL", 700)],
                "monthtrAccTrx": [("JAN", 100), ("FEB", 200), ("MAR", 300), ("APR", 200), ("MAY", 100), ("JUN", 100), ("JUL", 700)],
                }

    def get_pbb_data(self):
        return self.get_dummy_data()
    
    @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':
            resp = self.get_pbb_data()
        else:
            resp = self.get_dummy_data()
        resp["time"]=datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        return resp
    def view_pajak(self):
        return {"module": 'pajak',
                "title": "Realisasi Pajak Daerah"}

    def view_pbb(self):
        return {"module": 'pbb',
                "title": "Realisasi Pajak Bumi dan Bangunan P2"}
    
    def view_bphtb(self):
        return {"module": 'bphtb',
                "title": "Realisasi BPHTB"}
    
    def view_hotel(self):
        return {"module": 'hotel',
                "title": "Realisasi Pajak Hotel"}

    def view_resto(self):
        return {"module": 'resto',
                "title": "Realisasi Pajak Restoran"} 
    def view_parkir(self):
        return {"module": 'parkir',
                "title": "Realisasi Pajak Parkir"}
    
    def view_hiburan(self):
        return {"module": 'hiburan',
                "title": "Realisasi Pajak Hiburan"}
    def view_ppju(self):
        return {"module": 'ppju',
                "title": "Realisasi Pajak Penerangan Jalan Umum"}   
    def view_minerba(self):
        return {"module": 'minerba',
                "title": "Realisasi Pajak Minerba"}
    def view_reklame(self):
        return {"module": 'reklame',
                "title": "Realisasi Pajak Reklame"}

    def view_atd(self):
        return {"module": 'atd',
                "title": "Realisasi Pajak Air Tanah"}
    
    def view_webr(self):
        return {"module": 'webr'}
    
    def view_opsen(self):
        return {"module": 'opsen',
                "title": "Opsen Pajak PKB dan BBNKB"}

# 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()