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 ***********************************************************************/
13 var $version = '2.4'; // version installed
15 var $sql = 'alter2.4.sql';
19 $this->description = _('Upgrade from version 2.3 to 2.4');
23 // Install procedure. All additional changes
24 // not included in sql file should go here.
26 function install($company, $force)
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);
33 if (get_company_pref('default_receival_required') === null) { // new in 2.4 installations
34 set_company_pref('default_receival_required', 'glsetup.purchase', 'smallint', 6, 10);
36 $result = $this->update_workorders();
38 $result = $this->do_cleanup();
39 // return update_company_prefs(array('version_id'=>$db_version));
43 // Checking before install
45 function pre_check($pref, $force)
50 // Test if patch was applied before.
52 function installed($pref)
54 $n = 2; // number of patches to be installed
57 if (!check_table($pref, 'suppliers', 'tax_algorithm')) $patchcnt++;
58 if (!check_table($pref, 'wo_costing')) $patchcnt++;
59 return $n == $patchcnt ? true : ($patchcnt ? ($patchcnt.'/'. $n) : 0);
62 function update_workorders()
66 $sql = "SELECT DISTINCT type, type_no, tran_date, person_id FROM ".TB_PREF."gl_trans WHERE `type`=".ST_WORKORDER
67 ." AND person_type_id=1";
68 $res = db_query($sql);
71 display_error("Cannot update work orders costs"
72 .':<br>'. db_error_msg($db));
75 while ($row = db_fetch($res))
77 $journal_id = get_next_trans_no(ST_JOURNAL);
79 $sql1 = "UPDATE ".TB_PREF."gl_trans SET `type`=".ST_JOURNAL.", type_no={$journal_id},
80 person_type_id=NULL, person_id=0
81 WHERE `type`=".ST_WORKORDER." AND type_no={$row['type_no']} AND tran_date='{$row['tran_date']}'
82 AND person_id='{$row['person_id']}'";
83 if (!db_query($sql1)) return false;
85 $sql2 = "INSERT INTO ".TB_PREF."wo_costing (workorder_id, cost_type, trans_no)
86 VALUES ({$row['type_no']}, {$row['person_id']}, {$journal_id})";
87 if (!db_query($sql2)) return false;
94 $sql = "ALTER TABLE `".TB_PREF."tax_group_items` DROP COLUMN `rate`";
95 return db_query($sql);