Les relevés bancaires (P_4REB)

Généralités

Introduction

Cette fonction permet de convertir les données d’un relevé bancaire issu d’un fichier d’extraits de comptes bancaires à la norme ETEBAC 3 de la Société Générale.

Ce traitement convient également pour les banques utilisant cette même norme et cette même description de fichier.

Il permet d’importer les enregistrements de type « 04 » et « 05 » dans une base de données. Ces enregistrements, qui peuvent être visualisés direcetement depuis la fonction P_4REB, correspondent à des écritures de règlements clients, issues du fichier des extraits de comptes bancaires (norme ETEBAC 3 de la banque).

Une analyse (popup « Analyse ») permet d’identifier facilement les numéros de factures ou les numéros d'évènements présents dans la zone « Libellé » de l'enregistrement de type « 04 » et « 05 ».

L'option « Intégrer » permet ensuite de passer les écritures comptables de règlements et de mettre à jour les codes lettrage des factures et des règlements correspondants.

Principes

Cette gestion des relevés bancaires se déroule en plusieurs étapes :

  1. Importation et analyse des relevés bancaires,
  2. Visualisation / Gestion des lignes d'enregistrements,
  3. Analyse des factures de chaque ligne d'enregistrement,
  4. Intégration et lettrage automatique,
  5. Edition du relevé bancaire.

Accès

Menu Option Ecran Fonction différée
Relevé bancaire Importer P_4REB_ED1 P_4REBE1
Visualiser P_4REB_12  

Gérer

   
Intégrer

P_4REB_ED2

P_4REBE2
Editer P_4REB_ED3 P_4REBE3

Paramétrage

Cette étape est à réaliser une seule fois lors de l'initialisation du traitement des relevés bancaires. Les différents paramètres peuvent toutefois être modifiés par la suite.

La chronologie du paramétrage, qui fait appel à plusieurs fonctions, est la suivante :

  1. S'assurer que le fichier ETEBAC 3, fourni en entrée à ACE , ne contient que des règlements clients.
  2. Définir les fonctions différées P_4REBE1 (Importer), P_4REBE2 (Intégrer) et P_4REBE3 (Edition) par la fonction UFCT. Le code de la maquette associée est « ap$eta:vide.std_fra » pour les deux premiers traitements différés. La maquette associée à p_4REBE3 est « ap$std_fra :p_4rebe31.std_fra ».
  3. Créer la fonction interactive P_4REB par la fonction UFCT.
  4. Mettre dans la table TP_FRB le nom du fichier pour l'intégration du relevé bancaire. (Voir chapitre : Importation des relevés bancaires)
  5. S'assurer que les natures « standard » de type PAD et END possèdent un mode de règlement. (voir dans le paramétrage de P_1ENV, renseigner le champ "Mode de règlement"). Si ce champ n'est pas renseigné, c'est le mode de règlement "VI" (Virement) qui sera pris en compte par défaut (bien vérifier l’existence de ce mode de règlement sur la banque via les conditions bancaires (P_4ENV).
  6. Si la table TP_FRB n'existe pas, il convient de définir celle-ci par la fonction P_1TAB. Définir ensuite une fonction pour gérer cette table par la fonction UFCT. Associer cette fonction à l’exécutable « P_1TAB.EXE ». Enfin, habiliter un ou plusieurs utilisateurs à renseigner cette table ( via la fonction UHAB).
  7. Positionner le paramètre P_4REB - « Importation relevés bancaires » dans GPEV .
    En positionnant le paramètre P_4REB, vous avez la possibilité de définir la liste des types d’événements autorisés pour la facturation client ainsi que la liste des différents caractères précédant les numéros de facture à rechercher.
    Pour en savoir plus sur le paramétrage des fonctions, consultez la documentation "Le Configurateur Fonctionnel".
  8. Définir la table utilisateur contenant la liste des séparateurs de N° facture dans GTTTU (exemple : « 123 »). Définir également la fonction GT123 dans UFCT et l'associer à « TABLE.EXE ».
  9. Définir la table utilisateur contenant la liste des types d’événements autorisés pour la facturation client dans GTTTU (exemple : « 124 »). Définir également la fonction GT124 dans UFCT et l'associer à « TABLE.EXE ».
  10. Dans un environnement multi-entités, il convient de mettre à jour les segments des tables TBL nouvellement créées. Pour cela il faut modifier (agent habilité) le paramétrage de GSOC de la façon suivante. Dans la société de plus haut niveau, Fonction GSOC / MODIFIER / F1+P sur un des champs TBL, activer le popup : « Transmission des données / a tout segment / aux tables de codification ». Valider par F10 (les nouvelles tables créées seront ajoutées automatiquement dans la liste de TBL). Puis confirmer une nouvelle fois par F10 (Le système met à jour les segments liés aux tables TBL sans créer à nouveau les liens).
  11. Créer les messages d'erreur donnés en annexe dans la fonction UMES ( Voir chapitre : Gestion des messages d'erreurs ). Les messages seront créées avec les caractéristiques suivantes par Défaut : « 1 », « O », »N », »N », »N », »N ».
  12. Remplir la table GT<num> contenant la liste des séparateurs de N° facture. Pour un bon déroulement du traitement, il est important de saisir un caractère à la fois sur les champs "Code" et "Libellé long".

  13. Remplir la table GT<num> contenant la liste des types d’événements autorisés pour la facturation client.

  14. Définir dans UPLED, le lanceur paramétré « RELEVE » nécessaire à l’édition du relevé. Ensuite, effectuer le paramétrage de ce lanceur (Popup « Paramétrage du lanceur ») par l’option « Editer » de la fonction P_4REB.

Définir le code édition comme critère par défaut (popup PF1E).

Dans le paramétrage du lanceur, le journal de banque doit être défini comme critère unique obligatoire (PF1U).

Définir le tri de la manière suivante : 1 : la banque, 2 : la date de relevé, 3 : le n° relevé, 4 : le n° ligne.

Fonctionnalités

Gestion du relevé bancaire (P_4REB_12)

Description technique des champs de cet écran.

Cette fonctionnalité, accessible par le menu « Relevés bancaires » (options « Visualiser », ou« Gérer ») vous permet de mettre à jour l’en-tête du relevé bancaire.

Banque : code journal (table P_1JA) (recherche accessible). A la validation de cette information, le libellé et la devise de la banque sont automatiquement affichés.

Extrait : numéro de relevé bancaire (table P_4RB) (recherche accessible).

Etat : état des enregistrements (affichés sous forme d’une liste de valeurs.

Code état Libellé
O Facture Intégrable
N Facture Non Intégrable
I Ignorés
F Forçage
T Traités
A Tous
B Tous sauf les traités

Les champs « Dates » vous permettent d’affiner votre sélection en fonction de la date de début et de fin.

Position initiale : Date, Sens (Débit ou Crédit) et montant de l’ancien solde.

Position finale : Date, Sens (Débit ou Crédit) et montant du nouveau solde.

Informations du tableau

Trucs et astuces

Les lignes de relevés s'affichent en fonction de l'état, du journal, de l'extrait et des dates (date de début et de fin). L'affichage des lignes de relevés dépend du statut, du journal et des critères de dates.

Ligne : numéro de ligne du relevé bancaire.

Date opération : date de l'opération renvoyé par la banque.

Date valeur : date de valeur réelle calculée par banque.

Libellé : Libellé de l’opération renvoyée par la banque (modifiable uniquement en option Gérer).

Sens et Montant : sens (Débit ou Crédit) et montant de la ligne de relevé.

Etat : statut de la ligne du relevé (modifiable uniquement en option Gérer).

Fonctionnalités accessibles par popup à partir de cet écran :

Analyse : voir description ci-après.

Phase de visualisation

Les relevés importés sont visualisables par l'option « Visualisation ». Cette phase de visualisation n'autorise aucune modification sur le tableau. L’analyse ne modifiera donc pas l’état de la ligne.

Comme on peut le voir sur l’écran en exemple, le code état est à « N » pour les lignes de règlements type « 04 » et le reste est à blanc sur les lignes de type « 05 » (sauf le cas des lignes traitées).

Pour la recherche de facture, le popup « Analyse » s'active suivant la valeur du code état :

Code état Activation du popup « Analyse »
O : Intégrable OUI
N : Non intégrable OUI
I : Ignoré OUI
F: Forçage OUI
T : Traités NON
A blanc ' ' NON

Phase de gestion

Cette phase permet de gérer manuellement les lignes rejetées. Dans le tableau, on peut corriger les numéros de factures manquants ou erronés issus du libellé, suite à l'analyse.

L'option « Gérer » permet de modifier le libellé et le code état pour chaque ligne d'enregistrement.

L'utilisateur aura le droit de modifier le libellé et le code état à « F » ou à « I » ou « N » pour les enregistrements de type « 04 » . Pour les enregistrements de type « 05 », seul le libellé peut être modifié.

Analyse des factures

Num eve/Tech ou Num Libellé : ce champ est un numéro d'événement. C’est une suite numérique qui se trouve dans le libellé.

Numéro Pièce : chaque numéro d'évènement est associé à un numéro technique, qui possède un numéro d’écriture comptable.

D / C : sens (Débit ou Crédit) de chaque facture.

Montant Pièce : montant de la facture.

Tiers : tiers comptable du premier mouvement de la facture.

E/C : la valeur "E" veut dire que la facture possède une ou plusieurs échéances, et « C » que le mouvement est non échéancé.

Lett : il existe trois codes lettrage :

- 3 : pas de lettrage,

- 2*** : Lettrage Partiel,

- 1*** : Lettrage total.

Etb : établissement de la facture.

Compte : compte comptable de la facture (premier mouvement).

Après avoir activé l'analyse, le traitement analyse les libellés des lignes d'enregistrements (lignes numéro 4, 5 et 6). Une fenêtre fournit le résultat de la recherche effectuée pour comprendre les erreurs.

La mise à jour du code état à « O : Facture intégrable » s'applique si toutes les conditions suivantes sont réunies :
  • La devise de la facture est la même devise que celle de la banque,

  • Et les factures sont de type « E » ou « c » (gestion des échéances),

  • Et les factures ne sont pas lettrées (type code lettrage à « 3 » ),

  • Et le montant total de la facture doit être égal au montant du règlement,

  • Et le sens du règlement est opposé au sens du total des factures.

Dans le cas contraire, le code état sera toujours à "N".

Rappel : il faut s'assurer que la table utilisateur GT<num>, contenant la liste séparateurs de N° facture, ne soit pas vide.

Recherche de facture

D'abord, il faut s'assurer si la table GT<num> (contenant la liste des séparateurs de numéros de facture) soit remplie pour que le traitement puisse analyser les factures et afficher les résultats sous forme de menu déroulant.

Exemple : « Finance : Libellé : Facture *1234 /34 $35 »

Commerce : le numéro d'événement 35 est associé au numéro technique de la facture.

Le traitement récupère uniquement les suites numériques qui sont précédées d'un caractère spécial (*, /, $) présent dans la table GT<num> (contenant la liste séparateurs de N° facture ; ici, les suites numériques sont : 1234, 34 et 35).

Ensuite, le traitement analyse si ces suites numériques sont des factures ou des numéros d'évènement. Dans le cas contraire, il considère que la facture n'existe pas.

Remarque : dans le cas où le client fait apparaître une suite de factures sans en reprendre les numéros complets, par exemple « Factures 123456 / 457 / 458 », on remarque que la première suite numérique est plus grande que les autres suites numériques d'ou le résultat de la recherche de factures est de « 123456, 123457, 123458 ». Ainsi si l’on a les suites /123456 /* 459 mais que 459 est un numéro de facture, il faudra modifier le libellé pour que le plus petit numéro de facture existant soit le premier élément recherché ; dans ce cas, on aura /*459 /123456.

Traitements différés

Importation des fichiers bancaires (P_4REB_ED1)

Description technique des champs de cet écran.

Attention

Avant de lancer l'importation de relevé bancaire, il faut vous assurer que les données du fichier sont concordantes avec les caractéristiques de la banque (Informations des comptes de banque, écran P_4ENV_20) sinon une erreur peut se produire et sera visualisée dans le fichier de suivi (« log »).

Il faut donc contrôler que les informations concernant le dernier relevé traité sont correctes.

1.1.1.1.1.1.1.1. Exemple de paramétrage de la banque

0130004 00357USD2 00020268725 240701 0000000050000{

0430004 00357USD2 0002026872591260701 260701Facture 123 / 124 / 125 0000000000000000001000{

0530004 00357 000202687259 260701 Libelle complémentaire 0000000000000000000000

0430004 00357USD2 0002026872591260701 260701Facture 126 / 127 / 128 0000000000000000001000{

0530004 00357 000202687259 260701 Libelle complémentaire 0000000000000000000000

0430004 00357USD2 0002026872591260701 260701Facture 129 / 130 / 131 0000000000000000001000{

0530004 00357 000202687259 260701 Libelle complémentaire 0000000000000000000000

0530004 00357 000202687259 260701 Libelle complémentaire1 0000000000000000000000

0430004 00357USD2 0002026872591260701 2607701Facture 132 / 133 / 134 0000000000000000001000{

0530004 00357 000202687259 260701 Libelle complémentaire 0000000000000000000000

0530004 00357 000202687259 260701 Libelle complémentaire1 0000000000000000000000

0530004 00357 000202687259 260701 Libelle complémentaire2 0000000000000000000000

0430004 00357USD2 0002026872591260701 260701Facture 135 / 136 / 137 0000000000000000001000{

0730004 00357US2 00020268725 270701 0000000055000{

Caractéristiques du fichier ETEBAC 3

Les enregistrements de type « 05 » doivent être précédés d'un enregistrement du type « 04 ». Il est impossible de ne mettre uniquement que le type « 05 » non précédé de « 04 », sinon le traitement rejettera la ligne. Le type « 04 » concerne uniquement les mouvements de règlements nécessaires pour la suite et le type « 05 » concerne uniquement les suites numériques ou libellé. Il peut exister autant de lignes « 05 » que l'on veut pour une ligne « 04 »

Durant la phase d’importation, sur les enregistrements de type « 05 », le champ libellé est tronqué au 31e caractère. Les 10 derniers caractères de ce libellé font référence à des numériques ne devant pas être traités.

Le traitement de l'importation déclenche l'analyse du fichier intégré avec repérage des éléments acceptés ou rejetés pour l'intégration finale et met à jour la base de données (table P_4RB pour l'extrait et P_4LR pour les enregistrements). Ce repérage est défini par un code état (Statut) qui déterminera pour chaque ligne d'enregistrement de type « 04 » ou « 05 » si celle-ci est intégrable ou pas ; c’est-à-dire si les numéros de factures figurant dans le libellé ont été retrouvés dans le base pour le tiers en cours.

Ce code état est positionné à l'état « N » ou « O » (non-intégrable ou intégrable) pour les lignes de type « 04 » et à « blanc » pour les lignes de type « 05 » (sauf si le règlement est traité, car dans ce cas, la ligne « 05 » prend la même valeur d’état que la ligne « 04 »). Les lignes de type "05" concernent les libellés complémentaires mais aussi parfois des numéros de factures.

Description des zones de l’écran

Date importation : initialisée à la date du jour.

Cette date est utilisée lorsque le nom de fichier a été défini par la fonction TP_FRB, sous la forme jjmmqqq, avec :

  • jj = jour de la date d'importation,
  • mm = mois de la date d'importation,
  • qqq = quantième.

Pour calculer le quantième, le traitement calcule le nombre de jours entre la date d'importation et la date du début de l'exercice en cours et ajoute 1. ACE reconstitue la référence du fichier à importer en fonction de la date saisie.

Exemple : La date d'importation est le "28/07/2004" et la date de début de l'exercice en cours (2004) est le "01/01/2004".

Le traitement calcule le nombre de jours du "01/01/2004" à "28/07/2004" (208 jours) et ajoute 1 jour. Le quantième est donc : 209.

Quantième = Nombre de jours (date opération) – Nombre de jours (date début d’exercice) + 1

Fichier : référence du fichier à importer (table TP_FRB).

Deux possibilités sont offertes pour renseigner ce fichier :

  • Il doit faire partie des fichiers définis dans la fonction TP_FRB. Dans ce cas, ce fichier doit se trouver dans le répertoire d’ACE (là où se trouve le fichier « Generix.ini » du serveur),
  • Il peut être saisi manuellement lorsque le code utilisé est "VIDE". Dans ce cas, ce fichier peut être enregistré dans un autre répertoire et être appelé par un alias dont le chemin est défini dans le fichier « Generix.ini » du serveur (exemple : ap$in = ACE/releves_in).

Le traitement d’importation contrôle :

  • si le fichier existe à l’endroit indiqué,
  • si la structure du fichier est correcte. C’est à dire :
    • une ligne d’enregistrement de type « 01 » : Début de fichier et Identification de la banque,

    • une ou plusieurs lignes d’enregistrement de type « 04 » : Zone de libellé,

    • une ou plusieurs lignes d’enregistrement de type « 05 » : Zone de libellé complémentaire,

    • une ligne d’enregistrement de type « 07 » : Ligne de totalisation et de fin de fichier.

Accès : menu « Relevé bancaire », option « Importer »

Format Maquette
Rich Text Format (RTF) ap$eta:vide.std_fra
Blocs d’édition : P_4REBE1

Intégration des relevés bancaires (P_4REB_ED2)

Description technique des champs de cet écran.

Ce traitement ne prend en compte que les enregistrements dont le statut (code état) est à « O : Facture intégrable », ou « F : Forçage », ou les deux.

Le traitement génère des écritures de règlements et met à jour le code lettrage des factures associées et règlement correspondant.

Si le traitement s’est bien passé, le code état passe à « T : Traités ».

Une fois que la génération est réussie, le code lettrage est mis à jour et un numéro d’écriture est attribué dans le fichier "log".

Attention
  • Si l'utilisateur force le rapprochement (état à « F ») sur le règlement, l’écriture n’est pas équilibrée dans ce cas. Pour que l’intégration puisse se faire, le traitement ajoute la différence sur un dernier mouvement en récupérant le dernier compte et le dernier tiers trouvés. L’utilisateur ne pourra passer à l’état « F » un règlement qu’à partir du moment où au moins une facture est rapprochée de celui-ci.

  • L'utilisateur ne doit pas forcer le rapprochement (Etat à « F ») sur le règlement, si plus d’une facture est rapprochée et que le montant total de ces factures est supérieur au montant du règlement. On peut rapprocher partiellement du règlement uniquement une facture.

Accès : menu « Relevé bancaire », option « Intégrer ».

Format Maquette
Rich Text Format (RTF) ap$eta:vide.std_fra

Description des zones de l’écran

Banque : code journal (table P_1JA) (recherche accessible). A la validation de cette information, le libellé et la devise de la banque sont automatiquement affichés.

Extrait : numéro de relevé bancaire (table P_4RB) (recherche accessible).

Etablissement : si vous utilisez plusieurs établissements, il vous est possible de saisir le code de l’établissement choisi.

Date comptable : date du jour par défaut pour la génération des écritures.

Etat d’écriture : les choix possibles vous sont proposés sous forme d’une liste de valeurs. Ils permettent l'extraction des enregistrements en fonction des états (Statuts).

Nature Crédit : nature de type PAD (Nature standard).

Nature Débit : nature de type END (Nature standard).

Libellé : libellé d'entête et de mouvement nécessaire pour la génération des écritures.

Position initiale de l’extrait : date, sens (Débit ou Crédit) et montant de l’ancien solde.

Position finale de l’extrait : date, sens (Débit ou Crédit) et montant du nouveau solde

Trucs et astuces

Au cas où l’intégration subit un dysfonctionnement, un suivi du traitement (une « trace ») peut être réalisé pour simplifier la détection des anomalies et contribuer à la résolution du problème .

Pour cela, il suffira de s’identifier en tant qu’agent « #TRACE# ». La trace sera présente dans le fichier « log » généré par le traitement différé, et consultable grâce à la fonction UEDI.

Exemple de génération des écritures

Exemple n°1 : cas ou l'état est à « O »

· Factures ayant le même compte 411100 et même établissement, Tiers CLI1.

Montant du Règlement Sens du règlement Montant de la facture Sens de la facture
100.00 C 200.00 D
300.00 C
200.00 D
       
TOTAL : 100.00 C TOTAL : 100 D

Lors de la génération, on contre-passe le règlement à 100.00 D. Comme le sens est débit, donc la nature standard sera de type « END » et comme les factures sont du même compte et même établissement, on regroupe toutes les factures sur le même compte que celui de la facture (411100).

Ce qui nous donne comme résultat :

Etablissement Compte Tiers Montant Sens
  512000   100.00 D
  411100 CLI1 100.00 C

· Factures n'ayant pas le même compte et même établissement, Tiers CLI1.

Mont Règlement Sens Règlement Compte Facture Montant Facture Sens de la Facture
100.00 C 411000 200.00 D
411000 300.00 C
411100 200.00 D
         
TOTAL : 100.00 C   TOTAL : 100.00 D

Ce qui nous donne comme résultat :

Etablissement Compte Tiers Montant Sens
  512000   100.00 D
  411000 CLI1 100.00 C
  411100 CLI1 200.00 D

Pour la gestion en multi–établissement, le traitement effectue une génération des comptes de liaisons avec différents établissements.

Exemple de génération des écritures

Exemple n°2 : cas ou l'état est à « F »

· Factures ayant le même compte 411100 et même établissement, Tiers CLI1.

Montant du Règlement Sens du règlement Montant de la facture Sens de la facture
100.00 C 200.00 D
300.00 D
       
TOTAL : 100.00 C TOTAL : 500.00 D

Lors de la génération, on contre-passe le règlement à 100.00 D. Comme le sens est débit, donc la nature standard sera de type « END » et comme les factures sont du même compte et même établissement, on regroupe toutes les factures sur un même compte de celui de la facture (411100).

Ce qui nous donne comme résultat :

Etablissement Compte Tiers Montant Sens
  512000   100.00 D
  411100 CLI1 500.00 C
  411100 CLI1 400.00 D

· Factures n'ayant pas le même compte et même établissement, Tiers CLI1.

Mont Règlement Sens Règlement Compte Facture Montant Facture Sens de la Facture
100.00 C 411000 200.00 D
411100 300.00 D
         
TOTAL : 100.00 C   TOTAL : 500.00 D

Ce qui nous donne comme résultat :

Etablissement Compte Tiers Montant Sens
  512000   100.00 D
  411000 CLI1 200.00 C
  411100 CLI1 300.00 C
411100 CLI1 400.00 D

Editions

Edition du relevé bancaire (P_4REB_ED3)

Description technique des champs de cet écran.

Ce traitement d’édition peut être lancé à la suite de chacune des autres phases. Il permet d’effectuer une édition des enregistrements de type « 04 » et « 05 » pour un code état donné.

Etat : état des lignes de relevé bancaire que vous souhaitez éditer (table TP_4ET).

Exemples :
  • O : Intégrable (= facture trouvée),

  • N : Non intégrable (= facture non trouvée),

  • I : Ignoré,

  • T : Traité (= validé),

  • F : Forçage. Cet état permet de traiter le cas où on ne trouve pas toutes les factures relatives au règlement, mais que l’on veut valider quand même.

Accès : menu « Relevé bancaire », option « Editer »

Format Maquette
Rich Text Format (RTF) ap$std_fra :p_4rebe31.std_fra
Blocs d’édition : P_4REBE3

Exemple d’édition

Banque : Banque Européenne Centrale Qualifiée d’Union ART Devise : EUR

+---------+------------------+---------------+-----------------------------------+--------+------------------+------+

| Ligne | Date opération | Date valeur | Libellé | Sens | Montant | Etat |

+---------+------------------+---------------+-----------------------------------+--------+------------------+-- ---+

| Relevé(s) en date du 07/10/2002 |

+-------------------------------------------------------------------------------------------------------------------+

| Relevé n° 11 |

+---------+------------------+---------------+-----------------------------------+--------+------------------+------+

| 5 | 07/10/2002 | 01/06/2002 | /140609 EFS-RHONE ALPES | C | 600450.28 | T |

| 6 | 07/10/2002 | | /140609 | | 0.00 | T |

| 11 | 07/10/2002 | 01/06/2002 | /141537 EFS-PYRENEES MEDIT | C | 357258.09 | T |

| 12 | 07/10/2002 | | /141537 | | 0.00 | T |

| 13 | 07/10/2002 | 01/06/2002 | /141714 EFS-AQUITAINE - LI | C | 311303.11 | T |

| 14 | 07/10/2002 | | /141714 | | 0.00 | T |

| 15 | 07/10/2002 | 01/06/2002 | /141417 EFS-BOURGOGNE - FR | C | 241077.11 | T |

| 16 | 07/10/2002 | | /141417 | | 0.00 | T |

| 17 | 07/10/2002 | 01/06/2002 | /F138242 EFS-CENTRE ATLANTI | C | 230627.38 | T |

| 18 | 07/10/2002 | | /F138242 | | 0.00 | T |

+---------+------------------+---------------+-----------------------------------+--------+------------------+------+

+++++++++-