public static void GetCCCashDepositCostList(int operationId) { var operCostObj = AccountingHelper.GetOperationCost(operationId, 0); var operCostList = operCostObj.OperationCostAccVms; var operCostTotalList = operCostObj.OperationCostTotalAccVms; Dictionary <int, string> ccCost = ListCommonHelper.GetCustClearCostList(); }
internal static List <InvoiceLightVm> GetInvListForHb(int hbId) { AccountingEntities db2 = new AccountingEntities(); var invList = db2.Invoices.Where(x => x.HouseBillId == hbId) .Select(x => new InvoiceLightVm { InvoiceCode = x.InvoiceCode, InvoiceId = x.InvoiceId, InvoiceDate = x.InvoiceDate, InvoiceType = x.InvoiceType, HouseBillId = x.HouseBillId }) .ToList(); //Get Cost list var operCostObj = AccountingHelper.GetOperationCost(0, hbId); var operCostList = operCostObj.OperationCostAccVms; foreach (var item in invList) { var operCostTotalList = operCostObj.OperationCostTotalAccVms; GetHbInvTotal(item.InvoiceType, ref operCostList, ref operCostTotalList); item.OperationCostTotalAccVms = operCostTotalList; } return(invList); }
private static void AddExpenseReceiptToTrans(CashInVm cashInVmObj) { string creditAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.CurrencyId, "Currency", "CurrencyId"); if (string.IsNullOrEmpty(creditAccId)) { string parentAccountId = ((int)AccountingChartEnum.Cash).ToString(); //Add new accountId to the chart creditAccId = AccountingChartHelper .AddAccountToChart(cashInVmObj.CurrencySign, cashInVmObj.CurrencySign, parentAccountId); AccountingChartHelper.AddAccountIdToObj(creditAccId, "Currency", cashInVmObj.CurrencyId, "CurrencyId"); } AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(), TransactionName = "Cash Out Receipt Number " + cashInVmObj.ReceiptCode, TransactionNameAr = "ايصال صرف نقدية رقم " + cashInVmObj.ReceiptCode }; AccountingEntities db = new AccountingEntities(); var expensesLibList = db.ExpenseLibs.Select(x => new { x.ExpenseId, x.AccountId }).ToList(); AccTransactionDetailVm accTransDetDebit; //Loop through expenses for debit accounts foreach (var item in cashInVmObj.CashOutReceiptExpenses) { string debitAccId = expensesLibList.Where(x => x.ExpenseId == item.ExpenseId).FirstOrDefault().AccountId; accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccId, DebitAmount = item.PaidAmount.Value, CurrencyId = cashInVmObj.CurrencyId, CreditAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetDebit); } // Add Cash as credit AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccId, CreditAmount = cashInVmObj.ReceiptAmount.Value, CurrencyId = cashInVmObj.CurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "CashOutReceipt", cashInVmObj.ReceiptId, "ReceiptId"); }
private static void AddAgentToTransTable(string agentAccId, AgentNoteVm agentNoteVm) { AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(), TransactionName = "Agent Note Number " + agentNoteVm.AgentNoteCode, TransactionNameAr = "فاتورة agent رقم " + agentNoteVm.AgentNoteCode }; AccTransactionDetailVm accTransDetDebit; AccTransactionDetailVm accTransDetCredit; if (agentNoteVm.AgentNoteType == 1) // Debit .. A/R deb-- SoldServices cr .. same like invoice { accTransDetDebit = new AccTransactionDetailVm() { AccountId = agentAccId, CreditAmount = 0, CurrencyId = agentNoteVm.CurrencyId, DebitAmount = agentNoteVm.TotalAmount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); accTransDetCredit = new AccTransactionDetailVm() { AccountId = ((int)AccountingChartEnum.SoldServices).ToString(), CreditAmount = agentNoteVm.TotalAmount, CurrencyId = agentNoteVm.CurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); } else //Credit not .. CarrierCostOfSales deb -- A/P cr { accTransDetDebit = new AccTransactionDetailVm() { AccountId = ((int)AccountingChartEnum.CarrierCostOfSales).ToString(), CreditAmount = 0, CurrencyId = agentNoteVm.CurrencyId, DebitAmount = agentNoteVm.TotalAmount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); accTransDetCredit = new AccTransactionDetailVm() { AccountId = agentAccId, CreditAmount = agentNoteVm.TotalAmount, CurrencyId = agentNoteVm.CurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); } int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "AgentNote", agentNoteVm.AgentNoteId, "AgentNoteId"); }
internal static string Delete(int invId, string deleteReason) { string isSaved = "false"; if (invId == 0) { return(isSaved); } AccountingEntities db = new AccountingEntities(); InvoiceAP invDb = new InvoiceAP(); invDb = db.InvoiceAPs .Where(x => x.InvoiceId == invId).FirstOrDefault(); int?transID = null; if (invDb.TransId != null) { transID = invDb.TransId.Value; } if (invDb.InvStatusId == 1 || invDb.InvStatusId == 2) { invDb.IsDeleted = true; invDb.DeleteReason = deleteReason; invDb.DeletedBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(); invDb.TransId = null; // invoice total var invTotal = db.InvoiceTotalAPs.Where(x => x.InvoiceId == invId).FirstOrDefault(); try { db.SaveChanges(); db.InvoiceTotalAPs.Remove(invTotal); if (transID.HasValue) { AccountingHelper.DeleteTransaction(transID.Value); } isSaved = "true"; } catch { isSaved = "false"; } } return(isSaved); }
private static void AddAPInvToTransTable(string creditAccountId, InvoiceVm invoiceVm) { string debitAccId = ""; byte invFor = invoiceVm.InvoiceType; if (invFor == 1) //carrier { debitAccId = ((int)AccountingChartEnum.CarrierCostOfSales).ToString(); } else if (invFor == 2) //Contractor { debitAccId = ((int)AccountingChartEnum.TruckingCostOfSales).ToString(); } else if (invFor == 3) //Custom Clearance { debitAccId = ((int)AccountingChartEnum.CCCostOfSales).ToString(); } AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(), TransactionName = "Invoice Number " + invoiceVm.InvoiceCode, TransactionNameAr = "فاتورة رقم " + invoiceVm.InvoiceCode }; AccTransactionDetailVm accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccId, CreditAmount = 0, CurrencyId = invoiceVm.InvCurrencyId, DebitAmount = invoiceVm.InvoiceTotals.FirstOrDefault().TotalAmount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccountId, CreditAmount = invoiceVm.InvoiceTotals.FirstOrDefault().TotalAmount, CurrencyId = invoiceVm.InvCurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "InvoiceAP", invoiceVm.InvoiceId, "InvoiceId"); }
private static void AddReceiptToTransTableTransfer(CashBankTransferVm currVm, int cashInReceiptId, int cashOutReceiptId) { string creditAccId, debitAccId; creditAccId = currVm.IsCashToBank ? AccountingChartHelper.GetAccountIdByPkAndTbName(currVm.CurrentCurrencyId, "Currency", "CurrencyId") : currVm.AccountId; debitAccId = currVm.IsCashToBank ? currVm.AccountId : AccountingChartHelper.GetAccountIdByPkAndTbName(currVm.CurrentCurrencyId, "Currency", "CurrencyId"); decimal amount = currVm.CurrentAmount; AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = CurrentUserId, TransactionName = currVm.IsCashToBank ? "Cash to bank transfer" : "Bank to cash transfer", TransactionNameAr = currVm.IsCashToBank ? "تحويل من الخزينة الى البنك" : "تحويل من البنك للخزينة" }; AccTransactionDetailVm accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccId, CreditAmount = 0, CurrencyId = currVm.CurrentCurrencyId, DebitAmount = amount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccId, CreditAmount = currVm.CurrentAmount, CurrencyId = currVm.CurrentCurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "CashInReceipt", cashInReceiptId, "ReceiptId"); AccountingChartHelper.AddTransIdToObj(transId, "CashOutReceipt", cashOutReceiptId, "ReceiptId"); }
private static void AddReceiptToTransTable(CurrencyExchangeVm currVm, int cashInReceiptId, int cashOutReceiptId) { string creditAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(currVm.CurrentCurrencyId, "Currency", "CurrencyId"); string debitAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(currVm.NewCurrencyId, "Currency", "CurrencyId"); decimal creditAmount = currVm.CurrentAmount; decimal debitAmount = currVm.NewAmount; AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = CurrentUserId, TransactionName = "Currency Exchange", TransactionNameAr = "تحويل عملة" }; AccTransactionDetailVm accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccId, CreditAmount = 0, CurrencyId = currVm.NewCurrencyId, DebitAmount = debitAmount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccId, CreditAmount = currVm.CurrentAmount, CurrencyId = currVm.CurrentCurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "CashInReceipt", cashInReceiptId, "ReceiptId"); AccountingChartHelper.AddTransIdToObj(transId, "CashOutReceipt", cashOutReceiptId, "ReceiptId"); }
private static void AddCheckActionToTransTable(string debitAccId, string creditAccId, decimal amount, int currencyId, string comment, string commentAr, int receiptId, string tbName) { AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = AdminHelper.GetCurrentUserId(), TransactionName = comment, TransactionNameAr = commentAr }; AccTransactionDetailVm accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccId, CreditAmount = 0, CurrencyId = currencyId, DebitAmount = amount }; accTrans.AccTransactionDetails.Add(accTransDetDebit); AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccId, CreditAmount = amount, CurrencyId = currencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, tbName, receiptId, "ReceiptId"); }
public static AgentNoteVm GetAgentNoteInfo(int operId, byte noteType, int agNoteId = 0, bool forEdit = true) { AgentNoteVm agNoteVm = new AgentNoteVm(noteType); OperationsEntities db1 = new OperationsEntities(); AccountingEntities db = new AccountingEntities(); AgentNote agNoteDb; if (agNoteId != 0) { agNoteDb = db.AgentNotes.Where(x => x.AgentNoteId == agNoteId).FirstOrDefault(); Mapper.CreateMap <AgentNote, AgentNoteVm>().IgnoreAllNonExisting(); Mapper.CreateMap <AgentNoteDetail, AgentNoteDetailVm>().IgnoreAllNonExisting(); Mapper.Map(agNoteDb, agNoteVm); operId = agNoteDb.OperationId; //agNoteVm.FromPort = operationInfo.FromPort; //agNoteVm.ToPort = operationInfo.ToPort; } else { agNoteDb = new AgentNote(); agNoteVm.AgentNoteCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.AgentNote, false); } var operationInfo = db1.OperationViews.Where(x => x.OperationId == operId).FirstOrDefault(); Mapper.CreateMap <OperationView, AgentNoteVm>() .ForMember(x => x.CreateBy, y => y.Ignore()) .ForMember(x => x.CreateDate, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(operationInfo, agNoteVm); if (operationInfo.OrderFrom == 1) { agNoteVm.CustomerName = operationInfo.ShipperNameEn; } else { agNoteVm.CustomerName = operationInfo.ConsigneeNameEn; } agNoteVm.AgentName = operationInfo.AgentNameEn; var operCostObj = AccountingHelper.GetOperationCost(agNoteVm.OperationId, 0); var agentCostList = operCostObj.OperationCostAccVms.Where(x => x.IsAgent).ToList(); var agentCostTotalList = operCostObj.OperationCostTotalAccVms.Where(x => x.TotalAgentRate != 0).ToList(); var operCostList = db1.OperationCosts.Include("OperationCostLib").Include("Currency") .Where(x => x.OperationId == operId && x.IsAgentCost == true).ToList(); agNoteVm.ContainerSummary = operCostObj.ContainerSummary; agNoteVm.OperationCostAccVms = agentCostList; agNoteVm.OperationCostTotalAccVms = agentCostTotalList; agNoteVm.HouseBillId = agentCostList.FirstOrDefault().HouseBillId; if (agentCostList.Count > 0) { agNoteVm.CurrencyId = agentCostList.FirstOrDefault().CurrencyId; agNoteVm.CurrencySign = agentCostList.FirstOrDefault().CurrencySign; } if (forEdit) { //Get prev agent note details for this operation List <int> usedCost = db.AgentNoteDetails .Where(x => x.AgentNote.OperationId == operId) .Select(x => x.OperCostId) .ToList(); var newCosts = operCostList.Where(x => !usedCost.Contains(x.OperCostId)).ToList(); AgentNoteDetailVm agentNoteDetailVm; foreach (var item in newCosts) { agentNoteDetailVm = new AgentNoteDetailVm() { AgentNoteDetailId = 0, CostName = item.OperationCostLib.OperCostNameEn, CurrencyId = item.CurrencyId, CurrencySign = item.Currency.CurrencySign, ExchangeRate = 1, MainAmount = agNoteVm.AgentNoteType == 1 ? item.OperationCostSelling : item.OperationCostNet, MainCurrencyId = item.CurrencyId, MainCurrencySign = item.Currency.CurrencySign, OperCostId = item.OperCostId, OperCostLibId = item.OperCostLibId }; agNoteVm.AgentNoteDetails.Add(agentNoteDetailVm); } } else { foreach (var item in agNoteVm.AgentNoteDetails) { item.CostName = operCostList .Where(x => x.OperCostId == item.OperCostId).FirstOrDefault().OperationCostLib.OperCostNameEn; } } return(agNoteVm); }
internal static string Delete(int invId, string deleteReason) { string isSaved = "false"; if (invId == 0) { return(isSaved); } AccountingEntities db = new AccountingEntities(); Invoice invDb = new Invoice(); invDb = db.Invoices .Where(x => x.InvoiceId == invId).FirstOrDefault(); int?transID = null; if (invDb.TransId != null) { transID = invDb.TransId.Value; } if (invDb.InvStatusId == 1 || invDb.InvStatusId == 2) { invDb.IsDeleted = true; invDb.DeleteReason = deleteReason; invDb.DeletedBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(); invDb.TransId = null; // invoice total var invTotal = db.InvoiceTotals.Where(x => x.InvoiceId == invId).FirstOrDefault(); try { db.SaveChanges(); db.InvoiceTotals.Remove(invTotal); if (transID.HasValue) { AccountingHelper.DeleteTransaction(transID.Value); } #region Update Operation Status... try { var provInvs = db.Invoices .Where(x => x.OperationId == invDb.OperationId && x.IsDeleted == null && x.InvoiceId != invDb.InvoiceId).ToList(); if (provInvs.Count == 0) { OperationsEntities opdb = new OperationsEntities(); var operation = opdb.Operations.Where(z => z.OperationId == invDb.OperationId).FirstOrDefault(); operation.StatusId = 3; opdb.SaveChanges(); } } catch { } #endregion isSaved = "true"; } catch { isSaved = "false"; } } return(isSaved); }
public static InvoiceVm GetInvoiceInfoNew(int hbId = 0, int invId = 0, bool forEdit = true) { InvoiceVm invoiceVm = new InvoiceVm(0); AccountingEntities db = new AccountingEntities(); if (invId != 0) { Invoice invDb = db.Invoices.Where(x => x.InvoiceId == invId).FirstOrDefault(); Mapper.CreateMap <Invoice, InvoiceVm>().IgnoreAllNonExisting(); Mapper.CreateMap <InvoiceDetail, InvoiceDetailVm>().IgnoreAllNonExisting(); Mapper.CreateMap <InvoiceTotal, InvoiceTotalVm>().IgnoreAllNonExisting(); Mapper.Map(invDb, invoiceVm); //invoiceVm.FromPort = hbInfo.FromPort; //invoiceVm.ToPort = hbInfo.ToPort; invoiceVm.PaymentTermName = invDb.PaymentTerm.PaymentTermEn; invoiceVm.CurrencySign = invDb.Currency.CurrencySign; //invType = invDb.InvoiceType; //Add Tax part //decimal totalBeforeTax = invoiceVm.InvoiceDetails.Sum(x => x.InvoiceAmount); // invoiceVm.InvoiceTotals.FirstOrDefault().TotalBeforeTax = totalBeforeTax; // invoiceVm.InvoiceTotals.FirstOrDefault().TaxDepositAmount = totalBeforeTax - invoiceVm.InvoiceTotals.FirstOrDefault().TotalAmount; } else { invoiceVm.InvoiceCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.AccountingInvoice, false); } if (hbId == 0) { hbId = invoiceVm.HouseBillId.Value; } OperationsEntities db1 = new OperationsEntities(); var hbInfo = db1.HouseBillViews.Where(x => x.HouseBillId == hbId).FirstOrDefault(); Mapper.CreateMap <HouseBillView, InvoiceVm>() .ForMember(x => x.CreateBy, y => y.Ignore()) .ForMember(x => x.CreateDate, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(hbInfo, invoiceVm); if (hbInfo.OrderFrom == 1) { invoiceVm.CustomerName = hbInfo.ShipperNameEn; invoiceVm.ConsigneeId = null; } else { invoiceVm.CustomerName = hbInfo.ConsigneeNameEn; invoiceVm.ShipperId = null; } //Get Cost list var operCostObj = AccountingHelper.GetOperationCost(invoiceVm.OperationId, invoiceVm.HouseBillId.Value); var operCostList = operCostObj.OperationCostAccVms; var operCostTotalList = operCostObj.OperationCostTotalAccVms; GetHbInvTotal(0, ref operCostList, ref operCostTotalList); invoiceVm.OperationCostAccVms = operCostList; invoiceVm.OperationCostTotalAccVms = operCostTotalList; if (forEdit) { //Get prev invoice details for this HB // adding condation [x.Invoice.IsDeleted==null] get undeleted invoices var prevInvDetails = db.InvoiceDetails .Where(x => x.Invoice.HouseBillId == hbId && x.Invoice.IsDeleted == null).OrderBy(x => x.ItemOrder) .Select(x => new { x.CostFkId, x.FkType }) .ToList(); InvoiceDetailVm invDetailVm; //Add other costs that are not inserted in inv details table for (int i = 1; i < 4; i++) // loop for the three cost types { List <int> usedCost = invoiceVm.InvoiceDetails.Where(x => x.FkType == i).Select(x => x.CostFkId).ToList(); usedCost.AddRange(prevInvDetails.Where(x => x.FkType == i).Select(x => x.CostFkId).ToList()); var newCosts = operCostList.Where(x => !usedCost.Contains(x.CostFkId) && x.FkType == i).ToList(); foreach (var item in newCosts) { invDetailVm = new InvoiceDetailVm() { CostFkId = item.CostFkId, CostName = item.CostName, ExchangeRate = 1, FkType = item.FkType, InvDetailId = 0, InvoiceAmount = item.SellingRate, InvoiceId = invoiceVm.InvoiceId, MainAmount = item.SellingRate, MainCurrencyId = item.CurrencyIdSelling, MainCurrSign = item.CurrencySignSelling }; invoiceVm.InvoiceDetails.Add(invDetailVm); } } if (invoiceVm.InvoiceTotals.Count == 0) { InvoiceTotalVm invTotal = new InvoiceTotalVm() { CurrencyId = invoiceVm.InvCurrencyId, CurrencySign = invoiceVm.CurrencySign, InvoiceId = invoiceVm.InvoiceId, TotalAmount = 0 }; invoiceVm.InvoiceTotals.Add(invTotal); } } else { Dictionary <int, string> operCost = new Dictionary <int, string>(); Dictionary <int, string> truckCost = new Dictionary <int, string>(); Dictionary <int, string> ccCost = new Dictionary <int, string>(); if (invoiceVm.InvoiceDetails.Any(x => x.FkType == (byte)CostType.OperationCost)) { operCost = ListCommonHelper.GetOperationCostList(); } if (invoiceVm.InvoiceDetails.Any(x => x.FkType == (byte)CostType.TruckingCost)) { truckCost = ListCommonHelper.GetTruckingCostNameList(); } if (invoiceVm.InvoiceDetails.Any(x => x.FkType == (byte)CostType.CCCost)) { ccCost = ListCommonHelper.GetCustClearCostList(); } //Get cost name for invoice items foreach (var item in invoiceVm.InvoiceDetails) { item.CostName = invoiceVm.OperationCostAccVms .Where(x => x.CostFkId == item.CostFkId && x.FkType == item.FkType) .FirstOrDefault().CostName; } } invoiceVm.InvoiceDetails = invoiceVm.InvoiceDetails.OrderBy(z => z.ItemOrder).ToList(); return(invoiceVm); }
/// <summary> /// Add Invoice amounts to the accounting transactions table /// </summary> /// <param name="clientAccId">shipeer/ consignee account Id</param> /// <param name="invVm">Invoice Vm obj</param> private static void AddInvToTransTable(string clientAccId, InvoiceVm invoiceVm) { AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(), TransactionName = "Invoice Number " + invoiceVm.InvoiceCode, TransactionNameAr = "فاتورة رقم " + invoiceVm.InvoiceCode }; //Get Cost list // var operCostObj = AccountingHelper.GetOperationCost(invoiceVm.OperationId, invoiceVm.HouseBillId); var operCostList = invoiceVm.InvoiceDetails; var operCostTotalList = invoiceVm.InvoiceTotals; //GetHbInvTotal(invoiceVm.InvoiceType, ref operCostList, ref operCostTotalList); //Tax Deposit AccountId string taxDepositAccId = ""; if (operCostTotalList.FirstOrDefault().TaxDepositAmount != 0) { taxDepositAccId = GetTaxDepositAccountId(invoiceVm.OrderFrom, invoiceVm.ShipperId, invoiceVm.ConsigneeId); } AccTransactionDetailVm accTransDetDebit; AccTransactionDetailVm accTransDetCredit; AccTransactionDetailVm accTransDetVAT; foreach (var item in operCostTotalList) { accTransDetDebit = new AccTransactionDetailVm(); accTransDetDebit.AccountId = clientAccId; accTransDetDebit.DebitAmount = item.TotalAmount; accTransDetDebit.CurrencyId = item.CurrencyId; accTransDetCredit = new AccTransactionDetailVm(); accTransDetCredit.AccountId = ((int)AccountingChartEnum.SoldServices).ToString(); accTransDetCredit.CreditAmount = item.TotalBeforeTax; accTransDetCredit.CurrencyId = item.CurrencyId; accTrans.AccTransactionDetails.Add(accTransDetDebit); accTrans.AccTransactionDetails.Add(accTransDetCredit); if (item.VatTaxAmount != 0) { accTransDetVAT = new AccTransactionDetailVm(); accTransDetVAT.AccountId = ((int)AccountingChartEnum.VAT).ToString(); accTransDetVAT.CreditAmount = item.VatTaxAmount; accTransDetVAT.CurrencyId = item.CurrencyId; accTrans.AccTransactionDetails.Add(accTransDetVAT); } if (!string.IsNullOrEmpty(taxDepositAccId)) { AccTransactionDetailVm accTransTaxDepDebit = new AccTransactionDetailVm(); accTransTaxDepDebit.AccountId = taxDepositAccId; accTransTaxDepDebit.DebitAmount = item.TaxDepositAmount; accTransTaxDepDebit.CurrencyId = item.CurrencyId; accTrans.AccTransactionDetails.Add(accTransTaxDepDebit); } } int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "Invoice", invoiceVm.InvoiceId, "InvoiceId"); }
/// <summary> /// /// </summary> /// <param name="hbId"></param> /// <param name="operId"></param> /// <param name="invId"></param> /// <param name="invType">0 all currency, 1 EGP only, 2 other currency</param> /// <returns></returns> public static InvoiceVm GetInvoiceInfo(int hbId = 0, int operId = 0, int invId = 0, byte invType = 0) { InvoiceVm invoiceVm = new InvoiceVm(invType); OperationsEntities db1 = new OperationsEntities(); var hbInfo = db1.HouseBillViews.Where(x => x.HouseBillId == hbId).FirstOrDefault(); //Get saved invoice for HB with same invoice type .. if any AccountingEntities db = new AccountingEntities(); var savedInv = db.Invoices.Where(x => x.HouseBillId == hbId && x.InvoiceType == invType).FirstOrDefault(); if (savedInv != null) { invId = savedInv.InvoiceId; } //If invoice id != 0 ... will fill InvoiceVm from Invoice table if (invId != 0) { Invoice invDb = db.Invoices.Where(x => x.InvoiceId == invId).FirstOrDefault(); Mapper.CreateMap <Invoice, InvoiceVm>().IgnoreAllNonExisting(); Mapper.CreateMap <InvoiceTotal, InvoiceTotalVm>().IgnoreAllNonExisting(); Mapper.Map(invDb, invoiceVm); invoiceVm.FromPort = hbInfo.FromPort; invoiceVm.ToPort = hbInfo.ToPort; invoiceVm.PaymentTermName = invDb.PaymentTerm.PaymentTermEn; invType = invDb.InvoiceType; } else { invoiceVm.InvoiceCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.AccountingInvoice, false); } Mapper.CreateMap <HouseBillView, InvoiceVm>() .ForMember(x => x.CreateBy, y => y.Ignore()) .ForMember(x => x.CreateDate, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(hbInfo, invoiceVm); if (hbInfo.OrderFrom == 1) { invoiceVm.CustomerName = hbInfo.ShipperNameEn; invoiceVm.ConsigneeId = null; } else { invoiceVm.CustomerName = hbInfo.ConsigneeNameEn; invoiceVm.ShipperId = null; } //Get Cost list var operCostObj = AccountingHelper.GetOperationCost(invoiceVm.OperationId, invoiceVm.HouseBillId.Value); var operCostList = operCostObj.OperationCostAccVms; var operCostTotalList = operCostObj.OperationCostTotalAccVms; GetHbInvTotal(invType, ref operCostList, ref operCostTotalList); invoiceVm.OperationCostAccVms = operCostList; invoiceVm.OperationCostTotalAccVms = operCostTotalList; return(invoiceVm); }
/// <summary> /// /// </summary> /// <param name="operId"></param> /// <param name="invId"></param> /// <param name="invFor">if = 1 Invoice for Carrier .. if 2 invoice for Contractor .. if 3 custom clearance</param> /// <param name="forEdit"></param> /// <returns></returns> public static InvoiceVm GetInvoiceInfoFullOperation(int operId = 0, int invId = 0, byte invFor = 1, bool forEdit = true) { InvoiceVm invoiceVm = new InvoiceVm(invFor); AccountingEntities db = new AccountingEntities(); if (invId != 0) { InvoiceAP invDb = db.InvoiceAPs.Include("InvoiceDetailAPs").Include("InvoiceTotalAPs") .Where(x => x.InvoiceId == invId && x.IsDeleted == null).FirstOrDefault(); Mapper.CreateMap <InvoiceAP, InvoiceVm>() .IgnoreAllNonExisting(); Mapper.Map(invDb, invoiceVm); Mapper.CreateMap <InvoiceDetailAP, InvoiceDetailVm>().IgnoreAllNonExisting(); Mapper.CreateMap <InvoiceTotalAP, InvoiceTotalVm>().IgnoreAllNonExisting(); InvoiceDetailVm invDetVm; foreach (var item in invDb.InvoiceDetailAPs) { invDetVm = new InvoiceDetailVm(); Mapper.Map(item, invDetVm); invoiceVm.InvoiceDetails.Add(invDetVm); } InvoiceTotalVm invTotalVm; foreach (var item in invDb.InvoiceTotalAPs) { invTotalVm = new InvoiceTotalVm(); Mapper.Map(item, invTotalVm); invoiceVm.InvoiceTotals.Add(invTotalVm); } invoiceVm.PaymentTermName = invDb.PaymentTerm.PaymentTermEn; invoiceVm.CurrencySign = invDb.Currency.CurrencySign; } else { invoiceVm.InvoiceCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.APInvoice, false); } if (operId == 0) { operId = invoiceVm.OperationId; } OperationsEntities db1 = new OperationsEntities(); var hbInfo = db1.OperationViews.Where(x => x.OperationId == operId).FirstOrDefault(); Mapper.CreateMap <OperationView, InvoiceVm>() .ForMember(x => x.CreateBy, y => y.Ignore()) .ForMember(x => x.CreateDate, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(hbInfo, invoiceVm); if (invFor == 1) //Carrier { invoiceVm.ContractorId = null; invoiceVm.SupplierName = hbInfo.CarrierNameEn; invoiceVm.CustomerName = hbInfo.CarrierNameEn; } else if (invFor == 2) { var contractorInfo = db1.TruckingOrdersViews .Where(x => x.OperationId == operId) .Select(x => new { x.ContractorId, x.ContractorNameEn }) .FirstOrDefault(); if (contractorInfo != null) { invoiceVm.CarrierId = null; invoiceVm.SupplierName = contractorInfo.ContractorNameEn; invoiceVm.ContractorId = contractorInfo.ContractorId; invoiceVm.CustomerName = contractorInfo.ContractorNameEn; } } else if (invFor == 3) { invoiceVm.SupplierName = "Custom Clearance"; invoiceVm.CustomerName = "Custom Clearance"; } //Get Cost list var operCostObj = AccountingHelper.GetOperationCost(invoiceVm.OperationId, 0); var operCostList = operCostObj.OperationCostAccVms; var operCostTotalList = operCostObj.OperationCostTotalAccVms; // GetHbInvTotal(0, ref operCostList, ref operCostTotalList); invoiceVm.OperationCostAccVms = operCostList; invoiceVm.OperationCostTotalAccVms = operCostTotalList; if (forEdit) { //Get prev invoice details for this HB var prevInvDetails = db.InvoiceDetailAPs .Where(x => x.InvoiceAP.OperationId == operId && x.InvoiceAP.IsDeleted == null) .Select(x => new { x.CostFkId, x.FkType }) .ToList(); InvoiceDetailVm invDetailVm; //invFor == 1 ..get operation cost only //invFor == 2 ..get trucking cost only //invFor == 3 ..get custom clearance cost only List <int> usedCost = invoiceVm.InvoiceDetails.Where(x => x.FkType == invFor).Select(x => x.CostFkId).ToList(); usedCost.AddRange(prevInvDetails.Where(x => x.FkType == invFor).Select(x => x.CostFkId).ToList()); var newCosts = operCostList.Where(x => !usedCost.Contains(x.CostFkId) && x.FkType == invFor).ToList(); foreach (var item in newCosts.Where(x => x.NetRate > 0)) { invDetailVm = new InvoiceDetailVm() { CostFkId = item.CostFkId, CostName = item.CostName, ExchangeRate = 1, FkType = item.FkType, InvDetailId = 0, InvoiceAmount = item.NetRate, InvoiceId = invoiceVm.InvoiceId, MainAmount = item.NetRate, MainCurrencyId = item.CurrencyId, MainCurrSign = item.CurrencySign }; invoiceVm.InvoiceDetails.Add(invDetailVm); } if (invoiceVm.InvoiceTotals.Count == 0) { InvoiceTotalVm invTotal = new InvoiceTotalVm() { CurrencyId = invoiceVm.InvCurrencyId, CurrencySign = invoiceVm.CurrencySign, InvoiceId = invoiceVm.InvoiceId, TotalAmount = 0 }; invoiceVm.InvoiceTotals.Add(invTotal); } } else { Dictionary <int, string> operCost = new Dictionary <int, string>(); Dictionary <int, string> truckCost = new Dictionary <int, string>(); Dictionary <int, string> ccCost = new Dictionary <int, string>(); if (invoiceVm.InvoiceDetails.Any(x => x.FkType == (byte)CostType.OperationCost)) { operCost = ListCommonHelper.GetOperationCostList(); } else if (invoiceVm.InvoiceDetails.Any(x => x.FkType == (byte)CostType.TruckingCost)) { truckCost = ListCommonHelper.GetTruckingCostNameList(); } else if (invoiceVm.InvoiceDetails.Any(x => x.FkType == (byte)CostType.CCCost)) { ccCost = ListCommonHelper.GetCustClearCostList(); } //Get cost name for invoice items foreach (var item in invoiceVm.InvoiceDetails) { item.CostName = invoiceVm.OperationCostAccVms .Where(x => x.CostFkId == item.CostFkId && x.FkType == item.FkType) .FirstOrDefault().CostName; } } return(invoiceVm); }
internal static void AddReceiptToTransTable(string debitAccountId, CashInVm cashInVmObj, bool IsOpenBalancePayment = false) { //Check Payment type string creditAccId = ""; byte paymentType = cashInVmObj.PaymentTermId; switch (paymentType) { case 1: //cash creditAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(cashInVmObj.CurrencyId, "Currency", "CurrencyId"); if (string.IsNullOrEmpty(creditAccId)) { string parentAccountId = ((int)AccountingChartEnum.Cash).ToString(); //Add new accountId to the chart creditAccId = AccountingChartHelper .AddAccountToChart(cashInVmObj.CurrencySign, cashInVmObj.CurrencySign, parentAccountId); AccountingChartHelper.AddAccountIdToObj(creditAccId, "Currency", cashInVmObj.CurrencyId, "CurrencyId"); } break; case 3: // Bank Cash Deposit int bankAccountId = cashInVmObj.BankAccId.Value; int bankId = cashInVmObj.BankId.Value; creditAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(bankAccountId, "BankAccount", "BankAccId"); if (string.IsNullOrEmpty(creditAccId)) { creditAccId = AccountingChartHelper.AddBankAccountToChart(bankId, bankAccountId); } break; case 4: //Check creditAccId = ((int)AccountingChartEnum.NotesPayable).ToString(); break; default: break; } AccTransactionVm accTrans = new AccTransactionVm() { CreateDate = DateTime.Now, CreateBy = EasyFreight.DAL.AdminHelper.GetCurrentUserId(), TransactionName = "Cash Out Receipt Number " + cashInVmObj.ReceiptCode + (IsOpenBalancePayment ? " pay open balance " : ""), TransactionNameAr = "ايصال صرف نقدية رقم " + cashInVmObj.ReceiptCode }; AccTransactionDetailVm accTransDetDebit = new AccTransactionDetailVm() { AccountId = debitAccountId, CreditAmount = 0, CurrencyId = cashInVmObj.CurrencyId, DebitAmount = cashInVmObj.ReceiptAmount.Value }; accTrans.AccTransactionDetails.Add(accTransDetDebit); AccTransactionDetailVm accTransDetCredit = new AccTransactionDetailVm() { AccountId = creditAccId, CreditAmount = cashInVmObj.ReceiptAmount.Value, CurrencyId = cashInVmObj.CurrencyId, DebitAmount = 0 }; accTrans.AccTransactionDetails.Add(accTransDetCredit); int transId = AccountingHelper.AddTransaction(accTrans); //Update TransId in invoice table AccountingChartHelper.AddTransIdToObj(transId, "CashOutReceipt", cashInVmObj.ReceiptId, "ReceiptId"); }