Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以编程方式管理';余额';时间(生病/休假)_Python_Django_Database Design_Date_Time - Fatal编程技术网

Python 以编程方式管理';余额';时间(生病/休假)

Python 以编程方式管理';余额';时间(生病/休假),python,django,database-design,date,time,Python,Django,Database Design,Date,Time,我使用的是Python/Django,但这更多的是关于“数据模型”以及我如何与信息交互——我真的只是想知道我是否疯了 我正在我的公司(约55名员工)开发一个小应用程序,用于跟踪可用的休假/病假时间。部分目的是将“自助服务”集成到我们的内部网中,以便员工可以通过电子方式提交“休假请求”,而不是填写表格并将其交给人力资源部 显然,此应用程序需要为每个员工保持一个运行平衡,并将验证员工是否有足够的剩余假期满足他们的任何请求 与财务/会计软件一样,我知道我不必存储浮动值,也不必仅仅保持一个运行平衡 我的

我使用的是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以外,不使用任何东西,以避免直接表访问或除了用户界面所定义的之外,什么都不做。否则就会出现时间卡欺诈,人们可以在后端“调整”自己的时间。