예제 #1
0
        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;
        }
예제 #2
0
 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;
 }