c953965c02988d395b329589e8d3146110332332
[fa-stable.git] / sql / alter2.3.php
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12
13 class fa2_3 {
14         var $version = '2.3';   // version installed
15         var $description;
16         var $sql = 'alter2.3.sql';
17         var $preconf = true;
18         
19         function fa2_3() {
20                 $this->description = _('Upgrade from version 2.2 to 2.3');
21         }
22         
23         //
24         //      Install procedure. All additional changes 
25         //      not included in sql file should go here.
26         //
27         function install($pref, $force) 
28         {
29                 $sql = "SELECT debtor_no, payment_terms FROM {$pref}debtors_master";
30                 
31                 $result = db_query($sql);
32                 if (!$result) {
33                         display_error("Cannot read customers"
34                         .':<br>'. db_error_msg($db));
35                         return false;
36                 }
37                 // update all sales orders and transactions with customer std payment terms
38                 while($cust = db_fetch($result)) {
39                         $sql = "UPDATE {$pref}debtor_trans SET "
40                                 ."payment_terms = '" .$cust['payment_terms']
41                                 ."' WHERE debtor_no='".$cust['debtor_no']."'";
42                         if (db_query($sql)==false) {
43                                 display_error("Cannot update cust trans payment"
44                                 .':<br>'. db_error_msg($db));
45                                 return false;
46                         }
47                         $sql = "UPDATE {$pref}sales_orders SET "
48                                 ."payment_terms = '" .$cust['payment_terms']
49                                 ."' WHERE debtor_no='".$cust['debtor_no']."'";
50                         if (db_query($sql)==false) {
51                                 display_error("Cannot update sales order payment"
52                                 .':<br>'. db_error_msg($db));
53                                 return false;
54                         }
55                 }
56                 //remove obsolete and temporary columns.
57                 // this have to be done here as db_import rearranges alter query order
58                 $dropcol = array(
59                         'crm_persons' => array('tmp_id','tmp_class'),
60                         'debtors_master' => array('email'),
61                         'cust_branch' => array('phone', 'phone2', 'fax', 'email'),
62                         'suppliers' => array('phone', 'phone2', 'fax', 'email')
63                 );
64                 foreach($dropcol as $table => $columns)
65                         foreach($columns as $col) {
66                         if (db_query("ALTER TABLE `{$pref}{$table}` DROP `$col`")==false) {
67                                 display_error("Cannot drop {$table}.{$col} column:<br>".db_error_msg($db));
68                                 return false;
69                         }
70                 }
71
72                 // remove old preferences table after upgrade script has been executed
73                 $sql = "DROP TABLE IF EXISTS `{$pref}company`";
74
75                 return db_query($sql) && update_company_prefs(array('version_id'=>'2.3'));
76         }
77         //
78         //      Checking before install
79         //
80         function pre_check($pref, $force)
81         {
82                 return true;
83         }
84         //
85         //      Test if patch was applied before.
86         //
87         function installed($pref) {
88                 $n = 3; // number of patches to be installed
89                 $patchcnt = 0;
90
91                 if (!check_table($pref, 'comments', 'type', array('Key'=>'MUL'))) $patchcnt++;
92                 if (!check_table($pref, 'sys_prefs')) $patchcnt++;
93                 if (!check_table($pref, 'sales_orders', 'payment_terms')) $patchcnt++;
94
95                 $n -= $patchcnt;
96                 return $n == 0 ? true : $patchcnt;
97         }
98 }       
99 $install = new fa2_3;
100 ?>