Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-05-2017
brincola brincola is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 28
Poder: 0
brincola Va por buen camino
Cita:
Empezado por javipes Ver Mensaje
buff! tengo un lío tremendo... si he conseguido generar el suministro de facturas emitidas, siguiendo lo que he visto en el hilo,
¿como puedo ver el contenido del xml ANTES de llamar a GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(ASumLRFacturasEmitidas); ?

seguro que es muy sencillo
Quítate 1300 (o sea, mira la entrada 53). Allí habla de introducir este evento:

procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
ss:TFileStream;
begin
SOAPRequest.Size:=0;
ss:=TFileStream.Create('C:\1.xml', fmOpenRead);
SOAPRequest.Position := 0;
SOAPRequest.CopyFrom( ss, ss.Size);
ss.Free;
SOAPRequest.Position := 0;
end;

No lo he probado aún, pero tiene sentido.
Responder Con Cita
  #2  
Antiguo 30-05-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Más de 86.000 vistas

Y ya van más de 86.000 vistas!!! Y 1.363 respuestas.
Responder Con Cita
  #3  
Antiguo 30-05-2017
RubenMon RubenMon is offline
Registrado
NULL
 
Registrado: feb 2017
Posts: 3
Poder: 0
RubenMon Va por buen camino
Hola.

Un pequeño aporte.
Me he liado bastante para pasar de texto al indice de las enumeraciones de los XMLNS que genera Delphi. Por ejemplo para saber el índice del país a partir del código del país en texto.
He visto algunas soluciones en otras respuestas pero hacía falta declarar listas o arrays auxiliares.

Una pequeña función puede ayudar en estos casos:

Código:
function IndiceEnum(Info: PTypeInfo; const Name: string): Integer;
var
  InternalName: string;
begin
  InternalName := RemClassRegistry.GetInternalPropName(Info, Name);
  Result := GetEnumValue(Info, InternalName);
  if Result < 0 then
    raise Exception.CreateFmt('Valor %s no encontrado en enumeracion %s', [Name, Info^.Name]);
end;
y en el código se puede colocar

Código:
FacturaExpedida.Contraparte.IDOtro.CodigoPais := CountryType2(IndiceEnum(TypeInfo(CountryType2), Pais));
Donde "Pais" es una variable de tipo "string" que contiene el código del país ('FR', 'IT', etc);

La misma función se puede utilizar con otras enumeraciones que estén declaradas en los XLMNS.

Rubén.
Responder Con Cita
  #4  
Antiguo 31-05-2017
barnarasta barnarasta is offline
Miembro
NULL
 
Registrado: abr 2017
Posts: 20
Poder: 0
barnarasta Va por buen camino
Sobre el tema de los NIF censados o NO CENSADOS yo tengo un caso curioso:

IBRAHIMI EL BABANI RACHID 54677557W
El la busqueda por nif https://www1.agenciatributaria.gob.e...BUGC-JDIT/Cnec
da como correcto y al realizar el envio de EMITIDAS la rechaza como NO CENSADO.
Responder Con Cita
  #5  
Antiguo 31-05-2017
AlSan AlSan is offline
Miembro
NULL
 
Registrado: may 2017
Posts: 20
Poder: 0
AlSan Va por buen camino
Cita:
Empezado por barnarasta Ver Mensaje
Sobre el tema de los NIF censados o NO CENSADOS yo tengo un caso curioso:

IBRAHIMI EL BABANI RACHID 54677557W
El la busqueda por nif https://www1.agenciatributaria.gob.e...BUGC-JDIT/Cnec
da como correcto y al realizar el envio de EMITIDAS la rechaza como NO CENSADO.

A mí me pasa CASI lo mismo que a tí. En ese enlace de la AEAT me da OK ("La persona consultada ha sido identificada en el censo de la AEAT").

Pero en el alta de facturas emitidas, enviando el nombre completo en la forma "Apellidos Nombre" (esta vez sin comas ni nada):

Código:
               <sii:Contraparte>
                  <sii:NombreRazon>APELLIDO1 APELLIDO2 NOMBRE</sii:NombreRazon>
                  <sii:NIF>42******R</sii:NIF>
               </sii:Contraparte>
me rechazan la factura dando error de NO IDENTIFICADO (error 1117), que es diferente de "no censado" (error 2011).


Entonces hago un intento reenviándolo como no censado, tal como está documentado:

Código:
               <sii:Contraparte>
                  <sii:NombreRazon>APELLIDO1 APELLIDO2 NOMBRE</sii:NombreRazon>
                  <sii:IDOtro>
                     <sii:CodigoPais>ES</sii:CodigoPais>
                     <sii:IDType>07</sii:IDType>
                     <sii:ID>42******R</sii:ID>
                  </sii:IDOtro>
               </sii:Contraparte>
y entonces es cuando me la acepta con errores, como no censado.

Entiendo que a partir de este punto ya no podemos hacer nada más (no tengo manera de averiguar y por tanto corregir nada más de la contraparte). Nosotros ya habremos cumplido con nuestra obligación de informar a la AEAT de la factura, con toda la información de que disponíamos.

Supongo que si en el futuro algún día conseguimos saber algo más de ese NIF y/o el nombre correcto de su titular, siempre podremos emitir una modificación de esa factura ("A1")...

P.D. - En casi todos los casos que me estoy encontrando, los nombres corresponden claramente a personas extranjeras...
Responder Con Cita
  #6  
Antiguo 31-05-2017
brincola brincola is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 28
Poder: 0
brincola Va por buen camino
Interesante, RubenMon.
Responder Con Cita
  #7  
Antiguo 30-05-2017
brincola brincola is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 28
Poder: 0
brincola Va por buen camino
Cita:
Empezado por brincola Ver Mensaje
Quítate 1300 (o sea, mira la entrada 53). Allí habla de introducir este evento:

procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
ss:TFileStream;
begin
SOAPRequest.Size:=0;
ss:=TFileStream.Create('C:\1.xml', fmOpenRead);
SOAPRequest.Position := 0;
SOAPRequest.CopyFrom( ss, ss.Size);
ss.Free;
SOAPRequest.Position := 0;
end;

No lo he probado aún, pero tiene sentido.
Ahora, ya probándolo, yo haría la siguiente corrección:

procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
ss:TFileStream;
begin
ss:=TFileStream.Create('C:\1.xml', fmOpenWrite);
SOAPRequest.Position := 0;
ss.CopyFrom(SOAPRequest,SOAPRequest.Size);
ss.Free;
SOAPRequest.Position := 0;
end;

Pero esto aún da un problema: no genera el fichero. Hay que crearlo previamente (copy con 1.xml y terminarlo con Ctrl Z si lo quieres vacío).


Los TFileStream son un poco tozudos a veces con los share y demás permisos (Read, Write, etc).
Con paciencia y un poco de tiempo acabar de perfilar para corregir este problema.
Responder Con Cita
  #8  
Antiguo 30-05-2017
brincola brincola is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 28
Poder: 0
brincola Va por buen camino
Cita:
Empezado por brincola Ver Mensaje
Ahora, ya probándolo, yo haría la siguiente corrección:

procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
ss:TFileStream;
begin
ss:=TFileStream.Create('C:\1.xml', fmCreate);
SOAPRequest.Position := 0;
ss.CopyFrom(SOAPRequest,SOAPRequest.Size);
ss.Free;
SOAPRequest.Position := 0;
end;

Pero esto aún da un problema: no genera el fichero. Hay que crearlo previamente (copy con 1.xml y terminarlo con Ctrl Z si lo quieres vacío).


Los TFileStream son un poco tozudos a veces con los share y demás permisos (Read, Write, etc).
Con paciencia y un poco de tiempo acabar de perfilar para corregir este problema.
Con esto como definitivo:

procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
ss:TFileStream;
begin
ss:=TFileStream.Create('C:\1.xml', fmCreate);
SOAPRequest.Position := 0;
ss.CopyFrom(SOAPRequest,SOAPRequest.Size);
ss.Free;
SOAPRequest.Position := 0;
end;

... ya vale.
Responder Con Cita
  #9  
Antiguo 02-06-2017
javipes javipes is offline
Miembro
 
Registrado: jul 2007
Posts: 14
Poder: 0
javipes Va por buen camino
Brincola. Muchas gracias.
Tambien al resto de foreros.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco keys Internet 4170 Hace 1 Semana 17:29:05
AEAT envio de datos vía Webservice problemas con WSDL CelsoO Internet 11 09-10-2019 20:03:41
webService Soap de la Administración Digital Española notific@ apicito Internet 3 31-01-2017 11:25:28
Error en Webservice funcion envio de sms webmasterplc Delphi para la web 5 25-07-2013 20:10:29
Problemas con envío de XML a un WebService davidvamo Internet 1 13-02-2007 15:49:20


La franja horaria es GMT +2. Ahora son las 18:26:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi