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 $result = $this->update_workorders();
35 $result = $this->do_cleanup();
36 // return update_company_prefs(array('version_id'=>$db_version));
40 // Checking before install
42 function pre_check($pref, $force)
47 // Test if patch was applied before.
49 function installed($pref)
51 $n = 2; // number of patches to be installed
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);
59 function update_workorders()
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);
68 display_error("Cannot update work orders costs"
69 .':<br>'. db_error_msg($db));
72 while ($row = db_fetch($res))
74 $journal_id = get_next_trans_no(ST_JOURNAL);
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;
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;
91 $sql = "ALTER TABLE `".TB_PREF."tax_group_items` DROP COLUMN `rate`";
92 return db_query($sql);