/// <summary> /// Guarda los costos de los movimientos /// </summary> /// <param name="distribucionDeIngredientes"></param> /// <param name="almacenMovimientoID"></param> /// <param name="distribucionorganizaciones"></param> /// <returns></returns> internal bool GuardarCosto(DistribucionDeIngredientesInfo distribucionDeIngredientes, long almacenMovimientoID, DistribucionDeIngredientesOrganizacionInfo distribucionorganizaciones) { bool regreso = true; try { var cuentaSAPBL = new CuentaSAPBL(); IList <CuentaSAPInfo> cuentasSAP = cuentaSAPBL.ObtenerTodos(EstatusEnum.Activo); var almacenMovimientoCostoBl = new AlmacenMovimientoCostoBL(); if (almacenMovimientoID > 0) { //Se obtiene el porcentaje a cobrar cargar por organizacion decimal porcentajeSurtido = distribucionDeIngredientes.CantidadTotal > 0 ? (decimal)distribucionorganizaciones.CantidadSurtir / (decimal)distribucionDeIngredientes.CantidadTotal : 0; foreach (var costoDistribucion in distribucionDeIngredientes.ListaPremezclaDistribucionCosto) { var almacenMovimientoCosto = new AlmacenMovimientoCostoInfo { AlmacenMovimientoId = almacenMovimientoID, Iva = costoDistribucion.Iva, Retencion = costoDistribucion.Retencion, CostoId = costoDistribucion.Costo.CostoID, Importe = costoDistribucion.Importe * porcentajeSurtido, UsuarioCreacionId = costoDistribucion.UsuarioCreacionID }; if (costoDistribucion.TieneCuenta) { CuentaSAPInfo cuenta = cuentasSAP.FirstOrDefault( sap => sap.CuentaSAP.Trim().Equals(costoDistribucion.CuentaSAP.CuentaSAP.Trim())); if (cuenta != null) { almacenMovimientoCosto.CuentaSAPID = cuenta.CuentaSAPID; almacenMovimientoCosto.TieneCuenta = costoDistribucion.TieneCuenta; } } else { almacenMovimientoCosto.ProveedorId = costoDistribucion.Proveedor.ProveedorID; } almacenMovimientoCostoBl.Crear(almacenMovimientoCosto); } } } catch (ExcepcionGenerica) { regreso = false; throw; } catch (Exception ex) { regreso = false; Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(regreso); }
/// <summary> /// Obtiene una lista de distribucion de ingredientes /// </summary> /// <param name="reader"></param> /// <returns></returns> internal static List <DistribucionDeIngredientesInfo> ObtenerPremezclaDistribucionConciliacion(IDataReader reader) { try { Logger.Info(); var distribuciones = new List <DistribucionDeIngredientesInfo>(); DistribucionDeIngredientesInfo distribucion; while (reader.Read()) { distribucion = new DistribucionDeIngredientesInfo { Producto = new ProductoInfo { ProductoId = Convert.ToInt32(reader["ProductoID"]), Descripcion = Convert.ToString(reader["Producto"]), UnidadId = Convert.ToInt32(reader["UnidadID"]), SubfamiliaId = Convert.ToInt32(reader["SubFamiliaID"]) }, Iva = Convert.ToInt32(reader["IVA"]), CantidadExistente = Convert.ToInt32(reader["CantidadExistente"]), CostoUnitario = Convert.ToInt32(reader["CostoUnitario"]), PremezclaDistribucionID = Convert.ToInt32(reader["PremezclaDistribucionID"]), FechaEntrada = Convert.ToDateTime(reader["FechaEntrada"]), AlmaceMovimientoID = Convert.ToInt64(reader["AlmacenMovimientoID"]), Proveedor = new ProveedorInfo { ProveedorID = Convert.ToInt32(reader["ProveedorID"]), Descripcion = Convert.ToString(reader["Proveedor"]), CodigoSAP = Convert.ToString(reader["CodigoSAP"]) } }; distribuciones.Add(distribucion); } reader.NextResult(); var distribucionIngredientesOrganizaciones = new List <DistribucionDeIngredientesOrganizacionInfo>(); DistribucionDeIngredientesOrganizacionInfo distribucionIngredienteOrganizacion; while (reader.Read()) { distribucionIngredienteOrganizacion = new DistribucionDeIngredientesOrganizacionInfo { Lote = new AlmacenInventarioLoteInfo { Lote = Convert.ToInt32(reader["Lote"]), AlmacenInventario = new AlmacenInventarioInfo { Almacen = new AlmacenInfo { AlmacenID = Convert.ToInt32(reader["AlmacenID"]) } } }, Organizacion = new OrganizacionInfo { OrganizacionID = Convert.ToInt32(reader["OrganizacionID"]) }, CantidadSurtir = Convert.ToInt32(reader["CantidadASurtir"]), CantidadNueva = Convert.ToInt32(reader["CantidadASurtir"]), PremezclaDistribucionID = Convert.ToInt32(reader["PremezclaDistribucionID"]), }; distribucionIngredientesOrganizaciones.Add(distribucionIngredienteOrganizacion); } distribuciones.ForEach(datos => { datos.ListaOrganizaciones = distribucionIngredientesOrganizaciones.Where( id => id.PremezclaDistribucionID == datos.PremezclaDistribucionID) .Select(org => new DistribucionDeIngredientesOrganizacionInfo { Lote = org.Lote, Organizacion = org.Organizacion, CantidadSurtir = org.CantidadNueva, PremezclaDistribucionID = org.PremezclaDistribucionID, CostoTotal = org.CantidadNueva * datos.CostoUnitario }).ToList(); }); return(distribuciones); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }