Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Mostrar Resultado recorriendo arrays - Factura Electrónica C#

Estas en el tema de Mostrar Resultado recorriendo arrays - Factura Electrónica C# en el foro de .NET en Foros del Web. Buenas a todos, estoy realizando un programa de facturacion electronica comprobantes T, está casi listo, le falta la última parte que es mostrar el resultado ...
  #1 (permalink)  
Antiguo 25/07/2017, 16:28
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 11 meses
Puntos: 0
Pregunta Mostrar Resultado recorriendo arrays - Factura Electrónica C#

Buenas a todos, estoy realizando un programa de facturacion electronica comprobantes T, está casi listo, le falta la última parte que es mostrar el resultado dependiendo del tipo de respuesta (response) que devuelve el web service de la AFIP.

Como dije arriba, dependiendo del resultado, quiero mostrar las respuestas (en un log) que me dan cuando se autoriza una factura o no.

El tema es que los tipos de arrays del response son un poco confusos y no sé como manejarlos. Dejo una parte del codigo y describo un poco las variables y la idea.

1. Declaro una variable response (o respuesta) de tipo AutorizarComprobanteReturnType que devuelve una respuesta con 5 campos:

* campo comprobanteResponse de tipo ComprobanteResponseType que tiene datos del comprobante autorizado, esto seguramente lo voy a ver después en otro hilo, ya que todavia no llegué a esa parte, es en caso de que la factura sea aceptada.

* campo arrayObservaciones de tipo ArrayCodigosDescripcionesType es un Array del tipo CodigoDescripcionType y que tiene dos campos Codigo (tipo short) y Descripcion (tipo string)

* campo arrayErrores (idem arrayObservaciones )

* campo arrayErroresFormato de tipo ArrayCodigosDescripcionesStringType es un Array de que es del tipo CodigoDescripcionStringType y que tambien tiene dos campos Codigo (tipo short) y Descripcion (tipo string)

* campo Resultado de tipo ResultadoSimpleType que es un string (una letra): Conjunto de valores permitidos: { 'A', 'O', 'R' }
El resultado que puede devolver es un A de Aceptado, R de Rechazado y O de Observaciones.

El tema es que cuando analizo el resultado con el Equals no entra en ninguno de los if y sigue de largo. Corriendolo paso a paso el respone.resultado tiene una letra R (Rechazado), el response.arrayErroresFormato tiene los codigo y las descripciones de los errores, y los otros campos: comprobanteResponse, arrayErroresFormato y arrayObservaciones bienen nulos, pero como dije arriba no entra a ningún if..

Preguntas: tengo que hacer una conversion del response.resultado? me falta declarar algo? como hago para que entre a los if.. e imprima los errores?.

Por la dudas dejo el manual, no es necesario que lo lean todo solo vean la pagina 16 y ahí describe los tipos de cada campo del AutorizarComprobanteReturnType
[URL="http://www.afip.gob.ar/fe/documentos/Manual_Desarrollador_WSCT_v01.pdf"]http://www.afip.gob.ar/fe/documentos/Manual_Desarrollador_WSCT_v01.pdf[/URL]

Parte del codigo:
Código:
logger.Info("Procesando Comprobante N°{0}", factura.ComprobanteRelacionado);
 WSFECT.AutorizarComprobanteReturnType response = solicitarCAE.GetCAERequest(factura, servicio, AuthRequest);
 if (response.resultado.Equals("R")) 
    {
     logger.Info("Errores reportados por Web Service de la AFIP");
     foreach (WSFECT.CodigoDescripcionType error in response.arrayErrores)
             {
              logger.Error("Codigo: {0}\nMensaje: {1}", error.codigo, error.descripcion );
             }
                                    
     logger.Info("Errores de Formato");
     foreach (WSFECT.CodigoDescripcionStringType error in response.arrayErroresFormato)
             {
               logger.Error("Codigo: {0}\nMensaje: {1}", error.codigo, error.descripcion );
              }
    }
 else if (response.resultado.Equals("O")) 
	    {
	     if (response.arrayObservaciones != null)
		{
		  logger.Info("Factura rechaza con observaciones");
		  foreach (WSFECT.CodigoDescripcionType observacion in response.arrayObservaciones)
		          {
		           logger.Error("Codigo: {0}\nMensaje: {1}", observacion.codigo, observacion.descripcion);
		          }
		}
	     else
		{
		  logger.Info("Factura rechazada sin observaciones");
		}
	 }
else if (response.resultado.Equals("A")) 
		{
		 logger.Info("Factura aprobada con CAE N°: {0} con vencimiento {1}", response.comprobanteResponse.CAE, response.comprobanteResponse.fechaVencimientoCAE);
                  
             }
}

Última edición por ryder; 25/07/2017 a las 19:22
  #2 (permalink)  
Antiguo 29/07/2017, 19:18
 
Fecha de Ingreso: diciembre-2008
Mensajes: 13
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Mostrar Resultado recorriendo arrays - Factura Electrónica C#

Buenas a todos, bueno ya lo pude solucionar. Abajo dejo parte del código, saludos.
Código:
logger.Info("Procesando Comprobante N°{0}", factura.ComprobanteRelacionado);
WSFECT.AutorizarComprobanteReturnType response = solicitarCAE.GetCAERequest(factura, servicio, auth.AuthRequest);
  
if (response.resultado.GetType().GetEnumName(response.resultado).Equals("R") && (response.arrayErroresFormato != null)) 
  {
     logger.Info("Errores de Formato");
     foreach (WSFECT.CodigoDescripcionStringType error in response.arrayErroresFormato)
        {
            logger.Error("Codigo: {0}\nMensaje: {1}", error.codigo, error.descripcion );
        }
   }
else if (response.resultado.GetType().GetEnumName(response.resultado).Equals("R") && (response.arrayErrores != null))
  {
    logger.Info("Errores reportados por Web Service de la AFIP");
    foreach (WSFECT.CodigoDescripcionType error in response.arrayErrores)
         {
            logger.Error("Codigo: {0}\nMensaje: {1}", error.codigo, error.descripcion );
         }
  }
else if (response.resultado.GetType().GetEnumName(response.resultado).Equals("O") && (response.arrayObservaciones != null)) 
 {
   logger.Info("Factura rechazada con observaciones");
   foreach (WSFECT.CodigoDescripcionType observacion in response.arrayObservaciones)
          {
             logger.Error("Codigo: {0}\nMensaje: {1}", observacion.codigo, observacion.descripcion);
	 }
  }

else if (response.resultado.GetType().GetEnumName(response.resultado).Equals("A") 
 {
    // Esta parte todavía no la programé pq la factura me biene como Rechazada jejeje;
  }

Etiquetas: arrays, factura, resultado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:34.