Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Facturas electrónicas [España] (https://www.clubdelphi.com/foros/showthread.php?t=89295)

_Io 07-05-2025 21:17:01

Cita:

Empezado por _Io (Mensaje 564164)
Buenas tardes.

¿Podría poner alguien la cabecera firmada de en envío a Face que funcione bien?

Es para tener una referencia buena, me estoy peleando con las ssb y quiere tener claro lo que tengo que buscar.

Muchas Gracias.

Me respondo, al final lo conseguí.

Esta es una consulta de factura operativa:

Código:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="">
<wsu:Created>2025-05-07T21:06:20.434Z</wsu:Created>
<wsu:Expires>2025-05-07T21:11:20.434Z</wsu:Expires>
</wsu:Timestamp>
<wsse:BinarySecurityToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" wsu:Id="CertId-000001">MIIHozCCBougAwIBAgIQeJ9MrQ87SXVlqQbhybS7zTANBgkqhkiG9w0BAQsFADBLMQswCQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRkwFwYDVQQDDBBBQyBGTk1UIFVzdWFyaW9zMB4XDTI0MDExODExMDkyMVoXDTI4MDExODExMDkyMVowgYcxCzAJBgNVBAYTAkVTMRgwFgYDVQQFEw9JRENFUy03NTc4MjE0MVExDzANBgNVBCoMBlJBRkFFTDEcMBoGA1UEBAwTTUFSVElOIE5Jw5FPIE1FRElOQTEvMC0GA1UEAwwmTUFSVElOIE5Jw5FPIE1FRElOQSBSQUZBRUwgLSA3NTc4MjE0MVEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7fGrEVpaFhksE2QA/iVRP0z8bkSPQnunUGHq7ztbN5a1QmTGwzoAP6sk/XHU50SdSTKdrx1Jzg2GVTIXOarMhiWAIJTqKBhUM2V+nv+jLcpqUVRbviyKI5Bf1MeTQjC/g5a1lW/3kJSrfqxmM2TBTIhHPb28mbOINJFXB+4cRWdlFObImpvRqpieOtPOEnHaZt/lE1A5G5H8pv7lKUIQy7KDNDmOg1ftT9p0vzgAkki+hWoqBTcsi2ulbyz6GqEkUrODA1y2+GeyHF8Rz1+Izgkog55LQeUHXLAQ3gF1m/WJBOrzn/tYpCzQq95dj1szbrAWA7yqzr727cSIIjR2LAgMBAAGjggREMIIEQDByBgNVHREEazBppGcwZTEYMBYGCSsGAQQBrGYBBAwJNzU3ODIxNDFRMRUwEwYJKwYBBAGsZgEDDAZNRURJTkExGzAZBgkrBgEEAaxmAQIMDE1BUlRJTiBOScORTzEVMBMGCSsGAQQBrGYBAQwGUkFGQUVMMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgXgMCoGA1UdJQQjMCEGCCsGAQUFBwMCBgorBgEEAYI3CgMMBgkqhkiG9y8BAQUwHQYDVR0OBBYEFEkibha90cfz+eOAImtbRdjTqWacMB8GA1UdIwQYMBaAFLHUT8QjefpEBQnG6znP6DWwuCBkMIGCBggrBgEFBQcBAQR2MHQwPQYIKwYBBQUHMAGGMWh0dHA6Ly9vY3NwdXN1LmNlcnQuZm5tdC5lcy9vY3NwdXN1L09jc3BSZXNwb25kZXIwMwYIKwYBBQUHMAKGJ2h0dHA6Ly93d3cuY2VydC5mbm10LmVzL2NlcnRzL0FDVVNVLmNydDCCARUGA1UdIASCAQwwggEIMIH6BgorBgEEAaxmAwoBMIHrMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzCBvQYIKwYBBQUHAgIwgbAMga1DZXJ0aWZpY2FkbyBjdWFsaWZpY2FkbyBkZSBmaXJtYSBlbGVjdHLDs25pY2EuIFN1amV0byBhIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZXhwdWVzdGFzIGVuIGxhIERQQyBkZSBsYSBGTk1ULVJDTSBjb24gTklGOiBRMjgyNjAwNC1KIChDL0pvcmdlIEp1YW4gMTA2LTI4MDA5LU1hZHJpZC1Fc3Bhw7FhKTAJBgcEAIvsQAEAMIG6BggrBgEFBQcBAwSBrTCBqjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYBMHwGBgQAjkYBBTByMDcWMWh0dHBzOi8vd3d3LmNlcnQuZm5tdC5lcy9wZHMvUERTQUNVc3Vhcmlvc19lcy5wZGYTAmVzMDcWMWh0dHBzOi8vd3d3LmNlcnQuZm5tdC5lcy9wZHMvUERTQUNVc3Vhcmlvc19lbi5wZGYTAmVuMIHkBgNVHR8EgdwwgdkwgdaggdOggdCGgZ5sZGFwOi8vbGRhcHVzdS5jZXJ0LmZubXQuZXMvY249Q1JMVTY2MCxjbj1BQyUyMEZOTVQlMjBVc3VhcmlvcyxvdT1DRVJFUyxvPUZOTVQtUkNNLGM9RVM/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5hcnk/YmFzZT9vYmplY3RjbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludIYtaHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvY3Jsc2FjdXN1L0NSTFU2NjAuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA5+WD+8DswpLDEfcXO8aZX+t8t/LY/NrILXviYSsvMQAWgzTdOq7hrWTAuk1F+XuP1Gx5oYahS3cAYpnUuE9MX2iHV/p1lc1asaFHvyrwc0K9KteNITJgVMrboY/N/5GvRmOjuvlNAHXPlG+HK8Yf3HDii0YA+a7amqktWL4TJuMue2vwjClKMqEeQXrRIgHGmqxBWwZBZhREinhA2irwHAOAs8VCjZRCbtZS7oBeFqJ+7lAA34FW1V4zj/VgzFFC84t7DmBI7PNEWS8QoCn6L86OhUl7XKV44/mZ+j9luhRex6AcbtF5uanht3oU+iKO6jUx/nXfcOeCBqJMh5HTR</wsse:BinarySecurityToken>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#id-BodyREF">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>jsJHpwdckjOO6v9SHSDz4yTCoqzvsaxsrvCVDrVdj8Q=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue> ujhcfQcRD4BZXBFtrz4CnS1aIx6kemlAFVVTnOSVkxM7TEjwwhWHhN61uxfakiPu 0J/CsAJrt2LZ3StR4nGT/YJuZnhHAVW8+D1kD2Yf2bYJLpHdhJnRlQDMWAXy+md5 jPWRoRT+uXrw/nSF/NKm3PrJ4NSytIcGY5UNGBk0JGFfPb+Hzed9geIXrWyzNg/D znJJ9lyUjhWB5kcK9S8Wk0LtlSQxwa5yMX1n+Y/BCcRtI1ooItBDLKNYxkdaPMup XogVxomDoamqSSVddJWH9Doiht4/Y8fY5NPAMsqjA6Pa58uyV181cI2XZ/PZvOxF 8EtIyGiA1ELASkGUtraFcw== </ds:SignatureValue>
<ds:KeyInfo Id="KeyId-000002">
<wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="STRId-000003">
<wsse:Reference URI="#CertId-000001" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body xmlns:NS1="https://webservice.face.gob.es" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" wsu:Id="id-BodyREF">
<NS1:consultarFactura>
<numeroRegistro xsi:type="xsd:string">REGAGE25e000xxxxxxxx</numeroRegistro>
</NS1:consultarFactura>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Y este es el código:

Código:

function c_face_soap_sig.FirmaSoap_int(var aStream :TStream):boolean;
var
  FSOAPSigner: TsbxSOAPSigner;
  Utils :TsbxUtils;
begin

  fUltimoError:='';

  try

    // Se crea el componente utils contiene
    // muchas utilidades, sería conveiente"
    // mirar unit TsbxUtils"
    Utils:=TsbxUtils.Create(nil);

    FSOAPSigner := TsbxSOAPSigner.Create(nil);
    try

      // Se carga certificado firma
      cargaCertificado(FSOAPSigner);

      // Se toma los datos generados del evento
      // OnBefore del componente htpPrio
      FSOAPSigner.InputBytes := StreamToBytes(aStream);

      // Configuración básica
      FSOAPSigner.Config('XMLFormatting=auto');

      // Configuración necesaria en ws-security
      FSOAPSigner.Config('SecurityHeaderMustUnderstand=1');

      FSOAPSigner.Config('BinarySecurityTokenId=CertId-000001');
      FSOAPSigner.Config('KeyInfoID=KeyId-000002');
      FSOAPSigner.Config('SecurityTokenReferenceID=STRId-000003');

      // Marca de tiempo, muestra la hora local
      // referenciada al huso horio "Z", no sé
      // si esta bien, españa esta en huso "A"
      // y en veranos huso "B"
      FSOAPSigner.Config('WSUTimestampCreated=' + Utils.DateToString(Now()));
      FSOAPSigner.Config('WSUTimestampExpires=' + Utils.DateToString(IncMinute(Now(), 5)));
      FSOAPSigner.Config('WSUTimestampCreatedFormat=YYYY-MM-DDThh:mm:ss.sssTZD');
      FSOAPSigner.Config('WSUTimestampExpiresFormat=YYYY-MM-DDThh:mm:ss.sssTZD');


      // Creamos la referencia al Body del mensaje,
      // asignandole un URI, se asigna false a AutoGenerateId
      FSOAPSigner.AddBodyReference('id-BodyREF',false);

      // Asignamos los datos necesarios a la referencia
      // del elemento a ser firmado "Body"
      FSOAPSigner.References[0].HashAlgorithm:='SHA256';
      FSOAPSigner.References[0].CanonicalizationMethod:=cxcmExclCanon;

      // Asignamos la configuración de la firma

      // sstWSSSignature =>  (WS-Security, WSS) signature
      // SHA1 => /xmldsig#sha1
      // cxcmExclCanon => /xml-exc-c14n#
      // aslGeneric => this value applicable to XAdES
      //              signature only  andcorresponds to
      //              XML-DSIG signature
      FSOAPSigner.NewSignature.SignatureType := sstWSSSignature;
      FSOAPSigner.NewSignature.HashAlgorithm := 'SHA1';
      FSOAPSigner.NewSignature.CanonicalizationMethod:=cxcmExclCanon;
      FSOAPSigner.NewSignature.Level:=aslGeneric;

      // Certificado en BinarySecurityToken
      FSOAPSigner.EmbedCertificateMethod := cwecInBinarySecurityToken;

      // Siempre se crea SecurityHeader
      FSOAPSigner.SecurityHeaderIndex:=-1;

      FSOAPSigner.Sign();

      BytesToStream(FSOAPSigner.OutputBytes,aStream);

    except

      on e:exception do fUltimoError:=e.ToString;

    end;


  finally

    FreeAndNil(Utils);
    FreeAndNil(FSOAPSigner);

  end;

  result:=fUltimoError='';

end;

Se utilizan los componentes sbb.

Saludos.

_Io 09-05-2025 09:23:52

Buenos Días.

Haciendo consulta de una factura, la respuesta que tengo es:

En el entorno de pruebas:
Cita:

No existe ningún usuario asociado al certificado que firma la petición

En el entorno de producción:
Cita:

Resultado:
= 316
= La factura ha sido presentada por el portal web, no puede consultar el estado de la factura por servicios web
= 681dac99169e4
¿Hay que darse de alta de forma independiente en el entorno de pruebas?

¿Cómo lo debería hacer?

Muchas Gracias.

sglorka 20-06-2025 16:10:13

Buenas tardes
Alguien sabe como se codifica en formato facturae para las administraciones públicas la subvención de 20céntimos de combustible ¿ Utilizáis el nodo Subsidies ?
Gracias

ermendalenda 20-06-2025 20:03:07

Cita:

Empezado por sglorka (Mensaje 565742)
Buenas tardes
Alguien sabe como se codifica en formato facturae para las administraciones públicas la subvención de 20céntimos de combustible ¿ Utilizáis el nodo Subsidies ?
Gracias

No he visto ese nodo en facturae, te propongo descuento a nivel de línea o global indicando en la razon el artículo del rd
Ejemplo:
Código PHP:

<?xml version="1.0" encoding="UTF-8"?>
<Facturae xmlns="http://www.facturae.es/Facturae/2014/v3.2.2/Facturae"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.facturae.es/Facturae/2014/v3.2.2/Facturae 
                              http://www.facturae.es/Facturae/2014/v3.2.2/Facturaev3.2.2.xsd">
  <FileHeader>
    <SchemaVersion>3.2.2</SchemaVersion>
    <Modality>I</Modality>
    <InvoiceIssuerType>EM</InvoiceIssuerType>
    <Batch>
      <BatchIdentifier>F0001</BatchIdentifier>
      <InvoicesCount>1</InvoicesCount>
      <TotalInvoicesAmount>
        <TotalAmount>193.60</TotalAmount>
      </TotalInvoicesAmount>
      <TotalOutstandingAmount>
        <TotalAmount>193.60</TotalAmount>
      </TotalOutstandingAmount>
      <TotalExecutableAmount>
        <TotalAmount>193.60</TotalAmount>
      </TotalExecutableAmount>
    </Batch>
  </FileHeader>

  <Parties>
    <SellerParty>
      <TaxIdentification>
        <PersonTypeCode>J</PersonTypeCode>
        <ResidenceTypeCode>R</ResidenceTypeCode>
        <TaxIdentificationNumber>B12345678</TaxIdentificationNumber>
      </TaxIdentification>
      <LegalEntity>
        <CorporateName>Gasóleos Ejemplo S.L.</CorporateName>
        <AddressInSpain>
          <Address>Avda. Ejemplo 123</Address>
          <PostCode>28080</PostCode>
          <Town>Madrid</Town>
          <Province>Madrid</Province>
          <CountryCode>ESP</CountryCode>
        </AddressInSpain>
      </LegalEntity>
    </SellerParty>

    <BuyerParty>
      <TaxIdentification>
        <PersonTypeCode>J</PersonTypeCode>
        <ResidenceTypeCode>R</ResidenceTypeCode>
        <TaxIdentificationNumber>S1234567C</TaxIdentificationNumber>
      </TaxIdentification>
      <LegalEntity>
        <CorporateName>Ayuntamiento de Ejemplo</CorporateName>
        <AddressInSpain>
          <Address>Plaza Mayor 1</Address>
          <PostCode>28080</PostCode>
          <Town>Madrid</Town>
          <Province>Madrid</Province>
          <CountryCode>ESP</CountryCode>
        </AddressInSpain>
        <AdministrativeCentre>
          <CentreCode>DIR3CODE123</CentreCode>
          <RoleTypeCode>01</RoleTypeCode>
          <Name>Unidad de Compras</Name>
          <AddressInSpain>
            <Address>Plaza Mayor 1</Address>
            <PostCode>28080</PostCode>
            <Town>Madrid</Town>
            <Province>Madrid</Province>
            <CountryCode>ESP</CountryCode>
          </AddressInSpain>
        </AdministrativeCentre>
      </LegalEntity>
    </BuyerParty>
  </Parties>

  <Invoices>
    <Invoice>
      <InvoiceHeader>
        <InvoiceNumber>F0001</InvoiceNumber>
        <InvoiceSeriesCode>A</InvoiceSeriesCode>
        <InvoiceDocumentType>FC</InvoiceDocumentType>
        <InvoiceClass>OO</InvoiceClass>
      </InvoiceHeader>
      <InvoiceIssueData>
        <IssueDate>2022-09-30</IssueDate>
        <InvoiceCurrencyCode>EUR</InvoiceCurrencyCode>
      </InvoiceIssueData>

      <TaxesOutputs>
        <Tax>
          <TaxTypeCode>01</TaxTypeCode> <!-- IVA -->
          <TaxRate>21.00</TaxRate>
          <TaxableBase>
            <TotalAmount>160.00</TotalAmount>
          </TaxableBase>
          <TaxAmount>
            <TotalAmount>33.60</TotalAmount>
          </TaxAmount>
        </Tax>
      </TaxesOutputs>

      <InvoiceTotals>
        <TotalGrossAmount>180.00</TotalGrossAmount>
        <GeneralDiscounts>
          <Discount>
            <DiscountReason>Bonificación estatal por combustible - RDL 6/2022</DiscountReason>
            <DiscountRate>0.00</DiscountRate>
            <DiscountAmount>20.00</DiscountAmount>
          </Discount>
        </GeneralDiscounts>
        <TotalGeneralDiscounts>20.00</TotalGeneralDiscounts>
        <TotalGrossAmountBeforeTaxes>160.00</TotalGrossAmountBeforeTaxes>
        <TotalTaxOutputs>33.60</TotalTaxOutputs>
        <InvoiceTotal>193.60</InvoiceTotal>
        <TotalOutstandingAmount>193.60</TotalOutstandingAmount>
        <TotalExecutableAmount>193.60</TotalExecutableAmount>
      </InvoiceTotals>

      <Items>
        <InvoiceLine>
          <ItemDescription>Gasóleo A</ItemDescription>
          <Quantity>100.00</Quantity>
          <UnitOfMeasure>Litro</UnitOfMeasure>
          <UnitPriceWithoutTax>1.80</UnitPriceWithoutTax>
          <DiscountsAndRebates>
            <Discount>
              <DiscountReason>Bonificación estatal por combustible - RDL 6/2022</DiscountReason>
              <DiscountRate>0.00</DiscountRate>
              <DiscountAmount>20.00</DiscountAmount>
            </Discount>
          </DiscountsAndRebates>
          <GrossAmount>180.00</GrossAmount>
          <TaxesOutputs>
            <Tax>
              <TaxTypeCode>01</TaxTypeCode>
              <TaxRate>21.00</TaxRate>
              <TaxableBase>
                <TotalAmount>160.00</TotalAmount>
              </TaxableBase>
              <TaxAmount>
                <TotalAmount>33.60</TotalAmount>
              </TaxAmount>
            </Tax>
          </TaxesOutputs>
        </InvoiceLine>
      </Items>
    </Invoice>
  </Invoices>
</Facturae>


sglorka 21-06-2025 09:07:01

Cita:

Empezado por ermendalenda (Mensaje 565751)
No he visto ese nodo en facturae, te propongo descuento a nivel de línea o global indicando en la razon el artículo del rd
Ejemplo:
Código PHP:

<?xml version="1.0" encoding="UTF-8"?>
<Facturae xmlns="http://www.facturae.es/Facturae/2014/v3.2.2/Facturae"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.facturae.es/Facturae/2014/v3.2.2/Facturae 
                              http://www.facturae.es/Facturae/2014/v3.2.2/Facturaev3.2.2.xsd">
  <FileHeader>
    <SchemaVersion>3.2.2</SchemaVersion>
    <Modality>I</Modality>
    <InvoiceIssuerType>EM</InvoiceIssuerType>
    <Batch>
      <BatchIdentifier>F0001</BatchIdentifier>
      <InvoicesCount>1</InvoicesCount>
      <TotalInvoicesAmount>
        <TotalAmount>193.60</TotalAmount>
      </TotalInvoicesAmount>
      <TotalOutstandingAmount>
        <TotalAmount>193.60</TotalAmount>
      </TotalOutstandingAmount>
      <TotalExecutableAmount>
        <TotalAmount>193.60</TotalAmount>
      </TotalExecutableAmount>
    </Batch>
  </FileHeader>

  <Parties>
    <SellerParty>
      <TaxIdentification>
        <PersonTypeCode>J</PersonTypeCode>
        <ResidenceTypeCode>R</ResidenceTypeCode>
        <TaxIdentificationNumber>B12345678</TaxIdentificationNumber>
      </TaxIdentification>
      <LegalEntity>
        <CorporateName>Gasóleos Ejemplo S.L.</CorporateName>
        <AddressInSpain>
          <Address>Avda. Ejemplo 123</Address>
          <PostCode>28080</PostCode>
          <Town>Madrid</Town>
          <Province>Madrid</Province>
          <CountryCode>ESP</CountryCode>
        </AddressInSpain>
      </LegalEntity>
    </SellerParty>

    <BuyerParty>
      <TaxIdentification>
        <PersonTypeCode>J</PersonTypeCode>
        <ResidenceTypeCode>R</ResidenceTypeCode>
        <TaxIdentificationNumber>S1234567C</TaxIdentificationNumber>
      </TaxIdentification>
      <LegalEntity>
        <CorporateName>Ayuntamiento de Ejemplo</CorporateName>
        <AddressInSpain>
          <Address>Plaza Mayor 1</Address>
          <PostCode>28080</PostCode>
          <Town>Madrid</Town>
          <Province>Madrid</Province>
          <CountryCode>ESP</CountryCode>
        </AddressInSpain>
        <AdministrativeCentre>
          <CentreCode>DIR3CODE123</CentreCode>
          <RoleTypeCode>01</RoleTypeCode>
          <Name>Unidad de Compras</Name>
          <AddressInSpain>
            <Address>Plaza Mayor 1</Address>
            <PostCode>28080</PostCode>
            <Town>Madrid</Town>
            <Province>Madrid</Province>
            <CountryCode>ESP</CountryCode>
          </AddressInSpain>
        </AdministrativeCentre>
      </LegalEntity>
    </BuyerParty>
  </Parties>

  <Invoices>
    <Invoice>
      <InvoiceHeader>
        <InvoiceNumber>F0001</InvoiceNumber>
        <InvoiceSeriesCode>A</InvoiceSeriesCode>
        <InvoiceDocumentType>FC</InvoiceDocumentType>
        <InvoiceClass>OO</InvoiceClass>
      </InvoiceHeader>
      <InvoiceIssueData>
        <IssueDate>2022-09-30</IssueDate>
        <InvoiceCurrencyCode>EUR</InvoiceCurrencyCode>
      </InvoiceIssueData>

      <TaxesOutputs>
        <Tax>
          <TaxTypeCode>01</TaxTypeCode> <!-- IVA -->
          <TaxRate>21.00</TaxRate>
          <TaxableBase>
            <TotalAmount>160.00</TotalAmount>
          </TaxableBase>
          <TaxAmount>
            <TotalAmount>33.60</TotalAmount>
          </TaxAmount>
        </Tax>
      </TaxesOutputs>

      <InvoiceTotals>
        <TotalGrossAmount>180.00</TotalGrossAmount>
        <GeneralDiscounts>
          <Discount>
            <DiscountReason>Bonificación estatal por combustible - RDL 6/2022</DiscountReason>
            <DiscountRate>0.00</DiscountRate>
            <DiscountAmount>20.00</DiscountAmount>
          </Discount>
        </GeneralDiscounts>
        <TotalGeneralDiscounts>20.00</TotalGeneralDiscounts>
        <TotalGrossAmountBeforeTaxes>160.00</TotalGrossAmountBeforeTaxes>
        <TotalTaxOutputs>33.60</TotalTaxOutputs>
        <InvoiceTotal>193.60</InvoiceTotal>
        <TotalOutstandingAmount>193.60</TotalOutstandingAmount>
        <TotalExecutableAmount>193.60</TotalExecutableAmount>
      </InvoiceTotals>

      <Items>
        <InvoiceLine>
          <ItemDescription>Gasóleo A</ItemDescription>
          <Quantity>100.00</Quantity>
          <UnitOfMeasure>Litro</UnitOfMeasure>
          <UnitPriceWithoutTax>1.80</UnitPriceWithoutTax>
          <DiscountsAndRebates>
            <Discount>
              <DiscountReason>Bonificación estatal por combustible - RDL 6/2022</DiscountReason>
              <DiscountRate>0.00</DiscountRate>
              <DiscountAmount>20.00</DiscountAmount>
            </Discount>
          </DiscountsAndRebates>
          <GrossAmount>180.00</GrossAmount>
          <TaxesOutputs>
            <Tax>
              <TaxTypeCode>01</TaxTypeCode>
              <TaxRate>21.00</TaxRate>
              <TaxableBase>
                <TotalAmount>160.00</TotalAmount>
              </TaxableBase>
              <TaxAmount>
                <TotalAmount>33.60</TotalAmount>
              </TaxAmount>
            </Tax>
          </TaxesOutputs>
        </InvoiceLine>
      </Items>
    </Invoice>
  </Invoices>
</Facturae>


Gracias Ermendalenda, no me vale con un descuento porque la bonificación no puede afectar a la base imponible. El único nodo que veo para bonificar después de calcular bases imponibles sin que afecta a ellas es Subsidies.

ermendalenda 21-06-2025 10:45:35

Cita:

Empezado por sglorka (Mensaje 565756)
Gracias Ermendalenda, no me vale con un descuento porque la bonificación no puede afectar a la base imponible. El único nodo que veo para bonificar después de calcular bases imponibles sin que afecta a ellas es Subsidies.

Llevas tazon, existe ese nodo, pero la Aeat ya indicó que e la bonifcacion de combustible, si es el mismo que pienso, debí ser como un descuento no como una subvencion, de todas formas puedes incluir "tambien" ese nodo de subsidios como información adicional, ya que creo que no afecta al calculo, pero ya te digo, si es la subvención que ofrecieron no es habitual agregarlo ahí. Pero si tienes que ponerlo como descuento

ermendalenda 21-06-2025 10:50:18

ICAC (Instituto de Contabilidad y Auditoría de Cuentas) vía AEDAF

Explican que aunque contablemente se podrían considerar dos opciones (subvención o gasto menor), el cálculo del IVA no debe modificarse por el descuento estatal, ya que el IVA se genera sobre el precio real del consumo, no sobre el reducido por la bonificación .


-Declaraciones de AEAT y estaciones de servicio

“será un descuento directo: […] reflejando el precio original sin bonificación y el precio con los descuentos aplicados. Posteriormente, las EESS podrán solicitar al Estado la devolución”



Esto implica que en la factura se debe mostrar el precio antes y después de aplicar el descuento, ajustando la base imponible del IVA en consecuencia.

ermendalenda 19-10-2025 20:09:24

Clasificación receptor --> B2B, B2C ó B2G
 
Hola, estoy aquí dandole

ermendalenda 19-10-2025 20:20:54

Clasificación receptor --> B2B, B2C ó B2G
 
Hola, estoy aquí dandole vueltas a como puede saber, en todos los casos, a quien se está emitiendo una factura B2B para poder cumplir con el nuevo reglamento de facturacion electrónica, ya que en el proyecto dice que se enviarán solo las B2B.
Teniendo en cuenta de que hay algunos Nifs que son identificables a b2g por adelantado:
Los que empiezan por P, Q y S.
También existen dudosos:
- por un lado G / R que son fundaciones, asociaciones o entidades religiosas que pueden ser B2B o B2G, según si gestionan fondos públicos
-Y los mas dudosos, un Nif de persona física, como va a actuar fiscalmente, va a declarar la factura como autónomo B2B, o simplemente quiere la factura como comprobante B2C .
-por otro las que actuan en nombre de entidades públicas que puede ser cualquiera, pero éstos deberían tener consideración B2B por que fiscalmente no estamos factyrando directamente a un organismo publico, aunque finalmente use los canales de remisión B2G, aquí queda la duda de quien hace la remisíón B2G por que no se me ha dado el caso y habrá que ver si tendremos que enviarlo al servicio que dispongan para b2b.
Como veis, aun qiesan detalles que temdrán qu definir y me temo que nos queda otro cruce de preguntas xon el canal que nos pongan.
1. Aclaración de que es B2B y que pasa con las B2G que no solicitan su remision ni a Face ni a peppol, ni a... y que ocurre con las B2C
2. Semántica final que se usará para el ubl 2.1, que contendrá nuevas definiciones acordes a los datos que necesiten y aunque suppmgo que serán parecidos a la semantica de Billing 3.0, seguro sufrirá nuevas definiciones.
3.habrá que firmar el xml o será igual que en verifactu, en la que se considera firmado por enviar con certificado.
4.que otros requisitos pueden ser condicionantes para enviarlas o no, habrá importe mínimo, por ejemplo a partir de facturas de 1000euros?.

Lo que sí está claro y confrimado a través del proyecto y otras fuentes, es que él que quiera empezar ya puede ir trabajando en UBL 2.1 con la normativa europea EN 16931, teniendo en cuenta que tendrá algunas definiciones especiales que ya nos dirán.
Por cierto, esto no se axaba una vez emitida, como sean facturas pendientes de pago hay que estar cambiando los estados, el receptor y el emisor pedniente de esos cambios.
‐-----------
Por favor borrar el anterior post!!!

bmfranky 20-10-2025 00:24:27

Hola, @ermendalenda ,puedes poner enlace a donde está la información del proyecto?

ermendalenda 20-10-2025 06:42:22

Cita:

Empezado por bmfranky (Mensaje 568711)
Hola, @ermendalenda ,puedes poner enlace a donde está la información del proyecto?

Nos va a hacer falta um servicio de consulta websoap para ver si un nif está dado de alta como empresario. Hay un sevicio de consulta por web, quizas se pueda trasladar a llamadas curl.o solicitar a algun canal de la aeat que va a ser algo imprescindible para la factura electrónica.

ermendalenda 20-10-2025 10:22:55

Ya tengo el servicio
 
Hola, esta mañana he descubierto como tener el servicio de consulta de NIF´s de personas fisicas censados como empresarios.
Aquí os lo dejo el método POST para la llamada desde curl:
Cita:

curl.exe --connect-timeout 10 -m 10 -k -S -L https://censo.camara.es/cgi-bin/listado.phpc -d "empresa= [apellido1]+[opcional apellido2]+[opcional nombre]+[opcional nombre2]&direccion=&cpostal=&municipios=&epigrafes=&seccion=censo" -o "Path completo fichero respuesta"
A tener en cuenta:
-La respuesta solo es tipo HTML, con lo cual teneis que hacer busquedas de lo que necesiteis en la respuesta.
-Lo podeis traducir facilmente a vuestras llamadas de curl, para PHP, DELPHI...
-Os devuelve un listado de los nombre que coincidan con los filtros introducidos en cada campo si está censado como empresa/autonomo
-El campo empresa es el importante, donde debeis introducir por orden apellido1+apellido2+... es importante sustituir los espacios por el signo "+".
-También podeis introducir un nombre de empresa, no solo para personas fisicas.
-Hay que tener en cuenta que si hay más de una coincidencia os devuelve el listado y si no hay coincidencias nada.
-Da igual mayusculas y minusculas
-No funcionan las busquedas inexactas, pero si parciales,, o sea podeis empresa=GARCIA+GARCIA+p pero no empresa=GARC+GARCI+pablo, no devolverá nada
-Aún no he probado las búsquedas con caracteres especiales, tildes... si hay que convertir a utf8....

Ala, ahora a disfrutar!!!:D

Neftali [Germán.Estévez] 20-10-2025 11:00:53

Cita:

Empezado por ermendalenda (Mensaje 568721)
Hola, esta mañana he descubierto como tener el servicio de consulta de NIF´s de personas fisicas censados como empresarios.

No veo el NIF por ninguna parte.
Tal vez no estoy haciendo bien la consulta.
Acaba en esta misma página web: https://censo.camara.es/ pero no veo nada de NIF, ni para consultar ni en el resultado.

ermendalenda 20-10-2025 11:26:51

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 568727)
No veo el NIF por ninguna parte.
Tal vez no estoy haciendo bien la consulta.
Acaba en esta misma página web: https://censo.camara.es/ pero no veo nada de NIF, ni para consultar ni en el resultado.

No estápor NIF, solo los filtros que he puesto

ermendalenda 20-10-2025 11:31:45

Por cierto REDSYS Ha caido hoy

bmfranky 20-10-2025 12:09:34

Bueno, no está mal , das los datos y devuelve si está inscrito en las camaras y a partir de ahí, los epígrafes en los que está.

keys 20-10-2025 12:16:59

¿Hay alguna información sobre este servicio web?, para saber como acceder a el y sobre todo si hay otros, ya que este solo devuelve las personas físicas.

bmfranky 20-10-2025 12:35:29

Cita:

Empezado por ermendalenda (Mensaje 568712)
Nos va a hacer falta um servicio de consulta websoap para ver si un nif está dado de alta como empresario. Hay un sevicio de consulta por web, quizas se pueda trasladar a llamadas curl.o solicitar a algun canal de la aeat que va a ser algo imprescindible para la factura electrónica.

Hola, @ermendalenda, o estoy perdido o en la documentación pone que el formato a usar sera el Facturae, para ser compatible con la solución publica de facturacion...



bmfranky 20-10-2025 12:43:18

Cita:

Empezado por keys (Mensaje 568736)
¿Hay alguna información sobre este servicio web?, para saber como acceder a el y sobre todo si hay otros, ya que este solo devuelve las personas físicas.

Hola, no es cierto, acabo de introducir el nombre de mi sl y me ha devuelto los epigrafes en los que estoy, si que funciona.

ermendalenda 20-10-2025 12:51:17

Cita:

Empezado por keys (Mensaje 568736)
¿Hay alguna información sobre este servicio web?, para saber como acceder a el y sobre todo si hay otros, ya que este solo devuelve las personas físicas.

Cita:



la web es https://censo.camara.es
y para actividades profesionales cambia en la llamada que he puesto "censo" por "censo_prof", ojo una empresa puede estar dada de alta coomo actividad empresarial "censo" o profesional "censo_prof"


La franja horaria es GMT +2. Ahora son las 18:44:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi