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; } /// }
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; } /// }
/// <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; } /// }