public override CAEDetalleRespuesta DatosDeComprobante( Autorizacion aut, int tipoComprobante, int nroComprobante, int ptoVta )
        {
            AuthRequestType feAutRequest = this.wa.ConvertirMTXCA( aut );
            ConsultaComprobanteRequestType solicitud = new ConsultaComprobanteRequestType();
            solicitud.numeroComprobante = nroComprobante;
            solicitud.codigoTipoComprobante = (short) tipoComprobante;
            solicitud.numeroPuntoVenta = (short) ptoVta;

            CodigoDescripcionType[] observaciones;
            CodigoDescripcionType[] errores;
            CodigoDescripcionType evento;

            ComprobanteType respuesta = this.ws.consultarComprobante( feAutRequest, solicitud, out observaciones, out errores, out evento );
            this.managerErrores.CapturarError( errores );

            ConversorConsultaCaeARespuestaCae conversor = new ConversorConsultaCaeARespuestaCae();
            CAEDetalleRespuesta respuestaConvertida = conversor.ConvertirDetalle( respuesta );

            return respuestaConvertida;
        }
        public CAERespuestaFe ReprocesarComprobantes( FeCabecera cabFe, Autorizacion feAut )
        {
            ConversorConsultaCaeARespuestaCae conversor = new ConversorConsultaCaeARespuestaCae();
            CAERespuestaFe retorno = new CAERespuestaFe();
            WrapperCabeceraFe wrapperFe = new WrapperCabeceraFe();
            List<Observacion> diferencias;

            retorno.Cabecera = conversor.ConvertirCabecera( cabFe, feAut );

            ConsultasWSMTXCA consultas = new ConsultasWSMTXCA( this.wsfe, this.logueador );
            CAEDetalleRespuesta respuestaReproceso;
            retorno.Detalle = new List<CAEDetalleRespuesta>();

            foreach ( FeDetalle lote in cabFe.DetalleComprobantes )
            {
                respuestaReproceso = consultas.DatosDeComprobante( feAut, cabFe.TipoComprobante, (int) lote.ComprobanteDesde, cabFe.PuntoDeVenta );
                diferencias = wrapperFe.Comparar( respuestaReproceso, lote );

                if ( diferencias.Count > 0 )
                {
                    respuestaReproceso.Resultado = "R";
                    respuestaReproceso.Cae = "";
                    respuestaReproceso.Observaciones = diferencias;
                }
                retorno.Detalle.Add( respuestaReproceso );
            }
            this.logueador.LoguearObservaciones( retorno.Detalle, cabFe );

            return retorno;
        }
        /// <summary>
        /// Obtiene informacion de respuesta de autorizacion para un comprobante
        /// </summary>
        /// <param name="aut">Autorizacion</param>
        /// <param name="tipoComprobante">Tipo de Comprobante</param>
        /// <param name="nroComprobante">Nro de Comprobante</param>
        /// <param name="ptoVta">Punto de Venta</param>
        /// <returns>Respuesta simil a la de solicitud de CAE</returns>
        public override CAEDetalleRespuesta DatosDeComprobante( Autorizacion aut, int tipoComprobante, int nroComprobante, int ptoVta )
        {
            FEAuthRequest feAutRequest = this.wa.ConvertirFe( aut );
            FECompConsultaReq solicitud = new FECompConsultaReq();
            solicitud.CbteNro = nroComprobante;
            solicitud.CbteTipo = tipoComprobante;
            solicitud.PtoVta = ptoVta;
            FECompConsultaResponse respuesta = this.wsfe.FECompConsultar( feAutRequest, solicitud );
            this.managerErrores.CapturarError( respuesta.Errors );

            ConversorConsultaCaeARespuestaCae conversor = new ConversorConsultaCaeARespuestaCae();
            CAEDetalleRespuesta respuestaConvertida = conversor.ConvertirDetalle( respuesta.ResultGet );

            return respuestaConvertida;
        }