示例#1
0
        private void MostrarErrorFiscal(Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.Respuesta Res)
        {
            FormError FormFiscalError = new FormError();

            FormFiscalError.Mostrar(Res);
            FormFiscalError.ShowDialog();
        }
示例#2
0
        internal void Mostrar(Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.Respuesta Res)
        {
            switch (Res.Error)
            {
            case Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.Ok:
                EtiquetaError.Text = "OK???";
                break;

            case Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.ErrorBCC:
                EtiquetaError.Text = "BCC";
                break;

            case Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.Error:
                EtiquetaError.Text = "Error genérico";
                break;

            case Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.ErrorFiscal:
                EtiquetaError.Text = "Error fiscal";
                break;

            case Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.ErrorImpresora:
                EtiquetaError.Text = "Error impresora";
                break;

            case Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.NAK:
                EtiquetaError.Text = "NAK";
                break;

            case Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.TimeOut:
                EtiquetaError.Text = "Timeout";
                break;
            }

            EtiquetaLugar.Text   = Res.Lugar;
            EtiquetaMensaje.Text = Res.Mensaje;
            EtiquetaComando.Text = Res.CodigoComando.ToString();
            if (Res.Campos != null)
            {
                EtiquetaCampos.Text = string.Join(Environment.NewLine, Res.Campos.ToArray());
            }
            EtiquetaEstadoImpresora.Text = Res.ExplicarEstadoImpresora();
            EtiquetaEstadoFiscal.Text    = Res.ExplicarEstadoFiscal();
            CancelCommandButton.Visible  = false;
        }
示例#3
0
        private void EventoProgramador(object source, System.Timers.ElapsedEventArgs e)
        {
            Programador.Stop();
            Watchdog_LastOp = System.DateTime.Now;

            //Busco un PV que corresponda a esta terminal
            if (this.PV == 0)
            {
                Programador.Start();
                return;
            }

            Watchdog.Stop();
            try {
                using (IDbTransaction Trans = this.Impresora.Connection.BeginTransaction()) {
                    var Actualizar = new qGen.Update("pvs", new qGen.Where("id_pv", this.PVenta));
                    Actualizar.ColumnValues.AddWithValue("lsa", new qGen.SqlExpression("NOW()"));
                    this.Impresora.Connection.ExecuteNonQuery(Actualizar);
                    Trans.Commit();
                }
            } catch {
                // Nada
            }

            Lfx.Services.Task ProximaTarea = Lfx.Workspace.Master.DefaultScheduler.GetNextTask("fiscal" + this.PV.ToString());
            if (ProximaTarea != null)
            {
                string Comando    = ProximaTarea.Command;
                string SubComando = Lfx.Types.Strings.GetNextToken(ref Comando, " ").Trim().ToUpper();

                Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.Respuesta Res;
                switch (SubComando)
                {
                case "REBOOT":
                    FormEstado.MostrarEstado("Reiniciando...");
                    Impresora.EstadoServidor = Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.EstadoServidorFiscal.Reiniciando;
                    //this.End(true);
                    break;

                case "END":
                    FormEstado.MostrarEstado("Cerrando...");
                    Impresora.EstadoServidor = Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.EstadoServidorFiscal.Apagando;
                    //this.End(false);
                    break;

                case "CIERRE":
                    FormEstado.MostrarEstado("Imprimiendo cierre...");
                    Res = Impresora.ObtenerEstadoImpresora();
                    if (Res.EstadoFiscal.DocumentoFiscalAbierto)
                    {
                        Res = Impresora.CancelarDocumentoFiscal();
                        System.Threading.Thread.Sleep(500);
                    }
                    else if (Res.Error == Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.Ok)
                    {
                        string SubComandoCierre = Lfx.Types.Strings.GetNextToken(ref Comando, " ").Trim().ToUpper();
                        Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.Respuesta ResultadoCierre = Impresora.Cierre(SubComandoCierre, true);
                        if (SubComandoCierre == "Z" && ResultadoCierre.Error == Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.Ok)
                        {
                            //Si hizo un cierre Z correctamente, actualizo la variable LCZ
                            using (IDbTransaction Trans = this.Impresora.Connection.BeginTransaction()) {
                                qGen.Update Actualizar = new qGen.Update("pvs", new qGen.Where("id_pv", this.PVenta));
                                Actualizar.ColumnValues.AddWithValue("ultimoz", new qGen.SqlExpression("NOW()"));
                                this.Impresora.Connection.ExecuteNonQuery(Actualizar);
                                Trans.Commit();
                            }
                        }
                        if (ResultadoCierre.Error != Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.Ok)
                        {
                            MostrarErrorFiscal(ResultadoCierre);
                        }
                        System.Threading.Thread.Sleep(100);
                    }
                    break;

                case "CANCELAR":
                    FormEstado.MostrarEstado("Cancelando comprobante...");
                    string ItemCancelar = Lfx.Types.Strings.GetNextToken(ref Comando, " ").Trim().ToUpper();
                    switch (ItemCancelar)
                    {
                    case "FISCAL":
                        Impresora.CancelarDocumentoFiscal();
                        System.Threading.Thread.Sleep(500);
                        break;
                    }
                    break;

                case "IMPRIMIR":
                    FormEstado.MostrarEstado("Imprimiendo...");
                    int IdFactura = Lfx.Types.Parsing.ParseInt(Lfx.Types.Strings.GetNextToken(ref Comando, " ").Trim());
                    Res = Impresora.ObtenerEstadoImpresora();

                    if (Res.EstadoFiscal.DocumentoFiscalAbierto)
                    {
                        Res = Impresora.CancelarDocumentoFiscal();
                        System.Threading.Thread.Sleep(500);
                    }

                    if (Res.HacerCierreZ)
                    {
                        Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Hacer Cierre Z", "Es obligatorio hacer un Cierre Z antes de continuar. ¿Desea hacer el cierre ahora?");
                        Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;

                        if (Pregunta.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            // Hago el cierre, y Res es el resultado del cierre
                            Res = Impresora.Cierre("Z", true);
                            System.Threading.Thread.Sleep(500);
                        }
                        else
                        {
                            // No quiso hacer el cierre. Devuelvo un error
                            Programador.Start();
                            Watchdog.Start();
                            return;
                        }
                    }

                    if (Res.Error == Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.Ok)
                    {
                        Res = Impresora.ImprimirComprobante(IdFactura);
                    }

                    if (Res.Error != Lazaro.Base.Util.Impresion.Comprobantes.Fiscal.ErroresFiscales.Ok)
                    {
                        MostrarErrorFiscal(Res);
                        FormEstado.MostrarEstado("Cancelando documento...");
                        if (Res.EstadoFiscal.DocumentoFiscalAbierto)
                        {
                            Res = Impresora.CancelarDocumentoFiscal();
                        }
                        Programador.Start();
                        Watchdog.Start();
                        return;
                    }
                    break;
                }
            }
            Programador.Start();
            Watchdog.Start();
        }