OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Rev 90 | Rev 94 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 90 Rev 93
Line 11... Line 11...
11
 * When distributing the software, include this License Header Notice in each file.
11
 * When distributing the software, include this License Header Notice in each file.
12
 */
12
 */
13
 
13
 
14
 package org.openconcerto.erp.config;
14
 package org.openconcerto.erp.config;
15
 
15
 
-
 
16
import org.openconcerto.erp.core.sales.order.ui.EtatCommandeClient;
16
import org.openconcerto.erp.core.sales.quote.element.EtatDevisSQLElement;
17
import org.openconcerto.erp.core.sales.quote.element.EtatDevisSQLElement;
17
import org.openconcerto.erp.modules.ModuleManager;
18
import org.openconcerto.erp.modules.ModuleManager;
18
import org.openconcerto.erp.modules.ModuleReference;
19
import org.openconcerto.erp.modules.ModuleReference;
19
import org.openconcerto.sql.changer.convert.AddFK;
20
import org.openconcerto.sql.changer.convert.AddFK;
20
import org.openconcerto.sql.changer.convert.ChangeIDToInt;
21
import org.openconcerto.sql.changer.convert.ChangeIDToInt;
Line 164... Line 165...
164
                                            final SQLCreateTable createDevise = new SQLCreateTable(table.getDBRoot(), "DEVISE");
165
                                            final SQLCreateTable createDevise = new SQLCreateTable(table.getDBRoot(), "DEVISE");
165
                                            createDevise.addVarCharColumn("CODE", 128);
166
                                            createDevise.addVarCharColumn("CODE", 128);
166
                                            createDevise.addVarCharColumn("NOM", 128);
167
                                            createDevise.addVarCharColumn("NOM", 128);
167
                                            createDevise.addVarCharColumn("LIBELLE", 128);
168
                                            createDevise.addVarCharColumn("LIBELLE", 128);
168
                                            createDevise.addVarCharColumn("LIBELLE_CENT", 128);
169
                                            createDevise.addVarCharColumn("LIBELLE_CENT", 128);
169
                                            createDevise.addColumn("TAUX", "numeric(16,8) default 1");
170
                                            createDevise.addDecimalColumn("TAUX", 16, 8, BigDecimal.ONE, false);
-
 
171
                                            createDevise.addDecimalColumn("TAUX_COMMERCIAL", 16, 8, BigDecimal.ONE, false);
170
                                            ds.execute(createDevise.asString());
172
                                            ds.execute(createDevise.asString());
171
 
-
 
172
                                            insertUndef(createDevise);
173
                                            insertUndef(createDevise);
173
 
-
 
174
                                            conf.getRoot().getSchema().updateVersion();
174
                                            conf.getRoot().getSchema().updateVersion();
175
 
-
 
176
                                            return null;
175
                                            return null;
177
                                        }
176
                                        }
178
                                    });
177
                                    });
179
                                } catch (Exception ex) {
178
                                } catch (Exception ex) {
180
                                    throw new IllegalStateException("Erreur lors de la création de la table DEVISE", ex);
179
                                    throw new IllegalStateException("Erreur lors de la création de la table DEVISE", ex);
181
                                }
180
                                }
-
 
181
                            } else if (!table.getDBRoot().getTable("DEVISE").contains("TAUX_COMMERCIAL")) {
-
 
182
                                final SQLTable tDevise = conf.getRoot().getTable("DEVISE");
-
 
183
                                final AlterTable alterDevise = new AlterTable(tDevise);
-
 
184
                                alterDevise.addDecimalColumn("TAUX_COMMERCIAL", 16, 8, BigDecimal.ONE, false);
-
 
185
                                ds.execute(alterDevise.asString());
-
 
186
                                tDevise.getSchema().updateVersion();
182
                            }
187
                            }
183
 
188
 
184
                            if (!table.getDBRoot().contains("TYPE_MODELE")) {
189
                            if (!table.getDBRoot().contains("TYPE_MODELE")) {
185
                                System.out.println("InstallationPanel.InstallationPanel() ADD TYPE_MODELE");
190
                                System.out.println("InstallationPanel.InstallationPanel() ADD TYPE_MODELE");
186
                                try {
191
                                try {
Line 296... Line 301...
296
                                            updateToV1Dot2(root);
301
                                            updateToV1Dot2(root);
297
                                            updateToV1Dot3(root);
302
                                            updateToV1Dot3(root);
298
                                            updateToV1Dot4(root);
303
                                            updateToV1Dot4(root);
299
                                            updateStyle(root);
304
                                            updateStyle(root);
300
                                            createBanque(root);
305
                                            createBanque(root);
301
                                            createAssocAnalytique(root);
306
                                            createAssocAnalytique(root, conf);
302
                                            updateStock(root);
307
                                            updateStock(root);
303
                                            updateVille(root.getTable("ADRESSE"));
308
                                            updateVille(root.getTable("ADRESSE"));
304
                                            return null;
309
                                            return null;
305
                                        }
310
                                        }
306
                                    });
311
                                    });
Line 659... Line 664...
659
    }
664
    }
660
 
665
 
661
    private void addContact(DBRoot root) throws SQLException {
666
    private void addContact(DBRoot root) throws SQLException {
662
 
667
 
663
        List<String> tables = Arrays.asList("AVOIR_CLIENT", "DEVIS", "BON_DE_LIVRAISON", "COMMANDE_CLIENT", "SAISIE_VENTE_FACTURE");
668
        List<String> tables = Arrays.asList("AVOIR_CLIENT", "DEVIS", "BON_DE_LIVRAISON", "COMMANDE_CLIENT", "SAISIE_VENTE_FACTURE");
664
        for (String tableName : tables) {
-
 
665
 
-
 
666
            final SQLTable table = root.getTable(tableName);
-
 
667
            final SQLTable tableContact = root.findTable("CONTACT");
669
        final SQLTable tableContact = root.findTable("CONTACT");
668
            if (!table.contains("ID_CONTACT")) {
670
        final SQLTable tableDpt = root.findTable("CLIENT_DEPARTEMENT");
669
 
-
 
670
                final SQLDataSource dataSource = root.getDBSystemRoot().getDataSource();
671
        final SQLDataSource dataSource = root.getDBSystemRoot().getDataSource();
-
 
672
        for (String tableName : tables) {
-
 
673
            boolean update = false;
-
 
674
            final SQLTable table = root.getTable(tableName);
671
                final AlterTable alterEcheance = new AlterTable(table);
675
            final AlterTable alterEcheance = new AlterTable(table);
-
 
676
 
-
 
677
            if (!table.contains("ID_CONTACT")) {
672
                alterEcheance.addForeignColumn("ID_CONTACT", tableContact);
678
                alterEcheance.addForeignColumn("ID_CONTACT", tableContact);
-
 
679
                update = true;
-
 
680
            }
-
 
681
 
-
 
682
            if (!table.contains("ID_CLIENT_DEPARTEMENT")) {
-
 
683
                alterEcheance.addForeignColumn("ID_CLIENT_DEPARTEMENT", tableDpt);
-
 
684
                update = true;
-
 
685
            }
-
 
686
            if (update) {
673
                dataSource.execute(alterEcheance.asString());
687
                dataSource.execute(alterEcheance.asString());
674
                table.getSchema().updateVersion();
688
                table.getSchema().updateVersion();
675
            }
689
            }
-
 
690
 
676
        }
691
        }
677
    }
692
    }
678
 
693
 
679
    private void addForeignKeyFactureOnEcheance(DBRoot root) {
694
    private void addForeignKeyFactureOnEcheance(DBRoot root) {
680
 
695
 
Line 759... Line 774...
759
            root.refetchTable(tableVFElt.getName());
774
            root.refetchTable(tableVFElt.getName());
760
        }
775
        }
761
 
776
 
762
    }
777
    }
763
 
778
 
764
    private void createAssocAnalytique(DBRoot root) {
779
    private void createAssocAnalytique(DBRoot root, ComptaPropsConfiguration conf) {
765
 
780
 
766
        if (!root.contains("ASSOCIATION_ANALYTIQUE")) {
781
        if (!root.contains("ASSOCIATION_ANALYTIQUE")) {
767
 
782
 
768
            SQLCreateTable createAssoc = new SQLCreateTable(root, "ASSOCIATION_ANALYTIQUE");
783
            SQLCreateTable createAssoc = new SQLCreateTable(root, "ASSOCIATION_ANALYTIQUE");
769
            createAssoc.addForeignColumn("ID_ECRITURE", root.findTable("ECRITURE", true));
784
            createAssoc.addForeignColumn("ID_ECRITURE", root.findTable("ECRITURE", true));
Line 784... Line 799...
784
            } catch (SQLException ex) {
799
            } catch (SQLException ex) {
785
                throw new IllegalStateException("Erreur lors de la création de la table ASSOCIATION_ANALYTIQUE", ex);
800
                throw new IllegalStateException("Erreur lors de la création de la table ASSOCIATION_ANALYTIQUE", ex);
786
            }
801
            }
787
 
802
 
788
        }
803
        }
-
 
804
        SQLTable tablePoste = root.getTable("POSTE_ANALYTIQUE");
-
 
805
        if (!tablePoste.contains("DEFAULT")) {
-
 
806
            AlterTable a = new AlterTable(tablePoste);
-
 
807
            a.addBooleanColumn("DEFAULT", Boolean.FALSE, false);
-
 
808
            final SQLDataSource ds = root.getDBSystemRoot().getDataSource();
-
 
809
            try {
-
 
810
                ds.execute(a.asString());
-
 
811
                root.refetchTable("POSTE_ANALYTIQUE");
-
 
812
                root.getSchema().updateVersion();
-
 
813
            } catch (SQLException ex) {
-
 
814
                throw new IllegalStateException("Erreur lors de la création du DEFAULT sur la table POSTE_ANALYTIQUE", ex);
-
 
815
            }
-
 
816
        }
789
    }
817
    }
790
 
818
 
791
    private void updateStock(DBRoot root) throws SQLException {
819
    private void updateStock(DBRoot root) throws SQLException {
792
 
820
 
793
        final SQLTable tableStock = root.getTable("STOCK");
821
        final SQLTable tableStock = root.getTable("STOCK");
Line 839... Line 867...
839
 
867
 
840
    }
868
    }
841
 
869
 
842
    private void createBanque(DBRoot root) throws SQLException {
870
    private void createBanque(DBRoot root) throws SQLException {
843
 
871
 
-
 
872
        // Création de la table
844
        if (!root.contains("BANQUE") && !root.contains("BANQUE_POLE_PRODUIT")) {
873
        if (!root.contains("BANQUE") && !root.contains("BANQUE_POLE_PRODUIT")) {
845
 
874
 
846
            SQLCreateTable createBanque = new SQLCreateTable(root, "BANQUE");
875
            SQLCreateTable createBanque = new SQLCreateTable(root, "BANQUE");
847
            createBanque.addForeignColumn("ID_JOURNAL", root.findTable("JOURNAL", true));
876
            createBanque.addForeignColumn("ID_JOURNAL", root.findTable("JOURNAL", true));
848
            createBanque.addVarCharColumn("INFOS", 2048);
877
            createBanque.addVarCharColumn("INFOS", 2048);
Line 863... Line 892...
863
            try {
892
            try {
864
                ds.execute(createBanque.asString());
893
                ds.execute(createBanque.asString());
865
 
894
 
866
                insertUndef(createBanque);
895
                insertUndef(createBanque);
867
                root.refetchTable("BANQUE");
896
                root.refetchTable("BANQUE");
868
                {
-
 
869
                    AlterTable alterElt = new AlterTable(root.getTable("MODE_REGLEMENT"));
-
 
870
                    alterElt.addForeignColumn("ID_BANQUE", root.getTable("BANQUE"));
897
                root.getSchema().updateVersion();
871
 
898
 
872
                    ds.execute(alterElt.asString());
899
            } catch (SQLException ex) {
-
 
900
                throw new IllegalStateException("Erreur lors de la création de la table BANQUE", ex);
873
                }
901
            }
874
 
-
 
875
                {
-
 
876
                    AlterTable alterElt = new AlterTable(root.getTable("CHEQUE_A_ENCAISSER"));
-
 
877
                    alterElt.addForeignColumn("ID_BANQUE", root.getTable("BANQUE"));
-
 
878
                    ds.execute(alterElt.asString());
-
 
879
                }
902
        }
880
 
903
 
-
 
904
        // Création des foreignkeys
881
                {
905
        {
882
                    AlterTable alterElt = new AlterTable(root.getTable("CHEQUE_FOURNISSEUR"));
906
            final SQLDataSource ds = root.getDBSystemRoot().getDataSource();
883
                    alterElt.addForeignColumn("ID_BANQUE", root.getTable("BANQUE"));
907
            List<String> tablesWithBanque = Arrays.asList("MODE_REGLEMENT", "CHEQUE_A_ENCAISSER", "CHEQUE_FOURNISSEUR");
884
                    ds.execute(alterElt.asString());
-
 
885
                }
-
 
886
 
908
 
887
                root.getSchema().updateVersion();
909
            for (String string : tablesWithBanque) {
888
 
910
 
889
            } catch (SQLException ex) {
911
                final SQLTable table = root.getTable(string);
-
 
912
                if (!table.contains("ID_BANQUE") && !table.contains("ID_BANQUE_POLE_PRODUIT")) {
-
 
913
                    String tableName = (table.contains("ID_BANQUE_PRODUIT")) ? "BANQUE_POLE_PRODUIT" : "BANQUE";
-
 
914
                    AlterTable alterElt = new AlterTable(table);
890
                throw new IllegalStateException("Erreur lors de la création de la table BANQUE", ex);
915
                    alterElt.addForeignColumn("ID_" + tableName, root.getTable(tableName));
-
 
916
                    ds.execute(alterElt.asString());
-
 
917
                    root.refetchTable(string);
-
 
918
                    root.getSchema().updateVersion();
-
 
919
                }
891
            }
920
            }
892
 
-
 
893
        }
921
        }
-
 
922
 
894
    }
923
    }
895
 
924
 
896
    private void createFactureFournisseur(DBRoot root) throws SQLException {
925
    private void createFactureFournisseur(DBRoot root) throws SQLException {
897
        boolean refetchRoot = false;
926
        boolean refetchRoot = false;
898
        if (!root.contains("FACTURE_FOURNISSEUR")) {
927
        if (!root.contains("FACTURE_FOURNISSEUR")) {
Line 1041... Line 1070...
1041
        final List<AlterTable> alters = new ArrayList<AlterTable>();
1070
        final List<AlterTable> alters = new ArrayList<AlterTable>();
1042
        final List<UpdateBuilder> builds = new ArrayList<UpdateBuilder>();
1071
        final List<UpdateBuilder> builds = new ArrayList<UpdateBuilder>();
1043
        {
1072
        {
1044
            SQLTable tableAvoir = root.getTable("AVOIR_CLIENT_ELEMENT");
1073
            SQLTable tableAvoir = root.getTable("AVOIR_CLIENT_ELEMENT");
1045
            final AlterTable alter = new AlterTable(tableAvoir);
1074
            final AlterTable alter = new AlterTable(tableAvoir);
-
 
1075
            if (tableAvoir.contains("POURCENT_ACOMPTE")) {
1046
            SQLField fieldAcompteAvoir = tableAvoir.getField("POURCENT_ACOMPTE");
1076
                SQLField fieldAcompteAvoir = tableAvoir.getField("POURCENT_ACOMPTE");
1047
            if (fieldAcompteAvoir.getType().getSize() > 500) {
1077
                if (fieldAcompteAvoir.getType().getSize() > 500) {
1048
                final String fName = fieldAcompteAvoir.getName();
1078
                    final String fName = fieldAcompteAvoir.getName();
1049
                alter.alterColumn(fName, EnumSet.allOf(Properties.class), "numeric(6,2)", "100", false);
1079
                    alter.alterColumn(fName, EnumSet.allOf(Properties.class), "numeric(6,2)", "100", false);
1050
 
1080
 
1051
                UpdateBuilder build = new UpdateBuilder(tableAvoir);
1081
                    UpdateBuilder build = new UpdateBuilder(tableAvoir);
1052
                build.set(fieldAcompteAvoir.getName(), "100");
1082
                    build.set(fieldAcompteAvoir.getName(), "100");
1053
                build.setWhere(new Where(fieldAcompteAvoir, "=", (Object) null));
1083
                    build.setWhere(new Where(fieldAcompteAvoir, "=", (Object) null));
1054
                builds.add(build);
1084
                    builds.add(build);
1055
            }
1085
                }
1056
 
1086
            }
1057
            if (tableAvoir.contains("POURCENT_REMISE")) {
1087
            if (tableAvoir.contains("POURCENT_REMISE")) {
1058
                SQLField fieldRemiseAvoir = tableAvoir.getField("POURCENT_REMISE");
1088
                SQLField fieldRemiseAvoir = tableAvoir.getField("POURCENT_REMISE");
1059
                if (fieldRemiseAvoir.getType().getSize() > 500) {
1089
                if (fieldRemiseAvoir.getType().getSize() > 500) {
1060
                    final String fName = fieldRemiseAvoir.getName();
1090
                    final String fName = fieldRemiseAvoir.getName();
1061
                    alter.alterColumn(fName, EnumSet.allOf(Properties.class), "numeric(6,2)", "0", false);
1091
                    alter.alterColumn(fName, EnumSet.allOf(Properties.class), "numeric(6,2)", "0", false);
Line 1071... Line 1101...
1071
        }
1101
        }
1072
 
1102
 
1073
        {
1103
        {
1074
            SQLTable tableFacture = root.getTable("SAISIE_VENTE_FACTURE_ELEMENT");
1104
            SQLTable tableFacture = root.getTable("SAISIE_VENTE_FACTURE_ELEMENT");
1075
            final AlterTable alter = new AlterTable(tableFacture);
1105
            final AlterTable alter = new AlterTable(tableFacture);
-
 
1106
            if (tableFacture.contains("POURCENT_ACOMPTE")) {
1076
            SQLField fieldAcompteFacture = tableFacture.getField("POURCENT_ACOMPTE");
1107
                SQLField fieldAcompteFacture = tableFacture.getField("POURCENT_ACOMPTE");
1077
            if (fieldAcompteFacture.getType().getSize() > 500) {
1108
                if (fieldAcompteFacture.getType().getSize() > 500) {
1078
                final String fName = fieldAcompteFacture.getName();
1109
                    final String fName = fieldAcompteFacture.getName();
1079
                alter.alterColumn(fName, EnumSet.allOf(Properties.class), "numeric(6,2)", "100", false);
1110
                    alter.alterColumn(fName, EnumSet.allOf(Properties.class), "numeric(6,2)", "100", false);
1080
 
1111
 
1081
                UpdateBuilder build = new UpdateBuilder(tableFacture);
1112
                    UpdateBuilder build = new UpdateBuilder(tableFacture);
1082
                build.set(fieldAcompteFacture.getName(), "100");
1113
                    build.set(fieldAcompteFacture.getName(), "100");
1083
                build.setWhere(new Where(fieldAcompteFacture, "=", (Object) null));
1114
                    build.setWhere(new Where(fieldAcompteFacture, "=", (Object) null));
1084
                builds.add(build);
1115
                    builds.add(build);
1085
            }
1116
                }
-
 
1117
            }
1086
 
1118
 
-
 
1119
            if (tableFacture.contains("POURCENT_REMISE")) {
1087
            SQLField fieldRemiseFacture = tableFacture.getField("POURCENT_REMISE");
1120
                SQLField fieldRemiseFacture = tableFacture.getField("POURCENT_REMISE");
1088
            if (fieldRemiseFacture.getType().getSize() > 500) {
1121
                if (fieldRemiseFacture.getType().getSize() > 500) {
1089
                final String fName = fieldRemiseFacture.getName();
1122
                    final String fName = fieldRemiseFacture.getName();
1090
                alter.alterColumn(fName, EnumSet.allOf(Properties.class), "numeric(6,2)", "0", false);
1123
                    alter.alterColumn(fName, EnumSet.allOf(Properties.class), "numeric(6,2)", "0", false);
1091
 
1124
 
1092
                UpdateBuilder build = new UpdateBuilder(tableFacture);
1125
                    UpdateBuilder build = new UpdateBuilder(tableFacture);
1093
                build.set(fieldRemiseFacture.getName(), "0");
1126
                    build.set(fieldRemiseFacture.getName(), "0");
1094
                build.setWhere(new Where(fieldRemiseFacture, "=", (Object) null));
1127
                    build.setWhere(new Where(fieldRemiseFacture, "=", (Object) null));
1095
                builds.add(build);
1128
                    builds.add(build);
1096
            }
1129
                }
1097
 
1130
            }
1098
            if (tableFacture.getFieldsName().contains("REPARTITION_POURCENT")) {
1131
            if (tableFacture.getFieldsName().contains("REPARTITION_POURCENT")) {
1099
                SQLField fieldRepFacture = tableFacture.getField("REPARTITION_POURCENT");
1132
                SQLField fieldRepFacture = tableFacture.getField("REPARTITION_POURCENT");
1100
                if (fieldRepFacture.getType().getSize() > 500) {
1133
                if (fieldRepFacture.getType().getSize() > 500) {
1101
                    final String fName = fieldRepFacture.getName();
1134
                    final String fName = fieldRepFacture.getName();
1102
                    alter.alterColumn(fName, EnumSet.allOf(Properties.class), "numeric(6,2)", "0", false);
1135
                    alter.alterColumn(fName, EnumSet.allOf(Properties.class), "numeric(6,2)", "0", false);
Line 1467... Line 1500...
1467
            }
1500
            }
1468
        }
1501
        }
1469
    }
1502
    }
1470
 
1503
 
1471
    private void updateToV1Dot4(final DBRoot root) throws SQLException {
1504
    private void updateToV1Dot4(final DBRoot root) throws SQLException {
-
 
1505
 
-
 
1506
        // ADresse de livraison et remise
-
 
1507
        {
-
 
1508
            SQLTable tableDevis = root.getTable("DEVIS");
-
 
1509
            addAdresseField(tableDevis, root);
-
 
1510
            addRemiseField(tableDevis, root);
-
 
1511
 
-
 
1512
            SQLTable tableVF = root.getTable("SAISIE_VENTE_FACTURE");
-
 
1513
            addAdresseField(tableVF, root);
-
 
1514
            addRemiseField(tableVF, root);
-
 
1515
 
-
 
1516
            SQLTable tableCmd = root.getTable("COMMANDE_CLIENT");
-
 
1517
            addAdresseField(tableCmd, root);
-
 
1518
            addRemiseField(tableCmd, root);
-
 
1519
 
-
 
1520
            SQLTable tableBon = root.getTable("BON_DE_LIVRAISON");
-
 
1521
            addAdresseField(tableBon, root);
-
 
1522
            addRemiseField(tableBon, root);
-
 
1523
 
-
 
1524
            SQLTable tableAvoir = root.getTable("AVOIR_CLIENT");
-
 
1525
            addAdresseField(tableAvoir, root);
-
 
1526
            addRemiseField(tableAvoir, root);
-
 
1527
        }
-
 
1528
        // Service client
-
 
1529
        if (root.getTable("CLIENT_DEPARTEMENT") == null) {
-
 
1530
            final SQLCreateTable createTableDpt = new SQLCreateTable(root, "CLIENT_DEPARTEMENT");
-
 
1531
            createTableDpt.addForeignColumn("CLIENT");
-
 
1532
            if (root.contains("ADRESSE")) {
-
 
1533
                createTableDpt.addForeignColumn("ADRESSE");
-
 
1534
            } else {
-
 
1535
                createTableDpt.addForeignColumn("ID_ADRESSE", root.findTable("ADRESSE"));
-
 
1536
            }
-
 
1537
            createTableDpt.addVarCharColumn("INFOS", 2048);
-
 
1538
            createTableDpt.addVarCharColumn("NOM", 256);
-
 
1539
            try {
-
 
1540
                root.getBase().getDataSource().execute(createTableDpt.asString());
-
 
1541
                insertUndef(createTableDpt);
-
 
1542
                root.refetchTable("CLIENT_DEPARTEMENT");
-
 
1543
                root.getSchema().updateVersion();
-
 
1544
            } catch (SQLException ex2) {
-
 
1545
                throw new IllegalStateException("Erreur lors de la création de la table " + "CLIENT_DEPARTEMENT", ex2);
-
 
1546
            }
-
 
1547
        }
-
 
1548
 
1472
        SQLTable tableVFElt = root.getTable("SAISIE_VENTE_FACTURE_ELEMENT");
1549
        SQLTable tableVFElt = root.getTable("SAISIE_VENTE_FACTURE_ELEMENT");
1473
        patchFieldElt1Dot4(tableVFElt, root);
1550
        patchFieldElt1Dot4(tableVFElt, root);
1474
 
1551
 
1475
        SQLTable tableDevisElt = root.getTable("DEVIS_ELEMENT");
1552
        SQLTable tableDevisElt = root.getTable("DEVIS_ELEMENT");
1476
        patchFieldElt1Dot4(tableDevisElt, root);
1553
        patchFieldElt1Dot4(tableDevisElt, root);
1477
 
1554
 
1478
        SQLTable tableCmdElt = root.getTable("COMMANDE_CLIENT_ELEMENT");
1555
        SQLTable tableCmdElt = root.getTable("COMMANDE_CLIENT_ELEMENT");
-
 
1556
 
1479
        patchFieldElt1Dot4(tableCmdElt, root);
1557
        patchFieldElt1Dot4(tableCmdElt, root);
1480
 
1558
 
1481
        SQLTable tableBonElt = root.getTable("BON_DE_LIVRAISON_ELEMENT");
1559
        SQLTable tableBonElt = root.getTable("BON_DE_LIVRAISON_ELEMENT");
1482
        patchFieldElt1Dot4(tableBonElt, root);
1560
        patchFieldElt1Dot4(tableBonElt, root);
1483
 
1561
 
1484
        SQLTable tableAvoirElt = root.getTable("AVOIR_CLIENT_ELEMENT");
1562
        SQLTable tableAvoirElt = root.getTable("AVOIR_CLIENT_ELEMENT");
1485
        patchFieldElt1Dot4(tableAvoirElt, root);
1563
        patchFieldElt1Dot4(tableAvoirElt, root);
1486
 
1564
 
-
 
1565
        addNiveauElementField(root.getTable("COMMANDE_ELEMENT"));
-
 
1566
        addNiveauElementField(root.getTable("BON_RECEPTION_ELEMENT"));
-
 
1567
        addNiveauElementField(root.getTable("FACTURE_FOURNISSEUR_ELEMENT"));
-
 
1568
 
1487
        addContact(root);
1569
        addContact(root);
1488
 
1570
 
-
 
1571
        {
-
 
1572
            // Gestion des préparations de commandes
-
 
1573
            final SQLTable tableCommandeClient = root.getTable("COMMANDE_CLIENT");
-
 
1574
            AlterTable tCommandeClient = new AlterTable(tableCommandeClient);
-
 
1575
            boolean updateCmdCli = false;
-
 
1576
 
-
 
1577
            if (!tableCommandeClient.contains("ETAT_COMMANDE")) {
-
 
1578
                updateCmdCli = true;
-
 
1579
                tCommandeClient.addIntegerColumn("ETAT_COMMANDE", EtatCommandeClient.A_PREPARER.getId());
-
 
1580
            }
-
 
1581
            if (!tableCommandeClient.contains("EMBALLAGE")) {
-
 
1582
                updateCmdCli = true;
-
 
1583
                tCommandeClient.addVarCharColumn("EMBALLAGE", 256);
-
 
1584
            }
-
 
1585
            if (!tableCommandeClient.contains("NUMERO_EXPEDITION")) {
-
 
1586
                updateCmdCli = true;
-
 
1587
                tCommandeClient.addVarCharColumn("NUMERO_EXPEDITION", 256);
-
 
1588
            }
-
 
1589
 
-
 
1590
            if (!tableCommandeClient.contains("ID_TAXE_PORT")) {
-
 
1591
                updateCmdCli = true;
-
 
1592
                tCommandeClient.addForeignColumn("ID_TAXE_PORT", root.getTable("TAXE"));
-
 
1593
            }
-
 
1594
 
-
 
1595
            if (!tableCommandeClient.contains("PORT_HT")) {
-
 
1596
                updateCmdCli = true;
-
 
1597
                tCommandeClient.addLongColumn("PORT_HT", Long.valueOf(0), false);
-
 
1598
            }
-
 
1599
 
-
 
1600
            if (!tableCommandeClient.contains("REMISE_HT")) {
-
 
1601
                updateCmdCli = true;
-
 
1602
                tCommandeClient.addLongColumn("REMISE_HT", Long.valueOf(0), false);
-
 
1603
            }
-
 
1604
 
-
 
1605
            if (updateCmdCli) {
-
 
1606
                tableCommandeClient.getBase().getDataSource().execute(tCommandeClient.asString());
-
 
1607
                tableCommandeClient.getSchema().updateVersion();
-
 
1608
                tableCommandeClient.fetchFields();
-
 
1609
            }
-
 
1610
        }
-
 
1611
 
-
 
1612
        {
-
 
1613
            // Gestion des préparations de commandes
-
 
1614
            final SQLTable tableBonL = root.getTable("BON_DE_LIVRAISON");
-
 
1615
            AlterTable tBonL = new AlterTable(tableBonL);
-
 
1616
            boolean updateBonL = false;
-
 
1617
 
-
 
1618
            if (!tableBonL.contains("TOTAL_DEVISE")) {
-
 
1619
                updateBonL = true;
-
 
1620
                tBonL.addLongColumn("TOTAL_DEVISE", Long.valueOf(0), false);
-
 
1621
            }
-
 
1622
 
-
 
1623
            if (!tableBonL.contains("TOTAL_SERVICE")) {
-
 
1624
                updateBonL = true;
-
 
1625
                tBonL.addLongColumn("TOTAL_SERVICE", Long.valueOf(0), false);
-
 
1626
            }
-
 
1627
 
-
 
1628
            if (!tableBonL.contains("ID_TAXE_PORT")) {
-
 
1629
                updateBonL = true;
-
 
1630
                tBonL.addForeignColumn("ID_TAXE_PORT", root.getTable("TAXE"));
-
 
1631
            }
-
 
1632
 
-
 
1633
            if (!tableBonL.contains("PORT_HT")) {
-
 
1634
                updateBonL = true;
-
 
1635
                tBonL.addLongColumn("PORT_HT", Long.valueOf(0), false);
-
 
1636
            }
-
 
1637
 
-
 
1638
            if (!tableBonL.contains("REMISE_HT")) {
-
 
1639
                updateBonL = true;
-
 
1640
                tBonL.addLongColumn("REMISE_HT", Long.valueOf(0), false);
-
 
1641
            }
-
 
1642
 
-
 
1643
            if (updateBonL) {
-
 
1644
                tableBonL.getBase().getDataSource().execute(tBonL.asString());
-
 
1645
                tableBonL.getSchema().updateVersion();
-
 
1646
                tableBonL.fetchFields();
-
 
1647
            }
-
 
1648
        }
-
 
1649
 
-
 
1650
        final List<String> asList = Arrays.asList("SAISIE_VENTE_FACTURE", "BON_RECEPTION", "BON_DE_LIVRAISON");
-
 
1651
        for (String tableVirtualStockName : asList) {
-
 
1652
            SQLTable tableVirtualStock = root.getTable(tableVirtualStockName);
-
 
1653
            if (!tableVirtualStock.contains("CREATE_VIRTUAL_STOCK")) {
-
 
1654
                AlterTable t = new AlterTable(tableVirtualStock);
-
 
1655
                t.addBooleanColumn("CREATE_VIRTUAL_STOCK", Boolean.TRUE, false);
-
 
1656
                tableVirtualStock.getBase().getDataSource().execute(t.asString());
-
 
1657
                tableVirtualStock.getSchema().updateVersion();
-
 
1658
                tableVirtualStock.fetchFields();
-
 
1659
            }
-
 
1660
        }
-
 
1661
 
-
 
1662
        // Remise dans les devis
1489
        final SQLTable tableDevis = root.getTable("DEVIS");
1663
        final SQLTable tableDevis = root.getTable("DEVIS");
1490
        AlterTable tDevis = new AlterTable(tableDevis);
1664
        AlterTable tDevis = new AlterTable(tableDevis);
1491
        boolean updateDevis = false;
1665
        boolean updateDevis = false;
-
 
1666
 
1492
        if (!tableDevis.contains("POURCENT_REMISE")) {
1667
        if (!tableDevis.contains("POURCENT_REMISE")) {
1493
            updateDevis = true;
1668
            updateDevis = true;
1494
            tDevis.addColumn("POURCENT_REMISE", "numeric (12,8)");
1669
            tDevis.addColumn("POURCENT_REMISE", "numeric (12,8)");
1495
        }
1670
        }
1496
        if (!tableDevis.contains("MONTANT_REMISE")) {
1671
        if (!tableDevis.contains("MONTANT_REMISE")) {
Line 1499... Line 1674...
1499
        }
1674
        }
1500
        if (!tableDevis.contains("T_HA")) {
1675
        if (!tableDevis.contains("T_HA")) {
1501
            updateDevis = true;
1676
            updateDevis = true;
1502
            tDevis.addColumn("T_HA", "bigint", "0", false);
1677
            tDevis.addColumn("T_HA", "bigint", "0", false);
1503
        }
1678
        }
-
 
1679
 
-
 
1680
        if (!tableDevis.contains("DUNNING_DATE")) {
-
 
1681
            updateDevis = true;
-
 
1682
            tDevis.addColumn("DUNNING_DATE", "date");
-
 
1683
        }
-
 
1684
 
1504
        if (updateDevis) {
1685
        if (updateDevis) {
1505
            tableDevis.getBase().getDataSource().execute(tDevis.asString());
1686
            tableDevis.getBase().getDataSource().execute(tDevis.asString());
1506
            tableDevis.getSchema().updateVersion();
1687
            tableDevis.getSchema().updateVersion();
1507
            tableDevis.fetchFields();
1688
            tableDevis.fetchFields();
1508
        }
1689
        }
Line 1542... Line 1723...
1542
                tableAdresse.getSchema().updateVersion();
1723
                tableAdresse.getSchema().updateVersion();
1543
                tableAdresse.fetchFields();
1724
                tableAdresse.fetchFields();
1544
            }
1725
            }
1545
        }
1726
        }
1546
        final SQLTable tableClient = root.getTable("CLIENT");
1727
        final SQLTable tableClient = root.getTable("CLIENT");
1547
        if (tableClient != null && !tableClient.contains("BLOQUE_LIVRAISON")) {
1728
        if (tableClient != null) {
1548
            AlterTable t = new AlterTable(tableClient);
1729
            AlterTable t = new AlterTable(tableClient);
-
 
1730
            boolean upClient = false;
-
 
1731
            if (!tableClient.contains("BLOQUE_LIVRAISON")) {
1549
            t.addBooleanColumn("BLOQUE_LIVRAISON", false, false);
1732
                t.addBooleanColumn("BLOQUE_LIVRAISON", false, false);
-
 
1733
                upClient = true;
-
 
1734
            }
1550
            if (!tableClient.contains("BLOQUE")) {
1735
            if (!tableClient.contains("BLOQUE")) {
-
 
1736
                upClient = true;
1551
                t.addBooleanColumn("BLOQUE", false, false);
1737
                t.addBooleanColumn("BLOQUE", false, false);
1552
            }
1738
            }
-
 
1739
            if (!tableClient.contains("ID_COMPTE_PCE_SERVICE")) {
-
 
1740
                upClient = true;
-
 
1741
                t.addForeignColumn("ID_COMPTE_PCE_SERVICE", tableClient.getTable("COMPTE_PCE"));
-
 
1742
            }
-
 
1743
 
-
 
1744
            if (!tableClient.contains("ID_COMPTE_PCE_PRODUIT")) {
-
 
1745
                upClient = true;
-
 
1746
                t.addForeignColumn("ID_COMPTE_PCE_PRODUIT", tableClient.getTable("COMPTE_PCE"));
-
 
1747
            }
-
 
1748
 
-
 
1749
            if (!tableClient.contains("ENCOURS_MAX")) {
-
 
1750
                upClient = true;
-
 
1751
                t.addDecimalColumn("ENCOURS_MAX", 16, 2, BigDecimal.valueOf(0), false);
-
 
1752
            }
-
 
1753
            if (!tableClient.contains("CATEGORIES")) {
-
 
1754
                upClient = true;
-
 
1755
                t.addVarCharColumn("CATEGORIES", 2048);
-
 
1756
            }
-
 
1757
            if (!tableClient.contains("NOTE_FINANCIERE")) {
-
 
1758
                upClient = true;
-
 
1759
                t.addVarCharColumn("NOTE_FINANCIERE", 1024);
-
 
1760
            }
-
 
1761
            if (!tableClient.contains("CENTRE_GESTION")) {
-
 
1762
                upClient = true;
-
 
1763
                t.addVarCharColumn("CENTRE_GESTION", 1024);
-
 
1764
            }
-
 
1765
            if (!tableClient.contains("METHODE_RELANCE")) {
-
 
1766
                upClient = true;
-
 
1767
                t.addVarCharColumn("METHODE_RELANCE", 1024);
-
 
1768
            }
-
 
1769
            if (!tableClient.contains("SITE_INTERNET")) {
-
 
1770
                upClient = true;
-
 
1771
                t.addVarCharColumn("SITE_INTERNET", 2048);
-
 
1772
            }
-
 
1773
            if (!tableClient.contains("GROUPE")) {
-
 
1774
                upClient = true;
-
 
1775
                t.addVarCharColumn("GROUPE", 1024);
-
 
1776
            }
-
 
1777
            if (!tableClient.contains("ID_COMMERCIAL")) {
-
 
1778
                upClient = true;
-
 
1779
                t.addForeignColumn("ID_COMMERCIAL", tableClient.getTable("COMMERCIAL"));
-
 
1780
            }
-
 
1781
 
-
 
1782
            if (upClient) {
1553
            tableClient.getBase().getDataSource().execute(t.asString());
1783
                tableClient.getBase().getDataSource().execute(t.asString());
1554
            tableClient.getSchema().updateVersion();
1784
                tableClient.getSchema().updateVersion();
1555
            tableClient.fetchFields();
1785
                tableClient.fetchFields();
1556
        }
1786
            }
-
 
1787
        }
-
 
1788
        if (!root.contains("CATEGORIE_CLIENT")) {
-
 
1789
            final SQLCreateTable createCategorieClientTable = new SQLCreateTable(root, "CATEGORIE_CLIENT");
-
 
1790
            createCategorieClientTable.addVarCharColumn("NOM", 1024);
-
 
1791
 
-
 
1792
            try {
-
 
1793
                root.getDBSystemRoot().getDataSource().execute(createCategorieClientTable.asString());
-
 
1794
                insertUndef(createCategorieClientTable);
-
 
1795
                tableDevis.getSchema().updateVersion();
-
 
1796
            } catch (SQLException ex) {
-
 
1797
                throw new IllegalStateException("Erreur lors de la création de la table CATEGORIE_CLIENT", ex);
-
 
1798
            }
-
 
1799
 
-
 
1800
        }
-
 
1801
 
1557
        final SQLTable tableAssoc = root.getTable("ASSOCIATION_ANALYTIQUE");
1802
        final SQLTable tableAssoc = root.getTable("ASSOCIATION_ANALYTIQUE");
1558
        if (tableAssoc != null && !tableAssoc.contains("GESTION_AUTO")) {
1803
        if (tableAssoc != null && !tableAssoc.contains("GESTION_AUTO")) {
1559
            AlterTable t = new AlterTable(tableAssoc);
1804
            AlterTable t = new AlterTable(tableAssoc);
1560
            t.addBooleanColumn("GESTION_AUTO", false, false);
1805
            t.addBooleanColumn("GESTION_AUTO", false, false);
1561
            tableAssoc.getBase().getDataSource().execute(t.asString());
1806
            tableAssoc.getBase().getDataSource().execute(t.asString());
Line 1588... Line 1833...
1588
                throw new IllegalStateException("Erreur lors de la création de la table TASK", ex);
1833
                throw new IllegalStateException("Erreur lors de la création de la table TASK", ex);
1589
            }
1834
            }
1590
 
1835
 
1591
        }
1836
        }
1592
        addArticleFournisseur(root);
1837
        addArticleFournisseur(root);
-
 
1838
 
-
 
1839
        // Remise sur tarif client
-
 
1840
        if (root.contains("ARTICLE_TARIF") && !root.getTable("ARTICLE_TARIF").contains("POURCENT_REMISE")) {
-
 
1841
            AlterTable t = new AlterTable(root.getTable("ARTICLE_TARIF"));
-
 
1842
            t.addDecimalColumn("POURCENT_REMISE", 16, 6, BigDecimal.valueOf(0), false);
-
 
1843
            root.getTable("ARTICLE_TARIF").getBase().getDataSource().execute(t.asString());
-
 
1844
            root.getTable("ARTICLE_TARIF").fetchFields();
-
 
1845
            root.getTable("ARTICLE").getSchema().updateVersion();
-
 
1846
        }
-
 
1847
        // SKU et Type d'expedition
-
 
1848
        final SQLTable articleTable = root.getTable("ARTICLE");
-
 
1849
        if (!articleTable.contains("SKU")) {
-
 
1850
            AlterTable a = new AlterTable(articleTable);
-
 
1851
            a.addVarCharColumn("SKU", 256);
-
 
1852
            try {
-
 
1853
                articleTable.getBase().getDataSource().execute(a.asString());
-
 
1854
                articleTable.getSchema().updateVersion();
-
 
1855
                articleTable.fetchFields();
-
 
1856
            } catch (SQLException ex2) {
-
 
1857
                throw new IllegalStateException("Erreur lors de l'ajout du champs SKU sur la table ARTICLE", ex2);
-
 
1858
            }
-
 
1859
        }
-
 
1860
 
-
 
1861
        try {
-
 
1862
            final SQLTable cmdClientTable = root.getTable("COMMANDE_CLIENT");
-
 
1863
            if (!cmdClientTable.contains("TYPE_EXPEDITION")) {
-
 
1864
                final AlterTable a = new AlterTable(cmdClientTable);
-
 
1865
                a.addVarCharColumn("TYPE_EXPEDITION", 256);
-
 
1866
                cmdClientTable.getBase().getDataSource().execute(a.asString());
-
 
1867
                cmdClientTable.getSchema().updateVersion();
-
 
1868
                cmdClientTable.fetchFields();
-
 
1869
            }
-
 
1870
        } catch (SQLException ex2) {
-
 
1871
            throw new IllegalStateException("Erreur lors de l'ajout du champs TYPE_EXPEDITION sur la table COMMANDE_CLIENT", ex2);
-
 
1872
        }
-
 
1873
        try {
-
 
1874
            final SQLTable axeTable = root.getTable("AXE_ANALYTIQUE");
-
 
1875
            if (!axeTable.contains("TYPE")) {
-
 
1876
                final AlterTable a = new AlterTable(axeTable);
-
 
1877
                a.addVarCharColumn("TYPE", 256);
-
 
1878
                axeTable.getBase().getDataSource().execute(a.asString());
-
 
1879
                axeTable.getSchema().updateVersion();
-
 
1880
                axeTable.fetchFields();
-
 
1881
            }
-
 
1882
        } catch (SQLException ex2) {
-
 
1883
            throw new IllegalStateException("Erreur lors de l'ajout des champs sur la table AXE_ANALYTIQUE", ex2);
-
 
1884
        }
-
 
1885
        // Historique des taux
-
 
1886
        if (!root.contains("DEVISE_HISTORIQUE")) {
-
 
1887
            final SQLCreateTable createTable = new SQLCreateTable(root, "DEVISE_HISTORIQUE");
-
 
1888
            createTable.addDateAndTimeColumn("DATE");
-
 
1889
            createTable.addVarCharColumn("SRC", 8);
-
 
1890
            createTable.addVarCharColumn("DST", 8);
-
 
1891
            createTable.addDecimalColumn("TAUX", 12, 6, new BigDecimal(1), false);
-
 
1892
            createTable.addDecimalColumn("TAUX_COMMERCIAL", 12, 6, new BigDecimal(1), false);
-
 
1893
            try {
-
 
1894
                root.getDBSystemRoot().getDataSource().execute(createTable.asString());
-
 
1895
                insertUndef(createTable);
-
 
1896
                tableDevis.getSchema().updateVersion();
-
 
1897
            } catch (SQLException ex) {
-
 
1898
                throw new IllegalStateException("Erreur lors de la création de la table TASK", ex);
-
 
1899
            }
-
 
1900
        }
-
 
1901
 
-
 
1902
        final SQLTable tableContact = root.getTable("CONTACT");
-
 
1903
        if (tableContact != null && !tableContact.contains("NO_MAILING")) {
-
 
1904
            AlterTable t = new AlterTable(tableContact);
-
 
1905
            t.addBooleanColumn("NO_MAILING", false, false);
-
 
1906
            tableContact.getBase().getDataSource().execute(t.asString());
-
 
1907
            tableContact.getSchema().updateVersion();
-
 
1908
            tableContact.fetchFields();
-
 
1909
        }
-
 
1910
 
1593
    }
1911
    }
1594
 
1912
 
1595
    private void updateStyle(final DBRoot root) throws SQLException {
1913
    private void updateStyle(final DBRoot root) throws SQLException {
1596
        SQLTable style = root.getTable("STYLE");
1914
        SQLTable style = root.getTable("STYLE");
1597
        SQLRowValues rowVals = new SQLRowValues(style);
1915
        SQLRowValues rowVals = new SQLRowValues(style);
Line 1650... Line 1968...
1650
            rowVals.commit();
1968
            rowVals.commit();
1651
 
1969
 
1652
        }
1970
        }
1653
 
1971
 
1654
        SQLRowValues rowValsOrdre = new SQLRowValues(tableEtatDevis);
1972
        SQLRowValues rowValsOrdre = new SQLRowValues(tableEtatDevis);
1655
        rowValsOrdre.put("ORDRE", new BigDecimal(1.505));
1973
        rowValsOrdre.put("ORDRE", new BigDecimal("1.505"));
1656
        rowValsOrdre.update(EtatDevisSQLElement.EN_ATTENTE);
1974
        rowValsOrdre.update(EtatDevisSQLElement.EN_ATTENTE);
1657
 
1975
 
1658
        rowValsOrdre.put("ORDRE", new BigDecimal(2.505));
1976
        rowValsOrdre.put("ORDRE", new BigDecimal("2.505"));
1659
        rowValsOrdre.update(EtatDevisSQLElement.ACCEPTE);
1977
        rowValsOrdre.update(EtatDevisSQLElement.ACCEPTE);
1660
 
1978
 
1661
        rowValsOrdre.put("ORDRE", new BigDecimal(3.505));
1979
        rowValsOrdre.put("ORDRE", new BigDecimal("3.505"));
1662
        rowValsOrdre.update(EtatDevisSQLElement.REFUSE);
1980
        rowValsOrdre.update(EtatDevisSQLElement.REFUSE);
1663
 
1981
 
1664
        rowValsOrdre.put("ORDRE", new BigDecimal(4.505));
1982
        rowValsOrdre.put("ORDRE", new BigDecimal("4.505"));
1665
        rowValsOrdre.update(EtatDevisSQLElement.EN_COURS);
1983
        rowValsOrdre.update(EtatDevisSQLElement.EN_COURS);
1666
 
1984
 
1667
        // Ajout de la TVA à 0
1985
        // Ajout de la TVA à 0
1668
        SQLSelect selTVA = new SQLSelect();
1986
        SQLSelect selTVA = new SQLSelect();
1669
        SQLTable tableTaxe = root.getTable("TAXE");
1987
        SQLTable tableTaxe = root.getTable("TAXE");
Line 2436... Line 2754...
2436
            root.getDBSystemRoot().getDataSource().execute(req2);
2754
            root.getDBSystemRoot().getDataSource().execute(req2);
2437
        }
2755
        }
2438
 
2756
 
2439
    }
2757
    }
2440
 
2758
 
2441
    private void patchFieldElt1Dot4(SQLTable table, DBRoot root) {
2759
    private void patchFieldElt1Dot4(SQLTable table, DBRoot root) throws SQLException {
2442
 
2760
 
2443
        if (!table.contains("MONTANT_REMISE")) {
2761
        if (!table.contains("MONTANT_REMISE")) {
2444
            AlterTable t = new AlterTable(table);
2762
            AlterTable t = new AlterTable(table);
2445
            t.alterColumn("POURCENT_REMISE", EnumSet.allOf(Properties.class), "numeric(12,8)", "0", true);
2763
            t.alterColumn("POURCENT_REMISE", EnumSet.allOf(Properties.class), "numeric(12,8)", "0", true);
2446
            t.addColumn("MONTANT_REMISE", "numeric (16,8)");
2764
            t.addColumn("MONTANT_REMISE", "numeric (16,8)");
Line 2452... Line 2770...
2452
                table.fetchFields();
2770
                table.fetchFields();
2453
            } catch (SQLException ex) {
2771
            } catch (SQLException ex) {
2454
                throw new IllegalStateException("Erreur lors de l'ajout des champs à la table " + table.getName(), ex);
2772
                throw new IllegalStateException("Erreur lors de l'ajout des champs à la table " + table.getName(), ex);
2455
            }
2773
            }
2456
        }
2774
        }
-
 
2775
 
-
 
2776
        if (!table.contains("ID_FAMILLE_ARTICLE")) {
-
 
2777
            AlterTable t = new AlterTable(table);
-
 
2778
            t.addForeignColumn("ID_FAMILLE_ARTICLE", root.getTable("FAMILLE_ARTICLE"));
-
 
2779
 
-
 
2780
            try {
-
 
2781
 
-
 
2782
                table.getBase().getDataSource().execute(t.asString());
-
 
2783
                table.getSchema().updateVersion();
-
 
2784
                table.fetchFields();
-
 
2785
            } catch (SQLException ex) {
-
 
2786
                throw new IllegalStateException("Erreur lors de l'ajout du champs ID_FAMILLE_ARTICLE à la table " + table.getName(), ex);
-
 
2787
            }
-
 
2788
        }
-
 
2789
 
-
 
2790
        addNiveauElementField(table);
-
 
2791
    }
-
 
2792
 
-
 
2793
    private void addNiveauElementField(SQLTable table) throws SQLException {
-
 
2794
 
2457
        if (!table.contains("NIVEAU")) {
2795
        if (!table.contains("NIVEAU")) {
2458
            AlterTable t = new AlterTable(table);
2796
            AlterTable t = new AlterTable(table);
2459
            t.addIntegerColumn("NIVEAU", 1);
2797
            t.addIntegerColumn("NIVEAU", 1);
2460
            try {
2798
            try {
2461
                table.getBase().getDataSource().execute(t.asString());
2799
                table.getBase().getDataSource().execute(t.asString());
Line 2499... Line 2837...
2499
 
2837
 
2500
        if (!table.getFieldsName().contains("PA_DEVISE_T")) {
2838
        if (!table.getFieldsName().contains("PA_DEVISE_T")) {
2501
            t.addColumn("PA_DEVISE_T", "bigint default 0");
2839
            t.addColumn("PA_DEVISE_T", "bigint default 0");
2502
            alter = true;
2840
            alter = true;
2503
        }
2841
        }
-
 
2842
        if (!table.getFieldsName().contains("DESCRIPTIF")) {
-
 
2843
            t.addVarCharColumn("DESCRIPTIF", 2048);
-
 
2844
            alter = true;
-
 
2845
        }
2504
 
2846
 
2505
        // if (!table.getFieldsName().contains("POURCENT_REMISE")) {
2847
        // if (!table.getFieldsName().contains("POURCENT_REMISE")) {
2506
        // t.addColumn("POURCENT_REMISE", "numeric(16,2) DEFAULT 0");
2848
        // t.addColumn("POURCENT_REMISE", "numeric(16,2) DEFAULT 0");
2507
        // alter = true;
2849
        // alter = true;
2508
        // }
2850
        // }
Line 2517... Line 2859...
2517
            }
2859
            }
2518
        }
2860
        }
2519
        patchFieldElt1Dot3(table, root);
2861
        patchFieldElt1Dot3(table, root);
2520
    }
2862
    }
2521
 
2863
 
-
 
2864
    private void addRemiseField(SQLTable table, DBRoot root) throws SQLException {
-
 
2865
 
-
 
2866
        AlterTable t = new AlterTable(table);
-
 
2867
        boolean alter = false;
-
 
2868
        if (!table.contains("POURCENT_REMISE")) {
-
 
2869
            t.addColumn("POURCENT_REMISE", "numeric (12,8)");
-
 
2870
            alter = true;
-
 
2871
        }
-
 
2872
        if (!table.contains("MONTANT_REMISE")) {
-
 
2873
            t.addColumn("MONTANT_REMISE", "numeric (16,8)");
-
 
2874
            alter = true;
-
 
2875
        }
-
 
2876
        if (alter) {
-
 
2877
            try {
-
 
2878
 
-
 
2879
                table.getBase().getDataSource().execute(t.asString());
-
 
2880
                table.getSchema().updateVersion();
-
 
2881
                table.fetchFields();
-
 
2882
            } catch (SQLException ex) {
-
 
2883
                throw new IllegalStateException("Erreur lors de l'ajout des champs remise à la table " + table.getName(), ex);
-
 
2884
            }
-
 
2885
        }
-
 
2886
    }
-
 
2887
 
-
 
2888
    private void addAdresseField(SQLTable table, DBRoot root) throws SQLException {
-
 
2889
        boolean alter = false;
-
 
2890
        AlterTable t = new AlterTable(table);
-
 
2891
        if (!table.getFieldsName().contains("ID_ADRESSE")) {
-
 
2892
            t.addForeignColumn("ID_ADRESSE", root.findTable("ADRESSE"));
-
 
2893
            alter = true;
-
 
2894
        }
-
 
2895
 
-
 
2896
        if (!table.getFieldsName().contains("ID_ADRESSE_LIVRAISON")) {
-
 
2897
            t.addForeignColumn("ID_ADRESSE_LIVRAISON", root.findTable("ADRESSE"));
-
 
2898
            alter = true;
-
 
2899
        }
-
 
2900
 
-
 
2901
        if (alter) {
-
 
2902
            try {
-
 
2903
                table.getBase().getDataSource().execute(t.asString());
-
 
2904
                table.getSchema().updateVersion();
-
 
2905
                table.fetchFields();
-
 
2906
            } catch (SQLException ex) {
-
 
2907
                throw new IllegalStateException("Erreur lors de l'ajout des champs à la table " + table.getName(), ex);
-
 
2908
            }
-
 
2909
        }
-
 
2910
    }
-
 
2911
 
2522
    private void addModeleField(SQLTable table, DBRoot root) throws SQLException {
2912
    private void addModeleField(SQLTable table, DBRoot root) throws SQLException {
2523
        boolean alter = false;
2913
        boolean alter = false;
2524
        AlterTable t = new AlterTable(table);
2914
        AlterTable t = new AlterTable(table);
2525
        if (!table.getFieldsName().contains("ID_MODELE")) {
2915
        if (!table.getFieldsName().contains("ID_MODELE")) {
2526
            t.addForeignColumn("ID_MODELE", root.findTable("MODELE"));
2916
            t.addForeignColumn("ID_MODELE", root.findTable("MODELE"));
Line 2824... Line 3214...
2824
            rowVals.put("NOM", "Ajout d'une ligne");
3214
            rowVals.put("NOM", "Ajout d'une ligne");
2825
            String desc = "Autorise un utilisateur à ajouter un élément dans la table spécifiée en objet.";
3215
            String desc = "Autorise un utilisateur à ajouter un élément dans la table spécifiée en objet.";
2826
            rowVals.put("DESCRIPTION", desc);
3216
            rowVals.put("DESCRIPTION", desc);
2827
            rowVals.commit();
3217
            rowVals.commit();
2828
        }
3218
        }
2829
        // FIXME Probleme avec la property canSaveInList voir canSave() in IListPanel
-
 
2830
        // if (!codes.contains("SAVE_ROW")) {
3219
        if (!codes.contains("SAVE_ROW")) {
2831
        // SQLRowValues rowVals = new SQLRowValues(table);
3220
            SQLRowValues rowVals = new SQLRowValues(table);
2832
        // rowVals.put("CODE", "SAVE_ROW");
3221
            rowVals.put("CODE", "SAVE_ROW");
2833
        // rowVals.put("NOM", "Export des listes");
3222
            rowVals.put("NOM", "Export des listes");
-
 
3223
            String desc = "Autorise un utilisateur à exporter le contenu des listes via le bouton représentant une disquette.";
-
 
3224
            rowVals.put("DESCRIPTION", desc);
-
 
3225
            SQLRow row = rowVals.commit();
-
 
3226
            SQLRowValues rowValsUserRight = new SQLRowValues(table.getTable("USER_RIGHT"));
-
 
3227
            rowValsUserRight.put("ID_RIGHT", row.getID());
-
 
3228
            rowValsUserRight.put("HAVE_RIGHT", Boolean.TRUE);
-
 
3229
            rowValsUserRight.commit();
-
 
3230
        }
-
 
3231
 
-
 
3232
        if (!codes.contains("MENU_ACCESS")) {
-
 
3233
            SQLRowValues rowVals = new SQLRowValues(table);
-
 
3234
            rowVals.put("CODE", "MENU_ACCESS");
-
 
3235
            rowVals.put("NOM", "Autoriser l'accés à un menu");
-
 
3236
            String desc = "Autorise un utilisateur à visualiser le menu spécifié en objet.";
-
 
3237
            rowVals.put("DESCRIPTION", desc);
2834
        // String desc =
3238
            SQLRow row = rowVals.commit();
-
 
3239
            SQLRowValues rowValsUserRight = new SQLRowValues(table.getTable("USER_RIGHT"));
-
 
3240
            rowValsUserRight.put("ID_RIGHT", row.getID());
-
 
3241
            rowValsUserRight.put("HAVE_RIGHT", Boolean.TRUE);
-
 
3242
            rowValsUserRight.commit();
-
 
3243
        }
-
 
3244
        if (!codes.contains("GROUP_ITEM_SHOW")) {
-
 
3245
            SQLRowValues rowVals = new SQLRowValues(table);
-
 
3246
            rowVals.put("CODE", "GROUP_ITEM_SHOW");
-
 
3247
            rowVals.put("NOM", "Autoriser à visualiser un champ");
2835
        // "Autorise un utilisateur à exporter le contenu des listes via le bouton représentant une disquette.";
3248
            String desc = "Autorise un utilisateur à visualiser le champ spécifié en objet dans une interface.";
2836
        // rowVals.put("DESCRIPTION", desc);
3249
            rowVals.put("DESCRIPTION", desc);
-
 
3250
            SQLRow row = rowVals.commit();
-
 
3251
            SQLRowValues rowValsUserRight = new SQLRowValues(table.getTable("USER_RIGHT"));
-
 
3252
            rowValsUserRight.put("ID_RIGHT", row.getID());
-
 
3253
            rowValsUserRight.put("HAVE_RIGHT", Boolean.TRUE);
2837
        // rowVals.commit();
3254
            rowValsUserRight.commit();
2838
        // }
3255
        }
2839
    }
3256
    }
2840
 
3257
 
2841
    private void findBadForeignKey(DBRoot root) {
3258
    private void findBadForeignKey(DBRoot root) {
2842
        Set<SQLTable> tables = root.getTables();
3259
        Set<SQLTable> tables = root.getTables();
2843
        for (SQLTable table : tables) {
3260
        for (SQLTable table : tables) {
Line 2847... Line 3264...
2847
    }
3264
    }
2848
 
3265
 
2849
    private void findBadForeignKey(DBRoot root, SQLTable table) {
3266
    private void findBadForeignKey(DBRoot root, SQLTable table) {
2850
        System.out.println("====================================== " + table.getName());
3267
        System.out.println("====================================== " + table.getName());
2851
        Set<SQLField> ffields = table.getForeignKeys();
3268
        Set<SQLField> ffields = table.getForeignKeys();
2852
        Set<SQLField> allFields = table.getFields();
-
 
2853
 
3269
 
2854
        Set<String> keysString = SQLKey.foreignKeys(table);
3270
        Set<String> keysString = SQLKey.foreignKeys(table);
2855
        for (String string : keysString) {
3271
        for (String string : keysString) {
2856
            ffields.add(table.getField(string));
3272
            ffields.add(table.getField(string));
2857
        }
3273
        }