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
  #3481  
Antiguo 09-11-2022
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 143
Poder: 4
rci Va por buen camino
Cita:
Empezado por Irreo Ver Mensaje
¿Pero ese error lo has obtenido desde el servicio KONTSULTA, o fue lo que te devolvieron al enviar la factura a Alta?

Yo mirando la respuesta XML que tuvimos, tengo esto:

00 - Recibido - ALTA PREP
1153
El NIF del destinatario tiene un formato erróneo

Es decir, el estado es "00", recibido, pero con errores.

Esto fue en Gipuzkoa.

Fué al enviar una Alta de factura. El nif es correcto pero se nos pasó y venía un un guión. Y la factura se rechaza, código de error 002
Fichero no cumple el esquema XSD. Detalle del error: cvc-pattern-valid: Value 'NIFOKAQI-R' is not facet-valid with respect to pattern '(([a-z|A-Z]{1}\d{7}[a-z|A-Z]{1})|(\d{8}[a-z|A-Z]{1})|([a-z|A-Z]{1}\d{8}))' for type 'NIFType'.


En nuestro caso el estado es 01 Rechazada


Gracias
Responder Con Cita
  #3482  
Antiguo 09-11-2022
sexxxwax sexxxwax is offline
Registrado
 
Registrado: nov 2022
Posts: 6
Poder: 0
sexxxwax Va por buen camino
bloqueado con el xml

Buenas a tod@s, estoy migrando un programa de D6 a D10 con todo lo que supone d incompatibilidades (componentes bde, informes qr, ...) y ahora encima esto del ticketbai; estoy leyendo el foro d ticketbai (voy x la página 60) y me imagino las horas y roturas d cabeza que llevais, la cantidad d errores que habeis solucionado entre todos, así que os felicito.

Yo necesitaría algo d ayuda, así que pondré varias cosas x si alguno tiene tiempo o ganas d ayudarme, d todas formas gracias x anticipado.

Estoy montando el xml insertando datos d las tablas del tpv y al hacer el bucle para recorrer las líneas d la venta actual añadiendolas como iddetalleventa sólo me carga la última línea. Os pego el código x si me podeis ayudar.

Código Delphi [-]
DATOSFACTURA.FechaOperacion:=TPVH.FIELDBYNAME('FECHA').ASSTRING; 
DATOSFACTURA.DescripcionFactura:='TPV1-'+FIELDBYNAME('N_VENTA').ASSTRING; 
TPV.FIRST; 
while NOT TPV.EOF do BEGIN 
    with DATOSFACTURA.DetallesFactura.IDDetalleFactura do begin 
        DescripcionDetalle:=FIELDBYNAME('ARTICULO').ASSTRING; 
        Cantidad:=FIELDBYNAME('CTDAD').ASSTRING; 
        ImporteUnitario:=FLOATTOSTR(ROUNDTO(FIELDBYNAME('PVP_E U').VALUE,-2)); 
        Descuento:=FIELDBYNAME('DTO').ASSTRING; 
        ImporteTotal:=FLOATTOSTR(ROUNDTO(FIELDBYNAME('IMPORTE_ EU').VALUE,-2)); 
    end; 
    TPV.NEXT; 
END; 
DATOSFACTURA.IMPORTETOTALFACTURA:=FLOATTOSTR(ROUNDTO(TPVH.FIELDBYNAME('TOTAL_EU').VALUE,-2));

Última edición por Neftali [Germán.Estévez] fecha: 09-11-2022 a las 13:22:58. Razón: Formatear código correctamente
Responder Con Cita
  #3483  
Antiguo 09-11-2022
Irreo Irreo is offline
Miembro
 
Registrado: mar 2022
Posts: 70
Poder: 3
Irreo Va por buen camino
Cita:
Empezado por sexxxwax Ver Mensaje
sólo me carga la última línea. Os pego el código x si me podeis ayudar.
De DELPHI no tengo ni idea, pero mirando ese bucle, no veo ningún código que me sugiera que estás agregando líneas de factura.
Veo por un lado asignaciones a Cantidad, Descuento, etc...
Y por otro lado veo que a cada vuelta entras en "IDDetalleFactura" con un With.
Si en Delphi con ese "with" inicial ya estás creando una nueva línea, entonces no me hagas caso, pero si ese lenguaje es parecido a otros que he usado, diría que estás asignando los valores todo el rato a la misma fila.
Responder Con Cita
  #3484  
Antiguo 09-11-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
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 sexxxwax Ver Mensaje
Estoy montando el xml insertando datos d las tablas del tpv y al hacer el bucle para recorrer las líneas d la venta actual añadiendolas como iddetalleventa sólo me carga la última línea.
Es posible que para añadir cada línea debas hacer antes un Add:

Código Delphi [-]
var
   Detalle: IXMLIDDetalleFacturaType;
begin
   ...
   Detalle := ...DatosFactura.DetallesFactura.Add;
   // rellenar los valores
   Detalle.DescripcionDetalle := ...;
   Detalle.Cantidad := ...;
   Detalle.ImporteUnitario := ...;
   Detalle.Descuento := ...;
   Detalle.ImporteTotal := ...;
__________________
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.
Responder Con Cita
  #3485  
Antiguo 09-11-2022
sexxxwax sexxxwax is offline
Registrado
 
Registrado: nov 2022
Posts: 6
Poder: 0
sexxxwax Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Bienvenido.
Si das el modelo de impresora será más fácil poder ayudarte.



si, lo siento, el modelo es una iguual TP8002 compatible con ESC/POS
Responder Con Cita
  #3486  
Antiguo 09-11-2022
sexxxwax sexxxwax is offline
Registrado
 
Registrado: nov 2022
Posts: 6
Poder: 0
sexxxwax Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Es posible que para añadir cada línea debas hacer antes un Add:
Código Delphi [-]
var
   Detalle: IXMLIDDetalleFacturaType;
begin
   ...
   Detalle := ...DatosFactura.DetallesFactura.Add;
   // rellenar los valores
   Detalle.DescripcionDetalle := ...;
   Detalle.Cantidad := ...;
   Detalle.ImporteUnitario := ...;
   Detalle.Descuento := ...;
   Detalle.ImporteTotal := ...;
Gracias pero el add no lo reconoce, esto tira sin error:

Código Delphi [-]
  while NOT TPV.EOF do
  BEGIN
    DATOSFACTURA.DetallesFactura.addchild('IDDetalleFactura');
    DATOSFACTURA.DetallesFactura.IDDetalleFactura.addchild('DescripcionDetalle');
    DATOSFACTURA.DetallesFactura.IDDetalleFactura.DescripcionDetalle := FIELDBYNAME('ARTICULO').ASSTRING;
    DATOSFACTURA.DetallesFactura.IDDetalleFactura.addchild('Cantidad');
    DATOSFACTURA.DetallesFactura.IDDetalleFactura.Cantidad := FIELDBYNAME('CTDAD').ASSTRING;
    DATOSFACTURA.DetallesFactura.IDDetalleFactura.addchild('ImporteUnitario');
    DATOSFACTURA.DetallesFactura.IDDetalleFactura.ImporteUnitario := FLOATTOSTR(ROUNDTO(FIELDBYNAME('PVP_E U').VALUE, -2));
    DATOSFACTURA.DetallesFactura.IDDetalleFactura.addchild('Descuento');
    DATOSFACTURA.DetallesFactura.IDDetalleFactura.Descuento := FIELDBYNAME('DTO').ASSTRING;
    DATOSFACTURA.DetallesFactura.IDDetalleFactura.addchild('ImporteTotal');
    DATOSFACTURA.DetallesFactura.IDDetalleFactura.ImporteTotal := FLOATTOSTR(ROUNDTO(FIELDBYNAME('IMPORTE_ EU').VALUE, -2));
    TPV.NEXT;
  END;

pero obtengo esta salida:

Cita:
DetallesFactura
IDDetalleFactura
DescripcionDetalle = CORREO ALAVA
Cantidad = 4
ImporteUnitario = 2,3
Descuento = 0
ImporteTotal = 9,2
DescripcionDetalle
Cantidad
ImporteUnitario
Descuento
ImporteTotal
IDDetalleFactura
ImporteTotalFactura = 11,7

intento poner el formato d código delphi y en previsualizar se ve bien pero luego sale todo sin formato, sorry. Puede ser x este aviso??? 'Aún no tienes permitido poner enlaces ni imágenes'

Última edición por Neftali [Germán.Estévez] fecha: 09-11-2022 a las 15:14:41.
Responder Con Cita
  #3487  
Antiguo 09-11-2022
sexxxwax sexxxwax is offline
Registrado
 
Registrado: nov 2022
Posts: 6
Poder: 0
sexxxwax Va por buen camino
Much@s a lo mejor os estareis partiendo la caja flipando conmigo, que no soy capaz d mandar un post en condiciones, no es mi intención dar curro al admin editando mis post, pero intento hacerlo bien.

Desarrollé una aplicación en los años 90, D1, D2... d unas 89.000 líneas de código, además dl schema d la bbdd que entre sp y triggers andará x las 2.500. Pero todo esto me supera, en todos los grupos hay un amigo patoso, tener paciencia conmigo.

Si alguien necesita código de lectura d cod d barras, facturación, etc..... estoy encantado d aportar mi granito d arena.

Un saludo a tod@s y gracias x la comprensión

Última edición por Neftali [Germán.Estévez] fecha: 09-11-2022 a las 15:12:38.
Responder Con Cita
  #3488  
Antiguo 09-11-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
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 sexxxwax Ver Mensaje
intento poner el formato d código delphi y en previsualizar se ve bien pero luego sale todo sin formato, sorry. Puede ser x este aviso??? 'Aún no tienes permitido poner enlaces ni imágenes'
Es posible que sea problema del previsualizador o del navegador (o de ambas cosas).
Prueba a no usar la previsualización.
__________________
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.
Responder Con Cita
  #3489  
Antiguo 09-11-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
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 sexxxwax Ver Mensaje
Gracias pero el add no lo reconoce, esto tira sin error:
Sí que funciona el Add.
Te pongo algo de código para trabajar en las facturas de TBAI, simplemente para que veas.

Un código como este (revisa sobre todo la parte del Add para las líneas):

Código Delphi [-]
uses
  ticketBaiV12, XMLDoc, XMLIntf;

procedure TForm3.Button1Click(Sender: TObject);
var
  TicketBAI: IXMLTicketBai;
  detalleFactura: IXMLIDDetalleFacturaType;
begin
  TicketBAI := NewTicketBai;

  TicketBAI.Cabecera.IDVersionTBAI := '1.2';
  //  ...
  detalleFactura := TicketBAI.Factura.DatosFactura.DetallesFactura.Add;
  detalleFactura.DescripcionDetalle := 'primera linea';
  detalleFactura.Cantidad := '1';
  detalleFactura.ImporteUnitario:= '100';
  detalleFactura.DescripcionDetalle := '10';
  detalleFactura.ImporteTotal := '90';
  detalleFactura := TicketBAI.Factura.DatosFactura.DetallesFactura.Add;
  detalleFactura.DescripcionDetalle := 'segunda linea';
  detalleFactura.Cantidad := '2';
  detalleFactura.ImporteUnitario:= '200';
  detalleFactura.DescripcionDetalle := '10';
  detalleFactura.ImporteTotal := '180';
  //...
  Memo1.Text := TicketBAI.XML;

  Memo1.Text := xmlDoc.FormatXMLData(TicketBAI.OwnerDocument.XML.Text);

end;

Genera una salida como esta (con 2 detalles de líneas):

Código:
<?xml version="1.0"?>
<T:TicketBai xmlns:T="urn:ticketbai:emision">
  <Cabecera>
    <IDVersionTBAI>1.2</IDVersionTBAI>
  </Cabecera>
  <Sujetos/>
  <Factura>
    <DatosFactura>
      <DetallesFactura>
        <IDDetalleFactura>
          <DescripcionDetalle>10</DescripcionDetalle>
          <Cantidad>1</Cantidad>
          <ImporteUnitario>100</ImporteUnitario>
          <ImporteTotal>90</ImporteTotal>
        </IDDetalleFactura>
        <IDDetalleFactura>
          <DescripcionDetalle>10</DescripcionDetalle>
          <Cantidad>2</Cantidad>
          <ImporteUnitario>200</ImporteUnitario>
          <ImporteTotal>180</ImporteTotal>
        </IDDetalleFactura>
      </DetallesFactura>
    </DatosFactura>
  </Factura>
  <HuellaTBAI/>
</T:TicketBai>
__________________
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.
Responder Con Cita
  #3490  
Antiguo 09-11-2022
josevalle josevalle is offline
Miembro
 
Registrado: may 2017
Posts: 13
Poder: 0
josevalle Va por buen camino
Hash

Hola. El Hash te lo dan ellos. El que pones es el actual que lo cambiaron en mayo. Yo lo dejo modificable por si lo vuelven a cambiar.
Responder Con Cita
  #3491  
Antiguo 10-11-2022
Sanduzelai Sanduzelai is offline
Miembro
 
Registrado: ago 2021
Posts: 40
Poder: 0
Sanduzelai Va por buen camino
NIF Emisor incorrecto

Hola,
hoy he realizado mi primer envío de pruebas a la hacienda alavesa y he recibido lo siguiente:

Código PHP:
<FechaRecepcion>10-11-2022 13:29:39</FechaRecepcion>
    <
Estado>00</Estado>
    <
Descripcion>Recibido</Descripcion>
    <
Azalpena>Jasota</Azalpena>
    <
ResultadosValidacion>
      <
Codigo>015</Codigo>
      <
Descripcion>AVISONIF emisor no es correctono es contribuyente alavés o no está registrado en IAE</Descripcion>
      <
Azalpena>OHARRAJaulkitzailearen IFZ ez da zuzenaez da Arabako zergaduna edo ez dago JEZean erregistratuta</Azalpena>
    </
ResultadosValidacion
Me registre en su día como empresa desarrolladora para enviar a la hacienda de Gipuzkoa y ahora me he dado de alta para el entorno de test de Álava. No he hecho nada más.

¿Tengo que registrarme en algún otro lado para corregir este aviso?

En el entorno de PRO de Gipuzkoa estoy funcionando bien con el mismo NIF Emisor.
No se si se me esta escapando algo para Alava...
Responder Con Cita
  #3492  
Antiguo 10-11-2022
Sanduzelai Sanduzelai is offline
Miembro
 
Registrado: ago 2021
Posts: 40
Poder: 0
Sanduzelai Va por buen camino
NIF Emisor incorrecto

Revisando la Guía del entorno de pruebas veo:

Cita:
En el caso de que no se cumplan esas condiciones en el entorno de pruebas, se dará un aviso: “AVISO: NIF emisor no es correcto, no es contribuyente alavés o no está registrado en IAE”.
Este aviso no es bloqueante para hacer las pruebas. Pero si le sucede, podrá evitarlo enviando un mail a informaciontecnicaTBAI@araba.eus, indicando en el asunto del correo el texto “Pruebas TicketBAI: Nombre Empresa / Categoría: NIF Emisor” y aportando la siguiente información:
- NIF emisor
- Nombre y apellidos/Razón social
He mandado el correo con los datos tal y como indica para evitar que aparezca el aviso en mis pruebas, pero ahora me surge la duda:
Cuando pase al entorno de PRO, ¿me volverá a aparecer el AVISO?

Yo siempre realizo envíos de clientes:
Código PHP:
<EmitidaPorTercerosODestinatario>T</EmitidaPorTercerosODestinatario
Responder Con Cita
  #3493  
Antiguo 10-11-2022
Sanduzelai Sanduzelai is offline
Miembro
 
Registrado: ago 2021
Posts: 40
Poder: 0
Sanduzelai Va por buen camino
NIF Emisor incorrecto

Me respondo a mi mismo por si a alguien le viene bien.
Me han contestado esto:

Cita:
Ya hemos procedido a dar de alta el NIF en el entorno de pruebas.

El aviso es porque el NIF emisor no es alavés. En producción en principio el emisor debería ser alavés. Si no es así saldrá el aviso y para solucionarlo deberá pasarse por la hacienda alavesa.
Responder Con Cita
  #3494  
Antiguo 10-11-2022
Irreo Irreo is offline
Miembro
 
Registrado: mar 2022
Posts: 70
Poder: 3
Irreo Va por buen camino
Buenas,

Estaba repasando algunos envíos de facturas de hoy, y me he encontrado esto:



La numeración de facturas ya me dijeron los de Hacienda que "da igual" el orden en que se les envíen (aunque se recomienda que sean correlativos).

Lo que no me queda claro es si les va a gustar la hora....

¿Tenéis alguna experiencia con este tema? Es decir, si os haya pasado enviar alguna factura así y que no os hayan dicho nada.

Por el momento están como OK, y tampoco han llegado avisos de "posible error de encadenamiento".

Gracias.
Responder Con Cita
  #3495  
Antiguo 11-11-2022
edari edari is offline
Miembro
 
Registrado: jun 2021
Posts: 177
Poder: 3
edari Va por buen camino
Hacieenda Alava - Facturas a bares de chinos

Buenos días,


Tengo un problema con los típicos bares chinos


En la parte del IDOTRO ll grabo el código de país CN que lo saco de la lista de países de la Hacienda nacional ( https://sede.agenciatributaria.gob.e...rritorios.html ) porque de la de Alava no llegué a ella y me devuevlve 54-AVISO: Error en factura: Error en país del destinatario no nacional


Luego tengo un error 79-AVISO: Error validación de negocio [Importe total no coincide con el sumatorio de desglose


Le pongo causa de la exención E2 y en la base imponible pues eso.


Gracias de antemano
Responder Con Cita
  #3496  
Antiguo 11-11-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
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 Irreo Ver Mensaje



La numeración de facturas ya me dijeron los de Hacienda que "da igual" el orden en que se les envíen (aunque se recomienda que sean correlativos).

¿Tenéis alguna experiencia con este tema? Es decir, si os haya pasado enviar alguna factura así y que no os hayan dicho nada.
Por el momento están como OK, y tampoco han llegado avisos de "posible error de encadenamiento".
Gracias.
Entiendo que el encadenamiento no es en el orden en que las estás viendo en pantalla, por lo tanto si las ordenaras por fecha/hora coincidiría con el orden del encadenamiento, por lo tanto entiendo que no hay problema.
No cuadra con el orden del primer ID de la tabla, pero sí cn la fecha/hora (no se si me explico).
__________________
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.
Responder Con Cita
  #3497  
Antiguo 11-11-2022
Irreo Irreo is offline
Miembro
 
Registrado: mar 2022
Posts: 70
Poder: 3
Irreo Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Entiendo que el encadenamiento no es en el orden en que las estás viendo en pantalla, por lo tanto si las ordenaras por fecha/hora coincidiría con el orden del encadenamiento, por lo tanto entiendo que no hay problema.
No cuadra con el orden del primer ID de la tabla, pero sí cn la fecha/hora (no se si me explico).
El encadenamiento está en el orden de la imagen, sí, no por fecha:

1713 -> 1712 -> 1711

En nuestro caso por un lado tenemos una aplicación de Windows que está en los puntos de venta, que es la que genera una factura, asigna la fecha, etc.. y luego la envía a un API intermedio (PHP) que está en un servidor. Este API simplemente recibe facturas, las encola, y las envía, poniendo el encadenamiento según van entrando en cola.

La factura 1713 ha tardado 3 minutos en enviarse a la cola (desde Windows), y creo que es porque es una factura completa. Me da que la aplicación de Windows está generando la factura, con su fecha y todo, y después en tienda se han puesto a introducir datos de cliente.

El tema es que (aparte del API) en esta aplicación yo solo me he encargado de hacer una función que envía los datos al API (esta función recopila los datos de la factura, genera un objeto JSON, etc. y lo envía al API).

Pero el resto de funcionalidades ya existentes, más relacionadas con clientes/pedidos etc. están fuera de mi "jurisdicción".

Les voy a pedir que entren en la Sede Electrónica a ver si hay alguna alarma.

En cualquier caso, les voy a pedir que la fecha de expedición se guarde justo antes de llamar a mi función.

De todas formas, preguntaba por saber si alguien más envía facturas así y no pasa nada.

La numeración entiendo que da igual mientras haya encadenamiento correcto (1600 -> 1607 -> 1606...), pero que la fecha de emisión no siga el orden de la numeración ya lo veo más raro...
Responder Con Cita
  #3498  
Antiguo 11-11-2022
Avatar de HerensugeBeltz
HerensugeBeltz HerensugeBeltz is offline
Miembro
 
Registrado: may 2021
Ubicación: Hondarribia
Posts: 88
Poder: 3
HerensugeBeltz Va por buen camino
Cita:
Empezado por Irreo Ver Mensaje
En nuestro caso por un lado tenemos una aplicación de Windows que está en los puntos de venta, que es la que genera una factura, asigna la fecha, etc.. y luego la envía a un API intermedio (PHP) que está en un servidor. Este API simplemente recibe facturas, las encola, y las envía, poniendo el encadenamiento según van entrando en cola.
A ver si lo he pillado:
El TPV1 encola la factura 1711 y, mientras el TPV2 prepara la factura 1712 (ya enlazada con la 1711), el TPV1 (o el 3) encola la factura 1713. Por último, el TPV2 encola la 1712.

¿no se puede enlazar y firmar la factura 1712 al final del proceso para evitar ese retraso?
Igual digo una chorrada, pero otra opción que puede que no sea viable sería asignar a cada TPV una serie diferente (por ej. T1, T2...). Entonces al servidor le llegarían las facturas T1-1711, T1-1712 (la 1713 anterior) y T2-17xx (la 1712 anterior).
Responder Con Cita
  #3499  
Antiguo 11-11-2022
Irreo Irreo is offline
Miembro
 
Registrado: mar 2022
Posts: 70
Poder: 3
Irreo Va por buen camino
Cita:
Empezado por HerensugeBeltz Ver Mensaje
A ver si lo he pillado:
El TPV1 encola la factura 1711 y, mientras el TPV2 prepara la factura 1712 (ya enlazada con la 1711), el TPV1 (o el 3) encola la factura 1713. Por último, el TPV2 encola la 1712.

¿no se puede enlazar y firmar la factura 1712 al final del proceso para evitar ese retraso?
Igual digo una chorrada, pero otra opción que puede que no sea viable sería asignar a cada TPV una serie diferente (por ej. T1, T2...). Entonces al servidor le llegarían las facturas T1-1711, T1-1712 (la 1713 anterior) y T2-17xx (la 1712 anterior).
No vas mal encaminado, aunque no ha sido justamente así

Antes de nada, por ampliar información: Las TPV llaman a una función "EmitirFactura(Codigo)". Aquí es donde entro yo: A partir del identificador interno (Código) obtengo serie, número factura, fecha, así como las cabeceras, líneas, etc...
Una vez hecho esto, envío el JSON al API.

Es decir, esta función es lo último que se llama cuando en la base de datos de la oficina central ya está la factura creada, de cara a obtener el QR.

En el lado del API, en servidor, tengo unas bases de datos ya 100% relacionadas con TicketBAI, donde guardo las facturas recibidas, logs de envíos, etc...

Cuando me llega el JSON de una factura, agrego el registro como "Pendiente", la encadeno a la anterior, firmo, y devuelvo el QR. Un tercer proceso que se ejecuta cada 10 segundos, enviará la factura después, pero la TPV ya ha recibido su QR.

Es decir, en el momento que se llama a "EmitirFactura" ya está asignada la fecha y numeración.

Ahora, al lío:
Primero, es la factura 1713 la que han tardado en enviar, al ser completa.

Viendo los números, lo que creo que ha pasado es esto:

- TPV-1 emite la factura 1711 a las 17:56 (el API la pone en cola, encadena 1710)
- TPV-2 genera (NO emite) la factura a las 17:57 con los datos del pedido, pero no le asigna numeración (asumo que están rellenando datos de cliente) (no se envía al API ni encola nada)
- TPV-3 emite la factura 1712 a las 18:00 (el API la pone en cola, encadena 1711)
- TPV-2 termina de meter los datos del cliente, y al emitir la factura le asigna la numeración 1713 (el API la pone en cola, encadena 1712)

Lo voy a confirmar con la persona que se ha encargado de implementar esto en las TPV. De todas formas la fecha se debería asignar en el momento de pulsar el botón de cerrar el pedido para emitir el ticket. De este modo, la factura 1713 habría sido por ejemplo a las 18:01

Y justo ahora según escribo esto, estoy viendo que la factura 1714 está marcada como emitida a las 17:59.

Así que no me extrañaría si los de Hacienda nos den algún tirón de orejas...
Responder Con Cita
  #3500  
Antiguo 11-11-2022
APO APO is offline
Miembro
 
Registrado: feb 2008
Posts: 121
Poder: 17
APO Va por buen camino
Cita:
Empezado por sexxxwax Ver Mensaje
Buenas a tod@s, estoy migrando un programa de D6 a D10 con todo lo que supone d incompatibilidades (componentes bde, informes qr, ...) y ahora encima esto del ticketbai; estoy leyendo el foro d ticketbai (voy x la página 60) y me imagino las horas y roturas d cabeza que llevais, la cantidad d errores que habeis solucionado entre todos, así que os felicito.

Yo necesitaría algo d ayuda, así que pondré varias cosas x si alguno tiene tiempo o ganas d ayudarme, d todas formas gracias x anticipado.

Estoy montando el xml insertando datos d las tablas del tpv y al hacer el bucle para recorrer las líneas d la venta actual añadiendolas como iddetalleventa sólo me carga la última línea. Os pego el código x si me podeis ayudar.

Código Delphi [-]
DATOSFACTURA.FechaOperacion:=TPVH.FIELDBYNAME('FECHA').ASSTRING; 
DATOSFACTURA.DescripcionFactura:='TPV1-'+FIELDBYNAME('N_VENTA').ASSTRING; 
TPV.FIRST; 
while NOT TPV.EOF do BEGIN 
    with DATOSFACTURA.DetallesFactura.IDDetalleFactura do begin 
        DescripcionDetalle:=FIELDBYNAME('ARTICULO').ASSTRING; 
        Cantidad:=FIELDBYNAME('CTDAD').ASSTRING; 
        ImporteUnitario:=FLOATTOSTR(ROUNDTO(FIELDBYNAME('PVP_E U').VALUE,-2)); 
        Descuento:=FIELDBYNAME('DTO').ASSTRING; 
        ImporteTotal:=FLOATTOSTR(ROUNDTO(FIELDBYNAME('IMPORTE_ EU').VALUE,-2)); 
    end; 
    TPV.NEXT; 
END; 
DATOSFACTURA.IMPORTETOTALFACTURA:=FLOATTOSTR(ROUNDTO(TPVH.FIELDBYNAME('TOTAL_EU').VALUE,-2));

Yo lo hago de la siguiente manera:

Código Delphi [-]
var
   FicheroXML: IXMLTicketBai;

...

            with FicheroXML.Factura.DatosFactura do
            begin
               FechaOperacion:=FormatDateTime('dd-mm-yyyy',qExec.FieldByName('FECHA').AsDateTime);
               DescripcionFactura:='VENTAS AL POR MENOR EESS';
               //Detalle factura
               qExec.First;
               i:=0;
               while not qExec.Eof do
               begin
                  DetallesFactura.Add;
                  DetallesFactura.IDDetalleFactura[i].DescripcionDetalle:=trim(qExec.FieldByName('DESCRIPCION_PRODUCTO').AsString);
                  DetallesFactura.IDDetalleFactura[i].Cantidad:=TransFloat(qExec.FieldByName('UNIDADES').AsFloat,2);
                  DetallesFactura.IDDetalleFactura[i].ImporteUnitario:=TransFloat(qExec.FieldByName('PRECIO_VENTA').AsFloat,8); //Importe unitario SIN  IVA
                  if Redondeo(qExec.FieldByName('PRECIO_VENTA').AsFloat,2)<>Redondeo(qExec.FieldByName('PRECIO').AsFloat,  2) then
                  begin
                     //Importe en euros del descuento de la línea de factura (el importe de descuento ha de ir siempre en positivo).
                     DetallesFactura.IDDetalleFactura[i].Descuento:=TransFloat((qExec.FieldByName('PRECIO_VENTA').AsFloat-qExec.FieldByName('PRECIO').AsFloat) *
                                                                                Redondeo(qExec.FieldByName('UNIDADES').AsFloat,2),2);
                  end
                  else
                  begin
                     DetallesFactura.IDDetalleFactura[i].Descuento:='0.00';
                  end;
                  DetallesFactura.IDDetalleFactura[i].ImporteTotal:=TransFloat(qExec.FieldByName('IMPORTE_IVA').AsFloat,2); //Importe total CON IVA
                  qExec.Next;
                  i:=i+1;
               end;
               ImporteTotalFactura:=TransFloat(qExec.FieldByName('TOTAL').AsFloat,2); //Importe total de la factura simplificada
               //Claves
               Claves.Add;
               Claves.IDClave[0].ClaveRegimenIvaOpTrascendencia:='01'; //Operación de régimen general
            end;
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
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3547 Hace 1 Semana 18:06:34
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


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


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