Stable merged into unstable again (due to failure on binary file during previous...
[fa-stable.git] / sql / alter2.4.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 class fa2_4 {
13         var $version = '2.4';   // version installed
14         var $description;
15         var $sql = 'alter2.4.sql';
16         var $preconf = true;
17         
18         function fa2_4() {
19                 $this->description = _('Upgrade from version 2.3 to 2.4');
20         }
21         
22         //
23         //      Install procedure. All additional changes 
24         //      not included in sql file should go here.
25         //
26         function install($company, $force) 
27         {
28                 global $db_version;
29                 
30                 if (get_company_pref('grn_clearing_act') === null) { // available form 2.3.1, can be not defined on pre-2.4 installations
31                         set_company_pref('grn_clearing_act', 'glsetup.purchase', 'varchar', 15, 0);
32                 }
33                 $result = $this->update_workorders();
34                 if ($result)
35                         $result = $this->do_cleanup();
36 //              return  update_company_prefs(array('version_id'=>$db_version));
37                 return true;
38         }
39         //
40         //      Checking before install
41         //
42         function pre_check($pref, $force)
43         {
44                 return true;
45         }
46         //
47         //      Test if patch was applied before.
48         //
49         function installed($pref)
50         {
51                 $n = 2; // number of patches to be installed
52                 $patchcnt = 0;
53
54                 if (!check_table($pref, 'suppliers', 'tax_algorithm')) $patchcnt++;
55                 if (!check_table($pref, 'wo_costing')) $patchcnt++;
56                 return $n == $patchcnt ? true : ($patchcnt ? ($patchcnt.'/'. $n) : 0);
57         }
58
59         function update_workorders()
60         {
61                 global $db;
62
63                 $sql = "SELECT DISTINCT type, type_no, tran_date, person_id FROM ".TB_PREF."gl_trans WHERE `type`=".ST_WORKORDER
64                 ." AND person_type_id=1";
65                 $res = db_query($sql);
66                 if (!$res)
67                 {
68                         display_error("Cannot update work orders costs"
69                                 .':<br>'. db_error_msg($db));
70                         return false;
71                 }
72                 while ($row = db_fetch($res))
73                 {
74                         $journal_id = get_next_trans_no(ST_JOURNAL);
75
76                         $sql1 = "UPDATE ".TB_PREF."gl_trans SET `type`=".ST_JOURNAL.", type_no={$journal_id},
77                                 person_type_id=NULL, person_id=0
78                                 WHERE `type`=".ST_WORKORDER." AND type_no={$row['type_no']} AND tran_date='{$row['tran_date']}'
79                                 AND person_id='{$row['person_id']}'";
80                         if (!db_query($sql1)) return false;
81                         
82                         $sql2 = "INSERT INTO ".TB_PREF."wo_costing (workorder_id, cost_type, trans_no) 
83                                 VALUES ({$row['type_no']}, {$row['person_id']}, {$journal_id})";
84                         if (!db_query($sql2)) return false;
85                 }
86                 return true;
87         }
88
89         function do_cleanup()
90         {
91                 $sql = "ALTER TABLE `".TB_PREF."tax_group_items` DROP COLUMN `rate`";
92                 return db_query($sql);
93         }
94 }
95
96 $install = new fa2_4;