Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #601  
Antiguo 07-04-2017
juabero juabero is offline
Registrado
NULL
 
Registrado: abr 2017
Posts: 6
Poder: 0
juabero Va por buen camino
Ayuda por Favor

Cita:
Empezado por javi_valencia44 Ver Mensaje
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
Responder Con Cita
  #602  
Antiguo 07-04-2017
javi_valencia44 javi_valencia44 is offline
Miembro
 
Registrado: mar 2017
Posts: 50
Poder: 8
javi_valencia44 Va por buen camino
Cita:
Empezado por juabero Ver Mensaje
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?
Responder Con Cita
  #603  
Antiguo 07-04-2017
javi_valencia44 javi_valencia44 is offline
Miembro
 
Registrado: mar 2017
Posts: 50
Poder: 8
javi_valencia44 Va por buen camino
Cita:
Empezado por Virman Ver Mensaje
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>
Responder Con Cita
  #604  
Antiguo 07-04-2017
juabero juabero is offline
Registrado
NULL
 
Registrado: abr 2017
Posts: 6
Poder: 0
juabero Va por buen camino
Cita:
Empezado por javi_valencia44 Ver Mensaje
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
Responder Con Cita
  #605  
Antiguo 07-04-2017
javi_valencia44 javi_valencia44 is offline
Miembro
 
Registrado: mar 2017
Posts: 50
Poder: 8
javi_valencia44 Va por buen camino
Cita:
Empezado por juabero Ver Mensaje
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
Responder Con Cita
  #606  
Antiguo 07-04-2017
LoKeD LoKeD is offline
Registrado
NULL
 
Registrado: abr 2017
Posts: 1
Poder: 0
LoKeD Va por buen camino
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í!
Responder Con Cita
  #607  
Antiguo 08-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
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 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
__________________
Be water my friend.
Responder Con Cita
  #608  
Antiguo 08-04-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
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 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,
Responder Con Cita
  #609  
Antiguo 08-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por CMB Ver Mensaje
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?
__________________
Be water my friend.
Responder Con Cita
  #610  
Antiguo 08-04-2017
CMB CMB is offline
Miembro
 
Registrado: ene 2017
Posts: 349
Poder: 8
CMB Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
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,
Responder Con Cita
  #611  
Antiguo 08-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por CMB Ver Mensaje
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
__________________
Be water my friend.
Responder Con Cita
  #612  
Antiguo 09-04-2017
nuevo1234 nuevo1234 is offline
Miembro
 
Registrado: abr 2017
Posts: 102
Poder: 7
nuevo1234 Va por buen camino
Sii

Parece que Hacienda ya ha colgado los formularios para dar de alta facturas.
Responder Con Cita
  #613  
Antiguo 10-04-2017
PepCat PepCat is offline
Miembro
 
Registrado: mar 2017
Posts: 96
Poder: 8
PepCat Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
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 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.
Responder Con Cita
  #614  
Antiguo 10-04-2017
PepCat PepCat is offline
Miembro
 
Registrado: mar 2017
Posts: 96
Poder: 8
PepCat Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
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 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.
Responder Con Cita
  #615  
Antiguo 10-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por PepCat Ver Mensaje
¿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 Ver Mensaje
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.
__________________
Be water my friend.
Responder Con Cita
  #616  
Antiguo 10-04-2017
inyu inyu is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 48
Poder: 0
inyu Va por buen camino
¿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.
Responder Con Cita
  #617  
Antiguo 10-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por inyu Ver Mensaje
¿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
__________________
Be water my friend.
Responder Con Cita
  #618  
Antiguo 10-04-2017
inyu inyu is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 48
Poder: 0
inyu Va por buen camino
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".
Responder Con Cita
  #619  
Antiguo 10-04-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por inyu Ver Mensaje
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?
__________________
Be water my friend.
Responder Con Cita
  #620  
Antiguo 10-04-2017
inyu inyu is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 48
Poder: 0
inyu Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
¿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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 4149 Hace 5 Días 14:29:27
AEAT envio de datos vía Webservice problemas con WSDL CelsoO Internet 11 09-10-2019 21:03:41
webService Soap de la Administración Digital Española notific@ apicito Internet 3 31-01-2017 12:25:28
Error en Webservice funcion envio de sms webmasterplc Delphi para la web 5 25-07-2013 21:10:29
Problemas con envío de XML a un WebService davidvamo Internet 1 13-02-2007 16:49:20


La franja horaria es GMT +2. Ahora son las 12:02:07.


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