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; }