Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Ya está publicada la versión 3.0 en el FTP del club.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
  #2  
Antiguo 08-04-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
TRegistroFacturaStatus:

empezamos bien:

para que funcione correctamente el tema del status segun la automatizacion ejecutada por el componente, algo que puede venir bien para documentar el registro, hay que cambiar esto en

la unidad uverifactuFuncs (D10) y recompilar la DLL

El resto de funciones estan correctas. Este cambio y otros apareceran la semana que viene en el 3.1


Código:
procedure clearStatus(sesion, indice:integer);
begin
    sesiones[sesion].status[indice].exenta      :=false;
    sesiones[sesion].status[indice].canarias    :=false;
    sesiones[sesion].status[indice].sujetoPasivo:=false;
    sesiones[sesion].status[indice].cee         :=false;
    sesiones[sesion].status[indice].exporta     :=false;
end;
y

Código:
function altafactura_F1_F2_R4_R5_verifactu( sesion:integer; cabecera:TVeriFactuInicio; indice:integer ): RegistroFacturaType;
var
    Factura             : RegistroFacturaType;
    Destinatario        : PersonaFisicaJuridicaType;
    ListaDestinatarios  : Destinatarios2;
    ListaDesglose       : DesgloseType;
    DetalleDesglose     : DetalleType;
    XSDatetime          : TXSDatetime;

    FacturaRegistro     : TRegistroFactura;

    rectificadasArray   :  FacturasRectificadas2;
    rectificada         :  IDFacturaARType;

    j:integer;
begin
    FacturaRegistro:=sesiones[sesion].facturas[indice];
    clearStatus(sesion, indice);

    Factura := RegistroFacturaType.Create;

    Factura.RegistroAlta            := RegistroAlta.Create;
    Factura.RegistroAlta.IDVersion  := SistemaFacturacion.VersionType(0);


    Factura.RegistroAlta.NombreRazonEmisor                := cabecera.emisor.NombreRazonEmisor;
    Factura.RegistroAlta.IDFactura                        := IDFacturaExpedidaType.Create;
    Factura.RegistroAlta.IDFactura.IDEmisorFactura        := cabecera.emisor.nifEmisor;

    Factura.RegistroAlta.IDFactura.NumSerieFactura        := facturaRegistro.numSerieFactura;
    Factura.RegistroAlta.IDFactura.FechaExpedicionFactura := verifactuFecha( facturaRegistro.fechafactura ) ; // (dd-mm-yyyy)
    Factura.RegistroAlta.DescripcionOperacion             := facturaRegistro.DescripcionOperacion;

    if facturaRegistro.subsanacion then
        Factura.RegistroAlta.Subsanacion:=SubsanacionType.S;

    if facturaRegistro.rechazoPrevioExiste then
        Factura.RegistroAlta.RechazoPrevio:=RechazoPrevioType.S;

    if facturaRegistro.rechazoPrevioNoExiste then
        Factura.RegistroAlta.RechazoPrevio:=RechazoPrevioType.X;

    if facturaRegistro.refExterna<>'' then  // informacion libre
        Factura.RegistroAlta.RefExterna := facturaRegistro.refExterna;

    // 1 destinatario (cliente):
    if facturaRegistro.clienteNIF<>'' then        // es una factura con destinatario TIPO F1
    begin
        if facturaRegistro.total<0 then
          Factura.RegistroAlta.TipoFactura := ClaveTipoFacturaType.R4
        else
          Factura.RegistroAlta.TipoFactura := ClaveTipoFacturaType.F1;

        Destinatario                     := PersonaFisicaJuridicaType.Create;
        Destinatario.NombreRazon         := facturaRegistro.cliente;

        // si no es españa puede ser comunitario o exportacion
        if facturaRegistro.clienteCodPais<>'ES' then
        begin
            Destinatario.IDOtro             := IDOtroType.Create;
            Destinatario.IDOtro.CodigoPais  := verifactu_codigoPais( facturaRegistro.clienteCodPais );

            if facturaRegistro.clientetipoNIF<>'' then
                Destinatario.IDOtro.IdType  := verifactu_tipoNIF   ( facturaRegistro.clientetipoNIF )
            else
            begin
                 if CodpaisEuropea(facturaRegistro.clienteCodPais) then
                    Destinatario.IDOtro.IdType :=PersonaFisicaJuridicaIDTypeType._02
                 else
                    Destinatario.IDOtro.IdType :=PersonaFisicaJuridicaIDTypeType._06;
            end;
            Destinatario.IDOtro.ID          := facturaRegistro.clienteNIF;
        end
        else
            Destinatario.NIF                 := facturaRegistro.clienteNIF;   // España

        // El destinatario (cliente) a la lista  (solo 1 cliente x factura)
        ListaDestinatarios:= destinatarios2.Create();
        SetLength(ListaDestinatarios, 1);
        ListaDestinatarios[0]               := Destinatario;
        Factura.RegistroAlta.Destinatarios  := ListaDestinatarios;
    end
    else        // Es un ticket o factura F2 con el cliente sin identificar
    begin
        if facturaRegistro.total<0 then
            Factura.RegistroAlta.TipoFactura := ClaveTipoFacturaType.R5
        else
            Factura.RegistroAlta.TipoFactura := ClaveTipoFacturaType.F2;

        Factura.RegistroAlta.FacturaSinIdentifDestinatarioArt61d:=CompletaSinDestinatarioType.S;
    end;

    // Desglose de iva y exenciones: (Nacional, Comunitario, o Exportacion)
    ListaDesglose := DesgloseType.Create();

    // Exenciones
    for j:=0 to facturaRegistro.nexentas-1 do      // x cada exencion
    begin
         if (facturaRegistro.exenta[j].baseImp<>0)and(facturaRegistro.exenta[j].tipoExenta<>'') then
         begin
             DetalleDesglose:= DetalleType.Create;

             if facturaRegistro.exenta[j].claveRegimen<>'' then
               DetalleDesglose.ClaveRegimen         :=codigoTrascendencia_verifactu( facturaRegistro.exenta[j].claveRegimen);

             if facturaRegistro.exenta[j].calificacionOperacion<>'' then
               DetalleDesglose.CalificacionOperacion:=codigoCalificacion_verifactu( facturaRegistro.exenta[j].calificacionOperacion );

             DetalleDesglose.OperacionExenta      :=codigoExenta_verifactu(facturaRegistro.exenta[j].tipoExenta);

             DetalleDesglose.BaseImponibleOimporteNoSujeto := NumeroVeriFactu( facturaRegistro.exenta[j].baseImp );

             sesiones[sesion].status[indice].exenta:=true;

             // colocar el desglose en la lista
             SetLength( ListaDesglose, Length(ListaDesglose) +1 );
             ListaDesglose[ High(ListaDesglose ) ] := DetalleDesglose ;
         end;
    end;

    // IVA
    for j:=0 to facturaRegistro.nivas-1 do      // x cada iva:
    Begin
          DetalleDesglose              := DetalleType.Create;

          DetalleDesglose.ClaveRegimen := IdOperacionesTrascendenciaTributariaType._01;

          // Tipo de calificacion y exenta segun pais
          if facturaRegistro.clienteCodPais='ES' then          // España:
          begin
              if not facturaRegistro.canarias then            // Si no es canarias:
              begin
                        // ¿inversion del sujeto pasivo?
                        if NOT facturaRegistro.inversionSujetoPasivo then // Factura Normal
                        begin
                            DetalleDesglose.CalificacionOperacion         := CalificacionOperacionType.S1;

                            DetalleDesglose.TipoImpositivo                := NumeroVeriFactu( facturaRegistro.iva[j].iva );
                            DetalleDesglose.CuotaRepercutida              := NumeroVeriFactu( facturaRegistro.iva[j].impiva );

                            if facturaRegistro.iva[j].req<>0 then  // ¿ lleva recargo de equivalencia ?
                            begin
                                DetalleDesglose.ClaveRegimen                  :=IdOperacionesTrascendenciaTributariaType._18;
                                DetalleDesglose.TipoRecargoEquivalencia       := NumeroVeriFactu( facturaRegistro.iva[j].req );
                                DetalleDesglose.CuotaRecargoEquivalencia      := NumeroVeriFactu( facturaRegistro.iva[j].impreq );
                            end;
                        end
                        else   // Con inversion del sujeto pasivo
                        begin
                            sesiones[sesion].status[indice].sujetopasivo       :=true;
                            DetalleDesglose.CalificacionOperacion         := CalificacionOperacionType.S2;
                            DetalleDesglose.TipoImpositivo                := NumeroVeriFactu( 0 );
                            DetalleDesglose.CuotaRepercutida              := NumeroVeriFactu( 0 );
                        end;
              end
              else  // caso especifico Canarias ceuta y melilla entrega de bienes
              begin
                   DetalleDesglose.ClaveRegimen     := IdOperacionesTrascendenciaTributariaType._02;
                   DetalleDesglose.OperacionExenta  := OperacionExentaType.E2;
              end;
          end
          else  // exportacion o comunidad Europea
          begin
              DetalleDesglose.OperacionExenta:= verifactu_tipoDesglose( facturaRegistro.clienteCodPais );

              if DetalleDesglose.OperacionExenta=OperacionExentaType.E5 then // UE
              begin
                   sesiones[sesion].status[indice].cee:=true;
                   DetalleDesglose.ClaveRegimen := IdOperacionesTrascendenciaTributariaType._01;
              end;

              if DetalleDesglose.OperacionExenta=OperacionExentaType.E2 then // Exportacion fuera de la UE
              begin
                   sesiones[sesion].status[indice].exporta:=true;
                   DetalleDesglose.ClaveRegimen := IdOperacionesTrascendenciaTributariaType._02;
              end;
          end;

          // Base Imponible
          DetalleDesglose.BaseImponibleOimporteNoSujeto := NumeroVeriFactu( facturaRegistro.iva[j].baseImp );

          // colocar el desglose en la lista
          SetLength( ListaDesglose, Length(ListaDesglose) +1 );
          ListaDesglose[ High(ListaDesglose ) ] := DetalleDesglose ;
      end;
      // asignar los desgloses de iva recien creados, al objeto de factura:
      Factura.RegistroAlta.Desglose:= ListaDesglose;

      // totales de factura ¿inversion sujeto pasivo?
      if NOT facturaRegistro.inversionSujetoPasivo then // Factura Normal
      begin
          Factura.RegistroAlta.CuotaTotal   := NumeroVeriFactu(  facturaRegistro.cuotatotal ) ;
          Factura.RegistroAlta.ImporteTotal := NumeroVeriFactu(  facturaRegistro.total );
      end
      else
      begin
          Factura.RegistroAlta.CuotaTotal   := NumeroVeriFactu( 0 );  // inversion sujeto pasivo
          Factura.RegistroAlta.ImporteTotal := NumeroVeriFactu( facturaRegistro.iva[0].baseImp );
      end;


      // factura rectificada: (1 x factura)
      if facturaRegistro.total <0 then
      begin
          setLength(rectificadasArray,1);
          rectificada:=IDFacturaARType.Create;

          rectificada.IDEmisorFactura       :=cabecera.emisor.nifEmisor;
          rectificada.NumSerieFactura       :=facturaRegistro.facturaRectificada;
          rectificada.FechaExpedicionFactura:=facturaRegistro.fechaFacturaRectificada;

          rectificadasArray[0]:=rectificada;

          Factura.RegistroAlta.FacturasRectificadas :=rectificadasArray;
          Factura.RegistroAlta.TipoRectificativa    :=ClaveTipoRectificativaType(1);
      end;

      // Encadenamiento con factura anterior
      Factura.RegistroAlta.Encadenamiento := Encadenamiento3.Create;

      // ¿ es el primer registro ?
      if sesiones[sesion].facturas[indice-1].huella='' then Factura.RegistroAlta.Encadenamiento.PrimerRegistro:=PrimerRegistroCadenaType(0) // S
      else
      begin  // no es el primer registro, colocar encadenamiento anterior
           Factura.RegistroAlta.Encadenamiento.RegistroAnterior:=EncadenamientoFacturaAnteriorType.Create;

           Factura.RegistroAlta.Encadenamiento.RegistroAnterior.IDEmisorFactura         :=cabecera.emisor.nifEmisor;
           Factura.RegistroAlta.Encadenamiento.RegistroAnterior.NumSerieFactura         :=sesiones[sesion].facturas[indice-1].numSerieFactura;
           Factura.RegistroAlta.Encadenamiento.RegistroAnterior.FechaExpedicionFactura  :=sesiones[sesion].facturas[indice-1].fechaFactura;
           Factura.RegistroAlta.Encadenamiento.RegistroAnterior.Huella                  :=sesiones[sesion].facturas[indice-1].huella;
      end;

    // sistemaInformatico
    sistemaInformatico( cabecera, Factura );

    // XSDatetime
    XSDatetime := TXSDatetime.Create;
    XSDatetime.UseZeroMilliseconds := False;
    XSDatetime.AsDateTime := Now;
    XSDatetime.Millisecond := 0;
    XSDatetime.UseZeroMilliseconds := False;
    XSDatetime.FractionalSeconds := 0;


    Factura.RegistroAlta.FechaHoraHusoGenRegistro := XSDatetime; // Formato: YYYY-MM-DDThh:mm:ssTZD (ej: 2024-01-01T19:20:30+01:00) (ISO 8601)

    // Huella
    Factura.RegistroAlta.TipoHuella := TipoHuellaType._01;

    Factura.RegistroAlta.Huella             := GenerarHuella_alta_RegistroVerifactu(sesion,indice,Factura.RegistroAlta);
    sesiones[sesion].facturas[indice].huella:=Factura.RegistroAlta.Huella;

    // fin, devolver el objeto   registroFacturaType.RegistroAlta  creado desde la informacion contenida en el record TRegistroFactura (ver utiles.pas)
    result:=factura;
end;
  #3  
Antiguo 08-04-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Generacion de huella

este es un tema sobre el que tengo dudas.

el componente, genera la huella durante el envio de la factura. Si enviamos en el momento de hacer la factura, no hay problema. La huella generada coincide con la generacion de la factura.

Si la factura no pasa (por motivos tecnicos, fallo de la AEAT o de internet), no se cambia nada de la factura, y se reenvia de nuevo, se generara otra huella con la fecha y hora actualizadas. Que podria diferir del momento de la generacion de la factura.

( Eso si: si la fecha de la factura es distinta a la actual se activara el flag de incidencia, pero con una fecha de generacion de registro actual que NO coincidira con la fecha de la factura )
  #4  
Antiguo 08-04-2025
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 162
Poder: 14
ramherfer Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
Generacion de huella

este es un tema sobre el que tengo dudas.

el componente, genera la huella durante el envio de la factura. Si enviamos en el momento de hacer la factura, no hay problema. La huella generada coincide con la generacion de la factura.

Si la factura no pasa (por motivos tecnicos, fallo de la AEAT o de internet), no se cambia nada de la factura, y se reenvia de nuevo, se generara otra huella con la fecha y hora actualizadas. Que podria diferir del momento de la generacion de la factura.

( Eso si: si la fecha de la factura es distinta a la actual se activara el flag de incidencia, pero con una fecha de generacion de registro actual que NO coincidira con la fecha de la factura )
Habiendo revisado la documentación y teniendo en cuenta que no es un reenvio, sino que en el intento anterior por algún motivo, no pudo hacerlo. La huella debería ser la misma que en el primer intento y debiendo coincidir con el envio que se complete, ya que esa coincidiría la fecha de expedición y la de generación (entrada en nuestro registro SIF - primer intento -). Yo genero el registro SIF pero por motivos ajenos al sistema de facturación, no puedo enviar el registro.

Es como lo entiendo y veo. Por favor corregirme si estoy en un error.
Un saludo,
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
  #5  
Antiguo 08-04-2025
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.214
Poder: 24
newtron Va camino a la fama
Cita:
Empezado por seccion_31 Ver Mensaje
Generacion de huella

este es un tema sobre el que tengo dudas.

el componente, genera la huella durante el envio de la factura. Si enviamos en el momento de hacer la factura, no hay problema. La huella generada coincide con la generacion de la factura.

Si la factura no pasa (por motivos tecnicos, fallo de la AEAT o de internet), no se cambia nada de la factura, y se reenvia de nuevo, se generara otra huella con la fecha y hora actualizadas. Que podria diferir del momento de la generacion de la factura.

( Eso si: si la fecha de la factura es distinta a la actual se activara el flag de incidencia, pero con una fecha de generacion de registro actual que NO coincidira con la fecha de la factura )

Yo creo que, aunque no se pueda enviar la factura por lo que sea, la huella no habría que cambiarla. La factura se ha emitido en un momento determinado y eso no se debería de cambiar. Yo en particular no cambio absolutamente nada de la factura aunque la envíe más tarde, lo único es el parámetro de incidencia si veo que se retrasa más de lo estipulado.


Saludos.
__________________
Be water my friend.
  #6  
Antiguo 08-04-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por newtron Ver Mensaje
Yo creo que, aunque no se pueda enviar la factura por lo que sea, la huella no habría que cambiarla. La factura se ha emitido en un momento determinado y eso no se debería de cambiar. Yo en particular no cambio absolutamente nada de la factura aunque la envíe más tarde, lo único es el parámetro de incidencia si veo que se retrasa más de lo estipulado.


Saludos.
si, yo pienso lo mismo. De ahi mis dudas. (gracias)

hare pruebas, en principio se me ha ocurrido:

1) un evento que se enviara al calcular la huella de una factura, asi pase lo que pase, siempre se podra guardar, y/o bien al añadir la factura. (ya hay una funcion sin uso, que podria hacer eso)

(es mas seguro guardar la huella antes del envio, que recogerla tras el envio como se hace ahora)

2) al añadir la factura, se adjunta la huella archivada (lo cual indicaria de facto una incidencia), o no se adjunta, lo cual indicaria que es la primera vez que se intenta enviar, por tanto se enviara el evento.

3) enviar con incidencia o no segun ocurra.

Saludos !

Última edición por seccion_31 fecha: 08-04-2025 a las 21:03:30.
  #7  
Antiguo 09-04-2025
jguso jguso is offline
Miembro
 
Registrado: sep 2024
Posts: 42
Poder: 0
jguso Va por buen camino
capicom

como hacemos si no usamos capicom para los certificados, de que forma puedo indicar el certificado y el password para poder transmitir la factura a la aeat.


No hay posibilidad de decirle nombre de certificado y password ?????
  #8  
Antiguo 09-04-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
Cita:
Empezado por jguso Ver Mensaje
como hacemos si no usamos capicom para los certificados, de que forma puedo indicar el certificado y el password para poder transmitir la factura a la aeat.


No hay posibilidad de decirle nombre de certificado y password ?????
en el nombre del certificado el nombre de archivo .pfx o .p12
en passwordcertificado pues eso.
  #9  
Antiguo 09-04-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por seccion_31 Ver Mensaje
Generacion de huella

este es un tema sobre el que tengo dudas.
el componente, genera la huella durante el envio de la factura. Si enviamos en el momento de hacer la factura, no hay problema. La huella generada coincide con la generacion de la factura.
Ya lo hemos hablado.
Yo creo que ese comportamiento es erróneo según la documentación.

Creo que la huella dela factura, los encadenamientos, los QR,... se deben generar en el momento de crear la factura, independientemente de cuando se envíe.
Si por lo que sea el envío no puede hacerse, el sistema debe seguir funcionando de forma "normal".

Perdonad, si no estáis refiriéndoos a esto y estoy "meando fuera de tiesto".
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
  #10  
Antiguo 09-04-2025
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 863
Poder: 3
bmfranky Va por buen camino
Fecha a Guardar Encadenamieno

Cita:
Empezado por seccion_31 Ver Mensaje
Ya esta todo prácticamente modificado. Para que funcione en esos "envios fallidos".

Pero.. una pregunta mas

El encadenamiento de esa factura reenviada, contra que se hace?

¿El encadenamiento original de cuando se genero el registro?

¿o el nuevo encadenamiento del registro anterior?

Saludos !
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Ya lo hemos hablado.
Yo creo que ese comportamiento es erróneo según la documentación.

Creo que la huella dela factura, los encadenamientos, los QR,... se deben generar en el momento de crear la factura, independientemente de cuando se envíe.
Si por lo que sea el envío no puede hacerse, el sistema debe seguir funcionando de forma "normal".

Perdonad, si no estáis refiriéndoos a esto y estoy "meando fuera de tiesto".

Hola, lo que teneis que tener en cuenta es que el dato

Código:
<FechaHoraHusoGenRegistro>


Se validará que la FechaHoraHusoGenRegistro sea menor o igual que la fecha del sistema
de la AEAT, admitiéndose un margen de error. En caso de superar el umbral, se devolverá un
aviso de error (no generará rechazo).
Significa, Fecha y Hora + Huso Horario "Generacion Registro"
No pide la fechaca hora del envio, el envio puede ser despues, por varios motivos, incluso no haber envio, si estamos en no Verifactu.
Por logica se tiene que guardar en el momento de emitir/crear la factura/registro, no en el momento del envio, tampoco se puede modificar y "Siempre", consultar los datos del ultimo HASH, del encadenamiento para continuar con la cadena, sea de lo que sea, porque si encadenamos las acciones, hemos de encadenar con su cadena independiente a los de registros de facturacion.

Si a lo que te refieres es si se ha de cambiar el encadenamiento , no de ningun modo, el encadenamiento se refiere a cada registro.
Código:
  <RegistroAlta xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd">
    xxxxx
    xxxxx
</RegistroAlta>
Que puede ser de alta , baja ,etc, esto es lo que hay que encolar, guardar, etc para enviar/ reenviar, con sus datos originales, tanto si se envia al momento , como en diferido.
Asignando en la cabecera , si ha habido algun error, etc...

Espero que entre todos lo dejemos mas claro.
__________________
Uno se alegra de ser útil. (Isaac Asimov)

Última edición por bmfranky fecha: 09-04-2025 a las 14:09:02. Razón: Nodo equivocado
  #11  
Antiguo 09-04-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Poder: 10
seccion_31 Va por buen camino
gracias por las aclaraciones

En la proxima actualizacion sera posible enviar una factura con su huella original y anterior original. si han pasado mas de 2 minutos desde la huella proporcionada, marcara como incidencia ese envio. ¿ ese tiempo de 2 minutos esta bien ?

En principio la forma de trabajar con el componente sería, de forma simplificada.

INICIO

1) hago una factura
2) inmedatamente la envio, (con exito, o no, me da lo mismo, igual que imprimo la envio)
3) obtendre su huella, la archivo en la factura
4) proceso el envio (si es posible, podria ser que no, debido a causas externas, si es posible guardo el csv )

FIN

ADICIONALMENTE:

1) Crear una lista de facturas pendientes de envio
2) Enviarlas en cuanto sea posible, reutilizando esa huella y huella anterior almacenada


Creo que el proceso cumple. Para procesos de facturacion individuales.

Con este tema, creo que queda cerrado ya todos los flecos a falta de probarlo.

Su implementacion en los que lo esten usando sera muy simple.

gracias !

Nota: en mi caso particular, ni pregunto, ni hago pausas, se pulsa el boton de facturar y se envia la factura, despues se imprime. por tanto generacion del registro y envio van de la mano. Si el envio NO se completa, queda archivada la huella que sera reutilizada en su reenvio.

Última edición por seccion_31 fecha: 09-04-2025 a las 14:52:46.
  #12  
Antiguo 09-04-2025
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 863
Poder: 3
bmfranky Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
gracias por las aclaraciones

En la proxima actualizacion sera posible enviar una factura con su huella original y anterior original. si han pasado mas de 2 minutos desde la huella proporcionada, marcara como incidencia ese envio. ¿ ese tiempo de 2 minutos esta bien ?

En principio la forma de trabajar con el componente sería, de forma simplificada.

INICIO

1) hago una factura
2) inmedatamente la envio, (con exito, o no, me da lo mismo, igual que imprimo la envio)
3) obtendre su huella, la archivo en la factura
4) proceso el envio (si es posible, podria ser que no, debido a causas externas, si es posible guardo el csv )

FIN

ADICIONALMENTE:

1) Crear una lista de facturas pendientes de envio
2) Enviarlas en cuanto sea posible, reutilizando esa huella y huella anterior almacenada


Creo que el proceso cumple. Para procesos de facturacion individuales.

Con este tema, creo que queda cerrado ya todos los flecos a falta de probarlo.

Su implementacion en los que lo esten usando sera muy simple.

gracias !
Hola lo único es que los puntos 2 y 3 están invertidos primero se halla la huella y luego se envia
__________________
Uno se alegra de ser útil. (Isaac Asimov)
Tema Cerrado


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Verifactu o por requerimiento (no-verifactu) ¿decisión del usuario? Maska10 Temas legales 2 07-12-2024 12:34:47
Demo de una applicación para una estación de enfermera con RAD Studio AgustinOrtu La Taberna 1 21-07-2015 17:41:35
Demo Delphi, EMail Caral Internet 1 19-12-2006 00:37:56
Demo de delphi 2005 mazinger Varios 2 18-12-2004 09:23:09
El Rave que viene con Delphi es una Demo? apicito Impresión 0 04-06-2003 11:33:36


La franja horaria es GMT +2. Ahora son las 08:21:22.


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
Copyright 1996-2007 Club Delphi