Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2017
Virman Virman is offline
Miembro
 
Registrado: ene 2017
Posts: 67
Poder: 8
Virman Va por buen camino
Facturas emitidas consigo enviarlas correctamente, para el resto me devuelve SIEMPRE este error:

Error en comunicación: Codigo[4124].Error La direccion no se corresponde con el fichero de entrada.

Antes de la versión 0.5 conseguía enviar todos los tipos salvo Facturas Recibidas, pero ahora sólo puedo enviar facturas emitidas.

Ese error se lo da a alguien más? No he encontrado mucha información sobre ese error en la red, por lo que no puedo deciros muchos más.
Responder Con Cita
  #2  
Antiguo 07-02-2017
Virman Virman is offline
Miembro
 
Registrado: ene 2017
Posts: 67
Poder: 8
Virman Va por buen camino
Smile

Cita:
Empezado por Virman Ver Mensaje
Facturas emitidas consigo enviarlas correctamente, para el resto me devuelve SIEMPRE este error:

Error en comunicación: Codigo[4124].Error La direccion no se corresponde con el fichero de entrada.

Antes de la versión 0.5 conseguía enviar todos los tipos salvo Facturas Recibidas, pero ahora sólo puedo enviar facturas emitidas.

Ese error se lo da a alguien más? No he encontrado mucha información sobre ese error en la red, por lo que no puedo deciros muchos más.
Vale, después de buscar he visto que era porque sigue apareciendo en los wsdl la dirección xxxxxxxxxxxx, y aunque la cambié en ellos, en app.config de mi proyecto, no se habían actualizado. Qué ganitas tengo de que pongan una versión estable y sin xxxxxxxxxxxx.
Responder Con Cita
  #3  
Antiguo 08-02-2017
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
Este es mi código para consultar facturas emitidas, colocando sus resultados en una base de datos.


Código:
//    memoErrores.lines.Clear;
    if dbRespuesta.active then dbRespuesta.Active:=false;

    dbRespuesta.FieldDefs.Clear;
    dbRespuesta.FieldDefs.Add('numero',ftstring,30,false);
    dbRespuesta.FieldDefs.Add('fecha',ftDate,0,false);
    dbRespuesta.FieldDefs.Add('cliente',ftstring,100,false);
    dbRespuesta.FieldDefs.Add('nif',ftstring,50,false);
    dbRespuesta.FieldDefs.Add('tipo',ftstring,5,false);
    dbRespuesta.FieldDefs.Add('exenta',ftstring,5,false);
    dbRespuesta.FieldDefs.Add('tipostr',ftstring,50,false);
    dbRespuesta.FieldDefs.Add('regimen',ftstring,5,false);
    dbRespuesta.FieldDefs.Add('operacion',ftstring,200,false);
    dbRespuesta.FieldDefs.Add('terceros',ftstring,5,false);
    dbRespuesta.FieldDefs.Add('total',ftfloat,0,false);
    dbRespuesta.FieldDefs.Add('cobros',ftstring,5,false);
    dbRespuesta.FieldDefs.Add('noexenta',ftstring,5,false);
    dbRespuesta.FieldDefs.Add('estado',ftstring,100,false);
    dbRespuesta.FieldDefs.Add('descripcio',ftstring,300,false);
    for h := 0 to 6 do
    begin
        dbRespuesta.FieldDefs.Add('iva'+inttostr(h),ftFloat,0,false);
        dbRespuesta.FieldDefs.Add('impiva'+inttostr(h),ftFloat,0,false);
        dbRespuesta.FieldDefs.Add('baseimp'+inttostr(h),ftFloat,0,false);
    end;
    dbRespuesta.CreateTable;
    dbRespuesta.Active:=true;

    //***CSY
    CERTIFICADO := BUSCAR_CERTIFICADO(comboBox1.text); //<----- SELECCIONAR CERTIFICADO
    if(CERTIFICADO = nil) then begin
       ShowMessage('No encuento el certificado');
       Exit();
    end;

    emitidas.HTTPWebNode.ClientCertificate.SerialNum := Buscar_Certificado_SERIAL(comboBox1.text);
    //****

  try
     /////////////////////////////////////////////////////////////////////////////
    ////  PRESENTADOR OSEA  -> NOSOTROS    //////////////////////////////////////
    //    se crea el objeto que se va a enviar:
     /////////////////////////////////////////////////////////////////////////////
    aConsultaLRFacturasEmitidas := ConsultaLRFacturasEmitidas.Create;
    aConsultaLRFacturasEmitidas.Cabecera:=CabeceraConsultaSii.Create;
    // DATOS:
    aConsultaLRFacturasEmitidas.Cabecera.IDVersionSii:=VersionSiiType(0);       // 0.1
    aConsultaLRFacturasEmitidas.Cabecera.titular := PersonaFisicaJuridicaUnicaESType.Create;
    aConsultaLRFacturasEmitidas.Cabecera.Titular.NombreRazon:=_PRESENTADOR;          // NOMBRE DEL PRESENTADOR (CUALQUIERA VALE)
    aConsultaLRFacturasEmitidas.Cabecera.Titular.NIF:=_NIF_EMISOR;              // CIF del PRESENTADOR (DEBE COINCIDIR CON EL CERTIFICADO SELECCIONADO)

    aConsultaLRFacturasEmitidas.FiltroConsulta:=LRFiltroEmitidasType.Create;
    aConsultaLRFacturasEmitidas.FiltroConsulta.PeriodoImpositivo:=PeriodoImpositivo.Create;
    aConsultaLRFacturasEmitidas.FiltroConsulta.PeriodoImpositivo.Ejercicio:=edit2.text;
    aConsultaLRFacturasEmitidas.FiltroConsulta.PeriodoImpositivo.Periodo:=TipoPeriodoType( comboBox2.itemIndex  );

    try
      // se hace la llamada a la funcion suministrada por el WS
      result := GetsiiSOAP(true,'',emitidas).ConsultaLRFacturasEmitidas(aConsultaLRFacturasEmitidas);
      memoComs.Lines.Add( getEnumName(typeInfo(ResultadoConsultaType), ord(result.resultadoConsulta) ) );

      //mostrar los resultados devueltos por la llamada
      for i := low(result.RegistroRespuestaConsultaLRFacturasEmitidas) to High(result.RegistroRespuestaConsultaLRFacturasEmitidas) do
      begin
          _noexenta:='';
          _numero:='';
          _fechaStr:='';
          _tipo:='';
          _tipoStr:='';
          _regimen:='';
          _operacion:='';
          _exenta:='';
          _terceros:='';
          _cliente:='';
          _nif:='';
          _tipodesglose:='';
          _cobros:='';
          _estado:='';
          _estadoFactura:='';
          _ImporteTotal:=0;
          _descripcion:='';

        with result.RegistroRespuestaConsultaLRFacturasEmitidas[i] do
        begin
            try
                if result.RegistroRespuestaConsultaLRFacturasEmitidas[i].datosfacturaemitida.tipodesglose.desglosetipooperacion<>nil then
                  _exenta:=GetEnumName( TypeInfo(CausaExencionType),ord(DatosFacturaEmitida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.exenta.CausaExencion));
            except
            end;

            _tipo:=GetEnumName(TypeInfo(clavetipoFacturaType), Ord(DatosFacturaEmitida.TipoFactura));
            _tipoSTR:=tipoSTR( DatosFacturaEmitida.TipoFactura );
            _regimen:=GetEnumName( TypeInfo(IdOperacionesTrascendenciaTributariaType),  Ord(DatosFacturaEmitida.ClaveRegimenEspecialOTrascendencia) );

            _ImporteTotal:=strToFloat( SII_Numero( DatosFacturaEmitida.ImporteTotal ) );

            _operacion:=DatosFacturaEmitida.DescripcionOperacion;
            _terceros:=GetEnumName(typeInfo( EmitidaPorTercerosType ), ord( DatosFacturaEmitida.EmitidaPorTerceros ) );
            _numero:=IDFactura.NumSerieFacturaEmisor;

            try
              if DatosFacturaEmitida.contraparte<>nil then    // POR SI NO LLEVA CONTRAPARTE:
              begin
                _cliente:=DatosFacturaEmitida.contraparte.NombreRazon;
                _NIF:=DatosFacturaEmitida.contraparte.NIF;

                if DatosFacturaEmitida.TipoDesglose.DesgloseFactura<>nil then
                begin
                  _tipodesglose:=GetEnumName( typeInfo(TipoOperacionSujetaNoExentaType), ord(DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.TipoNoExenta) );
                  _noexenta:=getEnumName(typeInfo( TipoOperacionSujetaNoExentaType ) ,  ord(DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.TipoNoExenta ) );
                end;
                if DatosFacturaEmitida.contraparte.IDOtro<>nil then
                begin
                    if _NIF='' then
                        _NIF:=DatosFacturaEmitida.contraparte.IDOtro.ID;
                end;
              end
              else                                         // POSIBLE ERROR:
              BEGIN
                  _cliente:='SIN CLIENTE';
                   MemoComs.lines.add('factura: ' + IDFactura.NumSerieFacturaEmisor + ' SIN CLIENTE');
              end;

              if DatosFacturaEmitida.TipoDesglose.DesgloseFactura<>NIL then
              begin
                for h := low(DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIVA) to high( DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIVA) do
                begin
                    with DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIVA[h] do
                    begin
                          base[h]:= strTofloat( SII_numero( baseImponible ) );
                          tipo[h]:=strTofloat(SII_numero( tipoImpositivo ) );
                          cuota[h]:=strTofloat(SII_numero( cuotarepercutida ) );
                    end;
                end;
              end;
              _cobros:=getEnumName( typeInfo(FacturaARType),   ord(DatosFacturaEmitida.Cobros) );

              _fechaStr:=copy(IDFactura.FechaExpedicionFacturaEmisor,1,10);
              _fechaStr:=stringReplace(_fechaStr,'-','/',[rfReplaceAll]);
              _fecha:=strTodate( _fechaStr );
              _estado:=estadoFactura.EstadoRegistro;
              _descripcion:=DatosFacturaEmitida.DescripcionOperacion;

            MemoComs.lines.add('factura: ' + IDFactura.NumSerieFacturaEmisor + ' ' + IDFactura.NumSerieFacturaEmisorResumenFin + ' ' + IDFactura.FechaExpedicionFacturaEmisor);


            // guardar en la base de datos:
            dbRespuesta.Insert;
            dbRespuesta.fieldbyName('numero').Text:=_numero;
            dbRespuesta.fieldbyName('fecha').asdatetime:=_fecha;
            dbRespuesta.fieldbyName('cliente').Text:=_cliente;
            dbRespuesta.fieldbyName('nif').Text:=_nif;
            dbRespuesta.fieldbyName('tipo').Text:=_tipo;
            dbRespuesta.fieldbyName('tipostr').Text:=_tipostr;
            dbRespuesta.fieldbyName('exenta').Text:=_exenta;
            dbRespuesta.fieldbyName('regimen').Text:=_regimen;
            dbRespuesta.fieldbyName('operacion').Text:=_operacion;
            dbRespuesta.fieldbyName('terceros').Text:=_terceros;
            dbRespuesta.fieldbyName('total').asfloat:=_ImporteTotal;
            dbRespuesta.fieldbyName('cobros').text:=_cobros;
            dbRespuesta.fieldbyName('fecha').asdatetime:=_fecha;
            dbRespuesta.fieldbyName('estado').text:=_estado;
            dbRespuesta.fieldbyName('descripcio').text:=_descripcion;
            dbRespuesta.fieldbyName('Noexenta').text:=_noexenta;

            if DatosFacturaEmitida.TipoDesglose.DesgloseFactura<>NIL then
            begin
              for h := low(DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIVA) to high( DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIVA) do
              begin
                  dbRespuesta.fieldbyName('iva'+inttostr(h)).asfloat:=tipo[h];
                  dbRespuesta.fieldbyName('impiva'+inttostr(h)).asfloat:=cuota[h];
                  dbRespuesta.fieldbyName('baseimp'+inttostr(h)).asfloat:=base[h];
              end;
            end;

            dbRespuesta.Post;
        except
            On E:Exception do
            begin
              MemoErrores.lines.Add(_numero);
              MemoErrores.lines.Add(E.Message);
              MemoErrores.lines.Add('--------------------');
            end;

        end;


        end;
      end;
    except
      On E:Exception do
        //El proceso de envio dio error
        MemoErrores.lines.Add(E.Message);
    end;
  finally
    // se eliminan los objetos creados
    aConsultaLRFacturasEmitidas.Free;
    result.Free;

    dbRespuesta.Active:=true;
  end;
end;
Y Ahora me faltaria:

* Facturas recibidas intracomunitarias y autofactura....
* Factura a Canarias?

Aunque lo estoy mirando ahora, ¿Por favor, podeis postear algún ejemplo? ...

Saludos !
Responder Con Cita
  #4  
Antiguo 08-02-2017
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
Esta claro que hay facturas rectificativas por diferencias. Aunque no lo veo muy claro.


Pero ... ¿y los abonos? ¿Cómo se gestionan?

Saludos !
Responder Con Cita
  #5  
Antiguo 08-02-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por seccion_31 Ver Mensaje
Esta claro que hay facturas rectificativas por diferencias. Aunque no lo veo muy claro.


Pero ... ¿y los abonos? ¿Cómo se gestionan?

Saludos !
Yo entiendo que los abonos son facturas emitidas pero en negativo. Yo he probado y se las "traga" sin problemas.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #6  
Antiguo 08-02-2017
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
si nos fijamos en el ejemplo suministrador por la AEAT:

Código:
<sii:Exenta>
                           <sii:CausaExencion>E4</sii:CausaExencion>
                           <sii:BaseImponible>-50</sii:BaseImponible>
                        </sii:Exenta>
                        <sii:NoExenta>
                           <sii:TipoNoExenta>S2</sii:TipoNoExenta>
                           <sii:DesgloseIVA>
                              <sii:DetalleIVA>
                                 <sii:TipoImpositivo>10</sii:TipoImpositivo>
                                 <sii:BaseImponible>-45</sii:BaseImponible>
                                 <sii:CuotaRepercutida>-5</sii:CuotaRepercutida>
de la factura rectificativa.

si miramos, la línea señalada en negrita, eso NO es la base imponible. (o es la base Imponible de la factura rectificada?) (pero entonces que hace en negativo?)

¿alguna opinión?
Responder Con Cita
  #7  
Antiguo 08-02-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por seccion_31 Ver Mensaje
si nos fijamos en el ejemplo suministrador por la AEAT:

Código:
<sii:Exenta>
                           <sii:CausaExencion>E4</sii:CausaExencion>
                           <sii:BaseImponible>-50</sii:BaseImponible>
                        </sii:Exenta>
                        <sii:NoExenta>
                           <sii:TipoNoExenta>S2</sii:TipoNoExenta>
                           <sii:DesgloseIVA>
                              <sii:DetalleIVA>
                                 <sii:TipoImpositivo>10</sii:TipoImpositivo>
                                 <sii:BaseImponible>-45</sii:BaseImponible>
                                 <sii:CuotaRepercutida>-5</sii:CuotaRepercutida>
de la factura rectificativa.

si miramos, la línea señalada en negrita, eso NO es la base imponible. (o es la base Imponible de la factura rectificada?) (pero entonces que hace en negativo?)

¿alguna opinión?
A ver... yo entiendo que en este caso una factura rectificativa es una factura que minora el importe de otra factura a la que imagino que habrá que hacer referencia. En ese caso lo que está indicando son los importes que restan para rectificar la factura original.
__________________
Be water my friend.
Responder Con Cita
  #8  
Antiguo 08-02-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Hola de nuevo.

Hasta ahora solo había probado con facturas emitidas sin grandes problemas. Estoy intentando implementar en la misma unidad facturas recibidas y estoy teniendo problemas. ¿Hay que importar todos los ficheros wsdl de los distintos tipos de facturas? porque a mi se me hace un lío al hacer la llamada de factura emitida o recibida si los tengo en la misma unidad.

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

Hasta ahora solo había probado con facturas emitidas sin grandes problemas. Estoy intentando implementar en la misma unidad facturas recibidas y estoy teniendo problemas. ¿Hay que importar todos los ficheros wsdl de los distintos tipos de facturas? porque a mi se me hace un lío al hacer la llamada de factura emitida o recibida si los tengo en la misma unidad.

Saludos
Por eso preguntaba si al hacer la importación de los WSdl lo haceis todos en la misma carpeta o encarpetas separadas, ya que si luego lo utilizas todos dentro de la misma unit hay que cambiar algunas cosas en los ficheros generados por que genera funciones y clases con el mismo nombre por ejemplo la función GetsiiSOAP, y cada vez que saquen una version nueva volver a hacer estos cambios.
Responder Con Cita
  #10  
Antiguo 06-04-2017
Virman Virman is offline
Miembro
 
Registrado: ene 2017
Posts: 67
Poder: 8
Virman Va por buen camino
Buenas. Alguien sabe cómo convertir el tipo FacturaRespuestaExpedidaType en FacturaExpedidaType? Estoy comprobando la existencia de una factura y, aunque la llamada al método ConsultaLRFacturasEmitidas me devuelve ResultadoConsultaType.ConDatos, me gustaría poder hacer un Equals entre la factura nueva que intento introducir y la existente, para saber si son completamente iguales o hay algún campo que varía y, si varía algún campo de ella, subirla como A1.
Responder Con Cita
  #11  
Antiguo 06-04-2017
vboloradito vboloradito is offline
Miembro
NULL
 
Registrado: mar 2017
Posts: 107
Poder: 8
vboloradito Va por buen camino
vamos a empezar con el desarrollo. ¿Alguien me puede decir si ya lo acabado y cuanto tiempo le ha llevado por ejemplo el codigo para solo enviar las facturas emitidas y recoger la respuesta en una tabla?.
Responder Con Cita
  #12  
Antiguo 13-06-2017
didou didou is offline
Miembro
 
Registrado: may 2017
Posts: 59
Poder: 8
didou Va por buen camino
Entorno De Pruebas Sii

Buenos días, esta muy bien el foro la verdad y gracias a todos los que habéis aportado vuestro granito de arena para que esto avance y sea menos travesia del desierto, yo ya lo voy consiguiendo gracias a vuestra ayuda, estoy en el punto de comenzar a probar el envio y mi duda es de como hay que llamar a la función GetSiiSOAP y con que parámetros para enviar al entorno de pruebas de la Agencia Tributaria, trabajo con DelphiXe y si me podeis ayudar con un ejemplo de fuente se agradeceria mucho, después para volver a enviar al entorno real de producción, que hay que hacer?

Gracias.
Responder Con Cita
  #13  
Antiguo 13-06-2017
Avatar de mrobles
mrobles mrobles is offline
Miembro
NULL
 
Registrado: may 2017
Posts: 115
Poder: 8
mrobles Va por buen camino
Cita:
Empezado por didou Ver Mensaje
Buenos días, esta muy bien el foro la verdad y gracias a todos los que habéis aportado vuestro granito de arena para que esto avance y sea menos travesia del desierto, yo ya lo voy consiguiendo gracias a vuestra ayuda, estoy en el punto de comenzar a probar el envio y mi duda es de como hay que llamar a la función GetSiiSOAP y con que parámetros para enviar al entorno de pruebas de la Agencia Tributaria, trabajo con DelphiXe y si me podeis ayudar con un ejemplo de fuente se agradeceria mucho, después para volver a enviar al entorno real de producción, que hay que hacer?

Gracias.
hasta el 15 no están los endpoint de produccion
Responder Con Cita
Respuesta



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

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

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


La franja horaria es GMT +2. Ahora son las 01:01:36.


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