Beispiel #1
0
        public override Lfx.Types.OperationResult Ok()
        {
            int PV       = EntradaPV.ValueInt;
            int Desde    = EntradaDesde.ValueInt;
            int Hasta    = EntradaHasta.ValueInt;
            int Cantidad = Hasta - Desde + 1;

            int DesdeReal, HastaReal;

            if (EntradaOrden.TextKey == "1")
            {
                DesdeReal = Hasta;
                HastaReal = Desde - 1;
            }
            else
            {
                DesdeReal = Desde;
                HastaReal = Hasta + 1;
            }

            Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Por favor verifique que impresora tenga " + Cantidad.ToString() + " comprobantes, iniciando con el Nº " + PV.ToString("0000") + "-" + DesdeReal.ToString("00000000"), "¿Está seguro de que desea reimprimir " + Cantidad.ToString() + " comprobantes?");
            Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;

            if (Pregunta.ShowDialog() == DialogResult.OK)
            {
                System.Threading.ThreadStart ThreadFiltro = delegate { ProcesarReimpresion(EntradaTipo.TextKey, PV, DesdeReal, HastaReal);; };
                System.Threading.Thread      Thr          = new System.Threading.Thread(ThreadFiltro);
                Thr.IsBackground = true;
                Thr.Start();

                ProximosNumeros.Clear();

                EntradaDesde.Text = "0";
                EntradaHasta.Text = "0";
                EntradaDesde.Focus();

                return(new Lfx.Types.CancelOperationResult());
            }
            else
            {
                return(new Lfx.Types.FailureOperationResult("La operación fue cancelada."));
            }
        }
Beispiel #2
0
        public override Lfx.Types.OperationResult Ok()
        {
            int PV       = EntradaPV.ValueInt;
            int Desde    = EntradaDesde.ValueInt;
            int Hasta    = EntradaHasta.ValueInt;
            int Cantidad = Hasta - Desde + 1;

            Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Una vez anulados, los comprobantes deberán ser archivados en todas sus copias y no podrán ser rehabilitados ni reutilizados.", "¿Está seguro de que desea anular " + Cantidad.ToString() + " comprobantes?");
            Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;

            if (Pregunta.ShowDialog() == DialogResult.OK)
            {
                bool AnularPagos = EntradaAnularPagos.ValueInt != 0;

                int    m_Id         = 0;
                string IncluyeTipos = "";

                switch (EntradaTipo.TextKey)
                {
                case "A":
                    IncluyeTipos = "'FA', 'NCA', 'NDA'";
                    break;

                case "B":
                    IncluyeTipos = "'FB', 'NCB', 'NDB'";
                    break;

                case "C":
                    IncluyeTipos = "'FC', 'NCC', 'NDC'";
                    break;

                case "E":
                    IncluyeTipos = "'FE', 'NCE', 'NDE'";
                    break;

                case "M":
                    IncluyeTipos = "'FM', 'NCM', 'NDM'";
                    break;

                case "T":
                    IncluyeTipos = "'T'";
                    break;

                default:
                    IncluyeTipos = "'" + EntradaTipo.TextKey + "'";
                    break;
                }

                Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Anulando comprobantes", "Se están anulando los comprobantes seleccionados.");
                Progreso.Cancelable = true;
                Progreso.Max        = Cantidad;
                Progreso.Begin();

                IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);
                for (int Numero = Desde; Numero <= Hasta; Numero++)
                {
                    int IdFactura = Connection.FieldInt("SELECT id_comprob FROM comprob WHERE impresa=1 AND tipo_fac IN (" + IncluyeTipos + ") AND pv=" + PV.ToString() + " AND numero=" + Numero.ToString() + " ORDER BY anulada");

                    if (IdFactura == 0)
                    {
                        // Es una factura que todava no existe
                        // Tengo que crear la factura y anularla
                        qGen.Insert InsertarComprob = new qGen.Insert("comprob");
                        InsertarComprob.ColumnValues.AddWithValue("tipo_fac", "F" + EntradaTipo.TextKey);
                        InsertarComprob.ColumnValues.AddWithValue("id_formapago", 3);
                        InsertarComprob.ColumnValues.AddWithValue("id_sucursal", Lfx.Workspace.Master.CurrentConfig.Empresa.SucursalActual);
                        InsertarComprob.ColumnValues.AddWithValue("pv", Lfx.Types.Parsing.ParseInt(EntradaPV.Text));
                        InsertarComprob.ColumnValues.AddWithValue("fecha", new qGen.SqlExpression("NOW()"));
                        InsertarComprob.ColumnValues.AddWithValue("id_vendedor", Lbl.Sys.Config.Actual.UsuarioConectado.Id);
                        InsertarComprob.ColumnValues.AddWithValue("id_cliente", Lbl.Sys.Config.Actual.UsuarioConectado.Id);
                        InsertarComprob.ColumnValues.AddWithValue("obs", "Comprobante anulado antes de ser impreso.");
                        InsertarComprob.ColumnValues.AddWithValue("impresa", 1);
                        InsertarComprob.ColumnValues.AddWithValue("anulada", 1);
                        Connection.ExecuteNonQuery(InsertarComprob);
                        m_Id = Connection.FieldInt("SELECT LAST_INSERT_ID()");
                        Lbl.Comprobantes.ComprobanteConArticulos NuevoComprob = new Lbl.Comprobantes.ComprobanteConArticulos(this.Connection, m_Id);
                        new Lbl.Comprobantes.Numerador(NuevoComprob).Numerar(true);
                    }
                    else
                    {
                        Lbl.Comprobantes.ComprobanteConArticulos Fac = new Lbl.Comprobantes.ComprobanteConArticulos(Connection, IdFactura);
                        if (Fac.Anulado == false)
                        {
                            Fac.Anular(AnularPagos);
                        }
                    }

                    Progreso.Advance(1);
                    if (Progreso.Cancelar)
                    {
                        break;
                    }
                }

                Progreso.End();

                if (Progreso.Cancelar)
                {
                    Trans.Rollback();
                    Lfx.Workspace.Master.RunTime.Toast("La operación fue cancelada.", "Aviso");
                }
                else
                {
                    Trans.Commit();
                    ProximosNumeros.Clear();
                    if (this.DeCompra)
                    {
                        Lui.Forms.MessageBox.Show("Se anularon los comprobantes seleccionados. Si fueron anulados por error de carga, ahora puede cargarlos nuevamente.", "Aviso");
                    }
                    else
                    {
                        Lui.Forms.MessageBox.Show("Se anularon los comprobantes seleccionados. Recuerde archivar ambas copias.", "Aviso");
                    }
                }

                EntradaDesde.ValueInt = 0;
                EntradaHasta.ValueInt = 0;
                EntradaDesde.Focus();

                return(base.Ok());
            }
            else
            {
                return(new Lfx.Types.FailureOperationResult("La operación fue cancelada."));
            }
        }