private void MostrarSinNumero() { label3.Visible = EntradaAnularPagos.Visible = EntradaTipo.Visible = EntradaCompra.Visible = false; EntradaDesde.Visible = EntradaHasta.Visible = EntradaPV.Visible = false; Lbl.Comprobantes.ComprobanteConArticulos Fac = new Lbl.Comprobantes.ComprobanteConArticulos(this.Connection, IdAnular); if (Fac != null) { ListadoFacturas.BeginUpdate(); ListadoFacturas.Items.Clear(); ListViewItem Itm = ListadoFacturas.Items.Add(Fac.Tipo.ToString()); Itm.SubItems.Add(Fac.PV.ToString("0000") + "-" + Fac.Numero.ToString("00000000")); Itm.SubItems.Add(Fac.Fecha.ToString(Lfx.Types.Formatting.DateTime.ShortDatePattern)); Itm.SubItems.Add(Fac.Cliente.ToString()); Itm.SubItems.Add(Lfx.Types.Formatting.FormatCurrency(Fac.Total)); ListadoFacturas.EndUpdate(); EtiquetaAviso.Text = "Se van a anular un comprobante, que no tiene n° asignado."; this.OkButton.Visible = true; } }
private void MostrarVistaPrevia() { int PV = EntradaPV.ValueInt; int Desde = EntradaDesde.ValueInt; if (EntradaHasta.ValueInt < Desde && this.ActiveControl != EntradaHasta) { EntradaHasta.ValueInt = Desde; } int Hasta = EntradaHasta.ValueInt; int Cantidad = Hasta - Desde + 1; string[] IncluyeTipos; switch (EntradaTipo.TextKey) { case "A": IncluyeTipos = new string[] { "FA", "NCA", "NDA" }; break; case "B": IncluyeTipos = new string[] { "FB", "NCB", "NDB" }; break; case "C": IncluyeTipos = new string[] { "FC", "NCC", "NDC" }; break; case "E": IncluyeTipos = new string[] { "FE", "NCE", "NDE" }; break; case "M": IncluyeTipos = new string[] { "FM", "NCM", "NDM" }; break; case "T": IncluyeTipos = new string[] { "T" }; break; default: IncluyeTipos = new string[] { EntradaTipo.TextKey }; break; } qGen.Where WhereAnular = new qGen.Where(); WhereAnular.AddWithValue("compra", m_DeCompra ? 1 : 0); WhereAnular.AddWithValue("impresa", qGen.ComparisonOperators.NotEqual, 0); WhereAnular.AddWithValue("tipo_fac", qGen.ComparisonOperators.In, IncluyeTipos); WhereAnular.AddWithValue("pv", PV); if (ProximosNumeros.ContainsKey(PV) == false) { qGen.Select SelProxNum = new qGen.Select("comprob"); SelProxNum.Columns = new List <string> { "MAX(numero)" }; SelProxNum.WhereClause = WhereAnular; ProximosNumeros[PV] = this.Connection.FieldInt(SelProxNum) + 1; } if (PV <= 0 || Desde <= 0 || Cantidad <= 0) { EtiquetaAviso.Text = "El rango seleccionado no es válido."; ComprobanteVistaPrevia.Visible = false; ListadoFacturas.Visible = false; OkButton.Visible = false; return; } if (Desde > ProximosNumeros[PV]) { EtiquetaAviso.Text = "No se puede anular el rango seleccionado porque todavía no se utilizaron los comprobantes desde el " + ProximosNumeros[PV].ToString() + " al " + (Desde - 1).ToString(); ComprobanteVistaPrevia.Visible = false; ListadoFacturas.Visible = false; OkButton.Visible = false; return; } ComprobanteVistaPrevia.Visible = Cantidad == 1; ListadoFacturas.Visible = Cantidad > 1; if (Cantidad == 1) { qGen.Select SelDesde = new qGen.Select("comprob"); SelDesde.Columns = new List <string> { "id_comprob" }; SelDesde.WhereClause = WhereAnular.Clone(); SelDesde.WhereClause.AddWithValue("numero", Desde); SelDesde.Order = "anulada"; int IdFactura = this.Connection.FieldInt(SelDesde); Lbl.Comprobantes.ComprobanteConArticulos FacturaInicial = null; if (IdFactura > 0) { FacturaInicial = new Lbl.Comprobantes.ComprobanteConArticulos(this.Connection, IdFactura); } if (FacturaInicial != null && FacturaInicial.Existe) { ComprobanteVistaPrevia.Elemento = FacturaInicial; ComprobanteVistaPrevia.ActualizarControl(); ComprobanteVistaPrevia.TemporaryReadOnly = true; ComprobanteVistaPrevia.Visible = true; if (FacturaInicial.Anulado) { EtiquetaAviso.Text = "El comprobante ya fue anulado y no puede anularse nuevamente."; OkButton.Visible = false; } else { if (this.DeCompra) { EtiquetaAviso.Text = "Al anular comprobantes de compra, estos serán excluidos de los listados."; } else { EtiquetaAviso.Text = "Recuerde que necesitar archivar todas las copias del comprobante anulado."; } OkButton.Visible = true; if (FacturaInicial.FormaDePago.Tipo == Lbl.Pagos.TiposFormasDePago.CuentaCorriente) { EntradaAnularPagos.TextKey = "1"; } else { EntradaAnularPagos.TextKey = "0"; } } } else { ComprobanteVistaPrevia.Visible = false; if (Desde == ProximosNumeros[PV]) { EtiquetaAviso.Text = "El comprobante " + EntradaTipo.TextKey + " " + PV.ToString("0000") + "-" + Desde.ToString("00000000") + " aun no fue impreso, pero es el próximo en el talonario. Si lo anula, el sistema salteará dicho comprobante."; EntradaAnularPagos.TextKey = "0"; OkButton.Visible = true; } else { EtiquetaAviso.Text = "El comprobante " + EntradaTipo.TextKey + " " + PV.ToString("0000") + "-" + Lfx.Types.Parsing.ParseInt(EntradaDesde.Text).ToString("00000000") + " aun no fue impreso y no puede anularse."; EntradaAnularPagos.TextKey = "0"; OkButton.Visible = false; } } } else if (Cantidad > 1) { EntradaAnularPagos.TextKey = "1"; qGen.Select SelComprobs = new qGen.Select("comprob"); SelComprobs.Columns = new List <string> { "*" }; SelComprobs.WhereClause = WhereAnular.Clone(); SelComprobs.WhereClause.AddWithValue("numero", Desde, Hasta); System.Data.DataTable TablaFacturas = this.Connection.Select(SelComprobs); Lbl.Comprobantes.ColeccionComprobanteConArticulos Facturas = new Lbl.Comprobantes.ColeccionComprobanteConArticulos(this.Connection, TablaFacturas); ListadoFacturas.BeginUpdate(); ListadoFacturas.Items.Clear(); foreach (Lbl.Comprobantes.ComprobanteConArticulos Fac in Facturas) { ListViewItem Itm = ListadoFacturas.Items.Add(Fac.Tipo.ToString()); Itm.SubItems.Add(Fac.PV.ToString("0000") + "-" + Fac.Numero.ToString("00000000")); Itm.SubItems.Add(Fac.Fecha.ToString(Lfx.Types.Formatting.DateTime.ShortDatePattern)); Itm.SubItems.Add(Fac.Cliente.ToString()); Itm.SubItems.Add(Lfx.Types.Formatting.FormatCurrency(Fac.Total)); } ListadoFacturas.EndUpdate(); EtiquetaAviso.Text = "Se van a anular " + Cantidad.ToString() + " comprobantes, incluyendo los que se detallan a continuación."; this.OkButton.Visible = true; } else { EtiquetaAviso.Text = "Debe seleccionar un rango que inlcuya al menos 1 comprobante."; ListadoFacturas.Items.Clear(); this.OkButton.Visible = false; } }
private void MostrarVistaPrevia() { int PV = EntradaPV.ValueInt; int Desde = EntradaDesde.ValueInt; if ((EntradaHasta.ValueInt == 0 || EntradaHasta.ValueInt < Desde) && this.ActiveControl != EntradaHasta) { EntradaHasta.ValueInt = Desde; } int Hasta = EntradaHasta.ValueInt; int Cantidad = Hasta - Desde + 1; 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; default: IncluyeTipos = "'" + EntradaTipo.TextKey + "'"; break; } if (ProximosNumeros.ContainsKey(PV) == false) { ProximosNumeros[PV] = this.Connection.FieldInt("SELECT MAX(numero) FROM comprob WHERE impresa=1 AND tipo_fac IN (" + IncluyeTipos + ") AND pv=" + PV.ToString()) + 1; } if (PV <= 0 || Desde <= 0 || Cantidad <= 0) { EtiquetaAviso.Text = "El rango seleccionado no es válido."; ComprobanteVistaPrevia.Visible = false; ListadoFacturas.Visible = false; OkButton.Visible = false; return; } if (Desde > ProximosNumeros[PV] || Hasta > ProximosNumeros[PV]) { EtiquetaAviso.Text = "No se puede reimprimir el rango seleccionado porque todavía no se utilizaron los comprobantes desde el " + ProximosNumeros[PV].ToString() + " al " + (Desde - 1).ToString(); ComprobanteVistaPrevia.Visible = false; ListadoFacturas.Visible = false; OkButton.Visible = false; return; } ComprobanteVistaPrevia.Visible = Cantidad == 1; ListadoFacturas.Visible = Cantidad > 1; if (Cantidad == 1) { int IdFactura = this.Connection.FieldInt("SELECT id_comprob FROM comprob WHERE impresa=1 AND tipo_fac IN (" + IncluyeTipos + ") AND pv=" + PV.ToString() + " AND numero=" + Desde.ToString()); Lbl.Comprobantes.ComprobanteFacturable FacturaInicial = null; if (IdFactura > 0) { FacturaInicial = new Lbl.Comprobantes.ComprobanteFacturable(this.Connection, IdFactura); } if (FacturaInicial != null && FacturaInicial.Existe) { ComprobanteVistaPrevia.Elemento = FacturaInicial; ComprobanteVistaPrevia.ActualizarControl(); ComprobanteVistaPrevia.TemporaryReadOnly = true; ComprobanteVistaPrevia.Visible = true; if (FacturaInicial.Anulado) { EtiquetaAviso.Text = "El comprobante fue anulado y no puede reimprimirse."; OkButton.Visible = false; } else { EtiquetaAviso.Text = ""; OkButton.Visible = true; } } else { ComprobanteVistaPrevia.Visible = false; EtiquetaAviso.Text = "El comprobante " + EntradaTipo.TextKey + " " + PV.ToString("0000") + "-" + Lfx.Types.Parsing.ParseInt(EntradaDesde.Text).ToString("00000000") + " aun no fue impreso y no puede reimprimirse."; EntradaOrden.TextKey = "0"; OkButton.Visible = false; } } else if (Cantidad > 1) { System.Data.DataTable TablaFacturas = this.Connection.Select("SELECT * FROM comprob WHERE impresa=1 AND anulada=0 AND tipo_fac IN (" + IncluyeTipos + ") AND pv=" + PV.ToString() + " AND numero BETWEEN " + Desde.ToString() + " AND " + Hasta.ToString()); Lbl.Comprobantes.ColeccionComprobanteConArticulos Facturas = new Lbl.Comprobantes.ColeccionComprobanteConArticulos(this.Connection, TablaFacturas); ListadoFacturas.BeginUpdate(); ListadoFacturas.Items.Clear(); foreach (Lbl.Comprobantes.ComprobanteConArticulos Fac in Facturas) { ListViewItem Itm = ListadoFacturas.Items.Add(Fac.Tipo.ToString()); Itm.SubItems.Add(Fac.PV.ToString("0000") + "-" + Fac.Numero.ToString("00000000")); Itm.SubItems.Add(Fac.Fecha.ToString(Lfx.Types.Formatting.DateTime.ShortDatePattern)); Itm.SubItems.Add(Fac.Cliente.ToString()); Itm.SubItems.Add(Lfx.Types.Formatting.FormatCurrency(Fac.Total)); } ListadoFacturas.EndUpdate(); EtiquetaAviso.Text = "Se van a reimprimir " + Cantidad.ToString() + " comprobantes, incluyendo los que se detallan a continuación."; this.OkButton.Visible = true; } else { EtiquetaAviso.Text = "Debe seleccionar un rango que inlcuya al menos 1 comprobante."; ListadoFacturas.Items.Clear(); this.OkButton.Visible = false; } }