-- -----------------------------------------------------------------------------
-- OpenSi : Outils libres de gestion d'entreprise                             --
-- Copyright (C) 2003 Speedinfo.fr S.A.R.L.                                   --
-- Contact: contact@opensi.org                                                --
--                                                                            --
-- This program is free software; you can redistribute it and/or              --
-- modify it under the terms of the GNU General Public License                --
-- as published by the Free Software Foundation; either version 2             --
-- of the License, or (at your option) any later version.                     --
--                                                                            --
-- This program is distributed in the hope that it will be useful,            --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of             --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the               --
-- GNU General Public License for more details.                               --
--                                                                            --
-- You should have received a copy of the GNU General Public License          --
-- along with this program; if not, write to the Free Software                --
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --
-- -----------------------------------------------------------------------------

-- SCHEMA BASE DE DONNÉES OSAMES GESTION COMMERCIALE << DOSSIER >>



-- ------------------------- TVA ---------------------------------------------------------------------------


create table TAUX_TVA (
  Code_TVA            int unsigned not null auto_increment,      -- Code de TVA
  Taux_TVA            decimal(4,2) unsigned default 0,           -- Taux de TVA
  Taux_NPR            decimal(4,2) unsigned default 0,           -- Taux de TVA NPR
  Normal              tinyint unsigned default 0,                -- Taux normal (oui/non)
  Code_Pays           char(2) default 'FR',                      -- Code pays
  Compte_TVA_Achat    varchar(8) default '',                     -- Numéro de compte de TVA sur achat
  Compte_TVA_Vente    varchar(8) default '',                     -- Numéro de compte de TVA sur vente
  Compte_Vente        varchar(8) default '',                     -- Numéro de compte de vente
  Compte_Achat        varchar(8) default '',                     -- Numéro de compte d'achat
  primary key(Code_TVA)
) engine=InnoDB;


create table VENTIL_TVA_NATIONAL_UE (
  Code_TVA         int unsigned not null,      -- Code TVA d'un taux francais > 0
  Code_Pays        char(2) not null,           -- Code pays de l'UE (hors France)
  Compte_Vente     varchar(8) default '',      -- Numéro de compte de vente
  primary key(Code_TVA, Code_Pays),
  constraint cfk_ventil_tva_national_ue_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table OPTION_TAXATION (
  Code_Pays           char(2) not null,                          -- Code pays de l'UE
  Taxe_Arrivee        tinyint unsigned default 0,                -- Taxation dans le pays d'arrivée
  primary key(Code_Pays)
) engine=InnoDB;


-- ------------------------- TABLES CLIENTS ----------------------------------------------------------------


create table FICHE_CLIENT (
  Client_Id        char(10) not null,             -- Identifiant unique du client
  Code_Couleur     tinyint unsigned default 2,    -- Code de couleur définissant l'importance d'un client
  Civilite         tinyint unsigned default 0,    -- Civilité (M=1,Mme=2,Mlle=3)
  Nom              varchar(30) default '',        -- Nom du client
  Prenom           varchar(20) default '',        -- Prénom du client
  Raison_Sociale   varchar(50) default '',        -- Raison sociale de l'entreprise
  Adresse          varchar(80) default '',        -- Ligne d'adresse 1
  Comp_Adresse     varchar(50) default '',        -- Ligne d'adresse 2
  Adresse_3        varchar(50) default '',        -- Ligne d'adresse 3
  Code_Postal      varchar(10) default '',        -- Code postal
  Ville            varchar(50) default '',        -- Ville
  Code_Pays        char(2) default 'FR',          -- Code pays
  Tel_1            varchar(20) default '',        -- Téléphone 1
  Tel_2            varchar(20) default '',        -- Téléphone 2
  Tel_3            varchar(20) default '',        -- Téléphone 3
  Fax_1            varchar(20) default '',        -- Fax 1
  Fax_2            varchar(20) default '',        -- Fax 2
  Email_1          varchar(60) default '',        -- Adresse e-mail 1
  Email_2          varchar(60) default '',        -- Adresse e-mail 2
  Site_Web         varchar(40) default '',        -- Site web de la société
  Num_SIRET        char(14) default '',           -- Numéro de SIRET
  Code_NAF         char(5) default '',            -- Code NAF
  Num_TVA_Intra    varchar(14) default '',        -- Numéro de TVA intracommunautaire
  Type_Societe     varchar(11) default 'SARL',    -- Type de société (SARL, SA...)
  Famille          varchar(40) default '',        -- Famille de client
  Date_Creation    bigint unsigned default 0,     -- Date de création de la fiche client
  Date_Maj         bigint unsigned default 0,     -- Date de mise à jour de la fiche client
  Util_C           int unsigned not null,         -- Utilisateur créateur de la fiche client
  Util_M           int unsigned not null,         -- Utilisateur ayant fait la dernière mise à jour de la fiche client
  Util_R           int unsigned not null,         -- Responsable du client
  Recurrent        tinyint unsigned default 0,    -- Client récurrent (1=oui/0=non)
  Exigences        tinyint unsigned default 0,    -- Exigences particulières (1=oui/0=non)
  Actif            tinyint unsigned default 1,    -- Client actif (1=actif/0=inactif)
  Com_Recurrent    text,                          -- Commentaires sur client récurrent
  Com_Exigences    text,                          -- Commentaires sur exigences du client
  Com_Sante        text,                          -- Commentaires sur la santé financière de l'entreprise
  Com_Libre        text,                          -- Commentaires libres
  Revendeur        tinyint unsigned default 0,    -- Revendeur (1=oui/0=non)
  Bloque           tinyint unsigned default 0,    -- Client bloqué (1=oui/0=non)
  Supprime         tinyint unsigned default 0,    -- Client supprimé virtuellement (1=oui/0=non)
  Code_Fournisseur varchar(10) default '',        -- Code fournisseur chez le client
  Numero_Compte    char(8) default '',            -- Numéro de compte pour liaison compta
  Collectif        char(8) default '41100000',    -- Numéro de compte collectif (41100000 par défaut)
  Mode_Reg         varchar(25) default '',        -- Mode de réglement
  Delai_Reg        tinyint unsigned default 0,    -- Délai de réglement en jours
  Taux_Penalite    float(4,2) default 0,          -- Taux de pénalité
  Taux_Remise      float(4,2) default 0,          -- Taux de remise
  Code_Tarif       tinyint unsigned default 1,    -- Code tarifaire
  Nb_Ex            tinyint unsigned default 1,    -- Nombre d'exemplaires clients à éditer
  Num_Org          int unsigned default 0,        -- Identifiant organisme de livraison
  Fact_Port        tinyint unsigned default 1,    -- Facturation des frais de port (1=oui/0=non)
  Fact_Gest        tinyint unsigned default 0,    -- Facturation des frais de gestion (1=oui/0=non)
  Fact_Emballage   tinyint unsigned default 0,    -- Facturation des frais d'emballage (1=oui/0=non)
  Franco           decimal(10,2) default 0,       -- Montant du franco de port
  Type_Reg         char(1) default 'N',           -- Type de réglement (F=fin de mois,N=net,L=Fin de mois le)
  Jour_Fact        tinyint unsigned default 0,    -- Jour de facturation pour le type de règlement L
  Nb_Bon           tinyint unsigned default 1,    -- Nombre d'exemplaires du bon de livraison
  Bon_Chiffre      tinyint unsigned default 0,    -- Bon de livraison chiffré (1=oui,0=non)
  Encours_Auto     decimal(14,2) default 0,       -- Montant de l'encours autorisé
  Type_Fact        char(1) default 'C',           -- Type de facturation (G=groupement d'affaires,C=commande,B=bon de livraison)
  Com_Fact         tinytext,                      -- Commentaire sur facture
  Indications      tinytext,                      -- Indications de commande
  Type_Client      char(1) default 'E',           -- Type de client (P=particulier,E=entreprise,O=organisme publique,A=Association)
  Assujetti_TVA    tinyint unsigned default 0,    -- Assujetti à la TVA (1=oui/0=non)
  primary key(Client_Id)
) engine=InnoDB;



create table BANQUE_CLIENT (
  Banque_Id       int unsigned not null auto_increment,  -- Identifiant banque
  Client_Id       char(10) default '',                   -- Identifiant client
  Nom             varchar(30) default '',                -- Nom de la banque
  Adresse         varchar(80) default '',                -- Domiciliation
  Code_Agence     varchar(5) default '',                 -- Code agence
  Code_Guichet    varchar(5) default '',                 -- Code guichet
  Num_Compte      varchar(11) default '',                -- Numéro de compte
  Cle_RIB         varchar(2) default '',                 -- Clé de RIB
  IBAN            varchar(27) default '',                -- 27 caractères du numéro IBAN
  BIC             varchar(11) default '',                -- Numéro BIC
  primary key(Banque_Id),
  index idx_client_id (Client_Id),
  constraint cfk_banque_client_client_id foreign key (Client_Id) references FICHE_CLIENT (Client_Id) on update cascade
) engine=InnoDB;



create table CONTACT_CLIENT (
  Num_Inter       int unsigned not null auto_increment,  -- Numéro d'intervenant
  Civilite        tinyint unsigned default 0,            -- Civilite (M=1,Mme=2,Mlle=3)
  Client_Id       char(10) not null,                     -- Identifiant client
  Nom             varchar(30) default '',                -- Nom de l'intervenant
  Prenom          varchar(20) default '',                -- Prenom de l'intervenant
  Age             tinyint unsigned default 0,            -- Age de l'intervenant
  Fonction        varchar(25) default '',                -- Fonction dans l'entreprise
  Infos           text,                                  -- Informations libres
  Adresse         varchar(100) default '',               -- Adresse
  Code_Postal     varchar(10) default '',                -- Code postal
  Ville           varchar(50) default '',                -- Ville
  Tel             varchar(20) default '',                -- Téléphone
  Portable        varchar(20) default '',                -- Téléphone portable
  Fax             varchar(20) default '',                -- Fax
  Email           varchar(60) default '',                -- Adresse e-mail
  Site_Web        varchar(40) default '',                -- Site web
  Principal_Fact  tinyint unsigned default 0,            -- Interlocuteur principal de facturation (1=oui/0=non)
  Principal_Liv   tinyint unsigned default 0,            -- Interlocuteur principal de livraison (1=oui/0=non)
  Relation        char(1) default 'O',                   -- Type de relation (O=occasionnelle,H=habituelle)
  Code_Pays       char(2) default 'FR',                  -- Code pays
  primary key(Num_Inter),
  index idx_client_id (Client_Id),
  constraint cfk_contact_client_client_id foreign key (Client_Id) references FICHE_CLIENT (Client_Id) on update cascade
) engine=InnoDB;



create table ADRESSE_CLIENT (
  Adresse_Id      int unsigned not null auto_increment,  -- Identifiant de l'adresse
  Client_Id       char(10) not null,                     -- Identifiant client
  Denomination    varchar(50) default '',                -- Raison sociale
  Adresse_1       varchar(80) default '',                -- Ligne d'adresse 1
  Adresse_2       varchar(50) default '',                -- Ligne d'adresse 2
  Adresse_3       varchar(50) default '',                -- Ligne d'adresse 3
  Code_Postal     varchar(10) default '',                -- Code postal
  Ville           varchar(50) default '',                -- Ville
  Code_Pays       char(2) default 'FR',                  -- Code pays
  Defaut_Liv      tinyint unsigned default 0,            -- Adresse de livraison par défaut (1=oui/0=non)
  Defaut_Fact     tinyint unsigned default 0,            -- Adresse de facturation par défaut (1=oui/0=non)
  Contact_Liv     int unsigned default null,             -- Identifiant du contact pour la livraison
  Contact_Fact    int unsigned default null,             -- Identifiant du contact pour la facturation
  primary key(Adresse_Id),
  index idx_client_id (Client_Id),
	index idx_contact_liv (Contact_Liv),
	index idx_contact_fact (Contact_Fact),
  constraint cfk_adresse_client_client_id foreign key (Client_Id) references FICHE_CLIENT (Client_Id) on update cascade,
  constraint cfk_adresse_client_contact_liv foreign key (Contact_Liv) references CONTACT_CLIENT (Num_Inter),
  constraint cfk_adresse_client_contact_fact foreign key (Contact_Fact) references CONTACT_CLIENT (Num_Inter)
) engine=InnoDB;


-- ----- TABLES FOURNISSEURS --------------------------------------------------------------------------------------------------------------------


create table FICHE_FOURNISSEUR (
  Fournisseur_Id      char(10) not null,             -- Identifiant unique du fournisseur
  Civilite            tinyint unsigned default 0,    -- Civilité (M=1,Mme=2,Mlle=3)
  Nom                 varchar(30) default '',        -- Nom
  Prenom              varchar(20) default '',        -- Prénom
  Raison_Sociale      varchar(50) default '',        -- Raison sociale
  Adresse             varchar(80) default '',        -- Ligne d'adresse 1
  Comp_Adresse        varchar(50) default '',        -- Ligne d'adresse 2
  Adresse_3           varchar(50) default '',        -- Ligne d'adresse 3
  Code_Postal         varchar(10) default '',        -- Code postal
  Ville               varchar(50) default '',        -- Ville
  Code_Pays           char(2) default 'FR',          -- Code pays
  Tel_1               varchar(20) default '',        -- Téléphone 1
  Tel_2               varchar(20) default '',        -- Téléphone 2
  Tel_3               varchar(20) default '',        -- Téléphone 3
  Fax_1               varchar(20) default '',        -- Fax 1
  Fax_2               varchar(20) default '',        -- Fax 2
  Email_1             varchar(60) default '',        -- Adresse e-mail 1
  Email_2             varchar(60) default '',        -- Adresse e-mail 2
  Site_Web            varchar(40) default '',        -- Site web de la société
  Date_Creation       bigint unsigned default 0,     -- Date de création de la fiche fournisseur
  Date_Maj            bigint unsigned default 0,     -- Date de mise à jour de la fiche fournisseur
  Util_C              int unsigned not null,         -- Utilisateur créateur de la fiche fournisseur
  Util_M              int unsigned not null,         -- Utilisateur ayant fait la dernière modification de la fiche fournisseur
  Com_Libre           text,                          -- Commentaires libres
  Code_Couleur        tinyint unsigned default 2,    -- Code de couleur définissant l'importance du fournisseur
  Type_Societe        varchar(11) default 'SARL',    -- Type de société (SARL, SA...)
  Famille             varchar(40) default '',        -- Famille de fournisseur
  Num_TVA_Intra       varchar(14) default '',        -- Numéro de TVA intracommunautaire
  Num_SIRET           char(14) default '',           -- Numéro de SIRET
  Code_NAF            char(5) default '',            -- Code NAF
  Qualite_Relation    char(1) default 'B',           -- Qualité de la relation avec le fournisseur (B=bonne,E=Excellente,M=moyenne,N=nulle)
  Respect_Delai       tinyint unsigned default 1,    -- Respect des délais de livraison (1=oui/0=non)
  Competitivite       tinyint unsigned default 1,    -- Compétitivité des prix obtenus / prix marché (note de 1 à 5)
  Supprime            tinyint unsigned default 0,    -- Fournisseur supprimé virtuellement (1=oui/0=non)
  Franco              decimal(10,2) default 0,       -- Montant du franco de port
  Taux_Remise         decimal(4,2) default 0,        -- Taux de remise permanent
  Remise_1            decimal(4,2) default 0,        -- Taux de remise tranche 1
  Remise_2            decimal(4,2) default 0,        -- Taux de remise tranche 2
  Remise_3            decimal(4,2) default 0,        -- Taux de remise tranche 3
  Remise_4            decimal(4,2) default 0,        -- Taux de remise tranche 4
  Remise_5            decimal(4,2) default 0,        -- Taux de remise tranche 5
  Tranche_CA0         decimal(14,2) default 0,       -- Tranche de CA 0
  Tranche_CA1         decimal(14,2) default 0,       -- Tranche de CA 1
  Tranche_CA2         decimal(14,2) default 0,       -- Tranche de CA 2
  Tranche_CA3         decimal(14,2) default 0,       -- Tranche de CA 3
  Tranche_CA4         decimal(14,2) default 0,       -- Tranche de CA 4
  Taux_RFA            decimal(4,2) default 0,        -- Taux de remise RFA
  Remise_Fixe         decimal(14,2) default 0,       -- Montant de remise fixe
  Remise_Var          decimal(4,2) default 0,        -- Part variable de remise
  Objectif_Marge      decimal(4,2) default 0,        -- Objectif de marge à atteindre
  Frais_Port          decimal(14,2) default 0,       -- Montant ou Pourcentage de frais de port
  Type_Port           char(1) default 'M',           -- Type de frais de port (P=poucentage,M=montant)
  Nationnalite        char(1) default 'N',           -- Nationalité (N=National,U=Union européenne,I=International)
  Delai_Livraison     tinyint unsigned default 0,    -- Délai de reappro par defaut en jours
  Nb_Ex               tinyint unsigned default 1,    -- Nombre d'exemplaires d'impression
  Mode_Reg            varchar(25) default '',        -- Mode de réglement
  Delai_Reg           tinyint unsigned default 0,    -- Délai de réglement en jours
  Type_Reg            char(1) default 'N',           -- Type de réglement (F=fin de mois,N=net,L=Fin de mois le)
  Jour_Fact           tinyint unsigned default 0,    -- Jour de facturation pour le type de règlement L
  Code_Client         varchar(30) default '',        -- Code client chez le fournisseur
  Procedures          text,                          -- Description des procédures à respecter
  Login_Tel           varchar(10) default '',        -- Login pour commande par téléphone
  Pass_Tel            varchar(10) default '',        -- Mot de passe pour commande par téléphone
  Site_Web_Com        varchar(40) default '',        -- Adresse site web de commande
  Login_Web           varchar(20) default '',        -- Login pour commande par internet
  Pass_Web            varchar(20) default '',        -- Mot de passe pour commande par internet
  Infos_Courrier      text,                          -- Informations pour commande par courrier
  Procs_Courrier      text,                          -- Procédures pour commande par courrier
  Adresse_Courrier    varchar(80) default '',        -- Adresse de commande
  CP_Courrier         varchar(10) default '',        -- Code postal
  Ville_Courrier      varchar(50) default '',        -- Ville
  Date_Mvt            bigint unsigned default 0,     -- Date du premier mouvement comptable
  Collectif           char(8) default '40100000',    -- Numéro de compte collectif (40100000 par défaut)
  Numero_Compte       char(8) default '',            -- Numéro de compte pour liaison compta
  Encours_Auto        decimal(14,2) default 0,       -- Montant de l'en-cours autorisé
  Actif               tinyint unsigned default 1,    -- Compte en activité (1=actif,0=inactif)
  Date_Ouverture      bigint unsigned default 0,     -- Date d'ouverture du compte
  Indications         tinytext,                      -- Indications de commande
  primary key(Fournisseur_Id)
) engine=InnoDB;


create table CONTACT_FOURNISSEUR (
  Num_Inter           int unsigned not null auto_increment,  -- Numéro d'interlocuteur
  Fournisseur_Id      char(10) default '',                   -- Identifiant fournisseur
  Civilite            tinyint unsigned default 0,            -- Civilité (M=1,Mme=2,Mlle=3)
  Nom                 varchar(30) default '',                -- Nom de l'interlocuteur
  Prenom              varchar(20) default '',                -- Prénom de l'interlocuteur
  Fonction            varchar(25) default '',                -- Fonction dans l'entreprise
  Relation            char(1) default 'O',                   -- Type de relation (O=occasionnelle,H=habituelle)
  Infos               text,                                  -- Informations libres
  Adresse             varchar(100) default '',               -- Adresse
  Code_Postal         varchar(10) default '',                -- Code postal
  Ville               varchar(50) default '',                -- Ville
  Tel                 varchar(20) default '',                -- Téléphone fixe
  Portable            varchar(20) default '',                -- Téléphone portable
  Fax                 varchar(20) default '',                -- Fax
  Email               varchar(60) default '',                -- Adresse e-mail
  Site_Web            varchar(40) default '',                -- Site web
  Principal           tinyint unsigned default 0,            -- Interlocuteur principal (1=oui/0=non)
  Age                 tinyint unsigned default 0,            -- Age de l'interlocuteur
  Code_Pays           char(2) default 'FR',                  -- Code pays
  primary key(Num_Inter),
  index idx_fournisseur_id (Fournisseur_Id),
  constraint cfk_contact_fournisseur_fournisseur_id foreign key (Fournisseur_Id) references FICHE_FOURNISSEUR (Fournisseur_Id) on update cascade
) engine=InnoDB;


create table ADRESSE_FOURNISSEUR (
  Num_Adresse         int unsigned not null auto_increment,  -- Numéro de l'adresse
  Fournisseur_Id      char(10) default '',                   -- Identifiant fournisseur
  Raison_Sociale      varchar(50) default '',                -- Raison sociale
  Adresse             varchar(80) default '',                -- Ligne d'adresse 1
  Comp_Adresse        varchar(50) default '',                -- Ligne d'adresse 2
  Adresse_3           varchar(50) default '',                -- Ligne d'adresse 3
  Code_Postal         varchar(10) default '',                -- Code postal
  Ville               varchar(50) default '',                -- Ville
  Code_Pays           char(2) default 'FR',                  -- Code pays
  Defaut              tinyint unsigned default 0,            -- Adresse par défaut (1=oui/0=non)
  Contact             int unsigned default null,             -- Identifiant du contact
  primary key(Num_Adresse),
  index idx_fournisseur_id (Fournisseur_Id),
	index idx_contact (Contact),
  constraint cfk_adresse_fournisseur_fournisseur_id foreign key (Fournisseur_Id) references FICHE_FOURNISSEUR (Fournisseur_Id) on update cascade,
	constraint cfk_adresse_fournisseur_contact foreign key (Contact) references CONTACT_FOURNISSEUR (Num_Inter)
) engine=InnoDB;


create table BANQUE_FOURNISSEUR (
  Banque_Id           int unsigned not null auto_increment,  -- Identifiant banque
  Fournisseur_Id      char(10) default '',                   -- Identifiant client
  Nom                 varchar(30) default '',                -- Nom de la banque
  Adresse             varchar(80) default '',                -- Domiciliation
  Code_Agence         varchar(5) default '',                 -- Code agence
  Code_Guichet        varchar(5) default '',                 -- Code guichet
  Num_Compte          varchar(11) default '',                -- Numéro de compte
  Cle_RIB             varchar(2) default '',                 -- Clé de RIB
  IBAN                varchar(27) default '',                -- 27 caractères du numéro IBAN
  BIC                 varchar(11) default '',                -- Numéro BIC
  primary key(Banque_Id),
  index idx_fournisseur_id (Fournisseur_Id),
  constraint cfk_banque_fournisseur_fournisseur_id foreign key (Fournisseur_Id) references FICHE_FOURNISSEUR (Fournisseur_Id) on update cascade
) engine=InnoDB;


-- ----- TABLES STOCKS --------


create table FICHE_ARTICLE (
  Fiche_Article_Id          int unsigned not null auto_increment, -- Identifiant article
  Article_Id                char(40) not null,                  -- Code Article
  Designation               varchar(100) default '',            -- Désignation article
  Marque                    varchar(40) default '',             -- Marque
  Famille                   varchar(40) default '',             -- Famille article
  Sous_Famille              varchar(40) default '',             -- Sous-famille article
  Unite                     char(3) default 'U',                -- Unité de vente (U,g,kg,t,m³,l,m²,mm²,m)
  Colisage                  decimal(10,3) unsigned default 0,   -- Quantité par colis
  Compte_Achat_UE           varchar(8) default '',              -- Numéro de compte d'achat dans l'union européenne
  Compte_Achat_I            varchar(8) default '',              -- Numéro de compte d'achat à l'international
  Prix_Achat_Der            decimal(14,4) unsigned default 0,   -- Dernier prix d'achat de l'article
  Code_TVA                  int unsigned default 1,             -- Code TVA
  Frais_Appro_Der           decimal(14,4) unsigned default 0,   -- Derniers frais d'appro de l'article
  Tarif_1                   decimal(14,4) unsigned default 0,   -- Tarif 1 HT
  Tarif_2                   decimal(14,4) unsigned default 0,   -- Tarif 2 HT
  Tarif_3                   decimal(14,4) unsigned default 0,   -- Tarif 3 HT
  Tarif_4                   decimal(14,4) unsigned default 0,   -- Tarif 4 HT
  Tarif_5                   decimal(14,4) unsigned default 0,   -- Tarif 5 HT
  Coeff_1                   decimal(10,6) unsigned default 1.1, -- Coefficient multiplicateur 1
  Coeff_2                   decimal(10,6) unsigned default 1.2, -- Coefficient multiplicateur 2
  Coeff_3                   decimal(10,6) unsigned default 1.3, -- Coefficient multiplicateur 3
  Coeff_4                   decimal(10,6) unsigned default 1.4, -- Coefficient multiplicateur 4
  Coeff_5                   decimal(10,6) unsigned default 1.5, -- Coefficient multiplicateur 5
  Tarif_1_TTC               decimal(14,4) unsigned default 0,   -- Tarif 1 TTC
  Tarif_2_TTC               decimal(14,4) unsigned default 0,   -- Tarif 2 TTC
  Tarif_3_TTC               decimal(14,4) unsigned default 0,   -- Tarif 3 TTC
  Tarif_4_TTC               decimal(14,4) unsigned default 0,   -- Tarif 4 TTC
  Tarif_5_TTC               decimal(14,4) unsigned default 0,   -- Tarif 5 TTC
  Marge_1                   decimal(5,2) unsigned default 0,    -- Marge 1
  Marge_2                   decimal(5,2) unsigned default 0,    -- Marge 2
  Marge_3                   decimal(5,2) unsigned default 0,    -- Marge 3
  Marge_4                   decimal(5,2) unsigned default 0,    -- Marge 4
  Marge_5                   decimal(5,2) unsigned default 0,    -- Marge 5
  Prix_Achat                decimal(12,3) default 0,            -- Prix d'achat retenu servant au calcul des prix de vente
  Frais_Appro               decimal(12,3) default 0,            -- Frais d'appro servant au calcul des prix de vente
  Nature                    tinyint unsigned default 1,         -- Nature (produit fini=1/matiere premiere=0)
  Art_Achat                 tinyint unsigned default 1,         -- Article à l'achat (1=oui/0=non)
  Art_Vente                 tinyint unsigned default 1,         -- Article à la vente (1=oui/0=non)
  Tenue_Stock               tinyint unsigned default 1,         -- Article tenu en stock (1=oui/0=non)
  Prestation                tinyint unsigned default 0,         -- L'article est une prestation de service (1=oui/0=non)
  Poids_Brut                decimal(10,3) unsigned default 0,   -- Poids brut
  Poids_Net                 decimal(10,3) unsigned default 0,   -- Poids net
  Poids_Unite               decimal(10,3) unsigned default 0,   -- Poids brut à l'unité
  Mesure_Poids              char(1) default 'K',                -- Unité de poids pour les poids brut et net (G=gramme,K=kg,T=tonne)
  Unite_Vente               int unsigned default 1,             -- Nombre d'unités par lot
  Localisation              varchar(30) default '',             -- Localisation physique (entrepôt, étagère...)
  Code_Barre                varchar(15) default '',             -- Code barre associé a l'article (norme EAN et UPC)
  Conditionnement           varchar(30) default '',             -- Conditionnement (palette, pack...)
  Article_Substitution      varchar(40) default '',             -- Article de substitution
  Date_Creation             bigint unsigned default 0,          -- Date de création de la fiche
  Date_Maj                  bigint unsigned default 0,          -- Date de modification de la fiche
  Util_C                    int unsigned not null,              -- Utilisateur créateur de la fiche
  Util_M                    int unsigned not null,              -- Utilisateur ayant fait la dernière modification de la fiche
  Descrip_1                 text,                               -- Description niveau 1
  Descrip_2                 text,                               -- Description niveau 2
  Couleur                   varchar(40) default '',             -- Couleur de l'article
  Taille                    varchar(20) default '',             -- Taille de l'article
  Collection                varchar(40) default '',             -- Collection (regroupement d'article)
  Supprime                  tinyint unsigned default 0,         -- Article supprimé virtuellement (1=oui/0=non)
  Liaison                   int unsigned default 0,             -- Champ de liaison d'articles ayant la même tarification
  Base_Calcul               tinyint unsigned default 1,         -- Tarification sur qté à partir d'une base de calcul (1=oui/0=non)
  Eco_Taxe                  decimal(10,2) unsigned default 0,   -- Montant de l'eco-participation
  Ref_Fabricant             varchar(40) default '',             -- Référence fabricant
  Prix_Public               decimal(12,2) unsigned default 0,   -- Prix public
  Composition               char(1) default 'U',                -- Article composé (N=Nomenclature, F=Forfait, U=Article unique)
  Code_Stats                varchar(10) default '',             -- Code de statistiques
  Code_NC8                  varchar(8) default '',              -- Code NC8
  Imp_Nom_Devis             tinyint unsigned default 0,         -- Impression nomenclature sur devis
  Imp_Nom_OF                tinyint unsigned default 0,         -- Impression nomenclature sur of
  Imp_Nom_Facture           tinyint unsigned default 0,         -- Impression nomenclature sur facture
  Imp_Nom_Bon               tinyint unsigned default 0,         -- Impression nomenclature sur bl
  Imp_Nom_Fiche             tinyint unsigned default 0,         -- Impression nomenclature sur fiche
  Imp_Nom_BP                tinyint unsigned default 0,         -- Impression nomenclature sur BP
  Imp_Nom_BCF               tinyint unsigned default 0,         -- Impression nomenclature sur BC fournisseur
  Imp_Desc1_Devis           tinyint unsigned default 0,         -- Impression description 1 sur devis
  Imp_Desc1_OF              tinyint unsigned default 0,         -- Impression description 1 sur of
  Imp_Desc1_Facture         tinyint unsigned default 0,         -- Impression description 1 sur facture
  Imp_Desc1_Bon             tinyint unsigned default 0,         -- Impression description 1 sur bl
  Imp_Desc1_Fiche           tinyint unsigned default 0,         -- Impression description 1 sur fiche
  Imp_Desc1_BP              tinyint unsigned default 0,         -- Impression description 1 sur BP
  Imp_Desc1_BCF             tinyint unsigned default 0,         -- Impression description 1 sur BC fournisseur
  Imp_Desc2_Devis           tinyint unsigned default 0,         -- Impression description 2 sur devis
  Imp_Desc2_OF              tinyint unsigned default 0,         -- Impression description 2 sur of
  Imp_Desc2_Facture         tinyint unsigned default 0,         -- Impression description 2 sur facture
  Imp_Desc2_Bon             tinyint unsigned default 0,         -- Impression description 2 sur bl
  Imp_Desc2_Fiche           tinyint unsigned default 0,         -- Impression description 2 sur fiche
  Imp_Desc2_BP              tinyint unsigned default 0,         -- Impression description 2 sur BP
  Imp_Desc2_BCF             tinyint unsigned default 0,         -- Impression description 2 sur BC fournisseur
  primary key(Fiche_Article_Id),
  unique(Article_Id),
  index idx_code_tva (Code_TVA),
  constraint cfk_fiche_article_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table STOCKS_ARTICLE (
  Article_Id          char(40) not null,                  -- Code article
  Prix_Init           decimal(10,3) unsigned default 0,   -- Prix moyen d'un article du stock initial
  Frais_Init          decimal(10,3) unsigned default 0,   -- Frais d'appro moyens d'un article du stock initial
  Stock_Init          decimal(10,3) unsigned default 0,   -- stock initial dernier inventaire
  Entrees             decimal(10,3) default 0,            -- entrees article
  Sorties             decimal(10,3) default 0,            -- sorties article
  Com_Clients         decimal(10,3) default 0,            -- commandes des clients
  Com_Fournisseurs    decimal(10,3) default 0,            -- commandes des fournisseurs
-- Stock_Minimum       decimal(10,3) unsigned default 0,  -- stock minimum
  Stock_Alerte        decimal(10,3) unsigned default 0,   -- stock d'alerte
  Stock_Securite      decimal(10,3) unsigned default 0,   -- stock de sécurité
  Stock_Maximum       decimal(10,3) unsigned default 0,   -- stock maximum
  Date_Inventaire     bigint unsigned default 0,          -- date du dernier inventaire
  primary key(Article_Id),
  constraint cfk_stocks_article_article_id foreign key (Article_Id) references FICHE_ARTICLE (Article_Id)
) engine=InnoDB;


create table COMPTE_ARTICLE (
  Article_Id          char(40) not null,                 -- Identifiant de l'article
  Code_TVA            int unsigned not null,             -- Code TVA
  Compte_Vente        varchar(8) default '',             -- Compte de vente
  Compte_Achat        varchar(8) default '',             -- Compte d'achat
  primary key(Article_Id, Code_TVA),
  index idx_code_tva (Code_TVA),
  constraint cfk_compte_article_article_Id foreign key (Article_Id) references FICHE_ARTICLE (Article_Id),
  constraint cfk_compte_article_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table COMPTE_ARTICLE_TVA_NATIONAL_UE (
  Article_Id       char(40) not null,          -- Identifiant de l'article
  Code_TVA         int unsigned not null,      -- Code TVA d'un taux francais > 0
  Code_Pays        char(2) not null,           -- Code pays de l'UE (hors France)
  Compte_Vente     varchar(8) default '',      -- Numéro de compte de vente
  primary key(Article_Id, Code_TVA, Code_Pays),
  constraint cfk_compte_article_tva_national_ue_article_Id foreign key (Article_Id) references FICHE_ARTICLE (Article_Id),
  constraint cfk_compte_article_tva_national_ue_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table MVT_STOCK (
  Mvt_Id              int unsigned not null auto_increment,  -- Identifiant du mouvement
  Article_Id          char(40) not null,                     -- Référence article
  Date_Mvt            bigint unsigned default 0,             -- Date du mouvement
  Type_Mvt            char(1) default '',                    -- Type de mouvement (E=entrée,S=sortie)
  Quantite            decimal(10,3) unsigned default 0,      -- Quantité
  Frais_Appro         decimal(10,2) unsigned default 0,      -- Frais d'approvisionnement HT (proratisation des frais de port)
  Prix_HT             decimal(14,4) unsigned default 0,      -- Cout d'achat HT (Prix d'achat + Frais d'approvisionnement)
  Num_Piece           varchar(11) default '',                -- Numéro de pièce (facture, commande, avoir...)
  Libelle             varchar(50) default '',                -- Libellé du mouvement
  primary key(Mvt_Id),
  index idx_article_id (Article_Id),
  constraint cfk_mvt_stock_article_id foreign key (Article_Id) references FICHE_ARTICLE (Article_Id)
) engine=InnoDB;


create table STOCK_ANOUVEAU (
  San_Id             int unsigned not null auto_increment,   -- Identifiant du stock à nouveau
  Article_Id         int unsigned not null,                  -- Identifiant de l'article
  Periode            bigint unsigned not null,               -- Période (1er jour du mois)
  Valorisation       decimal(14,2) default 0,                -- Valorisation unitaire au 1er jour de la période (y compris frais appro)
  Frais_Appro        decimal(10,2) default 0,                -- Valorisation des frais d'approvisionnement
  Quantite           decimal(10,3) default 0,                -- Quantité en stock au 1er jour de la période
  primary key(San_Id),
  unique(Article_Id, Periode),
  index idx_article_id (Article_Id),
  constraint cfk_stock_anouveau_article_id foreign key (Article_Id) references FICHE_ARTICLE (Fiche_Article_Id)
) engine=InnoDB;


create table TARIF_QTE (
  Tarif_Id            int unsigned not null auto_increment,  -- identifiant tarif
  Article_Id          char(40) default '',                   -- code Article
  Prix                decimal(14,4) unsigned default 0,      --
  Prix_TTC            decimal(14,4) unsigned default 0,      -- prix ttc
  Coeff               decimal(8,6) unsigned default 1,       --
  Marge               decimal(5,2) unsigned default 0,       -- pourcentage de marge
  Quantite            decimal(10,3) unsigned default 0,      --
  Lib_Int             varchar(20) default '',                -- libellé interne
  Lib_Ext             varchar(20) default '',                -- libellé externe
  primary key(Tarif_Id),
  index idx_article_id (Article_Id),
  constraint cfk_tarif_qte_article_id foreign key (Article_Id) references FICHE_ARTICLE (Article_Id)
) engine=InnoDB;


create table FOURNISSEUR_ARTICLE (
  Article_Id          char(40) not null,                 -- Code Article
  Fournisseur_Id      char(10) not null,                 -- Code Fournisseur
  Prix_Achat          decimal(14,4) unsigned default 0,  -- Prix achat de l'article
  Ref_Fournisseur     varchar(40) default '',            -- Référence article chez le fournisseur
  Principal           tinyint unsigned default 0,        -- Fournisseur principal de l'article
  Delai_Reappro       tinyint unsigned default 0,        -- Delai de reappro en jours
  Qte_Minimum         decimal(10,3) unsigned default 0,  -- Quantité minimum de commande
  Frais_Logistiques   decimal(12,2) unsigned default 0,  -- Surcout en cas de commande inférieure à la qté minimum
  Pack                int unsigned default 1,            -- Quantité d'unités du lot
  Multiple            decimal(10,3) unsigned default 0,  -- Multiple de commande
  Qte_Stock           decimal(10,3) unsigned default 0,  -- Quantité en stock chez le fournisseur
  Date_Reappro        bigint unsigned default 0,         -- Date de réappro chez le fournisseur
  primary key(Article_Id, Fournisseur_Id),
  constraint cfk_fournisseur_article_article_id foreign key (Article_Id) references FICHE_ARTICLE (Article_Id),
  constraint cfk_fournisseur_article_fournisseur_id foreign key (Fournisseur_Id) references FICHE_FOURNISSEUR (Fournisseur_Id) on update cascade
) engine=InnoDB;


create table COMPOSANT_ARTICLE (
  Article_Id          char(40) not null,                 -- code Article
  ArticleComp_Id      char(40) not null,                 -- code Article Composant
  Quantite            decimal(10,3) unsigned default 1,  -- quantite de l'article comp dans l'autre
  primary key(Article_Id, ArticleComp_Id),
  constraint cfk_composant_article_article_id foreign key (Article_Id) references FICHE_ARTICLE (Article_Id),
  constraint cfk_composant_article_articlecomp_id foreign key (ArticleComp_Id) references FICHE_ARTICLE (Article_Id)
) engine=InnoDB;


create table HISTORIQUE_FABRICATION (
  Fabrication_Id      int unsigned not null auto_increment,  -- Identifiant de l'historique
  Ref_Article         char(40) not null,                     -- Référence Article
  Quantite            decimal(10,3) unsigned default 1,      -- Quantite de l'article
  Type                char(1) default 'A',                   -- A->Assemblé, D->Désassemblé
  Date                bigint unsigned default 0,             -- Date de fabrication
  Commentaires        text,                                  -- Commentaires
  primary key(Fabrication_Id)
) engine=InnoDB;


create table CLIENT_ARTICLE (
  Article_Id          char(40) not null,        -- code article
  Client_Id           char(10) not null,        -- code client
  Prix                decimal(14,4) default 0,  -- prix HT de l'article pour le client
  Prix_TTC            decimal(14,4) default 0,  -- prix TTC de l'article pour le client
  Coeff               decimal(8,6) default 1,   -- coefficient sur prix de vente original (prix = tarif_# * coeff)
  Marge               decimal(5,2) default 0,   -- marge
  primary key(Article_Id, Client_Id),
  constraint cfk_client_article_article_id foreign key (Article_Id) references FICHE_ARTICLE (Article_Id),
  constraint cfk_client_article_client_id foreign key (Client_Id) references FICHE_CLIENT (Client_Id) on update cascade
) engine=InnoDB;


create table LISTE_MENTIONS (
  Mention_Id        int unsigned not null auto_increment,  -- Identifiant de la mention
  Libelle           varchar(30) default '',                -- Libellé de la mention
  primary key(Mention_Id)
) engine=InnoDB;


-- ----- TABLES COMMANDES FOURNISSEURS --------


create table COMMANDE (
  Commande_Id         int unsigned not null auto_increment, -- Identifiant de la commande
  Numero              int unsigned default 0,               -- Numéro de la commande dans le mois
  Num_Entier          char(10) default '',                  -- Numéro unique de la commande
  Util_C              int unsigned not null,                -- Utilisateur créateur de la commande
  Util_M              int unsigned not null,                -- Utilisateur ayant fait la dernière modification de la commande
  Util_R              int unsigned not null,                -- Utilisateur responsable de la commande
  Date_Commande       bigint unsigned default 0,            -- Date de la commande
  Date_Creation       bigint unsigned default 0,            -- Date de création
  Date_Maj            bigint unsigned default 0,            -- Date de mise à jour
  Fournisseur_Id      char(10) default '',                  -- Identifiant fournisseur
  Total_HT            decimal(14,2) default 0,              -- Total HT de la commande
  Montant_TTC         decimal(14,2) default 0,              -- Montant TTC de la commande (Hors escompte)
  Remise              decimal(5,2) unsigned default 0,      -- Taux de remise
  Escompte            decimal(5,2) unsigned default 0,      -- Taux d'escompte
  Frais_Port          decimal(10,2) unsigned default 0,     -- Montant des frais de port
  Acompte             decimal(14,2) unsigned default 0,     -- Montant d'acompte TTC
  Commentaires        text,                                 -- Commentaires de fin de commande
  Imp_Com             tinyint unsigned default 0,           -- Impression des commentaires (1=oui,0=non)
  Etat                char(1) default 'N',                  -- N=nouvelle, B=bloquée (en attente de réponse fournisseur), V=validée, F=finie, P=préparation
  Soldee              tinyint unsigned default 0,           -- Commande soldée (1=oui,0=non)
  Intitule            varchar(20) default '',               -- Intitulé de commande
  Type_Achat          char(1) default 'N',                  -- Type d'achat (U=Union Européenne,N=National,I=International)
  Nom_Liv             varchar(100) default '',              -- Nom pour la livraison
  Adresse_Liv         varchar(80) default '',               -- Ligne d'adresse 1 de livraison
  Comp_Adresse_Liv    varchar(50) default '',               -- Ligne d'adresse 2 de livraison
  Adresse_3_Liv       varchar(50) default '',               -- Ligne d'adresse 3 de livraison
  CP_Liv              varchar(10) default '',               -- Code postal de l'adresse de livraison
  Ville_Liv           varchar(50) default '',               -- Ville de l'adresse de livraison
  Code_Pays_Liv       char(2) default 'FR',                 -- Code pays de livraison
  Raison_Sociale      varchar(50) default '',               -- Raison sociale de commande
  Adresse             varchar(80) default '',               -- Ligne d'adresse 1 de commande
  Comp_Adresse        varchar(50) default '',               -- Ligne d'adresse 2 de commande
  Adresse_3           varchar(50) default '',               -- Ligne d'adresse 3 de commande
  Code_Postal         varchar(10) default '',               -- Code postal de commande
  Ville               varchar(50) default '',               -- Ville de commande
  Code_Pays           char(2) default 'FR',                 -- Code pays de commande
  Mentions            text,                                 -- Mentions
  Civ_Inter           tinyint unsigned default 0,
  Nom_Inter           varchar(30) default '',               -- Nom et prénom du client
  Prenom_Inter        varchar(30) default '',
  Tel_Inter           varchar(20) default '',
  Fax_Inter           varchar(20) default '',
  Email_Inter         varchar(64) default '',
  primary key(Commande_Id)
) engine=InnoDB;


create table ARTICLE_COMMANDE_TEMP (
  Commande_Id         int unsigned not null,              -- Numéro temporaire de commande
  Rank                int unsigned not null,              -- Numéro d'ordre dans la commande
  Reference           varchar(40) default '',             -- Code article
  Ref_Fournisseur     varchar(40) default '',             -- Référence article chez le fournisseur
  Type_Ligne          char(1) default 'I',                -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',            -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,   -- Quantité
  Prix                decimal(14,4) unsigned default 0,   -- Prix de l'article
  Ristourne           decimal(5,2) unsigned default 0,    -- Pourcentage de ristourne
  Code_TVA            int unsigned default 1,             -- Code TVA
  Commentaire         text,                               -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                               -- Commentaire haut associé à la ligne
  Unite               char(3) default 'U',                -- unité de vente
  Nb_Pieces           int unsigned default 0,             -- nombre de pièces par quantité
  Pack                int unsigned default 1,             -- pack chez le fournisseur
  primary key(Commande_Id, Rank)
) engine=InnoDB;


create table ARTICLE_COMMANDE (
  Commande_Id         int unsigned not null,                 -- Numéro de commande
  Rank                int unsigned not null,                 -- Numéro d'ordre dans le commande
  Reference           varchar(40) default '',                -- Code article
  Ref_Fournisseur     varchar(40) default '',                -- Référence article chez le fournisseur
  Type_Ligne          char(1) default 'I',                   -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',               -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,      -- Quantité
  Prix                decimal(14,4) unsigned default 0,      -- Prix de l'article
  Ristourne           decimal(5,2) unsigned default 0,       -- Pourcentage de ristourne
  Code_TVA            int unsigned default 1,                -- Code TVA
  Taux_TVA            decimal(4,2) unsigned default 0,       -- Taux de TVA
  Commentaire         text,                                  -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                  -- Commentaire haut associé à la ligne
  Ligne_Id            int unsigned auto_increment,           -- Identifiant unique de la ligne
  Unite               char(3) default 'U',                   -- unité de vente
  Nb_Pieces           int unsigned default 0,                -- nombre de pièces par quantité
  Pack                int unsigned default 1,                -- pack chez le fournisseur
  primary key (Commande_Id, Rank),
  unique(Ligne_Id),
  index idx_code_tva (Code_TVA),
  constraint cfk_article_commande_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA),
  constraint cfk_article_commande_commande_id foreign key (Commande_Id) references COMMANDE (Commande_Id)
) engine=InnoDB;


create table BON_RECEPTION (
  BR_Id               int unsigned not null auto_increment,  -- Identifiant du bon de réception
  Commande_Id         int unsigned default 0,                -- Identifiant commande fournisseur
  Date_BR             bigint unsigned default 0,             -- Date du bon de réception
  Commentaires        text,                                  -- Commentaires associés au BR
  Imp_Com             tinyint unsigned default 0,            -- Imprimer les commentaires (1=oui,0=non)
  Date_Creation       bigint unsigned default 0,             -- Date de création du BR
  Date_Maj            bigint unsigned default 0,             -- Date de mise à jour du BR
  Util_C              int unsigned not null,                 -- Utilisateur créateur du BR
  Util_M              int unsigned not null,                 -- Utilisateur ayant fait la dernière modification du BR
  Numero              int unsigned default 0,                -- Numéro du BR dans le mois
  Num_Entier          char(10) default '',                   -- Numéro unique du BR
  Num_Facture         varchar(20) default '',                -- Numéro de la facture fournisseur
  Num_BL              varchar(20) default '',                -- Numéro du BL fournisseur
  Etat                char(1) default 'N',                   -- Etat du bon de réception (V=validé,N=non validé)
  Transfere           tinyint unsigned default 0,            -- Transféré en comptabilité (1=oui,0=non)
  Prep_Id             int unsigned default 0,                -- Identifiant de la réception
  Mentions            text,                                 -- Mentions
  Date_DEB            bigint unsigned default 0,            -- Date de l'export DEB
  primary key(BR_Id)
) engine=InnoDB;


create table ARTICLE_BON_RECEPTION (
  BR_Id               int unsigned not null,                 -- Identifiant du bon de réception
  Ref_Ligne           int unsigned not null,                 -- Ligne correspondante de la commande
  Rank                int unsigned,                          -- Rang de la ligne sur le BR
  Quantite            decimal(10,3) unsigned default 1,      -- Quantité réceptionnée
  Facture             tinyint unsigned default 0,            -- Vrai si article facturé
  Num_Lot             varchar(15) default '',                -- numéro de lot
  Nb_Pieces           int unsigned default 0,                -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,             -- date de péremption
  primary key(Ref_Ligne, BR_Id),
  constraint cfk_article_bon_reception_br_id foreign key (BR_Id) references BON_RECEPTION (BR_Id)
) engine=InnoDB;


create table ARTICLE_BON_RECEPTION_TEMP (
  BR_Id               int unsigned not null,                 -- Identifiant du bon de réception
  Ref_Ligne           int unsigned not null,                 -- Ligne correspondante de la commande
  Rank                int unsigned,                          -- Rang de la ligne sur le BR
  Quantite            decimal(10,3) unsigned default 1,      -- Quantité réceptionnée
  Num_Lot             varchar(15) default '',                -- numéro de lot
  Nb_Pieces           int unsigned default 0,                -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,             -- date de péremption
  primary key(Ref_Ligne, BR_Id)
) engine=InnoDB;


create table PREP_COMMANDE (
  Prep_Id           int unsigned not null auto_increment,   -- identifiant de la préparation de commande
  Date_Creation     bigint unsigned default 0,              -- date de création de la préparation de commande
  Date_Validation   bigint unsigned default 0,              -- date de validation de la préparation de commande
  Util_V            int unsigned not null,                  -- utilisateur qui a validé la préparation de commande
  Etat              char(1) default 'N',                    -- état de validation
  primary key(Prep_Id)
) engine=InnoDB;


create table ARTICLE_PREP_COMMANDE (
  Ligne_Prep_Id    int unsigned not null auto_increment,  -- identifiant de la ligne de préparation
  Article_Id       varchar(40) not null,                  -- identifiant article à commander
  Prep_Id          int unsigned not null,                 -- identifiant de la préparation de commande
  Qte_Theorique    decimal(10,3) default 0,               -- quantité théorique à commander
  primary key(Ligne_Prep_Id),
  unique(Article_Id, Prep_Id)
) engine=InnoDB;


create table LIGNE_ARTICLE_PREP (
  Ligne_Prep_Id     int unsigned not null,                 -- identifiant de l'article en préparation
  Fournisseur_Id    varchar(10) not null,                  -- identifiant du fournisseur
  Quantite          decimal(10,3) default 0,               -- quantité à commander chez ce fournisseur
  primary key(Ligne_Prep_Id, Fournisseur_Id)
) engine=InnoDB;


create table PREP_BON_RECEPTION (
  Prep_Id           int unsigned not null auto_increment,   -- identifiant de la préparation du BR
  Fournisseur_Id    varchar(10) default '',                 -- identifiant du fournisseur
  Num_BL            varchar(15) default '',                 -- numéro du bl a généré
  Date_Creation     bigint unsigned default 0,              -- date de création de la préparation de BR
  Date_Validation   bigint unsigned default 0,              -- date de validation de la préparation de BR
  Util_V            int unsigned not null,                  -- utilisateur qui a validé la préparation de BR
  Etat              char(1) default 'N',                    -- état de validation
  primary key(Prep_Id)
) engine=InnoDB;


create table ARTICLE_PREP_BON_RECEPTION (
  Article_Id       varchar(40) not null,                  -- identifiant article à commander
  Commande_Id      int unsigned not null,                 -- identifiant commande
  Prep_Id          int unsigned not null,                 -- identifiant de la préparation de commande
  Qte              decimal(10,3) default 0,               -- quantité recu
  Etat             tinyint(1) default 0,                  -- modifié? 0:non 1:oui
  primary key(Article_Id,Commande_Id, Prep_Id)
) engine=InnoDB;


-- ----- TABLES AFFAIRES CLIENTS -------------------------------------------------------------------------------------------------------


create table AFFAIRE (
  Affaire_Id          int unsigned not null auto_increment,  -- Identifiant d'affaire global
  Numero              int unsigned default 0,                -- Numéro d'affaire dans la période
  Num_Entier          char(10) default '',                   -- Numéro intégral
  Client_Id           char(10) default '',                   -- Code client
  Nom_Affaire         varchar(20) default '',                -- Nom de l'affaire
  Civ_Inter           tinyint unsigned default 0,
  Nom_Inter           varchar(30) default '',                -- Nom et prénom du client
  Prenom_Inter        varchar(30) default '',
  Tel_Inter           varchar(20) default '',
  Fax_Inter           varchar(20) default '',
  Email_Inter         varchar(64) default '',
  Raison_Sociale      varchar(50) default '',                -- Raison sociale
  Adresse_Fact        varchar(80) default '',                -- Ligne d'adresse 1 de facturation
  Comp_Adresse_Fact   varchar(50) default '',                -- Ligne d'adresse 2 de facturation
  Adresse_3_Fact      varchar(50) default '',                -- Ligne d'adresse 3 de facturation
  CP_Fact             varchar(10) default '',                -- Code postal de facturation
  Ville_Fact          varchar(50) default '',                -- Ville de facturation
  Code_Pays           char(2) default 'FR',                  -- Code pays de facturation
  Commentaires        text,                                  -- Commentaires sur l'affaire
  Imp_Com             tinyint unsigned default 0,            -- Impression des commentaires (1=oui,0=non)
  Util_C              int unsigned not null,                 -- Utilisateur créateur de l'affaire
  Util_M              int unsigned not null,                 -- Utilisateur ayant fait la dernière modification de l'affaire
  Util_R              int unsigned not null,                 -- Utilisateur responsable de l'affaire
  Date_Creation       bigint unsigned default 0,             -- Date de création
  Date_Maj            bigint unsigned default 0,             -- Date de mise à jour
  Etat                char(1) default 'N',                   -- Etat de l'affaire (N=Nouveau)
  Date_Cloture        bigint unsigned default 0,             -- Date de cloture
  Type_Fact           char(1) default 'C',                   -- Type de facturation (G=groupement,C=commande,B=bon de livraison)
  Nom_Liv             varchar(50) default '',                -- nom pour la livraison
  Adresse_Liv         varchar(80) default '',                -- Ligne d'adresse 1 de livraison
  Comp_Adresse_Liv    varchar(50) default '',                -- Ligne d'adresse 2 de livraison
  Adresse_3_Liv       varchar(50) default '',                -- Ligne d'adresse 3 de livraison
  CP_Liv              varchar(10) default '',                -- code postal de l'adresse de livraison
  Ville_Liv           varchar(50) default '',                -- ville de l'adresse de livraison
  Code_Pays_Liv       char(2) default 'FR',                  -- Code pays
  Civ_Inter_Liv       tinyint unsigned default 0,
  Nom_Inter_Liv       varchar(30) default '',                -- Nom du contact client
  Prenom_Inter_Liv    varchar(30) default '',
  Tel_Inter_Liv       varchar(20) default '',
  Fax_Inter_Liv       varchar(20) default '',
  Email_Inter_Liv     varchar(64) default '',
  Frais_Port_Prem     tinyint unsigned default 0,
	primary key(Affaire_Id),
  index idx_client_id (Client_Id),
  constraint cfk_affaire_client_id foreign key (Client_Id) references FICHE_CLIENT (Client_Id) on update cascade
) engine=InnoDB;


create table DEVIS (
  Devis_Id            int unsigned not null auto_increment, -- Identifiant de devis
  Date_Devis          bigint unsigned default 0,            -- Date du devis
  Remise              decimal(9,6) unsigned default 0,      -- Pourcentage de remise
  Montant_Remise      decimal(9,2) unsigned default 0,      -- Montant de remise uniquement si remise en montant sinon 0
  Escompte            decimal(5,2) unsigned default 0,      -- Pourcentage d'escompte
  Acompte             decimal(14,2) unsigned default 0,     -- Montant d'acompte TTC
  Frais_Port          decimal(10,2) unsigned default 0,     -- Montant des frais de port
  Commentaires        text,                                 -- Commentaires associés au devis
  Imp_Com             tinyint unsigned default 0,           -- Impression des commentaires (1=oui,0=non)
  Date_Creation       bigint unsigned default 0,            -- Date de création du devis
  Date_Maj            bigint unsigned default 0,            -- Date de mise à jour
  Util_C              int unsigned not null,                -- Utilisateur créateur du devis
  Util_M              int unsigned not null,                -- Utilisateur ayant fait la dernière modification du devis
  Util_R              int unsigned not null,                -- Utilisateur responsable du devis
  Numero              int unsigned default 0,               -- Numero de devis
  Num_Entier          char(10) default '',                  -- Numéro sous sa forme intégrale
  Etat                char(1) default 'N',                  -- Etat du devis (H=archivé,F=facturé,A=validé en affaire, C=validé en commande,N=validable,D=non validable)
  Date_Exp            bigint unsigned default 0,            -- Date d'expiration de l'offre
  Total_HT            decimal(14,2) default 0,              -- Total HT du devis
  Montant_TTC         decimal(14,2) default 0,              -- Montant TTC du devis (Hors escompte)
  Date_Validation     bigint unsigned default 0,            -- Date de validation en commande
  Raison_Sociale      varchar(50) default '',               -- Raison sociale
  Adresse             varchar(80) default '',               -- Ligne d'adresse 1
  Comp_Adresse        varchar(50) default '',               -- Ligne d'adresse 2
  Adresse_3           varchar(50) default '',               -- Ligne d'adresse 3
  Code_Postal         varchar(10) default '',               -- Code postal
  Ville               varchar(50) default '',               -- Ville
  Code_Pays           char(2) default 'FR',                 -- Code pays
  Client_Id           varchar(10) default '',               -- Identifiant client
  Civ_Inter           tinyint unsigned default 0,
  Nom_Inter           varchar(30) default '',               -- Nom et prénom du client
  Prenom_Inter        varchar(30) default '',
  Tel_Inter           varchar(20) default '',
  Fax_Inter           varchar(20) default '',
  Email_Inter         varchar(64) default '',
  Code_Tarif          tinyint unsigned default 1,           -- Code tarif utilisé
  Edition_TTC         tinyint unsigned default 0,           -- 1 si le devis est édité en TTC
  Taux_Indicatif      decimal(7,4) unsigned default 0,
  Assujetti_TVA       tinyint unsigned default 0,           -- Assujetti à la TVA (1=oui,0=non)
  Num_TVA_Intra       varchar(14) default '',               -- Numéro de TVA intracommunautaire
  Denomination_Liv    varchar(50) default '',               -- Denomination de livraison
  Adresse_1_Liv       varchar(80) default '',               -- Ligne d'adresse 1 de livraison
  Adresse_2_Liv       varchar(50) default '',               -- Ligne d'adresse 2 de livraison
  Adresse_3_Liv       varchar(50) default '',               -- Ligne d'adresse 3 de livraison
  Code_Postal_Liv     varchar(10) default '',               -- Code postal de livraison
  Ville_Liv           varchar(50) default '',               -- Ville de livraison
  Code_Pays_Liv       char(2) default 'FR',                 -- Code pays de livraison
  Civ_Inter_Liv       tinyint unsigned default 0,           -- Civilité de l'interlocuteur de livraison
  Nom_Inter_Liv       varchar(30) default '',               -- Nom de l'interlocuteur de livraison
  Prenom_Inter_Liv    varchar(30) default '',               -- Prénom de l'interlocuteur de livraison
  Tel_Inter_Liv       varchar(20) default '',               -- Téléphone de l'interlocuteur de livraison
  Fax_Inter_Liv       varchar(20) default '',               -- Fax de l'interlocuteur de livraison
  Email_Inter_Liv     varchar(64) default '',               -- E-Mail de l'interlocuteur de livraison
  Mentions            text,                                 -- Mentions
  Taux_TVA_Port       decimal(4,2) unsigned default 0,      -- Taux de TVA des frais de port
  Regime_TVA          char(1) default 'G',                  -- Régime TVA (G=général, T=forcer la TVA, E=exonération)
  primary key(Devis_Id)
) engine=InnoDB;


create table ARTICLE_DEVIS (
  Devis_Id            int unsigned not null,                -- Numéro de devis
  Rank                int unsigned not null,                -- Numéro d'ordre dans le devis
  Reference           varchar(40) default '',               -- Code article
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix de l'article
  Ristourne           decimal(5,2) unsigned default 0,      -- Pourcentage de ristourne
  Code_TVA            int unsigned default 1,               -- Code TVA
  Ligne_Id            int unsigned auto_increment,          -- Identifiant unique de ligne
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  Taux_TVA            decimal(4,2) unsigned default 0,      -- Taux de TVA
  Code_Stats          varchar(10) default '',               -- code de statistiques
  Unite               char(3) default 'U',                  -- unité de vente
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  primary key(Devis_Id, Rank),
  unique(Ligne_Id),
  index idx_code_tva (Code_TVA),
  constraint cfk_article_devis_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA),
  constraint cfk_article_devis_devis_id foreign key (Devis_Id) references DEVIS (Devis_Id)
) engine=InnoDB;


create table ARTICLE_DEVIS_TEMP (
  Devis_Id            int unsigned not null,                -- Numéro de devis
  Rank                int unsigned not null,                -- Numéro d'ordre dans le devis
  Reference           varchar(40) default '',               -- Code article
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix de l'article
  Ristourne           decimal(5,2) unsigned default 0,      -- Pourcentage de ristourne
  Code_TVA            int unsigned default 1,               -- Code TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  Code_Stats          varchar(10) default '',               -- code de statistiques
  Unite               char(3) default 'U',                  -- unité de vente
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  primary key(Devis_Id, Rank)
) engine=InnoDB;


create table BON_LIVRAISON (
  Bon_Id              int unsigned not null auto_increment, -- Identifiant du bon de livraison
  Affaire_Id          int unsigned default 0,               -- code Affaire
  Com_Web_Id          int unsigned default 0,               -- code de la commande web
  Date_Liv            bigint unsigned default 0,            -- date de livraison
  Nom_Liv             varchar(100) default '',              -- nom pour la livraison
  Adresse_Liv         varchar(80) default '',               -- Ligne d'adresse 1 de livraison
  Comp_Adresse_Liv    varchar(50) default '',               -- Ligne d'adresse 2 de livraison
  Adresse_3_Liv       varchar(50) default '',               -- Ligne d'adresse 3 de livraison
  CP_Liv              varchar(10) default '',               -- code postal de l'adresse de livraison
  Ville_Liv           varchar(50) default '',               -- ville de l'adresse de livraison
  Code_Pays_Liv       char(2) default 'FR',                 -- Code pays de livraison
  Civ_Inter_Liv       tinyint unsigned default 0,
  Nom_Inter_Liv       varchar(30) default '',               -- Nom et prénom du client
  Prenom_Inter_Liv    varchar(30) default '',
  Tel_Inter_Liv       varchar(20) default '',
  Fax_Inter_Liv       varchar(20) default '',
  Email_Inter_Liv     varchar(64) default '',
  Commentaires        text,                                 -- commentaires externe au BL
  Commentaires_2      text,                                 -- commentaires interne au BL
  Imp_Com             tinyint unsigned default 0,           -- imprimer les commentaires (1=oui,0=non)
  Date_Creation       bigint unsigned default 0,            -- date de création du bon de livraison
  Date_Maj            bigint unsigned default 0,            -- date de mise à jour
  Util_C              int unsigned not null,                -- utilisateur créateur du BL
  Util_M              int unsigned not null,                -- utilisateur ayant fait la dernière modification du BL
  Numero              int unsigned default 0,               -- Numéro du bon de livraison
  Num_Entier          char(10) default '',                  -- Numéro sous sa forme intégrale
  Facture_Id          int unsigned default 0,               -- Facture correspondante au bon de livraison (0 si pas de facture)
  Nb_Colis            int unsigned default 0,               -- Nombre de colis
  Frais_Sup           decimal(12,2) unsigned default 0,     -- Frais de port supplémentaires établis à la livraison
  Etat                char(1) default 'N',                  -- Etat du bon de livraison (V=validé,N=non validé,A=Annulé)
  Fournisseur_Id      varchar(10) default '',
  Commande_Id         int unsigned default 0,
  Mentions            text,                                 -- Mentions
  Date_DEB            bigint unsigned default 0,            -- Date de l'export DEB
  Date_Edition_Lot    bigint unsigned default 0,            -- Date de l'édition par lot
  Edition_BP          tinyint unsigned default 0,           -- le BP était-il édité lors de l'édition par lot? 0->non; 1->oui
  primary key(Bon_Id),
  index idx_com_web_id (Com_Web_Id),
  index idx_affaire_id (Affaire_Id)
) engine=InnoDB;


create table ARTICLE_BON_LIVRAISON (
  Bon_Id              int unsigned not null,                -- Numéro de bon de livraison
  Ref_Ligne           int unsigned default 0,               -- Ligne correspondante de la commande affaire
  Rank                int unsigned not null,                -- Rang de l'article sur le bon
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Ref_Ligne_Web       int unsigned default 0,               -- Ligne correspondante de la commande web
  Num_Lot             varchar(15) default '',                -- numéro de lot
  Nb_Pieces           int unsigned default 0,                -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,             -- date de péremption
  primary key(Bon_Id, Rank),
  index idx_ref_ligne (Ref_Ligne),
  index idx_ref_ligne_web (Ref_Ligne_Web),
  constraint cfk_article_bon_livraison_bon_id foreign key (Bon_Id) references BON_LIVRAISON (Bon_Id)
) engine=InnoDB;


create table ARTICLE_BON_LIVRAISON_TEMP (
  Bon_Id              int unsigned not null,                -- Numéro de bon de livraison
  Ref_Ligne           int unsigned default 0,               -- Ligne correspondante de la commande affaire
  Rank                int unsigned not null,                -- Rang de l'article sur le bon
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Ref_Ligne_Web       int unsigned default 0,               -- Ligne correspondante de la commande web
  Num_Lot             varchar(15) default '',                -- numéro de lot
  Nb_Pieces           int unsigned default 0,                -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,             -- date de péremption
  primary key(Bon_Id, Rank)
) engine=InnoDB;


create table FACTURE (
  Facture_Id          int unsigned not null auto_increment, -- Identifiant facture
  Date_Facture        bigint unsigned default 0,            -- Date de la facture
  Echeance            bigint unsigned default 0,            -- Date d'échéance de paiement
  Mode_Reg            varchar(25) default '',               -- Mode de règlement
  Numero              int unsigned default 0,               -- Numéro de facture
  Num_Entier          varchar(11) default '',               -- Numéro sous sa forme intégrale
  Commentaires        text,                                 -- commentaires associés à la facture
  Imp_Com             tinyint unsigned default 0,           -- impression des commentaires (1=oui,0=non)
  Nom_Resp            varchar(30) default '',               -- Nom du responsable
  Prenom_Resp         varchar(20) default '',               -- Prénom du responsable
  Civ_Inter           tinyint unsigned default 0,
  Nom_Inter           varchar(30) default '',               -- Nom et prénom du client
  Prenom_Inter        varchar(30) default '',
  Tel_Inter           varchar(20) default '',
  Fax_Inter           varchar(20) default '',
  Email_Inter         varchar(64) default '',
  Client_Id           varchar(10) default '',               -- Code client
  Raison_Sociale      varchar(50) default '',               -- Raison sociale
  Adresse_Fact        varchar(80) default '',               -- Ligne d'adresse 1 de facturation
  Comp_Adresse_Fact   varchar(50) default '',               -- Ligne d'adresse 2 de facturation
  Adresse_3_Fact      varchar(50) default '',               -- Ligne d'adresse 3 de facturation
  CP_Fact             varchar(10) default '',               -- Code postal de facturation
  Ville_Fact          varchar(50) default '',               -- Ville de facturation
  Code_Pays           char(2) default 'FR',                 -- Code pays
  Date_Creation       bigint unsigned default 0,            -- date de création
  Date_Maj            bigint unsigned default 0,            -- date de mise à jour
  Util_C              int unsigned not null,                -- utilisateur créateur de la facture
  Util_M              int unsigned not null,                -- utilisateur ayant fait la dernière modification de la facture
  Util_R              int unsigned not null,                -- utilisateur responsable de la facture
  Acompte             decimal(14,2) unsigned default 0,     -- Montant d'acompte TTC
  Remise              decimal(9,6) unsigned default 0,      -- Pourcentage de remise
  Montant_Remise      decimal(9,2) unsigned default 0,      -- Montant de remise uniquement si remise en montant sinon 0
  Escompte            decimal(6,3) unsigned default 0,      -- Pourcentage d'escompte
  Frais_Port          decimal(10,2) unsigned default 0,     -- Montant HT des frais de port
  Total_HT            decimal(14,2) unsigned default 0,     -- Total HT de la facture
  Montant_TTC         decimal(14,2) unsigned default 0,     -- Montant TTC de la facture (Hors escompte)
  Directe             tinyint unsigned default 0,           -- Facture directe (non liée à une affaire) (1=oui,0=non)
  Code_Tarif          tinyint unsigned default 1,           -- Code tarif utilisé
  Transferee          tinyint unsigned default 0,           -- 1 si facture transférée en compta
  Taux_TVA_Port       decimal(4,2) unsigned default 0,      -- Taux de TVA des frais de port
  Envoyee_Au_Site     tinyint unsigned default 0,           -- 0 si la facture n'a pas été envoyée au site web, 1 sinon (e-commerce)
  Com_Web_Id          int unsigned default 0,               -- 0 si la facture n'est pas relié a une commande web sinon numero de commande
  Edition_TTC         tinyint unsigned default 0,           -- 1 si la facture est éditée en ttc
  Eco_Taxe            decimal(10,2) unsigned default 0,     -- Montant HT de l'eco-participation dans la facture
  Taux_Indicatif      decimal(7,4) unsigned default 0,
  Assujetti_TVA       tinyint unsigned default 0,           -- Assujetti à la TVA (1=oui,0=non)
  TVA_Liv             tinyint unsigned default 0,           -- Application de la TVA du pays de livraison (1=oui,0=non)
  Num_TVA_Intra       varchar(14) default '',               -- Numéro de TVA intracommunautaire
  Denomination_Liv    varchar(50) default '',               -- Denomination de livraison
  Adresse_1_Liv       varchar(80) default '',               -- Ligne d'adresse 1 de livraison
  Adresse_2_Liv       varchar(50) default '',               -- Ligne d'adresse 2 de livraison
  Adresse_3_Liv       varchar(50) default '',               -- Ligne d'adresse 3 de livraison
  Code_Postal_Liv     varchar(10) default '',               -- Code postal de livraison
  Ville_Liv           varchar(50) default '',               -- Ville de livraison
  Code_Pays_Liv       char(2) default 'FR',                 -- Code pays de livraison
  Civ_Inter_Liv       tinyint unsigned default 0,           -- Civilité de l'interlocuteur de livraison
  Nom_Inter_Liv       varchar(30) default '',               -- Nom de l'interlocuteur de livraison
  Prenom_Inter_Liv    varchar(30) default '',               -- Prénom de l'interlocuteur de livraison
  Tel_Inter_Liv       varchar(20) default '',               -- Téléphone de l'interlocuteur de livraison
  Fax_Inter_Liv       varchar(20) default '',               -- Fax de l'interlocuteur de livraison
  Email_Inter_Liv     varchar(64) default '',               -- E-Mail de l'interlocuteur de livraison
  Num_Unique          int unsigned default null,            -- Numéro unique chronologique selon la validation de la facture ou avoir
  Mentions            text,                                 -- Mentions
  Date_DEB            bigint unsigned default 0,            -- Date de l'export DEB
  Regime_TVA          char(1) default 'G',                  -- Régime TVA (G=général, T=forcer la TVA, E=exonération)
  Date_Edition_Lot    bigint unsigned default 0,            -- Date de l'édition par lot
  primary key(Facture_Id)
) engine=InnoDB;


create table ARTICLE_FACTURE (
  Facture_Id          int unsigned not null,                -- Identifiant facture
  Ref_Ligne           int unsigned default 0,               -- Ligne correspondante dans la commande affaire
  Ref_Ligne_Web       int unsigned default 0,               -- Ligne correspondante de la commande web
  Rank                int unsigned not null,                -- Numéro d'ordre dans la facture
  Reference           varchar(40) default '',               -- Code article
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix unitaire HT de l'article
  Ristourne           decimal(5,2) unsigned default 0,      -- Taux de ristourne
  Taux_TVA            decimal(4,2) unsigned default 0,      -- Taux de TVA
  Code_TVA            int unsigned default 1,               -- Code de TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  Code_Stats          varchar(10) default '',               -- code de statistiques
  Unite               char(3) default 'U',                  -- unité de vente
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  primary key(Facture_Id, Rank),
  index idx_code_tva (Code_TVA),
  constraint cfk_article_facture_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA),
  constraint cfk_article_facture_facture_id foreign key (Facture_Id) references FACTURE (Facture_Id)
) engine=InnoDB;


create table ARTICLE_FACTURE_TEMP (
  Facture_Id           int unsigned not null,                -- Identifiant facture
  Ref_Ligne            int unsigned default 0,               -- Ligne correspondante dans la commande affaire
  Ref_Ligne_Web        int unsigned default 0,               -- Ligne correspondante de la commande web
  Rank                 int unsigned not null,                -- Numéro d'ordre dans la facture
  Reference            varchar(40) default '',               -- Code article
  Type_Ligne           char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation          varchar(100) default '',              -- Désignation de l'article
  Quantite             decimal(10,3) unsigned default 1,     -- Quantité
  Prix                 decimal(14,4) unsigned default 0,     -- Prix unitaire HT de l'article
  Ristourne            decimal(5,2) unsigned default 0,      -- Taux de ristourne
  Code_TVA             int unsigned default 1,               -- Code de TVA
  Commentaire          text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant    text,                                 -- Commentaire haut associé à la ligne
  Libelle              varchar(20) default '',               -- Libelle supplémentaire
  Code_Stats           varchar(10) default '',               -- code de statistiques
  Unite                char(3) default 'U',                  -- unité de vente
  Num_Lot              varchar(15) default '',               -- numéro de lot
  Nb_Pieces            int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption      bigint unsigned default 0,            -- date de péremption
  primary key(Facture_Id, Rank)
) engine=InnoDB;


create table AFFAIRE_FACTURE (
  Affaire_Id          int unsigned not null,                -- identifiant affaire
  Facture_Id          int unsigned not null,                -- identifiant facture
  primary key(Affaire_Id, Facture_Id),
  constraint cfk_affaire_facture_affaire_id foreign key (Affaire_Id) references AFFAIRE (Affaire_Id),
  constraint cfk_affaire_facture_facture_id foreign key (Facture_Id) references FACTURE (Facture_Id)
) engine=InnoDB;

create table AVOIR (
  Avoir_Id            int unsigned not null auto_increment, -- Identifiant avoir
  Date_Avoir          bigint unsigned default 0,            -- Date de l'avoir
  Numero              int unsigned default 0,               -- Numéro d'avoir
  Num_Entier          varchar(11) default '',               -- Numéro sous sa forme intégrale
  Commentaires        text,                                 -- commentaires associés à la facture
  Imp_Com             tinyint unsigned default 0,           -- impression des commentaires (1=oui,0=non)
  Nom_Resp            varchar(30) default '',               -- Nom du responsable
  Prenom_Resp         varchar(20) default '',               -- Prénom du responsable
  Civ_Inter           tinyint unsigned default 0,
  Nom_Inter           varchar(30) default '',               -- Nom et prénom du client
  Prenom_Inter        varchar(30) default '',
  Tel_Inter           varchar(20) default '',
  Fax_Inter           varchar(20) default '',
  Email_Inter         varchar(64) default '',
  Client_Id           varchar(10) default '',               -- Code client
  Raison_Sociale      varchar(50) default '',               -- Raison sociale
  Adresse_Fact        varchar(80) default '',               -- Ligne d'adresse 1 de facturation
  Comp_Adresse_Fact   varchar(50) default '',               -- Ligne d'adresse 2 de facturation
  Adresse_3_Fact      varchar(50) default '',               -- Ligne d'adresse 3 de facturation
  CP_Fact             varchar(10) default '',               -- Code postal de facturation
  Ville_Fact          varchar(50) default '',               -- Ville de facturation
  Code_Pays           char(2) default 'FR',                 -- Code pays
  Date_Creation       bigint unsigned default 0,            -- date de création
  Date_Maj            bigint unsigned default 0,            -- date de mise à jour
  Util_C              int unsigned not null,                -- utilisateur créateur de l'avoir
  Util_M              int unsigned not null,                -- utilisateur ayant fait la dernière modification de l'avoir
  Util_R              int unsigned not null,                -- utilisateur responsable de l'avoir
  Remise              decimal(9,6) unsigned default 0,      -- Pourcentage de remise
  Montant_Remise      decimal(9,2) unsigned default 0,      -- Montant de remise uniquement si remise en montant sinon 0
  Escompte            decimal(6,3) unsigned default 0,      -- Pourcentage d'escompte
  Frais_Port          decimal(10,2) unsigned default 0,     -- Montant HT des frais de port
  Taux_TVA_Port       decimal(4,2) unsigned default 0,      -- Taux de TVA des frais de port
  Total_HT            decimal(14,2) unsigned default 0,     -- Total HT de l'avoir
  Montant_TTC         decimal(14,2) unsigned default 0,     -- Montant TTC de l'avoir (Hors escompte)
  Direct              tinyint unsigned default 0,           -- Avoir directe (non liée à une affaire) (1=oui,0=non)
  Code_Tarif          tinyint unsigned default 1,           -- Code tarif utilisé
  Com_Web_Id          int unsigned default 0,               -- 0 si la facture n'est pas relié a une commande web sinon numero de commande
  Transfere           tinyint unsigned default 0,           -- 1 si avoir transféré en compta
  Etat                char(1) default 'N',                  -- Etat pour règlement (N=nouvel enregistrement,C=en cours,R=imputé)
  Montant_Restant     decimal(14,2) default 0,              -- Montant restant à imputer en saisie règlement
  Rembourser          decimal(14,2) default 0,              -- Montant remboursé
  Edition_TTC         tinyint unsigned default 0,           -- 1 si l'avoir est édité en ttc
  Facture_Id          int unsigned default 0,               -- facture_id si l'avoir est relié a une facture
  Taux_Indicatif      decimal(7,4) unsigned not null default 0,
  Assujetti_TVA       tinyint unsigned default 0,           -- Assujetti à la TVA (1=oui,0=non)
  TVA_Liv             tinyint unsigned default 0,           -- Application de la TVA du pays de livraison (1=oui,0=non)
  Num_TVA_Intra       varchar(14) default '',               -- Numéro de TVA intracommunautaire
  Denomination_Liv    varchar(50) default '',               -- Denomination de livraison
  Adresse_1_Liv       varchar(80) default '',               -- Ligne d'adresse 1 de livraison
  Adresse_2_Liv       varchar(50) default '',               -- Ligne d'adresse 2 de livraison
  Adresse_3_Liv       varchar(50) default '',               -- Ligne d'adresse 3 de livraison
  Code_Postal_Liv     varchar(10) default '',               -- Code postal de livraison
  Ville_Liv           varchar(50) default '',               -- Ville de livraison
  Code_Pays_Liv       char(2) default 'FR',                 -- Code pays de livraison
  Civ_Inter_Liv       tinyint unsigned default 0,           -- Civilité de l'interlocuteur de livraison
  Nom_Inter_Liv       varchar(30) default '',               -- Nom de l'interlocuteur de livraison
  Prenom_Inter_Liv    varchar(30) default '',               -- Prénom de l'interlocuteur de livraison
  Tel_Inter_Liv       varchar(20) default '',               -- Téléphone de l'interlocuteur de livraison
  Fax_Inter_Liv       varchar(20) default '',               -- Fax de l'interlocuteur de livraison
  Email_Inter_Liv     varchar(64) default '',               -- E-Mail de l'interlocuteur de livraison
  Num_Unique          int unsigned default null,            -- Numéro unique chronologique selon la validation de la facture ou avoir
  Mentions            text,                                 -- Mentions
  Regime_TVA          char(1) default 'G',                  -- Régime TVA (G=général, T=forcer la TVA, E=exonération)
  primary key(Avoir_Id)
) engine=InnoDB;

create table ARTICLE_AVOIR (
  Avoir_Id            int unsigned not null,                -- Identifiant avoir
  Ref_Ligne           int unsigned default 0,               -- Ligne correspondante dans l'avoir
  Rank                int unsigned not null,                -- Numéro d'ordre dans l'avoir
  Reference           varchar(40),                          -- Code article
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100),                         -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4),                        -- Prix unitaire HT de l'article
  Ristourne           decimal(5,2) unsigned,                -- Taux de ristourne
  Code_TVA            int unsigned default 1,               -- Code TVA
  Taux_TVA            decimal(4,2) unsigned,                -- Taux de TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  Code_Stats          varchar(10) default '',               -- code de statistiques
  Unite               char(3) default 'U',                  -- unité de vente
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  primary key(Avoir_Id, Rank),
  index idx_code_tva (Code_TVA),
  constraint cfk_article_avoir_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA),
  constraint cfk_article_avoir_avoir_id foreign key (Avoir_Id) references AVOIR (Avoir_Id)
) engine=InnoDB;


create table ARTICLE_AVOIR_TEMP (
  Avoir_Id            int unsigned not null,                -- Identifiant avoir
  Ref_Ligne           int unsigned default 0,               -- Ligne correspondante dans l'avoir
  Rank                int unsigned not null,                -- Numéro d'ordre dans l'avoir
  Reference           varchar(40) default '',               -- Code article
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix unitaire HT de l'article
  Ristourne           decimal(5,2) unsigned default 0,      -- Taux de ristourne
  Code_TVA            int unsigned default 1,               -- Code TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  Code_Stats          varchar(10) default '',               -- code de statistiques
  Unite               char(3) default 'U',                  -- unité de vente
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  primary key(Avoir_Id, Rank)
) engine=InnoDB;

create table FACTURE_AVOIR (
  Facture_Id          int unsigned not null,                -- identifiant facture
  Avoir_Id            int unsigned not null,                -- identifiant avoir
  primary key(Facture_Id, Avoir_Id),
  constraint cfk_facture_avoir_facture_id foreign key (Facture_Id) references FACTURE (Facture_Id),
  constraint cfk_facture_avoir_avoir_id foreign key (Avoir_Id) references AVOIR (Avoir_Id)
) engine=InnoDB;

create table PROFORMA (
  Proforma_Id         int unsigned not null auto_increment, -- Identifiant proforma
  Date_Proforma       bigint unsigned default 0,            -- Date du proforma
  Echeance            bigint unsigned default 0,            -- Date d'échéance de paiement
  Mode_Reg            varchar(25) default '',               -- Mode de règlement
  Numero              int unsigned default 0,               -- Numéro de proforma
  Num_Entier          varchar(10) default '',               -- Numéro sous sa forme intégrale
  Commentaires        text,                                 -- commentaires associés au proforma
  Nom_Resp            varchar(30) default '',               -- Nom du responsable
  Prenom_Resp         varchar(20) default '',               -- Prénom du responsable
  Civ_Inter           tinyint unsigned default 0,           -- Civilité de l'interlocuteur
  Nom_Inter           varchar(30) default '',               -- Nom de l'interlocuteur
  Prenom_Inter        varchar(20) default '',               -- Prénom de l'interlocuteur
  Tel_Inter           varchar(20) default '',
  Fax_Inter           varchar(20) default '',
  Email_Inter         varchar(64) default '',
  Client_Id           varchar(10) default '',               -- Code client
  Raison_Sociale      varchar(50) default '',               -- Raison sociale
  Adresse             varchar(80) default '',               -- Ligne d'adresse 1 de facturation
  Comp_Adresse        varchar(50) default '',               -- Ligne d'adresse 2 de facturation
  Adresse_3           varchar(50) default '',               -- Ligne d'adresse 3 de facturation
  Code_Postal         varchar(10) default '',               -- Code postal de facturation
  Ville               varchar(50) default '',               -- Ville de facturation
  Code_Pays           char(2) default 'FR',                 -- Code pays
  Date_Creation       bigint unsigned default 0,            -- date de création
  Util_C              int unsigned not null,                -- utilisateur créateur de la proforma
  Util_R              int unsigned not null,                -- utilisateur responsable de la proforma
  Acompte             decimal(14,2) unsigned default 0,     -- Montant d'acompte TTC
  Remise              decimal(9,6) unsigned default 0,      -- Pourcentage de remise
  Escompte            decimal(6,3) unsigned default 0,      -- Pourcentage d'escompte
  Frais_Port          decimal(10,2) unsigned default 0,     -- Montant HT des frais de port
  Total_HT            decimal(14,2) unsigned default 0,     -- Total HT du proforma
  Montant_TTC         decimal(14,2) unsigned default 0,     -- Montant TTC du proforma (Hors escompte)
  Taux_TVA_Port       decimal(4,2) unsigned default 0,      -- Taux de TVA des frais de port
  Envoyee_Au_Site     tinyint unsigned default 0,           -- 0 si le proforma n'a pas été envoyé au site web, 1 sinon (e-commerce)
  Edition_TTC         tinyint unsigned default 0,           -- 1 si le proforma est éditée en ttc
  Eco_Taxe            decimal(10,2) default 0,              -- Montant HT de l'eco-participation dans le proforma
  Facture_Id          int unsigned default 0,               -- Identifiant de facture
  Devis_Id            int unsigned default 0,               -- Identifiant de devis
  Com_Web_Id          int unsigned default 0,               -- Identifiant de commande web
  Com_Id              int unsigned default 0,               -- Identifiant de commande client
  Assujetti_TVA       tinyint unsigned default 0,           -- Assujetti à la TVA (1=oui,0=non)
  Num_TVA_Intra       varchar(14) default '',               -- Numéro de TVA intracommunautaire
  Denomination_Liv    varchar(50) default '',               -- Denomination de livraison
  Adresse_1_Liv       varchar(80) default '',               -- Ligne d'adresse 1 de livraison
  Adresse_2_Liv       varchar(50) default '',               -- Ligne d'adresse 2 de livraison
  Adresse_3_Liv       varchar(50) default '',               -- Ligne d'adresse 3 de livraison
  Code_Postal_Liv     varchar(10) default '',               -- Code postal de livraison
  Ville_Liv           varchar(50) default '',               -- Ville de livraison
  Code_Pays_Liv       char(2) default 'FR',                 -- Code pays de livraison
  Civ_Inter_Liv       tinyint unsigned default 0,           -- Civilité de l'interlocuteur de livraison
  Nom_Inter_Liv       varchar(30) default '',               -- Nom de l'interlocuteur de livraison
  Prenom_Inter_Liv    varchar(30) default '',               -- Prénom de l'interlocuteur de livraison
  Tel_Inter_Liv       varchar(20) default '',               -- Téléphone de l'interlocuteur de livraison
  Fax_Inter_Liv       varchar(20) default '',               -- Fax de l'interlocuteur de livraison
  Email_Inter_Liv     varchar(64) default '',               -- E-Mail de l'interlocuteur de livraison
  Mentions            text,                                 -- Mentions
  Regime_TVA          char(1) default 'G',                  -- Régime TVA (G=général, T=forcer la TVA, E=exonération)
  primary key(Proforma_Id)
) engine=InnoDB;


create table ARTICLE_PROFORMA (
  Proforma_Id         int unsigned not null,                -- Identifiant proforma
  Rank                int unsigned not null,                -- Numéro d'ordre dans le proforma
  Reference           varchar(40) default '',               -- Code article
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix unitaire HT de l'article
  Ristourne           decimal(5,2) unsigned default 0,      -- Taux de ristourne
  Taux_TVA            decimal(4,2) unsigned default 0,      -- Taux de TVA
  Code_TVA            int unsigned default 1,               -- Code de TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  Unite               char(3) default 'U',                  -- unité de vente
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  primary key(Proforma_Id, Rank),
  index idx_code_tva (Code_TVA),
  constraint cfk_article_proforma_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA),
  constraint cfk_article_proforma_proforma_id foreign key (Proforma_Id) references PROFORMA (Proforma_Id)
) engine=InnoDB;


create table COM_CLIENT (
  Com_Id              int unsigned not null auto_increment, -- Identifiant de commande client
  Affaire_Id          int unsigned not null,                -- Numéro d'affaire global
  Date_Com            bigint unsigned default 0,            -- Date de commande
  Remise              decimal(9,6) unsigned default 0,      -- Pourcentage de remise
  Montant_Remise      decimal(9,2) unsigned default 0,      -- Montant de remise uniquement si remise en montant sinon 0
  Escompte            decimal(5,2) unsigned default 0,      -- Pourcentage d'escompte
  Frais_Port          decimal(10,2) unsigned default 0,     -- Montant des frais de port
  Commentaires        text,                                 -- Commentaires associés au devis
  Imp_Com             tinyint unsigned default 0,           -- Impression des commentaires (1=oui,0=non)
  Date_Creation       bigint unsigned default 0,            -- Date de création du devis
  Date_Maj            bigint unsigned default 0,            -- Date de mise à jour
  Util_C              int unsigned not null,                -- Utilisateur créateur de la commande client
  Util_M              int unsigned not null,                -- Utilisateur ayant fait la dernière modification de la commande client
  Ref_Com             varchar(20) default '',               -- Reference commande (num client ou devis)
  Etat                char(1) default 'N',                  -- Etat de la commande (V=validée,N=non validée)
  Total_HT            decimal(14,2) unsigned default 0,     -- Total HT de la commande
  Montant_TTC         decimal(14,2) unsigned default 0,     -- Montant TTC de la commande (Hors escompte)
  Code_Tarif          tinyint unsigned default 1,           -- Code tarif utilisé
  Delai               bigint unsigned default 0,            -- Délai de livraison
  Soldee              tinyint unsigned default 0,           -- Commande soldée (1=oui,0=non)
  Acompte             decimal(14,2) default 0,              -- Acompte à la commande
  Edition_TTC         tinyint unsigned default 0,           -- 1 si la commande est éditée en ttc
  Assujetti_TVA       tinyint unsigned default 0,           -- Assujetti à la TVA (1=oui,0=non)
  Num_TVA_Intra       varchar(14) default '',               -- Numéro de TVA intracommunautaire
  Taux_TVA_Port       decimal(4,2) unsigned default 0,      -- Taux de TVA des frais de port
  Mentions            text,                                 -- Mentions
  Regime_TVA          char(1) default 'G',                  -- Régime TVA (G=général, T=forcer la TVA, E=exonération)
  primary key(Com_Id),
	index idx_affaire_id (Affaire_Id)
) engine=InnoDB;


create table ARTICLE_COM_CLIENT (
  Com_Id              int unsigned not null,                -- Identifiant commande
  Rank                int unsigned not null,                -- Numéro d'ordre dans le devis
  Reference           varchar(40) default '',               -- Code article
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix de l'article
  Ristourne           decimal(5,2) unsigned default 0,      -- Pourcentage de ristourne
  Taux_TVA            decimal(4,2) unsigned default 0,      -- Taux de TVA
  Code_TVA            int unsigned default 1,               -- Code TVA
  Ligne_Id            int unsigned auto_increment,          -- Identifiant unique de ligne
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  Code_Stats          varchar(10) default '',               -- code de statistiques
  Unite               char(3) default 'U',                  -- unité de vente
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  primary key(Com_Id, Rank),
  unique(Ligne_Id),
  index idx_code_tva (Code_TVA),
  constraint cfk_article_com_client_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA),
  constraint cfk_article_com_client_com_id foreign key (Com_Id) references COM_CLIENT (Com_Id)
) engine=InnoDB;


create table ARTICLE_COM_CLIENT_TEMP (
  Com_Id              int unsigned not null,                -- Identifiant commande
  Rank                int unsigned not null,                -- Numéro d'ordre dans le devis
  Reference           varchar(40) default '',               -- Code article
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix de l'article
  Ristourne           decimal(5,2) unsigned default 0,      -- Pourcentage de ristourne
  Code_TVA            int unsigned default 1,               -- Code TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  Code_Stats          varchar(10) default '',               -- code de statistiques
  Unite               char(3) default 'U',                  -- unité de vente
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  primary key(Com_Id, Rank)
) engine=InnoDB;


-- ----------------- LISTES DIVERSES ----------------------------------------------


create table COULEUR_ARTICLE (
  Couleur     varchar(40) not null,      -- couleur d'article
  primary key(Couleur)
) engine=InnoDB;

create table TAILLE_ARTICLE (
  Taille     varchar(20) not null,       -- taille d'article
  primary key(Taille)
) engine=InnoDB;

create table COLLECTION_ARTICLE (
  Collection     varchar(40) not null,   -- collection d'article
  primary key(Collection)
) engine=InnoDB;

create table FAMILLE_FOURNISSEUR (
  Famille          varchar(40) not null,   -- Famille de fournisseur
  primary key(Famille)
) engine=InnoDB;

create table FAMILLE_CLIENT (
  Famille          varchar(40) not null,   -- Famille de client
  primary key(Famille)
) engine=InnoDB;


create table MARQUE_ARTICLE (
  Marque         varchar(40) not null,     -- Marque d'article
  Image          varchar(100) default '',  -- image de la famille
  Url            varchar(100) default '',  -- url du fabricant
  primary key(Marque)
) engine=InnoDB;


create table FAMILLE_ARTICLE (
  Famille            varchar(40) not null,        -- famille d'article
  Image              varchar(100) default '',     -- image de la famille
  Compte_Achat_UE    varchar(8) default '',       -- numéro de compte d'achat dans l'union européenne
  Compte_Achat_I     varchar(8) default '',       -- numéro de compte d'achat à l'international
  primary key(Famille)
) engine=InnoDB;


create table SOUS_FAMILLE_ARTICLE (
  Famille            varchar(40) not null,       -- Famille d'article
  Sous_Famille       varchar(40) not null,       -- Sous-famille d'article
  Image              varchar(100) default '',    -- image de la sous famille
  Compte_Achat_UE    varchar(8) default '',      -- numéro de compte d'achat dans l'union européenne
  Compte_Achat_I     varchar(8) default '',      -- numéro de compte d'achat à l'international
  primary key(Famille, Sous_Famille)
) engine=InnoDB;


create table COMPTE_FAMILLE_ARTICLE (
  Famille            varchar(40) not null,        -- Identifiant de la famille d'article
  Code_TVA           int unsigned not null,       -- Code TVA
  Compte_Vente       varchar(8) default '',       -- Compte de vente
  Compte_Achat       varchar(8) default '',       -- Compte d'achat
  primary key(Famille, Code_TVA),
  index idx_code_tva (Code_TVA),
  constraint cfk_compte_famille_article_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table COMPTE_FAMILLE_ARTICLE_TVA_NATIONAL_UE (
  Famille          varchar(40) not null,       -- Identifiant de la famille d'article
  Code_TVA         int unsigned not null,      -- Code TVA d'un taux francais > 0
  Code_Pays        char(2) not null,           -- Code pays de l'UE (hors France)
  Compte_Vente     varchar(8) default '',      -- Numéro de compte de vente
  primary key(Famille, Code_TVA, Code_Pays),
  constraint cfk_compte_famille_article_tva_national_ue_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table COMPTE_SOUS_FAMILLE_ARTICLE (
  Famille            varchar(40) not null,        -- Identifiant de la famille d'article
  Sous_Famille       varchar(40) not null,        -- Identifiant de la sous-famille d'article
  Code_TVA           int unsigned not null,       -- Code TVA
  Compte_Vente       varchar(8) default '',       -- Compte de vente
  Compte_Achat       varchar(8) default '',       -- Compte d'achat
  primary key(Famille, Sous_Famille, Code_TVA),
  index idx_code_tva (Code_TVA),
  constraint cfk_compte_sous_famille_article_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table COMPTE_SOUS_FAMILLE_ARTICLE_TVA_NATIONAL_UE (
  Famille          varchar(40) not null,       -- Identifiant de la famille d'article
  Sous_Famille     varchar(40) not null,       -- Identifiant de la sous-famille d'article
  Code_TVA         int unsigned not null,      -- Code TVA d'un taux francais > 0
  Code_Pays        char(2) not null,           -- Code pays de l'UE (hors France)
  Compte_Vente     varchar(8) default '',      -- Numéro de compte de vente
  primary key(Famille, Sous_Famille, Code_TVA, Code_Pays),
  constraint cfk_compte_sous_famille_article_tva_national_ue_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table MODE_REGLEMENT (
  Mode_R           varchar(25) not null,
  Type_R           varchar(20) default '',
  primary key(Mode_R)
) engine=InnoDB;


create table UNITE_VENTE (
  Code_Unite       tinyint unsigned not null auto_increment,  -- Code de l'unité
  Unite            char(3) default '',                        -- Unité
  Libelle          varchar(25) default '',                    -- Libellé complet de l'unité
  primary key(Code_Unite)
) engine=InnoDB;


-- ---------------- SUIVI DES REGLEMENTS CLIENTS -------------------------------------------


create table ECHEANCE_CLIENT (
  Echeance_Id         int unsigned not null auto_increment,  -- Identifiant échéance
  Type                char(8) default 'Echeance',            -- Type de l'échéance (Acompte=acompte,Echeance=échéance classique)
  Provenance          char(8) default 'Facture',             -- Provenance de l'échéance (Facture=échéance créée par facture,Commande=échéance créée par commande)
  Numero              varchar(20) default '',                -- Numéro de facture ou de commande selon la provenance
  Document_Id         int unsigned default 0,                -- Identifiant du document facture ou commande client
  Date_Echeance       bigint unsigned default 0,             -- Date d'échéance effective
  Echeance_Initiale   bigint unsigned default 0,             -- Date d'échéance prévue
  Client_Id           varchar(10) default '',                -- Code client
  Raison_Sociale      varchar(50) default '',                -- Raison sociale du client
  Montant_Du          decimal(14,2) default 0,               -- Montant TTC
  Montant_Regle       decimal(14,2) default 0,               -- Montant réglé
  Montant_Restant     decimal(14,2) default 0,               -- Montant restant dû du règlement
  Regulariser         decimal(14,2) default 0,               -- Montant de la régularisation
  Etat                char(1) default 'N',                   -- Etat de l'échéance (N=Nouvelle,C=En cours,R=Réglée)
  Mode_Reglement      varchar(25) default '',                -- Mode de règlement prévu
  Commentaires        text,                                  -- Commentaires sur l'échéance
  primary key(Echeance_Id)
) engine=InnoDB;


create table REGLEMENT_CLIENT (
  Reglement_Id        int unsigned not null auto_increment,  -- Identifiant du règlement
  Date_Reg            bigint unsigned default 0,             -- Date du règlement
  Numero_Compte       varchar(8) default '',                 -- Numéro de compte comptable
  Client_Id           varchar(10) default '',                -- Identifiant client
  Raison_Sociale      varchar(50) default '',                -- Raison sociale du client
  Journal_Banque      char(3) default '',                    -- Code du journal de banque
  Num_Piece           varchar(20) default '',                -- Numéro de pièce du règlement
  Banque_Client       varchar(30) default '',                -- Banque émettrice du règlement
  Montant             decimal(14,2) default 0,               -- Montant du règlement
  Montant_Restant     decimal(14,2) default 0,               -- Montant restant à imputer
  Regulariser         decimal(14,2) default 0,               -- Montant de la régularisation
  Rembourser          decimal(14,2) default 0,               -- Montant du remboursement
  Etat                char(1) default 'N',                   -- Etat du règlement (N=Nouveau,C=en cours,R=imputé)
  Comptabilise        tinyint unsigned default 0,            -- Transféré en compta (0=non,1=oui)
  Remis               tinyint unsigned default 0,            -- Remis en banque (0=non,1=oui)
  Date_Remis          bigint unsigned default 0,             -- Date de la remise en banque
  Mode_Reglement      varchar(25) default '',                -- Mode de règlement effectif
  Commentaires        varchar(100) default '',               -- Commentaires sur le règlement
  primary key(Reglement_Id)
) engine=InnoDB;


create table ECHEANCE_REGLEMENT_CLIENT (
  Echeance_Reglement_Id  int unsigned not null auto_increment,  -- Identifiant de la relation
  Echeance_Id            int unsigned not null default 0,       -- Identifiant de l'échéance
  Reglement_Id           int unsigned not null default 0,       -- Identifiant du règlement
  Montant                decimal(14,2) default 0,               -- Montant imputé à l'échéance
  Date_Affectation       bigint unsigned default 0,             -- Date d'affectation
  primary key(Echeance_Reglement_Id),
  index idx_echeance_id (Echeance_Id),
  index idx_reglement_id (Reglement_Id),
  constraint cfk_echeance_reglement_client_echeance_id foreign key (Echeance_Id) references ECHEANCE_CLIENT (Echeance_Id),
  constraint cfk_echeance_reglement_client_reglement_id foreign key (Reglement_Id) references REGLEMENT_CLIENT (Reglement_Id)
) engine=InnoDB;


create table ECHEANCE_AVOIR_CLIENT (
  Echeance_Avoir_Id   int unsigned not null auto_increment,  -- Identifiant de la relation
  Echeance_Id         int unsigned default 0,                -- Identifiant de l'échéance
  Avoir_Id            int unsigned default 0,                -- Identifiant de l'avoir
  Montant             decimal(14,2) unsigned default 0,      -- Montant imputé à l'échéance
  primary key(Echeance_Avoir_Id),
  index idx_echeance_id (Echeance_Id),
  index idx_avoir_id (Avoir_Id),
  constraint cfk_echeance_avoir_client_echeance_id foreign key (Echeance_Id) references ECHEANCE_CLIENT (Echeance_Id),
  constraint cfk_echeance_avoir_client_avoir_id foreign key (Avoir_Id) references AVOIR (Avoir_Id)
) engine=InnoDB;


create table RELANCE (
  Echeance_Id         int unsigned not null,          -- Identifiant du règlement en attente
  Date_Relance        bigint unsigned default 0,      -- Date de la relance
  Etat                tinyint unsigned default 0,     -- Etat de la relance (0=déjà générée,1=dernières relances générées)
  primary key (Echeance_Id, Date_Relance),
  constraint cfk_relance_echeance_id foreign key (Echeance_Id) references ECHEANCE_CLIENT (Echeance_Id)
) engine=InnoDB;


create table BANQUE (
  Code_Journal    char(3) not null,            -- Code journal associé (en compta)
  Nom             varchar(30) default '',      -- Nom de la banque
  Adresse         varchar(80) default '',      -- Domiciliation
  Code_Agence     varchar(5) default '',       -- Code établissement
  Code_Guichet    varchar(5) default '',       -- Code guichet
  Num_Compte      varchar(11) default '',      -- Numéro de compte
  Cle_RIB         varchar(2) default '',       -- Clé de RIB
  IBAN            varchar(27) default '',      -- 27 caractères du numéro IBAN
  BIC             varchar(11) default '',      -- Numéro BIC
  primary key(Code_Journal)
) engine=InnoDB;



-- ---------------- SUIVI DES REGLEMENTS FOURNISSEURS -------------------------------------------


create table ECHEANCE_FOURNISSEUR (
  Echeance_Id          int unsigned not null auto_increment,  -- Identifiant échéance de règlement au fournisseur
  Type                 char(8) default 'Echeance',            -- 'Acompte' => acompte , 'Echeance' => échéance classique
  Provenance           char(8) default 'Facture',             -- 'Facture' => cet échéance à été créé à partir d'une facture , 'Commande' => d une commande
  Numero               varchar(20) default '',                -- Numéro de facture ou commande selon la provenance
  Document_Id          int unsigned default 0,                -- Identifiant du document facture ou commande client
  Date_Echeance        bigint unsigned default 0,             -- Date de fin de l'échéance réelle
  Echeance_Initiale    bigint unsigned default 0,             -- Date de fin de l'échéance initialement prévue
  Fournisseur_Id       varchar(10) default '',                -- Code fournisseur
  Raison_Sociale       varchar(50) default '',                -- Raison sociale du fournisseur
  Montant_Du           decimal(14,2) default 0,               -- Montant TTC
  Montant_Regle        decimal(14,2) default 0,               -- Montant réglé
  Montant_Restant      decimal(14,2) default 0,               -- Montant restant dû du règlement
  Regulariser          decimal(14,2) default 0,               -- Montant de la régularisation
  Etat                 char(1) default 'N',                   -- 'N' => nouvel enregistrement ; 'C' => en cours ; 'R' => Réglé
  Mode_Reglement       varchar(25) default '',                -- Mode de règlement prevu
  Commentaires         text,                                  -- Commentaires sur l'échéance
  primary key(Echeance_Id)
) engine=InnoDB;


create table ECHEANCE_REGLEMENT_FOURNISSEUR (
  Echeance_Reglement_Id  int unsigned not null auto_increment,  -- Identifiant echeance_reglement
  Echeance_Id            int unsigned default 0,                -- Identifiant echeance
  Reglement_Id           int unsigned default 0,                -- Identifiant reglement
  Montant                decimal(14,2) unsigned default 0,      -- Montant imputé a l'échéance
  primary key(Echeance_Reglement_Id)
) engine=InnoDB;


create table REGLEMENT_FOURNISSEUR (
  Reglement_Id        int unsigned not null auto_increment,  -- Identifiant paiement
  Date_Reg            bigint unsigned default 0,             -- Date de paiement
  Fournisseur_Id      varchar(10) default '',                -- Code fournisseur
  Raison_Sociale      varchar(50) default '',                -- Raison sociale du fournisseur
  Journal_Banque      char(3) default '',                    -- Code du journal de banque
  Num_Piece           varchar(20) default '',                -- Numéro de pièce de paiement
  Banque_Fournisseur  varchar(30) default '',                -- Banque du fournisseur
  Montant             decimal(14,2) default 0,               -- Montant du paiement
  Montant_Restant     decimal(14,2) default 0,               -- Montant restant à imputer
  Regulariser         decimal(14,2) default 0,               -- Montant de la régularisation
  Rembourser          decimal(14,2) default 0,               -- Montant du remboursement
  Etat                char(1) default 'N',                   -- 'N' => nouvel enregistrement ; 'C' => en cours ; 'R' => imputé
  Comptabilise        tinyint unsigned default 0,            -- 0 => nouvel enregistrement ; 1 => comptabilisé
  Remis               tinyint unsigned default 0,            -- 0 => nouvel enregistrement ; 1 => remis en banque
  Date_Remis          bigint unsigned default 0,             -- Date de la remise en banque
  Mode_Reglement      varchar(25) default '',                -- Mode de paiement effectif
  Commentaires        varchar(100) default '',               -- Commentaires du paiement
  primary key(Reglement_Id)
) engine=InnoDB;


create table ECHEANCE_AVOIR_FOURNISSEUR (
  Echeance_Avoir_Id   int unsigned not null auto_increment,  -- Identifiant echeance_avoir
  Echeance_Id         int unsigned default 0,                -- Identifiant echeance
  Avoir_Id            int unsigned default 0,                -- Identifiant avoir
  Montant             decimal(14,2),                         -- Montant impute a l'echeance
  primary key(Echeance_Avoir_Id)
) engine=InnoDB;


-- ---------------- FACTURES ET AVOIRS FOURNISSEURS -------------------------------------------


create table AVOIR_FOURNISSEUR (
  Avoir_Id              int unsigned not null auto_increment,  -- Identifiant avoir_fournisseur
  Date_Avoir            bigint unsigned default 0,             -- Date de l'avoir
  Numero                int unsigned default 0,                -- Numéro d'avoir
  Num_Entier            char(10) default '',                   -- Numéro sous sa forme intégrale
  Commentaires          text,                                  -- commentaires associés à la facture
  Imp_Com               tinyint unsigned default 0,            -- impression des commentaires (1=oui,0=non)
  Nom_Resp              varchar(30) default '',                -- Nom du responsable
  Prenom_Resp           varchar(20) default '',                -- Prénom du responsable
  Civ_Inter             tinyint unsigned default 0,            -- Civilité de l'interlocuteur
  Nom_Inter             varchar(30) default '',                -- Nom de l'interlocuteur
  Prenom_Inter          varchar(20) default '',                -- Prénom de l'interlocuteur
  Tel_Inter             varchar(20) default '',
  Fax_Inter             varchar(20) default '',
  Email_Inter           varchar(64) default '',
  Fournisseur_Id        varchar(10) default '',                -- Code fournisseur
  Raison_Sociale        varchar(50) default '',                -- Raison sociale
  Adresse_Fact          varchar(80) default '',                -- Adresse facturation
  Comp_Adresse_Fact     varchar(50) default '',                -- Complément d'adresse de facturation
  Adresse_3_Fact        varchar(50) default '',                -- Ligne d'adresse 3 de facturation
  CP_Fact               varchar(10) default '',                -- Code postal de facturation
  Ville_Fact            varchar(50) default '',                -- Ville de facturation
  Code_Pays             char(2) default 'FR',                  -- Code pays
  Date_Creation         bigint unsigned default 0,             -- date de création
  Date_Maj              bigint unsigned default 0,             -- date de mise à jour
  Util_C                int unsigned not null,                 -- utilisateur créateur de l'avoir
  Util_M                int unsigned not null,                 -- utilisateur ayant fait la dernière modification de l'avoir
  Util_R                int unsigned not null,                 -- utilisateur responsable de l'avoir
  Total_HT              decimal(14,2) unsigned default 0,      -- Total HT de l'avoir
  Montant_TTC           decimal(14,2) unsigned default 0,      -- Montant TTC de l'avoir (Hors escompte)
  Code_Tarif            tinyint unsigned default 1,            -- Code tarif utilisé
  Transfere             tinyint unsigned default 0,            -- 1 si avoir transféré en compta
  Type_Achat            char(1) default 'N',                   -- Type d' achat (U=Union Européenne,N=National,I=International,E=Exonéré)
  Montant_Restant       decimal(14,2) default 0,               -- Montant restant à imputer
  Rembourser            decimal(14,2) default 0,               -- Montant du remboursement
  Etat                  char(1) default 'N',                   -- 'N' => nouvel enregistrement ; 'C' => en cours ; 'R' => imputé
  Remise                decimal(5,2) unsigned default 0,       -- Pourcentage de remise
  Escompte              decimal(5,2) unsigned default 0,       -- Pourcentage d'escompte
  Frais_Port            decimal(10,2) unsigned default 0,      -- Montant HT des frais de port
  Taux_TVA_Port         decimal(4,2) unsigned default 0,       -- Taux de TVA des frais de port
  Mentions            text,                                 -- Mentions
  primary key(Avoir_Id)
) engine=InnoDB;


create table FACTURE_FOURNISSEUR (
  Facture_Id          int unsigned not null auto_increment,  -- Identifiant facture
  Date_Facture        bigint unsigned default 0,             -- Date de la facture
  Echeance            bigint unsigned default 0,             -- Date d'échéance de paiement
  Mode_Reg            varchar(25) default '',                -- Mode de règlement
  Numero              int unsigned default 0,                -- Numéro de facture
  Num_Entier          varchar(20) default '',                -- Numéro sous sa forme intégrale
  Commentaires        text,                                  -- commentaires associés à la facture
  Imp_Com             tinyint unsigned default 0,            -- impression des commentaires (1=oui,0=non)
  Nom_Resp            varchar(30) default '',                -- Nom du responsable
  Prenom_Resp         varchar(20) default '',                -- Prénom du responsable
  Civ_Inter           tinyint unsigned default 0,            -- Civilité de l'interlocuteur
  Nom_Inter           varchar(30) default '',                -- Nom de l'interlocuteur
  Prenom_Inter        varchar(20) default '',                -- Prénom de l'interlocuteur
  Tel_Inter           varchar(20) default '',
  Fax_Inter           varchar(20) default '',
  Email_Inter         varchar(64) default '',
  Fournisseur_Id      varchar(10) default '',                -- Code fournisseur
  Raison_Sociale      varchar(50) default '',                -- Raison sociale
  Adresse_Fact        varchar(80) default '',                -- Ligne d'adresse 1 de facturation
  Comp_Adresse_Fact   varchar(50) default '',                -- Ligne d'adresse 2 de facturation
  Adresse_3_Fact      varchar(50) default '',                -- Ligne d'adresse 3 de facturation
  CP_Fact             varchar(10) default '',                -- Code postal de facturation
  Ville_Fact          varchar(50) default '',                -- Ville de facturation
  Code_Pays           char(2) default 'FR',                  -- Code pays
  Date_Creation       bigint unsigned default 0,             -- date de création
  Date_Maj            bigint unsigned default 0,             -- date de mise à jour
  Util_C              int unsigned not null,                 -- utilisateur créateur de la facture
  Util_M              int unsigned not null,                 -- utilisateur ayant fait la dernière modification de la facture
  Util_R              int unsigned not null,                 -- utilisateur responsable de la facture
  Acompte             decimal(14,2) unsigned default 0,      -- Montant d'acompte TTC
  Remise              decimal(5,2) unsigned default 0,       -- Pourcentage de remise
  Escompte            decimal(5,2) unsigned default 0,       -- Pourcentage d'escompte
  Frais_Port          decimal(10,2) unsigned default 0,      -- Montant HT des frais de port
  Total_HT            decimal(14,2) unsigned default 0,      -- Total HT de la facture
  Montant_TTC         decimal(14,2) unsigned default 0,      -- Montant TTC de la facture (Hors escompte)
  Transferee          tinyint unsigned default 0,            -- 1 si facture transférée en compta
  Taux_TVA_Port       decimal(4,2) unsigned default 0,       -- Taux de TVA des frais de port
  Type_Achat          char(1) default 'N',                   -- Type d'achat (U=Union Européenne,N=National,I=International,E=Exonéré)
  Mentions            text,                                 -- Mentions
  primary key(Facture_Id)
) engine=InnoDB;


create table ARTICLE_FACTURE_FOURNISSEUR (
  Facture_Id          int unsigned not null,                -- Identifiant facture
  Ref_Ligne           int unsigned default 0,               -- Ligne correspondante dans la facture
  Rank                int unsigned not null,                -- Numéro d'ordre dans la facture
  Reference           varchar(40) default '',               -- Code article
  Ref_Fournisseur     varchar(40) default '',               -- Référence article chez le fournisseur
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix unitaire HT de l'article
  Ristourne           decimal(5,2) unsigned default 0,      -- Taux de ristourne
  Taux_TVA            decimal(4,2) unsigned default 0,      -- Taux de TVA
  Code_TVA            int unsigned default 1,               -- Code de TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  BR_Id               int unsigned default 0,               -- Identifiant du bon de réception
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  Unite               char(3) default 'U',                  -- unité de vente
  primary key(Facture_Id, Rank),
  index idx_code_tva (Code_TVA),
  constraint cfk_article_facture_fournisseur_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table ARTICLE_FACTURE_FOURNISSEUR_TEMP (
  Facture_Id          int unsigned not null,                -- Identifiant facture
  Ref_Ligne           int unsigned default 0,               -- Ligne correspondante dans la facture
  Rank                int unsigned not null,                -- Numéro d'ordre dans la facture
  Reference           varchar(40) default '',               -- Code article
  Ref_Fournisseur     varchar(40) default '',               -- Référence article chez le fournisseur
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix unitaire HT de l'article
  Ristourne           decimal(5,2) unsigned default 0,      -- Taux de ristourne
  Code_TVA            int unsigned default 1,               -- Code de TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  BR_Id               int unsigned default 0,               -- Identifiant du bon de réception
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  Unite               char(3) default 'U',                  -- unité de vente
  primary key(Facture_Id, Rank)
) engine=InnoDB;


create table ARTICLE_AVOIR_FOURNISSEUR (
  Avoir_Id            int unsigned not null,                -- Identifiant avoir
  Ref_Ligne           int unsigned default 0,               -- Ligne correspondante dans l'avoir
  Rank                int unsigned not null,                -- Numéro d'ordre dans l'avoir
  Reference           varchar(40) default '',               -- Code article
  Ref_Fournisseur     varchar(40) default '',               -- Référence article chez le fournisseur
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix unitaire HT de l'article
  Code_TVA            int unsigned default 1,               -- Code TVA
  Taux_TVA            decimal(4,2) unsigned default 0,      -- Taux de TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  Ristourne           decimal(5,2) unsigned default 0,      -- Taux de ristourne
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  Unite               char(3) default 'U',                  -- unité de vente
  primary key(Avoir_Id, Rank),
  index idx_code_tva (Code_TVA),
  constraint cfk_article_avoir_fournisseur_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table ARTICLE_AVOIR_FOURNISSEUR_TEMP (
  Avoir_Id            int unsigned not null,                -- Identifiant avoir
  Ref_Ligne           int unsigned default 0,               -- Ligne correspondante dans l'avoir
  Rank                int unsigned not null,                -- Numéro d'ordre dans l'avoir
  Reference           varchar(40) default '',               -- Code article
  Ref_Fournisseur     varchar(40) default '',               -- Référence article chez le fournisseur
  Type_Ligne          char(1) default 'I',                  -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4) unsigned default 0,     -- Prix unitaire HT de l'article
  Code_TVA            int unsigned default 1,               -- Code TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  Ristourne           decimal(5,2) unsigned default 0,      -- Taux de ristourne
  Num_Lot             varchar(15) default '',               -- numéro de lot
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  Date_Peremption     bigint unsigned default 0,            -- date de péremption
  Unite               char(3) default 'U',                  -- unité de vente
  primary key(Avoir_Id, Rank)
) engine=InnoDB;



-- ---------------- COLISAGE - ETIQUETAGE - EXPEDITION --------------------------------------------------------

create table COLIS (
  Colis_Id       int unsigned not null auto_increment,  -- identifiant colis
  Bon_Id         int unsigned default 0,                -- identifiant du bon de livraison
  Ident_Suivi    varchar(20) default '',                -- identifiant transporteur pour suivi du colis
  Numero         int unsigned default 0,                -- numéro du colis
  Poids          decimal(10,3) unsigned default 0,      -- poids du colis en kg
  Lien           varchar(200) default '',               -- lien vers le suivi de commande
  primary key(Colis_Id),
  index idx_bon_id (Bon_Id),
  constraint cfk_colis_bon_id foreign key (Bon_Id) references BON_LIVRAISON (Bon_Id)
) engine=InnoDB;


create table CONTENU_COLIS (
  Colis_Id       int unsigned not null,              -- identifiant colis
  Ref_Ligne      int unsigned not null,              -- ligne correspondante de la commande
  Quantite       decimal(10,3) unsigned default 0,   -- quantité de l'article dans le colis
  Poids          decimal(10,3) unsigned default 0,   -- poids unitaire en kg
  primary key(Ref_Ligne, Colis_Id)
) engine=InnoDB;


create table MODELE_ETIQUETTE (
  Modele_Id      varchar(10) not null,      -- identifiant modèle
  Description    varchar(100) default '',   -- description du modèle
  Class          varchar(100) default '',   -- class java
  primary key(Modele_Id)
) engine=InnoDB;


create table ORG_LIVRAISON (
  Organisme_Id     int unsigned not null auto_increment,  -- Identifiant de l'organisme de livraison
  Nom_Org          varchar(30) default '',                -- Nom de l'organisme de livraison
  Adresse          varchar(80) default '',                -- Adresse
  Code_Postal      varchar(10) default '',                -- Code postal
  Ville            varchar(50) default '',                -- Ville
  Tel              varchar(20) default '',                -- Téléphone
  Fax              varchar(20) default '',                -- Fax
  Num_Client       varchar(15) default '',                -- Numéro de client chez cet organisme
  primary key(Organisme_Id)
) engine=InnoDB;


create table EXPORT_COLIS (
  Export_Id      varchar(10) not null,      -- identifiant export
  Description    varchar(100) default '',   -- description de l'export
  Class          varchar(100) default '',   -- class java
  Num_Org        int unsigned default 0,    -- numéro de l'organisme de livraison correspondant
  primary key(Export_Id)
) engine=InnoDB;


create table IMPORT_COLIS (
  Import_Id      varchar(10) not null,       -- identifiant import
  Description    varchar(100) default '',    -- description de l'import
  Class          varchar(100) default '',    -- class java
 primary key(Import_Id)
) engine=InnoDB;


create table MODE_LIVRAISON (
  Mode_Liv_Id      int unsigned not null auto_increment,  -- Identifiant du mode de livraison
  Organisme_Id     int unsigned not null,                 -- Identifiant de l'organisme de livraison
  Nom              varchar(20) default '',                -- Nom du mode de livraison
  Relais           tinyint unsigned default 0,            -- Relais colis (oui/non)
  Format_Defaut    varchar(10) default null,              -- Format par défaut du fichier d'expédition
  primary key(Mode_Liv_Id),
  index idx_organisme_id (Organisme_Id),
  index idx_format_defaut (Format_Defaut),
  constraint cfk_mode_livraison_organisme_id foreign key (Organisme_Id) references ORG_LIVRAISON (Organisme_Id),
  constraint cfk_mode_livraison_format_defaut foreign key (Format_Defaut) references EXPORT_COLIS (Export_Id)
) engine=InnoDB;



-- ---------------- ABONNEMENTS -------------------------------------------------------------------

create table MODELE (
  Modele_Id                   int unsigned not null auto_increment, -- Identifiant du modele
  Reference_modele            char(10) not null,                    -- Reference du modele
  Libelle_modele              varchar(40) not null,                 -- libelle du modele
  Periodicite                 tinyint unsigned,                     -- Valeur de la periodicite
  Type_periodicite            tinyint unsigned,                     -- Type de periodicite(1=jour(s),2=semaine(s),3=mois,4=an(s))
  Duree_contrat               int unsigned,                         -- Valeur de la duree du contrat
  Type_duree_contrat          tinyint unsigned,                     -- Type de duree (1=jour(s),2=semaine(s),3=mois,4=an(s))
  Type_contrat                tinyint unsigned,                     -- Type contrat  (1=sans reconduction,2=reconduction tacite
  Duree_recon_contrat         int unsigned,                         -- Valeur de la duree du contrat
  Type_duree_recon_contrat    tinyint unsigned,                     -- Type de duree (1=jour(s),2=semaine(s),3=mois,4=an(s))
  OptionRachat                tinyint unsigned,                     -- Option de rachat en fin d'abonnement dans le cas d'un abonnement sans reconduction (0 = non, 1 = oui)
  Delai_preavis               tinyint unsigned,                     -- Valeur en mois du preavis (1,2 ou 3 mois)
  Delai_gen_facture           tinyint unsigned,                     -- delai en jour pour generation de la facture avant envoi
  nbPeriodeOfferte            tinyint unsigned,                     -- nombre de periode offerte
  Delais_reglement            tinyint unsigned,                     -- delai en jour pour le reglement d'un facture
  Type_reglement              tinyint unsigned,                     -- type de reglement (1=net,2=fin de mois,3=fin de mois le)
  Val_type_reglement          tinyint unsigned default 0,           -- si Type_reglement=3, valeur de fin de mois le sinon 0
  Commentaires                text,                                 -- commentaires associé à une facture
  Com_ds_facture              tinyint unsigned,                     -- si le commentaire est ecrit dans la facture(1=oui/0=non)
  Code_tarif                  tinyint unsigned default 1,           -- code tarif utilisé
  Mode_reglement              varchar(25),                          -- defini le mode de reglement utilisé
  Remise                      decimal(5,2) unsigned,                -- Pourcentage de remise
  Escompte                    decimal(5,2) unsigned,                -- Pourcentage d'escompte
  Frais_Port                  decimal(10,2) unsigned,               -- Montant HT des frais de port
  Date_Creation               bigint unsigned,                      -- Date de création du modele
  Date_Maj                    bigint unsigned,                      -- Date de mise à jour
  Util_C                      int unsigned not null,                -- Utilisateur créateur du modèle
  Util_M                      int unsigned not null,                -- Utilisateur ayant fait la dernière modification du modèle
  Util_R                      int unsigned not null,                -- Utilisateur responsable du modèle
  Type_facturation            tinyint unsigned,                     -- type de facturation (1 = à echoire et 2 = à echu)
  PrefixeNumContrat           varchar(6),                           -- Debut du numero de contrat d'un abonnement
  Edition_TTC                 tinyint unsigned default 0,           -- 1 si le modèle est édité en ttc
  primary key(Modele_Id)
) engine=InnoDB;


create table ARTICLE_MODELE (
  Modele_Id           int unsigned not null,                -- Identifiant du modele
  Ref_Ligne           int unsigned not null  default 0,     -- Ligne correspondante dans la facture
  Rank                int unsigned not null,                -- Numéro d'ordre dans la facture
  Reference           varchar(40),                          -- Code article
  Type_Ligne          char(1),                              -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100) default '',              -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4),                        -- Prix unitaire HT de l'article
  Ristourne           decimal(5,2) unsigned,                -- Taux de ristourne
  Code_TVA            int unsigned default 1,               -- Code TVA
  Taux_TVA            decimal(4,2) unsigned,                -- Taux de TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20) default '',               -- Libelle supplémentaire
  primary key(Modele_Id, Rank),
  index idx_code_tva (Code_TVA),
  constraint cfk_article_modele_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table ARTICLE_MODELE_TEMP (
  Modele_Id           int unsigned not null,                -- Identifiant facture
  Ref_Ligne           int unsigned not null  default 0,     -- Ligne correspondante dans la facture
  Rank                int unsigned not null,                -- Numéro d'ordre dans la facture
  Reference           varchar(40),                          -- Code article
  Type_Ligne          char(1),                              -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100),                         -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4),                        -- Prix unitaire HT de l'article
  Ristourne           decimal(5,2) unsigned,                -- Taux de ristourne
  Code_TVA            int unsigned default 1,               -- Code TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20),                          -- Libelle supplémentaire
  primary key(Modele_Id, Rank)
) engine=InnoDB;


create table ABONNEMENT (
  Abonnement_Id             int unsigned not null auto_increment,  -- Identifiant de l'abonnement
  NumeroMoisPrefixe         int unsigned default 0,                -- numero par mois et par prefixe
  Num_Entier                char(14),                              -- Numero Entier du contrat
  PrefixeNumContrat         varChar(6),                            -- Debut du numero de contrat d'un abonnement
  Modele_Id                 int unsigned not null,                 -- Identifiant du modele (=0 si l'abonnement est créé sans modele)
  Reference_modele          char(10) not null,                     -- Reference de l'abonnement
  Libelle                   varchar(40) not null,                  -- libelle
  Periodicite               tinyint unsigned,                      -- Valeur de la periodicite
  Type_periodicite          tinyint unsigned,                      -- Type de periodicite(1=jour(s),2=semaine(s),3=mois,4=an(s))
  Duree_contrat             int unsigned,                          -- Valeur de la duree du contrat
  Type_duree_contrat        tinyint unsigned,                      -- Type de duree (1=jour(s),2=semaine(s),3=mois,4=an(s))
  Duree_recon_contrat       int unsigned,                          -- Valeur de la duree du contrat
  Type_duree_recon_contrat  tinyint unsigned,                      -- Type de duree (1=jour(s),2=semaine(s),3=mois,4=an(s))
  Type_contrat              tinyint unsigned,                      -- Type contrat  (1=sans reconduction,2=reconduction tacite
  OptionRachat              tinyint unsigned,                      -- Option de rachat en fin d'abonnement dans le cas d'un abonnement sans reconduction (0 = non, 1 = oui)
  ValeurRachat              decimal(14,2),                         -- valeur HT de l'article en cas de rachat
  PourcentageRachat         decimal(5,2) unsigned,                 -- Pourcentage correspond au rachat de l'article
  Delai_preavis             tinyint unsigned,                      -- Valeur en mois du preavis (1,2 ou 3 mois)
  Date_du_preavis           bigint unsigned,                       -- date du preavis (date de fin - delais preavis)
  Delai_gen_facture         tinyint unsigned,                      -- delai en jour pour generation de la facture avant envoi
  nbPeriodeOfferte          tinyint unsigned,                      -- nombre de periode offerte
  Delais_reglement          tinyint unsigned,                      -- delai en jour pour le reglement d'un facture
  Type_reglement            tinyint unsigned,                      -- type de reglement (1=net,2=fin de mois,3=fin de mois le)
  Val_type_reglement        tinyint unsigned default 0,            -- si Type_reglement=3, valeur de fin de mois le sinon 0
  Commentaires              text,                                  -- commentaires associé à une facture
  Date_debut_contrat        bigint unsigned,                       -- date de debut du contrat
  Date_debut_abonnement     bigint unsigned,                       -- date de fin de l'abonnement en cours
  Date_fin_abonnement       bigint unsigned,                       -- date de fin de l'abonnement en cours
  Code_tarif                tinyint unsigned default 1,            -- code tarif utilisé
  Mode_reglement            varchar(25),                           -- defini le mode de reglement utilisé
  Remise                    decimal(5,2) unsigned,                 -- Pourcentage de remise
  Escompte                  decimal(5,2) unsigned,                 -- Pourcentage d'escompte
  Frais_Port                decimal(10,2) unsigned,                -- Montant HT des frais de port
  Etat                      char(1),                               -- Etat de l'abonnement (A=en attente,C=en cours,T=terminé,R=resilié)
  Date_Creation             bigint unsigned,                       -- Date de création de l'abonnement
  Date_Maj                  bigint unsigned,                       -- Date de mise à jour
  Util_C                    int unsigned not null,                 -- Utilisateur créateur de l'abonnement
  Util_M                    int unsigned not null,                 -- Utilisateur ayant fait la dernière modification de l'abonnement
  Util_R                    int unsigned not null,                 -- Utilisateur responsable de l'abonnement
  Raison_Sociale            varchar(50),                           --
  Adresse                   varchar(80),                           --
  Comp_Adresse              varchar(50),                           --
  Code_Postal               varchar(10),                           --
  Ville                     varchar(50),                           --
  Code_Pays                 char(2) default 'FR',                  -- Code pays
  Client_Id                 varchar(10),                           --
  Type_facturation          tinyint unsigned,                      -- type de facturation (1 = à echoire et 2 = à echu)
  Edition_TTC               tinyint unsigned default 0,            -- 1 si l'abonnement est édité en ttc
  Adresse_3                 varchar(50) default '',               -- Ligne d'adresse 3
  Civ_Inter                 tinyint unsigned default 0,
  Nom_Inter                 varchar(30) default '',               -- Nom et prénom du client
  Prenom_Inter              varchar(30) default '',
  Tel_Inter                 varchar(20) default '',
  Fax_Inter                 varchar(20) default '',
  Email_Inter               varchar(64) default '',
  Denomination_Liv          varchar(50) default '',               -- Denomination de livraison
  Adresse_1_Liv           varchar(80) default '',               -- Ligne d'adresse 1 de livraison
  Adresse_2_Liv           varchar(50) default '',               -- Ligne d'adresse 2 de livraison
  Adresse_3_Liv           varchar(50) default '',               -- Ligne d'adresse 3 de livraison
  Code_Postal_Liv         varchar(10) default '',               -- Code postal de livraison
  Ville_Liv               varchar(50) default '',               -- Ville de livraison
  Code_Pays_Liv           char(2) default 'FR',                 -- Code pays de livraison
  Civ_Inter_Liv           tinyint unsigned default 0,           -- Civilité de l'interlocuteur de livraison
  Nom_Inter_Liv           varchar(30) default '',               -- Nom de l'interlocuteur de livraison
  Prenom_Inter_Liv        varchar(30) default '',               -- Prénom de l'interlocuteur de livraison
  Tel_Inter_Liv           varchar(20) default '',               -- Téléphone de l'interlocuteur de livraison
  Fax_Inter_Liv           varchar(20) default '',               -- Fax de l'interlocuteur de livraison
  Email_Inter_Liv           varchar(64) default '',               -- E-Mail de l'interlocuteur de livraison
  Assujetti_TVA             tinyint unsigned default 0,           -- Assujetti à la TVA (1=oui,0=non)
  Num_TVA_Intra             varchar(14) default '',               -- Numéro de TVA intracommunautaire
  Mentions                  text,                                 -- Mentions
  primary Key(Abonnement_Id)
) engine=InnoDB;


create table ARTICLE_ABONNEMENT (
  Abonnement_Id       int unsigned not null,                -- Identifiant de l'abonnement
  Ref_Ligne           int unsigned not null  default 0,     -- Ligne correspondante dans la facture
  Rank                int unsigned not null,                -- Numéro d'ordre dans la facture
  Reference           varchar(40),                          -- Code article
  Type_Ligne          char(1),                              -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100),                         -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4),                        -- Prix unitaire HT de l'article
  Ristourne           decimal(5,2) unsigned,                -- Taux de ristourne
  Code_TVA            int unsigned default 1,               -- Code TVA
  Taux_TVA            decimal(4,2) unsigned,                -- Taux de TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20),                          -- Libelle supplémentaire
  primary key(Abonnement_Id, Rank),
  index idx_code_tva (Code_TVA),
  constraint cfk_article_abonnement_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table ARTICLE_ABONNEMENT_TEMP (
  Abonnement_Id       int unsigned not null,                -- Identifiant de l'abonnement
  Ref_Ligne           int unsigned not null  default 0,     -- Ligne correspondante dans la facture
  Rank                int unsigned not null,                -- Numéro d'ordre dans la facture
  Reference           varchar(40),                          -- Code article
  Type_Ligne          char(1),                              -- Type de la ligne (S=Stock,I=Indépendante)
  Designation         varchar(100),                         -- Désignation de l'article
  Quantite            decimal(10,3) unsigned default 1,     -- Quantité
  Prix                decimal(14,4),                        -- Prix unitaire HT de l'article
  Ristourne           decimal(5,2) unsigned,                -- Taux de ristourne
  Code_TVA            int unsigned default 1,               -- Code TVA
  Commentaire         text,                                 -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                 -- Commentaire haut associé à la ligne
  Libelle             varchar(20),                          -- Libelle supplémentaire
  primary key(Abonnement_Id, Rank)
) engine=InnoDB;


create table ECHEANCE_ABONNEMENT (
  NumEcheance          int unsigned not null,                -- Numero de l'echeance
  Abonnement_Id        int unsigned not null,                -- Identifiant de l'abonnement
  Date_Debut           bigint unsigned,                      -- Date de debut de l'echeance
  Date_Fin             bigint unsigned,                      -- Date de fin de l'echeance
  Date_generation      bigint unsigned,                      -- Date de generation de l'echeance (date à laquelle on l'affiche dans les factures à émettre)
  Facture_Id           int unsigned default 0,               -- identifiant de la facture
  Num_Entier_Facture   char(10) default '',                  -- Numéro sous sa forme intégrale
  Total_HT             decimal(14,2),                        -- Total HT de l'echance
  MontantTTC           decimal(14,2),                        -- Montant TTC de l'echance (Hors escompte)
  Etat                 char(1),                              -- Etat de l'echeance (A = annulé,E = en attente, G= generé)
  Date_Echeance        bigint unsigned,                      -- Date d'echeance du reglement
  nbJourEcheance       tinyint unsigned,                     -- = nombre de jour de l'echeance si elle ne couvre pas une periode complete, 0 sinon
  Type                 char(1),                              -- Type de l'echéance (N = normal, R = rachat)
  Historique           tinyint unsigned default 0,           -- defini si l'echeance doit être affiché dans l'historique (0=non,1=oui)
  primary Key(NumEcheance,Abonnement_Id)
) engine=InnoDB;

-- ------------------------- E-COMMERCE -------------------------------------------------------


create table SITE_WEB (
  Site_Id              int unsigned not null auto_increment,  -- Identifiant du site
  Nom_Site             varchar(40) not null,                  -- Nom du site
  URL_Service          varchar(100) not null,                 -- adresse du serveur de web service
  Mail_Rapports        varchar(30) not null,                  -- e-mail pour envoyer les rapports
  URL_Site             varchar(100) not null,                 -- url du site
  URL_Logo             varchar(100) default '',               -- url du logo du site
  Status               char(1) default 'a',                   -- pour indiquer si le site est 'a' actif ou 'i' inactif
  Periode_Maj_Prix     int default 1440,                      -- periode en minute de mise à jour des prix
  Depart_Maj_Prix      int default 22,                        -- heure de départ de la mise à jour, 22h par défaut
  Periode_Maj_Article  int default 1440,                      -- periode en minute de mise à jour des articles
  Depart_Maj_Article   int default 22,                        -- heure de départ de la mise à jour, 22h par défaut
  Periode_Maj_Stock    int default 60,                        -- periode en minute de mise à jour des stocks, 1h par défaut
  Periode_Maj_Cmde     int default 60,                        -- periode en minute d'upload des commandes, 1h par défaut
  Gestion_Stock        tinyint default 0,                     -- 0 = stock pas géré, 1=stock géré
  Mail_Nouvelle        varchar(64) default '',
  Mail_EnCours         varchar(64) default '',
  Mail_Envoye          varchar(64) default '',
  Mail_Annule          varchar(64) default '',
  Subject_Nouvelle     varchar(64) default '',
  Subject_EnCours      varchar(64) default '',
  Subject_Envoye       varchar(64) default '',
  Subject_Annule       varchar(64) default '',
  Journal_Banque_CB    char(3) default '',
  Num_Piece_CB         varchar(20) default '',
  Banque_Client_CB     varchar(30) default '',
  Envoyer_Nouvelle     tinyint unsigned default 1,
  Envoyer_EnCours      tinyint unsigned default 1,
  Envoyer_Envoye       tinyint unsigned default 1,
  Envoyer_Annule       tinyint unsigned default 1,
  Calcul_Stock         char(1) default 'P',                   -- Mode de calcul du stock (T pour tampon, P pour %)
  Valeur_Stock         decimal(12,2) default 100,             -- Valeur a utiliser pour le calcul du stock
  Calcul_Prix          char(2) default 'PV',                  -- Mode de calcul du prix (M pour marge, MP pour marge en %, PA pour coef/PA,PV pour coef/PV, F pour prix fixe)
  Valeur_Prix          decimal(12,4) default 1,               -- Valeur a utiliser pour le calcul du prix
  primary key(Site_Id)
) engine=InnoDB;


create table FICHE_ARTICLE_WEB (
  Article_Web_Id   int unsigned auto_increment,    -- Réf de l'article web dans OSAMES
  Article_Id       varchar(40) not null,           -- Ref de l'article dans FICHE_ARTICLE
  Article_Id_Site  varchar(40),                    -- Ref de l'article sur le site
  Site_Id          int unsigned,                   -- Id du site su lequel est l'article
  Stock_Web        int default 0,                  -- stock en ligne(mis a jour lors de la maj des stocks)
  Calcul_Stock     char(1),                        -- Mode de calcul du stock (T pour tampon, P pour %)
  Valeur_Stock     decimal(12,2),                  -- Valeur a utiliser pour le calcul du stock
  Stock_Modifie    tinyint default 0,              -- 1 si le mode de calcul n'a pas été modifié, 1 si le mode de calc a été modif
  Prix_Web         decimal(12,3) default 0,        -- prix actuel en ligne (mis a jour lors de la maj des prix)
  Calcul_Prix      char(2),                        -- Mode de calcul du prix (M pour marge, MP pour marge en %, PA pour coef/PA, PV pour coef/PV, F pour prix fixe)
  Valeur_Prix      decimal(12,4),                  -- Valeur a utiliser pour le calcul du prix
  Prix_Modifie     tinyint default 0,              -- 0 si le mode de calcul n'a pas été modifié, 1 si le mode de calc a été modif
  Date_Limite      bigint,                         -- Date limite de l'article
  Statut_Web       char(1) default 'n',            -- statut: online ou offline 'n' pour on, 'f' pour off
  Etat_Existance   tinyint default 0,              -- -1 pour "a supprimer", +1 pour "a ajouter" 0 pour "non changé"
  Date_Prix_Ref    bigint default 0,               -- date de la FICHE_ARTICLE de la fiche utilisée pour le calcul des prix
  Date_Stock_Ref   bigint default 0,               -- date de la MVT_STOCK utilisée pour le calcul des stocks
  Date_Info_Ref    bigint default 0,               -- date de la FICHE_ARTICLE de la fiche utilisée pour la maj des infos
  Ancien_Stock     int default 0,                  -- valeur du stock de la derniere mise a jour
  primary key(Article_Web_Id),
  unique(Site_Id, Article_Id, Article_Id_Site)
) engine=InnoDB;

create table FICHE_ARTICLE_TEMP (
  Site_Id         int not null,                      -- Id du site su lequel est l'article
  Article_Id      char(40) not null,                 -- Code Article
  Designation     varchar(100) default '',           -- Désignation article
  Description     text,                              -- Description de l'article
  Marque          varchar(40) default '',            -- MarqueDesignation
  Famille         varchar(40) default '',            -- Famille article
  Sous_Famille    varchar(40) default '',            -- Sous-famille
  Prix_Vente      decimal(14,4) unsigned default 0,  -- Tarif 1
  Prix_Achat      decimal(12,4) default 0,           -- Prix d'achat
  Stock           int default 0,                     -- Quantité en stock
  Poids           decimal(10,3) default 0,           -- Poids
  En_ligne        char(1) default 'n',               -- etat de l'article sur le site
  Nom_Image       varchar(40),                       -- nom de l'image uploadé
  Taille          varchar(20) default '',            -- taille
  Couleur         varchar(20) default '',            -- couleur
  Collection      varchar(20) default '',            -- collection
  primary key(Site_Id, Article_Id)
) engine=InnoDB;


create table CLIENT_WEB (
  Client_Web_Id     int unsigned not null auto_increment,
  Client_Site_Id    varchar(60) not null,         -- Id du client sur le site
  Client_Id         varchar(10) default null,     -- Id du client dans OSAMES
  Civ               varchar(20),                  -- Civ du client
  Nom               varchar(30),                  -- Nom du client
  Prenom            varchar(30),                  -- Prénom du client
  Adresse_1         varchar(80) default '',       -- Ligne d'adresse 1
  Adresse_2         varchar(50) default '',       -- Ligne d'adresse 2
  Adresse_3         varchar(50) default '',       -- Ligne d'adresse 3
  CP                varchar(10),                  -- Code postal
  Ville             varchar(50),                  -- Ville
  Code_Pays         char(2) default 'FR',         -- Code pays
  Login             varchar(60),                  -- Login du site
  Password          varchar(20),                  -- mot de passe sur le site
  Tel               varchar(32),                  -- telephone du client
  Fax               varchar(32),                  -- fax
  Email             varchar(64),                  -- e-mail
  Site_Id           int,                          -- id du site
  Entreprise        varchar(50),                  -- entreprise du client
  Date_Maj          bigint,                       -- Date de dernière mise a jour
  Remise_Web        decimal(5,2) default 0,       -- Remise sur le site
  Actif             tinyint unsigned not null default 1,   -- Actif sur le site
  UploadStatus      tinyint unsigned not null default 0,   -- 0 : a mettre a jour sur le site
  primary key(Client_Web_Id),
  unique(Client_Site_Id,Site_Id)
) engine=InnoDB;


create table COMMANDE_WEB (
  Com_Web_Id         int unsigned not null auto_increment,
  Site_Id            int unsigned not null,                -- Identifiant du site
  Com_Site_Id        varchar(20) not null,                 -- Id de la commande sur le site
  Client_Web_Id      char(10),                             -- id du client dans OSAMES
  Total_HT           decimal(12,2) default 0,              -- total hors taxes
  Total_TTC          decimal(12,2) default 0,              -- total TTC
  Remise             decimal(12,2) default 0,              -- remise sur la commande
  Montant_Remise     decimal(9,2) default 0,               -- montant_remise
  Frais_Port         decimal(12,2) default 0,              -- frais de port
  Civ_Inter          tinyint unsigned default 0,
  Nom_Inter          varchar(30) default '',               -- Nom et prénom du client
  Prenom_Inter       varchar(30) default '',
  Tel_Inter          varchar(20) default '',               -- Nom et prénom du client
  Fax_Inter          varchar(20) default '',
  Email_Inter        varchar(64) default '',
  Societe_Client     varchar(50) default '',
  Adresse_Client_1   varchar(80) default '',               -- Ligne d'adresse 1
  Adresse_Client_2   varchar(50) default '',               -- Ligne d'adresse 2
  Adresse_Client_3   varchar(50) default '',               -- Ligne d'adresse 3
  Code_Pays          char(2) default 'FR',                 -- Code pays
  Ville_Client       varchar(50) default '',               -- ville du client
  CP_Client          varchar(10) default '',               -- code postal
  Civ_Inter_Liv      tinyint unsigned default 1,
  Nom_Inter_Liv      varchar(30) default '',               -- Nom et prénom du client
  Prenom_Inter_Liv   varchar(30) default '',
  Tel_Inter_Liv      varchar(20) default '',               -- Nom et prénom du client
  Fax_Inter_Liv      varchar(20) default '',
  Email_Inter_Liv    varchar(64) default '',
  Societe_Liv        varchar(50) default '',
  Adresse_Liv_1      varchar(80) default '',               -- Adresse de livraison
  Adresse_Liv_2      varchar(50) default '',
  Adresse_Liv_3      varchar(50) default '',
  Code_Pays_Liv      char(2) default 'FR',                 -- Code du Pays de livraison
  Ville_Liv          varchar(50) default '',               -- ville de livraison
  CP_Liv             varchar(10) default '',               -- code postal
  Mode_Paiement      varchar(20) default '',               -- mode paiement
  Statut_Paiement    tinyint default 0,                    -- 1 pour payé, 0 pour non payé, 2 pour payé partiellement, 3 pour inconnu
  Statut_Commande    char(1) default 'N',                  -- N pour Nouvelle,C pour En cours, E pour Envoyée, A pour Annulée, L pour Livrée
  Statut_Modifie     tinyint default 0,                    -- 1 si le statut a été modifié depuis la dernière maj, 0 sinon
  Date_Commande      bigint unsigned default 0,
  Commentaire        text,
  Commentaire_2      text,
  Imp_Com            tinyint unsigned default 0,
  Escompte           decimal(12,2) default 0,
  Acompte            decimal(12,2) default 0,
  Validee            tinyint default 0,                    -- 0 si commande non validée, 1 sinon
  Date_Creation      bigint unsigned default 0,            -- Date de création de la commande
  Date_Maj           bigint unsigned default 0,            -- Date de dernière mise a jour
  Mail_Manager       varchar(64) default '',
  Mode_Expedition    varchar(60) default '',               -- Mode d'expédition des colis
  Journal_Banque     char(3) default '',                   -- Code du journal de banque
  Num_Piece          varchar(20) default '',               -- Numéro de pièce du règlement
  Banque_Client      varchar(30) default '',               -- Banque émettrice du règlement
  Date_Reglement     bigint default 0,
  Edition_TTC        tinyint unsigned default 0,           -- 1 si la commande est éditée en ttc
  Date_Validation    bigint unsigned default 0,            -- date de validation de la commande_web
  Date_Annulation    bigint unsigned default 0,            -- date d'annulation de la commande_web
  Date_Reservation   bigint unsigned default 0,            -- date de réservation des produits de la commande_web
  Reservation        tinyint unsigned default 0,           -- 0 : produits non réservés, 1 : produits réservés
  Soldee             tinyint unsigned default 0,
  Code_Tarif         tinyint unsigned default 1,
  Util_R             int unsigned,                         -- Utilisateur responsable de la commande web
  Nom_Resp           varchar(30) default '',
  Prenom_Resp        varchar(30) default '',
  Code_Porte         varchar(30) default '',
  Num_Transaction    varchar(20) default '',
  Origine            varchar(30) default '',
  Infos_Commande     varchar(100) default '',
  Modification       tinyint unsigned default 0,           -- 1 : commande en mode modification
  Taux_Indicatif     decimal (7,4) unsigned default 0,
  Taux_TVA_Port      decimal(4,2) default 0,
  Assujetti_TVA      tinyint unsigned default 0,           -- Assujetti à la TVA (1=oui,0=non)
  Num_TVA_Intra      varchar(14) default '',               -- Numéro de TVA intracommunautaire
  Mentions           text,                                 -- Mentions
  Montant_Regle      decimal(12,2) default 0,              -- Montant Regle
  Regime_TVA         char(1) default 'G',                  -- Régime TVA (G=général, T=forcer la TVA, E=exonération)
  Envoi_Multiple     tinyint unsigned default 0,           -- Indique si la commande doit être envoyé en plusieurs fois (1:oui, 0:non)
  Bloque             tinyint unsigned default 0,           -- Indique si la	commande est bloqué (1:oui, 0:non)
  primary key(Com_Web_Id),
  index idx_client_web_id (Client_Web_Id)
) engine=InnoDB;


create table ARTICLE_COMMANDE_WEB (
  Detail_Id           int unsigned auto_increment,           -- identifiant qui sert pour le BL (Ref_Ligne)
  Com_Web_Id          int unsigned not null,                 -- identifiant de la commande web
  Article_Id          varchar(40),                           -- Référence de l'article
  Article_Web_Id      int unsigned default 0,                -- Reference de l'article sur le site
  Designation         varchar(100) default '',               -- designation de l'article
  Quantite            decimal(10,3) unsigned default 1,      -- quantité
  Prix                decimal(14,4),                         -- prix unitaire hors taxe
  Taux_TVA            decimal(4,2),                          -- tva sur l'article
  Code_TVA            int unsigned default 1,                -- Code TVA
  Ristourne           decimal(5,2) unsigned default 0,       -- % de remise sur l'article
  Commentaire         text,                                  -- Commentaire bas associé à la ligne
  Commentaire_Avant   text,                                  -- Commentaire haut associé à la ligne
  Type_Ligne          char(1) default 'I',                   -- Type de la ligne (S=Stock,I=Indépendante)
  Rank                int unsigned not null,                 -- Numéro d'ordre dans la commande
  Libelle             varchar(20) default '',                -- Libelle supplémentaire
  Code_Stats          varchar(10) default '',                -- code de statistiques
  Unite               char(3) default 'U',                   -- unité de vente
  Nb_Pieces           int unsigned default 0,                -- nombre de pièces par quantité
  primary key(Com_Web_Id, Rank),
  unique(Detail_Id),
  index idx_code_tva (Code_TVA),
  index idx_article_id (Article_Id),
  constraint cfk_article_commande_web_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA),
  constraint cfk_article_commande_web_com_web_id foreign key (Com_Web_Id) references COMMANDE_WEB (Com_Web_Id)
) engine=InnoDB;


create table ARTICLE_COMMANDE_WEB_TEMP (
  Com_Web_Id         int unsigned not null,                 -- identifiant de la commande web
  Article_Id         varchar(40),                           -- Référence de l'article
  Article_Web_Id     int unsigned default 0,                -- Reference de l'article sur le site
  Designation        varchar(100) default '',               -- designation de l'article
  Quantite           decimal(10,3) unsigned default 1,      -- quantité
  Prix               decimal(14,4),                         -- prix unitaire hors taxe
  Taux_TVA           decimal(4,2),                          -- tva sur l'article
  Code_TVA           int unsigned default 1,                -- Code TVA
  Ristourne          decimal(5,2) unsigned default 0,       -- % de remise sur l'article
  Commentaire        text,                                  -- Commentaire bas associé à la ligne
  Commentaire_Avant  text,                                  -- Commentaire haut associé à la ligne
  Type_Ligne         char(1),                               -- Type de la ligne (S=Stock,I=Indépendante)
  Rank               int unsigned not null,                 -- Numéro d'ordre dans la commande
  Libelle            varchar(20) default '',                -- Libelle supplémentaire
  Code_Stats         varchar(10) default '',                -- code de statistiques
  Unite               char(3) default 'U',                  -- unité de vente
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  primary key(Com_Web_Id, Rank)
) engine=InnoDB;


create table ARTICLE_COMMANDE_WEB_MOD (
  Com_Web_Id         int unsigned not null,                 -- identifiant de la commande web
  Rank               int unsigned not null,                 -- Numéro d'ordre dans la commande
  Date               bigint unsigned default 0,             -- Date de la modification, 0 si modif en cours
  Article_Id         varchar(40) default '',                -- Référence de l'article
  Article_Web_Id     int unsigned default 0,                -- Reference de l'article sur le site
  Designation        varchar(100) default '',               -- designation de l'article
  Quantite           decimal(10,3) unsigned default 1,      -- quantité
  Prix               decimal(14,4) default 0,               -- prix unitaire hors taxe
  Taux_TVA           decimal(4,2) default 0,                -- tva sur l'article
  Code_TVA           int unsigned default 1,                -- Code TVA
  Ristourne          decimal(5,2) unsigned default 0,       -- % de remise sur l'article
  Commentaire        text,                                  -- Commentaire bas associé à la ligne
  Commentaire_Avant  text,                                  -- Commentaire haut associé à la ligne
  Type_Ligne         char(1) default 'I',                   -- Type de la ligne (S=Stock,I=Indépendante)
  Libelle            varchar(20) default '',                -- Libelle supplémentaire
  Code_Stats         varchar(10) default '',                -- code de statistiques
  Detail_Id          int unsigned default 0,                -- identifiant qui sert pour le BL (Ref_Ligne)
  Unite               char(3) default 'U',                  -- unité de vente
  Nb_Pieces           int unsigned default 0,               -- nombre de pièces par quantité
  primary key(Com_Web_Id, Rank, Date)
) engine=InnoDB;


create table HISTORIQUE_ARTICLE_COMMANDE_WEB (
  Hist_Id             int unsigned not null auto_increment,  -- Identifiant de l'historique
  Com_Web_Id          int unsigned default 0,                -- Référence commande
  Date                bigint unsigned default 0,             -- Date du mouvement
  Login               varchar(15) default '',                -- Login de mise à jour
  Detail_Id           int unsigned default 0,                -- Numéro de la ligne
  Article_Id          varchar(40) default '',                -- Référence article
  Libelle             text,                                  -- Libellé du mouvement
  primary key(Hist_Id)
) engine=InnoDB;


create table MAJ_AUTO (
  Maj_Id          int unsigned not null auto_increment,  -- identifiant de la maj
  Site_Id         int not null,                          -- id du site
  Type_Maj        varchar(5) not null,                   -- {COM, STOCK, PRIX, INFO, STAT}
  Type_Periode    varchar(7),                            -- {MINUTE,HEURE,JOUR,SEMAINE}
  Valeur_Periode  varchar(26),                           -- 1-59 pour minute,1-23 pour heure, lun,mar,sam
  Heure_Depart    int default 0,                         -- entre 0h et 23h
  Nom_Service     varchar(20),                           -- utilisé par quartz (Job name)
  Groupe_Service  varchar(20),                           -- utilisé par quartz
  Derniere_Maj    bigint default 0,                      -- date de dernière maj auto
  primary key(Maj_Id)
) engine=InnoDB;


create table DEVIS_COMMANDE_CLIENT (
  Devis_Id      int unsigned not null,     -- Identifiant de devis
  Com_Id        int unsigned not null,     -- Identifiant de commande client
  primary key (Devis_Id, Com_Id)
) engine=InnoDB;

create table DEVIS_FACTURE (
  Devis_Id      int unsigned not null,     -- Identifiant de devis
  Facture_Id    int unsigned not null,     -- Identifiant de facture
  primary key (Devis_Id, Facture_Id)
) engine=InnoDB;

create table DEVIS_COMMANDE_WEB (
  Devis_Id      int unsigned not null,     -- Identifiant de devis
  Com_Web_Id    int unsigned not null,     -- Identifiant de commande web
  primary key (Devis_Id, Com_Web_Id)
) engine=InnoDB;




-- ------------------------- COMMERCIAL ---------------------------------------------------------

create table FICHE_COMMERCIAL (
	Commercial_Id     int unsigned not null,        -- identification du commercial
  Code_Commercial   varchar(15) not null,         -- code d'identification du commercial
  Nom               varchar(30) default '',       -- nom du commercial
  Prenom            varchar(20) default '',       -- Prénom du commercial
  Civilite          tinyint unsigned default 0,   -- Civilité (M=1,Mme=2,Mlle=3)
  Adresse           varchar(80) default '',       -- Adresse physique (obligatoire)
  Comp_Adresse      varchar(50) default '',       -- Adresse 2
  Code_Postal       varchar(10) default '',       -- Code postal
  Ville             varchar(50) default '',       -- ville de résidence du commercial
  Code_Pays         char(2) default 'FR',         -- code pays
  Secteur           varchar(50) default '',       -- secteur d'activité
  Tel_1             varchar(20) default '',       -- telephone n°1
  Tel_2             varchar(20) default '',       -- telephone n°2
  Tel_3             varchar(20) default '',       -- telephone n°3
  Fax_1             varchar(20) default '',       -- fax n°1
  Fax_2             varchar(20) default '',       -- fax n°2
  Email_1           varchar(60) default '',       -- email n°1
  Email_2           varchar(60) default '',       -- email n°2
  Supprime          tinyint default 0,            -- suppression virtuelle(plus visible)
  Util_C            int unsigned not null,        -- createur du commercial dans la base de données
  Date_Creation     bigint unsigned default 0,    -- date de création du commercial
  Util_M            int unsigned not null,        -- dernière personne à avoir modifié le commercial
  Date_Maj          bigint unsigned default 0,    -- date de la dernière modification
  primary key(Commercial_Id),
  unique(Code_Commercial)
) engine=InnoDB;


create table REGLE_COMMISSION (
  Commission_Id    int unsigned auto_increment,    -- identifiant de la commission
  Commercial_Id    int unsigned not null,          -- code commercial
  Type             char(3) default 'A',            -- type de commission (G globale, A un article, FA une famille et sous-famille, MQ une marque, HS tous les articles hors-stock, AS tous les articles en stock)
  Base_Calcul      char(3) default 'CA',           -- base de calcul de la commission(CA , CA encaissé, M marge, Q quantité)
  Article_Id       varchar(40) default '',         -- identifiant de l'article si jamais la base de calcul est basée dessus
  Famille          varchar(40) default '',         -- nom de la famille en cas d'application d'une commission dessus
  Sous_Famille     varchar(40) default '',         -- nom de la sous-famille en cas d'application d'une commission dessus
  Marque           varchar(40) default '',         -- nom de la marque en cas d'application d'une commission dessus
  Mode_Calcul_Qte  char(3) default 'P',            -- mode de calcul de la commission en quantité (P pourcentage, E euros)
  Base_Calcul_Qte  char(3) default 'CA',           -- base de calcul de la commission en quantité (CA, M marge)
  Periode_Deb      bigint unsigned default 0,      -- date de mise en service de la règle
  Periode_Fin      bigint unsigned default 0,      -- date de fin de mise en service de la règle (0 = toujours active)
  primary key(Commission_Id),
	index idx_commercial_id (Commercial_Id),
	constraint cfk_regle_commission_commercial_id foreign key (Commercial_Id) references FICHE_COMMERCIAL (Commercial_Id)
) engine=InnoDB;


create table TRANCHE_COMMISSION (
  Tranche_Id     int unsigned not null auto_increment,  -- identifiant de la tranche
  Commission_Id  int unsigned not null,                 -- identifiant de la commission
  Borne_Inf      decimal(14,2) unsigned default 0,      -- borne inférieure de la tranche
  Borne_Sup      decimal(14,2) unsigned default 0,      -- borne supérieure de la tranche
  Valeur         decimal(14,2) unsigned default 0,      -- Valeur appliquée à la commission si appartient à cette tranche
  primary key(Tranche_Id),
	index idx_commission_id (Commission_Id),
	constraint cfk_tranche_commission_commission_id foreign key (Commission_Id) references REGLE_COMMISSION (Commission_Id)
) engine=InnoDB;


create table COMMISSIONNEMENT (
  Commissionnement_Id  int unsigned not null auto_increment,   -- identifiant du commissionnement
  Date_Commission      bigint unsigned default 0,              -- date d'édition du commissionnement
  Periode_Deb          bigint unsigned default 0,              -- date de début de la période de commissionnement
  Periode_Fin          bigint unsigned default 0,              -- date de fin de la période de commissionnement
  Total_HT             decimal(14,2) default 0,                -- chiffre d'affaires HT généré sur la période
  Total_TTC            decimal(14,2) default 0,                -- chiffre d'affaires TTC généré sur la période
  Montant_Commission   decimal(14,2) default 0,                -- montant de la commission sur la période
  Montant_Ajustement   decimal(14,2) default 0,                -- valeur de l'ajustement
  Commentaires         text,                                   -- commentaires
  Filtre               char(3) default 'A',                    -- filtre d'édition
  Util_Resp            int unsigned not null,                  -- identifiant de l'utilisateur qui génère le commissionnement
  Commercial_Id        int unsigned not null,                  -- code du commercial concerné par la commission
  primary key(Commissionnement_Id),
  index idx_commercial_id (Commercial_Id),
  constraint cfk_commissionnement_commercial_id foreign key (Commercial_Id) references FICHE_COMMERCIAL (Commercial_Id)
) engine=InnoDB;


create table LIGNE_COMMISSIONNEMENT (
  Commissionnement_Id  int unsigned not null,                  -- identifiant du commissionnement
  Rank                 int unsigned not null,                  -- Numéro d'ordre dans le commissionnement
  Ref_Client           varchar(10) default '',                 -- Référence du client
  Ref_Article          varchar(40) default '',                 -- Référence de l'article
  Marque               varchar(40) default '',                 -- Marque
  Famille              varchar(40) default '',                 -- Famille
  Sous_Famille         varchar(40) default '',                 -- Sous famille
  Detail_Commission    tinyint unsigned default 0,             -- Detail possible : 0 non, 1 oui
  Ref_Facture          varchar(11) default '',                 -- Numéro de facture
  Type_Ligne           char(3) default 'P',                    -- type ligne : P période, V vente dans la période, D détail de la vente
  Date_Deb             bigint unsigned default 0,              -- date de début de la période de commissionnement
  Date_Fin             bigint unsigned default 0,              -- date de fin de la période de commissionnement
  Total_Commission     decimal(14,2) default 0,                -- montant de la commission
  primary key(Commissionnement_Id, Rank),
	constraint cfk_ligne_commissionnement_commissionnement_id foreign key (Commissionnement_Id) references COMMISSIONNEMENT (Commissionnement_Id)
) engine=InnoDB;


-- ------------------------- ASSOCIATION DE FICHIERS -------------------------------------------------------


create table FICHIER_ASSOC (
  Fichier_Assoc_Id  int unsigned not null auto_increment,  -- identifiant du fichier
  Document_Id       varchar(20) not null default '',       -- code du document
  Type              varchar(20) default '',                -- type de document
  Lien              varchar(255) default '',               -- lien complet vers le fichier
  Nom               varchar(255) default '',               -- nom du fichier
  primary key(Fichier_Assoc_Id)
) engine=InnoDB;


-- ------------------------- GESTION MULTI-SITES MULTI-STOCKS ----------------------------------------------

create table SITE (
  Site_Id           int unsigned not null auto_increment,  -- identifiant du site
  Intitule          varchar(30) default '',                -- intitulé du site
  Denomination      varchar(50) default '',                -- dénomination sociale
  Adresse_1         varchar(80) default '',                -- ligne d'adresse 1
  Adresse_2         varchar(50) default '',                -- ligne d'adresse 2
  Adresse_3         varchar(50) default '',                -- ligne d'adresse 3
  Code_Postal       varchar(10) default '',                -- code postal
  Ville             varchar(50) default '',                -- ville
  Code_Pays         char(2) default 'FR',                  -- code pays
  Tel               varchar(20) default '',
  Fax               varchar(20) default '',
  Email             varchar(64) default '',
  Numero_TVA        varchar(14) default '',                -- Numéro de TVA intracommunautaire
  Stock_Defaut      int unsigned default 0,                -- identifiant du stock par défaut relié à ce site
  primary key(Site_Id)
) engine=InnoDB;


create table STOCK (
  Stock_Id          int unsigned not null auto_increment,  -- identifiant du stock
  Intitule          varchar(30) default '',                -- intitulé du stock
  Denomination      varchar(50) default '',                -- dénomination sociale
  Adresse_1         varchar(80) default '',                -- ligne d'adresse 1
  Adresse_2         varchar(50) default '',                -- ligne d'adresse 2
  Adresse_3         varchar(50) default '',                -- ligne d'adresse 3
  Code_Postal       varchar(10) default '',                -- code postal
  Ville             varchar(50) default '',                -- ville
  Code_Pays         char(2) default 'FR',                  -- code pays
  primary key(Stock_Id)
) engine=InnoDB;


create table STATUT_MVT_STOCK (
  Statut_Id         int unsigned not null auto_increment,  -- Identifiant du statut
  Libelle           varchar(30) default '',                -- Libellé du statut
  primary key(Statut_Id)
) engine=InnoDB;


-- ------------------------- INVENTAIRE --------------------------------------------------------------------


create table INVENTAIRE (
  Inventaire_Id     int unsigned not null auto_increment,   -- identifiant de l'inventaire
  Type_Inventaire   char(1) default 'C',                    -- type inventaire (P=Partiel, C=Complet)
  Marque            varchar(40) default '',                 -- critère marque
  Famille           varchar(40) default '',                 -- critère famille
  Sous_Famille      varchar(40) default '',                 -- critère sous-famille
  Etat              char(1) default 'O',                    -- état de l'inventaire (O=Ouvert, C=Cloturé, A=Annulé)
  Date_Cloture      bigint unsigned default 0,              -- date de cloture
  Date_Ouverture    bigint unsigned default 0,              -- date d'ouverture
  Date_Annulation   bigint unsigned default 0,              -- date d'annulation
  primary key(Inventaire_Id)
) engine=InnoDB;


create table ARTICLE_INVENTAIRE (
  Ligne_Id          int unsigned not null auto_increment,  -- identifiant de la ligne
  Article_Id        varchar(40) not null,                  -- identifiant de l'article
  Inventaire_Id     int unsigned not null,                 -- identifiant de l'inventaire
  Qte_Theorique     decimal(12,2) default 0,               -- quantité théorique avant inventaire
  Qte_Inventaire    decimal(12,2) default 0,               -- quantité inventoriée
  Valide            tinyint unsigned default 0,            -- inventaire effectué
	Valorisation      decimal(14,2) unsigned default 0,      -- Valorisation unitaire de la quantité inventoriée
  primary key(Ligne_Id),
  unique(Inventaire_Id, Article_Id)
) engine=InnoDB;



-- ------------------------- SUIVI D'ACTIVITE --------------------------------------------------------------


create table PARAMETRES (
  Activite char(1) not null,       -- V pour vente de marchandises, P pour production, D pour les deux
  Marge_Com int,                   -- Marge comerciale, en pourcentage
  Marge_Prod int,                  -- Marge brute de production, en pourcentages
  Inventaire_Permanent char(1),    -- L'inventaire est-il permanent ? y pour yes, n pour no
  Coefficient_Saisonnier char(1)   -- Y a t-il des coefficients ssaisonniers ? y pour yes, n pour no
) engine=InnoDB;


create table COEF_SAISONS (
  Mois int  not null,          -- numéro de mois, de 1..12 pour janvier..decembre
  Coefficient int not null,    -- pourcentage correspondant au mois
  primary key(Mois)
) engine=InnoDB;


create table SAUVE_MC (
  Id_Budget int not null,      -- Identifiant du budget
  Mois int not null,           -- Mois concernant la marge
  Annee int not null,          -- Annee concernant la marge
  Marge int not null,          -- Marge en pourcentage
  primary key(Id_Budget,Mois, Annee)
) engine=InnoDB;


create table SAUVE_MP (
  Id_Budget int not null,      -- Identifiant du budget
  Mois int not null,           -- Mois concernant la marge
  Annee int not null,          -- Annee concernant la marge
  Marge int not null,          -- Marge en pourcentage
  primary key(Id_Budget,Mois, Annee)
) engine=InnoDB;


create table SAUVE_SAISIES (
  Id_Budget      int not null,            -- Identifiant du budget
  Numero_Compte  varchar(8) not null,     -- Numéro de compte
  Mois           int not null,            -- Mois concernant la marge
  Annee          int not null,            -- Annee concernant la marge
  Montant        bigint not null,         -- Montant à sauvegarder
  primary key(Id_Budget,Numero_Compte, Mois, Annee)
) engine=InnoDB;


create table SAUVE_RESULTATS (
  Id_Budget  int not null,       -- Identifiant du budget
  Libelle    char(2) not null,   -- CA pour chiffre d'affaires, AD pour achats directs et sous traitance,
                                 -- CP pour charges de personnel, CE pour charges externes
                                 -- IT pour autres impots et taxes, AM pour amortissements, CF pour charges financieres
  Mois       int not null,       -- Mois concernant la marge
  Annee      int not null,       -- Annee concernant la marge
  Montant    bigint not null,    -- Montant à sauvegarder
  primary key(Id_Budget,Libelle, Mois, Annee)
) engine=InnoDB;


create table BUDGET (
  Id_Budget        int not null,     -- Identifiant du budget
  Mois_Debut       int not null,     -- Mois de début du budget
  Annee_Debut      int not null,     -- Annee de début du budget
  Mois_Fin         int not null,     -- Mois de fin du budget
  Annee_Fin        int not null,     -- Annee de fin du budget
  Mois_Debut_Ref   int not null,     -- Mois de reférence de début du budget
  Annee_Debut_Ref  int not null,     -- Annee de reférence de début du budget
  Mois_Fin_Ref     int not null,     -- Mois de reférence de fin du budget
  Annee_Fin_Ref    int not null,     -- Annee de reférence de fin du budget
  primary key(Id_Budget)
) engine=InnoDB;



-- ------------------------- RAPPROCHEMENT BANCAIRE --------------------------------------------------------

create table DERNIER_RB_JOURNAL (
  Code_Journal  char(3) not null,             -- Code journal
  Periode       bigint unsigned default 0,    -- Période du dernier rapprochement bancaire pour ce journal
  Clos          char(1) default 'n',          -- Dernier RB clos ou non (oui='y' non='n')
  primary key(Code_Journal)
) engine=InnoDB;



-- ------------------------- CHAMPS PERSONNALISES ----------------------------------------------------------

create table CHAMP_PERSO (
  Champ_Perso_Id  int unsigned not null auto_increment,   -- Code du champ perso
  Libelle         varchar(50) default '',                 -- Libellé du champ perso
  Type            char(2) default 'CC',                   -- Type du champ (CC: case à cocher, ZT: zone de texte, CT: champ texte,
                                                          -- ND: champ numérique décimal, NE: champ numérique entier, LD: liste déroulante, BR: bouton radio, LP: liste perso)
  Famille         varchar(40) default '',                 -- Identifiant de famille d'article
  Sous_Famille    varchar(40) default '',                 -- Identifiant de sous-famille d'article
  primary key(Champ_Perso_Id)
) engine=InnoDB;


create table OPTION_CHAMP_PERSO (
  Liste_Id        int unsigned not null auto_increment,   -- Code de la valeur d'une liste
  Libelle         varchar(50) default '',                 -- Libellé de l'élément de liste
  Valeur          varchar(50) default '',                 -- Valeur de l'élément
  Champ_Perso_Id  int unsigned not null,                  -- Code du champ perso
  primary key(Liste_Id)
) engine=InnoDB;


create table CHAMP_PERSO_ARTICLE (
  Champ_Perso_Id  int unsigned not null,                  -- Code du champ perso
  Article_Id      char(40) not null,                      -- Identifiant fiche article
  Valeur          varchar(50) default '',                 -- Valeur de l'élément
  primary key(Champ_Perso_Id, Article_Id)
) engine=InnoDB;


create table COLONNE_LISTE_PERSO (
  Colonne_Id      int unsigned not null auto_increment,   -- Code de la colonne
  Libelle         varchar(50) default '',                 -- Libellé de la colonne
  Champ_Perso_Id  int unsigned not null,                  -- Code du champ perso
  primary key(Colonne_Id)
) engine=InnoDB;


create table LIGNE_LISTE_PERSO_ARTICLE (
  Ligne_Id        int unsigned not null auto_increment,   -- Code de la ligne
  Champ_Perso_Id  int unsigned not null,                  -- Code du champ perso
  Article_Id      char(40) not null,                      -- Identifiant fiche article
  primary key(Ligne_Id)
) engine=InnoDB;


create table CELLULE_LISTE_PERSO_ARTICLE (
  Ligne_Id        int unsigned not null,                  -- Code de la ligne
  Colonne_Id      int unsigned not null,                  -- Code de la colonne
  Valeur          varchar(50) default '',                 -- Valeur de l'élément
  primary key(Ligne_Id, Colonne_Id)
) engine=InnoDB;

create table PARAM_PAYS_WEB (
  Code_Pays         char(2) not null,                   -- Code pays de l'UE
  Site_Id           int unsigned default null,          -- id du site Physique
  primary key(Code_Pays)
) engine=InnoDB;


-- ------------------------- SUIVI DES N° LOT --------------------------------------------------------------

create table NUM_LOT_BLOQUE (
  Num_Lot             varchar(15) default '',               -- numéro de lot
  primary key(Num_Lot)
) engine=InnoDB;


-- ------------------------------- MENTIONS -----------------------------------------------------------------

create table MENTION_DEVIS (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Devis_Id           int unsigned not null,                -- Identifiant du devis
  primary key(Mention_Id, Devis_Id),
  constraint cfk_mention_devis_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_devis_devis_id foreign key (Devis_Id) references DEVIS (Devis_Id)
) engine=InnoDB;


create table MENTION_AFFAIRE (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Affaire_Id         int unsigned not null,                -- Identifiant de l'affaire
  primary key(Mention_Id, Affaire_Id),
  constraint cfk_mention_affaire_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_affaire_affaire_id foreign key (Affaire_Id) references AFFAIRE (Affaire_Id)
) engine=InnoDB;


create table MENTION_COM_CLIENT (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Com_Client_Id      int unsigned not null,                -- Identifiant de la commande client
  primary key(Mention_Id, Com_Client_Id),
  constraint cfk_mention_com_client_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_com_client_com_client_id foreign key (Com_Client_Id) references COM_CLIENT (Com_Id)
) engine=InnoDB;


create table MENTION_BON_LIVRAISON (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Bon_Id             int unsigned not null,                -- Identifiant du bon de livraison
  primary key(Mention_Id, Bon_Id),
  constraint cfk_mention_bon_livraison_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_bon_livraison_bon_id foreign key (Bon_Id) references BON_LIVRAISON (Bon_Id)
) engine=InnoDB;


create table MENTION_COMMANDE_WEB (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Com_Web_Id        int unsigned not null,                 -- Identifiant de la commande web
  primary key(Mention_Id, Com_Web_Id),
  constraint cfk_mention_commande_web_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_commande_web_com_web_id foreign key (Com_Web_Id) references COMMANDE_WEB (Com_Web_Id)
) engine=InnoDB;


create table MENTION_FACTURE (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Facture_Id         int unsigned not null,                -- Identifiant de la facture
  primary key(Mention_Id, Facture_Id),
  constraint cfk_mention_facture_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_facture_facture_id foreign key (Facture_Id) references FACTURE (Facture_Id)
) engine=InnoDB;


create table MENTION_AVOIR (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Avoir_Id           int unsigned not null,                -- Identifiant de l'avoir
  primary key(Mention_Id, Avoir_Id),
  constraint cfk_mention_avoir_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_avoir_avoir_id foreign key (Avoir_Id) references AVOIR (Avoir_Id)
) engine=InnoDB;


create table MENTION_FACTURE_FOURNISSEUR (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Facture_Id         int unsigned not null,                -- Identifiant de la facture
  primary key(Mention_Id, Facture_Id),
  constraint cfk_mention_facture_fournisseur_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_facture_fournisseur_facture_id foreign key (Facture_Id) references FACTURE_FOURNISSEUR (Facture_Id)
) engine=InnoDB;


create table MENTION_AVOIR_FOURNISSEUR (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Avoir_Id           int unsigned not null,                -- Identifiant de l'avoir
  primary key(Mention_Id, Avoir_Id),
  constraint cfk_mention_avoir_fournisseur_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_avoir_fournisseur_avoir_id foreign key (Avoir_Id) references AVOIR_FOURNISSEUR (Avoir_Id)
) engine=InnoDB;


create table MENTION_COMMANDE_FOURNISSEUR (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Commande_Id        int unsigned not null,                -- Identifiant de la commande
  primary key(Mention_Id, Commande_Id),
  constraint cfk_mention_commande_fournisseur_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_commande_fournisseur_commande_id foreign key (Commande_Id) references COMMANDE (Commande_Id)
) engine=InnoDB;


create table MENTION_BON_RECEPTION (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Bon_Id             int unsigned not null,                -- Identifiant du bon de réception
  primary key(Mention_Id, Bon_Id),
  constraint cfk_mention_bon_reception_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_bon_reception_bon_id foreign key (Bon_Id) references BON_RECEPTION (BR_Id)
) engine=InnoDB;


create table MENTION_ABONNEMENT (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Abonnement_Id      int unsigned not null,                -- Identifiant de l'abonnement
  primary key(Mention_Id, Abonnement_Id),
  constraint cfk_mention_abonnement_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_abonnement_abonnement_id foreign key (Abonnement_Id) references ABONNEMENT (Abonnement_Id)
) engine=InnoDB;


create table MENTION_MODELE (
  Mention_Id         int unsigned not null,                -- Identifiant de la mention
  Modele_Id          int unsigned not null,                -- Identifiant du modèle
  primary key(Mention_Id, Modele_Id),
  constraint cfk_mention_modele_mention_id foreign key (Mention_Id) references LISTE_MENTIONS (Mention_Id),
  constraint cfk_mention_modele_modele_id foreign key (Modele_Id) references MODELE (Modele_Id)
) engine=InnoDB;


-- ------------------- Nouvelles tables compta --------------------------------------------------------


create table COMPTE (
  Numero_Compte    char(8) not null,            -- Numéro de compte
  Intitule         varchar(100) default '',     -- Intitulé du compte
  Type_Compte      char(1) default 'G',         -- Type de compte (C=Client, F=Fournisseur, G=Généraux)
  Code_TVA         int unsigned default 1,      -- Code de TVA applicable
  Centraliser      tinyint unsigned default 0,  -- Centraliser le compte (oui/non)
  Cumul_Journal    tinyint unsigned default 0,  -- Cumul en pied de journal (oui/non)
  Detail_Cloture   tinyint unsigned default 1,  -- Détail en cloture (oui/non)
  Date_Creation    bigint unsigned default 0,   -- Date de création du compte
	Collectif        char(8) default '',          -- Numéro de compte collectif
	Contrepartie     char(8) default '',          -- Numéro de compte de contrepartie
	Tva_Enc_Dec      tinyint unsigned default 0,  -- Tva sur encaissement/décaissement (oui/non)
  primary key(Numero_Compte),
	index idx_code_tva (Code_TVA),
  constraint cfk_compte_code_tva foreign key (Code_TVA) references TAUX_TVA (Code_TVA)
) engine=InnoDB;


create table JOURNAL (
  Code_Journal     char(3) not null,        -- Code d'identification du journal
  Intitule         varchar(50) default '',  -- Libellé du journal
  Type_Journal     char(2) default 'OD',    -- Type du journal (AC=achat, VE=vente, OD=operations diverses, TR=tresorerie, AN=a nouveau)
  Contrepartie     char(8) default '',      -- Numéro de compte de contre-partie par défaut
  primary key(Code_Journal)
) engine=InnoDB;



-- ---------------------- RAPPROCHEMENT BANCAIRE ------------------------------------------------------


create table RAPPROCHEMENT (
  Rappro_Id              int unsigned not null auto_increment,  -- Identifiant du rapprochement
  Date_Rappro            bigint unsigned default 0,             -- Date de début du rapprochement
  Num_Releve             varchar(15) default '',                -- Numéro du relevé bancaire
  Date_Releve            bigint unsigned default 0,             -- Date du relevé bancaire
  Solde_Releve           decimal(16,2) default 0,               -- Solde du relevé bancaire
  Date_Cloture           bigint unsigned default 0,             -- Date de cloture du rapprochement
  Type_Rappro            char(1) default 'C',                   -- Type de rapprochement (C=par Compte, J=par Journal)
  Code_Journal           char(3) default null,                  -- Code journal si rapprochement par journal
  Numero_Compte          char(8) not null,                      -- Numéro de compte (Contrepartie si rappro par journal, Compte à utiliser sinon)
	Solde_Final            decimal(16,2) default 0,               -- Solde final
  primary key(Rappro_Id),
  index idx_code_journal (Code_Journal),
  index idx_numero_compte (Numero_Compte),
	constraint cfk_rapprochement_numero_compte foreign key (Numero_Compte) references COMPTE (Numero_Compte),
	constraint cfk_rapprochement_code_journal foreign key (Code_Journal) references JOURNAL (Code_Journal)
) engine=InnoDB;


create table LIGNE_RAPPROCHEMENT (
  Ligne_Rappro_Id        int unsigned not null auto_increment,  -- Identifiant de la ligne de rapprochement
  Rappro_Id              int unsigned not null,                 -- Identifiant du rapprochement
  Op_Id                  int unsigned not null,                 -- Identifiant de l'opération
  Pointage               tinyint unsigned default 0,            -- Pointage de la ligne (oui/non)
	Nom_Base               varchar(16) default '',                -- Nom de la base d'exercice
  primary key(Ligne_Rappro_Id),
  index idx_op_id (Op_Id),
  index idx_rappro_id (Rappro_Id),
  constraint cfk_ligne_rapprochement_rappro_id foreign key (Rappro_Id) references RAPPROCHEMENT (Rappro_Id)
) engine=InnoDB;


create table LIGNE_RB (
  Ligne_RB_Id        int unsigned not null auto_increment,  -- Identifiant de la ligne de RB
  Rappro_Id          int unsigned not null,                 -- Identifiant du rapprochement
  Montant_D          decimal(14,2) unsigned default 0,      -- Montant de la ligne si débit sinon 0
  Montant_C          decimal(14,2) unsigned default 0,      -- Montant de la ligne si crédit sinon 0
  Libelle            varchar(100) default '',               -- Libellé de la ligne
	Pointage           tinyint unsigned default 0,            -- Pointage de la ligne (oui/non)
  Date_Op            bigint unsigned default 0,             -- Date opération RB
  primary key(Ligne_RB_Id),
	index idx_rappro_id (Rappro_Id),
  constraint cfk_ligne_rb_rappro_id foreign key (Rappro_Id) references RAPPROCHEMENT (Rappro_Id)
) engine=InnoDB;



