public void AddInvoiceIntoQBLog(int invoiceId, decimal totalAvgCostAmt) { // Check duplicate log. smART.Model.QBLog parentQBLog = _repository.Find <Model.QBLog>(o => o.Source_ID == invoiceId && (o.Source_Type == "Invoice")).FirstOrDefault(); if (parentQBLog != null) { return; } // Get invoice. string[] predicates = { "Booking.Sales_Order_No.Party", "Sales_Order_No.Party" }; Model.Invoice entity = _repository.Find <Model.Invoice>(o => o.ID == invoiceId, predicates).FirstOrDefault(); if (entity != null && entity.Invoice_Status == "Closed") { // Get last entry to generate group. Model.QBLog latestQBLog = _repository.GetAll <Model.QBLog>().LastOrDefault(); int group = latestQBLog != null ? latestQBLog.Group + 1 : 1; if (entity.Invoice_Type == "Exports") { AddExportInvoiceIntoQBLog(entity, group, totalAvgCostAmt); } } }
private void AddExportInvoiceIntoQBLog(Model.Invoice invoice, int group, decimal totalAvgCostAmt) { //===================Sales====================== // Add Debit entry. smART.Model.QBLog parentQBLog = new Model.QBLog(); parentQBLog.Source_ID = invoice.ID; parentQBLog.Source_Type = "Invoice"; parentQBLog.Parent_ID = 0; parentQBLog.Account_No = ""; parentQBLog.Account_Name = "Accounts Receivable"; parentQBLog.Credit_Amt = invoice.Net_Amt; parentQBLog.Remarks = string.Format("Invoice#: {0}, Invoice Party: {1}", invoice.ID, invoice.Booking.Sales_Order_No.Party.Party_Name); parentQBLog.Parent_ID = 0; parentQBLog.Group = group; parentQBLog.Name = invoice.Booking.Sales_Order_No.Party.Party_Name; parentQBLog.RS_Ref_No = invoice.ID.ToString(); parentQBLog = AddInQBLog(parentQBLog, invoice); // Add Credit entry. smART.Model.QBLog childQBLog = new Model.QBLog(); childQBLog.Source_ID = invoice.ID; childQBLog.Parent_ID = parentQBLog.ID; childQBLog.Account_No = ""; childQBLog.Account_Name = "Sales"; childQBLog.Debit_Amt = invoice.Net_Amt; childQBLog.Remarks = string.Format("Invoice#: {0}, Invoice Party: {1}", invoice.ID, invoice.Booking.Sales_Order_No.Party.Party_Name); childQBLog.Group = group; childQBLog.Source_Type = "Invoice"; childQBLog.Name = invoice.Booking.Sales_Order_No.Party.Party_Name; childQBLog.RS_Ref_No = invoice.ID.ToString(); AddInQBLog(childQBLog, invoice); //===================Inventory Asset====================== // Add Debit entry. smART.Model.QBLog parentQBLogAcRec = new Model.QBLog(); parentQBLogAcRec.Source_ID = invoice.ID; parentQBLogAcRec.Source_Type = "Invoice"; parentQBLogAcRec.Parent_ID = 0; parentQBLogAcRec.Account_No = ""; parentQBLogAcRec.Account_Name = "Cost of Goods Sold"; parentQBLogAcRec.Credit_Amt = totalAvgCostAmt; parentQBLogAcRec.Remarks = string.Format("Invoice#: {0}, Invoice Party: {1}", invoice.ID, invoice.Booking.Sales_Order_No.Party.Party_Name); parentQBLogAcRec.Parent_ID = 0; parentQBLogAcRec.Group = group + 1; parentQBLogAcRec.Name = invoice.Booking.Sales_Order_No.Party.Party_Name; parentQBLogAcRec.RS_Ref_No = invoice.ID.ToString(); parentQBLogAcRec = AddInQBLog(parentQBLogAcRec, invoice); // Add Credit entry. smART.Model.QBLog childQBLogAcRec = new Model.QBLog(); childQBLogAcRec.Source_ID = invoice.ID; childQBLogAcRec.Parent_ID = parentQBLogAcRec.ID; childQBLogAcRec.Account_No = ""; childQBLogAcRec.Account_Name = "Inventory Asset"; childQBLogAcRec.Debit_Amt = totalAvgCostAmt; childQBLogAcRec.Remarks = string.Format("Invoice#: {0}, Invoice Party: {1}", invoice.ID, invoice.Booking.Sales_Order_No.Party.Party_Name); childQBLogAcRec.Group = group + 1; childQBLogAcRec.Source_Type = "Invoice"; childQBLogAcRec.Name = invoice.Booking.Sales_Order_No.Party.Party_Name; childQBLogAcRec.RS_Ref_No = invoice.ID.ToString(); AddInQBLog(childQBLogAcRec, invoice); }