Example #1
0
 internal long RegistrarRecepcionProductoDet(EnvioAlimentoInfo envio, TipoMovimiento tipo)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxEnvioAlimentoDAL.ObtenerParametrosRegistrarRecepcionProductoDet(envio, tipo);
         int registrosAfectados = RetrieveValue <int>("EnvioAlimento_RegistrarRecepcionProductoDet", parameters);
         return(registrosAfectados);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Example #2
0
        /// <summary>
        /// Registra el envìo del alimento
        /// </summary>
        /// <param name="envioAlimento">Información del envío del alimento</param>
        /// <returns>Regresa una confirmacion del registro de envio de alimento</returns>
        public EnvioAlimentoInfo RegistrarEnvioAlimento(EnvioAlimentoInfo envioAlimento)
        {
            EnvioAlimentoInfo envio = null;

            try
            {
                Logger.Info();
                var salidaProductoBL = new EnvioAlimentoBL();
                envio = salidaProductoBL.RegistrarEnvioAlimento(envioAlimento);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(envio);
        }
Example #3
0
 private void InicializaContexto()
 {
     EnvioAlimento = new EnvioAlimentoInfo
     {
         Origen                = new OrganizacionInfo(),
         Destino               = new OrganizacionInfo(),
         Producto              = new ProductoInfo(),
         Almacen               = new AlmacenInfo(),
         AlmacenInventario     = new AlmacenInventarioInfo(),
         Cantidad              = 0,
         Importe               = 0,
         Piezas                = 0,
         UsuarioCreacionID     = Extensor.ValorEntero(Application.Current.Properties["UsuarioID"].ToString()),
         UsuarioModificacionID = Extensor.ValorEntero(Application.Current.Properties["UsuarioID"].ToString())
     };
     this.EnvioAlimento.AlmacenInventario.ListaAlmacenInventarioLote = new List <AlmacenInventarioLoteInfo>();
     this.EnvioAlimento.Origen = new OrganizacionPL().ObtenerPorID(Extensor.ValorEntero(Application.Current.Properties["OrganizacionID"].ToString()));
 }
Example #4
0
        internal EnvioAlimentoInfo RegistrarEnvioAlimento(EnvioAlimentoInfo envio)
        {
            EnvioAlimentoInfo envioConfirmacion = null;

            try
            {
                Logger.Info();
                Dictionary <string, object> parameters = AuxEnvioAlimentoDAL.ObtenerParametrosRegistrarEnvioAlimento(envio);
                DataSet datos = Retrieve("EnvioAlimento_RegistrarEnvioAlimento", parameters);
                if (ValidateDataSet(datos))
                {
                    envioConfirmacion = MapEnvioAlimentoDAL.RegistrarEnvioAlimento(datos);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(envioConfirmacion);
        }
Example #5
0
        /// <summary>
        /// Guarda el envio de alimento
        /// </summary>
        /// <param name="sender">Objeto que invoco el evento</param>
        /// <param name="e">Parametros del evento</param>
        private void btnGuardar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (this.ValidarCamposVacios())
                {
                    if (EnvioAlimento.Destino != null && skAyudaDestino.Clave != EnvioAlimento.Destino.OrganizacionID.ToString())
                    {
                        EnvioAlimento.Destino = (OrganizacionInfo)skAyudaDestino.DataContext;
                        EnvioAlimento.Destino.ListaTiposOrganizacion = _tiposOrganizacionDestino;
                    }
                    if (EnvioAlimento.Producto != null && skAyudaProducto.Clave != EnvioAlimento.Producto.ProductoId.ToString())
                    {
                        EnvioAlimento.Producto.ProductoId = ((ProductoInfo)skAyudaDestino.DataContext).ProductoId;
                        if (EnvioAlimento.Producto != null)
                        {
                            EnvioAlimento.Producto.SubfamiliaId = int.Parse(cmbSubFamilia.SelectedValue.ToString());
                        }
                    }

                    if (this.ValidarCuentasContables())
                    {
                        int productoId = this.EnvioAlimento.Producto.ProductoId;
                        FiltroAlmacenProductoEnvio filtro = new FiltroAlmacenProductoEnvio
                        {
                            ProductoID = this.EnvioAlimento.Producto.ProductoId,
                            UsaurioID  = Extensor.ValorEntero(Application.Current.Properties["UsuarioID"].ToString()),
                            Cantidad   = false,
                            Activo     = true
                        };
                        List <AlmacenInfo> lstAlmacenes = this._envioAlimentoPL.ObtenerAlmacenesProducto(filtro);

                        if (lstAlmacenes == null)
                        {
                            SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.EnvioDeAlimento_MsgProductoSinAlmacen, MessageBoxButton.OK, MessageImage.Stop);
                            this.EnvioAlimento.Producto = new ProductoInfo {
                                ProductoId = 0, SubfamiliaId = (int)this.cmbSubFamilia.SelectedValue
                            };


                            lstAlmacenes           = new List <AlmacenInfo>();
                            cmbAlmacen.ItemsSource = lstAlmacenes;
                            this.skAyudaProducto.LimpiarCampos();
                            cmbAlmacen.IsEnabled = false;
                            return;
                        }

                        string error;
                        if (ValidarSalidaExcede(out error))
                        {
                            SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], error, MessageBoxButton.OK, MessageImage.Stop);

                            cmbAlmacen.SelectedIndex    = 0;
                            this.EnvioAlimento.Cantidad = 0;
                            this.EnvioAlimento.Importe  = 0;
                            this.EnvioAlimento.Piezas   = 0;
                            this.txtCantidadEnvio.Text  = string.Empty;
                            this.txtImporte.Text        = string.Empty;
                            this.txtPiezas.Text         = string.Empty;
                            return;
                        }
                        this.EnvioAlimento.Producto.ProductoId = productoId;
                        EnvioAlimentoInfo confirmacionEnvio = this._envioAlimentoPL.RegistrarEnvioAlimento(this.EnvioAlimento);
                        if (confirmacionEnvio.Folio != 0 && confirmacionEnvio.Poliza != null)
                        {
                            if (confirmacionEnvio.Poliza != null)
                            {
                                new ExportarPoliza().ImprimirPoliza(confirmacionEnvio.Poliza, string.Format("{0} {1}", "Poliza", TipoPoliza.SalidaTraspaso));
                            }

                            SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], string.Format(Properties.Resources.EnvioAlimento_MsgDatosGaurdados, confirmacionEnvio.Folio), MessageBoxButton.OK, MessageImage.Correct);
                            this.LimparPantalla();
                            this.InicializaContexto();
                            cmbSubFamilia.SelectedValue = 0;
                            this.EnvioAlimento.Destino.ListaTiposOrganizacion = _tiposOrganizacionDestino;
                            this.skAyudaDestino.txtClave.Focus();
                        }
                        else
                        {
                            SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.EnvioAlimento_MsgErrorGuardar, MessageBoxButton.OK, MessageImage.Error);
                        }
                    }
                }
            }
            catch (Exception excepcion)
            {
                Logger.Error(excepcion);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.EnvioAlimento_MsgErrorGuardar, MessageBoxButton.OK, MessageImage.Error);
            }
        }
 internal static Dictionary <string, object> ObtenerParametrosBuscarEnvioPorId(EnvioAlimentoInfo envio)
 {
     try
     {
         Logger.Info();
         var parametros = new Dictionary <string, object>
         {
             { "@EnvioProductoId", envio.EnvioId }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
 internal static Dictionary <string, object> ObtenerParametrosRegistrarEnvioAlimento(EnvioAlimentoInfo envio)
 {
     try
     {
         Logger.Info();
         var parametros = new Dictionary <string, object>
         {
             { "@OrganizacionID", envio.Origen.OrganizacionID },
             { "@OrganizacionDestinoID", envio.Destino.OrganizacionID },
             { "@Folio", envio.Folio },
             { "@AlmacenMovimientoID", envio.AlmacenMovimientoId },
             { "@UsuarioCreacionID", envio.UsuarioCreacionID }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
 internal static Dictionary <string, object> ObtenerParametrosRegistrarRecepcionProductoDet(EnvioAlimentoInfo envio, TipoMovimiento tipo)
 {
     try
     {
         Logger.Info();
         var parametros = new Dictionary <string, object>
         {
             { "@OrganizacionDestinoID", envio.Destino.OrganizacionID },
             { "@TransferenciaID", envio.FolioMovimientoAlmacen },
             { "@ProductoID", envio.Producto.ProductoId },
             { "@Cantidad", envio.Cantidad },
             { "@UsuarioCreacionID", envio.UsuarioCreacionID },
             { "@OrganizacionOrigenID", envio.Origen.OrganizacionID },
             { "@Importe", envio.Importe },
             { "@TipoMovimientoID", tipo.GetHashCode() },
             { "@AlmacenOrigenID", envio.Almacen.AlmacenID }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Example #9
0
        /// <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);
            }
        }