Пример #1
0
        private void Procesar(EArticulo articulo)
        {
            bool implementaImpuestoCompuesto = Entorno.Instancia.Parametros.ObtenerValorParametro <bool>("pdv.definicion_impuesto_compuesta");

            /*if (!bool.TryParse(Parametros.Parametro("pdv.definicion_impuesto_compuesta").Valor, out implementaImpuestoCompuesto))
             * {
             *  implementaImpuestoCompuesto = false;
             * }*/
            //
            Respuesta respuesta    = new Respuesta();
            Respuesta respuesta2   = new Respuesta();
            bool      estaAbierta  = Entorno.Instancia.VentaEspecialSinMedioPago.EstaAbierta;
            bool      checkFactura = true;
            bool      checkFecha   = true;

            if (!estaAbierta)
            {
                checkFactura = Entorno.Instancia.Terminal.VerificarLimiteNumeracion(out respuesta);
                checkFecha   = Entorno.Instancia.Terminal.VerificarFechaAutorizacion(out respuesta2);
            }

            if (checkFactura && checkFecha)
            {
                EItemVenta item = Entorno.Instancia.VentaEspecialSinMedioPago.AgregarArticulo(articulo, this.CantidadArticulo, this.CodigoArticulo, Entorno.Instancia.Impuestos.Impuestos, implementaImpuestoCompuesto, out respuesta);
                if (respuesta.Valida)
                {
                    // obtener cantidad actual de artículo
                    decimal cantidadActualArt = iu.PanelVentas.Tirilla.Where(i => i.Codigo.Equals(item.CodigoLeido)).Sum(i => i.Cantidad);
                    string  descripcionArt    = articulo.DescripcionLarga;

                    //
                    iu.PanelVentas.AgregarItemTirilla(new DItemTirilla(
                                                          item.CodigoLeido,
                                                          item.Articulo.DescripcionCorta,
                                                          item.Articulo.PrecioVenta1,
                                                          item.Cantidad,
                                                          item.Valor
                                                          ));

                    iu.PanelVentas.Tirilla.Insert(0, new DItemTirilla(
                                                      item.CodigoLeido,
                                                      item.Articulo.DescripcionCorta,
                                                      item.Articulo.PrecioVenta1,
                                                      item.Cantidad,
                                                      item.Valor
                                                      ));

                    decimal newValor = articulo.PrecioVenta1;

                    if (item.Cantidad != 1 || cantidadActualArt > 0)
                    {
                        decimal newCantidad = iu.PanelVentas.Tirilla.Where(i => i.Codigo.Equals(item.CodigoLeido)).Sum(i => i.Cantidad);

                        if (newCantidad != 0)
                        {
                            descripcionArt = string.Format("{0} [{1}]", articulo.DescripcionLarga, newCantidad);
                        }
                    }

                    newValor = iu.PanelVentas.Tirilla.Where(i => i.Codigo.Equals(item.CodigoLeido)).Sum(i => i.Subtotal);

                    //
                    iu.PanelVentas.VisorCliente.Descripcion = descripcionArt;
                    iu.PanelVentas.VisorCliente.ValorItem   = newValor;
                    iu.PanelVentas.VisorCliente.Total       = Entorno.Instancia.VentaEspecialSinMedioPago.TotalVenta;
                    iu.PanelVentas.VisorCliente.Items       = Entorno.Instancia.VentaEspecialSinMedioPago.NumeroDeItemsVenta;

                    //Pantalla cliente.
                    iu.MostrarDisplayCliente(Enums.DisplayCliente.DisplayVenta);

                    //
                    iu.PanelVentas.VisorMensaje = string.Empty;
                    iu.PanelVentas.VisorEntrada = string.Empty;

                    if (!estaAbierta)
                    {
                        log.InfoFormat("[CmdAgregarArticuloVentaEspecialSinMedioPago] --> venta Especial Iniciada: Transaccion: {0}, Factura {1}", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1));

                        Telemetria.Instancia.AgregaMetrica(new Evento("VentaEspecialIniciada").AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)));
                    }
                    if (item.Cantidad < 0)
                    {
                        //Log archivo
                        log.InfoFormat("[CmdAgregarArticuloVentaEspecialSinMedioPago] Articulo cancelado: {0}, Transaccion: {1}, Factura {2}", item.ToString(), (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1));

                        //Log a azure
                        Telemetria.Instancia.AgregaMetrica(new Evento("VentaEspecialArticuloCancelado").AgregarPropiedad("Codigo", item.Articulo.CodigoImpresion).AgregarPropiedad("Descripcion", item.Articulo.DescripcionLarga).AgregarPropiedad("Impuesto", item.Articulo.Impuesto1).AgregarPropiedad("Valor", item.Articulo.PrecioVenta1).AgregarPropiedad("TotalImpuesto", item.Impuesto).AgregarPropiedad("Cantidad", item.Cantidad).AgregarPropiedad("TotalVenta", item.Valor).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)));
                    }
                    else
                    {
                        //Log archivo
                        log.InfoFormat("[CmdAgregarArticuloVentaEspecialSinMedioPago] Articulo agregado: {0}, Transaccion: {1}, Factura {2}", item.ToString(), (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1));

                        //Log a azure
                        Telemetria.Instancia.AgregaMetrica(new Evento("VentaEspecialArticuloAgregado").AgregarPropiedad("Codigo", item.Articulo.CodigoImpresion).AgregarPropiedad("Descripcion", item.Articulo.DescripcionLarga).AgregarPropiedad("Impuesto", item.Articulo.Impuesto1).AgregarPropiedad("Valor", item.Articulo.PrecioVenta1).AgregarPropiedad("TotalImpuesto", item.Impuesto).AgregarPropiedad("Cantidad", item.Cantidad).AgregarPropiedad("TotalVenta", item.Valor).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)));
                    }
                    //log.Debug("Artículo agregado");

                    if (Reactor.Instancia.EstadoFSMActual == EstadosFSM.CancelarItemVentaEspecialSinMedioPago)
                    {
                        iu.PanelVentas.VisorMensaje = "Articulo cancelado exitosamente.";
                    }
                }
                else
                {
                    System.Console.WriteLine(respuesta.Mensaje);
                    iu.PanelVentas.VisorMensaje = respuesta.Mensaje;
                    iu.PanelVentas.VisorEntrada = string.Empty;
                }
            }
            else
            {
                if (!checkFactura)
                {
                    System.Console.WriteLine(respuesta.Mensaje);
                    iu.PanelVentas.VisorMensaje = "ERROR - " + respuesta.Mensaje;
                }
                else if (!checkFecha)
                {
                    System.Console.WriteLine(respuesta2.Mensaje);
                    iu.PanelVentas.VisorMensaje = "ERROR - " + respuesta2.Mensaje;
                }
                iu.PanelVentas.VisorEntrada = string.Empty;
            }

            ///
        }
Пример #2
0
        private void Procesar(EArticulo articulo)
        {
            bool implementaImpuestoCompuesto = Entorno.Instancia.Parametros.ObtenerValorParametro <bool>("pdv.definicion_impuesto_compuesta");

            /*if (!bool.TryParse(Parametros.Parametro("pdv.definicion_impuesto_compuesta").Valor, out implementaImpuestoCompuesto))
             * {
             *  implementaImpuestoCompuesto = false;
             * }*/
            //
            Respuesta  respuesta;
            bool       estaAbierta = Entorno.Instancia.Ajuste.EstaAbierta;
            EItemVenta item        = Entorno.Instancia.Ajuste.AgregarArticulo(articulo, this.CantidadArticulo, this.CodigoArticulo, Entorno.Instancia.Impuestos.Impuestos, implementaImpuestoCompuesto, out respuesta);

            if (respuesta.Valida)
            {
                //
                iu.PanelVentas.VisorCliente.Descripcion = articulo.DescripcionLarga;
                iu.PanelVentas.VisorCliente.ValorItem   = articulo.PrecioVenta1;
                iu.PanelVentas.VisorCliente.Total       = Entorno.Instancia.Ajuste.TotalVenta;
                iu.PanelVentas.VisorCliente.Items       = Entorno.Instancia.Ajuste.NumeroDeItemsVenta;

                //
                iu.PanelVentas.AgregarItemTirilla(new DItemTirilla(
                                                      item.CodigoLeido,
                                                      item.Articulo.DescripcionCorta,
                                                      item.Articulo.PrecioVenta1,
                                                      item.Cantidad,
                                                      item.Valor
                                                      ));

                iu.PanelVentas.Tirilla.Insert(0, new DItemTirilla(
                                                  item.CodigoLeido,
                                                  item.Articulo.DescripcionCorta,
                                                  item.Articulo.PrecioVenta1,
                                                  item.Cantidad,
                                                  item.Valor
                                                  ));

                //
                iu.PanelVentas.VisorMensaje = string.Empty;
                iu.PanelVentas.VisorEntrada = string.Empty;

                if (!estaAbierta)
                {
                    log.InfoFormat("[CmdAgregarArticuloAjuste] --> Ajuste Iniciado: Transaccion: {0}, Factura {1}", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1));

                    Telemetria.Instancia.AgregaMetrica(new Evento("AjusteIniciado").AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)));
                }

                //Log archivo
                log.InfoFormat("[CmdAgregarArticuloAjuste] Articulo agregado: {0}, Transaccion: {1}, Factura {2}", item.ToString(), (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1));

                //Log a azure
                Telemetria.Instancia.AgregaMetrica(new Evento("AjusteArticuloAgregado").AgregarPropiedad("Codigo", item.Articulo.CodigoImpresion).AgregarPropiedad("Descripcion", item.Articulo.DescripcionLarga).AgregarPropiedad("Impuesto", item.Articulo.Impuesto1).AgregarPropiedad("Valor", item.Articulo.PrecioVenta1).AgregarPropiedad("TotalImpuesto", item.Impuesto).AgregarPropiedad("Cantidad", item.Cantidad).AgregarPropiedad("TotalVenta", item.Valor).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)));


                //log.Debug("Artículo agregado");

                if (Reactor.Instancia.EstadoFSMActual == EstadosFSM.CancelarItemAjuste)
                {
                    iu.PanelVentas.VisorMensaje = "Articulo cancelado correctamente.";
                }
            }
            else
            {
                System.Console.WriteLine(respuesta.Mensaje);
                iu.PanelVentas.VisorMensaje = respuesta.Mensaje;
                iu.PanelVentas.VisorEntrada = string.Empty;
            }

            ///
        }
Пример #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="articulo"></param>
        private void Procesar(EArticulo articulo)
        {
            //todo: incluir try catch para todo el método
            //todo: realizar todas las validaciones referentes al artículo y evitar agregar alguno con alguna propiedad faltante (ej. que no tenga impuestos)

            Respuesta respuesta = new Respuesta();

            //todo: cambiar nombre, por uno más descriptivo.
            Respuesta respuesta2 = new Respuesta();

            bool estaAbierta  = Entorno.Instancia.Venta.EstaAbierta;
            bool checkFactura = true;
            bool checkFecha   = true;

            if (!estaAbierta)
            {
                checkFactura = Entorno.Instancia.Terminal.VerificarLimiteNumeracion(out respuesta);
                checkFecha   = Entorno.Instancia.Terminal.VerificarFechaAutorizacion(out respuesta2);
            }

            if (checkFactura && checkFecha)
            {
                bool implementaImpuestoCompuesto = Entorno.Instancia.Parametros.ObtenerValorParametro <bool>("pdv.definicion_impuesto_compuesta");

                //todo: antes de agregar el artículo debería validar su listado de impuesto vs el listado de impeustos configurado.
                EItemVenta item = Entorno.Instancia.Venta.AgregarArticulo(articulo, this.CantidadArticulo, this.CodigoArticulo, Entorno.Instancia.Impuestos.Impuestos, implementaImpuestoCompuesto, out respuesta);
                if (respuesta.Valida)
                {
                    // obtener cantidad actual de artículo
                    decimal cantidadActualArt = iu.PanelVentas.Tirilla.Where(i => i.Codigo.Equals(item.CodigoLeido)).Sum(i => i.Cantidad);
                    string  descripcionArt    = articulo.DescripcionLarga;

                    //
                    iu.PanelVentas.AgregarItemTirilla(new DItemTirilla(
                                                          item.CodigoLeido,
                                                          item.Articulo.DescripcionCorta,
                                                          item.Articulo.PrecioVenta1,
                                                          item.Cantidad,
                                                          item.Valor
                                                          ));

                    iu.PanelVentas.Tirilla.Insert(0, (new DItemTirilla(
                                                          item.CodigoLeido,
                                                          item.Articulo.DescripcionCorta,
                                                          item.Articulo.PrecioVenta1,
                                                          item.Cantidad,
                                                          item.Valor
                                                          )));

                    decimal newValor = articulo.PrecioVenta1;

                    if (item.Cantidad != 1 || cantidadActualArt > 0)
                    {
                        decimal newCantidad = iu.PanelVentas.Tirilla.Where(i => i.Codigo.Equals(item.CodigoLeido)).Sum(i => i.Cantidad);

                        if (newCantidad != 0)
                        {
                            descripcionArt = string.Format("{0} [{1}]", articulo.DescripcionLarga, newCantidad);
                        }
                    }

                    newValor = iu.PanelVentas.Tirilla.Where(i => i.Codigo.Equals(item.CodigoLeido)).Sum(i => i.Subtotal);

                    //
                    iu.PanelVentas.VisorCliente.Descripcion = descripcionArt;
                    iu.PanelVentas.VisorCliente.ValorItem   = newValor;

                    decimal pagosVenta = Entorno.Instancia.Venta.Pagos.Sum(x => x.Valor);

                    if (pagosVenta > 0)
                    {
                        iu.PanelVentas.VisorCliente.Total = Entorno.Instancia.Venta.TotalVenta - pagosVenta;
                    }
                    else
                    {
                        iu.PanelVentas.VisorCliente.Total = Entorno.Instancia.Venta.TotalVenta;
                    }

                    iu.PanelVentas.VisorCliente.Items = Entorno.Instancia.Venta.NumeroDeItemsVenta;

                    //Pantalla cliente.
                    iu.MostrarDisplayCliente(Enums.DisplayCliente.DisplayVenta);

                    //
                    iu.PanelVentas.VisorMensaje = string.Empty;
                    iu.PanelVentas.VisorEntrada = string.Empty;
                    Entorno.Instancia.Vista.PanelOperador.MensajeOperador = string.Empty;


                    if (!estaAbierta)
                    {
                        Respuesta respuestaEstadoImpresora = Entorno.Instancia.Impresora.ValidarEstado();
                        if (!respuestaEstadoImpresora.Valida)
                        {
                            //todo: mostrar mensaje de impresora.
                        }

                        log.InfoFormat("[CmdAgregarArticulo] --> Venta Iniciada: Transaccion: {0}, Factura {1}", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1));

                        Telemetria.Instancia.AgregaMetrica(new Evento("VentaIniciada").AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)));

                        Entorno.Instancia.Impresora.ValidarEstado();
                        if (!respuestaEstadoImpresora.Valida)
                        {
                            //todo: mostrar mensaje de impresora.
                        }
                    }

                    if (item.Cantidad < 0)
                    {
                        //Log archivo
                        log.InfoFormat("[CmdAgregarArticulo] Articulo cancelado: {0}, Transaccion: {1}, Factura {2}", item.ToString(), (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1));

                        //Log a azure
                        Telemetria.Instancia.AgregaMetrica(new Evento("VentaArticuloCancelado").AgregarPropiedad("Codigo", item.Articulo.CodigoImpresion).AgregarPropiedad("Descripcion", item.Articulo.DescripcionLarga).AgregarPropiedad("Impuesto", item.Articulo.Impuesto1).AgregarPropiedad("Valor", item.Articulo.PrecioVenta1).AgregarPropiedad("TotalImpuesto", item.Impuesto).AgregarPropiedad("Cantidad", item.Cantidad).AgregarPropiedad("TotalVenta", item.Valor).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)));
                    }
                    else
                    {
                        //Log archivo
                        log.InfoFormat("[CmdAgregarArticulo] Articulo agregado: {0}, Transaccion: {1}, Factura {2}", item.ToString(), (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1));

                        //Log a azure
                        Telemetria.Instancia.AgregaMetrica(new Evento("VentaArticuloAgregado").AgregarPropiedad("Codigo", item.Articulo.CodigoImpresion).AgregarPropiedad("Descripcion", item.Articulo.DescripcionLarga).AgregarPropiedad("Impuesto", item.Articulo.Impuesto1).AgregarPropiedad("Valor", item.Articulo.PrecioVenta1).AgregarPropiedad("TotalImpuesto", item.Impuesto).AgregarPropiedad("Cantidad", item.Cantidad).AgregarPropiedad("TotalVenta", item.Valor).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)));
                    }
                    //log.Debug("Artículo agregado");

                    if (Reactor.Instancia.EstadoFSMActual == EstadosFSM.CancelarItem)
                    {
                        iu.PanelVentas.VisorMensaje = "Articulo cancelado exitosamente.";
                    }
                }
                else
                {
                    log.WarnFormat("[CmdAgregarArticulo.Procesar] {0}", respuesta.Mensaje);
                    iu.PanelVentas.VisorMensaje = respuesta.Mensaje;
                    iu.PanelVentas.VisorEntrada = string.Empty;
                }
            }
            else
            {
                if (!checkFactura)
                {
                    log.WarnFormat("[CmdAgregarArticulo.Procesar] {0}", respuesta.Mensaje);
                    iu.PanelVentas.VisorMensaje = "ERROR - " + respuesta.Mensaje;
                }
                else if (!checkFecha)
                {
                    log.WarnFormat("[CmdAgregarArticulo.Procesar] {0}", respuesta.Mensaje);
                    iu.PanelVentas.VisorMensaje = "ERROR - " + respuesta2.Mensaje;
                }
                iu.PanelVentas.VisorEntrada = string.Empty;
            }


            ///
        }