public ClsFEXRequest Convertir( FexCabecera cabFex )
        {
            ClsFEXRequest cab = new ClsFEXRequest();
            cab.Id = cabFex.Id;
            cab.Tipo_cbte = (short)cabFex.TipoComprobante;
            cab.Fecha_cbte = cabFex.FechaComprobante;
            cab.Punto_vta = (short)cabFex.PuntoDeVenta;
            cab.Cbte_nro = cabFex.ComprobanteNumero;
            cab.Tipo_expo = (short) cabFex.TipoExportacion;
            cab.Permiso_existente = cabFex.PermisoExistente;
            cab.Dst_cmp = (short)cabFex.PaisDestinoComprobante;
            cab.Cliente = cabFex.Cliente;
            cab.Cuit_pais_cliente = cabFex.CuitPaisCliente;
            cab.Domicilio_cliente = cabFex.DomicilioCliente;
            cab.Id_impositivo = cabFex.IdImpositivo;
            cab.Moneda_Id = cabFex.MonedaId;
            cab.Moneda_ctz = cabFex.MonedaCotizacion;
            cab.Obs_comerciales = cabFex.ObservacionesComerciales;
            cab.Obs = cabFex.Observaciones;
            cab.Forma_pago = cabFex.FormaDePagoDescripcion;
            cab.Incoterms = cabFex.ClausulaDeVenta;
            cab.Incoterms_Ds = cabFex.ClausulaDeVentaInformacionComplementaria;
            cab.Idioma_cbte = (short) cabFex.IdiomaComprobante;
            cab.Permisos = this.ConvertirPermisos( cabFex.Permisos );
            cab.Cmps_asoc = this.ConvertirComprobantesAsociados( cabFex.ComprobantesAsociados );
            cab.Items = this.ConvertirItems( cabFex.Items );
            cab.Imp_total = this.ObtenerValorImporteTotal( cabFex.ImporteTotal );

            return cab;
        }
        public List<Observacion> Obtener(ClsFEXGetCMPR comprobanteAfip, FexCabecera cabFex)
        {
            List<string> diferencias = new List<string>();

            if ( comprobanteAfip.Fecha_cbte != cabFex.FechaComprobante )
            {
                diferencias.Add("La fecha no es la correcta.");
                diferencias.Add("Afip: " + comprobanteAfip.Fecha_cbte + " Enviado :" + cabFex.FechaComprobante);
            }

            if ( comprobanteAfip.Cbte_nro != cabFex.ComprobanteNumero )
            {
                diferencias.Add("El número no es el correcto.");
                diferencias.Add("Afip: " + comprobanteAfip.Cbte_nro + " Enviado :" + cabFex.ComprobanteNumero);
            }

            if ( comprobanteAfip.Incoterms !=  cabFex.ClausulaDeVenta )
            {
                diferencias.Add("El incoterms no es el correcto.");
                diferencias.Add("Afip: " + comprobanteAfip.Incoterms + " Enviado :" + cabFex.ClausulaDeVenta);
            }

            if (comprobanteAfip.Cuit_pais_cliente != cabFex.CuitPaisCliente)
            {
                diferencias.Add("El C.U.I.T. no es el correcto.");
                diferencias.Add("Afip: " + comprobanteAfip.Cuit_pais_cliente + " Enviado :" + cabFex.CuitPaisCliente);
            }

            if (comprobanteAfip.Imp_total != cabFex.ImporteTotal)
            {
                diferencias.Add("El total no es correcto.");
                diferencias.Add("Afip: " + comprobanteAfip.Imp_total.ToString(CultureInfo.InvariantCulture.NumberFormat) + " Enviado :" + cabFex.ImporteTotal.ToString(CultureInfo.InvariantCulture.NumberFormat));
            }

            List<Observacion> observaciones = new List<Observacion>();
            Observacion observacion;

            for (int i = 0; i < diferencias.Count; i++)
            {
                observacion = new Observacion();
                observacion.Mensaje = diferencias[i];
                observaciones.Add( observacion );
            }

            return observaciones;
        }
 public List<Observacion> Comparar(ClsFEXGetCMPR comprobanteAfip, FexCabecera cabFex)
 {
     BuscadorDeDiferencias buscadorDiferencias = new BuscadorDeDiferencias();
     return buscadorDiferencias.Obtener(comprobanteAfip, cabFex);
 }