Commit d5f9767b by aagusti

Perhitungan pph

1 parent f7e42dc6
......@@ -13,10 +13,10 @@ from opensipkd.models import (
from opensipkd.models.handlers import LogDBSession
from pyramid.paster import (get_appsettings, setup_logging, )
from sqlalchemy import (engine_from_config, select, Table, inspect)
from sqlalchemy.sql.sqltypes import BOOLEAN
from sqlalchemy import text
from sqlalchemy.dialects import oracle
from sqlalchemy.schema import CreateSchema
from sqlalchemy.sql.sqltypes import BOOLEAN
from ziggurat_foundations.models.services.user import UserService
log = logging.getLogger(__name__)
......@@ -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
# sperti salah route url asalkan kode msh sama
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())
callback = args.get("callback")
columns_table = insp.get_columns(table.__tablename__)
fields = {}
......@@ -192,7 +192,12 @@ def append_csv(table, filename, keys, get_file_func=get_file,
if fname in foreigns:
foreign_table, foreign_field = foreigns[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)
log.debug(f"Query Foreignkey: {str(sql)}")
# connection = DBSession.connection()
q = Base.metadata.bind.execute(sql)
# q = connection.execute(sql)
......
......@@ -324,7 +324,7 @@ class BaseView(object):
buttons = (btn_post, btn_close)
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()
form = self.get_form(self.upload_schema, bindings=bindings)
resources = form.get_widget_resources()
......@@ -355,7 +355,7 @@ class BaseView(object):
output_file.write(data)
output_file.close()
try:
self.save_upload(fullpath, delimiter=delimiter)
self.save_upload(fullpath, delimiter=delimiter, **args)
except Exception as e:
self.req.session.flash(str(e), 'error')
return dict(form=form.render(),
......@@ -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:
self.cancel_act()
else:
return self.next_add(form, resources=resources)
return self.route_list()
return dict(form=form.render(),
......@@ -375,9 +373,9 @@ class BaseView(object):
def get_file(self, 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,
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):
return {}
......@@ -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:
self.cancel_act()
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)
values = self.before_add()
......
......@@ -18,7 +18,7 @@ SESS_EDIT_FAILED = 'Edit departemen gagal'
def get_departemen_list():
r = []
r = [("","--Pilih Departemen--")]
q = DBSession.query(Departemen).order_by(Departemen.nama)
for row in q:
g = (str(row.id), (f"{row.kode}/ {row.nama}"))
......
import logging
from datetime import datetime
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.ext.hybrid import hybrid_property
from sqlalchemy.orm import (scoped_session, sessionmaker, Session)
from zope.sqlalchemy import register
from opensipkd.tools import as_timezone
class MySession(Session):
def execute(self, clause, params=None, mapper=None, **kw):
......@@ -33,7 +33,7 @@ class CommonModel(object):
def to_dict_hybrid(self):
values = {}
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__)
print(item.__name__, value)
if value:
......@@ -44,13 +44,15 @@ class CommonModel(object):
values = {}
for column in self.__table__.columns:
value = getattr(self, column.name)
if value or null:
if value:
if type(column.type) is DateTime and date_format:
if value:
values[column.name] = value.strftime(date_format)
else:
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
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!