Beispiel #1
0
 public override Lfx.Types.OperationResult SolicitudEliminacion(Lbl.ListaIds codigos)
 {
     using (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?"))
     {
         Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
         if (Pregunta.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             int IdRemito = codigos[0];
             System.Data.IDbTransaction Trans = this.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable);
             System.Data.DataTable      Tabla = this.Connection.Select("select id_comprob from comprob where id_remito=" + IdRemito + " and anulada=0;");
             if (Tabla == null || Tabla.Rows.Count == 0)
             {
                 Lbl.Comprobantes.ComprobanteConArticulos Rem = new Lbl.Comprobantes.ComprobanteConArticulos(Connection, IdRemito);
                 if (Rem.Anulado == false)
                 {
                     Rem.Anular(false);
                     Trans.Commit();
                 }
             }
             else
             {
                 Lui.Forms.MessageBox.Show("No se puede anular si se encuentra relacionada con una factura", "¡Error!");
             }
         }
     }
     return(new Lfx.Types.SuccessOperationResult());
 }
Beispiel #2
0
        private bool AnularSinNumero()
        {
            Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Anulando comprobantes", "Se están anulando los comprobantes seleccionados.");
            Progreso.Cancelable = true;
            Progreso.Max        = 1;
            Progreso.Begin();

            IDbTransaction Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);

            Lbl.Comprobantes.ComprobanteConArticulos Fac = new Lbl.Comprobantes.ComprobanteConArticulos(Connection, IdAnular);
            if (Fac.Anulado == false)
            {
                Fac.Anular(false);
            }
            Progreso.Advance(1);
            Progreso.End();

            if (Progreso.Cancelar)
            {
                Trans.Rollback();
                Lfx.Workspace.Master.RunTime.Toast("La operación fue cancelada.", "Aviso");
                return(false);
            }
            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");
                }
                return(true);
            }
        }
Beispiel #3
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."));
            }
        }
Beispiel #4
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());

                                        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.Fields.AddWithValue("tipo_fac", "F" + EntradaTipo.TextKey);
                                                InsertarComprob.Fields.AddWithValue("id_formapago", 3);
                                                InsertarComprob.Fields.AddWithValue("id_sucursal", Lfx.Workspace.Master.CurrentConfig.Empresa.SucursalActual);
                                                InsertarComprob.Fields.AddWithValue("pv", Lfx.Types.Parsing.ParseInt(EntradaPV.Text));
                                                InsertarComprob.Fields.AddWithValue("fecha", qGen.SqlFunctions.Now);
                                                InsertarComprob.Fields.AddWithValue("id_vendedor", Lbl.Sys.Config.Actual.UsuarioConectado.Id);
                                                InsertarComprob.Fields.AddWithValue("id_cliente", Lbl.Sys.Config.Actual.UsuarioConectado.Id);
                                                InsertarComprob.Fields.AddWithValue("obs", "Comprobante anulado antes de ser impreso.");
                                                InsertarComprob.Fields.AddWithValue("impresa", 1);
                                                InsertarComprob.Fields.AddWithValue("anulada", 1);
                                                Connection.Execute(InsertarComprob);
                                                m_Id = Connection.FieldInt("SELECT LAST_INSERT_ID()");
                                                Lbl.Comprobantes.ComprobanteConArticulos NuevoComprob = new Lbl.Comprobantes.ComprobanteConArticulos(this.Connection, m_Id);
                                                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();
                                        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.");
                        }
                }