Impression d'étiquettes code barres depuis une app web lowcode ouverte à Javascript, comme Seatable

Comment imprimer des étiquettes code-barre depuis une table d'entrées de stock par exemple, ou de préparation de commande ?

Structure de l'implantation

- un réseau local avec PC (Win, Linux, Mac, peu importe), tablettes (Android ou IOS, peu importe), toutes les machines sont sur ce réseau,

- une imprimante d'étiquettes code barres en réseau (IP) ou USB, ZPL ou CPL,

- un PC (Linux, Windows, voire Mac) allumé lors du besoin d'impression, si l'imprimante étiquette est en USB elle devra être connecté à ce PC (on en vend en mode IP) == nommé 'proxy'

- notre logiciel 'proxy' compilé spécialement pour Linux, Windows ou Mac avec un "Bearing Token" == jeton de sécurité, défini pour chaque client et des fichiers de paramétrages modifiables par le client. 

- en mode SaaS web : un ERP, un système low-code comme SeaTable qui permette de coder du JavaScript dans ses écrans. 

Les données de SeaTable sont dans une table à laquelle on ajoute un bouton de fonction qua appelle une fonction JavaScript d'impression d'étiquettes. 

Une fois l'impression lancée, on indique à l'utilisateur le résultat.

Voici un exemple simple de lancement de l'impression :

Impression d'étiquettes code barre depuis une application web

Avantages de la solution intégrée

- partage de l'imprimante entre plusieurs utilisateurs: une seule imprimante peut être utilisée par plusieurs utilisateurs,

- sécurité dédiée à une liste de domaines appelant définis par le client, 

- évite les recopies manuelles

- flexible, chaque port différent appelé par HTTPS route les données vers un couple IP+port différent en HTTP

- réutilise les anciennes imprimantes USB: router sur le système d'exploitation le port du proxy sur le port USB, ceci demande un peu plus de temps de réglages : préférez déjà des imprimantes avec connexion Wifi ou IP,

- permet une impression d'étiquettes métier avec les paramètres de la base de données,  

Comment appeler  le Proxy ?

On suppose que l'on a les données 'raw' (ZPL, CPL) à imprimer par l'imprimante , dans une variable ici nommée "data" . Ces données sont composées par les données de la ligne et transcrites en langage ZPL / CPL par notre solution de serveur d'impression et son API, suivant un modèle mis au point préalablement par le client.

Paramètres 

à placer dans l'ERP (si possible) en JS (JavaScript) , ici une table "parametres" est dans SeaTable  et contient des valeurs à mettre dans les requêtes:

//recup de l'adresse du Proxy http en 'parametre'
const urlPrintProxyBase = await base.query("SELECT valeur_parametre FROM parametres WHERE parametre = 'proxy_impression'");
const urlPrintProxy = urlPrintProxyBase[0].valeur_parametre
output.text("ip d'envoi: "+ urlPrintProxy) //ip d'envoi: http://192.168.1.79:9443 

Appel et envoi des données à imprimer au Proxy :

const PrintRawPC = async({ data }) => {
   let dataRes, status;
  try {
   let res = await fetch(urlPrintProxy, {
      method: "POST",
     headers: { "Authorization":`Bearer ${TokenProxy[0].valeur_parametre}`, "Content-Type": "text/plain"  },
     body:  data
    });
    status= await res.status
    dataRes = await res.text(); // le proxy renvoie un texte/payload
      output.text("res de fetch POST: "+ status+"-"+ JSON.stringify(dataRes));
 } catch (error) {
    // Note CORS/TLS : ce script vit dans le navigateur. On ne peut PAS y
    // désactiver la validation du certificat auto-signé (NODE_TLS_...=0 est
    // réservé à Node). Deux solutions côté déploiement :
    //  donc accepter le certificat une fois : ouvrir https://<ip>:<port> dans
    //     le navigateur puis confirmer l'exception de sécurité ;
    await base.updateRow(table.name, row['_id'], { 'resultat':"Pb de récupération des données" });
    if (error.status === undefined) {
      status = 404;
      dataRes =
        error.message +
        " : You do not have probably installed the proxy app on your PC, if you want to print on printer";
      await base.updateRow(table.name, row['_id'], { 'resultat':"Proxy app not installed" });
    } else {
      status = error.status;
      dataRes = error.message;
      await base.updateRow(table.name, row['_id'], { 'resultat':"erreur indéterminée" });
    }
  }
  return { status: status, data: dataRes };
};

Nos services d'intégration métiers

Notre société de développement comprend et transcrit vos besoins métiers en solutions qui vous permettent de gérer de manière indépendante vos données en apportant des services avec les codes barres pour la saisie rapide de données et l'impression d'étiquettes codes barres et QR Code.

Dans ce cas , c'est la possibilité d'entrer du code dans l'écran qui nous permet d'imprimer ces étiquettes. 

Quel est votre système de gestion web pour lequel vous avez besoin d'imprimer des étiquettes code barre ? A-t-il un possibilité d'ajouter du code ?

Commentaires

Productivix: Newsletter