public async Task <IHttpActionResult> GetOrderHeader(int id) { //OrderHeader orderHeader = await db.OrderHeaders.FindAsync(id); //if (orderHeader == null) //{ // return NotFound(); //} var orderHeader = await db.OrderHeaders .Where(c => c.SalesOrderHeaderId == id) .ToListAsync(); //.FirstOrDefaultAsync(); if (orderHeader == null) { return(NotFound()); } int InvoiceNum = 0; bool Facturado = false; List <OrderSyncPhone> orderSyncPhonelist = new List <OrderSyncPhone>(); foreach (var item in orderHeader) { if (item.OrderNum != 0) { clsConexion objCon = new clsConexion(); DataTable dtInvcOrder = new DataTable(); //Obtenemos las ordenes sin enviar a Epicor objCon.Connection = NutraBioticsBackend.Properties.Resources.ConexionEpicor; string SQL = " Select OrderNum,InvoiceNum " + " from Erp.InvcHead" + " where OrderNum =" + item.OrderNum; objCon.SQL = SQL; dtInvcOrder = objCon.ConsultarDT(); if (dtInvcOrder.Rows.Count > 0) { Facturado = true; InvoiceNum = Convert.ToInt32(dtInvcOrder.Rows[0]["InvoiceNum"]); } else { Facturado = false; InvoiceNum = 0; } } else { Facturado = false; InvoiceNum = 0; } OrderSyncPhone orderSyncPhone = new OrderSyncPhone(); orderSyncPhone.SalesOrderHeaderInterId = item.SalesOrderHeaderId; orderSyncPhone.SalesOrderHeaderPhoneId = 0;//SalesOrderHeaderPhoneId; orderSyncPhone.OrderNum = item.OrderNum; orderSyncPhone.TaxAmt = item.TaxAmt; orderSyncPhone.Total = item.Total; orderSyncPhone.Facturado = Facturado; orderSyncPhone.InvoiceNum = InvoiceNum; orderSyncPhonelist.Add(orderSyncPhone); } return(Ok(orderSyncPhonelist)); }
public async Task <IHttpActionResult> PostOrderHeader(List <OrderHeaderSync> list) { using (var transaccion = db.Database.BeginTransaction()) { try { int contactid = 0, connum = 0; List <OrderSyncPhone> orderSyncPhonelist = new List <OrderSyncPhone>(); foreach (var order in list) { if (order.Platform == "Movil") { var contactlist = await db.Contacts .Where(c => c.ShipToId == order.ShipToId) .FirstOrDefaultAsync(); if (contactlist == null) { var shipto = await db.ShipToes .Where(s => s.ShipToId == order.ShipToId) .FirstOrDefaultAsync(); var contact = new Contact { Address = shipto.Address, City = shipto.City, Company = shipto.Company, State = shipto.State, Country = shipto.Country, Name = shipto.ShipToName, PhoneNum = shipto.PhoneNum, ConNum = 1, ShipToNum = shipto.ShipToNum, ShipToId = shipto.ShipToId, }; db.Contacts.Add(contact); await db.SaveChangesAsync(); var contactlist2 = await db.Contacts .Where(c => c.ShipToId == order.ShipToId) .FirstOrDefaultAsync(); contactid = contactlist2.ContactId; connum = contactlist2.ConNum; } else { contactid = contactlist.ContactId; connum = contactlist.ConNum; } } else { contactid = order.ContactId; connum = order.ConNum; } var orderHeader = new OrderHeader { CustId = order.CustId, ContactId = contactid, OrderNum = order.OrderNum, ConNum = connum, CreditHold = order.CreditHold, CustomerId = order.CustomerId, Date = order.Date, SalesCategory = order.SalesCategory, Observations = order.Observations, ShipToId = order.ShipToId, ShipToNum = order.ShipToNum, TermsCode = order.TermsCode, UserId = order.UserId, NeedByDate = order.NeedByDate, RowMod = order.RowMod, Total = order.Total, VendorId = order.VendorId, Platform = order.Platform, SalesOrderHeaderInterId = order.SalesOrderHeaderInterId }; if (orderHeader.SalesOrderHeaderInterId != 0) { await DeleteOrderDetail(orderHeader.SalesOrderHeaderInterId); await DeleteOrderHeader(orderHeader.SalesOrderHeaderInterId); } db.OrderHeaders.Add(orderHeader); await db.SaveChangesAsync(); OrderSyncPhone orderSyncPhone = new OrderSyncPhone(); orderSyncPhone.SalesOrderHeaderInterId = orderHeader.SalesOrderHeaderId; orderSyncPhone.SalesOrderHeaderPhoneId = order.SalesOrderHeaderPhoneId; orderSyncPhone.TaxAmt = orderHeader.TaxAmt; orderSyncPhone.Total = orderHeader.Total; orderSyncPhone.OrderNum = order.OrderNum; orderSyncPhonelist.Add(orderSyncPhone); foreach (var detail in order.OrderDetails) { var orderDetail = new OrderDetail { OrderLine = detail.OrderLine, OrderQty = detail.OrderQty, OrderNum = detail.OrderNum, PartId = detail.PartId, PartNum = detail.PartNum, PriceListPartId = detail.PriceListPartId, SalesOrderHeaderId = orderHeader.SalesOrderHeaderId, TaxAmt = detail.TaxAmt, UnitPrice = detail.UnitPrice, Reference = detail.Reference, Total = detail.Total }; db.OrderDetails.Add(orderDetail); } //orderHeaderList.Add(orderHeader); } await db.SaveChangesAsync(); transaccion.Commit(); return(Ok(orderSyncPhonelist)); } catch (DbEntityValidationException e) { var message = string.Empty; foreach (var eve in e.EntityValidationErrors) { message += string.Format("Entity of type \"{0}\" in state \"{1}\" has the following " + "validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { message += string.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } transaccion.Rollback(); return(BadRequest(message)); } catch (Exception ex) { transaccion.Rollback(); return(BadRequest(ex.Message)); } } }