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($pref, $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 ($this->update_workorders())
34 // return update_company_prefs(array('version_id'=>$db_version), $pref);
38 // Checking before install
40 function pre_check($pref, $force)
45 // Test if patch was applied before.
47 function installed($pref)
49 $n = 2; // number of patches to be installed
52 if (!check_table($pref, 'suppliers', 'tax_algorithm')) $patchcnt++;
53 if (!check_table($pref, 'wo_costing')) $patchcnt++;
54 return $n == $patchcnt ? true : ($patchcnt ? ($patchcnt.'/'. $n) : 0);
57 function update_workorders()
61 $sql = "SELECT DISTINCT type, type_no, tran_date, person_id FROM ".TB_PREF."gl_trans WHERE `type`=".ST_WORKORDER
62 ." AND person_type_id=1";
63 $res = db_query($sql);
66 display_error("Cannot update work orders costs"
67 .':<br>'. db_error_msg($db));
70 while ($row = db_fetch($res))
72 $journal_id = get_next_trans_no(ST_JOURNAL);
74 $sql1 = "UPDATE ".TB_PREF."gl_trans SET `type`=".ST_JOURNAL.", type_no={$journal_id},
75 person_type_id=NULL, person_id=0
76 WHERE `type`=".ST_WORKORDER." AND type_no={$row['type_no']} AND tran_date='{$row['tran_date']}'
77 AND person_id='{$row['person_id']}'";
78 if (!db_query($sql1)) return false;
80 $sql2 = "INSERT INTO ".TB_PREF."wo_costing (workorder_id, cost_type, trans_no)
81 VALUES ({$row['type_no']}, {$row['person_id']}, {$journal_id})";
82 if (!db_query($sql2)) return false;