Beispiel #1
0
        public override void OnExport(string filename, FormatoExportar formato)
        {
            System.Data.DataTable Tabla = this.Connection.Select(this.SelectCommand());

            Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Generando archivos", "Leyendo información de los comprobantes");
            Progreso.Max = Tabla.Rows.Count * 3;
            Progreso.Begin();

            var ArchivoCitiVentas = new Lbl.Archivos.Salida.CitiVentas(Progreso);

            foreach (System.Data.DataRow Registro in Tabla.Rows)
            {
                Lbl.Comprobantes.ComprobanteFacturable ComprobanteFacturable = new Lbl.Comprobantes.ComprobanteFacturable(this.Connection, System.Convert.ToInt32(Registro["id_comprob"]));
                if (!ComprobanteFacturable.Anulado)
                {
                    ArchivoCitiVentas.Comprobantes.Add(ComprobanteFacturable);
                }
                Progreso.Advance(1);
            }

            var ArchivoCitiAlicuotas = new Lbl.Archivos.Salida.CitiVentasAlicuotas(ArchivoCitiVentas);

            var NombreArchivoBase = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(filename), System.IO.Path.GetFileNameWithoutExtension(filename));

            Progreso.Description = "Generando el archivo de ventas";
            ArchivoCitiVentas.Escribir(NombreArchivoBase + " Ventas.txt");

            Progreso.Description = "Generando el archivo de alícuotas";
            ArchivoCitiAlicuotas.Escribir(NombreArchivoBase + " Ventas Alícuotas.txt");

            Progreso.End();

            base.OnExport(filename, formato);
        }
Beispiel #2
0
        public override List <string> FormatearRegistro(int lineNumber, Lbl.Comprobantes.ComprobanteFacturable ComprobanteFacturable)
        {
            string Renglon = "";

            //Formato CITI Ventas

            Renglon += ComprobanteFacturable.Fecha.ToString("yyyyMMdd");                                                                  // Fecha del comprobante
            Renglon += ((int)(CitiTablas.ComprobantesTiposPorLetra[ComprobanteFacturable.Tipo.Nomenclatura])).ToString().PadLeft(3, '0'); // Tipo de comprobante
            Renglon += ComprobanteFacturable.PV.ToString().PadLeft(5, '0');                                                               // Punto de venta
            Renglon += ComprobanteFacturable.Numero.ToString().PadLeft(20, '0');                                                          // Numero de comrpbante
            Renglon += ComprobanteFacturable.Numero.ToString().PadLeft(20, '0');                                                          // Numero de comrpbante hasta
            if (ComprobanteFacturable.Cliente.SituacionTributaria == null || ComprobanteFacturable.Cliente.SituacionTributaria.EsConsumidorFinal)
            {
                if (string.IsNullOrEmpty(ComprobanteFacturable.Cliente.NumeroDocumento))
                {
                    Renglon += "99";                                                                      // 99: Sin identificar
                    Renglon += ComprobanteFacturable.Cliente.NumeroDocumento.ToString().PadLeft(20, '0'); // Nº de identificación del comprador
                }
                else
                {
                    Renglon += "96";                                                                              // 96: DNI
                    Renglon += ComprobanteFacturable.Cliente.NumeroDocumento.ToString().PadLeft(20, '0');         // Nº de identificación del comprador
                }
                Renglon += ComprobanteFacturable.Cliente.ToString().PadRight(30, ' ').Substring(0, 30).ToUpper(); //Apellido y nombre o Denominacion del comprador
            }
            else
            {
                Renglon += "80";                                                                                                                               // 80: CUIT
                Renglon += ComprobanteFacturable.Cliente.Cuit.ToString().Replace("-", "").Replace(" ", "").Replace("/", "").Replace(".", "").PadLeft(20, '0'); // Nº de identificación del comprador
                Renglon += ComprobanteFacturable.Cliente.RazonSocial.ToString().PadRight(30, ' ').Substring(0, 30).ToUpper();                                  //Apellido y nombre o Denominacion del vendedor
            }
            Renglon += Lfx.Types.Formatting.FormatCurrency(ComprobanteFacturable.Total, 2).ToString().Replace(".", "").PadLeft(15, '0');                       // Importe Total de la operacion
            Renglon += "".PadLeft(15, '0');                                                                                                                    // Conceptos que no integran el precio neto gravado
            Renglon += "".PadLeft(15, '0');                                                                                                                    // Percepcion a No Categorizados
            Renglon += "".PadLeft(15, '0');                                                                                                                    // Importe Operaciones Exentas
            Renglon += "".PadLeft(15, '0');                                                                                                                    // Percepciones o pagos a cuenta de otros imp nacionales
            Renglon += "".PadLeft(15, '0');                                                                                                                    // Percepciones de ingresos brutos
            Renglon += "".PadLeft(15, '0');                                                                                                                    // Percepciones de impuestos municipales
            Renglon += "".PadLeft(15, '0');                                                                                                                    // Impuestos internos
            Renglon += "PES";                                                                                                                                  // Codigo de moneda
            Renglon += "000100";                                                                                                                               // Tipo de cambio
            Renglon += ComprobanteFacturable.AlicuotasUsadas().Count.ToString().PadLeft(5, '0');                                                               // Cantidad de alicuotas de IVA
            if (ComprobanteFacturable.Cliente.ObtenerSituacionIva() == Impuestos.SituacionIva.Exento)
            {
                Renglon += "N";
            }
            else
            {
                Renglon += "0";                        // Codigo de operacion
            }

            Renglon += "".PadLeft(15, '0');                              // Otros Tributos
            Renglon += ComprobanteFacturable.Fecha.ToString("yyyyMMdd"); // Fecha de Vencimiento
            return(new List <string>()
            {
                Renglon
            });
        }
Beispiel #3
0
 private void EntradaCliente_TextChanged(object sender, System.EventArgs e)
 {
     if (PanelComprobanteOriginal.Visible)
     {
         EntradaComprobanteOriginal.Filter = "tipo_fac IN ('FA', 'FB', 'FC', 'FE', 'FM') AND numero>0 AND id_cliente=" + EntradaCliente.ValueInt.ToString();
         Lbl.Comprobantes.ComprobanteFacturable Comprob = EntradaComprobanteOriginal.Elemento as Lbl.Comprobantes.ComprobanteFacturable;
         if (Comprob == null || Comprob.Cliente == null || Comprob.Cliente.Id != EntradaComprobanteOriginal.ValueInt)
         {
             EntradaComprobanteOriginal.ValueInt = 0;
         }
     }
 }
Beispiel #4
0
        public override List <string> FormatearRegistro(int lineNumber, Lbl.Comprobantes.ComprobanteFacturable ComprobanteFacturable)
        {
            string Renglon = "";

            //Formato CITI COMPRAS
            Renglon += ComprobanteFacturable.Fecha.ToString("yyyyMMdd");                                                                                   // Fecha del comprobante 1-8
            Renglon += ((int)(CitiTablas.ComprobantesTiposPorLetra[ComprobanteFacturable.Tipo.Nomenclatura])).ToString().PadLeft(3, '0');                  // Tipo de comprobante 9-11
            Renglon += ComprobanteFacturable.PV.ToString().PadLeft(5, '0');                                                                                // Punto de venta 12-16
            Renglon += ComprobanteFacturable.Numero.ToString().PadLeft(20, '0');                                                                           // Numero de comrpbante 17-36
            Renglon += "".PadRight(16, ' ');                                                                                                               // Numero de despacho de importacion  37-52
            Renglon += "80";                                                                                                                               // 80:CUIT Codigo de documento del vendedor 53-54
            Renglon += ComprobanteFacturable.Cliente.Cuit.ToString().Replace("-", "").Replace(" ", "").Replace("/", "").Replace(".", "").PadLeft(20, '0'); // Numero de identificacion del vendedor 64-74
            Renglon += ComprobanteFacturable.Cliente.RazonSocial.ToString().PadRight(30, ' ').Substring(0, 30).ToUpper();                                  //Apellido y nombre o Denominacion del vendedor 75-104
            Renglon += Lfx.Types.Formatting.FormatCurrency(ComprobanteFacturable.Total, 2).ToString().Replace(".", "").PadLeft(15, '0');                   // Importe Total de la operacion 105-119
            Renglon += "".PadLeft(15, '0');                                                                                                                // Conceptos que no integran el precio neto gravado 120-134
            Renglon += "".PadLeft(15, '0');                                                                                                                // Importes de operaciones extras 135-149
            Renglon += "".PadLeft(15, '0');                                                                                                                // Percepciones o pagos a cuenta del IVA 150-164
            Renglon += "".PadLeft(15, '0');                                                                                                                // Percepciones o pagos a cuenta de otros imp nacionales 165-179
            Renglon += "".PadLeft(15, '0');                                                                                                                // Percepciones de ingresos brutos 180-194
            Renglon += "".PadLeft(15, '0');                                                                                                                // Percepciones de impuestos municipales 195-209
            Renglon += "".PadLeft(15, '0');                                                                                                                // Impuestos internos 210-224
            Renglon += "PES";                                                                                                                              // Codigo de moneda 225-227
            Renglon += "000100";                                                                                                                           // Tipo de cambio 228-233
            if (ComprobanteFacturable.DiscriminaIva)
            {
                Renglon += ComprobanteFacturable.AlicuotasUsadas().Count.ToString().PadLeft(5, '0');                 // Cantidad de alicuotas de IVA 234-238
            }
            else
            {
                Renglon += "".PadLeft(5, '0');                 // Cantidad de alicuotas de IVA 234-238
            }
            if (ComprobanteFacturable.Cliente.PagaIva == Impuestos.SituacionIva.Exento)
            {
                Renglon += "N";
            }
            else
            {
                Renglon += "0";                        // Codigo de operacion 239
            }
            Renglon += "".PadLeft(15, '0');            // IVA Liquidado o Credito fiscal computable 240-254
            Renglon += "".PadLeft(15, '0');            // Otros Tributos 255-269
            Renglon += "".PadLeft(11, '0');            // CUIT emisor/corredor 270-280
            Renglon += "".PadRight(30, ' ');           // Denominación del emisor/corredor 281-310
            Renglon += "".PadLeft(15, '0');            // IVA comisión 311-325


            return(new List <string>()
            {
                Renglon
            });
        }
Beispiel #5
0
        public virtual void EscribirComprobante(System.IO.StreamWriter stream, Lbl.Comprobantes.ComprobanteFacturable Com)
        {
            List <string> Renglones = this.FormatearRegistro(this.LineCounter++, Com);

            if (Renglones != null)
            {
                foreach (string Renglon in Renglones)
                {
                    if (string.IsNullOrEmpty(Renglon) == false)
                    {
                        stream.WriteLine(Renglon);
                    }
                }
            }
        }
        public override List <string> FormatearRegistro(int lineNumber, Lbl.Comprobantes.ComprobanteFacturable ComprobanteFacturable)
        {
            var Res       = new List <string>();
            var Alicuotas = ComprobanteFacturable.AlicuotasUsadas();

            if (ComprobanteFacturable.Cliente.ObtenerSituacionIva() == Impuestos.SituacionIva.Exento)
            {
                decimal ImporteIva     = 0m;
                decimal ImporteGravado = ComprobanteFacturable.Total - ImporteIva;
                string  Renglon        = ((int)(CitiTablas.ComprobantesTiposPorLetra[ComprobanteFacturable.Tipo.Nomenclatura])).ToString().PadLeft(3, '0'); // Tipo de comprobante 1-3
                Renglon += ComprobanteFacturable.PV.ToString().PadLeft(5, '0');                                                                             // Punto de venta 4-8
                Renglon += ComprobanteFacturable.Numero.ToString().PadLeft(20, '0');                                                                        // Numero de comprobante 9-28
                Renglon += "80";                                                                                                                            // 80:CUIT Codigo de documento del vendedor  29-30
                Renglon += "".PadLeft(9, '0');                                                                                                              // Imoprte del Comprobante sin iva 31-39
                Renglon += ComprobanteFacturable.Cliente.Cuit.ToString().Replace("-", "").Replace(" ", "").Replace("/", "").Replace(".", "");               // Numero de identificacion del vendedor 40-50
                Renglon += Lfx.Types.Formatting.FormatCurrency(ImporteGravado, 2).Replace(".", "").PadLeft(15, '0');                                        // Neto Gravado 51-65
                Renglon += "3".PadLeft(4, '0');                                                                                                             // Codigo de Alicuota 66-69
                Renglon += Lfx.Types.Formatting.FormatCurrency(ImporteIva, 2).Replace(".", "").PadLeft(15, '0');                                            //Impuesto liquidado 58-62

                Res.Add(Renglon);
            }
            else
            {
                foreach (Lbl.Impuestos.Alicuota Alic in Alicuotas.Values)
                {
                    decimal ImporteIva     = ComprobanteFacturable.TotalIvaAlicuota(Alic.Id);
                    decimal ImporteGravado = ComprobanteFacturable.TotalConIvaAlicuota(Alic.Id) - ImporteIva;
                    string  Renglon        = "";

                    Renglon += ((int)(CitiTablas.ComprobantesTiposPorLetra[ComprobanteFacturable.Tipo.Nomenclatura])).ToString().PadLeft(3, '0'); // Tipo de comprobante 1-3
                    Renglon += ComprobanteFacturable.PV.ToString().PadLeft(5, '0');                                                               // Punto de venta 4-8
                    Renglon += ComprobanteFacturable.Numero.ToString().PadLeft(20, '0');                                                          // Numero de comprobante 9-28
                    Renglon += "80";                                                                                                              // 80:CUIT Codigo de documento del vendedor  29-30
                    Renglon += "".PadLeft(9, '0');                                                                                                // Imoprte del Comprobante sin iva 31-39
                    Renglon += ComprobanteFacturable.Cliente.Cuit.ToString().Replace("-", "").Replace(" ", "").Replace("/", "").Replace(".", ""); // Numero de identificacion del vendedor 40-50
                    Renglon += Lfx.Types.Formatting.FormatCurrency(ImporteGravado, 2).Replace(".", "").PadLeft(15, '0');                          // Neto Gravado 51-65
                    Renglon += CitiTablas.Alicuotas[Alic.Id].ToString().PadLeft(4, '0');                                                          // Codigo de Alicuota 66-69
                    Renglon += Lfx.Types.Formatting.FormatCurrency(ImporteIva, 2).Replace(".", "").PadLeft(15, '0');                              //Impuesto liquidado 58-62

                    Res.Add(Renglon);
                }
            }

            return(Res);
        }
Beispiel #7
0
        private void Listado_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            System.Data.DataRow RowFactura = null;
            ListViewItem        Itm        = null;

            if (Listado.SelectedItems.Count > 0)
            {
                Itm        = Listado.SelectedItems[0];
                RowFactura = Listado.SelectedItems[0].Tag as System.Data.DataRow;
            }

            if (RowFactura != null)
            {
                Lbl.Comprobantes.ComprobanteFacturable Factura = new Lbl.Comprobantes.ComprobanteFacturable(this.Connection, (Lfx.Data.Row)RowFactura);
                this.Comprobante = Factura;
                if (this.Comprobante.Anulado && AceptarAnuladas == false)
                {
                    EtiquetaAviso.Text = "Este comprobante fue anulado.";
                    OkButton.Visible   = false;
                }
                else if (Factura.Cancelado && AceptarCanceladas == false)
                {
                    EtiquetaAviso.Text = "Comprobante ya fue pagado.";
                    OkButton.Visible   = false;
                }
                else if (Factura.ImporteCancelado > 0 && Factura.Cancelado == false)
                {
                    EtiquetaAviso.Text = "Este comprobante fue pagado parcialmente.";
                    OkButton.Visible   = true;
                }
                else
                {
                    EtiquetaAviso.Text = "";
                    OkButton.Visible   = true;
                }
            }
            else
            {
                EtiquetaAviso.Text = "";
                OkButton.Visible   = false;
            }
        }
Beispiel #8
0
        internal Lfx.Types.OperationResult AgregarFactura(Lbl.Comprobantes.ComprobanteFacturable factura)
        {
            Lbl.Comprobantes.Recibo Rec = this.Elemento as Lbl.Comprobantes.Recibo;
            if (Rec.Facturas == null)
            {
                Rec.Facturas = new Lbl.Comprobantes.ColeccionComprobanteImporte();
            }
            else
            {
                foreach (Lbl.Comprobantes.ComprobanteImporte CompImp in Rec.Facturas)
                {
                    Lbl.Comprobantes.ComprobanteConArticulos Fc = CompImp.Comprobante;
                    if (Fc.Id == factura.Id)
                    {
                        return(new Lfx.Types.FailureOperationResult("La factura seleccionada ya está en la lista."));
                    }
                }
            }
            Rec.Facturas.AddWithValue(factura, factura.ImporteImpago);

            this.MostrarFacturas();

            return(new Lfx.Types.SuccessOperationResult());
        }
Beispiel #9
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;
            }
        }
Beispiel #10
0
        private void ProcesarReimpresion(string tipo, int pv, int desde, int hasta)
        {
            using (Lfx.Data.Connection Conn = Lfx.Workspace.Master.GetNewConnection("Reimpresión de comprobantes")) {
                int Cantidad = Math.Abs(hasta - desde);
                Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Reimprimiendo", "Se están reimprimiendo " + Cantidad.ToString() + " comprobantes.");
                Progreso.Cancelable = true;
                Progreso.Max        = Cantidad;
                Progreso.Modal      = true;
                Progreso.Advertise  = true;
                Progreso.Begin();

                string IncluyeTipos = "";

                switch (tipo)
                {
                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;
                }

                int Paso = desde < hasta ? 1 : -1;
                for (int Numero = desde; Numero != hasta; Numero += Paso)
                {
                    int IdFactura = Connection.FieldInt("SELECT id_comprob FROM comprob WHERE impresa=1 AND anulada=0 AND tipo_fac IN (" + IncluyeTipos + ") AND pv=" + pv.ToString() + " AND numero=" + Numero.ToString());

                    if (IdFactura == 0)
                    {
                        // No existe, supongo que está anulado, lo salteo
                    }
                    else
                    {
                        Lbl.Comprobantes.ComprobanteFacturable Fac = new Lbl.Comprobantes.ComprobanteFacturable(Conn, IdFactura);
                        Progreso.ChangeStatus("Imprimiendo " + Fac.ToString());
                        Lazaro.Impresion.Comprobantes.ImpresorComprobanteConArticulos Impr = new Lazaro.Impresion.Comprobantes.ImpresorComprobanteConArticulos(Fac, null);
                        Impr.Imprimir();
                    }
                    Progreso.Advance(1);

                    if (Progreso.Cancelar)
                    {
                        break;
                    }
                }

                Progreso.End();
            }
        }
Beispiel #11
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;
                        }
                }
Beispiel #12
0
                private void ProcesarReimpresion(string tipo, int pv, int desde, int hasta)
                {
                        using (Lfx.Data.Connection Conn = Lfx.Workspace.Master.GetNewConnection("Reimpresión de comprobantes")) {
                                int Cantidad = Math.Abs(hasta - desde);
                                Lfx.Types.OperationProgress Progreso = new Lfx.Types.OperationProgress("Reimprimiendo", "Se están reimprimiendo " + Cantidad.ToString() + " comprobantes.");
                                Progreso.Cancelable = true;
                                Progreso.Max = Cantidad;
                                Progreso.Modal = true;
                                Progreso.Advertise = true;
                                Progreso.Begin();

                                string IncluyeTipos = "";

                                switch (tipo) {
                                        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;
                                }

                                int Paso = desde < hasta ? 1 : -1;
                                for (int Numero = desde; Numero != hasta; Numero += Paso) {
                                        int IdFactura = Connection.FieldInt("SELECT id_comprob FROM comprob WHERE impresa=1 AND anulada=0 AND tipo_fac IN (" + IncluyeTipos + ") AND pv=" + pv.ToString() + " AND numero=" + Numero.ToString());

                                        if (IdFactura == 0) {
                                                // No existe, supongo que está anulado, lo salteo
                                        } else {
                                                Lbl.Comprobantes.ComprobanteFacturable Fac = new Lbl.Comprobantes.ComprobanteFacturable(Conn, IdFactura);
                                                Progreso.ChangeStatus("Imprimiendo " + Fac.ToString());
                                                Lazaro.Impresion.Comprobantes.ImpresorComprobanteConArticulos Impr = new Lazaro.Impresion.Comprobantes.ImpresorComprobanteConArticulos(Fac, null);
                                                Impr.Imprimir();
                                        }
                                        Progreso.Advance(1);

                                        if (Progreso.Cancelar)
                                                break;
                                }

                                Progreso.End();
                        }
                }
 public GeneradorFiscal(Lbl.Comprobantes.ComprobanteFacturable comprobante)
     : base(comprobante)
 {
 }
Beispiel #14
0
 public abstract List <string> FormatearRegistro(int lineNumber, Lbl.Comprobantes.ComprobanteFacturable Comp);
Beispiel #15
0
 public GeneradorElectronico(Lbl.Comprobantes.ComprobanteFacturable comprobante)
     : base(comprobante)
 {
 }