private void AsignarPorArticulo(string fkarticulo, PedidosModel pedido, OperacionSaldarPedidosModel model) { var linea = model.Lineas.Single(f => f.Codigo == fkarticulo); var cantidadpedida = linea.Cantidadpedida - linea.Cantidadpendiente; foreach (var item in pedido.Lineas) { if (item.Fkarticulos == fkarticulo) { var cantidadpendiente = (item.Cantidad ?? 0) - (item.Cantidadpedida ?? 0); var auxcantidad = cantidadpendiente >= cantidadpedida ? cantidadpedida : cantidadpendiente; item.Cantidadpedida = (item.Cantidadpedida ?? 0) + auxcantidad; if (item.Cantidadpedida < 0) { item.Cantidadpedida = 0; } if (item.Cantidadpedida > item.Cantidad) { item.Cantidadpedida = item.Cantidad; } cantidadpedida -= auxcantidad; } } }
public void SaldarPedidos(OperacionSaldarPedidosModel model, AlbaranesModel entrega) { using (var tran = TransactionScopeBuilder.CreateTransactionObject()) { entrega.Pedidosaldado = true; SaldarLineaPedidos(model); edit(entrega); _db.SaveChanges(); tran.Complete(); } }
private void SaldarLineaPedidos(OperacionSaldarPedidosModel model) { var pedidosService = FService.Instance.GetService(typeof(PedidosModel), _context, _db) as PedidosService; var pedidoreferenciaObj = pedidosService.GetByReferencia(model.Fkpedidos); var pedidoobj = pedidosService.get(pedidoreferenciaObj.Id.ToString()) as PedidosModel; var agrupacionArticulos = pedidoobj.Lineas.GroupBy(f => f.Fkarticulos); foreach (var item in agrupacionArticulos) { AsignarCantidadesPedidas(item, pedidoobj, model); } pedidosService.edit(pedidoobj); }
private void AsignarPorArticuloMedidas(string fkarticulos, double?largo, double?ancho, double?grueso, PedidosModel pedido, OperacionSaldarPedidosModel model) { var linea = model.Lineas.Single(f => f.Codigo == fkarticulos && Funciones.Qdouble(f.Largo.Replace(".", "").Replace(",", ".")) == largo && Funciones.Qdouble(f.Ancho.Replace(".", "").Replace(",", ".")) == ancho && Funciones.Qdouble(f.Grueso.Replace(".", "").Replace(",", ".")) == grueso); var cantidadpedida = linea.Cantidadpedida - linea.Cantidadpendiente; foreach (var item in pedido.Lineas) { if (item.Fkarticulos == fkarticulos && item.Largo == largo && item.Ancho == ancho && item.Grueso == grueso) { var cantidadpendiente = (item.Cantidad ?? 0) - (item.Cantidadpedida ?? 0); var auxcantidad = cantidadpendiente >= cantidadpedida ? cantidadpedida : cantidadpendiente; item.Cantidadpedida = (item.Cantidadpedida ?? 0) + auxcantidad; if (item.Cantidadpedida < 0) { item.Cantidadpedida = 0; } if (item.Cantidadpedida > item.Cantidad) { item.Cantidadpedida = item.Cantidad; } cantidadpedida -= auxcantidad; } } }
private void AsignarCantidadesPedidas(IGrouping <string, PedidosLinModel> item, PedidosModel pedido, OperacionSaldarPedidosModel model) { if (pedido.Lineas.Count(f => f.Fkarticulos == item.Key) > 1) { var agrupacionArticulos = pedido.Lineas.Where(f => f.Fkarticulos == item.Key) .GroupBy(f => new { f.Fkarticulos, f.Largo, f.Ancho, f.Grueso }); foreach (var lineaarticulo in agrupacionArticulos) { AsignarPorArticuloMedidas(lineaarticulo.Key.Fkarticulos, lineaarticulo.Key.Largo, lineaarticulo.Key.Ancho, lineaarticulo.Key.Grueso, pedido, model); } } else { AsignarPorArticulo(item.Key, pedido, model); } }