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)

juabero 07-04-2017 12:04:40

Ayuda por Favor
 
Cita:

Empezado por javi_valencia44 (Mensaje 515336)
Yo esta parte no la tengo puesta:

<customBinding>
<binding name="siiBinding">
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport />
</binding>
</customBinding>

Lo he intentado de todas formas.
A ti te funciona, si es asi pasame un ejemplo por favor

javi_valencia44 07-04-2017 12:17:31

Cita:

Empezado por juabero (Mensaje 515337)
Lo he intentado de todas formas.
A ti te funciona, si es asi pasame un ejemplo por favor

Yo lo hago deserializando el XML en un objeto

Por ejemplo para hacer el suministro de una factura emitida:

Ws = New SII.siiSOAPClient
Ws.ClientCredentials.ClientCertificate.Certificate = CertificadoCorrecto
Ws.ClientCredentials.UseIdentityConfiguration = True
facturas = New SuministroLRFacturasEmitidas
ser = New System.Xml.Serialization.XmlSerializer(facturas.GetType())
facturas = CType(ser.Deserialize(reader), SuministroLRFacturasEmitidas)
resul = New SII.RespuestaLRFEmitidasType
resul = Ws.SuministroLRFacturasEmitidas(facturas)

Dim serializer As New XmlSerializer(resul.GetType())
Dim writer As New StreamWriter(rutaXMLdestino)

serializer.Serialize(writer, resul)
writer.Close()

Has probado que tu certificado es correcto?

javi_valencia44 07-04-2017 12:20:46

Cita:

Empezado por Virman (Mensaje 515335)
El objeto a usar es: LRConsultaEmitidasType y te devuelve RespuestaConsultaLRFacturasEmitidasType.
Con respecto a esto, habría alguna forma de convertir el tipo RegistroRespuestaConsultaLRFacturasEmitidas a LRfacturasEmitidasType, es para comprobar si una factura ya existe, emitir esa factura como A1 en tipo de comunicación.

Sólo se me ocurre que crees un objeto del tipo LRfacturasEmitidasType y le pases uno a uno cada dato del otro objeto que ya tienes.

Sobre la consulta de facturas emitidas me sigue dando el mismo error, creo que es por algo que pongo mal en el XML de entrada. Le pongo un formato así:

<ConsultaLRFacturasEmitidas>
<!--Datos de contexto de un suministro sin especificar el timpo de comunicacion-->
<Cabecera xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
<IDVersionSii>[string]</IDVersionSii>
<!--Titular de los libros de registro que suministra la información
Datos de una persona física o jurídica Española con un NIF asociado-->
<Titular>
<NombreRazon>[string]</NombreRazon>
<NIF>[string]</NIF>
</Titular>
</Cabecera>
<FiltroConsulta>
<!--Período al que corresponden los apuntes. todos los apuntes deben corresponder al mismo período impositivo-->
<PeriodoImpositivo xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
<Ejercicio>[string]</Ejercicio>
<Periodo>[string]</Periodo>
</PeriodoImpositivo>
<!--Datos de identificación de factura expedida para operaciones de baja y consulta-->
<!-- Optional -->
<ClavePaginacion>
<IDEmisorFactura xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
<NIF>[string]</NIF>
</IDEmisorFactura>
<!--Número y serie de la Factura del Emisor.-->
<NumSerieFacturaEmisor xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">[string]</NumSerieFacturaEmisor>
<!--Fecha de emisión de la factura-->
<FechaExpedicionFacturaEmisor xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">[string]</FechaExpedicionFacturaEmisor>
</ClavePaginacion>
</FiltroConsulta>
</ConsultaLRFacturasEmitidas>

juabero 07-04-2017 12:28:45

Cita:

Empezado por javi_valencia44 (Mensaje 515338)
Yo lo hago deserializando el XML en un objeto

Por ejemplo para hacer el suministro de una factura emitida:

Ws = New SII.siiSOAPClient
Ws.ClientCredentials.ClientCertificate.Certificate = CertificadoCorrecto
Ws.ClientCredentials.UseIdentityConfiguration = True
facturas = New SuministroLRFacturasEmitidas
ser = New System.Xml.Serialization.XmlSerializer(facturas.GetType())
facturas = CType(ser.Deserialize(reader), SuministroLRFacturasEmitidas)
resul = New SII.RespuestaLRFEmitidasType
resul = Ws.SuministroLRFacturasEmitidas(facturas)

Dim serializer As New XmlSerializer(resul.GetType())
Dim writer As New StreamWriter(rutaXMLdestino)

serializer.Serialize(writer, resul)
writer.Close()

Has probado que tu certificado es correcto?


Parece ser que tu lo estas haciendo con la version 5 y yo con la version 6
la version 6 no tiene "Ws.ClientCredentials.UseIdentityConfiguration = True"

Además he generado el xml y le he puesto a mano en el envelop y lo he mandado por web y funciona

Dime con que visual studio estas desarrollando y la versin de FrameWork

javi_valencia44 07-04-2017 12:44:41

Cita:

Empezado por juabero (Mensaje 515341)
Parece ser que tu lo estas haciendo con la version 5 y yo con la version 6
la version 6 no tiene "Ws.ClientCredentials.UseIdentityConfiguration = True"

Además he generado el xml y le he puesto a mano en el envelop y lo he mandado por web y funciona

Dime con que visual studio estas desarrollando y la versin de FrameWork

Estoy con la versión 6, solo que antes estaba con la 5 y dejé ese código puesto

LoKeD 07-04-2017 13:20:47

Buenos días a todos!
He aquí uno mas liado con el dichoso SII!

Estoy teniendo el mismo problema que algunos a la hora de conectar: Recibo una contestación de tipo text/html...
Tengo cargado el certificado, he probado a poner los app.config como decís pero no hay forma..
Os paso unos trozos del código en cuestión:
Código:

X509Store store = new X509Store("My", StoreLocation.LocalMachine);
store.Open(OpenFlags.OpenExistingOnly);
X509Certificate2 CertificadoCorrecto = new X509Certificate2();
X509Certificate2Collection busqueda = new X509Certificate2Collection();
busqueda = store.Certificates.Find(X509FindType.FindByIssuerName, "FNMT Clase 2 CA", false);
CertificadoCorrecto = busqueda[0];
ConexionFacturas.ClientCredentials.ClientCertificate.Certificate = CertificadoCorrecto;
ConexionFacturas.ClientCredentials.UseIdentityConfiguration = true;
RespuestaFacturas = ConexionFacturas.SuministroLRFacturasEmitidas(suministroFacturas);
csvRespuesta = RespuestaFacturas.CSV;
ListaRespuestaFacturas = RespuestaFacturas.RespuestaLinea.ToList<FactEmitidas.RespuestaExpedidaType>();

Código:

<binding name="siiBinding8">
  <security mode="Transport">
      <transport clientCredentialType="Certificate" />
  </security>
</binding>

Llevo toda la mañana probando y no hay manera de conectar, a ver si alguno de los que tenemos el error damos con la solución!
Un saludo a todos, y encantado de estar por aquí!

newtron 08-04-2017 11:20:08

Hola de nuevo.

Estoy intentando enviar una factura recibida del tipo "Inversión del sujeto pasivo" y me da el error "Error no: 1144 Los campos IDEmisorfactura y Contraparte de la factura son distintos"

Seguro que es alguna tontería pero no doy con el problema así que he pensado en echar un vistazo al XML pero no sé cómo :o porque no he necesitado hasta ahora verlo. ¿Alguien me puede decir cómo generar el XML después de crear el objeto? ¿Alguien tiene un ejemplo XML de facturas recibidas del tipo "Inversión del sujeto pasivo"?

Gracias

CMB 08-04-2017 11:30:37

Cita:

Empezado por newtron (Mensaje 515389)
Hola de nuevo.
Estoy intentando enviar una factura recibida del tipo "Inversión del sujeto pasivo" y me da el error "Error no: 1144 Los campos IDEmisorfactura y Contraparte de la factura son distintos"
Seguro que es alguna tontería pero no doy con el problema así que he pensado en echar un vistazo al XML pero no sé cómo :o porque no he necesitado hasta ahora verlo. ¿Alguien me puede decir cómo generar el XML después de crear el objeto? ¿Alguien tiene un ejemplo XML de facturas recibidas del tipo "Inversión del sujeto pasivo"?
Gracias

Buenos días newtron

En el documento SII_Descripcion_ServicioWeb_v0.6.pdf, pág. 157, tienes un ejemplo de mensaje con el desglose de la inversión del sujeto pasivo.

Échalo un vistazo.

Saludos,

newtron 08-04-2017 11:54:44

Cita:

Empezado por CMB (Mensaje 515390)
Buenos días newtron

En el documento SII_Descripcion_ServicioWeb_v0.6.pdf, pág. 157, tienes un ejemplo de mensaje con el desglose de la inversión del sujeto pasivo.

Échalo un vistazo.

Saludos,

Gracias CMB, ¿tú sabes cómo genero el XML a partir del objeto creado?

CMB 08-04-2017 12:00:50

Cita:

Empezado por newtron (Mensaje 515391)
Gracias CMB, ¿tú sabes cómo genero el XML a partir del objeto creado?

Es que yo escribo el XML línea a línea mediante Delphi. Nada de funciones externas. Y una vez creado y escrito en disco, lo mando a la AEAT y recojo la respuesta. Sugiero copiar y pegar el ejemplo oficial e intentar su envío (previa substitución de los datos ficticios). En mi modesta opinión, y en contra de la mayoría, creo que es más claro y sencillo.

Saludos,

newtron 08-04-2017 12:07:08

Cita:

Empezado por CMB (Mensaje 515392)
Es que yo escribo el XML línea a línea mediante Delphi. Nada de funciones externas. Y una vez creado y escrito en disco, lo mando a la AEAT y recojo la respuesta. Sugiero copiar y pegar el ejemplo oficial e intentar su envío (previa substitución de los datos ficticios). En mi modesta opinión, y en contra de la mayoría, creo que es más claro y sencillo.

Saludos,

Bueno, todo tiene sus ventajas y sus inconvenientes. Yo la ventaja que le veo al otro sistema es que es más fácil adaptar a los cambios del webservice porque el mismo compilador te va diciendo lo que tienes que cambiar.

Gracias y un saludo

nuevo1234 09-04-2017 11:00:50

Sii
 
Parece que Hacienda ya ha colgado los formularios para dar de alta facturas.

PepCat 10-04-2017 08:55:32

Cita:

Empezado por newtron (Mensaje 515389)
Hola de nuevo.

Estoy intentando enviar una factura recibida del tipo "Inversión del sujeto pasivo" y me da el error "Error no: 1144 Los campos IDEmisorfactura y Contraparte de la factura son distintos"

Seguro que es alguna tontería pero no doy con el problema así que he pensado en echar un vistazo al XML pero no sé cómo :o porque no he necesitado hasta ahora verlo. ¿Alguien me puede decir cómo generar el XML después de crear el objeto? ¿Alguien tiene un ejemplo XML de facturas recibidas del tipo "Inversión del sujeto pasivo"?

Gracias

¿El NIF del IDEmisorfactura y de la Contraparte que envias son iguales?
En las facturas recibidas tienen que ser iguales.

PepCat 10-04-2017 09:01:42

Cita:

Empezado por newtron (Mensaje 515389)
Hola de nuevo.

Estoy intentando enviar una factura recibida del tipo "Inversión del sujeto pasivo" y me da el error "Error no: 1144 Los campos IDEmisorfactura y Contraparte de la factura son distintos"

Seguro que es alguna tontería pero no doy con el problema así que he pensado en echar un vistazo al XML pero no sé cómo :o porque no he necesitado hasta ahora verlo. ¿Alguien me puede decir cómo generar el XML después de crear el objeto? ¿Alguien tiene un ejemplo XML de facturas recibidas del tipo "Inversión del sujeto pasivo"?

Gracias

En el post #87 de este tema hay un ejemplo de como generar el XML.

newtron 10-04-2017 09:07:26

Cita:

Empezado por PepCat (Mensaje 515420)
¿El NIF del IDEmisorfactura y de la Contraparte que envias son iguales?
En las facturas recibidas tienen que ser iguales.

Al final lo he resuelto quitando totalmente todo lo relativo a la "contraparte".

Cita:

Empezado por PepCat (Mensaje 515421)
En el post #87 de este tema hay un ejemplo de como generar el XML.

Maemía... gracias. Mira que he revisado todo el hilo y se me ha pasado por alto ese post. Vamos a tener que preparar un índice. :D:D:D

inyu 10-04-2017 16:31:10

¿Alguien tiene un ejemplo del desglose de una factura recibida? Pensé que no me costaria nada adaptar el de una factura emitida pero tengo problemas creando el desglose de la factura e IVAs, gracias.

PD: Me refiero al código en C, .net, delphi o lo que sea, el XML ya lo tengo claro.

newtron 10-04-2017 16:45:37

Cita:

Empezado por inyu (Mensaje 515433)
¿Alguien tiene un ejemplo del desglose de una factura recibida? Pensé que no me costaria nada adaptar el de una factura emitida pero tengo problemas creando el desglose de la factura e IVAs, gracias.

PD: Me refiero al código en C, .net, delphi o lo que sea, el XML ya lo tengo claro.

Hola.

No tengo ningún ejemplo de facturas recibidas pero te paso mi parte del código que las envía, imagino que te servirá de ejemplo aunque todavía no está cerrado con todos los tipos de facturas y eso.

Código Delphi [-]
  try
    ASuministroLRFacturasRecibidas := SuministroLRFacturasRecibidas.Create;
    ASuministroLRFacturasRecibidas.Cabecera := CabeceraSii.Create;

    // DATOS:
    ASuministroLRFacturasRecibidas.Cabecera.IDVersionSii:=VersionSiiType(0);       // 0.1
    ASuministroLRFacturasRecibidas.Cabecera.titular := PersonaFisicaJuridicaESType.Create;
    ASuministroLRFacturasRecibidas.Cabecera.Titular.NombreRazon:=Bd.BuscaValor('DATOSEMPRESA','NOMBRE','  ','');    // NOMBRE DEL PRESENTADOR
    ASuministroLRFacturasRecibidas.Cabecera.Titular.NIF:=Bd.BuscaValor('DATOSEMPRESA','MNIF','','');              // CIF del PRESENTADOR (DEBE COINCIDIR CON EL CERTIFICADO SELECCIONADO)
    // (0) A0 - ALTA
    // (1) A1-  MODIFICACION
    // (2) A4-  MODIFICACION REGIMEN VIAJEROS
    if FormSii.RadioButton1.Checked then begin
      ASuministroLRFacturasRecibidas.Cabecera.TipoComunicacion:=ClaveTipoComunicacionType(0);
    end else if FormSii.RadioButton2.Checked then begin
      ASuministroLRFacturasRecibidas.Cabecera.TipoComunicacion:=ClaveTipoComunicacionType(1);
    end;

    //Se crean todas las estructuras de datos de la consulta
    SetLength(ARegistroLRFacturasRecibidas, M);

    for N := 0 to M do begin
      FormSII.PBProceso.Position := FormSII.PBProceso.Position+1;
      If Grid.ValorCeldaPorCampoYFila('ENVIAR',N+1)='X' then begin
        FormSII.Label5.Caption := 'Factura: '+Grid.ValorCeldaPorCampoYFila('FACTURA',N+1);
        Application.ProcessMessages;
        // Busco registro en tabla de iva
        Tabla.FindKey([Grid.ValorCeldaPorCampoYFila('CODIGO',N+1)]);
        // Busco registro en tabla de cuentas
        TablaCuentas.FindKey([Tabla.FieldByName('CUENTA').AsString]);
        ARegistroLRFacturasRecibidas[N]:=LRfacturasRecibidasType.Create;
        ARegistroLRFacturasRecibidas[N].IDFactura:=IDFacturaRecibidaType.create;
        ARegistroLRFacturasRecibidas[N].FacturaRecibida:=FacturaRecibidaType.create;               // <- clase para tipo de factura
        ARegistroLRFacturasRecibidas[N].PeriodoImpositivo:=PeriodoImpositivo.Create;

        ARegistroLRFacturasRecibidas[N].PeriodoImpositivo.Ejercicio:=Bd.BuscaValor('DATOSEMPRESA','MEJERCICIO','','');  //  AÑO
        // Periodo
        P:=StrToInt(FormatDateTime('MM',StrToDate(Grid.ValorCeldaPorCampoYFila('FECHA',N+1))));
        ARegistroLRFacturasRecibidas[N].PeriodoImpositivo.periodo  :=TipoPeriodoType(P-1);          //  PERIODO 01- ENERO ... 12-DICIEMBRE  (0A - ANUAL )
        ARegistroLRFacturasRecibidas[N].IDFactura.IDEmisorFactura:= IDEmisorFactura4.Create;
        ARegistroLRFacturasRecibidas[N].IDFactura.IDEmisorFactura.NIF  := Tabla.FieldByName('CIF').AsString;                         // NUESTRO NIF, COMO EMISOR = TITULAR LIBRO REGISTRO = CERTIFICADO DIGITAL
        if FormSII.CheckBox1.Checked then
          ARegistroLRFacturasRecibidas[N].IDFactura.NumSerieFacturaEmisor:=Grid.ValorCeldaPorCampoYFila('FACTURA',N+1)+'/'+FormatDateTime('YYYYMMDDHHMMSS'+IntToStr(N),now)
        else
          ARegistroLRFacturasRecibidas[N].IDFactura.NumSerieFacturaEmisor:=Grid.ValorCeldaPorCampoYFila('FACTURA',N+1); // Numero de factura

        ARegistroLRFacturasRecibidas[N].IDFactura.FechaExpedicionFacturaEmisor:=Grid.ValorCeldaPorCampoYFila('FECHA',N+1);                 // FECHA DE EXPEDICION FACTURA    (dd-mm-yyyy)
        if Tabla.FieldByName('TOTAL').AsCurrency<0 then begin
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.tipofactura:=ClaveTipoFacturaType(2);      //  RECTIFICATIVA
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.TipoRectificativa := ClaveTipoRectificativaType(1);
        end else begin
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.tipofactura:=ClaveTipoFacturaType(0);      //  F1- FACTURA / F2 TICKET / ...
        end;

        ARegistroLRFacturasRecibidas[N].FacturaRecibida.FechaRegContable := Tabla.FieldByName('FECHAE').AsString;
        cAux:=Tabla.FieldByName('BASE1').AsCurrency+Tabla.FieldByName('BASE2').AsCurrency+Tabla.FieldByName(  'BASE3').AsCurrency;
        sAux:=CurrToStr(cAux);
        AregistroLRFacturasRecibidas[N].FacturaRecibida.CuotaDeducible := StrTran(sAux,',','.');

        if Tabla.FieldByName('TIPOSII').AsString<>'' then begin
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.ClaveRegimenEspecialOTrascendencia:=IdOperacionesTrascendenciaTributariaType(Tabla.  FieldByName('TIPOSII').AsInteger-1);  // 01-REGIMEN COMUN / 02-BIENES USADOS... 15-EXPORTACION
        end else begin
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.ClaveRegimenEspecialOTrascendencia:=IdOperacionesTrascendenciaTributariaType(0);  // 01-REGIMEN COMUN / 02-BIENES USADOS... 15-EXPORTACION
        end;

        ARegistroLRFacturasRecibidas[N].FacturaRecibida.ImporteTotal:=StrTran(Tabla.FieldByName('TOTAL').AsString,',','.');                       //  TOTAL (opcional)
        ARegistroLRFacturasRecibidas[N].FacturaRecibida.descripcionOperacion:='Su Factura';   //  DESCRIPCION FACTURA (LIBRE)

        ARegistroLRFacturasRecibidas[N].FacturaRecibida.Contraparte:=PersonaFisicaJuridicaType.Create;  // CREAR PROVEEDOR:
        ARegistroLRFacturasRecibidas[N].FacturaRecibida.Contraparte.NombreRazon:=Tabla.FieldByName('NOMBRE').AsString;           // NOMBRE DEL PROVEEDOR

        try
          iAux:=Tabla.FieldByName('TIPOSII').AsInteger;
        except
          iAux:=1;
        end;


        if (Tabla.FieldByName('TIPO').AsString='9') or (Tabla.FieldByName('TIPO').AsString='7') or (Tabla.FieldByName('TIPO').AsString='A') then begin
          If Tabla.FieldByName('TIPO').AsString='7' then begin   // Inversion Sujeto pasivo
            ARegistroLRFacturasRecibidas[N].FacturaRecibida.Contraparte.NIF:=Tabla.FieldByName('CIF').AsString;                      // NIF DEL PROVEEDOR
          end;
        end else begin
          // CONTRAPARTE:
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.Contraparte.NIFRepresentante:='';
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.Contraparte.NIF:=Tabla.FieldByName('CIF').AsString;                      // NIF DEL PROVEEDOR
        end;
       // EMPEZAMOS CON LOS DESGLOSES (IVAs)
        if (Tabla.FieldByName('IVA1').AsCurrency<>0) and (Tabla.FieldByName('IVA2').AsCurrency<>0) and (Tabla.FieldByName('IVA3').AsCurrency<>0) then begin
          nIvas:=3;
        end else if (Tabla.FieldByName('IVA1').AsCurrency<>0) and (Tabla.FieldByName('IVA2').AsCurrency<>0) then begin
          nIvas:=2;
        end else if (Tabla.FieldByName('IVA1').AsCurrency<>0) then begin
          nIvas:=1;
        end else begin
          nIvas:=0;
        end;
        if nIvas>0 then begin
          setLength(IVAS,nIvas);                       // numeros de iVAs en factura
          Z:=0;
          for zz := 0 to nIvas-1 do begin
            if Tabla.FieldByName('IVA'+IntToStr(ZZ+1)).AsCurrency<>0 then begin
              IVAS[zz]:=DetalleIVARecibidaType.create;             // CREAR primer IVA
              IVAS[zz].BaseImponible:=StrTran(Tabla.FieldByName('BASE'+IntToStr(ZZ+1)).AsString,',','.');            // BASE IMPONIBLE
              IVAS[zz].TipoImpositivo:=StrTran(Tabla.FieldByName('TIVA'+IntToStr(ZZ+1)).AsString,',','.');            // IVA %
              IVAS[zz].CuotaSoportada:=StrTran(Tabla.FieldByName('IVA'+IntToStr(ZZ+1)).AsString,',','.');          // IMPORTE IVA
            end;
          end;
        end;

        //   opcion 1
        if nIvas>0 then begin
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.desgloseFactura:=DesgloseFacturaRecibidasType.create;
          ARegistroLRFacturasRecibidas[N].FacturaRecibida.desglosefactura.desgloseIVA:=IVAS;
        end else begin

          if (Tabla.FieldByName('TIPO').AsString='7') then begin
            setLength(IVAS,1);                       // numeros de iVAs en factura
            IVAS[0]:=DetalleIVARecibidaType.create;             // CREAR primer IVA
            IVAS[0].BaseImponible:='0';
            IVAS[0].TipoImpositivo:='0';
            IVAS[0].CuotaSoportada:='0';
            ARegistroLRFacturasRecibidas[N].FacturaRecibida.DesgloseFactura :=DesgloseFacturaRecibidasType.create;
            ARegistroLRFacturasRecibidas[N].FacturaRecibida.DesgloseFactura.DesgloseIVA := IVAS;
          end else if (Tabla.FieldByName('TIPO').AsString='9') then begin

          end else if (Tabla.FieldByName('TIPO').AsString='7') or (Tabla.FieldByName('TIPO').AsString='A') then begin

          end else begin
          end;

        end;
      end;
    end;
    //se añade el array de facturas creado anteriormente
    ASuministroLRFacturasRecibidas.RegistroLRFacturasRecibidas:=ARegistroLRFacturasRecibidas;

   try

      FormSII.Label5.Caption := 'Enviando paquete de datos....';
      Application.ProcessMessages;
      // se hace la llamada a la funcion suministrada por el WS
      result := GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasRecibidas(ASuministroLRFacturasRecibidas);

      //mostrar los resultados devueltos por la llamada
      for i := low(result.RespuestaLinea) to High(result.RespuestaLinea) do begin
        with result.RespuestaLinea[i] do begin
//          sAux:='factura: ' + IDFactura.NumSerieFacturaEmisor + ' ' + IDFactura.NumSerieFacturaEmisorResumenFin + ' ' + IDFactura.FechaExpedicionFacturaEmisor;
          sAux:='Ok. Factura: '+IDFactura.NumSerieFacturaEmisor +' '+DateTimeToStr(now);
          //si el estado no es correcto, se muestran los errores
          if EstadoRegistro <> EstadoRegistroType(0) then begin
            sAux:='Error no.: ' + InttoStr(CodigoErrorRegistro);
            sAux:=sAux+' '+DescripcionErrorRegistro;
          end;
        end;
        Grid.ValorCeldaPorCampoYFila('RESULTADO',i+1, sAux);
        // Marco tabla y grid principal
        Tabla.FindKey([Grid.ValorCeldaPorCampoYFila('CODIGO',i+1)]);
        Bd.RegistroEdita(Tabla);
        // Resultados:
        if result.RespuestaLinea[i].EstadoRegistro=EstadoRegistroType(0) then begin
          Grid.ValorCeldaPorCampoYFila('RESULTII',i+1, '0');
          Tabla.FieldByName('RESULTII').AsString:='0';
        end else if result.RespuestaLinea[i].EstadoRegistro=EstadoRegistroType(2) then begin
          Grid.ValorCeldaPorCampoYFila('RESULTII',i+1, '1');
          if Tabla.FieldByName('RESULTII').AsString<>'2' then
            Tabla.FieldByName('RESULTII').AsString:='1';
        end else if result.RespuestaLinea[i].EstadoRegistro=EstadoRegistroType(1) then begin
          Grid.ValorCeldaPorCampoYFila('RESULTII',i+1, '2');
          Tabla.FieldByName('RESULTII').AsString:='2';
        end;
        Tabla.FieldByName('CSVII').AsString:=Result.csv;
        Tabla.FieldByName('RESULTADO').AsString:=sAux;
        Bd.RegistroGraba(Tabla);
      end;
    except
      On E:Exception do
        //El proceso de envio dio error
        MessageDlg(E.Message, mtError, [mbOK], 0);
    end;
  finally
    // se eliminan los objetos creados
    ASuministroLRFacturasRecibidas.Free;
    result.Free;
  end;

Saludos

inyu 10-04-2017 16:53:21

Gracias [newtron] pero las emitidas ya las tengo funcionando. Tengo problemas declarando el Detalle y Desglose de las facturas recibidas, y no doy en cómo adaptar esa parte de las emitidas porque no existe el "DesgloseFacturasRecibidas".

newtron 10-04-2017 16:55:26

Cita:

Empezado por inyu (Mensaje 515435)
Gracias [newtron] pero las emitidas ya las tengo funcionando. Tengo problemas declarando el Detalle y Desglose de las facturas recibidas, y no doy en cómo adaptar esa parte de las emitidas porque no existe el "DesgloseFacturasRecibidas".

¿Y qué te he enviado?

inyu 10-04-2017 17:01:18

Cita:

Empezado por newtron (Mensaje 515436)
¿Y qué te he enviado?

Perdona, intepreté mal tu frase "No tengo ningún ejemplo de facturas recibidas pero te paso mi parte del código que las envía", deduje que te referias a que no tenias recibidas y sólo tenias enviadas, y no era eso ><

Ya lo he logrado, gracias por el ejemplo! Tenia un lio mental con la declaración del array de IVAs, no lo estaba haciendo bien.


La franja horaria es GMT +2. Ahora son las 18:22:15.

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