Python 以编程方式管理';余额';时间(生病/休假)
我使用的是Python/Django,但这更多的是关于“数据模型”以及我如何与信息交互——我真的只是想知道我是否疯了 我正在我的公司(约55名员工)开发一个小应用程序,用于跟踪可用的休假/病假时间。部分目的是将“自助服务”集成到我们的内部网中,以便员工可以通过电子方式提交“休假请求”,而不是填写表格并将其交给人力资源部 显然,此应用程序需要为每个员工保持一个运行平衡,并将验证员工是否有足够的剩余假期满足他们的任何请求 与财务/会计软件一样,我知道我不必存储浮动值,也不必仅仅保持一个运行平衡 我的想法是使用如下数据库表结构来存储时间“贷方”和“借方”:Python 以编程方式管理';余额';时间(生病/休假),python,django,database-design,date,time,Python,Django,Database Design,Date,Time,我使用的是Python/Django,但这更多的是关于“数据模型”以及我如何与信息交互——我真的只是想知道我是否疯了 我正在我的公司(约55名员工)开发一个小应用程序,用于跟踪可用的休假/病假时间。部分目的是将“自助服务”集成到我们的内部网中,以便员工可以通过电子方式提交“休假请求”,而不是填写表格并将其交给人力资源部 显然,此应用程序需要为每个员工保持一个运行平衡,并将验证员工是否有足够的剩余假期满足他们的任何请求 与财务/会计软件一样,我知道我不必存储浮动值,也不必仅仅保持一个运行平衡 我的
员工|年度|贷记/借记|金额|时间戳
“年”是指贷方/借方所属的年份,因为休假和病假是按年度处理的,而不是按每位员工的流动余额
为了确定员工的可用休假/病假时间,我将获取给定年份员工的“交易”,并找到余额
我知道我漏掉了很多信息,但我想知道:这似乎是一种合理的方式,因为它需要非常准确,或者我是否完全把它复杂化了 这看起来是个好的开始。有两点:
- 贷方将在年初由系统自动生成,借方将由员工创建。是否应该有一个字段来指示谁/谁创建了交易
- 您是否有一个机制来指示需要什么样的休假?我不知道你们公司是什么样的,但有些公司对待假期和病假的方式不同。还有照顾者的时间,出于同情的理由(如亲戚去世)的休息时间,公民和法定假日的休息时间,宗教假日的休息时间,以及。。。。你明白了。也许你想让不同类型的休假获得不同的信用额度。有些组织这样做。您是否也计划跟踪这些不同的休假代码?如果你认为这将是未来的一个问题,那么这是你应该计划的事情吗
- 我也同意这是一个良好的开端
我没有看到任何要批准/不批准的字段。如果这个应用程序也被人力资源部使用,那么他们的决定也需要在你的模型中表达出来
如果人力资源被排除在外(我怀疑,但可能),那么就没有必要这样做;该应用程序可以跟踪请求和休假余额,并立即说出请求是否有效。但我怀疑事情不会这么简单。:) 如果你认为你的解决方案很复杂,那就不是了。将病假/假期建模为与员工关联的账户是一个非常好的主意,而且非常容易 在最简单的情况下,您可以有一个“transactions”表和一个“account”表,这样从年初开始重新运行所有事务(针对每个帐户)将产生与余额完全匹配的金额 交易 ID |帐户|增量|时间戳 帐目 ID |姓名|员工|年度|余额 交易记录提供了审计跟踪,余额为您的下一笔交易提供了参考点。通过确保这两个匹配,您已经确保了一致性(尽管不一定正确——这必须通过对每种类型的事务(即存款、取款)的单元测试进行检查) 我建议使用一个“Transaction Detail”表,该表引用Transactions.ID,并包含您想要的所有好东西,如发起人、备注等。
运行balamace ACCESS数据库如何获得余额借记卡
How have getting balance Debit-Credit for running balamace ACCESS DATABASE
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@page import="java.sql.*"%>
<%@ page import="java.util.Calendar" %>
<%
//java Code
String date = (new java.util.Date()).toString();
String UserName = request.getParameter("UserName");
String CusId= request.getParameter("CusId");
String AccountNo = request.getParameter("AccountNo");
String Debit = request.getParameter("Debit");
String Credit=request.getParameter("Credit");
String Balance=request.getParameter("Balance");
String sDate=request.getParameter("sDate");
try
{
String s="jdbc:odbc:Database1";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(s);
Statement smt=conn.createStatement();
Calendar calendar = Calendar.getInstance();
java.sql.Date startDate = new java.sql.Date(calendar.getTime().getTime());
String sql= "SELECT sDate, (SUM(Debit)*-1) + SUM(Credit)Balance FROM abcbank GROUP BY sDate";
ResultSet result = smt.executeQuery(sql);
int count = 0;
while (result.next())
{
result.getString(1,"Debit");
result.getString(2,"Credit");
result.getString(3,"Balance");
result.getDate(4,startDate);
}
String update= "UPDATE abcbank SET Balance =Debit + Balance WHERE AccountNo="+AccountNo+" ";
PreparedStatement statement = conn.prepareStatement(update);
//statement.setString(1,"AccountNo");
int rowsUpdated = statement.executeUpdate();
if (rowsUpdated ==0)
{
out.println("This Emp does not Exists!");
}
else if(rowsUpdated ==1)
{
out.println("An existing user was updated successfully!");
}
conn.close();
}
catch(Exception ex)
{
System.err.println(ex.getMessage());
}
%>
</body>
</html>
“休假请求”本身是不同的“模型”,它们被批准/不批准。这只是一个“时间分类账”,用于跟踪实际的借项/贷项,这将在请求获得批准后发生。谢谢你的反馈!是的,将有一个字段来确定谁/什么导致了给定的交易。我在另一篇评论中提到,请求本身是另一个被批准/拒绝的“模型”,通常只有批准才会生成借记交易。至于哪种交易,是的。在这种情况下,实际需要考虑的时间只有两种,休假和病假。它们的计算方式非常不同,但很可能“病态”会有自己的分类账。在任何情况下,我只想确保我以一种理智的方式存储这些“账户交易”。非常感谢您的反馈!谢谢你的反馈!只是想确保我没有做错需要考虑的是内部控制,除了通过应用程序,除了DBA以外的任何雇员都不能访问表,除了存储的PROS以外,不使用任何东西,以避免直接表访问或除了用户界面所定义的之外,什么都不做。否则就会出现时间卡欺诈,人们可以在后端“调整”自己的时间。