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.")); } }
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.")); } }