Программно управлять «балансом» времени (больной / отпуск) - PullRequest
3 голосов
/ 27 августа 2010

Я использую Python / Django, но это больше о «модели данных» и о том, как я взаимодействую с информацией - я действительно просто хочу знать, схожу ли я с ума здесь.

Я работаю над небольшим приложением в моей компании (~ 55 сотрудников), которое будет отслеживать доступное время отпуска / болезни.Одной из целей является интеграция «самообслуживания» в нашу интрасеть, чтобы сотрудники могли отправлять «Запросы на перерыв» в электронном виде, а не заполнять и передавать документы в отдел кадров.

Очевидно, что это приложение должно поддерживать текущий баланс на одного сотрудника и будет проверять, что у сотрудника остается достаточно отпуска для того, что он запрашивает.

Как и в случае с финансовым / бухгалтерским программным обеспечением, я знаю, что не обязательно хранить значения с плавающей запятой или просто сохранять единый текущий баланс.

Моя идея состоит в том, чтобы использовать структуру таблицы базы данных, подобную следующей, для хранения временных «кредитов» и «дебетов»:

Employee | Year | Credit/Debit | Amount | Timestamp

«Год» будетгод, к которому относится кредит / дебет, потому что отпуск и больничное время обрабатываются на ежегодной основе, , а не на текущий баланс на одного работника.

Чтобы определить, доступно ли работникам время отпуска / болезни, я бы получил «транзакции» для работника за данный год и нашел баланс.

Я знаю, что я опускаю много информации, но мне было интересно: Кажется ли это разумным способом сделать это, так как он должен быть очень точным, или Я слишком сильно это усложняю?

Ответы [ 4 ]

2 голосов
/ 27 августа 2010

Если вы думаете, что ваше решение сложное, это не так.Моделирование больничных / отпускных дней как учетных записей, которые связаны с сотрудниками, является очень хорошей идеей и может быть очень простым.

В простейшем случае вы можете иметь таблицу «транзакций» и таблицу «счетов»,так что повторное выполнение всех транзакций с начала года (для каждого аккаунта) даст сумму, которая точно соответствует балансу.

Транзакции

ID |Аккаунт |Дельта |Отметка времени

Аккаунт

ID |Имя |Сотрудник |Год |Баланс

Транзакции обеспечивают контрольный журнал, а баланс обеспечивает точку отсчета для вашей следующей транзакции.Убедившись в том, что оба совпадения совпадают, вы обеспечили согласованность (хотя и не обязательно правильность - это необходимо проверять с помощью модульных тестов для каждого типа транзакции, т. Е. Депозита, снятия).

Я бы рекомендовал «Транзакцию».Подробная таблица, которая ссылается на транзакции транзакции и включает в себя все, что вам нужно, например, кто ее инициировал, заметки и т. Д.

0 голосов
/ 17 октября 2016
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>
0 голосов
/ 27 августа 2010

Я также согласен, что это хорошее начало.

Я не вижу полей для утверждения / отклонения. Если это приложение предназначено также для использования персоналом, их решения также должны быть отражены в вашей модели.

Если ХР вынимается из картинки (что я сомневаюсь, но, возможно,), тогда нет необходимости делать это; приложение может отслеживать запросы и остаток на счете и сразу же сообщать, действителен ли запрос или нет. Но я подозреваю, что это не может быть так просто. :)

0 голосов
/ 27 августа 2010

Это выглядит как хорошее начало.Пара моментов:

  • Кредиты будут автоматически генерироваться системой в начале года, а сотрудники будут создавать дебеты.Должно ли быть поле для указания, кто / что создал транзакцию?

  • Есть ли у вас механизм для указания того, какой вид времени ожидания запрашивается?Я не знаю, на что похожа ваша компания, но некоторые компании по-разному относятся к отпуску и больничному.Кроме того, есть время для попечителя, свободное время для сострадания (например, умирает родственник), свободное время для гражданских и официальных праздников, свободное время для религиозных праздников, свободное время для….Может быть, вы хотите, чтобы различные виды отдыха стоили разные суммы кредита.Некоторые организации делают это.Планируете ли вы отслеживать эти разные коды времени?Это то, что вы должны планировать, если вы думаете, что это будет проблемой в будущем?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...