Commit edd7d1c0 by taufikyu

update target ambil dari anggaran

1 parent e5c81f6b
......@@ -703,3 +703,10 @@ def int_to_roman(num):
num -= val[i]
i += 1
return roman_num
def round_up(value):
if isinstance(value, str):
value = float(int(value))
if isinstance(value, int):
value = float(value)
return int(round(value+0.4999))
\ No newline at end of file
......@@ -7,12 +7,12 @@ from pyramid.view import view_config
from pyramid.httpexceptions import (HTTPFound, HTTPForbidden, HTTPNotFound)
from pyramid.security import (remember, forget, authenticated_userid,)
from deform import (Form, ValidationFailure, widget,)
from ..tools import dmy, date_from_str, int_to_roman
from sqlalchemy import func, and_
from ..tools import dmy, date_from_str, int_to_roman, round_up
from sqlalchemy import func, and_, case
from ..models import (DBSession, User,)
from ..models.isipkd import(
ARSspd, ARInvoice, Unit, Rekening
ARSspd, ARInvoice, Unit, Rekening, Anggaran
)
from pyramid.view import notfound_view_config
import logging
......@@ -181,14 +181,26 @@ def view_home(request):
unit3['realisasi']+=p.jumlah
#QUERY INVOICE
# invoices = DBSession.query(
# ARInvoice.tgl_tetap.label('tanggal'),
# ARInvoice.jumlah.label('jumlah'),
# ARInvoice.rek_kode.label('rek_kode'),
# Unit.kode.label('kode'),
# Unit.nama.label('nama'),
# ).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
# filter(ARInvoice.tahun_id==dates['year']).order_by(ARInvoice.unit_kode)\
# .all()
invoices = DBSession.query(
ARInvoice.tgl_tetap.label('tanggal'),
ARInvoice.jumlah.label('jumlah'),
ARInvoice.rek_kode.label('rek_kode'),
Unit.kode.label('kode'),
Unit.nama.label('nama'),
).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARInvoice.tahun_id==dates['year']).order_by(ARInvoice.unit_kode)\
case([
(Anggaran.perubahan > 0,
func.coalesce(Anggaran.perubahan,0))
],
else_= func.coalesce(Anggaran.murni,0)).label('jumlah'),
func.trim(Rekening.kode).label('rek_kode'),
Anggaran.kode.label('kode'),
Anggaran.nama.label('nama'),
).join(Rekening, Rekening.id == Anggaran.rekening_id).\
filter(Anggaran.tahun==dates['year']).order_by(Anggaran.kode)\
.all()
for i in invoices:
## JIKA ADA FILTER DEPARTEMEN DI HEADER
......@@ -200,8 +212,9 @@ def view_home(request):
r['target'] += int(i.jumlah)
## chart target
for x in range(12):
if i.tanggal.month == x+1:
data_dashboard['chart']['t'][x] += int(i.jumlah)
# if i.tanggal.month == x+1:
# data_dashboard['chart']['t'][x] += int(i.jumlah)
data_dashboard['chart']['t'][x] += round_up(i.jumlah/12)
## JIKA TIDAK ADA FILTER DEPARTEMEN HEADER
elif not 'unit' in request.params or not request.params['unit']:
## REKENING
......@@ -210,8 +223,9 @@ def view_home(request):
r['target'] += int(i.jumlah)
## chart target
for x in range(12):
if i.tanggal.month == x+1:
data_dashboard['chart']['t'][x] += int(i.jumlah)
# if i.tanggal.month == x+1:
# data_dashboard['chart']['t'][x] += int(i.jumlah)
data_dashboard['chart']['t'][x] += round_up(i.jumlah/12)
#RANKING Target
for unit3 in data_dashboard['sopd']:
if i.kode.strip().startswith(unit3['kode']):
......
......@@ -5,7 +5,7 @@ import os
import qrcode
import base64
from email.utils import parseaddr
from sqlalchemy import not_, func, or_, desc
from sqlalchemy import not_, func, or_, desc, case
from datetime import datetime
from time import gmtime, strftime, strptime
from pyramid.view import (
......@@ -28,13 +28,14 @@ from ..tools import (
thousand,
dmy,
BULANS,
get_settings
get_settings,
round_up,
)
from ..models import DBSession
from ..models.isipkd import(
Pegawai, ObjekPajak, SubjekPajak, ARInvoice,
Unit, UserUnit,Wilayah, Pajak, Rekening,
ARSts, ARStsItem, ARSspd, ARTbp
ARSts, ARStsItem, ARSspd, ARTbp, Anggaran
)
from datatables import (
......@@ -100,23 +101,35 @@ def view_detail(request):
if p.tanggal.month == x+1:
re['realisasi'][x] += int(p.jumlah)
# invoices = DBSession.query(
# ARInvoice.tgl_tetap.label('tanggal'),
# ARInvoice.jumlah.label('jumlah'),
# ARInvoice.rek_kode.label('rek_kode'),
# Unit.kode.label('kode'),
# Unit.nama.label('nama'),
# ).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
# filter(ARInvoice.tahun_id==params['year']).order_by(ARInvoice.unit_kode)\
# .all()
invoices = DBSession.query(
ARInvoice.tgl_tetap.label('tanggal'),
ARInvoice.jumlah.label('jumlah'),
ARInvoice.rek_kode.label('rek_kode'),
Unit.kode.label('kode'),
Unit.nama.label('nama'),
).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARInvoice.tahun_id==params['year']).order_by(ARInvoice.unit_kode)\
case([
(Anggaran.perubahan > 0,
func.coalesce(Anggaran.perubahan,0))
],
else_= func.coalesce(Anggaran.murni,0)).label('jumlah'),
func.trim(Rekening.kode).label('rek_kode'),
Anggaran.kode.label('kode'),
Anggaran.nama.label('nama'),
).join(Rekening, Rekening.id == Anggaran.rekening_id).\
filter(Anggaran.tahun==params['year']).order_by(Anggaran.kode)\
.all()
for i in invoices:
for re in reks:
if i.rek_kode.strip().startswith(re['kode']):
## chart target
for x in range(12):
if i.tanggal.month == x+1:
re['target'][x] += int(p.jumlah)
# if i.tanggal.month == x+1:
# re['target'][x] += int(p.jumlah)
re['target'][x] += round_up(i.jumlah/12)
##Hitung persen
for re in reks:
for x in range(12):
......
......@@ -8,11 +8,11 @@ from pyramid.httpexceptions import (HTTPFound, HTTPForbidden, HTTPNotFound)
from pyramid.security import (remember, forget, authenticated_userid,)
from deform import (Form, ValidationFailure, widget,)
from ..tools import dmy, date_from_str, int_to_roman
from sqlalchemy import func, and_
from sqlalchemy import func, and_, case
from ..models import (DBSession, User,)
from ..models.isipkd import(
ARSspd, ARInvoice, Unit, Rekening
ARSspd, ARInvoice, Unit, Rekening, Anggaran
)
from pyramid.view import notfound_view_config
import logging
......@@ -78,14 +78,26 @@ def view_rank(request):
if sopd.kode.startswith(unit4['kode']):
unit4['nominal']+=sopd.jumlah
#QUERY INVOICE
# invoices = DBSession.query(
# ARInvoice.tgl_tetap.label('tanggal'),
# ARInvoice.jumlah.label('jumlah'),
# ARInvoice.rek_kode.label('rek_kode'),
# Unit.kode.label('kode'),
# Unit.nama.label('nama'),
# ).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
# filter(ARInvoice.tahun_id==dates['year']).order_by(ARInvoice.unit_kode)\
# .all()
invoices = DBSession.query(
ARInvoice.tgl_tetap.label('tanggal'),
ARInvoice.jumlah.label('jumlah'),
ARInvoice.rek_kode.label('rek_kode'),
Unit.kode.label('kode'),
Unit.nama.label('nama'),
).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARInvoice.tahun_id==dates['year']).order_by(ARInvoice.unit_kode)\
case([
(Anggaran.perubahan > 0,
func.coalesce(Anggaran.perubahan,0))
],
else_= func.coalesce(Anggaran.murni,0)).label('jumlah'),
func.trim(Rekening.kode).label('rek_kode'),
Anggaran.kode.label('kode'),
Anggaran.nama.label('nama'),
).join(Rekening, Rekening.id == Anggaran.rekening_id).\
filter(Anggaran.tahun==dates['year']).order_by(Anggaran.kode)\
.all()
for i in invoices:
#RANKING Target
......@@ -164,14 +176,26 @@ def view_det(request):
if sopd.kode.startswith(unit4['kode']):
unit4['nominal']+=sopd.jumlah
#QUERY INVOICE
# invoices = DBSession.query(
# ARInvoice.tgl_tetap.label('tanggal'),
# ARInvoice.jumlah.label('jumlah'),
# ARInvoice.rek_kode.label('rek_kode'),
# Unit.kode.label('kode'),
# Unit.nama.label('nama'),
# ).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
# filter(ARInvoice.tahun_id==dates['year']).order_by(ARInvoice.unit_kode)\
# .all()
invoices = DBSession.query(
ARInvoice.tgl_tetap.label('tanggal'),
ARInvoice.jumlah.label('jumlah'),
ARInvoice.rek_kode.label('rek_kode'),
Unit.kode.label('kode'),
Unit.nama.label('nama'),
).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARInvoice.tahun_id==dates['year']).order_by(ARInvoice.unit_kode)\
case([
(Anggaran.perubahan > 0,
func.coalesce(Anggaran.perubahan,0))
],
else_= func.coalesce(Anggaran.murni,0)).label('jumlah'),
func.trim(Rekening.kode).label('rek_kode'),
Anggaran.kode.label('kode'),
Anggaran.nama.label('nama'),
).join(Rekening, Rekening.id == Anggaran.rekening_id).\
filter(Anggaran.tahun==dates['year']).order_by(Anggaran.kode)\
.all()
for i in invoices:
#RANKING Target
......
......@@ -5,7 +5,7 @@ import os
import qrcode
import base64
from email.utils import parseaddr
from sqlalchemy import not_, func, or_, desc
from sqlalchemy import not_, func, or_, desc, case
from datetime import datetime
from time import gmtime, strftime, strptime
from pyramid.view import (
......@@ -34,7 +34,7 @@ from ..models import DBSession
from ..models.isipkd import(
Pegawai, ObjekPajak, SubjekPajak, ARInvoice,
Unit, UserUnit,Wilayah, Pajak, Rekening,
ARSts, ARStsItem, ARSspd, ARTbp
ARSts, ARStsItem, ARSspd, ARTbp, Anggaran
)
from datatables import (
......@@ -110,14 +110,26 @@ def view_detail(request):
if p.rek_kode.strip().startswith(r['kode']):
r['realisasi'] += int(p.jumlah)
# invoices = DBSession.query(
# ARInvoice.tgl_tetap.label('tanggal'),
# ARInvoice.jumlah.label('jumlah'),
# ARInvoice.rek_kode.label('rek_kode'),
# Unit.kode.label('kode'),
# Unit.nama.label('nama'),
# ).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
# filter(ARInvoice.tahun_id==params['year']).order_by(ARInvoice.unit_kode)
invoices = DBSession.query(
ARInvoice.tgl_tetap.label('tanggal'),
ARInvoice.jumlah.label('jumlah'),
ARInvoice.rek_kode.label('rek_kode'),
Unit.kode.label('kode'),
Unit.nama.label('nama'),
).join(Unit, func.trim(Unit.kode) == func.trim(ARInvoice.unit_kode)).\
filter(ARInvoice.tahun_id==params['year']).order_by(ARInvoice.unit_kode)
case([
(Anggaran.perubahan > 0,
func.coalesce(Anggaran.perubahan,0))
],
else_= func.coalesce(Anggaran.murni,0)).label('jumlah'),
func.trim(Rekening.kode).label('rek_kode'),
Anggaran.kode.label('kode'),
Anggaran.nama.label('nama'),
).join(Rekening, Rekening.id == Anggaran.rekening_id).\
filter(Anggaran.tahun==params['year']).order_by(Anggaran.kode)\
.all()
invoices = invoices.all()
for i in invoices:
## JIKA ADA FILTER DEPARTEMEN
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!