Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice (https://www.clubdelphi.com/foros/showthread.php?t=91252)

Francisco1973 15-02-2017 08:39:58

Problema con HTTPRIO
 
Hola a todos, en primer lugar daros la enhorabuena por la gran aportación que estáis realizando sobre este tema. Mi problema es el siguiente: Uso Delphi 2010 y el componente HTTPRIO no tiene la propiedad HTTPWebNode.ClientCertificate para el envío del certificado. ¿ Alguien sabe como poder hacerlo ?. Por otro lado, creo que alguien ha implementado la llamada al webservice mediante Indy y OpenSSL. ¿ Teneis algún ejemplo de cómo hacerlo ?
Saludos,

seccion_31 15-02-2017 09:00:34

Hola francisco,

Si no tienes esa propiedad, puedes hacerlo como en el primer ejemplo publicado por newtron (.rar) que NO utilizaba esa propiedad. Luego ya puedes ir mezclando códigos.

por otro lado:

hoy SIN TOCAR NADA me da el siguiente error:

Código:

DTD está prohibido.

Line: 1
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML

¿alguno puede enviar sin problemas?

Ahora estoy esperando a Marzo, introduciendo pequeñas mejoras en espera que abran la web de comprobación y que me asesoren sobre como enviar facturas.

Saludos !

Jesús

seccion_31 15-02-2017 09:14:05

El error completo:

(es bonito, ¿eh?)


Código:

Se ha producido un error:

103 AoditExcepcion: Colección: OAM.PREP.ADHA.ADHALY11 colección bean: ADHALY11

Para más información sobre este error pulse aquí

Detalles del error
•Código del error:•103•Fecha y hora del error:•15-02-2017/09:10•Descripción:•AoditExcepcion: Colección: OAM.PREP.ADHA.ADHALY11 colección bean: ADHALY11•Servidor:•WLP00402•Aplicación:•SSII-FACT•Módulo donde se detecta el error:•SSII-FACT/ws/fe/SiiFactFEV1SOAP•Id. Error:•63680•


newtron 15-02-2017 10:41:57

Cita:

Empezado por CMB (Mensaje 513280)
¿Alguien sabe si existen parejas de NIF y razón social que sin ser reales pueden ser usados en pruebas y ser aceptados como buenos?

Dudo que eso exista, en teoría, al ser de pruebas, con cualquier dato real que metas no debería de haber problema pero si tienes reparos puedes meter tus datos mismos para las pruebas, cualquier nombre y dni real es válido.

Saludos

CMB 15-02-2017 10:57:42

Cita:

Empezado por newtron (Mensaje 513293)
Dudo que eso exista, en teoría, al ser de pruebas, con cualquier dato real que metas no debería de haber problema pero si tienes reparos puedes meter tus datos mismos para las pruebas, cualquier nombre y dni real es válido.Saludos

Muchas gracias por tu respuesta.

Probaré de enviar todas las facturas con mis datos (NIF y nombre). Tienes razón. En realidad no hay nada irregular en emitir una serie de facturas a una misma persona, menos aún cuando queda claro que se trata de pruebas.

Saludos cordiales.

seccion_31 15-02-2017 13:19:51

ahora vuelve a funcionar con normalidad. .....

:eek:

¿y con esto llevaban ya un año de funcionamiento?

¿el periodo de prueba es para los desarrolladores o para los técnicos de la aeat?

(dejo las preguntas ahí)

Saludos !

seccion_31 15-02-2017 16:22:50

por cierto, alguien ha probado a ¿modificar una factura x otra completamente distinta?

no las reconoce. Creo que si el "error registral" esta en las bases, importes, etc... te dice que no esta registrada.

si no cambias importes, no hay problema.

saludos !

keys 16-02-2017 11:52:50

Cita:

Empezado por seccion_31 (Mensaje 513307)
por cierto, alguien ha probado a ¿modificar una factura x otra completamente distinta?

no las reconoce. Creo que si el "error registral" esta en las bases, importes, etc... te dice que no esta registrada.

si no cambias importes, no hay problema.

saludos !

Hola, yo he probado a enviar una factura con errores registrales enviando cambiando solo la base imponible e importes y todo correcto. Asegurate que el número de factura y la fecha son exactamente la misma que la que esta dada de alta. Además que van en ficheros diferentes. Es decir en un mismo envío no puede ir un alta de una factura y la rectificación de esa misma, ya que como la primera no esta dada de alta en el sistema no se puede rectificar ni modificar y el sistema genera un error. Una factura no esta en el sistema hasta que se ha terminado de tratar todo el fichero, por eso no se puede hacer referencia en el mismo fichero a una factura que va tambien en el mismo envío.

Por cierto lo del error de las 13 facturas a la vez creo que es un problema nuestro del delphi o de algún parametro que tengamos que configurar en el HttPRIO. Lo digo por que he hecho un envío con la utilidad Wizdler del firefox de más de 13 y me ha funcionado correctamente.

No se si ayer alguien estuvo en la reunión pero comentaban que enviar las facturas de una en una, además de aumenar la probabilidad de fallo de conexión influirá en la velocidad de respuesta del sistema.

Un Saludo.

seccion_31 16-02-2017 14:46:28

vamos a ver...

mi prueba:

intento pasar bloques de 15 (antes pasaba en bloques de 1)

el primer bloque ya NO pasa. Da ese error de certificado.
el resto de bloques NO pasa sea de 15 o menos.... dando el mismo error.

No pasa ni una sola factura.

parece "perder el certificado" de alguna manera que no comprendo.

saludos !

seccion_31 16-02-2017 15:03:39

Keys: ¿en la prueba con widzler, has tenido en cuenta que el wsdl que viene de hacienda apunta hacia el puerto de verdad? ...

que yo recuerde, porque inmediatamente tras importarlo lo cambie en el .pas y lo tengo asi, comentado:

const
defWSDL = 'http://www.agenciatributaria.es/static_files/AEAT/Contenidos_Comunes/La_Agencia_Tributaria/Modelos_y_formularios/Suministro_inmediato_informacion/FicherosSuministros/V_05/SuministroFactRecibidas.wsdl';
defURL = 'xxxxxxxxxxxx';
defSvc = 'siiService';
defPrt = 'SuministroFactRecibidasPruebas'; //'SuministroFactRecibidas';

Saludos !

keys 16-02-2017 15:22:07

Si. al enviar con widzler lo único que hay que hacer es indicarle el WSDL y luego seleccionar por que puerto a enviar. Lo hace todo automáticamente. El importador de delphi no lo hace bien y como tu dices hay que cambiar los parametros por defecto que te propone. El fichero xml que he enviado es el que he generado con delphi.

Por cierto, he intentado enviar mas de 15 elementos por el suministro de cobros de facturas emitidas y ha funcionado correctamente. De momento sólo me pasa con las emitidas o es que en cobros el error dará con más elementos. Como ya he comentado antes yo creo que es de algo que hay que configurar en delphi.

Tambien he probado a configurar el componente THTTPRIO en las propiedades Coverter.Options Sodocument y SoliteralParams que en la información del sii dice que hay que marcarlo pero tampoco funciona.

Un Saludo.

Francisco1973 16-02-2017 16:02:44

Hola, yo puedo pasar facturas emitidas sin problemas. He pasado dos bloques de 100 facturas cada uno. El error tiene que estar en otro lado.

keys 16-02-2017 16:08:17

¿Estas haciendolo con wsdl importer de delphi o de que forma?

Francisco1973 16-02-2017 16:12:28

Si, con el wsdl importer. Los datos que le estoy pasando son reales, o sea, una empresa que está dada de alta en el REDEME y con su certificado. También he probado la modificación en bloque de otras 100 facturas y también funciona.

keys 16-02-2017 16:15:19

no se si puedes poner un pequeño ejemplo de como hacerlo. Me estoy volviendo majareta y no consigo ver que es lo que esta mal. Y como puedes ver no soy el único.

seccion_31 16-02-2017 16:26:57

pues si. x favor. algo que se pueda descargar mejor. ;)

¿el certificado que usas es .pfx?

¿y modificar modificas cualquier dato de la factura, hasta el punto de poder cambiar una por otra? :eek: (conservando su numero y fecha)

Saludos !

angelhorse 16-02-2017 16:34:23

Buenas a todos.
Yo ando liado también con este tema. Es la primera vez que toco los Web Services y puedo estar equivocado en lo que diré a continuación:

El proyecto lo estoy realizando en C#, que por lo que he leído hay gente que también lo está haciendo con este lenguaje.
Pues bien, yo estoy utilizando HttpWebRequest para lanzar una petición al servidor.
De momento he conseguido, con el certificado que me aparezca el mensaje de "Esta URL corresponde a un Web Service".
El problema aparece cuando intento enviar el XML con la información y me sale: Error 1304: "No se permite contenido en el prólogo" -> XML no válido o mal formado

Francisco1973 16-02-2017 16:47:09

Hola, os pongo el ejemplo que estoy enviando:

Los cifs los he cambiado, han de ser reales. El certificado que uso es PFX.

procedure TForm1.CrearSumLRFacturasEmitidasTest(Var ASumLRFacturasEmitidas:SuministroLRFacturasEmitidas);
Var
ARegLRFacturasEmitidas:Array_Of_LRfacturasEmitidasType;
AFacturasAgrupadas:FacturasAgrupadas; { Array array of IDFacturaAgrupada; }
AFacturasRectificadas:FacturasRectificadas; { Array array of IDFacturaRectificada; }
ADatosInmueble:DatosInmueble; {Array array of DetalleInmueble; }
ADesgloseIvaDF,ADesgloseIvaDOPS,ADesgloseIvaDOEN:DesgloseIVA; {Array array of DetalleIVA2; }
I:Integer;
Begin

{$REGION 'CABECERA'}
ASumLRFacturasEmitidas.Cabecera := CabeceraSii.Create;
ASumLRFacturasEmitidas.Cabecera.IDVersionSii:=VersionSiiType(0);
ASumLRFacturasEmitidas.Cabecera.Titular:=PersonaFisicaJuridicaESType.Create;
ASumLRFacturasEmitidas.Cabecera.Titular.NombreRazon:=xxxxxxxx, S.L';
//ASumLRFacturasEmitidas.Cabecera.Titular.NIFRepresentante:=''; { OPCIONAL }
ASumLRFacturasEmitidas.Cabecera.Titular.NIF:='B04xxxxxxx';
ASumLRFacturasEmitidas.Cabecera.TipoComunicacion:=ClaveTipoComunicacionType(0);
{$ENDREGION}




{ BUCLE FACTURAS }
SetLength(ARegLRFacturasEmitidas, 101);
for I := 0 to 100 do
Begin
ARegLRFacturasEmitidas[i]:=LRFacturasEmitidasType.Create;

{$REGION 'PERIODOIMPOSITIVO'}
ARegLRFacturasEmitidas[i].PeriodoImpositivo:=PeriodoImpositivo.Create;
ARegLRFacturasEmitidas[i].PeriodoImpositivo.Ejercicio:='2016';
ARegLRFacturasEmitidas[i].PeriodoImpositivo.Periodo:=TipoPeriodoType(11);
{$ENDREGION}

{$REGION 'IDFACTURA'}
ARegLRFacturasEmitidas[i].IDFactura:=IDFacturaExpedidaType.Create;
With ARegLRFacturasEmitidas[i].IDFactura do
begin
IDEmisorFactura:=IDEmisorFactura3.Create;
IDEmisorFactura.NIF:='B04xxxxxxx';
NumSerieFacturaEmisor:='16-'+IntToStr(0+I); { Número de la factura del emisor. En caso de asientos resúmenes número inicial de factura }
//NumSerieFacturaEmisorResumenFin:='16-1251'; { OPCIONAL. Campo específico para asientos resumen. Se corresponde con el número y serie de la última factura }
FechaExpedicionFacturaEmisor:='10-12-2016';
end;
{$ENDREGION}

{$REGION 'FACTURAEXPEDIDA'}
ARegLRFacturasEmitidas[i].FacturaExpedida:=FacturaExpedidaType.Create;
ARegLRFacturasEmitidas[i].FacturaExpedida.TipoFactura:=ClaveTipoFacturaType(0); { Clave del tipo de factura }

// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoRectificativa:=ClaveTipoRectificativaType(0); { OPCIONAL. Clave del tipo de factura }

{$REGION 'FACTURASAGRUPADAS OPCIONAL'}
// SetLength(AFacturasAgrupadas, 1);
// AFacturasAgrupadas[i]:=IDFacturaARType.Create;
// AFacturasAgrupadas[i].NumSerieFacturaEmisor:='FV-500';
// AFacturasAgrupadas[i].FechaExpedicionFacturaEmisor:='15-12-2016';
//
// ARegLRFacturasEmitidas[i].FacturaExpedida.FacturasAgrupadas:=AFacturasAgrupadas;
{$ENDREGION}

{$REGION 'FACTURASRECTIFICADAS OPCIONAL'}
// SetLength(AFacturasRectificadas, 1);
// AFacturasRectificadas[i]:=IDFacturaARType.Create;
// AFacturasRectificadas[i].NumSerieFacturaEmisor:='FV-500';
// AFacturasRectificadas[i].FechaExpedicionFacturaEmisor:='15-12-2016';
//
// ARegLRFacturasEmitidas[i].FacturaExpedida.FacturasRectificadas:=AFacturasRectificadas;
{$ENDREGION}

{$REGION 'IMPORTERECTIFICACION OPCIONAL'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteRectificacion:=DesgloseRectificacionType.Create;
// ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteRectificacion.BaseRectificada:='100.10'; {Base imponible de las facturas/factura sustituida }
// ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteRectificacion.CuotaRectificada:='10.10'; { Cuota repercutida o soportada de las facturas/factura sustituida }
// ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteRectificacion.CuotaRecargoRectificado:='2.00'; { OPCIONAL.Cuota recargo de equivalencia de las facturas/factura sustituida }
{$ENDREGION}

{$REGION 'FECHAOPERACION OPCIONAL'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.FechaOperacion:='05-12-2016'; { OPCIONAL. Fecha en la que se ha realizado la operación siempre que sea diferente a la fecha de expedición }
{$ENDREGION}

{$REGION 'CLAVE REGIMEN ESPECIAL O TRANSCENDENCIA'}
ARegLRFacturasEmitidas[i].FacturaExpedida.ClaveRegimenEspecialOTrascendencia:=IdOperacionesTrascendenciaTributariaType(0); { Clave que identificará el tipo de operación o el régimen especial con transcendencia tributaria }
{$ENDREGION}

{$REGION 'IMPORTETOTAL'}
ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteTotal:='2420.00'; { OPCIONAL ??. Importe total de la factura }
{$ENDREGION}

{$REGION 'BASE IMPONIBLE A COSTE OPCIONAL'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.BaseImponibleACoste:='1210.00'; { OPCIONAL. Para grupos de iva }
{$ENDREGION}

{$REGION 'DESCRIPCION OPERACION'}
ARegLRFacturasEmitidas[i].FacturaExpedida.DescripcionOperacion:='TRANSPORTE'; { Descripción del objeto de la factura }
{$ENDREGION}

{$REGION 'DATOS INMUEBLE OPCIONAL'}
// SetLength(ADatosInmueble, 1);
// ADatosInmueble[i]:=DatosInmuebleType.Create;
// ADatosInmueble[i].SituacionInmueble:=SituacionInmuebleType(0); { Identificador que especifica la situación del inmueble }
// ADatosInmueble[i].ReferenciaCatastral:='XXX123'; { Referencia catastral del inmueble }
//
// ARegLRFacturasEmitidas[i].FacturaExpedida.DatosInmueble:=ADatosInmueble;
{$ENDREGION}

{$REGION 'IMPORTE TRANSMISION SUJETO A IVA OPCIONAL'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.ImporteTransmisionSujetoAIva:='200.10'; { OPCIONAL. Importe }
{$ENDREGION}

{$REGION 'EMITIDA POR TERCEROS OPCIONAL'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.EmitidaPorTerceros:=EmitidaPorTercerosType(0); { OPCIONAL. Identificador que si aparece con la etiqueta S indica que la factura ha sido emitida por un tercero. }
{$ENDREGION}

{$REGION 'CONTRAPARTE'}
ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte:=PersonaFisicaJuridicaType.Create; { OPCIONAL ?? }
ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.NombreRazon:='cliente, S.L'; { Nombre-razón social de la contraparte de la operación(cliente) de facturas expedidas }
// ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.NIFRepresentante:='1111'; { OPCIONAL. NIF del representante de la contraparte de la operación }
ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.NIF:='B04xxxxx'; { Identificador del NIF contraparte de la operación (cliente) de facturas expedidas }
// ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.IDOtro:=IDOtroType.Create;
// ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.IDOtro.CodigoPais:=CountryType2(0); { OPCIONAL. Código del país asociado contraparte de la operación (cliente) de facturas expedidas }
// ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.IDOtro.IDType:=PersonaFisicaJuridicaIDTypeType(0); { Clave para establecer el tipo de identificación en el pais de residencia }
// ARegLRFacturasEmitidas[i].FacturaExpedida.Contraparte.IDOtro.ID:='B04285870'; { Número de identificación en el país de residencia }
{$ENDREGION}

{$REGION 'TIPO DESGLOSE'}
ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose:=TipoDesglose.Create;

{$REGION 'DESGLOSE FACTURA'}
ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura:=TipoSinDesgloseType.Create;

{$REGION 'SUJETA'}
ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta:=SujetaType.Create;
{$REGION 'EXENTA'}
ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.Exenta:=Exenta.Create;
{$REGION 'CAUSAEXENCION'}
ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.Exenta.CausaExencion:=CausaExencionType(0);{ OPCIONAL. Campo que especifica la causa de la exención en los supuestos que aplique }
{$ENDREGION}
{$REGION 'BASE IMPONIBLE'}
ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.Exenta.BaseImponible:='2420.00'; { Importe en euros correspondiente a la parte Sujeta / Exenta }
{$ENDREGION}
{$ENDREGION}
{$REGION 'NO EXENTA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta:=NoExenta.Create;
// {$REGION 'TIPO NO EXENTA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.TipoNoExenta:=TipoOperacionSujetaNoExe ntaType(0); { Tipo de operación sujeta y no exenta para la diferenciación de inversión de sujeto pasivo }
// {$ENDREGION}
// {$REGION 'DESGLOSE IVA'}
// SetLength(ADesgloseIvaDF, 1);
// ADesgloseIvaDF[i]:=DetalleIVA2.Create;
// ADesgloseIvaDF[i].TipoImpositivo:='21.0'; { Porcentaje aplicado sobre la Base Imponible para calcular la cuota }
// ADesgloseIvaDF[i].BaseImponible:='1000.0'; { Magnitud dineraria sobre la cual se aplica un detertminado tipo impositivo}
// ADesgloseIvaDF[i].CuotaRepercutida:='210.0'; { Cuota resultante de aplicar a la base imponible un determinado tipo impositivo}
// ADesgloseIvaDF[i].TipoRecargoEquivalencia:='0.0'; { OPCIONAL. Porcentaje asociado en función del tipo de IVA}
// ADesgloseIvaDF[i].CuotaRecargoEquivalencia:='0.0'; { OPCIONAL. Cuota resultante de aplicar a la base imponible el tipo de recargo de equivalencia}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIva:=ADesgloseIvaDF;
{$ENDREGION}
{$ENDREGION}
{$ENDREGION}

{$REGION 'NO SUJETA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.NoSujeta:=NoSujetaType.Create;
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.NoSujeta.ImportePorArticulos7_14_Otros:='100'; { Importe en euros si la sujeción es por el art. 7.14, otros }
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseFactura.NoSujeta.ImporteTAIReglasLocalizacion:='100'; { Importe en euros si la sujeción es por operaciones no sujetas en el TAI por reglas de localización }
{$ENDREGION}

{$ENDREGION}

{$REGION 'DESGLOSE TIPO OPERACION'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion:=TipoConDesgloseType.Create;
//
// {$REGION 'PRESTACION SERVICIOS'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios:=TipoSinDesglosePrestacionTy pe.Create;
//
// {$REGION 'SUJETA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta:=SujetaType.Create;
// {$REGION 'EXENTA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.Exenta:=Exenta.Create ;
// {$REGION 'CAUSAEXENCION'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.Exenta.CausaExencion: =CausaExencionType(0);{ OPCIONAL. Campo que especifica la causa de la exención en los supuestos que aplique }
// {$ENDREGION}
// {$REGION 'BASE IMPONIBLE'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.Exenta.BaseImponible: ='300.50'; { Importe en euros correspondiente a la parte Sujeta / Exenta }
// {$ENDREGION}
// {$ENDREGION}
// {$REGION 'NO EXENTA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.NoExenta:=NoExenta.Cr eate;
// {$REGION 'TIPO NO EXENTA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.NoExenta.TipoNoExenta :=TipoOperacionSujetaNoExentaType(0); { Tipo de operación sujeta y no exenta para la diferenciación de inversión de sujeto pasivo }
// {$ENDREGION}
// {$REGION 'DESGLOSE IVA'}
// SetLength(ADesgloseIvaDOPS, 1);
// ADesgloseIvaDOPS[i]:=DetalleIVA2.Create;
// ADesgloseIvaDOPS[i].TipoImpositivo:='21.0'; { Porcentaje aplicado sobre la Base Imponible para calcular la cuota }
// ADesgloseIvaDOPS[i].BaseImponible:='1000.0'; { Magnitud dineraria sobre la cual se aplica un detertminado tipo impositivo}
// ADesgloseIvaDOPS[i].CuotaRepercutida:='210.0'; { Cuota resultante de aplicar a la base imponible un determinado tipo impositivo}
// ADesgloseIvaDOPS[i].TipoRecargoEquivalencia:='0.0'; { OPCIONAL. Porcentaje asociado en función del tipo de IVA}
// ADesgloseIvaDOPS[i].CuotaRecargoEquivalencia:='0.0'; { OPCIONAL. Cuota resultante de aplicar a la base imponible el tipo de recargo de equivalencia}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.Sujeta.NoExenta.DesgloseIva: =ADesgloseIvaDOPS;
// {$ENDREGION}
// {$ENDREGION}
// {$ENDREGION}
//
// {$REGION 'NO SUJETA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.NoSujeta:=NoSujetaType.Creat e;
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.NoSujeta.ImportePorArticulos 7_14_Otros:='100'; { Importe en euros si la sujeción es por el art. 7.14, otros }
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.PrestacionServicios.NoSujeta.ImporteTAIReglasLoc alizacion:='100'; { Importe en euros si la sujeción es por operaciones no sujetas en el TAI por reglas de localización }
// {$ENDREGION}
// {$ENDREGION}
//
// {$REGION 'ENTREGA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega:=TipoSinDesgloseType.Create;
//
// {$REGION 'SUJETA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta:=SujetaType.Create;
// {$REGION 'EXENTA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.Exenta:=Exenta.Create;
// {$REGION 'CAUSAEXENCION'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.Exenta.CausaExencion:=CausaExenci onType(0);{ OPCIONAL. Campo que especifica la causa de la exención en los supuestos que aplique }
// {$ENDREGION}
// {$REGION 'BASE IMPONIBLE'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.Exenta.BaseImponible:='300.50'; { Importe en euros correspondiente a la parte Sujeta / Exenta }
// {$ENDREGION}
// {$ENDREGION}
// {$REGION 'NO EXENTA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.NoExenta:=NoExenta.Create;
// {$REGION 'TIPO NO EXENTA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.NoExenta.TipoNoExenta:=TipoOperac ionSujetaNoExentaType(0); { Tipo de operación sujeta y no exenta para la diferenciación de inversión de sujeto pasivo }
// {$ENDREGION}
// {$REGION 'DESGLOSE IVA'}
// SetLength(ADesgloseIvaDOEN, 1);
// ADesgloseIvaDOEN[i]:=DetalleIVA2.Create;
// ADesgloseIvaDOEN[i].TipoImpositivo:='21.0'; { Porcentaje aplicado sobre la Base Imponible para calcular la cuota }
// ADesgloseIvaDOEN[i].BaseImponible:='1000.0'; { Magnitud dineraria sobre la cual se aplica un detertminado tipo impositivo}
// ADesgloseIvaDOEN[i].CuotaRepercutida:='210.0'; { Cuota resultante de aplicar a la base imponible un determinado tipo impositivo}
// ADesgloseIvaDOEN[i].TipoRecargoEquivalencia:='0.0'; { OPCIONAL. Porcentaje asociado en función del tipo de IVA}
// ADesgloseIvaDOEN[i].CuotaRecargoEquivalencia:='0.0'; { OPCIONAL. Cuota resultante de aplicar a la base imponible el tipo de recargo de equivalencia}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.NoExenta.DesgloseIva:=ADesgloseIv aDOEN;
// {$ENDREGION}
// {$ENDREGION}
// {$ENDREGION}
//
// {$REGION 'NO SUJETA'}
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.NoSujeta:=NoSujetaType.Create;
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.NoSujeta.ImportePorArticulos7_14_Otros:= '100'; { Importe en euros si la sujeción es por el art. 7.14, otros }
// ARegLRFacturasEmitidas[i].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.Entrega.NoSujeta.ImporteTAIReglasLocalizacion:=' 100'; { Importe en euros si la sujeción es por operaciones no sujetas en el TAI por reglas de localización }
// {$ENDREGION}
//
//
// {$ENDREGION}
//
// {$ENDREGION}
//
//
//
//
{$ENDREGION}








ASumLRFacturasEmitidas.RegistroLRFacturasEmitidas:=ARegLRFacturasEmitidas;
{$ENDREGION}

End;
End;

CMB 16-02-2017 16:54:11

Cita:

Empezado por angelhorse (Mensaje 513366)
Buenas a todos.
Yo ando liado también con este tema. Es la primera vez que toco los Web Services y puedo estar equivocado en lo que diré a continuación:
El proyecto lo estoy realizando en C#, que por lo que he leído hay gente que también lo está haciendo con este lenguaje.
Pues bien, yo estoy utilizando HttpWebRequest para lanzar una petición al servidor.
De momento he conseguido, con el certificado que me aparezca el mensaje de "Esta URL corresponde a un Web Service".
El problema aparece cuando intento enviar el XML con la información y me sale: Error 1304: "No se permite contenido en el prólogo" -> XML no válido o mal formado

Repasa cuidadosamente la estructura de tu XML, especialmente las primeras líneas. Algo está mal. Ese mensaje sale cuando envías un fichero con defectos de formato. En casos extremos, si mandas un XML con un contenido absurdo, por ejemplo, "dummy" y nada más, es justamente esa la respuesta que te dan.

keys 16-02-2017 17:05:28

Francisco1973 lo primero gracias. Justo lo que necesitamos es la forma de enviar no la de construir el xml.

CMB 16-02-2017 17:06:48

Cita:

Empezado por angelhorse (Mensaje 513366)
Buenas a todos.
Yo ando liado también con este tema. Es la primera vez que toco los Web Services y puedo estar equivocado en lo que diré a continuación:
El proyecto lo estoy realizando en C#, que por lo que he leído hay gente que también lo está haciendo con este lenguaje.
Pues bien, yo estoy utilizando HttpWebRequest para lanzar una petición al servidor.
De momento he conseguido, con el certificado que me aparezca el mensaje de "Esta URL corresponde a un Web Service".
El problema aparece cuando intento enviar el XML con la información y me sale: Error 1304: "No se permite contenido en el prólogo" -> XML no válido o mal formado

Si el XML está mal se ve enseguida si lo abres con un navegador. Por lo menos con Firefox, verás la línea y la columna donde está el error de estructura.

angelhorse 16-02-2017 17:14:51

Cita:

Empezado por CMB (Mensaje 513368)
Repasa cuidadosamente la estructura de tu XML, especialmente las primeras líneas. Algo está mal. Ese mensaje sale cuando envías un fichero con defectos de formato. En casos extremos, si mandas un XML con un contenido absurdo, por ejemplo, "dummy" y nada más, es justamente esa la respuesta que te dan.

Sí, de hecho he mandado el mensaje al foro y me he puesto a repasarlo y era eso. Estaba cogiendo datos que no debía y de ahí el error. Ahora ya solamente salen errores típicos que anuncia Hacienda. :D

Gracias!

Francisco1973 16-02-2017 17:18:53

Hola, como envio:

defWSDL:='https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactEmitidas.wsdl';
defSvc:='siiService';
defPrt:='SuministroFactEmitidasPruebas';

HTTPRIO1.WSDLLocation:=defWSDL;
HTTPRIO1.Service:=defSvc;
HTTPRIO1.Port:=defPrt;

CrearSumLRFacturasEmitidasTest(Peticion);
Resultado:=GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(Peticion);

Y el certificado: (es necesario tener registrado capicom.dll y la unidad CAPICOM_TLB

procedure TForm1.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;Data: Pointer);
var
Store : IStore;
Certs : ICertificates;
Cert : ICertificate2;
CertContext : ICertContext;
PCertContext : PCCERT_CONTEXT;
V : OleVariant;
const
INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84;
begin

V:=NombreCertificado; { subject del certificado instalado: Nombre de la empresa }

Store := CoStore.Create;
Store.Open(CAPICOM_CURRENT_USER_STORE, 'MY',CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED );
Certs:=Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME,V,False ); { Buscar certificado por nombre }
if Certs.Count > 0 then
begin
Cert:=IInterface(Certs.Item[1]) as ICertificate2;
CertContext:=Cert as ICertContext;
CertContext.Get_CertContext(Integer(PCertContext));
if InternetSetOption(Data,INTERNET_OPTION_CLIENT_CERT_CONTEXT,PCertContext,Sizeof(CERT_CONTEXT)) = False then
begin
ShowMessage( 'Internet SSL certificate. Something went wrong' );
end;
end;
end;

seccion_31 17-02-2017 08:36:04

gracias Francisco1973

ese código funciona perfecto.

saludos !

keys 17-02-2017 08:52:59

Podeis subir un ejemplo completo en un proyecto delphi.

Gracias.

seccion_31 17-02-2017 09:08:30

1 Archivos Adjunto(s)
keys ...

simplemente añade este evento en tu objeto(S) thttprio, y en V:= coloca el nombre de tu certificado.
descarga y mira el adjunto que coloco y listo.

No tienes si quiera que quitar el código anterior para gestionar el certificado.

Saludos !

y por fa, siento ser pesado si alguien tiene algún ejemplo de facturas recibidas y emitidas de sujeto pasivo que lo postee. (lo que yo llamo la factura recibida, y su autofactura).



Código:

procedure TfEmitidas.emitidasHTTPWebNode1BeforePost(
  const HTTPReqResp: THTTPReqResp; Data: Pointer);
var
    Store : IStore;
    Certs : ICertificates;
    Cert : ICertificate2;
    CertContext : ICertContext;
    PCertContext : PCCERT_CONTEXT;
    V : OleVariant;
 const
    INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84;
 begin

    V:='  ***  EL NOMBRE DE TU CERTIFICADO ***';

    Store := CoStore.Create;
    Store.Open(CAPICOM_CURRENT_USER_STORE, 'MY',CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED );
    Certs:=Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME,V,False ); { Buscar certificado por nombre }
    if Certs.Count > 0 then
    begin
        Cert:=IInterface(Certs.Item[1]) as ICertificate2;
        CertContext:=Cert as ICertContext;
        CertContext.Get_CertContext(Integer(PCertContext));
        if InternetSetOption(Data,INTERNET_OPTION_CLIENT_CERT_CONTEXT,PCertContext,Sizeof(CERT_CONTEXT)) = False then
        begin
            ShowMessage( 'Internet SSL certificate. Something went wrong' );
        end;
    end;
 end;


keys 17-02-2017 09:13:28

Puedes indicarme los includes para
Store : IStore;
Certs : ICertificates;
Cert : ICertificate2;
CertContext : ICertContext;

Estoy un poco espeso y no los encuentro.

seccion_31 17-02-2017 09:23:53

estan en el CAPICOM_TLB.pas (que he colocado en la descarga del post)

:rolleyes:

keys 17-02-2017 10:30:43

Lo primero gracias. Ya he conseguido enviar mas de 12 facturas a la vez. Sigo sin entender por que 12 si y 13, el certificado es el mismo. Pero bueno funciona que es lo que importa.

En cuanto a la factura recibida de inversión sujeto pasivo no he empezado a generar recibidas, será lo siguiente. Pero la norma dice lo siguiente :

4.4. ¿Cómo se registra una operación con inversión del sujeto pasivo (art. 84.Uno.2º y 4º de la Ley del IVA) siempre que tengan su origen en operaciones distintas a las adquisiciones intracomunitarias de bienes y servicios)?
El destinatario de la operación registrará los datos de la factura recibida consignando en el campo de tipo de operación la clave “S2: Sujeta – No Exenta – Inv. Suj. Pasivo”. Deberá calcular y consignar la cuota soportada correspondiente a dicha factura así como cumplimentar el campo “Cuota Deducible”. No registrará dato alguno en el Libro Registro de Facturas Expedidas.


No se cual es el problema.

Virman 17-02-2017 11:00:20

Yo creo que más que el problema de enviar más de 12 Facturas, está el problema de que las facturas enviadas se procesan al terminar el bloque de envío, por lo que si en el mismo bloque se envía una factura emitida y el pago de esta, va a devolver siempre el error de factura no encontrada.

En la charla lo apuntaron y seguramente para la revisión de este mes de Marzo (que ya dijeron que iban a estar cambiando los webservices cada mes) ya esté solucionado y se puedan enviar todas las facturas de golpe.

Hasta entonces yo estoy haciendo envíos unitarios por cada línea que leo del fichero csv, así me aseguro que la factura enviada se queda grabada en su base de datos.

keys 17-02-2017 11:13:15

Cita:

Empezado por Virman (Mensaje 513430)
Yo creo que más que el problema de enviar más de 12 Facturas, está el problema de que las facturas enviadas se procesan al terminar el bloque de envío, por lo que si en el mismo bloque se envía una factura emitida y el pago de esta, va a devolver siempre el error de factura no encontrada.

En la charla lo apuntaron y seguramente para la revisión de este mes de Marzo (que ya dijeron que iban a estar cambiando los webservices cada mes) ya esté solucionado y se puedan enviar todas las facturas de golpe.

Hasta entonces yo estoy haciendo envíos unitarios por cada línea que leo del fichero csv, así me aseguro que la factura enviada se queda grabada en su base de datos.

El problema de enviar más de 12 facturas no es un problema de las facturas ya que todas eran de alta, ya que en ese caso ni las procesaba, es decir no retornaba el xml de respuesta, ee generaba una excepción. Prueba a enviar 13 facturas de golpe para ver si puedes o no, ya que sino puedes es un error del codigo y hay que solucionarlo con lo que han puesto anteriormente en los ejemplos.

El truco esta en no enviar en un mismo envío facturas que hagan referencia a facturas que esten en el mismo envío. En cuanto a los pagos de una factura no hay problema por que tienen que ir por envíos separados, es decir la factura se envia por el suministro de facturas y el pago por el de pagos. Es decir nunca pueden ir juntas.

Un Saludo.

CMB 23-02-2017 16:19:01

Cómo extraer datos de la respuesta
 
Creo que hasta ahora nadie ha tratado este tema.

Ya he conseguido enviar facturas emitidas y recibidas sin problema, y también capturo la respuesta del WS. Pero cuando ésta se recibe, en formato XML, cómo debe de hacerse el parsing para extraer el resultado de cada factura, para saber si ha sido aceptada o rechazada, y en este último caso, cuál es la causa de la no admisión, con el fin de comunicarlo al usuario y tomar las medidas que haga falta. Visualmente es muy fácil de determinar leyendo la respuesta, pero ¿cómo automatizar ese proceso?

Alguien que tenga la amabilidad de publicar un poco de código, supongo que con las clases TXMLDocument y/o IXMLDocument, pues el uso de Node y ChildNodes, es bastante liado.

Muchas gracias.

Saludos,

keys 23-02-2017 16:36:12

Hola. Al llamar a la funcion GetssiSoap este devuelve una respuesta según el tipo de envío que se este realizando. Por ejemplo lo siguiente es un envio de facturas Emitidas. El orden de las respuestas es la misma que las que se envían.

Código Delphi [-]
      var 
      resultado : RespuestaLRFacturasEmitidas;

      resultado := GetsiiSOAP(true, '', nil).SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas);

       //mostrar los resultados devueltos por la llamada
       for i := low(resultado.RespuestaLinea) to High(resultado.RespuestaLinea) do
        begin

          with resultado.RespuestaLinea[i] do
            begin                           
                    case EstadoRegistro of
                      EstadoRegistroType.Correcto : begin //LA FACTURA ES CORRECTA                                                                  
                                                                     REsultado.CSV;
                                                                    
                                                              end;
                      EstadoRegistroType.AceptadoConErrores : begin                                                                
                                                                                   REsultado.CSV;
                                                                                   DescripcionErrorRegistro; //Descripcion del resultado devuelto
                                                              end;
                      EstadoRegistroType.Incorrecto : begin
                                                       
                                                       CodigoErrorRegistro;
                                                        DescripcionErrorRegistro; //Descripcion del resultado devuelto
                                                      end;
                    end; //cASE
                    
                
         end; //fOR

Busca en los mensajes anteriores que hay un ejemplo entero de envío y se trata esto.

Un Saludo.

Nasca 23-02-2017 17:40:00

Nuevo documento publicado:

http://www.agenciatributaria.es/stat...ondiciones.pdf

Es interesante a efectos técnicos.

Aunque tampoco dice mucho más de lo que ya se sabía a través de los WSDL.

CMB 24-02-2017 15:18:25

Cita:

Empezado por keys (Mensaje 513634)
Hola. Al llamar a la funcion GetssiSoap este devuelve una respuesta según el tipo de envío que se este realizando. Por ejemplo lo siguiente es un envio de facturas Emitidas. El orden de las respuestas es la misma que las que se envían. Busca en los mensajes anteriores que hay un ejemplo entero de envío y se trata esto.

Hola keys:

Muchas gracias por tu respuesta.

Con toda seguridad será de gran utilidad para la mayoría, aunque en mi caso, dado que envío un XML ya creado y cerrado, y recibo una respuesta también en formato XML, tendré que trabajarme un parsing manual para extraer el estado de cada factura y guardarlo en disco para conocimiento del usuario. Ya sé que Delphi tiene el TXMLDocument y los ChildNodes y demás, pero me inclino por meter la respuesta en un TStringList y analizarla línea a línea. Nada del otro mundo.

Gracias de nuevo, y saludos cordiales,

Nasca 24-02-2017 15:47:16

Cita:

Empezado por CMB (Mensaje 513665)
Ya sé que Delphi tiene el TXMLDocument y los ChildNodes y demás, pero me inclino por meter la respuesta en un TStringList y analizarla línea a línea. Nada del otro mundo.

Yo también me inclino por esa opción. Es mas manual pero se mantiene un mejor control y se reducen las dependencias.
De todas formas miraré si hay algún parser que lo simplifique sin dependencias, que se compile en la propia aplicación. Si alguno conoce alguno le agradecería referencias.

Miraré:
https://github.com/Fr0sT-Brutal/awes...hi#xmljsonyaml

CMB 24-02-2017 16:19:15

Cita:

Empezado por Nasca (Mensaje 513666)
Yo también me inclino por esa opción. Es mas manual pero se mantiene un mejor control y se reducen las dependencias. De todas formas miraré si hay algún parser que lo simplifique sin dependencias, que se compile en la propia aplicación. Si alguno conoce alguno le agradecería referencias.

A falta de parser, yo estoy pensando en meter las líneas del XML de respuesta en un TStringList. A partir de ahí, ir buscando los tags que son clave (<siiR:EstadoEnvio>, <siiR:EstadoRegistro>, <siiR:CSV>, <siiR:CodigoErrorRegistro>, <siiR: DescripcionErrorRegistro>) y asociar los valores que contengan con el número de factura que se encuentra en <sii:NumSerieFacturaEmisor>. Luego meter los valores hallados en el registro correspondiente del fichero de facturas, con el fin de que el usuario disponga de esa información. Si la factura ha sido aceptada, o lo ha sido con errores, o rechazada explicando por qué...

Si alguien tuviese una idea mejor se le agradecería.

Saludos,

paquimd 24-02-2017 18:22:17

Yo estoy haciendolo en c#. Ya me conecto pero no soy capaz de enviar el xml. ¿podríais pasarme un xml válido? O incluso orientarme en c#.

Gracias

CMB 24-02-2017 21:52:07

Cita:

Empezado por paquimd (Mensaje 513678)
Yo estoy haciendolo en c#. Ya me conecto pero no soy capaz de enviar el xml. ¿podríais pasarme un xml válido? O incluso orientarme en c#.

Aquí tienes un ejemplo de XML para facturas emitidas. Es válido, pero tendrás que poner nombres y NIF reconocidos por la AEAT donde hay letras repetidas.

Y en este documento, distribuido por la AEAT, tienes varios ejemplos más: SII_Descripcion_ServicioWeb_v0.5_es_es.pdf

Código:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:siiLR="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
    <soapenv:Header/>
    <soapenv:Body>
        <siiLR:SuministroLRFacturasEmitidas>
            <sii:Cabecera>
                <sii:IDVersionSii>0.5</sii:IDVersionSii>
                <sii:Titular>
                    <sii:NombreRazon>AAAAAAAAAAAAAAAAAAAA</sii:NombreRazon>
                    <sii:NIF>XXXXXXXXX</sii:NIF>
                </sii:Titular>
                <sii:TipoComunicacion>A0</sii:TipoComunicacion>
            </sii:Cabecera>
            <siiLR:RegistroLRFacturasEmitidas>
                <sii:PeriodoImpositivo>
                    <sii:Ejercicio>2017</sii:Ejercicio>
                    <sii:Periodo>02</sii:Periodo>
                </sii:PeriodoImpositivo>
                <siiLR:IDFactura>
                    <sii:IDEmisorFactura>
                        <sii:NIF>XXXXXXXXX</sii:NIF>
                    </sii:IDEmisorFactura>
                    <sii:NumSerieFacturaEmisor>99103</sii:NumSerieFacturaEmisor>
                    <sii:FechaExpedicionFacturaEmisor>15-02-2017</sii:FechaExpedicionFacturaEmisor>
                </siiLR:IDFactura>
                <siiLR:FacturaExpedida>
                    <sii:TipoFactura>F1</sii:TipoFactura>
                    <sii:ClaveRegimenEspecialOTrascendencia>01</sii:ClaveRegimenEspecialOTrascendencia>
                    <sii:ImporteTotal>5.69</sii:ImporteTotal>
                    <sii:DescripcionOperacion>COMPRA-XXXXXX</sii:DescripcionOperacion>
                    <sii:Contraparte>
                        <sii:NombreRazon>BBBBBBBBBBBBBBBBBBBB</sii:NombreRazon>
                        <sii:NIF>YYYYYYYYY</sii:NIF>
                    </sii:Contraparte>
                    <sii:TipoDesglose>
                        <sii:DesgloseFactura>
                            <sii:Sujeta>
                                <sii:NoExenta>
                                    <sii:TipoNoExenta>S1</sii:TipoNoExenta>
                                    <sii:DesgloseIVA>
                                        <sii:DetalleIVA>
                                            <sii:TipoImpositivo>21.00</sii:TipoImpositivo>
                                            <sii:BaseImponible>4.70</sii:BaseImponible>
                                            <sii:CuotaRepercutida>0.99</sii:CuotaRepercutida>
                                        </sii:DetalleIVA>
                                    </sii:DesgloseIVA>
                                </sii:NoExenta>
                            </sii:Sujeta>
                        </sii:DesgloseFactura>
                    </sii:TipoDesglose>
                </siiLR:FacturaExpedida>
            </siiLR:RegistroLRFacturasEmitidas>
            <siiLR:RegistroLRFacturasEmitidas>
                <sii:PeriodoImpositivo>
                    <sii:Ejercicio>2017</sii:Ejercicio>
                    <sii:Periodo>02</sii:Periodo>
                </sii:PeriodoImpositivo>
                <siiLR:IDFactura>
                    <sii:IDEmisorFactura>
                        <sii:NIF>XXXXXXXXX</sii:NIF>
                    </sii:IDEmisorFactura>
                    <sii:NumSerieFacturaEmisor>99101</sii:NumSerieFacturaEmisor>
                    <sii:FechaExpedicionFacturaEmisor>14-02-2017</sii:FechaExpedicionFacturaEmisor>
                </siiLR:IDFactura>
                <siiLR:FacturaExpedida>
                    <sii:TipoFactura>F1</sii:TipoFactura>
                    <sii:ClaveRegimenEspecialOTrascendencia>01</sii:ClaveRegimenEspecialOTrascendencia>
                    <sii:ImporteTotal>275.00</sii:ImporteTotal>
                    <sii:DescripcionOperacion>COMPRA-XXXXXX</sii:DescripcionOperacion>
                    <sii:Contraparte>
                        <sii:NombreRazon>CCCCCCCCCCCCCCCCCCCC</sii:NombreRazon>
                        <sii:NIF>ZZZZZZZZZ</sii:NIF>
                    </sii:Contraparte>
                    <sii:TipoDesglose>
                        <sii:DesgloseFactura>
                            <sii:Sujeta>
                                <sii:NoExenta>
                                    <sii:TipoNoExenta>S1</sii:TipoNoExenta>
                                    <sii:DesgloseIVA>
                                        <sii:DetalleIVA>
                                            <sii:TipoImpositivo>10.00</sii:TipoImpositivo>
                                            <sii:BaseImponible>250.00</sii:BaseImponible>
                                            <sii:CuotaRepercutida>25.00</sii:CuotaRepercutida>
                                        </sii:DetalleIVA>
                                    </sii:DesgloseIVA>
                                </sii:NoExenta>
                            </sii:Sujeta>
                        </sii:DesgloseFactura>
                    </sii:TipoDesglose>
                </siiLR:FacturaExpedida>
            </siiLR:RegistroLRFacturasEmitidas>
        </siiLR:SuministroLRFacturasEmitidas>
    </soapenv:Body>
</soapenv:Envelope>


bartag 25-02-2017 18:41:53

Cita:

Empezado por paquimd (Mensaje 513678)
Yo estoy haciendolo en c#. Ya me conecto pero no soy capaz de enviar el xml. ¿podríais pasarme un xml válido? O incluso orientarme en c#.

Gracias

Yo estoy haciendo también pruebas en VB/C# y me estoy encontrando con campos que no aparecen (por ejemplo 'ARegistroLRFacturasEmitidas(0).FacturaExpedida.Contraparte.NIF' lo he tenido que crear y también todos los relacionados con 'ARegistroLRFacturasEmitidas(0).FacturaExpedida.TipoDesglose.desgloseFactura...').

Alguien ha tenido el mismo problema? Veo que a los que utilizan Delphi les funciona perfectamente en ese aspecto. Ya no sé si es un problema del lenguaje utilizado o de los cambios que está realizando la Administración...


La franja horaria es GMT +2. Ahora son las 06:57:50.

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