Cette fonction permet de paramétrer des compteurs utilisés à des fins de numérotation automatique de pièces ou de fiches (sur des longueurs qui varient en fonction du contexte, mais qui peuvent aller jusqu'à 20 caractères).

Un compteur est identifié par un code alphanumérique de 3 caractères. Il permet de générer des clés alphanumériques qui peuvent résulter de la concaténation de plusieurs composantes (dont au moins une - le numéro de séquence - est une partie numérique qui va s'incrémenter à chaque attribution). Le paramétrage du compteur fait, on peut attribuer ce compteur à un ou plusieurs documents.

Une fonction d'affectation des compteurs permet d'associer à un certain nombre de documents les compteurs que l'on utilisera pour les numéroter, mais il existe également des affectations de compteurs à des niveaux différents ou plus fins (dans des fiches définissant des catégories, ou dans des valeurs de paramètres par exemple).

Lorsque l'on réalise des numérotations automatiques de pièces, il est important de faire attention à ne pas avoir d'homonymes, lorsqu'on utilise deux compteurs différents pour des données devant avoir des clés uniques.Compte tenu de la souplesse de définition des compteurs, le progiciel ne peut pas faire un contrôle de ce type automatiquement. La conséquence d'une mauvaise définition de ce type serait l'apparition d'une erreur au moment de l'attribution du numéro, et donc d'un abandon de la transaction en cours.

Quand un compteur est nouvellement créé,  ou qu'il n'a jamais donné de numéro (pour le site et/ou la société et/ou la période et/ou le complément donné selon ses règles de définition), le premier numéro attribué par défaut est 1. Mais il existe une fonction de définition des valeurs initiales de compteurs qui permet de faire commencer la numérotation à un autre chiffre. Cette fonction est particulièrement utile en cas de reprise de données, pour que la numérotation des documents créés par le système reparte bien en séquence après le dernier numéro repris.  Attention, la modification de cette séquence doit être verrouillée aux utilisateurs dans un contexte d'exploitation normale, et ne doit servir que lors de la phase initiale de reprise.

Pré-requis

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Gestion de l'écran

Ecran de saisie

Présentation

Le paramétrage des compteurs se fait sur un seul onglet. Outre le code du compteur, on définit également un ensemble de caractéristiques générales et la structure détaillée des caractères entrant dans la composition du compteur. Cette structure se définit dans un tableau de composantes, dont on définit la longueur.

Les composantes possibles sont décrites dans le tableau ci-dessous :

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Bloc numéro 1

Ce code identifie un compteur, qui peut être utilisé pour la numérotation automatique des documents. Un compteur est une zone de type alphanumérique de 1 à 20 caractères. Il est composée d'une concaténation de sous-zones qui peuvent être de différents types, et qui seront concaténées de gauche à droite pour former la valeur du compteur. 

  • Intitulé (champ DES)

Destiné à figurer sur les états et les écrans dans lesquels le code de la fiche peut être saisi ou sélectionné. Ce texte permet de donner une description de la fiche concernée.

Niveau définition

  • Niveau définition (champ NIVDEF)

Le Niveau de définition peut prendre les valeurs Dossier, Société, Site. Il permet de définir si on doit disposer d'une séquence de numérotation unique pour tout le dossier, définie par société, ou par site.

Pour éviter les homonymes, ceci suppose que l'on mette dans le compteur les composantes appropriées, en particulier le site et/ou la société.

Niveau RAZ

  • Niveau RAZ (champ NIVRAZ)

Ce niveau de définition permet de savoir si l'on a une valeur de compteur unique dans le temps, ou bien par mois ou encore par année, exercice ou période comptable. Pour éviter les homonymes, ceci suppose que l'on mette dans le compteur les composantes appropriées, en particulier l'année, le mois, le jour, ou la semaine.

La combinaison de ce paramètre avec le Niveau de défintionet avec la présence d'une composante Complément définit combien de séquences de numérotation seront affectées au compteur (cela va d'une séquence unique à une séquence par mois, par site, et par valeur de complément).

En fonction de ces deux paramètres, on est amené à introduire des composantes permettant d'éviter des problèmes d'homonymie. Ainsi, par exemple, si l'on définit un Niveau de Raz égal à l'année, il faut que l'année figure dans le compteur. De même, si l'on définit des compteurs par société, il faut que le site ou la société se trouvent dans la structure du compteur.

Type

  • Type (champ TYP)

Un compteur engendre toujours des clés alphanumériques. Mais si le type déclaré ici est numérique, on supprimera les zéros en tête de la valeur renvoyée. Ainsi, un compteur déclaré numérique sur 6 chiffres commencera par la valeur "1", alors qu'un compteur alphanumérique sur 6 chiffres commencera par la valeur "000001". Attention, si le compteur est déclaré comme numérique et des composantes alphabétiques ont été déclarées dans la structure du compteur, aucun contrôle ne sera fait à la création, mais à l'utilisation, seule la partie numérique en tête du compteur sera renvoyée.

Tableau Composants

  • No (champ NUMLIG)

 

  • Type composante (champ POSTYP)

Chaque composante du compteur possède un type décrit dans la documentation générale sur les compteurs.

  • Longueur (champ POSLNG)

On précise ici la longueur de la composante.

Des limites existent selon le type de composantes :

  • une constante fait 10 caractères au maximum.
  • l'année est définie sur 1, 2, ou 4 caractères.
  • la semaine est définie sur 2 caractères.
  • le mois est défini sur 2 ou 3 caractères (dans ce cas, c'est l'abréviation anglaise du mois sur 3 lettres).
  • le jour est défini sur 1, 2, ou 3 caractères (sur 1 caractère, c'est le numéro du jour dans la semaine; sur 2 caratères, c'est le numéro du jour dans le mois; sur 3 caractères, c'est le numéro du jour dans l'année).
  • la société est définie sur 1 à 5 caractères.
  • le site est défini sur 1 à 3 caractères.
  • Formule (champ POSCTE)

On définit ici la valeur d'une partie constante du compteur Elle peut être alphanumérique quelconque (y compris des caractères spéciaux tels que "-/.").

Bloc numéro 6

  • Type de séquence (champ SEQ)

Ce champ définit la façon dont sont gérées les contentions multi-utilisateurs en attribution de numéro. Sauf problème particulier lié à un grand nombre d'utilisateurs concurrents, il est recommandé d'utiliser le type Normal. On trouvera dans la documentation des compteurs davantage d'explications sur ce champ.

Lorsque le compteur est de type Séquence, on précise ici la table de la base dont la séquence est utilisée. En principe, c'est la table principale dans laquelle se trouvent les documents numérotés.

  • Nb de numéros (champ SEQNBR)

Dans le cas d'un compteur de type Groupé, ce champ définit le nombre de numéros attribués simultanément.

Divers

  • Contrôle chronologie (champ CTLCHR)

Cet indicateur permet d'activer ou non le contrôle de chronologie pour des documents pour lesquels la législation courante impose un contrôle chronologique des numéros par rapport à la date de saisie (c'est le cas de certains documents dans certaines législations, italienne notamment).

Il permet d'éviter qu'une pièce logiquement datée à une date D1 puisse être créée avec un numéro postérieur à une pièce logiquement datée à une date D2 postérieure à D1 (ce quelle que soit la date de création réelle de la pièce).

  • Longueur (champ LNG)

Ce champ indique la longueur totale des numéros créés par le compteur.

  • Remise à zéro (champ ZERO)

Si cette case est cochée, le compteur sera remis à 0 par l'utilitaire de remise à zéro de dossier, dans le cas contraire sa valeur sera conservée.

 

Fermer

 

Type Composante

Explication

Constante

Chaîne de caractères fixe dont la valeur est saisie dans la colonne Formule (telle quelle, c'est-à-dire sans la mettre entre simples ou doubles quotes).

Année

Sur un chiffre (le dernier de l'année entre 0 et 9), deux chiffres (entre 00 et 99), et quatre chiffres

Exercice

Sur un à trois chiffres, on définit ici le numéro d'exercice (valeur égale à 1 pour le premier exercice ouvert). L'intérêt de cette numérotation réside dans le cas où on travaille avec des exercices décalés (dans ce cas, on a une rupture dans la numérotation quand on change d'année, ce qui peut alors arriver au milieu de l'exercice fiscal)

Période

Sur un à trois chiffres, on définit ici le numéro de période (commençant à 1, et pouvant atteindre le nombre maximum de périodes de l'exercice).

Mois

Sur deux chiffres (de 00 à 12), ou sur trois caractères (dans ce cas, les trois premiers caractères du nom anglais du mois sont utilisés : JAN/FEB/MAR/APR...)

Semaine

Sur 2 chiffres (de 00 à 53)

Jour

Soit sur un chiffre (il s'agit alors du numéro du jour dans la semaine, variant de 1 à 7), soit sur deux chiffres (c'est alors le quantième variant de 01 à 31), soit sur trois chiffres (c'est alors le numéro du jour dans l'année, variant de 001 à 366)

Société

Code société auquel le mouvement est attribué (sur un à cinq caractères)

Site

Code site auquel le mouvement est attribué (sur un à trois caractères)

Séquence

Partie incrémentale du compteur (elle s'incrémentera par pas de 1 (la première valeur attribuée étant 1).

Complément

Paramètre complémentaire dont la valeur dépend du module utilisant le compteur.

Formule

Permet d'insérer dans le compteur une partie évaluée sur un à vingt caractères. La formule est saisie à la suite. Contrairement au complément, dont chaque valeur porte sa chronologie, un compteur intégrant une formule évaluée utilise un compteur indépendant du résultat de l'évaluation. La formule peut être de type alphanumérique, numérique, ou date, mais si elle contient des caractères alphabétiques, ceux-ci sont transformés en majuscules, et l'ensemble est formaté sur le nombre exact de caractères prévus.

Remarques importantes

La zone complément

Le code complément permet de définir un segment de compteur dépendant du contexte, sans avoir à définir deux compteurs différents. Il est important de savoir que, dans ce cas, il y a une séquence chronologique pour chaque valeur différente prise par le complément.

L'utilisation du code complément dépend du contexte fonctionnel utilisé par chaque progiciel écrit en technologie adonix.

Dans le cas du superviseur, le code complément est utilisable pour le compteur des numéros de lot dans le sas d'import-export. Il contient le code du modèle d'import-export utilisé.

La liste des codes compléments utilisés dans les modules métiers de chaque progiciel est définie dans une documentation annexe.

Dans tous les autres cas, le numéro de complément n'est pas affecté. Il est par contre possible, par un développement spécifique simple s'appuyant sur un point d'entrée dédié, de donner une valeur particulière au numéro de complément dans un contexte donné.

Il est possible d'intégrer le code complément dans une séquence de numérotation, sans pour autant utiliser une séquence différente par valeur de compteur. Pour réaliser ceci, il faut utiliser une composante de type Formule évaluée, en donnant comme formule [L]COMPLEMENT (COMPLEMENT est la variable locale connue du sous-programme de numérotation qui stocke la valeur courante du complément).

Les types de séquence

Ce paramètre peut avoir une importance lorsqu'on se trouve dans le cas d'installations clients avec un grand nombre de postes et une activité importante de création de documents d'un type donné. En effet, selon le type de séquence que l'on utilise, il peut y avoir une contention plus ou moins forte. Par contention on entend des conflits transactionnels liés à l'obtention de numéros de compteurs. En effet :

Lorsqu'on utilise un compteur Normal

Lattribution du numéro, essentiellement lors de la création d'un document (commande, écriture, facture...) se fait dans la transaction de création elle-même. Ceci signifie qu'en cas d'abandon de la transaction par Rollback, le numéro n'est pas perdu. Par contre, tant que la transaction de création (qui peut durer quelques secondes) n'est pas terminée, toute transaction concurrente de création du même type de document ne pourra pas obtenir de numéro et échouera. Un Rollback de cette transaction concurrente sera alors fait, suivi d'une nouvelle tentative (qui aboutira cette fois si la première transaction est terminée).

Le nombre d'essais successifs réalisés en cas de verrouillage de ce type avant l'abandon de la transaction sur erreur est paramétrable par le paramètre ROLLBACK du chapitre SUP. En cas de contention, on peut donc augmenter la valeur de ce paramètre, mais il faut être conscient que la consommation de ressources du serveur de données peut augmenter au détriment des performances, et on peut aussi jouer sur le type de séquence pour améliorer les choses.

En contrepartie de cette contention, le compteur Normal garantit un respect de l'ordre séquentiel dans le temps : deux appels successifs dans le temps à un compteur donné donneront des numéros croissants, toutes conditions liées à la structure du compteur (société, site, période, complément) égales par ailleurs. Par ailleurs, aucune perte de numéro relative à un verrouillage ne peut intervenir, ce qui fait recommander ce type de compteur pour les documents légaux pour lesquels on exige à la fois des séquences strictes et aucun trou de numérotation.

Lorsqu'on utilise un compteur Groupé

L'attribution de numéros se fait par groupe de N numéros (N étant défini en paramètre). La contention est donc moins importante, car seule une attribution sur N provoque une contention, les autres attributions utilisant un numéro disponible.

En contrepartie, l'attribution séquentielle des numéros n'est pas garantie, et une perte de numéros est possible pour les compteurs dépendant de mois ou de la période. En effet, imaginons par exemple que N vaut 10, que les numéros de 1 à 8 ont déjà été attribués, et que 3 créations simultanées ont lieu. La première va se voir attribuer le numéro 9 ; le seconde le numéro 10, la troisième ne va pas trouver de numéro disponible dans la première tranche de 10 numéros. Elle va donc créer les numéros de 11 à 20 et s'attribuer le premier numéro d'entre eux, soit le 11. Si entre temps la première transaction a échoué pour d'autres raisons, le numéro 9 va devenir utilisable par une nouvelle transaction. Si plus aucune transaction n'est lancée, on se retrouve dans la situation où tous les numéros de 1 à 11, sauf le 9, sont utilisés, et où les prochains numéros à attribuer vont être (dans l'ordre) le 9, puis le 12 et les suivants. Il n'y a donc pas respect strict du numéro de séquence : s'il n'y a plus aucune création de document dans la journée, et si un document est créé le lendemain, on aura un document daté du jour J numéroté 11, et un document daté du jour J+1 numéroté 9. Enfin, si les compteurs intègrent le numéro du mois et que cette situation arrive en fin de mois, on aura un trou dans la numérotation (mais on saura le tracer, puisque ce numéro se trouve dans la liste des numéros à attribuer).

Lorsqu'on utilise un compteur Séquence

L'attribution de numéro se fait hors transaction, c'est-à-dire qu'il n'y a aucune contention, mais aucun retour en arrière possible (si le numéro n'est pas utilisé, il est définitivement perdu). Ce type de compteur s'appuie sur une séquence de la base de données. ADONIX crée, pour chaque table de la base de données, une séquence qui lui est normalement associée pour obtenir ainsi un numéro technique. Il est important de noter que cette numérotation ne repasse jamais à 0 (il faut donc prévoir un nombre important de chiffres associé à la séquence de numérotation dans le compteur), qu'elle est strictement séquentielle (l'ordre des numéros attribué est toujours croissant dans le temps), mais qu'il y aura des trous sans possibilité ni de les justifier, ni de les récupérer. Cette caractéristique les fera utiliser dès lors que l'on a besoin d'un numéro technique unique, pour lequel aucun justificatif des trous dans la séquence n'est nécessaire.

En conclusion, le tableau ci-dessous résume les avantages et inconvénients des différents types de compteurs :

TYPE DE COMPTEUR

SEQUENCE CROISSANTE

PERTE DE NUMEROS

CONTENTION MULTI-UTILISATEURS

Normal

Toujours

Jamais

Forte

Groupé

Pas toujours

En fin de période, mais justifiable
(liste des numéros perdus)

Moyenne (d'autant plus faible
que N est grand)

Séquence

Toujours

Oui, sans justification

Nulle

Boutons spécifiques

Les champs suivants sont présents dans la fenêtre ouverte par ce bouton :

Bloc numéro 1

  • champ OBJET

 

  • champ CLES

 

Bloc numéro 2

  • Depuis le dossier (champ DOSORG)

Ce champ permet de définir le dossier à partir duquel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

  • Tous dossiers (champ TOUDOS)

Cette option permet de copier la fiche vers tous les dossiers définis dans le dictionnaire (table ADOSSIER de la solution courante).

  • Vers le dossier (champ DOSDES)

Ce champ permet de définir le dossier dans lequel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

Fermer

Ce bouton permet de recopier la définition de la fiche depuis ou vers un autre dossier.

Messages d'erreur

Outre les messages génériques, les messages d'erreur suivants peuvent apparaître lors de la saisie :

2 Numéros de séquence

On a tenté de définir un compteur ayant deux composantes de type Numéro de séquence (un seul numéro de séquence est autorisé par compteur)

Valeur incorrecte

La longueur demandée n'est pas compatible avec le paramètre (par exemple, une année sur 8 chiffres ou un mois sur 5 caractères)

Longueur trop grande

La longueur totale du compteur excède 20 caractères, ou la somme des longueurs des composants est différente de la longueur totale.

Expression incorrecte / Caractère illégal

La formule de calcul qui a été saisie n'a pas une syntaxe correcte.

Type de table : système

Un compteur basé sur une séquence ne peut être basé que sur une table présente dans le dossier courant. Ce n'est pas le cas de ce type de table.

Type séquence possible au niveau dossier
Type de séquence autorisée sans Raz

Un compteur basé sur une séquence base de données ne peut permettre qu'une seule séquence de numérotation (donc au niveau dossier) et ne peut pas être remise à zéro.

Tables mises en oeuvre

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre