Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Ley antifraude 2021 (VERIFACTU) - Programas informáticos (https://www.clubdelphi.com/foros/showthread.php?t=95235)

seccion_31 19-02-2024 12:11:24

Buenos dias Neftali

he visto tu codigo y no se como has guardado el XML.

Yo lo hacia con el evento beforeExecute del HTTPRIO pero en este ejemplo no se llega a ejecutar nunca.

Mi idea es crear un codigo con lo publicado aqui, que tome un excel o un archivo de texto y genere al menos un alta simple de factura, ¿si alguien quiere ayudarme? y publicarlo aqui en el foto.

Neftali Me gustaria saber, como guardar el XML antes de tener la url de envio.

Gracias

Saludos a todos.





Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 553902)
A mi los tres ficheros generados con esas opciones me resultan similares.
Completando el código que has puesto, la llamada podría ser similar a esta:

Código Delphi [-]
procedure TForm3.Button1Click(Sender: TObject);
var
  arrayDetalles : array of DetalleType;
  RegistroAltaFacturas: Array_Of_FacturasEmitidasType;
begin
  var alta:AltaFactuSistemaFacturacion := AltaFactuSistemaFacturacion.Create;

  // Cabecera
  var cab := Cabecera.Create;
  cab.IDVersion := VersionType._1_0;

  cab.ObligadoEmision := PersonaFisicaJuridicaESType.Create;
  cab.ObligadoEmision.NombreRazon := 'Empresa pruebas';
  cab.ObligadoEmision.NIF := '11111111H';
  cab.TipoRegistroAEAT := TipoRegistroAEATType.T0;
  cab.FechaFinVeriFactu := '01/01/2026';
  alta.Cabecera := cab;

  // Factura
  var fact:FacturasEmitidasType;
  fact := FacturasEmitidasType.Create;
  fact.RegistroFacturacion := RegistroFacturacionType.Create;
  fact.RegistroFacturacion.IDFactura := IDFacturaExpedidaType.Create;
  fact.RegistroFacturacion.IDFactura.NumSerieFacturaEmisor := '23/123456';
  fact.RegistroFacturacion.IDFactura.FechaExpedicionFacturaEmisor := '31/12/23';
  fact.RegistroFacturacion.IDFactura.IDEmisorFactura := IDEmisorFactura.Create;
  fact.RegistroFacturacion.IDFactura.IDEmisorFactura.NIF := '3333333';
  fact.RegistroFacturacion.DescripcionOperacion := 'venta de mercaderías';

  // Detalle
  var detalle := DetalleType.Create;
  detalle.CuotaRepercutida := '100';
  detalle.TipoImpositivo := '21';
  SetLength(arrayDetalles, 1);
  arrayDetalles[0] := detalle;

  // desglose
  var desglose: DesgloseType := DesgloseType.Create();
  SetLength(Desglose, 1);
  Desglose[0] := detalle;
  fact.RegistroFacturacion.Desglose := Desglose;

  // Lista de facturas del envío
  SetLength(RegistroAltaFacturas, 1);
  RegistroAltaFacturas[0] := fact;

  // Factura 1
  alta.RegistroAltaFacturas := RegistroAltaFacturas;

  // envío
  try
    var res:RespuestaAltaFactuSistemaFacturacion := RespuestaAltaFactuSistemaFacturacion.Create;
    res := GetsfSOAP(False, '', HTTPRIO1).AltaFactuSistemaFacturacion(alta);

    ShowMessage('Se ha realizado el envío; ' + sLineBreak +
                '   CSV: ' + res.CSV  + sLineBreak +
                '   TimeStamp: ' + res.DatosPresentacion.TimestampPresentacion
                );
  except
    on E:Exception do begin
      ShowMessage(Format('Error al realizar el envío; (%s)-%s',[E.ClassName, E.Message]));
    end;
  end;
end;

En este caso genera un fichero como este:

Código:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding">
    <SOAP-ENV:Body xmlns:NS1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SistemaFacturacion.wsdl" xmlns:NS2="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:NS3="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
        <NS1:AltaFactuSistemaFacturacion SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
            <AltaFactuSistemaFacturacion SOAP-ENC:id="1" xsi:type="NS2:AltaFactuSistemaFacturacion">
                <Cabecera SOAP-ENC:id="2" xsi:type="NS3:Cabecera">
                    <IDVersion xsi:type="NS3:VersionType">1.0</IDVersion>
                    <ObligadoEmision SOAP-ENC:id="3" xsi:type="NS3:PersonaFisicaJuridicaESType">
                        <NombreRazon xsi:type="xsd:string">Empresa pruebas</NombreRazon>
                        <NIF xsi:type="xsd:string">11111111H</NIF>
                    </ObligadoEmision>
                    <TipoRegistroAEAT xsi:type="NS3:TipoRegistroAEATType">T0</TipoRegistroAEAT>
                    <FechaFinVeriFactu xsi:type="xsd:string">01/01/2026</FechaFinVeriFactu>
                </Cabecera>
                <item SOAP-ENC:id="4" xsi:type="NS2:FacturasEmitidasType">
                    <RegistroFacturacion SOAP-ENC:id="5" xsi:type="NS3:RegistroFacturacionType">
                        <IDFactura SOAP-ENC:id="6" xsi:type="NS3:IDFacturaExpedidaType">
                            <IDEmisorFactura SOAP-ENC:id="7" xsi:type="NS3:IDEmisorFactura">
                                <NIF xsi:type="xsd:string">3333333</NIF>
                            </IDEmisorFactura>
                            <NumSerieFacturaEmisor xsi:type="xsd:string">23/123456</NumSerieFacturaEmisor>
                            <FechaExpedicionFacturaEmisor xsi:type="xsd:string">31/12/23</FechaExpedicionFacturaEmisor>
                        </IDFactura>
                        <NombreRazonEmisor xsi:type="xsd:string"/>
                        <TipoRegistroSIF xsi:type="NS3:TipoRegistroSIFType">S0</TipoRegistroSIF>
                        <TipoFactura xsi:type="NS3:ClaveTipoFacturaType">F1</TipoFactura>
                        <DescripcionOperacion xsi:type="xsd:string">venta de mercaderías</DescripcionOperacion>
                        <Desglose xsi:type="SOAP-ENC:Array" SOAP-ENC:itemType="NS3:DetalleType" SOAP-ENC:arraySize="1">
                            <item SOAP-ENC:id="8" xsi:type="NS3:DetalleType">
                                <ClaveRegimen xsi:type="NS3:IdOperacionesTrascendenciaTributariaType">01</ClaveRegimen>
                                <TipoImpositivo xsi:type="xsd:string">21</TipoImpositivo>
                                <BaseImponibleOimporteNoSujeto xsi:type="xsd:string"/>
                                <CuotaRepercutida xsi:type="xsd:string">100</CuotaRepercutida>
                            </item>
                        </Desglose>
                        <ImporteTotal xsi:type="xsd:string"/>
                        <EncadenamientoRegistroAnterior xsi:nil="true"/>
                        <SistemaInformatico xsi:nil="true"/>
                        <FechaGenRegistro xsi:type="xsd:string"/>
                        <HoraGenRegistro xsi:type="xsd:string"/>
                        <HusoHorarioGenRegistro xsi:type="NS3:HusoHorarioGenRegistroType">01</HusoHorarioGenRegistro>
                    </RegistroFacturacion>
                    <DatosControl xsi:nil="true"/>
                </item>
            </AltaFactuSistemaFacturacion>
        </NS1:AltaFactuSistemaFacturacion>
    </SOAP-ENV:Body>
 </SOAP-ENV:Envelope>


Adjunto los 3 ficheros generados al importar el WSDL y el propio fichero WSDL.


keno_71 19-02-2024 12:41:20

Hola seccion_31
sí se está ejecutando en esta línea, aunque la url sea ficticia si se guarda en el beforeExecute
yo seguí ese código de ejemplo y me lo ha guardado.

Cita:

res := GetsfSOAP(False, '', HTTPRIO1).AltaFactuSistemaFacturacion(alta);

seccion_31 19-02-2024 13:30:22

Añadir TAGs al código del mensaje
 
gracias

a mi no me entra en el beforeExecute; (tengo un showmessage), cuando ejecuta, me dice: invalid url XXX (como dices, no tiene la ruta, ok), que viene en SistemaFacturacionSOAPv12, en defURL.

tengo los siguientes valores en HTTPRIO:

Código Delphi [-]
Port: SistemaFacturacionPruebas
Service: sfService
tag: 0
URL:
WSDLLocation: (una ruta wl archoivo xsd)



Código Delphi [-]
procedure TForm2.HTTPRIO1BeforeExecute(const MethodName: string;
  SOAPRequest: TStream);
var
  ss:TFileStream;
begin
        showmessage('hola');
        ss:=TFileStream.Create( 'c:\copiar\1v.xml' , fmCreate);
        ss.CopyFrom(SOAPRequest, SOAPRequest.size);
        ss.Free;
end;

Voy a seguir comprobando a ver que puede ser.

keno_71 19-02-2024 13:38:56

Lo tengo así,

en el beforeExecute:

Cita:


sTmp := TStringList.Create;
try
SOAPRequest.Position := 0;
sTmp.LoadFromStream(SOAPRequest);
nFile := ExtractFilePath(Application.ExeName) + 'VeriFactu_PeticionEnviada.xml';
sTmp.SaveToFile(nFile);
Memo1.Lines.LoadFromFile(nFile);
finally
FreeAndNil(sTmp);
end;


en el fichero de SistemaFActuracion:

Cita:

function GetsfSOAP(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): sfSOAP;
const
defWSDL = 'https://prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/SistemaFacturacion.wsdl';
defURL = 'https://www.me_la_he_inventado_.com';
defSvc = 'sfService';
defPrt = 'SistemaFacturacion';

saludos

seccion_31 19-02-2024 13:49:47

perfecto, cambiando la defURL por la tuya:

https://www.me_la_he_inventado_.com


si dejamos el xxx no hace mencion si quiera de enviar.

muchas gracias

ramherfer 19-02-2024 14:09:17

Cita:

Empezado por ermendalenda (Mensaje 554519)
Yo te lo pongo pero no sé si te vas a liar más, ya que yo trabajo en Vb6 para generar el xml y despuñess las firmas y encapsulamientos soaps lo hago en php con llamadas desde curl.
En Delphi hay otras formas que los compañeros del foro seguro que te pueden guiar.

Mira el código para generar el XML (A pelo) es de esta forma:
Código:

close #92
Open "C:\xmls\" & nombre_fichero & ".xml" For Output  As #92
 Print #92, "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & "?>"
              Print #92, "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & "?>"
                If es_anulacion Then
                   
                    Print #92, "<sum:BajaFactuSistemaFacturacion xmlns:sum=" & Chr(34) & "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" & Chr(34) & " xmlns:sum1=" & Chr(34) & "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" & Chr(34) & ">"
                Else
                    Print #92, "<sum:AltaFactuSistemaFacturacion xmlns:sum=" & Chr(34) & "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" & Chr(34) & " xmlns:sum1=" & Chr(34) & "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" & Chr(34) & ">"
                End If
                Print #92, "<sum1:Cabecera>"
                Print #92, "<sum1:IDVersion>" & version_vfactu & "</sum1:IDVersion>"
 Print #92, "<sum1:ObligadoEmision>"
                Print #92, "<sum1:NombreRazon>" & TEXT_TO_UTF8(nombre_empresa) & "</sum1:NombreRazon>"
                Print #92, "<sum1:NIF>" & nif & "</sum1:NIF>"
                Print #92, "</sum1:ObligadoEmision>"
              select case tipo

                    "anulacion"
                        Print #92, "<sum1:TipoRegistroAEAT>T3</sum1:TipoRegistroAEAT>"
                   
                    "sustitutiva"
                            Print #92, "<sum1:TipoRegistroAEAT>T1</sum1:TipoRegistroAEAT>"
                    "normal"
                            Print #92, "<sum1:TipoRegistroAEAT>T0</sum1:TipoRegistroAEAT>"
              end select
***Y ahora lo que voy a escribir lo voy guardando en la variable datohash para calcular el hash cuando tenga en la variable lo que necesite
datoxml = "<sum:RegistroFacturacion>"
                datohash = datoxml
                If es_anulacion = False Then
   
                    Print #92, "<sum:RegistroAltaFacturas>" & datoxml;
                Else
                    Print #92, "<sum:RegistroAnulacionFacturas>" & datoxml;
                End If
               
                datoxml = "<sum1:IDFactura>"
                datohash = datohash & datoxml
                Print #92, datoxml;
                .......
****AL FINAL CALCULO EL HASH USANDO LAS API DE WINDOWS****
***  CryptCreateHash, ¿¿¿CryptAcquireContext, etc... de la libreria  "advapi32.dll"*****

                huella = UCase(CreateHashString(datohash, CALG_SHA_256))
                   
*** Inserto el hash en el xml y el resto de nodos
                  Print #92, "<sum1:Huella>" & huella & "</sum1:Huella>"
                   
                    Print #92, "<sum1:TipoHash>01</sum1:TipoHash>"
                    Print #92, "</sum:DatosControl>"
                    If es_anulacion Then
                        Print #92, "</sum:RegistroAnulacionFacturas>"
                        Print #92, "</sum:BajaFactuSistemaFacturacion>"
                    Else
                        Print #92, "</sum:RegistroAltaFacturas>"
                        Print #92, "</sum:AltaFactuSistemaFacturacion>"
                    End If
                  close #92

Por otro lado puedo encapsular en php, ya que en VB6 desconozco la forma, pero en mi caso hemos pagado a una empresa la programación y el servicio de conservación y le vamos a enviar los xmls sin encapsular para que hagan toda la hilera de verificación del encadenamiento, validación schema xml-xsd, conservación, encapsulamiento, envios y control de errores, el envio lo harán con su certificado y ellos le dan este servicio a cada cliente al que le cobraremos un precio "razonable", y me libero de la parte peor. Cada cliente recibirá o podrá consultar el reporte de los envios y si hay errores se avisará y se tomará las medidas según cada caso, esto ya lo tenemos definido.

Gracias @ermendalenda

Neftali [Germán.Estévez] 22-02-2024 12:26:26

Se publican las presentaciones realizadas en el seminario del día 11 de febrero de 2024.
Durante la próxima semana, se irán incorporando el resto de contenidos asociados a la sesión de divulgación, tales como el documento de preguntas y respuestas, grabación al vídeo, entre otros.

Parece que hay una de la primera parte más teórica y otra de la segunda que era más técnica.

Los subo al FTP y añadiré el link al primer mensaje del hilo.

newtron 22-02-2024 12:41:05

^\||/ Gracias Germán.

ermendalenda 22-02-2024 16:06:51

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 554555)
Se publican las presentaciones realizadas en el seminario del día 11 de febrero de 2024.
Durante la próxima semana, se irán incorporando el resto de contenidos asociados a la sesión de divulgación, tales como el documento de preguntas y respuestas, grabación al vídeo, entre otros.

Parece que hay una de la primera parte más teórica y otra de la segunda que era más técnica.

Los subo al FTP y añadiré el link al primer mensaje del hilo.

gRACIAS GERMAN

espinete 23-02-2024 12:46:28

Duda sobre si cumplir con la ética o con la Ley Antifraude
 
Buenas...

Nos ha surgido una duda un poco rara en la empresa, relacionada en parte con la Ley Antifraude y "la prohibición de suministrar software que no cumpla con la nueva ley". Intentaré explicarlo brevemente a ver qué opináis...

Nosotros desarrollamos un software de facturación desde hace 20 años. Obviamente se van lanzando actualizaciones cada año, etc. pero siempre hay clientes que se quedan con versiones antiguas, o versiones "pirata", etc. así que hay clientes usando versiones de 2015, 2010 o incluso 2008 que simplemente no quieren actualizar.
Respetable, supongo.

- Esas versiones no eran compatibles obviamente con la Ley Antifraude: podías borrar facturas, modificarlas, no había registro de cambios, etc.
- Esas versiones se registraban enviándole un código al cliente por email (si, en aquella época no todo el mundo tenía internet en el negocio).

Dicho esto... Si uno de esos clientes, hoy en día, necesita reinstalar, o un nuevo código porque ha formateado el disco, etc. ¿estaríamos nosotros como desarrolladores infringiendo la normativa que impide suministrar software que no cumpla con la Ley Antifraude?
¿Estaríamos en nuestro derecho de no facilitar números de serie de versiones tan antiguas y obsoletas para las que no se ofrece asistencia técnica? ¿Sigue por ejemplo Microsoft facilitando números de serie, oficiales y legales, de Windows XP?

Como veis, no tiene relación directa, o tal vez sí, pero lo cierto es que ha generado debate en la empresa y no sabemos muy bien cómo proceder. Yo voto por descatalogar definitivamente esas versiones antiguas y punto, pero hay quien opina que esos clientes tienen derecho a usarla porque la pagaron en su momento.

No sé... si yo compré el Office 2003, tengo derecho a seguir instalándolo en 2024? ¿Es incluso posible hacerlo si el número de serie lo he perdido y necesito otro, o si he cambiado de ordenador?

Pues eso. Me gustaría saber vuestras opiniones, que hoy es viernes y a lo mejor esto relaja un poco :)

newtron 23-02-2024 13:05:58

Buenas.


Pues efectivamente es un tema peliagudo y que seguramente estará a criterio del inspector de turno.


Obviando el tema de que el cliente si está usando un programa antiguo que no esté adaptado a la nueva normativa le pueden dar un estacazo bueno, también tiene derecho a seguir usando un programa del que tiene licencia así que yo voto porque habría que proporcionarle la licencia para poder usarlo pero no llegar más allá, o sea, no hacer ningún tipo de actuación, instalación ni mantenimiento del mismo porque entonces si te podrías buscar las cosquillas.


Saludos.

ramherfer 23-02-2024 13:10:30

Cita:

Empezado por espinete (Mensaje 554562)
Buenas...

Nos ha surgido una duda un poco rara en la empresa, relacionada en parte con la Ley Antifraude y "la prohibición de suministrar software que no cumpla con la nueva ley". Intentaré explicarlo brevemente a ver qué opináis...

Nosotros desarrollamos un software de facturación desde hace 20 años. Obviamente se van lanzando actualizaciones cada año, etc. pero siempre hay clientes que se quedan con versiones antiguas, o versiones "pirata", etc. así que hay clientes usando versiones de 2015, 2010 o incluso 2008 que simplemente no quieren actualizar.
Respetable, supongo.

- Esas versiones no eran compatibles obviamente con la Ley Antifraude: podías borrar facturas, modificarlas, no había registro de cambios, etc.
- Esas versiones se registraban enviándole un código al cliente por email (si, en aquella época no todo el mundo tenía internet en el negocio).

Dicho esto... Si uno de esos clientes, hoy en día, necesita reinstalar, o un nuevo código porque ha formateado el disco, etc. ¿estaríamos nosotros como desarrolladores infringiendo la normativa que impide suministrar software que no cumpla con la Ley Antifraude?
¿Estaríamos en nuestro derecho de no facilitar números de serie de versiones tan antiguas y obsoletas para las que no se ofrece asistencia técnica? ¿Sigue por ejemplo Microsoft facilitando números de serie, oficiales y legales, de Windows XP?

Como veis, no tiene relación directa, o tal vez sí, pero lo cierto es que ha generado debate en la empresa y no sabemos muy bien cómo proceder. Yo voto por descatalogar definitivamente esas versiones antiguas y punto, pero hay quien opina que esos clientes tienen derecho a usarla porque la pagaron en su momento.

No sé... si yo compré el Office 2003, tengo derecho a seguir instalándolo en 2024? ¿Es incluso posible hacerlo si el número de serie lo he perdido y necesito otro, o si he cambiado de ordenador?

Pues eso. Me gustaría saber vuestras opiniones, que hoy es viernes y a lo mejor esto relaja un poco :)

Cualquier opinión es respetable. La mia es que si no tiene contrato de mantenimiento demostrable con facturas la empresa desarrolladora no esta infringiendo nada, y más cuando son empresas que no hay contacto. Las que hay con contacto se les puede avisar vía email que deben actualizar o desinstalar la aplicación.
Si alguien pide un codigo de instalación de versiones antiguas que haberlas las habrá, perfectamente se les informará a los usuarios de que esas versiones no cumple con la legislación vigente y que no se les puede facilitar ningún código de instalación. Aunque ya he comentado que si no tiene contrato de mantenimiento mensual, anual, demostrable con facturas la empresa desarrolladora no pueden hacerla responsable, si aquella empresa que sabiendo como está el tema, la use.

Avisar a usuarios con contacto y sin mantenimiento que actualización ($$$) o desinstalación.
Clientes sin contacto y que hagan petición de un codigo de instalación, o actualizar pagando lo que se estipule o que la desinstalen, codigos ni uno, es más el algoritmo interno va a ser cambiado en nuevas versiones para que no hayan despistes.
Evidentemente los usuarios con contrato de mantenimiento una vez adaptada la aplicación se les implementará.

Repito es mi humilde y discutible opninión, pero es lo que aquí se va a hacer ya que la cosa es seria y no está para andar jugando (150000€) Antes de lamentarme yo, tienen dos opciones o actualizarse o lamentarse pero ellos.

edari 23-02-2024 13:16:56

Yo voto también voto por descatalogar versiones antiguas y más con la burrada de multas que deberíamos asumir. Hasta que se les rompa. Ni un soporte de ellas damos ya.

Por otro lado...

Qué empresa va a aceptar recibir una factura ilegal al no tener código QR?

ermendalenda 23-02-2024 13:22:24

Cita:

Empezado por espinete (Mensaje 554562)
Buenas...

Nos ha surgido una duda un poco rara en la empresa, relacionada en parte con la Ley Antifraude y "la prohibición de suministrar software que no cumpla con la nueva ley". Intentaré explicarlo brevemente a ver qué opináis...

Nosotros desarrollamos un software de facturación desde hace 20 años. Obviamente se van lanzando actualizaciones cada año, etc. pero siempre hay clientes que se quedan con versiones antiguas, o versiones "pirata", etc. así que hay clientes usando versiones de 2015, 2010 o incluso 2008 que simplemente no quieren actualizar.
Respetable, supongo.

- Esas versiones no eran compatibles obviamente con la Ley Antifraude: podías borrar facturas, modificarlas, no había registro de cambios, etc.
- Esas versiones se registraban enviándole un código al cliente por email (si, en aquella época no todo el mundo tenía internet en el negocio).

Dicho esto... Si uno de esos clientes, hoy en día, necesita reinstalar, o un nuevo código porque ha formateado el disco, etc. ¿estaríamos nosotros como desarrolladores infringiendo la normativa que impide suministrar software que no cumpla con la Ley Antifraude?
¿Estaríamos en nuestro derecho de no facilitar números de serie de versiones tan antiguas y obsoletas para las que no se ofrece asistencia técnica? ¿Sigue por ejemplo Microsoft facilitando números de serie, oficiales y legales, de Windows XP?

Como veis, no tiene relación directa, o tal vez sí, pero lo cierto es que ha generado debate en la empresa y no sabemos muy bien cómo proceder. Yo voto por descatalogar definitivamente esas versiones antiguas y punto, pero hay quien opina que esos clientes tienen derecho a usarla porque la pagaron en su momento.

No sé... si yo compré el Office 2003, tengo derecho a seguir instalándolo en 2024? ¿Es incluso posible hacerlo si el número de serie lo he perdido y necesito otro, o si he cambiado de ordenador?

Pues eso. Me gustaría saber vuestras opiniones, que hoy es viernes y a lo mejor esto relaja un poco :)

Infringir la ley antifraude por darle soporte aunque sea una consulta, la infringes seguro. Como tengan inspección y lleguen hasta vosotros por que vean cualquier acceso actual te van a poner el supositorio.

keys 23-02-2024 13:32:02

Nosotros en el contrato que firman al comprar la aplicación indicamos que sólo nos hacemos responsables si el software esta actualizado. Esto no sólo ocurre con verifactu, puede afectar a mas cosas, como impuestos (IVA, SII, etc), que por cambio de normativa ya no sean válidos en la versión que tienen ellos.

Lógicamente tu no te puedes hacer responsable del uso de un programa que vendíste hace 10 años.

antoine0 23-02-2024 14:44:36

Cita:

Empezado por espinete (Mensaje 554562)
¿estaríamos nosotros como desarrolladores infringiendo la normativa que impide suministrar software que no cumpla con la Ley Antifraude?

Buena pregunta. Muy buena.
Creo que lo de los números de serie (si lo haces gratis) no entra como «suministrar software», solo cumples una obligación nacida de una venta anterior.

Cita:

¿Estaríamos en nuestro derecho de no facilitar números de serie de versiones tan antiguas y obsoletas para las que no se ofrece asistencia técnica?
Si al vender estas licencias hace años no has puesto clausulas de reserva, no puedes poner tal clausula retroactivamente. Entonces la única razón para no dar estos números (que claramente es parte de lo que has vendido históricamente) sería si existe una normativa que te prohíbe suministrarlos. La LGT es obviamente tal normativa; queda por determinar si el texto de la ley 11/2021 (artículo 13) prohíbe (a los desarrolladores) cumplir con los contratos anteriores, con el motivo que los programas anteriores ya no cumplen lo que dice la normativa que los corresponde.

Solo he visto el nuevo artículo 201 bis de la LGT que dice primero que los desarrolladores están en infracción si fabrican, producen o comercializan programas que no cumplen con la normativa anti-fraude; entiendo que dar respuesta a una consulta en aplicación de un contrato anterior no entra en estos tres supuestos (pero no soy letrado y seguramente habrán letrados que darán interpretaciones correctas al respecto).
La segunda parte del artículo es más interesante: prohíbe «la tenencia de los sistemas o programas informáticos o electrónicos que no se ajusten a lo establecido [...]» Aquí claramente hay posibilidad de avisar a estos clientes que están/estarán en infracción con la LGT, con cuantiosas multas por detrás (lo que no sé es si estás obligado a avisarlos; o si hay obligación, o autorización, de denunciarlos a Hacienda). Pero avisar los clientes es una cosa, y cumplir con la petición regular de un cliente es otra. Creo que en este caso el desarrollador no comete ninguna infracción en sí dando un tal número de serie; al máximo podría ser posible cómplice, y no he visto que siga motivo de infracción (en la redacción actual).

Una muy buena pregunta par un viernes, es cierto.

Cita:

¿Sigue por ejemplo Microsoft facilitando números de serie, oficiales y legales, de Windows XP?
Nunca ha necesitado facilitar números de serie después de la compra. Es por esto que ha sido posible el pirateo: porqué el mecanismo era fijado en el momento de la compra inicial.

Cita:

Yo voto por descatalogar definitivamente esas versiones antiguas y punto, pero hay quien opina que esos clientes tienen derecho a usarla porque la pagaron en su momento.
Estoy con la segunda opción.

Cita:

No sé... si yo compré el Office 2003, tengo derecho a seguir instalándolo en 2024?
Los tres únicos casos que conozco par impedirlo es si lo utilizas en otro ordenador, si la licencia está ligada a un ordenador determinado (licencia «OEM», más barata), o si has utilizado esta licencia de Office 2003 para obtener un descuento en una versión ulterior; pero fuera de estos casos, claramente sí puedes instalarlo en 2024.
También puedes instalar Word para CP/M en un Zilog Z-80, si tienes licencia.

Creo que un mejor ejemplo sería Napster en lugar de Office 2003... pero claro Napster como compañía ya no existe.

Cita:

¿Es incluso posible hacerlo si el número de serie lo he perdido y necesito otro, o si he cambiado de ordenador?
En tal caso, con la prueba de la compra, creo que Microsoft te debe dar una mano, sobre todo porqué no hay razones técnicas que impide a Microsoft hacerlo (prueba: se puede piratear). Evidentemente, debes estar dentro de los parámetros para una posible instalación (es decir: en un Windows 10 x64, no te van a ayudar, está fuera de especificaciones.)

El caso de la ley anti-fraude es distinto del de Office 2003: con la ley antifraude sí existe una razón que podría oponerse al hacerlo: el hecho que instalándolo estás claramente infringiendo la LGT.

Neftali [Germán.Estévez] 23-02-2024 14:50:51

Cita:

Empezado por espinete (Mensaje 554562)
Nosotros desarrollamos un software de facturación desde hace 20 años. Obviamente se van lanzando actualizaciones cada año, etc. pero siempre hay clientes que se quedan con versiones antiguas, o versiones "pirata", etc. así que hay clientes usando versiones de 2015, 2010 o incluso 2008 que simplemente no quieren actualizar.
Respetable, supongo.

- Esas versiones no eran compatibles obviamente con la Ley Antifraude: podías borrar facturas, modificarlas, no había registro de cambios, etc.
- Esas versiones se registraban enviándole un código al cliente por email (si, en aquella época no todo el mundo tenía internet en el negocio).

Pues eso. Me gustaría saber vuestras opiniones, que hoy es viernes y a lo mejor esto relaja un poco :)


Creo que el otro día en la empresa comentaban que lo habían consultado y la clave está en que tú no ofrezcas ni soporte, ni ayuda, ni tengas "ganancia" sobre esas versiones obsoletas, una vez que entre en vigor la ley.

Si el cliente instala esa versión antigua que no está preparada es problema suyo y a él le caerán las sanciones.
A ti te podrían caer también, si se demuestra que se los has vendido, si le has ayudado, si le has cobrado por mantenimiento, soporte,etc, etc,... todo esto después de la fecha especificada.

Sistel 23-02-2024 17:39:43

Cita:

Empezado por espinete (Mensaje 554562)
Nosotros desarrollamos un software de facturación desde hace 20 años. Obviamente se van lanzando actualizaciones cada año, etc. pero siempre hay clientes que se quedan con versiones antiguas, o versiones "pirata", etc. así que hay clientes usando versiones de 2015, 2010 o incluso 2008 que simplemente no quieren actualizar.
Respetable, supongo.

- Esas versiones no eran compatibles obviamente con la Ley Antifraude: podías borrar facturas, modificarlas, no había registro de cambios, etc.
- Esas versiones se registraban enviándole un código al cliente por email (si, en aquella época no todo el mundo tenía internet en el negocio).

Dicho esto... Si uno de esos clientes, hoy en día, necesita reinstalar, o un nuevo código porque ha formateado el disco, etc. ¿estaríamos nosotros como desarrolladores infringiendo la normativa que impide suministrar software que no cumpla con la Ley Antifraude?
¿Estaríamos en nuestro derecho de no facilitar números de serie de versiones tan antiguas y obsoletas para las que no se ofrece asistencia técnica? ¿Sigue por ejemplo Microsoft facilitando números de serie, oficiales y legales, de Windows XP?

Como veis, no tiene relación directa, o tal vez sí, pero lo cierto es que ha generado debate en la empresa y no sabemos muy bien cómo proceder. Yo voto por descatalogar definitivamente esas versiones antiguas y punto, pero hay quien opina que esos clientes tienen derecho a usarla porque la pagaron en su momento.

No sé... si yo compré el Office 2003, tengo derecho a seguir instalándolo en 2024? ¿Es incluso posible hacerlo si el número de serie lo he perdido y necesito otro, o si he cambiado de ordenador?

Pues eso. Me gustaría saber vuestras opiniones, que hoy es viernes y a lo mejor esto relaja un poco :)

Hola,

Por lo que me pareció entender en la charla del otro día, de la Agencia Tributaria, el desarrollador del software debe hacer una auditoría externa o una declaración responsable de que cumple con la nueva Ley Antifraude.

Entiendo que en este caso, haría la declaración responsable del software que cumple (versión actual) no de las versiones anteriores.
Por ejemplo de "Facturación Pepe, versión 5 (Antifraude) y posteriores"
Y, por tanto, quedarían exentas de cumplir la nueva normativa las versiones anteriores, como "Facturación Pepe, versión 4".

Si un cliente usa "Facturación Pepe, versión 4" debe saber que es un software antiguo que no cumple con la nueva ley y por tanto puede ser sancionado.

Supongo que con eso el desarrollador queda exento de responsabilidad.

Saludos

xevi 24-02-2024 09:30:29

Una consulta a ver si alguien me puede aportar un poco de luz

En un software de Contabilidad, simplemente Contabilidad (Cuentas, Asientos, Balances, Libros...)
¿Sabeis como afecta o el alcance de la ley Anti Fraude?

Porque el tema por lo que voy leyendo e informando, todo gira entorno a la facturación y más concretamente al emitir la factura, pero queda un poco a nivel de programador o desarrollador todo el tema de trazabilidad, integridad... por lo que yo solamente he desarrollado un registro de eventos y además le he incluido una integridad a mi manera en cada apunte de la base de datos "asientos", pero como digo, no veo que haya una normativa específica, detallada para los sitemas de Contabilidad.

Agradezco cualquier aporte al respecto.

Gracias.

Un Saludo,
Xevi

keno_71 24-02-2024 09:41:55

Nosotros tenemos la misma "discusión", tenemos clientes con versiones antiguas, tenemos pensado enviar el email para informar que solamente se mantendrá mantenimiento con aplicación nueva porque además haremos un cambio sustancial en la misma para que se note que es otra y a los que no quieran cambiar no se les hará mantenimiento. El problema viene con clientes que se actualicen, que se les cobre un mantenimiento pero que tengan el otro programa antiguo (que no se lo puedo desinstalar) y haga algo que no deba.


La franja horaria es GMT +2. Ahora son las 20:16:07.

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