898c566ac36c68e76e7f9f34e73d0e3019858f38
[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                 if ($this->update_workorders())
34 //              return  update_company_prefs(array('version_id'=>$db_version));
35                 return true;
36         }
37         //
38         //      Checking before install
39         //
40         function pre_check($pref, $force)
41         {
42                 return true;
43         }
44         //
45         //      Test if patch was applied before.
46         //
47         function installed($pref)
48         {
49                 $n = 2; // number of patches to be installed
50                 $patchcnt = 0;
51
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);
55         }
56
57         function update_workorders()
58         {
59                 global $db;
60
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);
64                 if (!$res)
65                 {
66                         display_error("Cannot update work orders costs"
67                                 .':<br>'. db_error_msg($db));
68                         return false;
69                 }
70                 while ($row = db_fetch($res))
71                 {
72                         $journal_id = get_next_trans_no(ST_JOURNAL);
73
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;
79                         
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;
83                 }
84                 return true;
85         }
86 }
87
88 $install = new fa2_4;