Esempio n. 1
0
        public static ETipoAjuste InstanciarDesde(DataRow registro)
        {
            if (registro == null)
            {
                throw new ApplicationException("Registro nulo o contiene campos nulos.");
            }
            var a = new ETipoAjuste(
                (string)registro["id_ajuste_tipo"],
                (byte)registro["calcular_costo_venta"],
                (string)registro["cod_ajuste_tipo"],
                (string)registro["descripcion"],
                (byte)registro["editar_costo_venta"],
                (byte)registro["mostrar_costo_venta"],
                (string)registro["signo"],
                registro["activo"] != DBNull.Value ? (byte)registro["activo"] : Convert.ToByte(1)
                );

            return(a);
        }
Esempio n. 2
0
        // TODO : este requiere manejo transaccional!.
        /// <summary>
        ///
        /// </summary>
        /// <param name="ajuste"></param>
        /// <param name="terminal"></param>
        /// <param name="usuario"></param>
        /// <param name="localidad"></param>
        /// <param name="numero"></param>
        /// <param name="tipo"></param>
        /// <param name="contenido"></param>
        /// <param name="modeloImpresora"></param>
        /// <param name="respuesta"></param>
        public void GuardarAjuste(EAjuste ajuste, ETerminal terminal, EUsuario usuario, ELocalidad localidad, ETipoAjuste tipo, string contenido, string modeloImpresora, out Respuesta respuesta)
        {
            respuesta = new Respuesta(false);
            //1. Creamos el encabezado de la venta.
            string  idAjuste = Guid.NewGuid().ToString();
            RAjuste rajuste  = new RAjuste();
            RVenta  rventa   = new RVenta();

            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    var reg = rajuste.GetNumeroAjuste();

                    // int numero = reg.Field<int>("nro_ajuste");
                    int numero = (int)reg["nro_ajuste"];

                    if (rajuste.CrearAjuste(idAjuste, tipo.CalcularCostoVenta, "00", localidad.Codigo, ajuste.Estado, localidad.Codigo, numero + 1, tipo.Signo, tipo.Id, tipo.Codigo, 0, ajuste.TotalVenta, usuario.IdUsuario, ajuste.TotalImpuesto()) == 1)
                    {
                        //2. Creamos cada detalle de la venta.
                        string idAjusteDetalle = Guid.NewGuid().ToString();
                        var    tirilla         = ajuste.CopiaTirilla;
                        foreach (EItemVenta detalle in tirilla)
                        {
                            respuesta.Valida = true;
                            rajuste.CrearAjusteDetalle(idAjusteDetalle, idAjuste, detalle.Articulo.Id, detalle.Cantidad, "00", detalle.Articulo.CodigoImpresion, 0, numero + 1, detalle.Articulo.PrecioVenta1, detalle.Impuesto, detalle.Articulo.Impuesto1);
                            idAjusteDetalle = Guid.NewGuid().ToString();
                        }
                        rventa.CrearCopiaImpresion("00", terminal.Localidad.Codigo, terminal.Codigo, ((int)Enums.TipoTransaccion.Ajuste).ToString(), usuario.IdUsuario, contenido, terminal.Localidad.Codigo, modeloImpresora, 0, numero + 1, terminal.Prefijo, terminal.Codigo, ((int)Enums.TipoTransaccion.Ajuste).ToString(), usuario.IdUsuario);
                    }
                    else
                    {
                        throw new Exception("[GuardarAjuste]: Transaccion no pudo ser guardada.");
                    }
                    scope.Complete();
                }
            }
            catch (SqlException e)
            {
                if (e.Number == -2 || e.Number == 121)
                {
                    respuesta.Valida  = false;
                    respuesta.Mensaje = "Se perdió la conexión con el servidor.";
                    log.Error("[GuardarAjuste]: No pudo ser guardada la transaccion: " + e.Message);
                }
                else
                {
                    respuesta.Valida  = false;
                    respuesta.Mensaje = "Hubo un problema al momento de guardar la transaccion. Por favor contacte al administrador del sistema.";
                    log.Error("[GuardarAjuste]: No pudo ser guardada la transaccion: " + e.Message);
                }
                Telemetria.Instancia.AgregaMetrica(new Excepcion(e));
            }
            catch (Exception ex)
            {
                respuesta.Valida  = false;
                respuesta.Mensaje = "[GuardarAjuste]: No pudo ser guardado el ajuste.";
                log.Error("[GuardarAjuste]: No pudo ser guardado el ajuste: " + ex.Message);
                Telemetria.Instancia.AgregaMetrica(new Excepcion(ex));
            }
        }
Esempio n. 3
0
        public override void Ejecutar()
        {
            Respuesta respuesta = new Respuesta();
            Dictionary <string, string> idsAcumulados = Entorno.Instancia.IdsAcumulados;
            PAjuste     Ajuste     = new PAjuste();
            ETipoAjuste tipoAjuste = Entorno.Instancia.TiposAjustes.TiposAjuste.FirstOrDefault(x => x.Codigo.Equals(CodigoAjuste));

            if (!(tipoAjuste == null))
            {
                // Imprimir factura
                string factura         = ProcesarPlantilla.Ajuste(Entorno.Instancia.Ajuste, Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, tipoAjuste.Descripcion);
                string modeloImpresora = Entorno.Instancia.Impresora.Marca ?? "impresora";

                //
                log.InfoFormat("[CmdPagarVenta] Ajuste Finalizado, Transaccion: {0}, Factura {1}", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1));

                string tirillaActual = "";
                iu.PanelVentas.Tirilla.ForEach(x =>
                {
                    tirillaActual += String.Format("Codigo: {0}, Descripción: {1} ({4}), Cantidad: {2}, Precio: {3} ", x.Codigo, x.Descripcion, x.Cantidad, x.Subtotal, x.PrecioVentaUnidad);
                    tirillaActual += Environment.NewLine;
                });
                log.Info("Items tirilla:" + tirillaActual + Environment.NewLine + "Total: " + Entorno.Instancia.Ajuste.TotalVenta + Environment.NewLine + "Totales Impuestos: " + Entorno.Instancia.Ajuste.ImpuestosIncluidos.Sum(x => x.Value[2]) + Environment.NewLine + "Cant Artículos Vendidos: " + Entorno.Instancia.Ajuste.NumeroDeItemsVenta + Environment.NewLine);

                var tiempoGuardarAjuste = new MetricaTemporizador("TerminarAjusteFinalizado");
                Ajuste.GuardarAjuste(Entorno.Instancia.Ajuste, Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, Entorno.Instancia.Terminal.Localidad, tipoAjuste, factura, modeloImpresora, out respuesta);
                if (respuesta.Valida == false)
                {
                    Telemetria.Instancia.AgregaMetrica(tiempoGuardarAjuste.Para().AgregarPropiedad("Exitoso", false).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)).AgregarPropiedad("TotalVenta", Entorno.Instancia.Ajuste.TotalVenta).AgregarPropiedad("TotalImpuestoVenta", Entorno.Instancia.Ajuste.ImpuestosIncluidos.Sum(x => x.Value[2])).AgregarPropiedad("NroArticulosVenta", Entorno.Instancia.Ajuste.NumeroDeItemsVenta).AgregarPropiedad("Error", respuesta.Mensaje));
                }
                else
                {
                    //Log a azure
                    Telemetria.Instancia.AgregaMetrica(tiempoGuardarAjuste.Para().AgregarPropiedad("Exitoso", true).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)).AgregarPropiedad("TotalVenta", Entorno.Instancia.Ajuste.TotalVenta).AgregarPropiedad("TotalImpuestoVenta", Entorno.Instancia.Ajuste.ImpuestosIncluidos.Sum(x => x.Value[2])).AgregarPropiedad("NroArticulosVenta", Entorno.Instancia.Ajuste.NumeroDeItemsVenta));

                    // Imprimir
                    Entorno.Instancia.Impresora.Imprimir(factura, cortarPapel: true, abrirCajon: false);

                    //
                    Entorno.Instancia.IdsAcumulados = idsAcumulados;

                    //
                    respuesta = new Respuesta(false);
                    ETerminal terminal = new PTerminal().BuscarTerminalPorCodigo(Common.Config.Terminal, out respuesta);
                    Entorno.Instancia.Terminal = terminal;

                    LimpiarVentaFinalizada();
                    log.Info("[CmdTerminarAjuste] Ajuste finalizado");

                    //
                    decimal valorCambio = Entorno.Instancia.Ajuste.TotalVenta * -1;
                    iu.PanelVentas.VisorCliente.Total = 0;
                    //iu.PanelVentas.VisorMensaje = string.Format("Cambio: {0}", valorCambio.ToString("C"));

                    //
                    log.InfoFormat("[CmdTerminarAjuste] --> Transaccion finalizada");

                    iu.PanelOperador.CodigoCliente = "";
                    //
                    iu.PanelVentas.LimpiarOperacion();

                    Entorno.Instancia.Ajuste.EstaAbierta = false;
                    Entorno.Instancia.Ajuste             = null;
                }
            }
        }