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 31-01-2017
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
Buenos días !

Tres cuestiones:

1) cuidado con el mensaje de respuesta cuando hemos enviado las facturas, hay un campo que vuelve cargado con un valor que hay que guardar junto a las facturas y que es común al bloque que hemos enviado y sirve como comprobante: result.CSV

2) si envió un grupo de facturas, mas de 15 creo me da error de "necesita un certificado y bla bla..." si envio menos ó una sola funciona bien.

3) y aquí vengo a pedir ayuda: ¿Cuál seria la "ruta" para enviar facturas emitidas intracomunitarias y de exportación?

En emitidas, seria esta:
ARegistroLRFacturasEmitidas[ i ].FacturaExpedida.TipoDesglose.desglosefactura.sujeta.noexenta.desgloseIVA

Saludos !

A ver si alguien puede darme una mano, gracias.
Responder Con Cita
  #2  
Antiguo 31-01-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.030
Poder: 22
keys Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje

3) y aquí vengo a pedir ayuda: ¿Cuál seria la "ruta" para enviar facturas emitidas intracomunitarias y de exportación?


A ver si alguien puede darme una mano, gracias.
Hola no entiendo muy bien tu pregunta. Las facturas intracomunitarias y de exportación se declaran dentro del libro de iva de facturas emitidas.

3.6. ¿Cómo se registra una Entrega Intracomunitaria de Bienes? Se anotará la factura emitida al cliente comunitario en el Libro registro de Facturas Expedidas procediendo a su identificación mediante la clave 2 en el campo de tipos de Identificación en el país de residencia “IDType” y su Número de Operador Intracomunitario en el campo "ID". El campo “CodigoPais” no será obligatorio. Por otra parte, la base imponible de la factura se incluirá en el campo de tipo de operación “Exenta” dentro del bloque “Entrega”. Como causa de exención se consignará la clave “E5: Exenta por el artículo 25”.

El apartado del libro de operaciones Intracomunitarias, sólo es para determinadas operaciones, las más habituales van en el libro de expedidas o de emitidas.


3.7. ¿Cómo se registra una Exportación? La operación se anota en el Libro Registro de Facturas Expedidas. En el campo “Clave Régimen especial o Trascendencia” se consignará el valor 15. Deberá identificarse al cliente – en caso de ser extranjero- mediante el “Código país” y las claves 3 “Pasaporte”, 4 “Documento oficial de identificación expedido por el país o territorio de residencia”, 5 “Certificado de residencia” ó 6 “Otro documento probatorio” del campo “IDType”. Por otra parte, la base imponible de la factura se incluirá en el campo de tipo de operación “Exenta” dentro del bloque “Entrega”. Como causa de exención se consignará la clave E2 “Exenta por el artículo 21”.

Por cierto has conseguido enviar por la versión 0.5 ? He preguntado a hacienda pero las cosas de palacio van despacio.

Un Saludo
Responder Con Cita
  #3  
Antiguo 31-01-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.030
Poder: 22
keys Va por buen camino
Hola a todos!

Yo en vez de utilizar la unit Soap.SOAPHTTPTrans.pas que va en el ejemplo utilizo la unit que viene con delphi. Esta unit no tiene la opción de añadir el certificado directamente, lo que hago es asignarlo a un objeto THTTPRIO, de esta forma no dependo de esta unit que no se si funcionará en futuras versiones de delphi.

No se por que en el ejemplo se utilizó una propia en vez de la de delphi.

Un Saludo.
Responder Con Cita
  #4  
Antiguo 31-01-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por keys Ver Mensaje
Hola a todos!

Yo en vez de utilizar la unit Soap.SOAPHTTPTrans.pas que va en el ejemplo utilizo la unit que viene con delphi. Esta unit no tiene la opción de añadir el certificado directamente, lo que hago es asignarlo a un objeto THTTPRIO, de esta forma no dependo de esta unit que no se si funcionará en futuras versiones de delphi.

No se por que en el ejemplo se utilizó una propia en vez de la de delphi.

Un Saludo.
¿Y cómo haces esa asignación?

Saludos
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 31-01-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.030
Poder: 22
keys Va por buen camino
Hola para hacer la asignacion hago lo siguiente.

Tengo un objeto HttpPRIO que se le asigna el numero de serie del certificado.

Código Delphi [-]
  Objeto.HTTPWebNode.ClientCertificate.SerialNum := BuscarCertificado;


Código Delphi [-]
//Esta funcion devuelve el Numero de serie del certificado pasandole el nombre del certificado.
//Para ello tengo un combo donde cargo todos los certificados instalados.

function BUSCAR_CERTIFICADO(Nombre_Certificado: String): string;
var
  hStore: HCERTSTORE;
  PrevContext, CurContext: PCERT_CONTEXT;
  cbSize: DWORD;
  sNombre: String;
begin
  Result := '';
  hStore := CertOpenSystemStore(0, PChar('MY'));
  if hStore <> nil then begin
     PrevContext := nil;
     CurContext := CertEnumCertificatesInStore(hStore, PrevContext);
     while CurContext <> nil do begin
       sNombre := '';
       cbSize := CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, nil, 0);
       if cbSize > 0 then  begin
          SetLength(sNombre, cbSize-1);
          CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, PChar(sNombre), cbSize);
           if SameText(Nombre_certificado, sNombre) then
             begin
               REsult := GetCertSerialNumber(@CurContext^.pCertInfo^.SerialNumber);
               break;
            end;
       end;
       PrevContext := CurContext;
       CurContext  := CertEnumCertificatesInStore(hStore, PrevContext);
     end;
  end;
end;

A la hora de hacer el envio se hace de la siguiente manera

Código Delphi [-]
  resultado := GetsiiSOAP(True, '', OBJETO HTTPTRIO).SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas);

Última edición por Neftali [Germán.Estévez] fecha: 31-01-2017 a las 15:14:59. Razón: Añadir TAG's al código
Responder Con Cita
  #6  
Antiguo 31-01-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Ok.

Lo suyo sería subir un ejemplo como los anteriores ya pasado a la nueva versión 0.5 y si es posible sin modificar el Soap.SOAPHTTPTrans.pas que, como bien dices, es mejor usar el estándar. ¿Algo así disponible?

Saludos
__________________
Be water my friend.
Responder Con Cita
  #7  
Antiguo 31-01-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.030
Poder: 22
keys Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Ok.

Lo suyo sería subir un ejemplo como los anteriores ya pasado a la nueva versión 0.5 y si es posible sin modificar el Soap.SOAPHTTPTrans.pas que, como bien dices, es mejor usar el estándar. ¿Algo así disponible?

Saludos
Subo un ejemplo para utilzar las units de delphi en vez de las que tiene el ejemplo anterior. En cuanto a la versión 0.5 parece que no funciona de momento.



Para CMB no te tengo olvidado estoy en ello. De momento me estaba pegando con una sola factura. En cuanto lo pruebe te digo.

Última edición por keys fecha: 05-05-2017 a las 10:11:55.
Responder Con Cita
  #8  
Antiguo 31-01-2017
Virman Virman is offline
Miembro
 
Registrado: ene 2017
Posts: 67
Poder: 8
Virman Va por buen camino
Tengo problemas para el envío de facturas recibidas, que me dice: Valor o tipo incorrecto del campo: NIF.

Revisando los campos para el emisor de la factura (el que nos la envía a nosotros por ser factura recibida), veo que no hay campo NIF, teniendo que usar obligatoriamente el campo IdOtro.

Yo lo hago así:
IDFacturaRecibidaType idFact = new IDFacturaRecibidaType(); //IDFACTURA
IDFacturaRecibidaTypeIDEmisorFactura emisorFactura = new IDFacturaRecibidaTypeIDEmisorFactura(); //emisorFactura
IDOtroType idOtro = new IDOtroType();
idOtro.CodigoPais = ((CountryType2)(202)); //España
idOtro.IDType = ((PersonaFisicaJuridicaIDTypeType)(00)); //00 -> 02(NIF - IVA)
idOtro.ID = "XXXXXXXXX"; //Aqui pongo X por no poner un NIF real
emisorFactura.Item = idOtro;
idFact.IDEmisorFactura = emisorFactura;

Será que en la versión 0.5 ya se puede poner correctamente el NIF del emisor de la factura recibida? Cómo lo hacéis vosotros para las facturas recibidas?

Muchas gracias.
Responder Con Cita
  #10  
Antiguo 31-01-2017
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
Hola !

Para keys, necesitaría un ejemplo de los objetos que creáis para introducir una factura de exportación o intracomunitaria.


En mi ejemplo para facturas emitidas:
ARegistroLRFacturasEmitidas[ i ].FacturaExpedida.TipoDesglose.desglosefactura.sujeta.noexenta.desgloseIVA


¿para exportación ?


¿para intracomunitaria?



Virman: Si, van en unidades separadas, pero es lo mismo. El problema es que todavía no conecta con la AEAT. Yo sigo con el anterior hasta el 7 de febrero.
Virman: estoy empezando con las recibidas. tardare en llegar ahí, por dificultades con mi fichero de facturas recibidas.
Keys: ¿has probado a enviar mas de 15 facturas emitidas a la vez?
Responder Con Cita
  #11  
Antiguo 31-01-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.030
Poder: 22
keys Va por buen camino
Cuando el emisor de una factura es español hay que rellenar solo la parte de contraparte el nombre y el cif. La parte del idotro es para cuando no es nacional.

<sii:Contraparte>
<sii:NombreRazon>EMPRESAYYYYYYYY</sii:NombreRazon>
<sii:NIF>94234500B</sii:NIF>
</sii:Contraparte>
Responder Con Cita
  #12  
Antiguo 31-01-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por Virman Ver Mensaje
Tengo problemas para el envío de facturas recibidas, que me dice: Valor o tipo incorrecto del campo: NIF.
Revisando los campos para el emisor de la factura (el que nos la envía a nosotros por ser factura recibida), veo que no hay campo NIF, teniendo que usar obligatoriamente el campo IdOtro.
Yo lo hago así:
IDFacturaRecibidaType idFact = new IDFacturaRecibidaType(); //IDFACTURA
IDFacturaRecibidaTypeIDEmisorFactura emisorFactura = new IDFacturaRecibidaTypeIDEmisorFactura(); //emisorFactura
IDOtroType idOtro = new IDOtroType();
idOtro.CodigoPais = ((CountryType2)(202)); //España
idOtro.IDType = ((PersonaFisicaJuridicaIDTypeType)(00)); //00 -> 02(NIF - IVA)
idOtro.ID = "XXXXXXXXX"; //Aqui pongo X por no poner un NIF real
emisorFactura.Item = idOtro;
idFact.IDEmisorFactura = emisorFactura;
¿No os parece que sería más sencillo crear un fichero XML que incluya todas las facturas a enviar? Siguiendo el esquema y ejemplos del documento "SII_Descripcion_ServicioWeb_v0.5.pdf".

Luego se envía el XML por webservice y se recoge la respuesta. Menos código a escribir. ¿Alguien lo ha probado?

Saludos,
Responder Con Cita
  #13  
Antiguo 31-01-2017
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
CMB al final lo que envias es un XML igualito al que tu compones. Lo que te ahorra el interface es componer el XML a mano.

En posteos anteriores puse como enviar tu propio XML, y guardar el que genera el HTTPRIO1 es igual de fácil:

llamando asi:

Código:
result := GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas);
ejecutara los eventos:


Código:
procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string;
  SOAPResponse: TStream);
var
  ss:TFileStream;
begin
    ss:=TFileStream.Create('C:\recibido.xml', fmCreate);
    SOAPResponse.Position := 0;
    ss.CopyFrom(SOAPResponse, SOAPResponse.size);
    ss.Free;
    SOAPResponse.Position := 0;
end;

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

    SOAPRequest.Position := 0;

end;

keys, a ver si me prestas un poco de atención, please... ¿has podido enviar mas de 15 facturas en un bloque?
Responder Con Cita
  #14  
Antiguo 31-01-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
CMB al final lo que envias es un XML igualito al que tu compones. Lo que te ahorra el interface es componer el XML a mano.
En posteos anteriores puse como enviar tu propio XML, y guardar el que genera el HTTPRIO1 es igual de fácil:
llamando asi:
Código:
result := GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas);
ejecutara los eventos:
Parece que llevas razón, seccion_31. Muchas gracias.

Saludos,
Responder Con Cita
  #15  
Antiguo 31-01-2017
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.030
Poder: 22
keys Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
CMB a


keys, a ver si me prestas un poco de atención, please... ¿has podido enviar mas de 15 facturas en un bloque?
He generado un bloque de más de 15 facturas y me ha pasado lo mismo que a ti, me ha dado errores de certificado. Ahora intento enviar una sola y me da un error "NO HA PODIDO GENERARSE LA FIRMA". No se si me han bloqueado el certificado o es que están haciendo cambios y por eso no funciona. He estado enviando facturas toda la mañana sin ningún problema.

Alguien puede hacer la prueba de enviar ahora una factura y ver si le funciona.

Gracias
Responder Con Cita
  #16  
Antiguo 31-01-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por keys Ver Mensaje
He generado un bloque de más de 15 facturas y me ha pasado lo mismo que a ti, me ha dado errores de certificado. Ahora intento enviar una sola y me da un error "NO HA PODIDO GENERARSE LA FIRMA". No se si me han bloqueado el certificado o es que están haciendo cambios y por eso no funciona. He estado enviando facturas toda la mañana sin ningún problema.

Alguien puede hacer la prueba de enviar ahora una factura y ver si le funciona.

Gracias
Yo acabo de enviar una sin problemas.
__________________
Be water my friend.
Responder Con Cita
  #17  
Antiguo 05-05-2017
IcuScc IcuScc is offline
Registrado
 
Registrado: abr 2017
Posts: 9
Poder: 0
IcuScc Va por buen camino
Cita:
Empezado por Virman Ver Mensaje
Tengo problemas para el envío de facturas recibidas, que me dice: Valor o tipo incorrecto del campo: NIF.

Revisando los campos para el emisor de la factura (el que nos la envía a nosotros por ser factura recibida), veo que no hay campo NIF, teniendo que usar obligatoriamente el campo IdOtro.

Yo lo hago así:
IDFacturaRecibidaType idFact = new IDFacturaRecibidaType(); //IDFACTURA
IDFacturaRecibidaTypeIDEmisorFactura emisorFactura = new IDFacturaRecibidaTypeIDEmisorFactura(); //emisorFactura
IDOtroType idOtro = new IDOtroType();
idOtro.CodigoPais = ((CountryType2)(202)); //España
idOtro.IDType = ((PersonaFisicaJuridicaIDTypeType)(00)); //00 -> 02(NIF - IVA)
idOtro.ID = "XXXXXXXXX"; //Aqui pongo X por no poner un NIF real
emisorFactura.Item = idOtro;
idFact.IDEmisorFactura = emisorFactura;

Será que en la versión 0.5 ya se puede poner correctamente el NIF del emisor de la factura recibida? Cómo lo hacéis vosotros para las facturas recibidas?

Muchas gracias.


Hola buenas. Yo también tengo problemas con las recibidas. Como lo has solventado?
Gracias
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 03:02:10.


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