public int InsertInvoice(OrderDateModel Order) { int result = 0; int InvoiceID; INVOICE invoice = new INVOICE(); List<INVOICE_DETAIL> invoiceDEtail = new List<INVOICE_DETAIL>(); List<INVOICE_DETAIL_MODIFIRE> invoiceDetailModifier = new List<INVOICE_DETAIL_MODIFIRE>(); List<PAYMENT_INVOICE_HISTORY> PaymentHistory = new List<PAYMENT_INVOICE_HISTORY>(); List<INVOICE_BY_CARD> InvoiceByCard = new List<INVOICE_BY_CARD>(); ACC_PAYMENT Acc = new ACC_PAYMENT(); using (var trans = _context.Database.BeginTransaction()) { _context.Database.ExecuteSqlCommand("update ORDER_DATE set Status=1 where OrderID='" + Order.OrderID + "'"); invoice = CopyInvoice(Order); _context.Entry(invoice).State = System.Data.Entity.EntityState.Added; _context.SaveChanges(); InvoiceID = invoice.InvoiceID; string InvNum = InvoiceID + "" + DateTime.Now.Date.Year + "" + DateTime.Now.Date.Month + "" + DateTime.Now.Date.Day; _context.Database.ExecuteSqlCommand("update invoice set InvoiceNumber='" + InvNum + "'where InvoiceID='" + InvoiceID + "'"); //Update balance for customer _context.Database.ExecuteSqlCommand("update client set balance=balance+'" + -Convert.ToInt32(Order.Payment) + "' where ClientID='" + Order.CusItem.ClientID + "'"); Acc = CopyAcc(Order); Acc.InvoiceID = InvoiceID; Acc.InvoiceNumber =Convert.ToInt32(InvNum); //_context.Entry(Acc).State = System.Data.Entity.EntityState.Added; string sql = "insert into acc_payment(CusNo,SubTotal,InvoiceID,InvoiceNumber,Cash,Card,IsCredit,IsDebit,CreateDate,CreateBy,UpdateDate,UpdateBy)values(" + "'" + Order.CusItem.ClientID + "','" + Convert.ToInt32(Order.Payment) + "','" + InvoiceID + "','" + Convert.ToInt32(InvNum) + "',0,0,1,0,'" + DateTime.Now + "','" + Order.ShiftID + "','" + DateTime.Now + "','" + Order.ShiftID + "')"; _context.Database.ExecuteSqlCommand("insert into acc_payment(CusNo,SubTotal,InvoiceID,InvoiceNumber,Cash,Card,IsCredit,IsDebit,CreateDate,CreateBy,UpdateDate,UpdateBy)values(" + "'" + Order.CusItem.ClientID + "','" +Convert.ToInt32(Order.Payment) + "','" + InvoiceID + "','" +Convert.ToInt32(InvNum) + "',0,0,1,0,'" + DateTime.Now + "','" + Order.ShiftID + "','" + DateTime.Now + "','" + Order.ShiftID + "')"); // invoiceDEtail = CopyInvoicedetail(Order); foreach (INVOICE_DETAIL item in invoiceDEtail) { item.InvoiceID = InvoiceID; item.InvoiceNumber = Convert.ToInt32(InvNum); _context.Entry(item).State = System.Data.Entity.EntityState.Added; } invoiceDetailModifier = CopyInvoiceMidifire(Order); foreach (INVOICE_DETAIL_MODIFIRE item in invoiceDetailModifier) { item.InvoiceID = InvoiceID; item.InvoiceNumber = Convert.ToInt32(InvNum); _context.Entry(item).State = System.Data.Entity.EntityState.Added; } PaymentHistory = CopyListPayment(Order); foreach (PAYMENT_INVOICE_HISTORY item in PaymentHistory) { item.InvoiceID = InvoiceID; item.InvoiceNumber = Convert.ToInt32(InvNum); _context.Entry(item).State = System.Data.Entity.EntityState.Added; } InvoiceByCard = CopyInvoiceByCard(Order); foreach(INVOICE_BY_CARD item in InvoiceByCard) { item.InvoiceID = InvoiceID; _context.Entry(item).State = System.Data.Entity.EntityState.Added; } _context.SaveChanges(); trans.Commit(); result = 1; } return result; }
private INVOICE CopyInvoice(OrderDateModel itemOrder) { INVOICE invoice = new INVOICE(); invoice.InvoiceNumber = itemOrder.InvoiceNumber; invoice.OrderID = itemOrder.OrderID; invoice.OrderNumber = itemOrder.OrderNumber; invoice.Total = Convert.ToInt32(itemOrder.TotalAmount); invoice.Status = 1; invoice.DiscountType = itemOrder.DiscountType; invoice.Discount =(itemOrder.Discount); invoice.Payment = itemOrder.Payment; invoice.Change = itemOrder.Change; invoice.CashOut =Convert.ToInt32(itemOrder.CashOut); if (itemOrder.ListInvoiceByCard.Count > 0) invoice.InvoiceByCardID =Convert.ToInt32(CustomerInvoiceByCardID()); else invoice.InvoiceByCardID = 0; invoice.CreateBy = itemOrder.CreateBy ?? 0; invoice.CreateDate = DateTime.Now; invoice.UpdateBy = itemOrder.UpdateBy ?? 0; invoice.UpdateDate = DateTime.Now; invoice.Note = itemOrder.Note ?? ""; invoice.ShiftID = itemOrder.ShiftID; return invoice; }