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
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 112
Poder: 8
seccion_31 Va por buen camino
a esta hora y reimportando los wdsl y tal... ya puedo enviar facturas emitidas, recibidas, y consultar.

sigue dando el error:

Se requiere un certificado para completar la autenticación de cliente - URL:https://www7.aeat.es/wlpl/SSII-FACT/...iiFactFEV1SOAP - SOAPAction:""

si pasas un monton. No pasa ni una del paquete. (confirmado porque luego consulto).


una pregunta tonta... en el numero de factura pone "numeroserie" si tienes serie en tus facturas entiendo que debería ser 9999999X ¿no?
Responder Con Cita
  #2  
Antiguo 07-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
a esta hora y reimportando los wdsl y tal... ya puedo enviar facturas emitidas, recibidas, y consultar.
¿Sería posible un ejemplo operativo? No tengo yo muy claro lo de la consulta.

Cita:
Empezado por seccion_31 Ver Mensaje
una pregunta tonta... en el numero de factura pone "numeroserie" si tienes serie en tus facturas entiendo que debería ser 9999999X ¿no?
Yo entiendo también que hay que poner el número de factura completo con su serie.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 07-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 seccion_31 Ver Mensaje


una pregunta tonta... en el numero de factura pone "numeroserie" si tienes serie en tus facturas entiendo que debería ser 9999999X ¿no?
Yo creo que se refiere al numero identificador unico que tiene esa factura. Es decir si tienes serie la tienes que poner 99999999X o X999999, etc es decir como se identifique esa factura en la empresa.


Una Pregunta. A la hora de añadir los wsdl al proyecto los habeis añadido todos desde la misma carpeta? o habéis añadido cada uno desde una carpeta distinta? es decir las de emitidas por un lado, las recibidas por otro, etc...

A mi tambien me da error si envío muchas facturas.
Un Saludo.
Responder Con Cita
  #4  
Antiguo 07-02-2017
Virman Virman is offline
Miembro
 
Registrado: ene 2017
Posts: 67
Poder: 8
Virman Va por buen camino
He reimportado los wsdl y ahora me dice:

ex.Message = "Debe establecer la propiedad Path para llamar al método Send."

He importado los servicios web de los 7 suministros que hay (SuministroBienesInversion, SuministroCobrosEmitidas, SuministroCobrosMetalico, SuministroFactEmitidas, SuministroFactRecibidas, SuministroOpIntracomunitarias, SuministroPagosRecibidas). Pero esta propiedad Path es la primera vez que la veo, a alguno le ha salido este mensaje de error al intentar enviar?

Un saludo.

Me autorespondo, me faltaba reeditar las referencias de los SiiService de cada suministro.
Responder Con Cita
  #5  
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
  #6  
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
  #7  
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
  #8  
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
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 05:54:05.


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