Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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);
        }