Beispiel #1
0
        void Button6Click(object sender, EventArgs e)
        {
            VariablesPropias.VariablesPropias.vpFactura reci = new VariablesPropias.VariablesPropias.vpFactura();

            reci = Modulos.Documentos_Fiscales.CargarFCA(Convert.ToInt32(txtNumFactura.Text));

            // MessageBox.Show (reci.Cliente.strDireccion);
            Imprimir.Imprimir_Factura(reci);
        }
Beispiel #2
0
/// <summary>
/// Envia una Factura a la AFIP
/// </summary>
/// <param name="Factura"></param>
/// <param name="strToken"></param>
/// <param name="strSign"></param>
/// <returns></returns>
        public static servicios1.afip.gov.ar.FECAEResponse EnviarFacturaAFIP(VariablesPropias.VariablesPropias.vpFactura Factura, string strToken, string strSign)
        {
            //web service de Facturacion Electronica
            servicios1.afip.gov.ar.Service objWSFE = new servicios1.afip.gov.ar.Service();



            //Crea el objeto de respuesta de la factura
            servicios1.afip.gov.ar.FECAEResponse objFECAEResponse = new servicios1.afip.gov.ar.FECAEResponse();

            servicios1.afip.gov.ar.FECAEDetResponse objFECAEDetResponse = new servicios1.afip.gov.ar.FECAEDetResponse();



            //Crea el objeto para Armar la factura
            //Request General
            servicios1.afip.gov.ar.FECAERequest objFECAERequest = new servicios1.afip.gov.ar.FECAERequest();

            //Request de la Cabecera
            servicios1.afip.gov.ar.FECAECabRequest objFECAECabRequest = new servicios1.afip.gov.ar.FECAECabRequest();

            //Request del Detalle
            int indice = 0;
            //Cantidad de documentos a enviar
            int indIVA = 0;

            servicios1.afip.gov.ar.FECAEDetRequest[] objFECAEDetRequestArray = new servicios1.afip.gov.ar.FECAEDetRequest[indice + 1];
            servicios1.afip.gov.ar.FECAEDetRequest   objFECAEDetRequest      = new servicios1.afip.gov.ar.FECAEDetRequest();
            servicios1.afip.gov.ar.AlicIva[]         objFECAEDetIVAArray     = new servicios1.afip.gov.ar.AlicIva[indIVA + 1];

            servicios1.afip.gov.ar.AlicIva objFECAEDetIVA = new servicios1.afip.gov.ar.AlicIva();


            //Armar la Cabecera de la factura
            int cantregistros = 1;
            var _with1        = objFECAECabRequest;

            _with1.CantReg  = cantregistros;
            _with1.PtoVta   = Convert.ToInt32(Factura.intSucursal);
            _with1.CbteTipo = Convert.ToInt32(Factura.strCodFc);


            var _with2 = objFECAEDetIVA;

            /*
             * El Id tiene varios tipos
             * 0% = 3
             * 10,5% = ??
             * 21% = 5
             *
             */
            _with2.Id = Factura.IdIVA;


            _with2.BaseImp = Convert.ToDouble(Factura.curSubTotal);
            _with2.Importe = Convert.ToDouble(Factura.curIVA);



            objFECAEDetIVAArray[0] = objFECAEDetIVA;



            //Armar el detalle de la factura
            var _with3 = objFECAEDetRequest;

            //este es el Request para la unica factura
            //Ingreso los datos del cliente
            _with3.Concepto = 1;
            // Esto es productos
            _with3.DocTipo = 80;
            // Esto es Cuit
            _with3.DocNro = Convert.ToInt64(Factura.Cliente.dblCUIT);
            // El CUIT del cliente

            //.CbteDesde = CLng(cmbSucursal.Text & "-" & txtNumFact.Text)
            _with3.CbteDesde = Convert.ToInt64(Factura.dblNumFact);
            //.CbteHasta = CLng(cmbSucursal.Text & "-" & txtNumFact.Text)
            _with3.CbteHasta = Convert.ToInt64(Factura.dblNumFact);

            //.ImpTotal = CDbl(lblTotalUSD.Text)
            _with3.ImpTotal   = Convert.ToDouble(Factura.curTotal);
            _with3.ImpTotConc = 0;
            //No se que es
            //.ImpNeto = CDbl(lblSubtotalUSD.Text)
            _with3.ImpNeto = Convert.ToDouble(Factura.curSubTotal);
            _with3.ImpOpEx = 0;
            //.ImpIVA = CDbl(lblIvaUSD.Text)
            _with3.ImpIVA  = Convert.ToDouble(Factura.curIVA);
            _with3.ImpTrib = _with3.ImpTotConc + _with3.ImpOpEx;
            //+ .ImpIVA

            //.MonId = "DOL"
            //.MonCotiz = CDbl(FormatNumber(lblDolar.Text, 6))

            _with3.MonId    = "PES";
            _with3.MonCotiz = Convert.ToDouble("1");



            //Utiliza la funcion de FechaInversa para darle el formato correcto
            _with3.CbteFch = FechaInversa(DateTime.Today);

            _with3.Iva = objFECAEDetIVAArray;
            //.Iva = CDbl(lblIvaUSD.Text)

            objFECAEDetRequestArray[0] = objFECAEDetRequest;
            // Carga el Request en un array (de un solo item)



            //Arma el Request para todas las facturas que se manden
            var _with4 = objFECAERequest;

            //Cabecera
            _with4.FeCabReq = objFECAECabRequest;

            //Cuerpo
            _with4.FeDetReq = objFECAEDetRequestArray;



            //Facturacion Electronica Requerimiento de Autorizacion
            servicios1.afip.gov.ar.FEAuthRequest objFEAuthRequest = new servicios1.afip.gov.ar.FEAuthRequest();


            objFEAuthRequest.Cuit = Convert.ToInt64("30708466200");             //TODO Cambiar
            //este es el CUIT guardado en la compu
            objFEAuthRequest.Token = strToken;
            objFEAuthRequest.Sign  = strSign;



            // Invoco al método FECAESolicitar
            try {
                objFECAEResponse = objWSFE.FECAESolicitar(objFEAuthRequest, objFECAERequest);


                MessageBox.Show("***CONTENIDO DE RESPUESTA:" +
                                System.Environment.NewLine +
                                "   CUIT:" + Convert.ToString(objFECAEResponse.FeCabResp.Cuit) +
                                System.Environment.NewLine +
                                "   Pto Vta:" + Convert.ToString(objFECAEResponse.FeCabResp.PtoVta) +
                                System.Environment.NewLine +
                                "   Fch Proceso:" + objFECAEResponse.FeCabResp.FchProceso +
                                System.Environment.NewLine +
                                "   Cant reg:" + Convert.ToString(objFECAEResponse.FeCabResp.CantReg) +
                                System.Environment.NewLine +
                                "   Resultado:" + objFECAEResponse.FeCabResp.Resultado +
                                System.Environment.NewLine +
                                "   Reproceso:" + objFECAEResponse.FeCabResp.Reproceso +
                                System.Environment.NewLine);
            } catch (Exception ex) {
                MessageBox.Show(ex.Message);
                return(objFECAEResponse);
            }



            // Obtengo los XML de request/response y los escribo en el disco
            XmlSerializer writer1 = new XmlSerializer(typeof(servicios1.afip.gov.ar.FECAERequest));
            StreamWriter  file1   = new StreamWriter("C:\\" + Factura.intSucursal + "-" + Factura.dblNumFact + " - " + Factura.Cliente.strNombre + " - wsfe_FERequest.xml");

            writer1.Serialize(file1, objFECAERequest);
            file1.Close();

            XmlSerializer writer2 = new XmlSerializer(typeof(servicios1.afip.gov.ar.FECAEResponse));
            StreamWriter  file2   = new StreamWriter("C:\\" + Factura.intSucursal + "-" + Factura.dblNumFact + " - " + Factura.Cliente.strNombre + " - wsfe_FEResponse.xml");

            writer2.Serialize(file2, objFECAEResponse);
            file2.Close();


            return(objFECAEResponse);
        }
Beispiel #3
0
/// <summary>
/// Carga una Factura desde el formulario actual
/// </summary>
/// <returns>Una Variable propia vpFactura </returns>
        public VariablesPropias.VariablesPropias.vpFactura CargarFactura()
        {
            #region Variables
            VariablesPropias.VariablesPropias.vpFactura Fact = new VariablesPropias.VariablesPropias.vpFactura();

            #endregion

            //Cabecera
            Fact.strTipoFc   = lblTipoFC.Text;
            Fact.strCodFc    = lblCod_cbe.Text;
            Fact.intSucursal = Convert.ToInt16(cmbSucursal.Text);
            Fact.dblNumFact  = Convert.ToDouble(txtNumFact.Text);
            Fact.dtFecha     = dtFecha.Value;

            Fact.dblTipoCambio = Convert.ToDouble(lblDolar.Text);

            switch (Convert.ToInt32(lblCod_cbe.Text))
            {
            case 1:     //Factura A
                Fact.strComprobante = "FC " + lblTipoFC.Text + " " + cmbSucursal.Text + "-0000" + txtNumFact.Text;
                break;

            case 6:     //Factura B
                Fact.strComprobante = "FC " + lblTipoFC.Text + " " + cmbSucursal.Text + "-0000" + txtNumFact.Text;
                break;

            case 2:     //ND
                Fact.strComprobante = "ND " + lblTipoFC.Text + " " + cmbSucursal.Text + "-0000" + txtNumFact.Text;
                break;

            case 3:                     //NC
                Fact.strComprobante = "NC " + lblTipoFC.Text + " " + cmbSucursal.Text + "-0000" + txtNumFact.Text;
                break;



                //default:
                //	lblCod_cbe.Text
                //	break;
            }

            //Cliente
            Fact.Cliente = OperacionesComunes.ObtenerCliente(cmbRazonSocial.Text);

            //Remitos
            Fact.intRemito1 = Convert.ToInt16(cmbRemito1.Text);
            Fact.intRemito2 = Convert.ToInt16(cmbRemito2.Text);
            Fact.intRemito3 = Convert.ToInt16(cmbRemito3.Text);
            Fact.intRemito4 = Convert.ToInt16(cmbRemito4.Text);


            //Crea el array de los productos directamente segun la cantidad de lineas del grid
            Fact.Productos = new VariablesPropias.VariablesPropias.vpProducto[gridDatos.Rows.Count + 5];

            for (int i = 0; i < gridDatos.Rows.Count; i++)
            {
                if (gridDatos[2, i].Value != null)
                {
                    Fact.Productos[i].intCantidad       = Convert.ToInt16(gridDatos[2, i].Value);
                    Fact.Productos[i].strDescripcion    = gridDatos[1, i].Value.ToString();
                    Fact.Productos[i].curPrecioNeto     = Convert.ToDecimal(gridDatos[4, i].Value);
                    Fact.Productos[i].curPrecioSubTotal = Convert.ToDecimal(gridDatos[6, i].Value);
                    Fact.Productos[i].dblTipoIVA        = Convert.ToDouble(gridDatos[7, i].Value);
                    Fact.Productos[i].curIVAProdu       = Convert.ToDecimal(gridDatos[6, i].Value)
                                                          * Convert.ToDecimal(gridDatos[7, i].Value) / 100;
                    Fact.Productos[i].curPrecioTotal = Convert.ToDecimal(gridDatos[8, i].Value);
                }
            }

            //Producto

            /*TODO Esto se deber reemplazar con arrays de prductos
             * if (gridDatos[2,0].Value != null) {
             * Fact.Producto1.intCantidad = Convert.ToInt16(gridDatos[2,0].Value);
             * Fact.Producto1.strDescripcion = gridDatos[1,0].Value.ToString();
             * Fact.Producto1.curPrecioNeto = Convert.ToDecimal(gridDatos[4,0].Value);
             * Fact.Producto1.curPrecioSubTotal= Convert.ToDecimal(gridDatos[6,0].Value);
             * Fact.Producto1.dblTipoIVA = Convert.ToDouble(gridDatos[7,0].Value);
             * Fact.Producto1.curIVAProdu = Convert.ToDecimal(gridDatos[6,0].Value)
             * Convert.ToDecimal(gridDatos[7,0].Value)/100;
             * Fact.Producto1.curPrecioTotal =Convert.ToDecimal(gridDatos[8,0].Value);
             * gridDatos[2,i].Value}
             *
             * if (gridDatos.Rows.Count >= 1 ) {
             *      if (gridDatos[2,1].Value != null) {
             *      Fact.Producto2.intCantidad = Convert.ToInt16(gridDatos[2,1].Value);
             *      Fact.Producto2.strDescripcion = gridDatos[1,1].Value.ToString();
             *      Fact.Producto2.curPrecioNeto = Convert.ToDecimal(gridDatos[4,1].Value);
             *      Fact.Producto2.curPrecioSubTotal= Convert.ToDecimal(gridDatos[6,1].Value);
             *      Fact.Producto2.dblTipoIVA = Convert.ToDouble(gridDatos[7,1].Value);
             *      Fact.Producto2.curIVAProdu = Convert.ToDecimal(gridDatos[6,1].Value)
             * Convert.ToDecimal(gridDatos[7,1].Value)/100;
             *      Fact.Producto2.curPrecioTotal =Convert.ToDecimal(gridDatos[8,1].Value);
             *      }
             * }
             * if (gridDatos.Rows.Count >= 2) {
             *      if (gridDatos[2,2].Value != null) {
             *      Fact.Producto3.intCantidad = Convert.ToInt16(gridDatos[2,2].Value);
             *      Fact.Producto3.strDescripcion = gridDatos[1,2].Value.ToString();
             *      Fact.Producto3.curPrecioNeto = Convert.ToDecimal(gridDatos[4,2].Value);
             *      Fact.Producto3.dblTipoIVA = Convert.ToDouble(gridDatos[7,2].Value);
             *      Fact.Producto3.curIVAProdu = Convert.ToDecimal(gridDatos[6,2].Value)
             * Convert.ToDecimal(gridDatos[7,2].Value)/100;
             *      Fact.Producto3.curPrecioTotal =Convert.ToDecimal(gridDatos[8,2].Value);
             *      }
             * }
             * if (gridDatos.Rows.Count >= 3) {
             *      if (gridDatos[2,3].Value != null) {
             *      Fact.Producto4.intCantidad = Convert.ToInt16(gridDatos[2,3].Value);
             *      Fact.Producto4.strDescripcion = gridDatos[1,3].Value.ToString();
             *      Fact.Producto4.curPrecioNeto = Convert.ToDecimal(gridDatos[4,3].Value);
             *      Fact.Producto4.dblTipoIVA = Convert.ToDouble(gridDatos[7,3].Value);
             *      Fact.Producto4.curIVAProdu = Convert.ToDecimal(gridDatos[6,3].Value)
             * Convert.ToDecimal(gridDatos[7,3].Value)/100;
             *      Fact.Producto4.curPrecioTotal =Convert.ToDecimal(gridDatos[8,3].Value);
             *      }
             * }
             */

            //Impuestos
            Fact.curSubTotalUSD = Convert.ToDecimal(Math.Round(Convert.ToDouble(lblSubTotalUSD.Text), 2));
            Fact.curIVAUSD      = Convert.ToDecimal(Math.Round(Convert.ToDouble(lblIVA21USD.Text), 2));
            Fact.curTotalUSD    = Convert.ToDecimal(Math.Round(Convert.ToDouble(lblTotalUSD.Text), 2));

            Fact.curSubTotal = Convert.ToDecimal(Math.Round(Convert.ToDouble(lblSubTotal.Text), 2));
            Fact.curIVA      = Convert.ToDecimal(Math.Round(Convert.ToDouble(lblIVA21.Text), 2));

            if (Fact.curIVA == 0)
            {
                Fact.IdIVA = 3;
            }
            else
            {
                Fact.IdIVA = 5;
            }

            Fact.curTotal = Convert.ToDecimal(Math.Round(Convert.ToDouble(lblTotal.Text), 2));

            //Valores

            Fact.strCAE = lblCAE.Text;

            Fact.strFechVtoCAE = lblFechVtoCAE.Text;

            Fact.strCodBarrasNum = txtCodBarNum.Text;

            Fact.picCodBarras = this.PictureBox1.Image;

            return(Fact);
        }
Beispiel #4
0
        void TlbGuardarClick(object sender, EventArgs e)
        {
            miFactura = CargarFactura();

            //Si esta habilitado para facturar a la AFIP Informa de la factura
            if (Convert.ToBoolean(ConfigurationManager.AppSettings["FacturarAFIP"]))
            {
                //Crea el objeto de respuesta de la factura
                servicios1.afip.gov.ar.FECAEResponse objFECAEResponse = new servicios1.afip.gov.ar.FECAEResponse();
                objFECAEResponse = AFIP.AFIP.EnviarFacturaAFIP(miFactura, lblToken.Text, lblSign.Text);

                lblCAE.Text        = objFECAEResponse.FeDetResp[0].CAE;
                lblFechVtoCAE.Text = objFECAEResponse.FeDetResp[0].CAEFchVto;


                miFactura.strCAE        = lblCAE.Text;
                miFactura.strFechVtoCAE = lblFechVtoCAE.Text;



                //Esto asegura de que si no esta aprobado por AFIP no tome ninguna factura
                if (objFECAEResponse.FeDetResp[0].Resultado == "A")
                {
                    OperacionesComunes.Guardar(miFactura);
                }
            }
            else            // Esto deja guardar la FC sin Permiso de la AFIP
            {
                miFactura.strCAE        = lblCAE.Text;
                miFactura.strFechVtoCAE = lblFechVtoCAE.Text;
                OperacionesComunes.Guardar(miFactura);
            }

            #region Remitos

            if (cmbRemito1.Text != "0")
            {
                ModificarUnRemito(Convert.ToInt32(cmbRemito1.Text));
            }

            if (cmbRemito2.Text != "0")
            {
                ModificarUnRemito(Convert.ToInt32(cmbRemito2.Text));
            }

            if (cmbRemito3.Text != "0")
            {
                ModificarUnRemito(Convert.ToInt32(cmbRemito3.Text));
            }

            if (cmbRemito4.Text != "0")
            {
                ModificarUnRemito(Convert.ToInt32(cmbRemito4.Text));
            }

            #endregion


            //Permite imprimir.
            tbImprimir.Enabled     = true;
            tlbGuardar.Enabled     = false;
            cmbRazonSocial.Enabled = false;
        }
Beispiel #5
0
/// <summary>
///
/// </summary>
/// <param name="intNumeroFactura"></param>
/// <returns></returns>
        public static VariablesPropias.VariablesPropias.vpFactura CargarFCA(int intNumeroFactura)
        {
            #region Cultura
            CultureInfo cultura = new CultureInfo("es-AR");
            CultureInfo culture = new CultureInfo("en-US");
            #endregion

            #region Variables
            VariablesPropias.VariablesPropias.vpFactura Fact = new VariablesPropias.VariablesPropias.vpFactura();

            #endregion

            #region DB

            ConexionAccess2007.Conectar(ConfigurationManager.AppSettings["BaseDeDatos"].ToString());

//tener en cuenta que primero va la condicion y luego el Order by
            ConexionAccess2007.Consultar("Facturas", "*", "NumFact = " + intNumeroFactura + "AND Sucursal = 3", "NumFact");

//Nueva Tabla
            DataTable Factura = new DataTable();
//Cargo la tabla con los datos de la Base de Datos
            Factura = ConexionAccess2007.Table;


            #endregion



            //Cabecera
            Fact.strTipoFc   = "01";
            Fact.strCodFc    = "A";
            Fact.intSucursal = Convert.ToInt16(Factura.Rows[0]["Sucursal"].ToString());

            Fact.dblNumFact = Convert.ToDouble(Factura.Rows[0]["NumFact"].ToString());
            Fact.dtFecha    = Convert.ToDateTime(Factura.Rows[0]["Fecha"].ToString());

            Fact.dblTipoCambio = Convert.ToDouble(Factura.Rows[0]["Tipodecambio"].ToString());

            Fact.strComprobante = Factura.Rows[0]["Documento"].ToString();


            //Cliente
            Fact.Cliente = OperacionesComunes.ObtenerCliente(Factura.Rows[0]["Nombre"].ToString());

            //Remitos
            Fact.intRemito1 = Convert.ToInt16(Factura.Rows[0]["Remito1"].ToString());
            Fact.intRemito2 = Convert.ToInt16(Factura.Rows[0]["Remito2"].ToString());
            Fact.intRemito3 = Convert.ToInt16(Factura.Rows[0]["Remito3"].ToString());
            Fact.intRemito4 = Convert.ToInt16(Factura.Rows[0]["Remito4"].ToString());


            //Crea el array de los productos directamente segun la cantidad de lineas del grid
            Fact.Productos = new VariablesPropias.VariablesPropias.vpProducto[10];



            //Producto
            //Productos 1

            Fact.Productos[0].intCantidad       = Convert.ToInt16(Factura.Rows[0]["Cant1"].ToString());
            Fact.Productos[0].strDescripcion    = Factura.Rows[0]["Detalle1"].ToString();
            Fact.Productos[0].curPrecioNeto     = Convert.ToDecimal(Factura.Rows[0]["PrecioUnitario1"].ToString());
            Fact.Productos[0].curPrecioSubTotal = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioUnitario1"].ToString()) *
                                                                    Convert.ToInt16(Factura.Rows[0]["Cant1"].ToString()));
            Fact.Productos[0].dblTipoIVA     = Convert.ToDouble("21");
            Fact.Productos[0].curIVAProdu    = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioFinal1"].ToString()) * 0.21);
            Fact.Productos[0].curPrecioTotal = Convert.ToDecimal(Factura.Rows[0]["PrecioFinal1"].ToString());

            //Productos 2
            if (Factura.Rows[0]["Detalle2"].ToString() != "")
            {
                Fact.Productos[1].intCantidad       = Convert.ToInt16(Factura.Rows[0]["Cant2"].ToString());
                Fact.Productos[1].strDescripcion    = Factura.Rows[0]["Detalle2"].ToString();
                Fact.Productos[1].curPrecioNeto     = Convert.ToDecimal(Factura.Rows[0]["PrecioUnitario2"].ToString());
                Fact.Productos[1].curPrecioSubTotal = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioUnitario2"].ToString()) *
                                                                        Convert.ToInt16(Factura.Rows[0]["Cant2"].ToString()));
                Fact.Productos[1].dblTipoIVA     = Convert.ToDouble("21");
                Fact.Productos[1].curIVAProdu    = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioFinal2"].ToString()) * 0.21);
                Fact.Productos[1].curPrecioTotal = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioFinal2"].ToString()));
            }

            //Productos 3
            if (Factura.Rows[0]["Detalle3"].ToString() != "")
            {
                Fact.Productos[2].intCantidad       = Convert.ToInt16(Factura.Rows[0]["Cant3"].ToString());
                Fact.Productos[2].strDescripcion    = Factura.Rows[0]["Detalle3"].ToString();
                Fact.Productos[2].curPrecioNeto     = Convert.ToDecimal(Factura.Rows[0]["PrecioUnitario3"].ToString());
                Fact.Productos[2].curPrecioSubTotal = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioUnitario3"].ToString()) *
                                                                        Convert.ToInt16(Factura.Rows[0]["Cant3"].ToString()));
                Fact.Productos[2].dblTipoIVA     = Convert.ToDouble("21");
                Fact.Productos[2].curIVAProdu    = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioFinal3"].ToString()) * 0.21);
                Fact.Productos[2].curPrecioTotal = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioFinal3"].ToString()));
            }

            //Productos 4
            if (Factura.Rows[0]["Detalle4"].ToString() != "")
            {
                Fact.Productos[3].intCantidad       = Convert.ToInt16(Factura.Rows[0]["Cant4"].ToString());
                Fact.Productos[3].strDescripcion    = Factura.Rows[0]["Detalle4"].ToString();
                Fact.Productos[3].curPrecioNeto     = Convert.ToDecimal(Factura.Rows[0]["PrecioUnitario4"].ToString());
                Fact.Productos[3].curPrecioSubTotal = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioUnitario4"].ToString()) *
                                                                        Convert.ToInt16(Factura.Rows[0]["Cant4"].ToString()));
                Fact.Productos[3].dblTipoIVA     = Convert.ToDouble("21");
                Fact.Productos[3].curIVAProdu    = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioFinal4"].ToString()) * 0.21);
                Fact.Productos[3].curPrecioTotal = Convert.ToDecimal(Convert.ToDouble(Factura.Rows[0]["PrecioFinal4"].ToString()) * 1.21);
            }

            //Impuestos

            Fact.curSubTotalUSD = Convert.ToDecimal(Math.Round(Convert.ToDouble(Factura.Rows[0]["SubTotalUSS"].ToString()), 2));
            Fact.curIVAUSD      = Convert.ToDecimal(Math.Round(Convert.ToDouble(Factura.Rows[0]["IVAUSS"].ToString()), 2));
            Fact.curTotalUSD    = Convert.ToDecimal(Math.Round(Convert.ToDouble(Factura.Rows[0]["ImporteFinalUSS"].ToString()), 2));

            Fact.curSubTotal = Convert.ToDecimal(Math.Round(Convert.ToDouble(Factura.Rows[0]["SubTotal"].ToString()), 2));
            Fact.curIVA      = Convert.ToDecimal(Math.Round(Convert.ToDouble(Factura.Rows[0]["IVA"].ToString()), 2));
            Fact.curTotal    = Convert.ToDecimal(Math.Round(Convert.ToDouble(Factura.Rows[0]["ImporteFinal"].ToString()), 2));

            //Valores

            Fact.strCAE = Factura.Rows[0]["CAE"].ToString();

            Fact.strFechVtoCAE = Factura.Rows[0]["FechaVencCAE"].ToString();



            Fact.strCodBarrasNum  = "30708466200" + "01" + "03" + Fact.strCAE + Fact.strFechVtoCAE;
            Fact.strCodBarrasNum += CodigoDeBarras.CodigoBarras.CodVerificador(Fact.strCodBarrasNum).ToString();

            Fact.picCodBarras = CodigoDeBarras.CodigoBarras.Print2of5Interleaved(Fact.strCodBarrasNum);



            return(Fact);
        }