public DataTable DeleteRemittanceItemFromTransaction(Guid txID, long fnremittrnceItemID, bool isFromAdvanceGrid) { Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors(); long remittanceId = 0; FnRemittanceDataset remittanceDS = (FnRemittanceDataset)TransactionService.GetDS(txID); FnRemittanceDataset.FnRemittanceItemRow remittanceItemRow = remittanceDS.FnRemittanceItem.FindByRemittanceItemID(fnremittrnceItemID); if (remittanceItemRow != null && !remittanceItemRow.IsNull("RemittanceID")) { remittanceId = remittanceItemRow.RemittanceID; } if (!isFromAdvanceGrid) { if (remittanceItemRow.IsImportFromAdvance) { errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("CanNotDeleteItemInsertFromAdvance")); } if (!errors.IsEmpty) { throw new ServiceValidationException(errors); } } remittanceItemRow.Delete(); FnRemittanceService.UpdateTotalRemittanceAmount(txID, remittanceId); return(remittanceDS.FnRemittanceItem); }
public void UpdateRemittanceItemList(Guid txID, long remittanceId, List <FnRemittanceItem> remittanceItemList, bool isFullClearing) { Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors(); double totalDivAmount = 0; foreach (FnRemittanceItem item in remittanceItemList) { if (item.ForeignCurrencyAdvanced >= item.ForeignCurrencyRemitted) { totalDivAmount += item.ForeignCurrencyAdvanced - item.ForeignCurrencyRemitted; } else { totalDivAmount += item.ForeignCurrencyRemitted - item.ForeignCurrencyAdvanced; } } logger.Info("totalDivAmount" + totalDivAmount); foreach (FnRemittanceItem item in remittanceItemList) { if (totalDivAmount == 0 || isFullClearing) { item.AmountTHB = item.ForeignAmountTHBAdvanced; } UpdateRemittanceItemTransaction(txID, item, !item.IsImportFromAdvance); } double sumRemittanceItemAmount = remittanceItemList.Sum(x => (double)Math.Round((decimal)x.AmountTHB, 2, MidpointRounding.AwayFromZero)); double sumAdvanceAmount = remittanceItemList.Sum(x => (double)Math.Round((decimal)x.ForeignAmountTHBAdvanced, 2, MidpointRounding.AwayFromZero)); logger.Info("TotalRemittance" + sumRemittanceItemAmount); logger.Info("TotalAdvance" + sumAdvanceAmount); if ((!isFullClearing && sumRemittanceItemAmount > sumAdvanceAmount) && totalDivAmount != 0) { errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("TotalRemittanceItemNotMoreThanTotalAdvance")); } if (!errors.IsEmpty) { throw new ServiceValidationException(errors); } FnRemittanceService.UpdateTotalRemittanceAmount(txID, remittanceId); }
public long AddFnRemittanceItemTransaction(Guid txID, FnRemittanceItem fnRemittanceItem, bool isFromAddvance, double totalAdvance) { Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors(); FnRemittanceDataset fnRemittanceDocumentDS = (FnRemittanceDataset)TransactionService.GetDS(txID); DataRow[] dr; //FnRemittanceDataset.FnRemittanceRow remittanceRow = fnRemittanceDocumentDS.FnRemittance.FindByRemittanceID(fnRemittanceItem.Remittance.RemittanceID); if (fnRemittanceItem.Remittance.PB.Pbid != 0) { Dbpb dbPb = ScgDbQueryProvider.DbPBQuery.FindByIdentity(Convert.ToInt64(fnRemittanceItem.Remittance.PB.Pbid)); IsRepOffice = dbPb.RepOffice; } if (isFromAddvance) { string strSQL = " PaymentType = '{0}' AND CurrencyID = {1} "; dr = fnRemittanceDocumentDS.FnRemittanceItem.Select(string.Format(strSQL, fnRemittanceItem.PaymentType, fnRemittanceItem.Currency.CurrencyID)); } else { if (fnRemittanceItem.Currency == null) { errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("CurrencyIsRequire")); } if (fnRemittanceItem.ExchangeRate == 0 || fnRemittanceItem.ForeignCurrencyRemitted == 0) { errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("ExchangerateAndForeignCurrencyRemittedMustMoreThanZero")); } double totalRemittanceItemAmount = 0; foreach (FnRemittanceDataset.FnRemittanceItemRow remittanceItemRow in fnRemittanceDocumentDS.FnRemittanceItem.Select()) { if (!IsRepOffice) { totalRemittanceItemAmount += (double)Math.Round((decimal)remittanceItemRow.AmountTHB, 2, MidpointRounding.AwayFromZero); } else { totalRemittanceItemAmount += (double)Math.Round((decimal)remittanceItemRow.MainCurrencyAmount, 2, MidpointRounding.AwayFromZero); } } if (!IsRepOffice) { if (totalRemittanceItemAmount + fnRemittanceItem.AmountTHB > totalAdvance) { errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("TotalRemittanceItemNotMoreThanTotalAdvance")); } } else { if (totalRemittanceItemAmount + fnRemittanceItem.MainCurrencyAmount > totalAdvance) { errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("TotalRemittanceItemNotMoreThanTotalAdvance")); } } if (!errors.IsEmpty) { throw new ServiceValidationException(errors); } dr = fnRemittanceDocumentDS.FnRemittanceItem.Select(string.Format("CurrencyID = {0}", fnRemittanceItem.Currency.CurrencyID.ToString())); } if (dr.Length > 0) { if (isFromAddvance) { dr[0]["ForeignAmountTHBAdvanced"] = Convert.ToDouble(dr[0]["ForeignAmountTHBAdvanced"]) + fnRemittanceItem.ForeignAmountTHBAdvanced; dr[0]["ForeignCurrencyAdvanced"] = Convert.ToDouble(dr[0]["ForeignCurrencyAdvanced"]) + fnRemittanceItem.ForeignCurrencyAdvanced; if (Convert.ToDouble(dr[0]["ExchangeRate"]).Equals(0)) { dr[0]["ExchangeRate"] = fnRemittanceItem.ExchangeRate; } else { dr[0]["ExchangeRate"] = (Convert.ToDouble(dr[0]["ExchangeRate"]) + fnRemittanceItem.ExchangeRate) / 2; } } else { errors.AddError("Provider.Error", new Spring.Validation.ErrorMessage("DuplicateCurrency")); } if (!errors.IsEmpty) { throw new ServiceValidationException(errors); } return(Convert.ToInt64(dr[0]["RemittanceItemID"])); } else { FnRemittanceDataset.FnRemittanceItemRow fnRemittanceItemRow = fnRemittanceDocumentDS.FnRemittanceItem.NewFnRemittanceItemRow(); if (fnRemittanceItem.Remittance != null) { fnRemittanceItemRow.RemittanceID = fnRemittanceItem.Remittance.RemittanceID; } fnRemittanceItemRow.PaymentType = fnRemittanceItem.PaymentType; fnRemittanceItemRow.CurrencyID = fnRemittanceItem.Currency.CurrencyID; fnRemittanceItemRow.ForeignCurrencyAdvanced = (double)Math.Round((decimal)fnRemittanceItem.ForeignCurrencyAdvanced, 2, MidpointRounding.AwayFromZero); fnRemittanceItemRow.ExchangeRate = (double)Math.Round((decimal)fnRemittanceItem.ExchangeRate, 5, MidpointRounding.AwayFromZero); fnRemittanceItemRow.ForeignCurrencyRemitted = (double)Math.Round((decimal)fnRemittanceItem.ForeignCurrencyRemitted, 2, MidpointRounding.AwayFromZero); fnRemittanceItemRow.ForeignAmountTHBAdvanced = (double)Math.Round((decimal)fnRemittanceItem.ForeignAmountTHBAdvanced, 2, MidpointRounding.AwayFromZero); fnRemittanceItemRow.ExchangeRateTHB = (double)Math.Round((decimal)fnRemittanceItem.ExchangeRateTHB, 5, MidpointRounding.AwayFromZero); fnRemittanceItemRow.ForeignAmountMainCurrencyAdvanced = (double)Math.Round((decimal)fnRemittanceItem.ForeignAmountMainCurrencyAdvanced, 2, MidpointRounding.AwayFromZero); if (isFromAddvance) { fnRemittanceItemRow.AmountTHB = 0.00; fnRemittanceItemRow.MainCurrencyAmount = 0.00; } else { fnRemittanceItemRow.AmountTHB = (double)Math.Round((decimal)fnRemittanceItem.AmountTHB, 2, MidpointRounding.AwayFromZero); fnRemittanceItemRow.MainCurrencyAmount = (double)Math.Round((decimal)fnRemittanceItem.MainCurrencyAmount, 2, MidpointRounding.AwayFromZero); } fnRemittanceItemRow.IsImportFromAdvance = isFromAddvance; fnRemittanceItemRow.Active = fnRemittanceItem.Active; fnRemittanceItemRow.CreBy = UserAccount.UserID; fnRemittanceItemRow.CreDate = DateTime.Now; fnRemittanceItemRow.UpdBy = UserAccount.UserID; fnRemittanceItemRow.UpdDate = DateTime.Now; fnRemittanceItemRow.UpdPgm = UserAccount.CurrentProgramCode; fnRemittanceDocumentDS.FnRemittanceItem.AddFnRemittanceItemRow(fnRemittanceItemRow); FnRemittanceService.UpdateTotalRemittanceAmount(txID, fnRemittanceItemRow.RemittanceID); return(fnRemittanceItemRow.RemittanceItemID); } }