public CAERespuestaFe Convertir( ResultadoSimpleType resultado, ComprobanteCAEResponseType caeResp, CodigoDescripcionType[] obs, CodigoDescripcionType[] errores )
        {
            CAERespuestaFe respuesta = new CAERespuestaFe();

            CAECabeceraRespuesta cabResp = new CAECabeceraRespuesta();
            cabResp.CantidadDeRegistros = 1;
            cabResp.Cuit = caeResp.cuit;
            cabResp.PuntoDeVenta = caeResp.numeroPuntoVenta;
            cabResp.TipoComprobante = caeResp.codigoTipoComprobante;
            cabResp.Resultado = resultado.ToString();
            cabResp.FechaProceso = caeResp.fechaEmision.ToString( "yyyyMMdd" );

            CAEDetalleRespuesta detResp = new CAEDetalleRespuesta();
            detResp.Cae = caeResp.CAE.ToString();
            detResp.CaeFechaVencimiento = caeResp.fechaVencimientoCAE.ToString( "yyyyMMdd" );
            detResp.ComprobanteDesde = caeResp.numeroComprobante;
            detResp.ComprobanteHasta = caeResp.numeroComprobante;
            detResp.Resultado = resultado.ToString();

            if ( obs != null && obs.Length > 0 )
            {
                detResp.Observaciones = this.ObtenerObservaciones( obs );
            }

            respuesta.Cabecera = cabResp;
            respuesta.Detalle = new List<CAEDetalleRespuesta>();
            respuesta.Detalle.Add( detResp );

            return respuesta;
        }
 public void Unir( CAERespuestaFe caeResp )
 {
     this.cabecera.CantidadDeRegistros = this.cabecera.CantidadDeRegistros + caeResp.cabecera.CantidadDeRegistros;
     foreach ( CAEDetalleRespuesta item in caeResp.detalle )
     {
         this.detalle.Add( item );
     }
 }
        public CAERespuestaFe Convertir( FECAEResponse caeResp )
        {
            CAERespuestaFe respuesta = new CAERespuestaFe();

            WrapperCaeRespuestaCabecera wcrc = new WrapperCaeRespuestaCabecera();
            respuesta.Cabecera = wcrc.Convertir( caeResp.FeCabResp );

            WrapperCaeRespuestaDetalle wcrd = new WrapperCaeRespuestaDetalle();
            respuesta.Detalle = wcrd.Convertir( caeResp.FeDetResp );

            return respuesta;
        }
        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;
        }
        private CAERespuestaFe Respuesta_UltimoComprobante( FeCabecera cabFe, int ultimoNro, Autorizacion autorizacion )
        {
            string numero = this.FormatearNumero( cabFe, ultimoNro );
            string tipoComprobante = this.consultas.ObtenerCodigoComprobante( autorizacion, cabFe.TipoComprobante );

            CAERespuestaFe Respuesta = new CAERespuestaFe();
            Respuesta.Cabecera = new CAECabeceraRespuesta();
            Respuesta.Detalle = new List<CAEDetalleRespuesta>();
            Respuesta.Cabecera.CantidadDeRegistros = 1;
            Respuesta.Cabecera.FechaProceso = DateTime.Today.ToString();
            Respuesta.Cabecera.PuntoDeVenta = cabFe.PuntoDeVenta;
            Respuesta.Cabecera.TipoComprobante = cabFe.TipoComprobante;
            Respuesta.Cabecera.Resultado = "R";
            CAEDetalleRespuesta Detalle = new CAEDetalleRespuesta();
            Detalle.Observaciones = new List<Observacion>();
            Observacion Obs = new Observacion();
            Detalle.Cae = "";
            Detalle.CaeFechaVencimiento = "";
            Detalle.Resultado = "R";
            Obs.Mensaje = "El próximo comprobante " + tipoComprobante + " a procesar debe ser el número " + numero;
            Detalle.Observaciones.Add( Obs );
            Respuesta.Detalle.Add( Detalle );
            return Respuesta;
        }
        public CAERespuestaFe ObtenerRespuestaVacia()
        {
            CAERespuestaFe retorno = new CAERespuestaFe();
            retorno.Detalle = new List<CAEDetalleRespuesta>();
            CAEDetalleRespuesta item = new CAEDetalleRespuesta();
            item.Observaciones = new List<Observacion>();
            Observacion obs = new Observacion();
            item.Observaciones.Add( obs );
            retorno.Detalle.Add( item );

            return retorno;
        }