public CAERespuestaFex ObtenerCaeWSFEX( Autorizacion autorizacion, FexCabecera cabFex )
        {
            long ultimoNro = this.UltimoComprobanteFex( autorizacion, cabFex.PuntoDeVenta, cabFex.TipoComprobante );

            WrapperCabeceraFex wr = new WrapperCabeceraFex();

            ServidorFacturaElectronicaExportacion sfex = new ServidorFacturaElectronicaExportacion( this.wsfex, this.logueador );
            CAERespuestaFex respuesta = null;
            cabFex.Id = this.ObtenerIdFex( cabFex, ultimoNro, autorizacion );
            List<Observacion> diferencias;
            try
            {
                this.logueador.Loguear( "Consultando Afip....." );
                this.logueador.Loguear( cabFex.Serializar() );

                respuesta = sfex.ObtenerCae( autorizacion, cabFex );

                this.logueador.Loguear( "Respuesta Afip......." );
                this.logueador.Loguear( respuesta.Serializar() );

                if ( cabFex.ComprobanteNumero <= ultimoNro )
                {
                    ConsultasWSFex consulta = new ConsultasWSFex( wsfex );
                    ClsFEXGetCMPR comprobanteAfip = consulta.DatosDeComprobante( autorizacion, cabFex.TipoComprobante, cabFex.ComprobanteNumero, cabFex.PuntoDeVenta );
                    // Aca comparo los comprobantes y y si hay diferencias lo rechazo
                    diferencias = wr.Comparar( comprobanteAfip, cabFex );

                    if ( diferencias.Count > 0 )
                    {
                        respuesta.MotivosObservaciones = "Diferencias en comprobante.";
                        respuesta.Observaciones = diferencias;
                        respuesta.Resultado = "R";
                        respuesta.Cae = "";
                    }
                }
            }
            catch ( ExcepcionFe ex )
            {
                this.MensajeDeError = ex.Message;
                throw ex;
            }

            return respuesta;
        }
 private long ObtenerIdFex( FexCabecera cabFex, long ultimoNro, Autorizacion autorizacion )
 {
     long retorno;
     if ( cabFex.ComprobanteNumero <= ultimoNro )
     {
         ConsultasWSFex consultas = new ConsultasWSFex( this.wsfex, this.logueador );
         ClsFEXGetCMPR consRet = consultas.DatosDeComprobante( autorizacion, cabFex.TipoComprobante, cabFex.ComprobanteNumero, cabFex.PuntoDeVenta );
         retorno = consRet.Id;
     }
     else
     {
         ConsultasWSFex consultas = new ConsultasWSFex( this.wsfex, this.logueador );
         retorno = consultas.UltimoId( autorizacion ) + 1;
     }
     return retorno;
 }