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
  #601  
Antiguo 12-05-2021
tejano tejano is offline
Miembro
 
Registrado: dic 2020
Posts: 128
Poder: 4
tejano Va por buen camino
Calculo CRC8

Buenas tardes,
Perdonad por mi ignorancia, pero sabéis de algún ejecutable al que se le mande la cadena de caracteres y devuelva el CRC8?
Mi programa de gestión es bastante viejo y no puedo definir variables tipo byte por lo que tampoco puedo desarrollar el módulo para calcular el CRC8.


Gracias de antemano.
Saludos
Responder Con Cita
  #602  
Antiguo 12-05-2021
Edgar7 Edgar7 is offline
Miembro
 
Registrado: nov 2020
Posts: 10
Poder: 0
Edgar7 Va por buen camino
Cita:
Empezado por sline Ver Mensaje
Todo parece estar en orden, me devuelve: TBAI-B09203993-200421-aZqWxK/x6JS3U-042
¿entonces es cosa de batuz?
Hola Sline,

Os paso la función de PHP para calcular el CRC que uso yo a ver si te sirve, creo que funciona correctamente:

Código:
class CrcParams {
	public $Array;
	public $Init;
	public $XorOut;
}

class Crc8 {

	public function ComputeCrc($crcParams, $data) {
		$crc = $crcParams->Init;

		foreach ($data as $d) {
			$crc = $crcParams->Array[ord($d) ^ $crc];
		}

		$crc = $crc ^ $crcParams->XorOut;

		$result = $crc & 0xFF;

		return str_pad($result, 3, "0", STR_PAD_LEFT);
	}
}

function calcular_crc($cadena) {		

	$CRC_8_ = new CrcParams();

	$CRC_8_->Init = 0x0;
	$CRC_8_->XorOut = 0x0;
	$CRC_8_->Array = array(0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D, 0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65, 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D, 0xE0, 0xE7, 0xEE,
	       0xE9, 0xFC, 0xFB, 0xF2, 0xF5, 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD, 0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD, 0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2, 0xFF, 
	       0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA, 0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2, 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A, 0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 
	       0x0A, 0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42, 0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A, 0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C, 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4, 0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 
	       0xE2, 0xEB, 0xEC, 0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4, 0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C, 0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44, 0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C, 0x21, 0x26, 0x2F, 
	       0x28, 0x3D, 0x3A, 0x33, 0x34, 0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63, 0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, 0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13, 0xAE, 
	       0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83, 0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3, );

	$valor = new Crc8();

	$resultado = $valor->ComputeCrc($CRC_8_, str_split(utf8_encode($cadena)));

	return $resultado;
 }
Ya nos comentas

Un saludo
Responder Con Cita
  #603  
Antiguo 12-05-2021
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 tejano Ver Mensaje
Perdonad por mi ignorancia, pero sabéis de algún ejecutable al que se le mande la cadena de caracteres y devuelva el CRC8?
Mi programa de gestión es bastante viejo y no puedo definir variables tipo byte por lo que tampoco puedo desarrollar el módulo para calcular el CRC8.

¿Te sirve una DLL? ¿O debe ser un ejecutable?
__________________
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
  #604  
Antiguo 12-05-2021
sline sline is offline
Miembro
 
Registrado: may 2021
Posts: 18
Poder: 0
sline Va por buen camino
Hola Edgar7,

He probado con las dos formas y ambas me devuelven el mismo crc para la misma cadena, y claro, ambas siguen dando error en batuz.

¿Podéis probar a generar una url cuya parte de la firma tenga un + o /?

como "TBAI-79732487C-120521-ME4g0D7g+iyVk-"
el crc me sale 130 y el crc de la url 081

Gracias!


Cita:
Empezado por Edgar7 Ver Mensaje
Hola Sline,

Un saludo
Responder Con Cita
  #605  
Antiguo 13-05-2021
tejano tejano is offline
Miembro
 
Registrado: dic 2020
Posts: 128
Poder: 4
tejano Va por buen camino
Buenos días Netfali, yo creo que sí me serviría una DLL.

Podrías enviármela o decirme dónde puedo conseguirla?

Gracias de nuevo.
Responder Con Cita
  #606  
Antiguo 13-05-2021
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 tejano Ver Mensaje
yo creo que sí me serviría una DLL.
Podrías enviármela o decirme dónde puedo conseguirla?
Conseguirla, no lo se, se puede hacer.
En delphi es bastante sencillo.

Te adjunto la DLL con 2 funciones (con parámetros diferentes, para que uses el que te vaya mejor):

Código Delphi [-]
// utilizando un string
function crc8S(const AText:string):byte;
// utilizando un Puntero (AnsiChar)
function crc8P(const AText:PAnsiString):byte;


Usa el código que pubicó [keys] en este mismo foro.

Para usarlo, por ejemplo desde Delphi, basta con algo así:

Código Delphi [-]
type
  TfunctionCRC8S = function(const AText:string): byte;
  TfunctionCRC8P = function(const AText:PAnsiChar): byte;

var
  str, fName:String;
  b:byte;
  h:cardinal;
  fs:TfunctionCRC8S;
  fp:TfunctionCRC8P;
begin

  // Nombre
  fName := ExtractFilePath(Application.ExeName) + 'crc8.dll';
  // comprobamos si existe, si no existe ya no continuamos
  if not FileExists(fName) then
    raise Exception.Create('No se encuentra la DLL  en: ' + sLineBreak + fName);
  // Cargar la DLL
  h := LoadLibrary(PChar(fName));
  if (h < 32) then
    raise Exception.Create('No se ha podido cargar la DLL');

  // buscar los métodos dentro de la DLL
  fs := GetProcAddress(h, 'crc8S');
  fp := GetProcAddress(h, 'crc8P');
  // Los ha encontrado
  if Assigned(fs) and Assigned(fp) then begin

    WriteLn('Escribir cadena de entrada o vacío para salir: ');
    ReadLn(Str);
    while (Str <> string.empty) do begin

      // Probarlo con parámetro string
      b := fs(Str);
      WriteLn('Cadena de entrada: ' + str);
      writeLn('Salida (string): ' + string.Format('%.3d',[b]));
      writeLn('-------------------------------');

      // Parámetro AnsiChar
      b := fp(PAnsiChar(Str));
      WriteLn('Cadena de entrada: ' + str);
      writeLn('Salida (PAnsiChar): ' + string.Format('%.3d',[b]));
      writeLn('-------------------------------');
      writeln(' ');

      // vuelta a empezar...
      WriteLn('Escribir cadena de entrada o vacío para salir: ');
      readLn(Str);
    end;
  end;
end.


Te adjunto el proyecto de test de la DDL (incluye el compilado para que puedas usarla directamente).
Así puedes ver cómo son las llamadas.

El funcionamiento sería este; Lo he probado con las siguientes cadena que han ido saliendo en el foro:

NOTA: Si probáis las URL's anteriores, coged el link no el texto en pantalla porque vBulletin lo corta.

Y para comprobar, tal y como han dicho, la web que mejor funciona es esta:
https://toolslick.com/programming/ha...crc-calculator


Archivos Adjuntos
Tipo de Archivo: zip Llamada a DLL CRC8.zip (1,23 MB, 59 visitas)
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 13-05-2021 a las 14:03:22.
Responder Con Cita
  #607  
Antiguo 13-05-2021
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
Me acabo de dar cuenta que en el ejemplo, la carga de la DLL la he hecho de forma dinámica.
Es la costumbre...
Será más corto y sencillo (luego lo pongo) si la linkas estáticamente, la defines como externa y de esa forma la puedes usar directamente (sin necesidad de cargar la DLL y buscar las funciones...).
__________________
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
  #608  
Antiguo 13-05-2021
tejano tejano is offline
Miembro
 
Registrado: dic 2020
Posts: 128
Poder: 4
tejano Va por buen camino
Muchas gracias Neftali ����
Responder Con Cita
  #609  
Antiguo 13-05-2021
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 Neftali [Germán.Estévez] Ver Mensaje
Será más corto y sencillo (luego lo pongo) si la linkas estáticamente, la defines como externa y de esa forma la puedes usar directamente (sin necesidad de cargar la DLL y buscar las funciones...).

Con una aplicación de consola como esta funciona perfectamente.


Código Delphi [-]
program testDLL;

{$APPTYPE CONSOLE}

{$R *.res}


uses
  ShareMem,
  System.SysUtils;

// Definición
function crc8S(const AText:string):byte; stdcall; external 'crc8.dll' name 'crc8S';

var
  b:byte;
  str:String;
begin
  WriteLn('Escribir cadena de entrada o vacío para salir: ');
  ReadLn(Str);
  b := crc8S(Str);
  WriteLn('Cadena de entrada: ' + str);
  writeLn('Salida (string): ' + string.Format('%.3d',[b]));
end.
__________________
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
  #610  
Antiguo 13-05-2021
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 143
Poder: 4
rci Va por buen camino
Hola, gracias por las respuestas bilbur y Neftali


Pues sí que va a ser eso de los acentos... al leer vuestras respuestas he revisado la factura que me daba ese error y he visto que en la dirección del cliente había un acento "ú".
He hecho otra factura exactamente igual pero poniendo la letra sin acento y ya no ha dado el error de la firma.


Lo que no acabo de ver es como solucionarlo porque ya estoy haciendo todo lo que proponéis (creo).
1. Al crear el fichero TicketBAI y guardarlo en disco lo hago en UTF8:


Código:
     var encoding = System.Text.Encoding.UTF8;
     FileMgr.Save(Path.Combine(filePath, fileName), xmltbai, encoding, false);
2. Al leer el fichero xml de disco para firmarlo le indico que es UTF8, después de firmar al salvar el xml firmado a disco también:


Código:
     XmlWriterSettings settings = new XmlWriterSettings();
     settings.Encoding = new UTF8Encoding();
     using (var writer = XmlWriter.Create(fileName, settings))
     {
           this.Document.Save(writer);
      }
3. Al leer el fichero xml firmado de disco para enviarlo también le indico UTF8:




Código:
     using (StreamReader sr = new StreamReader(filePath, Encoding.UTF8))
    {
           string content = sr.ReadToEnd();
           return content;
     }
4. Finalmente para enviar también indico UTF8



Código:
   var encoding = Encoding.UTF8;
    byte[] contentBytes = encoding.GetBytes(content);

    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
    httpWebRequest.AllowAutoRedirect = true;
    httpWebRequest.ClientCertificates.Add(certificate);
    httpWebRequest.Method = "POST";
    httpWebRequest.ContentType = "application/xml";
    httpWebRequest.ContentLength = contentBytes.Length;

    var postStream = httpWebRequest.GetRequestStream();
    postStream.Write(contentBytes, 0, contentBytes.Length);
    postStream.Flush();
    postStream.Close();
De todas formas si hay un acento en el XML antes de firmar, da el error de verificación de la firma.

He enviado correos con los dos ficheros y la dos respuestas al correo de consultas técnicas de Gipuzkoa pero... deben estar colapsados porque hace mucho que no me contestan, creo que llevan más de 2 semanas de retraso en las respuestas T_T


También he escrito a Araba preguntando por su entorno de pruebas y me han dicho que lo están desarrollando y que tiene previsto que para septiembre estará operativo :'(


Bueno voy a seguir investigando.


Ya sé que el foro es de Delphi y mi código es c# .net pero bueno, si alguien me puede dar otro consejo lo agradeceré.


Muchas gracias!







Cita:
Empezado por bilbur Ver Mensaje
En las direcciones que no puedes escribir es posible que tengas acentos en "Política de firma..", en direcciones URI
Elimina los acentos en el xml previo a la firma y también en el firmador que utilices

Espero que sea eso
Responder Con Cita
  #611  
Antiguo 14-05-2021
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 rci Ver Mensaje
Lo que no acabo de ver es como solucionarlo porque ya estoy haciendo todo lo que proponéis (creo).
1. Al crear el fichero TicketBAI y guardarlo en disco lo hago en UTF8

Revisa cada uno de los pasos con el contenido hexadecimal del fichero o del stream (revisando el character con acento). Desde la generación del XML hasta el envío, a ver si en algún momento encuentras que la codificación de ese character cambia.

Si el envío lo estás haciendo con UTF8, revisa que la firma (el componente o lo que usas) no la esté haciendo como ANSI internamente, eso expñlicaría que lo que has firmado no "cuadra" con lo que estás enviando.
__________________
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
  #612  
Antiguo 14-05-2021
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 143
Poder: 4
rci Va por buen camino
contentType para envio httpWebRequest c#

Buenas tardes y muchas gracias a todos por la ayuda.


Me han contestado de la agencia foral de Gipuzkoa y me han confirmado que el fichero firmado es correcto (se lo envié adjunto) y que es distinto de lo que recibieron ellos (me lo han enviado). La diferencia está en las letras con acentos. Por lo tanto el problema está en el envío.

Para solucionarlo he modificado la sentencia del content type, antes solo tenía el valor "application/xml" y para que funcione correctamente debo indicar que es utf8 también:

Código:
  ...
 
  httpWebRequest.ContentType = "application/xml; charset=utf-8";

  ...
Muchas gracias, buen fin de semana.




Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Revisa cada uno de los pasos con el contenido hexadecimal del fichero o del stream (revisando el character con acento). Desde la generación del XML hasta el envío, a ver si en algún momento encuentras que la codificación de ese character cambia.

Si el envío lo estás haciendo con UTF8, revisa que la firma (el componente o lo que usas) no la esté haciendo como ANSI internamente, eso expñlicaría que lo que has firmado no "cuadra" con lo que estás enviando.
Responder Con Cita
  #613  
Antiguo 14-05-2021
bilbur bilbur is offline
Miembro
 
Registrado: dic 2019
Posts: 60
Poder: 5
bilbur Va por buen camino
Envios a BATUZ

Batuz ha activado la versión 2 de alta emitidas 240
Nueva versión de xmlns es V1_0_2

Código:
$xml  = "<?xml version='1.0' encoding='UTF-8'?>";
    $xml .= "<lrpjfecsgap:LROEPJ240FacturasEmitidasConSGAltaPeticion
    xmlns:lrpjfecsgap='https://www.batuz.eus/fitxategiak/batuz/LROE/esquemas/LROE_PJ_240_1_1_FacturasEmitidas_ConSG_AltaPeticion_V1_0_2.xsd'>";
    $xml .= "<Cabecera>
La versión V1_0_1 da error

Un saludo
Responder Con Cita
  #614  
Antiguo 16-05-2021
joselugrk joselugrk is offline
Miembro
 
Registrado: abr 2021
Posts: 28
Poder: 0
joselugrk Va por buen camino
Question CRC8 Error Servidor Batuz

Cita:
Empezado por sline Ver Mensaje
Hola Edgar7,

He probado con las dos formas y ambas me devuelven el mismo crc para la misma cadena, y claro, ambas siguen dando error en batuz.

¿Podéis probar a generar una url cuya parte de la firma tenga un + o /?

como "TBAI-79732487C-120521-ME4g0D7g+iyVk-"
el crc me sale 130 y el crc de la url 081

Gracias!
Hola,

A mi me está pasando algo parecido pero no con todas las URLs, solo con algunas. Al probarla en Batuz me da el error "Los datos de la URL son incorrectos (ERR_QR_002)".

Pongo la URL
.../QRTBAI/?id=TBAI-30556773P-140521-oH/I9+EyTWWQ7-062&s=VT1&nf=1657&i=78.00&cr=196

Lo he probado en estos dos validadores y me coincide con lo que me devuelve mi rutina. No me deja poner urls el foro
...sunshine2k.de/coding/javascript/crc/crc_js.html ' Me devuelve un valor en Hexadecimal
...rapidtables.com/convert/number/hex-to-decimal.html ' Lo convierto a Decimal

¿Qué puede pasar?
Responder Con Cita
  #615  
Antiguo 16-05-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por joselugrk Ver Mensaje
No me deja poner urls el foro
Es un control anti-spam, en cuanto lleves varios mensajes (10) se deshabilitará.
De momento puedes poner las url "recortándola", por ejemplo: ttp://losquesea.com (he quitado la 'h' inicial)
Responder Con Cita
  #616  
Antiguo 17-05-2021
sline sline is offline
Miembro
 
Registrado: may 2021
Posts: 18
Poder: 0
sline Va por buen camino
Hola joselugrk



A mi me pasa con todas las url que contienen el caracter + pero con el error "Los datos de la URL son incorrectos (ERR_QR_003)"




Cita:
Empezado por joselugrk Ver Mensaje
Hola,

A mi me está pasando algo parecido pero no con todas las URLs, solo con algunas. Al probarla en Batuz me da el error "Los datos de la URL son incorrectos (ERR_QR_002)".

Pongo la URL
.../QRTBAI/?id=TBAI-30556773P-140521-oH/I9+EyTWWQ7-062&s=VT1&nf=1657&i=78.00&cr=196

Lo he probado en estos dos validadores y me coincide con lo que me devuelve mi rutina. No me deja poner urls el foro
...sunshine2k.de/coding/javascript/crc/crc_js.html ' Me devuelve un valor en Hexadecimal
...rapidtables.com/convert/number/hex-to-decimal.html ' Lo convierto a Decimal

¿Qué puede pasar?
Responder Con Cita
  #617  
Antiguo 17-05-2021
idaril idaril is offline
Registrado
 
Registrado: abr 2021
Posts: 2
Poder: 0
idaril Va por buen camino
Encadenado de facturas

Buenos días, primer mensaje en el foro!
Todavía estoy en fase de análisis y tengo demasiada información en la cabeza (he intentado leerme todo el hilo pero puede que se me haya pasado...).
¿Podría alguien confirmarme si el encadenamiento de facturas es de todas las facturas en general o por serie? Nosotros trabajamos en entorno restaurante y es muy común que los restaurantes tengan varias series definidas (por ejemplo pedidos en sala, para llevar, delivery, ...) y no me queda claro si cuando dice serie + número factura anterior es porque deben encadenarse todas las series juntas o va por serie (el software está certificado para Portugal y Francia y en ambos casos el encadenamiento es siempre dentro de la misma serie, nunca se mezclan facturas de diferente serie).
Muchisimas gracias!
Responder Con Cita
  #618  
Antiguo 17-05-2021
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 idaril Ver Mensaje
Buenos días, primer mensaje en el foro!
Todavía estoy en fase de análisis y tengo demasiada información en la cabeza (he intentado leerme todo el hilo pero puede que se me haya pasado...).

Bienvenido a este foro.
Yo me lo volvería a leer...



Cita:
Empezado por idaril Ver Mensaje
¿Podría alguien confirmarme si el encadenamiento de facturas es de todas las facturas en general o por serie? Nosotros trabajamos en entorno restaurante y es muy común que los restaurantes tengan varias series definidas (por ejemplo pedidos en sala, para llevar, delivery, ...) y no me queda claro si cuando dice serie + número factura anterior es porque deben encadenarse todas las series juntas o va por serie (el software está certificado para Portugal y Francia y en ambos casos el encadenamiento es siempre dentro de la misma serie, nunca se mezclan facturas de diferente serie).

El encadenamiento en principio NO VA POR SERIE.
Es decir, debes encadenar con la última factura, sea de la serie que sea.




Si buscas el documento de "Preguntas y respuestas" que hay en el hilo, (al principio estará el link), esta en concreto es la 93. Revísala con detalle que es más extensa.
__________________
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
  #619  
Antiguo 17-05-2021
idaril idaril is offline
Registrado
 
Registrado: abr 2021
Posts: 2
Poder: 0
idaril Va por buen camino
Si ya digo yo que tengo demasiada información en la cabeza! Supongo que me ofusqué al tener tan claro que en Portugal y Francia iba por serie...

Muchísimas gracias :-)

Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Bienvenido a este foro.
Yo me lo volvería a leer...


El encadenamiento en principio NO VA POR SERIE.
Es decir, debes encadenar con la última factura, sea de la serie que sea.


Si buscas el documento de "Preguntas y respuestas" que hay en el hilo, (al principio estará el link), esta en concreto es la 93. Revísala con detalle que es más extensa.
Responder Con Cita
  #620  
Antiguo 17-05-2021
tejano tejano is offline
Miembro
 
Registrado: dic 2020
Posts: 128
Poder: 4
tejano Va por buen camino
A mi me respondieron esto de Batuz, dónde indica que si existen diferentes centros de facturación y cada uno tiene su serie, el encadenamiento si podría ir por serie.

Kaixo,

El sistema TicketBAI implica que cada factura debe identificar la factura anterior (serie, número, fecha y 100 primeros caracteres de la firma). Aunque en el esquema del fichero TicketBAI estos campos no son obligatorios, esta circunstancia se debe a que existen varias situaciones en los que este requisito no es exigible (p. ej. la primera factura, o en caso de rotura del dispositivo).

El cumplimiento del requisito de encadenamiento depende de la forma de funcionamiento del sistema de facturación:
- Si un mismo dispositivo emite facturas de diferentes series, el requisito de encadenamiento debe identificar la factura anterior expedida, con independencia de la serie (por ejemplo, a una factura de una serie ordinaria le puede preceder una factura rectificativa de otra serie).
- Igualmente, si el sistema de facturación es un sistema centralizado que genera las series y los números de facturación, con independencia del dispositivo que se esté utilizando, el encadenamiento se refiere a la última factura expedida por el sistema.
En concreto, “Haz tu factura” funcionaría como un sistema de facturación “centralizado”, por lo que encadena las facturas independientemente de la serie.
- No obstante, si existen diferentes dispositivos o centros de facturación, los cuales sólo expiden facturas dentro de una serie específica para cada dispositivo o centro, el encadenamiento se produce dentro de cada serie.
Este último parece ser el caso al que se refiere la pregunta planteada.
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 18:19:35.


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