Esempio n. 1
0
        public void DeleteExpensePerdiemItemOnTransaction(Guid txId, long itemId)
        {
            ExpenseDataSet expDs = (ExpenseDataSet)TransactionService.GetDS(txId);

            ExpenseDataSet.FnExpensePerdiemItemRow row = expDs.FnExpensePerdiemItem.FindByPerdiemItemID(itemId);
            expDs.FnExpensePerdiemItem.RemoveFnExpensePerdiemItemRow(row);
        }
Esempio n. 2
0
        public void DeleteExpensePerdiemItemTransaction(long itemId, Guid txId)
        {
            ExpenseDataSet expDs = (ExpenseDataSet)TransactionService.GetDS(txId);

            ExpenseDataSet.FnExpensePerdiemItemRow row = expDs.FnExpensePerdiemItem.FindByPerdiemItemID(itemId);

            long expensePerdiemID = row.ExpensePerdiemID;

            row.Delete();
            FnExpensePerdiemService.UpdateExpensePerdiemCalculateTransaction(expensePerdiemID, txId);
        }
Esempio n. 3
0
        public void AddExpensePerdiemItemOnTransaction(FnExpensePerdiemItem item, Guid txId)
        {
            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();

            if (item.FromDate == null)
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredFromDate"));
            }

            if (item.FromTime == null)
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredFromTime"));
            }
            else
            {
                item.FromTime = new DateTime(item.FromDate.Year, item.FromDate.Month, item.FromDate.Day, item.FromTime.Hour, item.FromTime.Minute, 0);
            }

            if (item.ToDate == null)
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredToDate"));
            }

            if (item.ToTime == null)
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredToTime"));
            }
            else
            {
                item.ToTime = new DateTime(item.ToDate.Year, item.ToDate.Month, item.ToDate.Day, item.ToTime.Hour, item.ToTime.Minute, 0);
            }

            if (item.AdjustedDay == null)
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredAdjustedDay"));
            }
            if (item.AdjustedDay.Equals((decimal)0))
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredAdjustedDayNotEqualZero"));
            }
            if (item.ToTime < item.FromTime)
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredToDateIncorrect"));
            }

            if (!errors.IsEmpty)
            {
                throw new ServiceValidationException(errors);
            }

            ExpenseDataSet ds = (ExpenseDataSet)TransactionService.GetDS(txId);

            ExpenseDataSet.FnExpensePerdiemItemRow row = ds.FnExpensePerdiemItem.NewFnExpensePerdiemItemRow();

            row.ExpensePerdiemID = item.ExpensePerdiemID.ExpensePerdiemID;
            row.FromDate         = item.FromDate;
            row.FromTime         = item.FromTime;
            row.ToDate           = item.ToDate;
            row.ToTime           = item.ToTime;
            row.AdjustedDay      = item.AdjustedDay.Value;
            row.NetDay           = ComputeNetDay(item.FromTime, item.ToTime, item.AdjustedDay.Value);

            row.CreBy   = item.CreBy;
            row.CreDate = item.CreDate;
            row.UpdBy   = item.UpdBy;
            row.UpdDate = item.UpdDate;
            row.UpdPgm  = item.UpdPgm;
            row.Active  = true;

            ds.FnExpensePerdiemItem.AddFnExpensePerdiemItemRow(row);
        }
Esempio n. 4
0
        public void AddExpensePerdiemItemTransaction(FnExpensePerdiemItem item, Guid txId)
        {
            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();

            string PerdiemType = GetPerdiemType(item, txId);

            if (!item.FromDate.HasValue)
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredFromDate"));
            }
            if (!item.FromTime.HasValue)
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredFromTime"));
            }
            if (!item.ToDate.HasValue)
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredToDate"));
            }
            if (!item.ToTime.HasValue)
            {
                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredToTime"));
            }
            if (item.FromDate.HasValue && item.FromTime.HasValue && item.ToDate.HasValue && item.ToTime.HasValue)
            {
                DateTime FromDateTime = ConvertDateTime(item.FromDate, item.FromTime);
                DateTime ToDateTime   = ConvertDateTime(item.ToDate, item.ToTime);

                if (DateTime.Compare(ToDateTime, DateTime.Now.Date) > 0)
                {
                    errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("PleaseSelectDateIsNotToday"));
                }
                if (ToDateTime < FromDateTime)
                {
                    errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("RequiredToDateIncorrect"));
                }
                else
                {
                    if (CalculateNetDay(CalculateTotalDay(FromDateTime, ToDateTime, PerdiemType), item.AdjustedDay) < 0)
                    {
                        errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("Invalid Date Information"));
                    }
                    if (PerdiemType == ZoneType.Foreign)
                    {
                        if (item.HalfDay < 0)
                        {
                            errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("Invalid Date Information"));
                        }
                        else
                        {
                            if (CalculateFullDay(CalculateNetDay(CalculateTotalDay(FromDateTime, ToDateTime, PerdiemType), item.AdjustedDay), item.HalfDay) < 0)
                            {
                                errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("Invalid Date Information"));
                            }
                        }
                    }
                }
            }
            if (PerdiemType == ZoneType.Foreign)
            {
                if (!item.CountryID.HasValue && string.IsNullOrEmpty(item.Remark))
                {
                    errors.AddError("PerdiemItem.Error", new Spring.Validation.ErrorMessage("Remark is required"));
                }
            }

            if (!errors.IsEmpty)
            {
                throw new ServiceValidationException(errors);
            }

            ExpenseDataSet ds = (ExpenseDataSet)TransactionService.GetDS(txId);

            ExpenseDataSet.FnExpensePerdiemItemRow row = ds.FnExpensePerdiemItem.NewFnExpensePerdiemItemRow();

            row.ExpensePerdiemID = item.ExpensePerdiem.ExpensePerdiemID;
            row.FromDate         = item.FromDate.Value;
            row.FromTime         = ConvertDateTime(item.FromDate.Value, item.FromTime.Value);
            row.ToDate           = item.ToDate.Value;
            row.ToTime           = ConvertDateTime(item.ToDate, item.ToTime);
            row.AdjustedDay      = (decimal)item.AdjustedDay;
            row.NetDay           = (decimal)CalculateNetDay(CalculateTotalDay(row.FromTime, row.ToTime, PerdiemType), item.AdjustedDay);

            //** for Domestic and Foreign
            row.Remark = item.Remark;

            if (PerdiemType == ZoneType.Foreign)
            {
                row.HalfDay = (decimal)item.HalfDay;
                row.FullDay = (decimal)CalculateFullDay((double)row.NetDay, (double)row.HalfDay);

                if (item.CountryID.HasValue)
                {
                    row.CountryID = item.CountryID.Value;
                }
                if (item.CountryZoneID.HasValue)
                {
                    row.CountryZoneID = item.CountryZoneID.Value;
                }
            }
            row.CreBy   = row.UpdBy = UserAccount.UserID;
            row.CreDate = row.UpdDate = DateTime.Now.Date;
            row.UpdPgm  = item.UpdPgm;
            row.Active  = true;

            ds.FnExpensePerdiemItem.AddFnExpensePerdiemItemRow(row);
            FnExpensePerdiemService.UpdateExpensePerdiemCalculateTransaction(item.ExpensePerdiem.ExpensePerdiemID, txId);
        }
Esempio n. 5
0
        public void PrepareDataToDataset(ExpenseDataSet ds, long perdiemId)
        {
            ExpenseDataSet.FnExpensePerdiemRow  row    = ds.FnExpensePerdiem.FindByExpensePerdiemID(perdiemId);
            ExpenseDataSet.FnExpenseDocumentRow expRow = ds.FnExpenseDocument.FindByExpenseID(row.ExpenseID);
            string PerdiemType = expRow.ExpenseType;

            IList <FnExpensePerdiemItem> perdiemItemList = ScgeAccountingQueryProvider.FnExpensePerdiemItemQuery.GetPerdiemItemByPerdiemID(perdiemId);

            decimal totalNetDay = 0;

            foreach (FnExpensePerdiemItem item in perdiemItemList)
            {
                // Set data to perdiem item row in Dataset.
                ExpenseDataSet.FnExpensePerdiemItemRow itemRow = ds.FnExpensePerdiemItem.NewFnExpensePerdiemItemRow();
                itemRow.PerdiemItemID    = item.PerdiemItemID;
                itemRow.ExpensePerdiemID = item.ExpensePerdiem.ExpensePerdiemID;
                itemRow.FromDate         = item.FromDate.Value;
                itemRow.FromTime         = ConvertDateTime(item.FromDate.Value, item.FromTime.Value);
                itemRow.ToDate           = item.ToDate.Value;
                itemRow.ToTime           = ConvertDateTime(item.ToDate, item.ToTime);
                itemRow.AdjustedDay      = (decimal)item.AdjustedDay;
                itemRow.NetDay           = (decimal)item.NetDay;

                totalNetDay += itemRow.NetDay;

                if (PerdiemType == ZoneType.Foreign)
                {
                    itemRow.HalfDay = (decimal)item.HalfDay;
                    itemRow.FullDay = (decimal)item.FullDay;
                    itemRow.SetCountryIDNull();
                    if (item.CountryID != null)
                    {
                        itemRow.CountryID = item.CountryID.Value;
                    }
                    itemRow.SetCountryZoneIDNull();
                    if (item.CountryZoneID != null)
                    {
                        itemRow.CountryZoneID = item.CountryZoneID.Value;
                    }
                }

                itemRow.Remark = item.Remark;


                itemRow.Active  = item.Active;
                itemRow.CreBy   = item.CreBy;
                itemRow.CreDate = item.CreDate;
                itemRow.UpdBy   = item.UpdBy;
                itemRow.UpdDate = item.UpdDate;
                itemRow.UpdPgm  = item.UpdPgm;

                // Add perdiem item row to documentDataset.
                ds.FnExpensePerdiemItem.AddFnExpensePerdiemItemRow(itemRow);
            }

            if (PerdiemType == ZoneType.Domestic)
            {
                row.TotalFullDayPerdiem       = totalNetDay;
                row.TotalFullDayPerdiemAmount = totalNetDay * row.FullDayPerdiemRate;
            }
        }