3


1

時間の「バランス」をプログラムで管理する(病気/休暇)

私はPython / Djangoを使用していますが、これは「データモデル」と、情報とのやり取りについての詳細です。ここで本当に夢中になっているかどうかを知りたいだけです。

休暇/病気の時間を追跡する小さなアプリ(従業員数55人以上)で作業しています。 目的の一部は、「セルフサービス」をイントラネットに統合し、従業員が紙に記入してHRに渡すのではなく、「休暇申請」を電子的に送信できるようにすることです。

明らかに、このアプリは従業員ごとにランニングバランスを保つ必要があり、従業員が要求していることに対して十分な休暇が残っていることを検証します。

財務/会計ソフトウェアと同様に、フロート値を保存する必要も、単一のランニングバランスを維持する必要もありません。

私の考えは、次のようなデータベーステーブル構造を使用して、時間の「クレジット」と「デビット」を保存することです。

`従業員|年|クレジット/デビット|金額|タイムスタンプ `

「年」はクレジット/デビットが属する年になります。休暇と病気の時間は従業員ごとのランニングバランスではなく、毎年ベースで処理されるためです。

従業員の休暇/病気の時間を決定するには、特定の年の従業員の「取引」を取得し、残高を見つけます。

私は多くの情報を残していることは知っていますが、私は疑問に思っていました:*これはこれを行うための合理的な方法のように見えますか?*それは非常に正確である必要があるためです?

4 Answer


2


あなたのソリューションが複雑だと思うなら、そうではありません。 従業員にリンクされたアカウントとして病欠/休暇日をモデル化することは非常に良い考えであり、非常に簡単です。

最も単純なケースでは、「トランザクション」テーブルと「アカウント」テーブルを使用して、年の初めからすべてのトランザクションを(各アカウントに対して)再実行すると、残高と正確に一致する合計が得られます。

_ _ トランザクション

ID |アカウント|デルタ|タイムスタンプ

アカウント

ID |名前|従業員|年|バランス _ _

トランザクションは監査証跡を提供し、残高は次のトランザクションの参照ポイントを提供します。 2つの一致を保証することにより、一貫性が保証されます(ただし、必ずしも正確である必要はありません-トランザクションの各タイプのユニットテストで確認する必要があります。 入金、出金)

Transactions.IDを参照する「Transaction Detail」テーブルをお勧めします。これには、開始者やメモなど、必要なものがすべて含まれています。


0


これは良いスタートのようです。 いくつかのポイント:

  • クレジットは、システムの開始時に自動生成されます 年度、および借方は従業員によって作成されます。 誰/何がトランザクションを作成したかを示すフィールドが必要ですか?

  • 休暇の種類を示すメカニズムはありますか 要求された? あなたの会社がどのような会社かはわかりませんが、休暇と病気の時間を異なる方法で扱う会社もあります。 それから介護者の時間、思いやりのある理由(親族の死など)の休み、市民と法定の休日の休み、宗教の休日の休み、…の休みもあります。 よくあなたはアイデアを得る。 たぶん、さまざまな種類の休暇をさまざまなクレジットの価値があるようにしたいでしょう。 一部の組織はそれを行います。 これらの異なるタイムオフコードも追跡する予定はありますか? 将来的に問題になると思われる場合は、計画する必要がありますか?


0


また、良いスタートだと思います。

承認/不承認のフィールドが表示されません。 このアプリがHRによっても使用されることを意図している場合、それらの決定もモデルで表現する必要があります。

HRが画像から削除されている場合(疑わしいかもしれませんが、おそらく)、これを行う必要はありません。アプリはリクエストと休暇残高を追跡し、リクエストが有効かどうかをすぐに判断できます。 しかし、私はそれがこれほど簡単ではないのではないかと疑っています。 :)


0


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());
  }

%>