/// <summary> /// Obtiene un registro de SolicitudProductoDetalle /// </summary> /// <param name="descripcion">Descripción de la SolicitudProductoDetalle</param> /// <returns></returns> public SolicitudProductoDetalleInfo ObtenerPorDescripcion(string descripcion) { try { Logger.Info(); Dictionary <string, object> parameters = AuxSolicitudProductoDetalleDAL.ObtenerParametrosPorDescripcion(descripcion); DataSet ds = Retrieve("SolicitudProductoDetalle_ObtenerPorDescripcion", parameters); SolicitudProductoDetalleInfo result = null; if (ValidateDataSet(ds)) { result = MapSolicitudProductoDetalleDAL.ObtenerPorDescripcion(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> /// Metodo para Crear un registro de SolicitudProductoDetalle /// </summary> /// <param name="info">Valores de la entidad que será creada</param> public int Crear(SolicitudProductoDetalleInfo info) { try { Logger.Info(); Dictionary <string, object> parameters = AuxSolicitudProductoDetalleDAL.ObtenerParametrosCrear(info); int result = Create("SolicitudProductoDetalle_Crear", parameters); 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 SolicitudProductoDetalleInfo ObtenerPorDescripcion(DataSet ds) { try { Logger.Info(); DataTable dt = ds.Tables[ConstantesDAL.DtDatos]; SolicitudProductoDetalleInfo entidad = (from info in dt.AsEnumerable() select new SolicitudProductoDetalleInfo { SolicitudProductoDetalleID = info.Field <int>("SolicitudProductoDetalleID"), SolicitudProducto = new SolicitudProductoInfo { SolicitudProductoID = info.Field <int>("SolicitudProductoID") }, Producto = new ProductoInfo { ProductoId = info.Field <int>("ProductoID"), Descripcion = info.Field <string>("Producto") }, Cantidad = info.Field <decimal>("Cantidad"), CamionReparto = new CamionRepartoInfo { CamionRepartoID = info.Field <int>("CamionRepartoID") }, Estatus = new EstatusInfo { EstatusId = info.Field <int>("EstatusID"), Descripcion = info.Field <string>("Estatus") }, Activo = info.Field <bool>("Activo").BoolAEnum(), }).First(); return(entidad); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene parametros para actualizar /// </summary> /// <param name="info">Valores de la entidad</param> /// <returns></returns> public static Dictionary <string, object> ObtenerParametrosActualizar(SolicitudProductoDetalleInfo info) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@SolicitudProductoDetalleID", info.SolicitudProductoDetalleID }, { "@SolicitudProductoID", info.SolicitudProducto.SolicitudProductoID }, { "@ProductoID", info.Producto.ProductoId }, { "@Cantidad", info.Cantidad }, { "@CamionRepartoID", info.CamionReparto.CamionRepartoID }, { "@EstatusID", info.Estatus.EstatusId }, { "@Activo", info.Activo }, { "@UsuarioModificacionID", info.UsuarioModificacionID }, }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
///// <summary> ///// Obtiene una entidad de SolicitudProductoDetalle por su descripcion ///// </summary> ///// <returns></returns> //public IQueryable<SolicitudProductoDetalleInfo> ObtenerPorSolicitudProductoCompletoPorId(SolicitudProductoInfo filtro) //{ // try // { // Logger.Info(); // var condicion = ObtenerTodos(); // if (filtro.SolicitudProductoID > 0) // { // condicion = condicion.Where(c => c.SolicitudProductoID == filtro.SolicitudProductoID); // } // var productoDAL = new ProductoDAL(); // var centroCostoDAL = new CentroCostoDAL(); // var estatusDAL = new EstatusDAL(); // var prods = productoDAL.ObtenerTodosConUnidad(); // var cecos = centroCostoDAL.ObtenerTodos(EstatusEnum.Activo); // var estatus = estatusDAL.ObtenerTodos(EstatusEnum.Activo); // var query = from q in condicion // join p in prods on q.ProductoID equals p.ProductoId // join c in cecos on q.CentroCostoID equals c.CentroCostoID // join e in estatus on q.EstatusID equals e.EstatusId // select new SolicitudProductoDetalleInfo(q, p, c, e); // return query; // } // catch (ExcepcionGenerica) // { // throw; // } // catch (Exception ex) // { // Logger.Error(ex); // throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); // } //} /// <summary> /// Metodo para Guardar/Modificar una entidad SolicitudProductoDetalle /// </summary> /// <param name="info"></param> /// <returns></returns> public int Guardar(SolicitudProductoDetalleInfo info) { try { Logger.Info(); var id = 0; if (info.SolicitudProductoDetalleID > 0) { info.FechaModificacion = da.FechaServidor(); id = da.Actualizar <SolicitudProductoDetalleInfo>(info); } else { id = da.Insertar <SolicitudProductoDetalleInfo>(info); } return(id); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Asigna Inactivo al registro para ocultarlo del grid. /// </summary> /// <param name="info"></param> private void Eliminar(SolicitudProductoDetalleInfo info) { info.Activo = EstatusEnum.Inactivo; Contexto.Detalle = Contexto.DetalleGrid.ToList(); gridDatos.ItemsSource = Contexto.Detalle.Where(e => e.Activo == EstatusEnum.Activo); LimpiarParcial(); Contexto.Guardar = true; }
/// <summary> /// Método para Agregar /// </summary> private void Agregar() { bool validaAgregar = ValidaAgregar(true); if (validaAgregar) { bool isAutorizado = Contexto.IsAutorizado; var producto = Contexto.Solicitud.Producto ?? new ProductoInfo(); var centroCosto = (CentroCostoInfo)Extensor.ClonarInfo(Contexto.Solicitud.CentroCosto); var claseCostoProducto = Contexto.Solicitud.ClaseCostoProducto ?? new ClaseCostoProductoInfo(); int productoId = producto == null ? 0 : producto.ProductoId; int centroCostoId = centroCosto == null ? 0 : centroCosto.CentroCostoID; decimal cantidad = txtCantidad.Value.HasValue ? txtCantidad.Value.Value : decimal.Zero; Contexto.DetalleGrid = Contexto.DetalleGrid ?? new ObservableCollection <SolicitudProductoDetalleInfo>(); var registro = Contexto.DetalleGrid.FirstOrDefault(e => e.ProductoID == productoId && e.Activo == EstatusEnum.Activo); if (registro == null) { registro = new SolicitudProductoDetalleInfo { SolicitudProductoID = Contexto.SolicitudProductoID, ProductoID = productoId, Producto = producto, Cantidad = cantidad, ClaseCostoProducto = claseCostoProducto, CentroCostoID = centroCostoId, CentroCosto = centroCosto, EstatusID = Estatus.SolicitudProductoPendiente.GetHashCode(), Eliminar = !isAutorizado, Activo = EstatusEnum.Activo }; Contexto.DetalleGrid.Add(registro); } else { registro.ProductoID = producto.ProductoId; registro.Producto = producto; registro.Cantidad = cantidad; registro.CentroCostoID = centroCostoId; registro.CentroCosto = centroCosto; registro.ClaseCostoProducto = claseCostoProducto; } Contexto.Solicitud.Producto = new ProductoInfo(); Contexto.Solicitud.Cantidad = 0; Contexto.Solicitud.CentroCosto = new CentroCostoInfo(); Contexto.Detalle = Contexto.DetalleGrid.ToList(); gridDatos.ItemsSource = Contexto.Detalle.Where(e => e.Activo == EstatusEnum.Activo); Contexto.Guardar = true; LimpiarParcial(); } }
/// <summary> /// Metodo para Guardar/Modificar una entidad SolicitudProductoDetalle /// </summary> /// <param name="info"></param> /// <returns></returns> public int Guardar(SolicitudProductoDetalleInfo info) { try { Logger.Info(); return(solicitudProductoDetalleDAL.Guardar(info)); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo para actualizar un registro de SolicitudProductoDetalle /// </summary> /// <param name="info">Valores de la entidad que se actualizarán</param> public void Actualizar(SolicitudProductoDetalleInfo info) { try { Logger.Info(); Dictionary <string, object> parameters = AuxSolicitudProductoDetalleDAL.ObtenerParametrosActualizar(info); Update("SolicitudProductoDetalle_Actualizar", 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); } }
internal static List <SolicitudProductoInfo> ObtenerConciliacionPorAlmacenMovimientoXML(IDataReader reader) { try { Logger.Info(); var distribuciones = new List <SolicitudProductoInfo>(); SolicitudProductoInfo distribucion; while (reader.Read()) { distribucion = new SolicitudProductoInfo { SolicitudProductoID = Convert.ToInt32(reader["SolicitudProductoID"]), Organizacion = new OrganizacionInfo { OrganizacionID = Convert.ToInt32(reader["OrganizacionID"]) }, OrganizacionID = Convert.ToInt32(reader["OrganizacionID"]), FolioSolicitud = Convert.ToInt64(reader["FolioSolicitud"]), FechaSolicitud = Convert.ToDateTime(reader["FechaSolicitud"]), Estatus = new EstatusInfo { EstatusId = Convert.ToInt32(reader["EstatusID"]) }, EstatusID = Convert.ToInt32(reader["EstatusID"]), FechaAutorizado = Convert.ToDateTime(reader["FechaAutorizado"]), FechaEntrega = Convert.ToDateTime(reader["FechaEntrega"]), CentroCosto = new CentroCostoInfo { CentroCostoID = Convert.ToInt32(reader["CentroCostoID"]) }, CentroCostoID = Convert.ToInt32(reader["CentroCostoID"]), Almacen = new AlmacenInfo { AlmacenID = Convert.ToInt32(reader["AlmacenID"]), Descripcion = Convert.ToString(reader["Almacen"]), TipoAlmacen = new TipoAlmacenInfo { TipoAlmacenID = Convert.ToInt32(reader["TipoAlmacenID"]) }, TipoAlmacenID = Convert.ToInt32(reader["TipoAlmacenID"]) }, AlmacenID = Convert.ToInt32(reader["AlmacenID"]), AlmacenMovimientoID = Convert.ToInt64(reader["AlmacenMovimientoID"]) }; distribuciones.Add(distribucion); } reader.NextResult(); var distribucionIngredientesOrganizaciones = new List <SolicitudProductoDetalleInfo>(); SolicitudProductoDetalleInfo distribucionIngredienteOrganizacion; while (reader.Read()) { distribucionIngredienteOrganizacion = new SolicitudProductoDetalleInfo { SolicitudProductoDetalleID = Convert.ToInt32(reader["SolicitudProductoDetalleID"]), SolicitudProductoID = Convert.ToInt32(reader["SolicitudProductoID"]), Producto = new ProductoInfo { ProductoId = Convert.ToInt32(reader["ProductoID"]), Descripcion = Convert.ToString(reader["Producto"]), UnidadId = Convert.ToInt32(reader["UnidadID"]), UnidadMedicion = new UnidadMedicionInfo { UnidadID = Convert.ToInt32(reader["UnidadID"]), }, SubFamilia = new SubFamiliaInfo { SubFamiliaID = Convert.ToInt32(reader["SubFamiliaID"]) }, SubfamiliaId = Convert.ToInt32(reader["SubFamiliaID"]) }, ProductoID = Convert.ToInt32(reader["ProductoID"]), Cantidad = Convert.ToDecimal(reader["Cantidad"]), CamionReparto = new CamionRepartoInfo { CamionRepartoID = Convert.ToInt32(reader["CamionRepartoID"]) }, CamionRepartoID = Convert.ToInt32(reader["CamionRepartoID"]), Estatus = new EstatusInfo { EstatusId = Convert.ToInt32(reader["EstatusID"]) }, EstatusID = Convert.ToInt32(reader["EstatusID"]), PrecioPromedio = Convert.ToDecimal(reader["Precio"]) }; distribucionIngredientesOrganizaciones.Add(distribucionIngredienteOrganizacion); } distribuciones.ForEach(datos => { datos.Detalle = distribucionIngredientesOrganizaciones.Where( id => id.SolicitudProductoID == datos.SolicitudProductoID).ToList(); }); return(distribuciones); } 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 <SolicitudProductoDetalleInfo> ObtenerPorPagina(PaginacionInfo pagina, SolicitudProductoDetalleInfo filtro) { try { Dictionary <string, object> parameters = AuxSolicitudProductoDetalleDAL.ObtenerParametrosPorPagina(pagina, filtro); DataSet ds = Retrieve("SolicitudProductoDetalle_ObtenerPorPagina", parameters); ResultadoInfo <SolicitudProductoDetalleInfo> result = null; if (ValidateDataSet(ds)) { result = MapSolicitudProductoDetalleDAL.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, SolicitudProductoDetalleInfo filtro) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@SolicitudProductoDetalleID", filtro.SolicitudProductoDetalleID }, { "@Activo", filtro.Activo }, { "@Inicio", pagina.Inicio }, { "@Limite", pagina.Limite } }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Registra el envio de alimento de una organizacion a otra /// </summary> /// <param name="envioAlimento">Información del envio de alimento a guardar</param> /// <returns>Regresa una confirmación de registro del envio de alimento</returns> internal EnvioAlimentoInfo RegistrarEnvioAlimento(EnvioAlimentoInfo envioAlimento) { EnvioAlimentoInfo confirmacion = new EnvioAlimentoInfo(); try { Logger.Info(); AlmacenMovimientoBL almacenMovimientoBL = new AlmacenMovimientoBL(); EnvioAlimentoDAL salidaAlimentoDAL = new EnvioAlimentoDAL(); AlmacenMovimientoDetalleBL almacenMovimientoDetalleBl = new AlmacenMovimientoDetalleBL(); AlmacenMovimientoDetalle detalleMovimiento = new AlmacenMovimientoDetalle(); AlmacenInventarioBL inventario = new AlmacenInventarioBL(); AlmacenInventarioLoteBL loteBl = new AlmacenInventarioLoteBL(); AlmacenMovimientoInfo almacenMovimiento = new AlmacenMovimientoInfo(); almacenMovimiento.AlmacenID = envioAlimento.Almacen.AlmacenID; almacenMovimiento.TipoMovimientoID = TipoMovimiento.ProductoSalidaTraspaso.GetHashCode(); almacenMovimiento.Status = Estatus.AplicadoInv.GetHashCode(); almacenMovimiento.UsuarioCreacionID = envioAlimento.UsuarioCreacionID; almacenMovimiento.UsuarioModificacionID = envioAlimento.UsuarioCreacionID; almacenMovimiento.EsEnvioAlimento = true; almacenMovimiento.OrganizacionID = envioAlimento.Origen.OrganizacionID; PolizaAbstract poliza = null; IList <PolizaInfo> listaPolizas = null; using (var transaccion = new TransactionScope()) { //registrar en TB AlmacenMovimiento long almacenMovimientoID = almacenMovimientoBL.Crear(almacenMovimiento); almacenMovimiento.AlmacenMovimientoID = almacenMovimientoID; envioAlimento.AlmacenMovimientoId = almacenMovimientoID; if (envioAlimento.AlmacenMovimientoId == 0) { return new EnvioAlimentoInfo { EnvioId = 0 } } ; //registrar en TB AlmacenMovimientoDetalle detalleMovimiento.AlmacenMovimientoID = almacenMovimiento.AlmacenMovimientoID; almacenMovimiento = almacenMovimientoBL.ObtenerPorId(almacenMovimiento.AlmacenMovimientoID); if (almacenMovimiento.AlmacenMovimientoID == 0) { return new EnvioAlimentoInfo { EnvioId = 0 } } ; envioAlimento.Folio = almacenMovimiento.FolioMovimiento; detalleMovimiento.Producto = envioAlimento.Producto; if (detalleMovimiento.Producto.ManejaLote) { detalleMovimiento.AlmacenInventarioLoteId = envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().AlmacenInventarioLoteId; detalleMovimiento.Precio = envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().PrecioPromedio; } else { detalleMovimiento.Precio = envioAlimento.AlmacenInventario.PrecioPromedio; } detalleMovimiento.ProductoID = envioAlimento.Producto.ProductoId; detalleMovimiento.Cantidad = envioAlimento.Cantidad; detalleMovimiento.Importe = envioAlimento.Importe; detalleMovimiento.UsuarioCreacionID = envioAlimento.UsuarioCreacionID; detalleMovimiento.Piezas = envioAlimento.Piezas; int almacenMovimientoDetalleid = almacenMovimientoDetalleBl.Crear(detalleMovimiento); if (almacenMovimientoDetalleid == 0) { return new EnvioAlimentoInfo { EnvioId = 0 } } ; //registrar en TB EnvioProducto confirmacion = salidaAlimentoDAL.RegistrarEnvioAlimento(envioAlimento); if (confirmacion.EnvioId == 0) { return new EnvioAlimentoInfo { EnvioId = 0 } } ; envioAlimento.EnvioId = confirmacion.EnvioId; envioAlimento.FechaEnvio = confirmacion.FechaEnvio; envioAlimento.AlmacenInventario.Cantidad -= envioAlimento.Cantidad; envioAlimento.AlmacenInventario.Importe -= envioAlimento.Importe; decimal precioPromedioInicial = 0M; if (envioAlimento.Producto.ManejaLote) { precioPromedioInicial = envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().PrecioPromedio; } else { precioPromedioInicial = envioAlimento.AlmacenInventario.PrecioPromedio; } if (envioAlimento.AlmacenInventario.Cantidad == 0) { envioAlimento.AlmacenInventario.PrecioPromedio = 0M; } if (envioAlimento.AlmacenInventario.Cantidad < 0) { envioAlimento.AlmacenInventario.Cantidad = 0; } if (envioAlimento.AlmacenInventario.Importe < 0) { envioAlimento.AlmacenInventario.Importe = 0; } if (envioAlimento.AlmacenInventario.Cantidad > 0 && envioAlimento.AlmacenInventario.Importe > 0) { envioAlimento.AlmacenInventario.PrecioPromedio = envioAlimento.AlmacenInventario.Importe / envioAlimento.AlmacenInventario.Cantidad; } envioAlimento.AlmacenInventario.UsuarioModificacionID = envioAlimento.UsuarioCreacionID; inventario.ActualizarPorProductoId(envioAlimento.AlmacenInventario); if (envioAlimento.Producto.ManejaLote) { FechaInfo fechaInfo = new FechaBL().ObtenerFechaActual(); envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Cantidad -= envioAlimento.Cantidad; envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Importe -= envioAlimento.Importe; if (envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Cantidad <= 0) { envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().PrecioPromedio = 0M; envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Cantidad = 0; envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Importe = 0; envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().FechaInicio = fechaInfo.FechaActual; } if (envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Importe > 0 && envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Cantidad > 0) { envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().PrecioPromedio = envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Importe / envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Cantidad; } else { envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Activo = EstatusEnum.Inactivo; envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().FechaFin = fechaInfo.FechaActual; } if (envioAlimento.Producto.SubfamiliaId == SubFamiliasEnum.Forrajes.GetHashCode()) { envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Piezas -= envioAlimento.Piezas; if (envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Piezas < 0) { envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().Piezas = 0; } } envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().UsuarioModificacionId = envioAlimento.UsuarioCreacionID; loteBl.ActualizarEnvioAlimento(envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault()); } if (salidaAlimentoDAL.RegistrarRecepcionProductoEnc(envioAlimento, TipoMovimiento.ProductoSalidaTraspaso) == 0) { return new EnvioAlimentoInfo { EnvioId = 0 } } ; if (salidaAlimentoDAL.RegistrarRecepcionProductoDet(envioAlimento, TipoMovimiento.ProductoSalidaTraspaso) == 0) { return new EnvioAlimentoInfo { EnvioId = 0 } } ; poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaTraspaso); SolicitudProductoInfo oSolicitud = new SolicitudProductoInfo(); oSolicitud.FolioSolicitud = envioAlimento.Folio; oSolicitud.OrganizacionID = envioAlimento.Origen.OrganizacionID; oSolicitud.AlmacenGeneralID = envioAlimento.Almacen.AlmacenID; oSolicitud.Almacen = new AlmacenBL().ObtenerAlmacenPorOrganizacion(envioAlimento.Destino.OrganizacionID).FirstOrDefault(); oSolicitud.FechaEntrega = envioAlimento.FechaEnvio; oSolicitud.UsuarioCreacionID = envioAlimento.UsuarioCreacionID; oSolicitud.Detalle = new List <SolicitudProductoDetalleInfo>(); SolicitudProductoDetalleInfo detalle = new SolicitudProductoDetalleInfo() { Cantidad = envioAlimento.Cantidad, PrecioPromedio = envioAlimento.Producto.ManejaLote ? envioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().PrecioPromedio: envioAlimento.AlmacenInventario.PrecioPromedio, Producto = envioAlimento.Producto }; detalle.PrecioPromedio = decimal.Round(detalle.PrecioPromedio, 2); if (detalle.PrecioPromedio == 0) { detalle.PrecioPromedio = precioPromedioInicial; } oSolicitud.Detalle.Add(detalle); listaPolizas = poliza.GeneraPoliza(oSolicitud); var polizaDAL = new PolizaDAL(); if (listaPolizas != null && listaPolizas.Any()) { string Referencia = "03 " + envioAlimento.Folio.ToString() + new Random().Next(10, 20).ToString() + new Random().Next(30, 40) + DateTime.Now.Millisecond.ToString() + listaPolizas.ToList().FirstOrDefault().ClaseDocumento; listaPolizas.ToList().ForEach(datos => { datos.NumeroReferencia = envioAlimento.Folio.ToString(); datos.OrganizacionID = oSolicitud.OrganizacionID; datos.UsuarioCreacionID = envioAlimento.UsuarioCreacionID; datos.Activo = EstatusEnum.Activo; datos.ArchivoEnviadoServidor = 1; datos.Referencia3 = Referencia; }); ParametroOrganizacionInfo oParametroOrg = new ParametroOrganizacionBL().ObtenerPorOrganizacionIDClaveParametro(oSolicitud.OrganizacionID, ParametrosEnum.CuentaInventarioTransito.ToString()); if (oParametroOrg != null) { listaPolizas[listaPolizas.ToList().FindIndex(datos => datos.NumeroLinea.Trim() == "1")].Cuenta = oParametroOrg.Valor; } envioAlimento.Poliza = poliza.ImprimePoliza(oSolicitud, listaPolizas); polizaDAL.CrearServicioPI(listaPolizas, TipoPoliza.SalidaTraspaso); transaccion.Complete(); } } return(envioAlimento); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }