Reportez-vous à la documentation de Mise en oeuvre
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. |
| 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
| 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
| 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
| 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
|   |
| Chaque composante du compteur possède un type décrit dans la documentation générale sur les compteurs. |
| On précise ici la longueur de la composante. Des limites existent selon le type de composantes :
|
| 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
| 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. |
| Dans le cas d'un compteur de type Groupé, ce champ définit le nombre de numéros attribués simultanément. |
Divers
| 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). |
| Ce champ indique la longueur totale des numéros créés par le compteur. |
| 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. |
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).
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 :
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.
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).
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 | Moyenne (d'autant plus faible |
Séquence | Toujours | Oui, sans justification | Nulle |
Les champs suivants sont présents dans la fenêtre ouverte par ce bouton : Bloc numéro 1
Bloc numéro 2
Fermer Ce bouton permet de recopier la définition de la fiche depuis ou vers un autre dossier. |
Outre les messages génériques, les messages d'erreur suivants peuvent apparaître lors de la saisie :
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)
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)
La longueur totale du compteur excède 20 caractères, ou la somme des longueurs des composants est différente de la longueur totale.
La formule de calcul qui a été saisie n'a pas une syntaxe correcte.
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.
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.