/// <summary> /// Obtiene una lista de produccion de formula /// </summary> /// <param name="reader"></param> /// <returns></returns> internal static List <ProduccionFormulaInfo> ObtenerResumenDeProduccion(IDataReader reader) { try { Logger.Info(); var ResumenProduccionLista = new List <ProduccionFormulaInfo>(); var formula = new ProduccionFormulaInfo(); while (reader.Read()) { formula = new ProduccionFormulaInfo { Formula = new FormulaInfo { FormulaId = Convert.ToInt32(reader["FormulaID"]), Descripcion = Convert.ToString(reader["Descripcion"]) }, CantidadProducida = Convert.ToDecimal(reader["Cantidad"]), CantidadReparto = Convert.ToDecimal(reader["CantidadServida"]) }; ResumenProduccionLista.Add(formula); } return(ResumenProduccionLista); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda los datos capturados en el formulario "ProduccionFormula" en la tabla "ProduccionFormulaBatch" /// </summary> internal static Dictionary <string, object> GuardarProduccionFormulaBatch(ProduccionFormulaInfo produccionFormula) { try { var xml = new XElement("ROOT", from info in produccionFormula.ProduccionFormulaDetalle select new XElement("ListaProduccionFormula", new XElement("ProduccionFormulaID", info.ProduccionFormulaId), new XElement("CantidadProducto", Convert.ToInt32(Math.Round(info.CantidadProducto))), new XElement("ProductoId", info.Producto.ProductoId) )); var parametros = new Dictionary <string, object> { { "@XmlListaProduccionFormula", xml.ToString() }, { "@OrganizacionID", produccionFormula.Organizacion.OrganizacionID }, { "@FormulaID", produccionFormula.Formula.FormulaId }, { "@RotomixID", produccionFormula.RotoMixID }, { "@Batch", produccionFormula.Batch }, { "@CantidadProgramada", Convert.ToDecimal(Numeros.ValorCero) }, { "@Activo", Convert.ToBoolean(EstatusEnum.Activo) }, { "@UsuarioCreacionID", produccionFormula.UsuarioCreacionId }, }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
public static ProduccionFormulaInfo ConsultarFormulaId(int formulaId) { ProduccionFormulaInfo resultado = null; try { int organizacionid = 0; var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo; organizacionid = seguridad.Usuario.Organizacion.OrganizacionID; var produccionFormulaResumenPL = new ProduccionFormulaResumenPL(); ProduccionFormulaResumenInfo produccionFormulaResumenInfo = new ProduccionFormulaResumenInfo(); produccionFormulaResumenInfo.OrganizacionID = organizacionid; produccionFormulaResumenInfo.FormulaID = formulaId; produccionFormulaResumenInfo.TipoAlmacenID = Convert.ToInt16(TipoAlmacenEnum.PlantaDeAlimentos); resultado = produccionFormulaResumenPL.ConsultarFormulaId(produccionFormulaResumenInfo); } catch (ExcepcionDesconocida) { throw; } catch (Exception ex) { Logger.Error(ex); } return(resultado); }
/// <summary> /// Obtiene de la formula ingresada y para la organizacion del usuario, cuanto hay en inventario y cuanto esta programada para repartir /// </summary> internal ProduccionFormulaInfo ConsultarFormulaId(ProduccionFormulaResumenInfo produccionFormulaResumenInfo) { try { Dictionary <string, object> parameters = AuxProduccionFormulaResumenDAL.ConsultarFormulaId(produccionFormulaResumenInfo); DataSet ds = Retrieve("ProduccionFormula_Resumen", parameters); ProduccionFormulaInfo result = null; if (ValidateDataSet(ds)) { result = MapProduccionFormulaResumen.ConsultarFormulaId(ds); } return(result); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Método que obtiene un registro /// </summary> /// <param name="ds"></param> /// <returns></returns> public static ProduccionFormulaInfo ObtenerPorFolioMovimiento(DataSet ds) { try { Logger.Info(); DataTable dt = ds.Tables[ConstantesDAL.DtDatos]; ProduccionFormulaInfo entidad = (from info in dt.AsEnumerable() select new ProduccionFormulaInfo { ProduccionFormulaId = info.Field <int>("ProduccionFormulaID"), Organizacion = new OrganizacionInfo { OrganizacionID = info.Field <int>("OrganizacionID"), Descripcion = info.Field <string>("Organizacion") }, FolioFormula = info.Field <int>("FolioFormula"), Formula = new FormulaInfo { FormulaId = info.Field <int>("FormulaID"), Descripcion = info.Field <string>("Formula") }, CantidadProducida = info.Field <decimal>("CantidadProducida"), FechaProduccion = info.Field <DateTime>("FechaProduccion"), AlmacenMovimientoEntradaID = info.Field <long?>("AlmacenMovimientoEntradaID") != null ? info.Field <long>("AlmacenMovimientoEntradaID") : 0, AlmacenMovimientoSalidaID = info.Field <long?>("AlmacenMovimientoSalidaID") != null ? info.Field <long>("AlmacenMovimientoSalidaID") : 0, DescripcionFormula = info.Field <string>("Formula"), Activo = info.Field <bool>("Activo").BoolAEnum(), FolioMovimiento = info.Field <long>("FolioMovimiento"), }).First(); return(entidad); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda la produccion de una formula y retorna el objeto /// </summary> /// <param name="produccionFormula"></param> /// <returns></returns> internal ProduccionFormulaInfo GuardarProduccionFormula(ProduccionFormulaInfo produccionFormula) { try { Logger.Info(); var parameters = AuxProduccionFormulaDAL.GuardarProduccionFormula(produccionFormula); var ds = Retrieve("ProduccionFormula_Crear", parameters); ProduccionFormulaInfo result = null; if (ValidateDataSet(ds)) { result = MapProduccionFormulaDAL.GuardarProduccionFormula(ds); } return(result); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene los parametros para guardar una formula /// </summary> /// <param name="produccionFormula"></param> /// <returns></returns> internal static Dictionary <string, object> GuardarProduccionFormula(ProduccionFormulaInfo produccionFormula) { Dictionary <string, object> parametros; try { Logger.Info(); parametros = new Dictionary <string, object> { { "@OrganizacionID", produccionFormula.Organizacion.OrganizacionID }, { "@FormulaID", produccionFormula.Formula.FormulaId }, { "@CantidadProducida", produccionFormula.CantidadProducida }, { "@TipoFolio", TipoFolio.ProduccionFormula }, { "@AlmacenMovimientoEntradaID", produccionFormula.AlmacenMovimientoEntradaID }, { "@AlmacenMovimientoSalidaID", produccionFormula.AlmacenMovimientoSalidaID }, { "@UsuarioCreacionID", produccionFormula.UsuarioCreacionId }, { "@FechaProduccion", produccionFormula.FechaProduccion } }; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(parametros); }
/// <summary> /// Obtiene un flujo de datos /// para la generacion de la reimpresion /// de la poliza de Salida de Traspaso /// </summary> /// <param name="produccionFormula"></param> /// <param name="polizaClave"></param> /// <returns></returns> private MemoryStream ReimpresionPolizaProduccionAlimento(ProduccionFormulaInfo produccionFormula, TipoPolizaInfo polizaClave) { var polizaBL = new PolizaBL(); IList <PolizaInfo> polizasProduccionAlimento = polizaBL.ObtenerPoliza(TipoPoliza.ProduccionAlimento, produccionFormula.Organizacion.OrganizacionID, produccionFormula.FechaProduccion, produccionFormula.FolioFormula.ToString(CultureInfo.InvariantCulture), polizaClave.ClavePoliza, 1); MemoryStream stream = null; if (polizasProduccionAlimento != null) { var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.ProduccionAlimento); var produccionFormulaBL = new ProduccionFormulaBL(); using (var almacenDAL = new AlmacenDAL()) { var almacenMovimientoBL = new AlmacenMovimientoBL(); ProduccionFormulaInfo produccion = produccionFormulaBL.ObtenerPorIDCompleto(produccionFormula.ProduccionFormulaId); if (produccion != null) { AlmacenInfo almacenPlantaAlimento = almacenDAL.ObtenerAlmacenOrganizacionTipo(produccionFormula.Organizacion.OrganizacionID, TipoAlmacenEnum.PlantaDeAlimentos); AlmacenMovimientoInfo almacenMovimiento = almacenMovimientoBL.ObtenerPorIDCompleto(produccion.AlmacenMovimientoSalidaID); var produccionFormulaDetalles = new List <ProduccionFormulaDetalleInfo>(); if (almacenMovimiento != null) { foreach (var detalle in produccion.ProduccionFormulaDetalle) { var movimiento = almacenMovimiento.ListaAlmacenMovimientoDetalle.FirstOrDefault( alm => alm.Producto.ProductoId == detalle.Producto.ProductoId && alm.AlmacenInventarioLoteId == detalle.AlmacenInventarioLoteID); if (movimiento == null) { continue; } detalle.CantidadProducto = movimiento.Cantidad; detalle.PrecioPromedio = movimiento.Precio; produccionFormulaDetalles.Add(detalle); } } if (almacenPlantaAlimento == null) { return(null); } produccion.ProduccionFormulaDetalle = produccionFormulaDetalles; produccion.Almacen = almacenPlantaAlimento; polizasProduccionAlimento = poliza.GeneraPoliza(produccion); stream = poliza.ImprimePoliza(produccion, polizasProduccionAlimento); } } } return(stream); }
/// <summary> /// Obtiene un registro de ProduccionFormula /// </summary> /// <param name="produccionFormulaID">Identificador de la ProduccionFormula</param> /// <returns></returns> public ProduccionFormulaInfo ObtenerPorID(int produccionFormulaID) { try { Logger.Info(); Dictionary <string, object> parameters = AuxProduccionFormulaDAL.ObtenerParametrosPorID(produccionFormulaID); DataSet ds = Retrieve("ProduccionFormula_ObtenerPorID", parameters); ProduccionFormulaInfo result = null; if (ValidateDataSet(ds)) { result = MapProduccionFormulaDAL.ObtenerPorID(ds); } return(result); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda los datos capturados en el formulario "ProduccionFormula" en la tabla "ProduccionFormulaBatch" /// </summary> public void GuardarProduccionFormulaBatch(ProduccionFormulaInfo produccionFormula) { try { Logger.Info(); var produccionFormulaBatchDAL = new ProduccionFormulaBatchDAL(); produccionFormulaBatchDAL.GuardarProduccionFormulaBatch(produccionFormula); } catch (ExcepcionDesconocida ex) { Logger.Error(ex); throw; } catch (Exception ex) { Logger.Error(ex); } }
public static ProduccionFormulaInfo GuardarProduccionFormula(string fecha, int FormulaId, decimal CantidadProducida, List <ProduccionFormulaDetalleInfo> ProduccionFormulaDetalle, int RotoMixID, int Batch) { ProduccionFormulaInfo retorno = null; try { var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo; if (seguridad != null) { ProduccionFormulaInfo produccionFormula = new ProduccionFormulaInfo() { FechaProduccion = Convert.ToDateTime(fecha), Organizacion = new OrganizacionInfo() { OrganizacionID = seguridad.Usuario.Organizacion.OrganizacionID }, UsuarioCreacionId = seguridad.Usuario.UsuarioID, Formula = new FormulaInfo() { FormulaId = FormulaId }, ProduccionFormulaDetalle = ProduccionFormulaDetalle, RotoMixID = RotoMixID, Batch = Batch, CantidadProducida = CantidadProducida }; var produccionFormulaPl = new ProduccionFormulaPL(); retorno = produccionFormulaPl.GuardarProduccionFormula(produccionFormula); } } catch (ExcepcionDesconocida ex) { Logger.Error(ex); throw; } catch (Exception ex) { Logger.Error(ex); } return(retorno); }
/// <summary> /// Obtiene de la formula ingresada y para la organizacion del usuario, cuanto hay en inventario y cuanto esta programada para repartir /// </summary> internal ProduccionFormulaInfo ConsultarFormulaId(ProduccionFormulaResumenInfo produccionFormulaResumenInfo) { try { Logger.Info(); var produccionFormulaResumenDAL = new ProduccionFormulaResumenDAL(); ProduccionFormulaInfo result = produccionFormulaResumenDAL.ConsultarFormulaId(produccionFormulaResumenInfo); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene Parametros por Id /// </summary> /// <param name="produccionFormula">Identificador de la entidad ProduccionFormula</param> /// <returns></returns> public static Dictionary <string, object> ObtenerParametrosPorFolioFormula(ProduccionFormulaInfo produccionFormula) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@FolioMovimiento", produccionFormula.FolioMovimiento }, { "@OrganizacionID", produccionFormula.Organizacion.OrganizacionID } }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una entidad por su Id /// </summary> /// <param name="produccionFormula"></param> /// <returns></returns> public ProduccionFormulaInfo ObtenerPorFolioMovimiento(ProduccionFormulaInfo produccionFormula) { try { Logger.Info(); var produccionFormulaBL = new ProduccionFormulaBL(); ProduccionFormulaInfo result = produccionFormulaBL.ObtenerPorFolioMovimiento(produccionFormula); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Genera las Lineas del Detalle /// </summary> /// <param name="produccionFormula"></param> private void GeneraLineasDetalle(ProduccionFormulaInfo produccionFormula) { PolizaModel.Detalle = new List <PolizaDetalleModel>(); PolizaDetalleModel detalleModel; foreach (var detalle in produccionFormula.ProduccionFormulaDetalle) { detalleModel = new PolizaDetalleModel { CantidadCabezas = detalle.Producto.ProductoId.ToString(CultureInfo.InvariantCulture), PesoPromedio = string.Empty, TipoGanado = detalle.Producto.ProductoDescripcion, PesoTotal = string.Format("{0} {1}.", detalle.CantidadProducto.ToString("N2"), detalle.Producto.UnidadMedicion.ClaveUnidad), ImportePromedio = detalle.PrecioPromedio.ToString("N2"), PrecioVenta = Math.Round(detalle.CantidadProducto * detalle.PrecioPromedio, 2).ToString("N2"), }; PolizaModel.Detalle.Add(detalleModel); } polizaImpresion.GenerarDetalles("Detalle"); }
/// <summary> /// Genera los totales por Detalle /// </summary> /// <param name="produccionFormula"></param> private void GeneraLineaTotales(ProduccionFormulaInfo produccionFormula) { var sumaImporte = Math.Round(produccionFormula.ProduccionFormulaDetalle.Sum(importe => importe.CantidadProducto * importe.PrecioPromedio), 2); PolizaModel.Detalle = new List <PolizaDetalleModel>(); var detalleModel = new PolizaDetalleModel { CantidadCabezas = string.Empty, PesoPromedio = string.Empty, TipoGanado = string.Empty, Lote = string.Empty, PesoTotal = string.Empty, ImportePromedio = string.Empty, PrecioVenta = sumaImporte.ToString("N2", CultureInfo.CurrentCulture), ImporteVenta = string.Empty, Corral = string.Empty }; PolizaModel.Detalle.Add(detalleModel); }
/// <summary> /// Guarda la produccion de una formula, ademas graba el detalle /// </summary> /// <param name="produccionFormula"></param> /// <returns></returns> public ProduccionFormulaInfo GuardarProduccionFormula(ProduccionFormulaInfo produccionFormula) { ProduccionFormulaInfo retorno = null; try { Logger.Info(); var produccionFormulaBl = new ProduccionFormulaBL(); retorno = produccionFormulaBl.GuardarProduccionFormula(produccionFormula); } catch (ExcepcionDesconocida) { throw; } catch (Exception ex) { Logger.Error(ex); } return(retorno); }
/// <summary> /// Obtiene de la formula ingresada y para la organizacion del usuario, cuanto hay en inventario y cuanto esta programada para repartir /// </summary> internal static ProduccionFormulaInfo ConsultarFormulaId(DataSet ds) { try { Logger.Info(); DataTable dt = ds.Tables[ConstantesDAL.DtDatos]; ProduccionFormulaInfo resultado = (from info in dt.AsEnumerable() select new ProduccionFormulaInfo { DescripcionFormula = info.Field <string>("DescripcionFormula"), CantidadProducida = info.Field <decimal>("CantidadProducida"), CantidadReparto = Convert.ToDecimal(info.Field <int>("CantidadReparto")), }).First(); return(resultado); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda los datos capturados en el formulario "ProduccionFormula" en la tabla "ProduccionFormulaBatch" /// </summary> internal void GuardarProduccionFormulaBatchLista(ProduccionFormulaInfo produccionFormula, int ProduccionFormulaId) { try { Logger.Info(); var parameters = AuxProduccionFormulaBatchDAL.GuardarProduccionFormulaBatchLista(produccionFormula, ProduccionFormulaId); Create("GuardarProduccionFormulaBatch", parameters); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda los datos capturados en el formulario "ProduccionFormula" en la tabla "ProduccionFormulaBatch" /// </summary> internal static Dictionary <string, object> GuardarProduccionFormulaBatchLista(ProduccionFormulaInfo produccionFormula, int ProduccionFormulaId) { try { var xml = new XElement("ROOT", from info in produccionFormula.ProduccionFormulaBatch select new XElement("ListaProduccionFormulaBatch", new XElement("ProduccionFormulaID", ProduccionFormulaId), new XElement("OrganizacionID", info.OrganizacionID), new XElement("ProductoID", info.ProductoID), new XElement("FormulaID", info.FormulaID), new XElement("RotomixID", info.RotomixID), new XElement("Batch", info.Batch), new XElement("CantidadProgramada", info.CantidadProgramada), new XElement("CantidadReal", info.CantidadReal), new XElement("Activo", (int)info.Activo), new XElement("UsuarioCreacionID", produccionFormula.UsuarioCreacionId) )); var parametros = new Dictionary <string, object> { { "@XmlProduccionFormulaBatch", xml.ToString() }, }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene un lista paginada /// </summary> /// <param name="pagina"></param> /// <param name="filtro"></param> /// <returns></returns> public ResultadoInfo <ProduccionFormulaInfo> ObtenerPorPagina(PaginacionInfo pagina, ProduccionFormulaInfo filtro) { try { Dictionary <string, object> parameters = AuxProduccionFormulaDAL.ObtenerParametrosPorPagina(pagina, filtro); DataSet ds = Retrieve("ProduccionFormula_ObtenerPorPagina", parameters); ResultadoInfo <ProduccionFormulaInfo> result = null; if (ValidateDataSet(ds)) { result = MapProduccionFormulaDAL.ObtenerPorPagina(ds); } return(result); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene parametros para obtener lista paginada /// </summary> /// <param name="pagina"></param> /// <param name="filtro"></param> /// <returns></returns> public static Dictionary <string, object> ObtenerParametrosPorPagina(PaginacionInfo pagina, ProduccionFormulaInfo filtro) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@OrganizacionID", filtro.Organizacion.OrganizacionID }, { "@Descripcion", filtro.DescripcionFormula ?? string.Empty }, { "@Activo", filtro.Activo }, { "@Inicio", pagina.Inicio }, { "@Limite", pagina.Limite } }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Método que obtiene un registro /// </summary> /// <param name="ds"></param> /// <returns></returns> public static ProduccionFormulaInfo ObtenerPorIDCompleto(DataSet ds) { try { Logger.Info(); DataTable dt = ds.Tables[ConstantesDAL.DtDatos]; DataTable dtDetalle = ds.Tables[ConstantesDAL.DtDetalle]; ProduccionFormulaInfo entidad = (from info in dt.AsEnumerable() select new ProduccionFormulaInfo { ProduccionFormulaId = info.Field <int>("ProduccionFormulaID"), Organizacion = new OrganizacionInfo { OrganizacionID = info.Field <int>("OrganizacionID"), Descripcion = info.Field <string>("Organizacion") }, FolioFormula = info.Field <int>("FolioFormula"), Formula = new FormulaInfo { FormulaId = info.Field <int>("FormulaID"), Descripcion = info.Field <string>("Formula"), Producto = new ProductoInfo { ProductoId = info.Field <int>("ProductoID"), ProductoDescripcion = info.Field <string>("Producto") } }, CantidadProducida = info.Field <decimal>("CantidadProducida"), FechaProduccion = info.Field <DateTime>("FechaProduccion"), AlmacenMovimientoEntradaID = info.Field <long?>("AlmacenMovimientoEntradaID") != null ? info.Field <long>("AlmacenMovimientoEntradaID") : 0, AlmacenMovimientoSalidaID = info.Field <long?>("AlmacenMovimientoSalidaID") != null ? info.Field <long>("AlmacenMovimientoSalidaID") : 0, DescripcionFormula = info.Field <string>("Formula"), Activo = info.Field <bool>("Activo").BoolAEnum(), ProduccionFormulaDetalle = (from detalle in dtDetalle.AsEnumerable() select new ProduccionFormulaDetalleInfo { ProduccionFormulaId = detalle.Field <int>("ProduccionFormulaID"), ProduccionFormulaDetalleId = detalle.Field <int>("ProduccionFormulaDetalleID"), Producto = new ProductoInfo { ProductoId = detalle.Field <int>("ProductoID"), ProductoDescripcion = detalle.Field <string>("Producto"), UnidadMedicion = new UnidadMedicionInfo { UnidadID = detalle.Field <int>("UnidadID"), ClaveUnidad = detalle.Field <string>("ClaveUnidad") } }, CantidadProducto = detalle.Field <decimal>("CantidadProducto"), Ingrediente = new IngredienteInfo { IngredienteId = detalle.Field <int>("IngredienteID") }, AlmacenInventarioLoteID = detalle.Field <int>("AlmacenInventarioLoteID") }).ToList() }).First(); return(entidad); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
public ResultadoValidacion ValidacionesLista(List <ProcesarArchivoInfo> listaprocesarlo) { var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo; string mensajeOK = string.Empty; var localResourceObject = GetLocalResourceObject("OK"); if (localResourceObject != null) { mensajeOK = localResourceObject.ToString(); } string nombrerotomix = ""; var resultado = new ResultadoValidacion { Mensaje = mensajeOK }; var listaFormulaDetalle = new List <ProduccionFormulaDetalleInfo>(); var listaFormulaProduccionBatch = new List <ProduccionFormulaBatchInfo>(); try { List <ProcesarArchivoInfo> listaparadetalle = listaprocesarlo; //sacamos las distintas formulas del archivo de texto List <ProcesarArchivoInfo> formulas = listaprocesarlo.GroupBy(p => p.Formula).Select(g => g.First()).ToList(); foreach (var renglon in formulas) //recorremos por formulas { ProcesarArchivoInfo elemento = renglon; //sacamos los batchs var batches = from w in listaprocesarlo where w.Formula == elemento.Formula group w by w.batch into g select new { FirstLetter = g.Key, Words = g }; resultado.Mensaje = ValidarCodigoFormula(elemento); if (resultado.Mensaje != mensajeOK) { return(resultado); } int sumatoriameta = 0; int sumatoriareal = 0; listaFormulaProduccionBatch = new List <ProduccionFormulaBatchInfo>(); foreach (var batch in batches) { List <ProcesarArchivoInfo> lista = listaprocesarlo.Where(k => k.Formula == elemento.Formula && k.batch == batch.FirstLetter).ToList(); var detallesBatchs = new DetalleBatchInfo(); int sumatoriarealbatch = 0; foreach (ProcesarArchivoInfo elmentoArchivo in lista) { if (elmentoArchivo.Marca == "2") { resultado.Mensaje = ValidarColumnaCodigoLista(elmentoArchivo); if (resultado.Mensaje != mensajeOK) { return(resultado); } } else { resultado.Mensaje = ValidarFechaYHora(elmentoArchivo); if (resultado.Mensaje != mensajeOK) { return(resultado); } //valido que exista el codigo del producto resultado.Mensaje = ValidarCodigoProducto(elmentoArchivo); if (resultado.Mensaje != mensajeOK) { return(resultado); } resultado.Mensaje = ValidarCodigoRotomix(elmentoArchivo); if (resultado.Mensaje != mensajeOK) { return(resultado); } resultado.Mensaje = ValidarCodigoFormula(elmentoArchivo); if (resultado.Mensaje != mensajeOK) { return(resultado); } resultado.Mensaje = ValidarProduccionFormula(elmentoArchivo); if (resultado.Mensaje != mensajeOK) { return(resultado); } //var elementosDuplicados = // lista.Where(det => det.Codigo.Equals(elmentoArchivo.Codigo) // && det.Formula.ToUpper().Trim().Equals(elmentoArchivo.Formula.ToUpper().Trim()) // && det.Rotomix.ToUpper().Trim().Equals(elmentoArchivo.Rotomix.ToUpper().Trim()) // && det.Hora.Equals(elmentoArchivo.Hora)).ToList(); //if(elementosDuplicados.Count > 1) //{ // resultado.Mensaje = string.Format("El renglon se encuentra duplicado, Batch: {0}, Producto: {1}, RotoMix: {2}, Hora: {3}", elmentoArchivo.batch, elmentoArchivo.Codigo, elmentoArchivo.Rotomix, elmentoArchivo.Hora); // return resultado; //} sumatoriameta = sumatoriameta + elmentoArchivo.Meta; sumatoriareal = sumatoriareal + elmentoArchivo.Real; sumatoriarealbatch = sumatoriarealbatch + elmentoArchivo.Real; nombrerotomix = elmentoArchivo.Rotomix; } } detallesBatchs.Batch = batch.FirstLetter; detallesBatchs.KilosProducidos = sumatoriarealbatch; detallesBatchs.Rotomix = nombrerotomix; detallesBatchs.Formula = renglon.Formula; ListaGlobalDetalleBatch.Add(detallesBatchs); //creamos el detalle de la tabla Produccion Formula Detalle listaFormulaDetalle = CrearListaProduccionFormulaDetalle(listaparadetalle, renglon.Formula); if (listaFormulaDetalle == null) { resultado.Mensaje = "ingrediente"; return(resultado); } //creamos el detalle de la tabla Produccion Formula Batch listaFormulaProduccionBatch.AddRange(CrearListaProduccionFormulaBatch(listaparadetalle, renglon.Formula, batch.FirstLetter, nombrerotomix)); }//aqui termina por batch //aqui llenara la lista var produccionFormula = new ProduccionFormulaInfo(); produccionFormula.Organizacion = new OrganizacionInfo { OrganizacionID = seguridad.Usuario.Organizacion.OrganizacionID }; var formulaPL = new FormulaPL(); var todasFormulas = formulaPL.ObtenerTodos(EstatusEnum.Activo); FormulaInfo formula = todasFormulas.FirstOrDefault( fo => fo.Descripcion.ToUpper().Trim().Equals(renglon.Formula.ToUpper().Trim(), StringComparison.InvariantCultureIgnoreCase)); produccionFormula.Formula = formula; produccionFormula.CantidadReparto = sumatoriameta; //cantidad programada produccionFormula.CantidadProducida = sumatoriareal; //cantidad real produccionFormula.FechaProduccion = DateTime.Parse(txtFecha.Text); produccionFormula.Activo = EstatusEnum.Activo; produccionFormula.ProduccionFormulaDetalle = listaFormulaDetalle; //produccionFormula.ProduccionFormulaBatch = ListaGlobalDetalleBatch.Where(batch => batch.Formula.ToUpper().Trim().Equals(produccionFormula.Formula.Descripcion.ToUpper().Trim())).ToList(); produccionFormula.ProduccionFormulaBatch = listaFormulaProduccionBatch; produccionFormula.UsuarioCreacionId = seguridad.Usuario.UsuarioID; ListaGlobal.Add(produccionFormula); } } catch (Exception er) { Logger.Error(er); return(null); } return(resultado); }
/// <summary> /// Obtiene una lista de produccion de formula /// </summary> /// <param name="reader"></param> /// <returns></returns> internal static List <ProduccionFormulaInfo> ObtenerPorConciliacion(IDataReader reader) { try { Logger.Info(); var distribuciones = new List <ProduccionFormulaInfo>(); ProduccionFormulaInfo distribucion; while (reader.Read()) { distribucion = new ProduccionFormulaInfo { ProduccionFormulaId = Convert.ToInt32(reader["ProduccionFormulaID"]), Organizacion = new OrganizacionInfo { OrganizacionID = Convert.ToInt32(reader["OrganizacionID"]), Descripcion = Convert.ToString(reader["Organizacion"]) }, FolioFormula = Convert.ToInt32(reader["FolioFormula"]), Formula = new FormulaInfo { FormulaId = Convert.ToInt32(reader["FormulaID"]), Descripcion = Convert.ToString(reader["Formula"]), Producto = new ProductoInfo { ProductoId = Convert.ToInt32(reader["ProductoID"]), ProductoDescripcion = Convert.ToString(reader["Producto"]) } }, CantidadProducida = Convert.ToDecimal(reader["CantidadProducida"]), FechaProduccion = Convert.ToDateTime(reader["FechaProduccion"]), AlmacenMovimientoEntradaID = reader["AlmacenMovimientoEntradaID"] != null?Convert.ToInt64(reader["AlmacenMovimientoEntradaID"]) : 0, AlmacenMovimientoSalidaID = reader["AlmacenMovimientoSalidaID"] != null?Convert.ToInt64(reader["AlmacenMovimientoSalidaID"]) : 0, DescripcionFormula = Convert.ToString(reader["Formula"]), Activo = Convert.ToBoolean(reader["Activo"]).BoolAEnum(), }; distribuciones.Add(distribucion); } reader.NextResult(); var distribucionIngredientesOrganizaciones = new List <ProduccionFormulaDetalleInfo>(); ProduccionFormulaDetalleInfo distribucionIngredienteOrganizacion; while (reader.Read()) { distribucionIngredienteOrganizacion = new ProduccionFormulaDetalleInfo { Producto = new ProductoInfo { ProductoId = Convert.ToInt32(reader["ProductoID"]), Descripcion = Convert.ToString(reader["Producto"]), ProductoDescripcion = Convert.ToString(reader["Producto"]), UnidadMedicion = new UnidadMedicionInfo { UnidadID = Convert.ToInt32(reader["UnidadID"]), ClaveUnidad = Convert.ToString(reader["ClaveUnidad"]) }, }, CantidadProducto = Convert.ToDecimal(reader["CantidadProducto"]), Ingrediente = new IngredienteInfo { IngredienteId = Convert.ToInt32(reader["IngredienteID"]) }, AlmacenInventarioLoteID = Convert.ToInt32(reader["AlmacenInventarioLoteID"]), ProduccionFormulaId = Convert.ToInt32(reader["ProduccionFormulaID"]), ProduccionFormulaDetalleId = Convert.ToInt32(reader["ProduccionFormulaDetalleID"]), }; distribucionIngredientesOrganizaciones.Add(distribucionIngredienteOrganizacion); } distribuciones.ForEach(datos => { datos.ProduccionFormulaDetalle = distribucionIngredientesOrganizaciones.Where( id => id.ProduccionFormulaId == datos.ProduccionFormulaId).ToList(); }); return(distribuciones); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
private IList <PolizaInfo> ObtenerPoliza(ProduccionFormulaInfo produccionFormula) { var polizasProduccionAlimento = new List <PolizaInfo>(); IList <ClaseCostoProductoInfo> cuentasAlmacenProductoSalida = ObtenerCostosProducto(produccionFormula.Almacen.AlmacenID); if (cuentasAlmacenProductoSalida == null || !cuentasAlmacenProductoSalida.Any()) { throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén de planta de alimentos"); } IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.ProduccionAlimento.GetHashCode()); string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(DateTime.Now.Millisecond); ref3.Append(postFijoRef3); var almacenMovimientoBL = new AlmacenMovimientoBL(); AlmacenMovimientoInfo almacenMovimiento = almacenMovimientoBL.ObtenerPorId(produccionFormula.AlmacenMovimientoEntradaID); //string numeroReferencia = ObtenerNumeroReferencia; string numeroReferencia = ObtenerNumeroReferenciaFolio(almacenMovimiento.FolioMovimiento); DateTime fecha = produccionFormula.FechaProduccion; string archivoFolio = ObtenerArchivoFolio(fecha); OrganizacionInfo organizacion = ObtenerOrganizacionIVA(produccionFormula.Organizacion.OrganizacionID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } foreach (var produccionDetalle in produccionFormula.ProduccionFormulaDetalle) { CuentaSAPInfo claveContableCargo; var cuentaSapEntrada = cuentasAlmacenProductoSalida.FirstOrDefault( cuenta => cuenta.ProductoID == produccionFormula.Formula.Producto.ProductoId); if (cuentaSapEntrada == null) { cuentaSapEntrada = new ClaseCostoProductoInfo(); } claveContableCargo = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapEntrada.CuentaSAPID); if (claveContableCargo == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", produccionFormula.Formula.Producto.ProductoDescripcion)); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = produccionFormula.FechaProduccion, Folio = numeroReferencia, CabezasRecibidas = string.Empty, NumeroDocumento = string.Empty, ClaseDocumento = postFijoRef3, ClaveProveedor = string.Empty, Importe = string.Format("{0}", Math.Round(produccionDetalle.CantidadProducto * produccionDetalle.PrecioPromedio, 2).ToString("F2")), IndicadorImpuesto = String.Empty, CentroCosto = string.Empty, Renglon = Convert.ToString(linea++), Cabezas = string.Empty, ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableCargo.CuentaSAP, CodigoRetencion = string.Empty, Division = organizacion.Division, TipoRetencion = string.Empty, ArchivoFolio = archivoFolio, DescripcionCosto = string.Empty, PesoOrigen = 0, TipoDocumento = textoDocumento, ComplementoRef1 = string.Empty, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, numeroReferencia, produccionDetalle.Producto.ProductoDescripcion, (string.Format("{0} {1}.", produccionDetalle.CantidadProducto.ToString("N2"), produccionDetalle.Producto.UnidadMedicion.ClaveUnidad)), produccionDetalle.PrecioPromedio.ToString("C2")), Sociedad = organizacion.Sociedad, DescripcionProducto = produccionDetalle.Producto.ProductoDescripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasProduccionAlimento.Add(polizaSalida); var cuentaSapSale = cuentasAlmacenProductoSalida.FirstOrDefault( cuenta => cuenta.ProductoID == produccionDetalle.Producto.ProductoId); if (cuentaSapSale == null) { cuentaSapSale = new ClaseCostoProductoInfo(); } var claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSale.CuentaSAPID); if (claveContableAbono == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", produccionDetalle.Producto.ProductoDescripcion)); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = produccionFormula.FechaProduccion, Folio = numeroReferencia, CabezasRecibidas = string.Empty, NumeroDocumento = string.Empty, ClaseDocumento = postFijoRef3, ClaveProveedor = string.Empty, Importe = string.Format("{0}", (Math.Round(produccionDetalle.CantidadProducto * produccionDetalle.PrecioPromedio, 2) * -1).ToString("F2")), IndicadorImpuesto = String.Empty, CentroCosto = string.Empty, Renglon = Convert.ToString(linea++), Cabezas = string.Empty, ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableAbono.CuentaSAP, CodigoRetencion = string.Empty, TipoRetencion = string.Empty, ArchivoFolio = archivoFolio, DescripcionCosto = string.Empty, Division = organizacion.Division, PesoOrigen = 0, TipoDocumento = textoDocumento, ComplementoRef1 = string.Empty, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, numeroReferencia, produccionDetalle.Producto.ProductoDescripcion, (string.Format("{0} {1}.", produccionDetalle.CantidadProducto.ToString("N2"), produccionDetalle.Producto.UnidadMedicion.ClaveUnidad)), produccionDetalle.PrecioPromedio.ToString("C2")), Sociedad = organizacion.Sociedad, DescripcionProducto = produccionDetalle.Producto.ProductoDescripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasProduccionAlimento.Add(polizaSalida); } return(polizasProduccionAlimento); }
/// <summary> /// Obtiene un lista paginada /// </summary> /// <param name="pagina"></param> /// <param name="filtro"></param> /// <returns></returns> public ResultadoInfo <ProduccionFormulaInfo> ObtenerPorPagina(PaginacionInfo pagina, ProduccionFormulaInfo filtro) { try { Logger.Info(); var produccionFormulaBL = new ProduccionFormulaBL(); ResultadoInfo <ProduccionFormulaInfo> result = produccionFormulaBL.ObtenerPorPagina(pagina, filtro); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }