Пример #1
0
 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;
     }
 }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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;
            }
        }