Commit d5f9767b by aagusti

Perhitungan pph

1 parent f7e42dc6
...@@ -13,10 +13,10 @@ from opensipkd.models import ( ...@@ -13,10 +13,10 @@ from opensipkd.models import (
from opensipkd.models.handlers import LogDBSession from opensipkd.models.handlers import LogDBSession
from pyramid.paster import (get_appsettings, setup_logging, ) from pyramid.paster import (get_appsettings, setup_logging, )
from sqlalchemy import (engine_from_config, select, Table, inspect) from sqlalchemy import (engine_from_config, select, Table, inspect)
from sqlalchemy.sql.sqltypes import BOOLEAN
from sqlalchemy import text from sqlalchemy import text
from sqlalchemy.dialects import oracle from sqlalchemy.dialects import oracle
from sqlalchemy.schema import CreateSchema from sqlalchemy.schema import CreateSchema
from sqlalchemy.sql.sqltypes import BOOLEAN
from ziggurat_foundations.models.services.user import UserService from ziggurat_foundations.models.services.user import UserService
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -138,9 +138,9 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession): ...@@ -138,9 +138,9 @@ def restore_csv(table, filename, get_file_func=get_file, db_session=DBSession):
# masih memungkinkan update yg sudah ada dgn syarat is value dari keys masih sama # masih memungkinkan update yg sudah ada dgn syarat is value dari keys masih sama
# sperti salah route url asalkan kode msh sama # sperti salah route url asalkan kode msh sama
def append_csv(table, filename, keys, get_file_func=get_file, def append_csv(table, filename, keys, get_file_func=get_file,
db_session=DBSession, update_exist=False, delimiter=","): db_session=DBSession, update_exist=False, delimiter=",", **args):
insp = inspect(DBSession.connection()) insp = inspect(DBSession.connection())
callback = args.get("callback")
columns_table = insp.get_columns(table.__tablename__) columns_table = insp.get_columns(table.__tablename__)
fields = {} fields = {}
...@@ -192,7 +192,12 @@ def append_csv(table, filename, keys, get_file_func=get_file, ...@@ -192,7 +192,12 @@ def append_csv(table, filename, keys, get_file_func=get_file,
if fname in foreigns: if fname in foreigns:
foreign_table, foreign_field = foreigns[fname] foreign_table, foreign_field = foreigns[fname]
value = cf[fname] value = cf[fname]
if callback:
value = callback("mapping", table=foreign_table, field=foreign_field,
value=value)
sql = select([foreign_table]).where(foreign_field == value) sql = select([foreign_table]).where(foreign_field == value)
log.debug(f"Query Foreignkey: {str(sql)}")
# connection = DBSession.connection() # connection = DBSession.connection()
q = Base.metadata.bind.execute(sql) q = Base.metadata.bind.execute(sql)
# q = connection.execute(sql) # q = connection.execute(sql)
......
...@@ -324,7 +324,7 @@ class BaseView(object): ...@@ -324,7 +324,7 @@ class BaseView(object):
buttons = (btn_post, btn_close) buttons = (btn_post, btn_close)
return self.view_view(buttons=buttons) return self.view_view(buttons=buttons)
def view_upload(self, exts=('.png', '.ico'), delimiter=","): def view_upload(self, exts=('.png', '.ico'), delimiter=",", **args):
bindings = self.get_bindings() bindings = self.get_bindings()
form = self.get_form(self.upload_schema, bindings=bindings) form = self.get_form(self.upload_schema, bindings=bindings)
resources = form.get_widget_resources() resources = form.get_widget_resources()
...@@ -355,7 +355,7 @@ class BaseView(object): ...@@ -355,7 +355,7 @@ class BaseView(object):
output_file.write(data) output_file.write(data)
output_file.close() output_file.close()
try: try:
self.save_upload(fullpath, delimiter=delimiter) self.save_upload(fullpath, delimiter=delimiter, **args)
except Exception as e: except Exception as e:
self.req.session.flash(str(e), 'error') self.req.session.flash(str(e), 'error')
return dict(form=form.render(), return dict(form=form.render(),
...@@ -364,8 +364,6 @@ class BaseView(object): ...@@ -364,8 +364,6 @@ class BaseView(object):
elif "cancel" in self.req.POST or 'batal' in self.req.POST or "close" in self.req.POST: elif "cancel" in self.req.POST or 'batal' in self.req.POST or "close" in self.req.POST:
self.cancel_act() self.cancel_act()
else:
return self.next_add(form, resources=resources)
return self.route_list() return self.route_list()
return dict(form=form.render(), return dict(form=form.render(),
...@@ -375,9 +373,9 @@ class BaseView(object): ...@@ -375,9 +373,9 @@ class BaseView(object):
def get_file(self, filename): def get_file(self, filename):
return open(filename) return open(filename)
def save_upload(self, file_name, delimiter=","): def save_upload(self, file_name, delimiter=",", **args):
return append_csv(self.table, file_name, self.upload_keys, return append_csv(self.table, file_name, self.upload_keys,
get_file_func=self.get_file, update_exist=True, delimiter=delimiter) get_file_func=self.get_file, update_exist=True, delimiter=delimiter, **args)
def before_add(self): def before_add(self):
return {} return {}
...@@ -531,7 +529,7 @@ class BaseView(object): ...@@ -531,7 +529,7 @@ class BaseView(object):
elif "cancel" in self.req.POST or 'batal' in self.req.POST or "close" in self.req.POST: elif "cancel" in self.req.POST or 'batal' in self.req.POST or "close" in self.req.POST:
self.cancel_act() self.cancel_act()
else: else:
return self.next_add(form, table=table, resources=resources) return self.next_add(form, table=table, resources=resources, **kwargs)
return self.route_list(**kwargs) return self.route_list(**kwargs)
values = self.before_add() values = self.before_add()
......
...@@ -18,7 +18,7 @@ SESS_EDIT_FAILED = 'Edit departemen gagal' ...@@ -18,7 +18,7 @@ SESS_EDIT_FAILED = 'Edit departemen gagal'
def get_departemen_list(): def get_departemen_list():
r = [] r = [("","--Pilih Departemen--")]
q = DBSession.query(Departemen).order_by(Departemen.nama) q = DBSession.query(Departemen).order_by(Departemen.nama)
for row in q: for row in q:
g = (str(row.id), (f"{row.kode}/ {row.nama}")) g = (str(row.id), (f"{row.kode}/ {row.nama}"))
......
import logging
from datetime import datetime from datetime import datetime
import ziggurat_foundations.models import ziggurat_foundations.models
from sqlalchemy import Column, String, SmallInteger, Integer, DateTime, func from opensipkd.tools import as_timezone
from sqlalchemy import Column, String, SmallInteger, Integer, DateTime, func, Numeric
from sqlalchemy import inspect as sa_inspect from sqlalchemy import inspect as sa_inspect
from sqlalchemy.ext.hybrid import hybrid_property from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.orm import (scoped_session, sessionmaker, Session) from sqlalchemy.orm import (scoped_session, sessionmaker, Session)
from zope.sqlalchemy import register from zope.sqlalchemy import register
from opensipkd.tools import as_timezone
class MySession(Session): class MySession(Session):
def execute(self, clause, params=None, mapper=None, **kw): def execute(self, clause, params=None, mapper=None, **kw):
...@@ -33,7 +33,7 @@ class CommonModel(object): ...@@ -33,7 +33,7 @@ class CommonModel(object):
def to_dict_hybrid(self): def to_dict_hybrid(self):
values = {} values = {}
for item in sa_inspect(self.__class__).all_orm_descriptors: for item in sa_inspect(self.__class__).all_orm_descriptors:
if type(item) == hybrid_property: if hybrid_property == type(item):
value = getattr(self, item.__name__) value = getattr(self, item.__name__)
print(item.__name__, value) print(item.__name__, value)
if value: if value:
...@@ -44,13 +44,15 @@ class CommonModel(object): ...@@ -44,13 +44,15 @@ class CommonModel(object):
values = {} values = {}
for column in self.__table__.columns: for column in self.__table__.columns:
value = getattr(self, column.name) value = getattr(self, column.name)
if value or null: if value:
if type(column.type) is DateTime and date_format: if type(column.type) is DateTime and date_format:
if value: if value:
values[column.name] = value.strftime(date_format) values[column.name] = value.strftime(date_format)
else: else:
values[column.name] = value values[column.name] = value
else:
if Integer in type(column.type).__mro__ or Numeric in type(column.type).__mro__:
values[column.name] = 0
return values return values
def to_dict_without_none(self): def to_dict_without_none(self):
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!