Default Receival Days implemented. Maintained in System and GL Setup.
[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 (get_company_pref('default_receival_required') === null) { // new in 2.4 installations
34                         set_company_pref('default_receival_required', 'glsetup.purchase', 'smallint', 6, 10);
35                 }
36                 $result = $this->update_workorders();
37                 if ($result)
38                         $result = $this->do_cleanup();
39 //              return  update_company_prefs(array('version_id'=>$db_version));
40                 return true;
41         }
42         //
43         //      Checking before install
44         //
45         function pre_check($pref, $force)
46         {
47                 return true;
48         }
49         //
50         //      Test if patch was applied before.
51         //
52         function installed($pref)
53         {
54                 $n = 2; // number of patches to be installed
55                 $patchcnt = 0;
56
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);
60         }
61
62         function update_workorders()
63         {
64                 global $db;
65
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);
69                 if (!$res)
70                 {
71                         display_error("Cannot update work orders costs"
72                                 .':<br>'. db_error_msg($db));
73                         return false;
74                 }
75                 while ($row = db_fetch($res))
76                 {
77                         $journal_id = get_next_trans_no(ST_JOURNAL);
78
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;
84                         
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;
88                 }
89                 return true;
90         }
91
92         function do_cleanup()
93         {
94                 $sql = "ALTER TABLE `".TB_PREF."tax_group_items` DROP COLUMN `rate`";
95                 return db_query($sql);
96         }
97 }
98
99 $install = new fa2_4;