MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
-class fa2_3 {
- var $version = '2.3'; // version installed
+class fa2_3 extends fa_patch {
+ var $previous = '2.2rc'; // applicable database version
+ var $version = '2.3rc'; // version installed
var $description;
var $sql = 'alter2.3.sql';
var $preconf = true;
var $beta = false; // upgrade from 2.2 or 2.3beta;
- function fa2_3() {
+ function __construct() {
$this->description = _('Upgrade from version 2.2 to 2.3');
}
// Install procedure. All additional changes
// not included in sql file should go here.
//
- function install($pref, $force)
+ function install($company, $force=false)
{
global $db_version, $dflt_lang;
+ $this->preconf = $this->fix_extensions();
if (!$this->preconf)
return false;
if (!$this->beta) {
// all specials below are already done on 2.3beta
- $sql = "SELECT debtor_no, payment_terms FROM {$pref}debtors_master";
-
+ $sql = "SELECT debtor_no, payment_terms FROM ".TB_PREF."debtors_master";
+
$result = db_query($sql);
if (!$result) {
display_error("Cannot read customers"
}
// update all sales orders and transactions with customer std payment terms
while($cust = db_fetch($result)) {
- $sql = "UPDATE {$pref}debtor_trans SET "
+ $sql = "UPDATE ".TB_PREF."debtor_trans SET "
."payment_terms = '" .$cust['payment_terms']
."' WHERE debtor_no='".$cust['debtor_no']."'";
if (db_query($sql)==false) {
.':<br>'. db_error_msg($db));
return false;
}
- $sql = "UPDATE {$pref}sales_orders SET "
+ $sql = "UPDATE ".TB_PREF."sales_orders SET "
."payment_terms = '" .$cust['payment_terms']
."' WHERE debtor_no='".$cust['debtor_no']."'";
if (db_query($sql)==false) {
return false;
}
}
- if (!$this->update_totals($pref)) {
+ if (!$this->update_totals()) {
display_error("Cannot update order totals");
return false;
}
- if (!$this->update_line_relations($pref)) {
+ if (!$this->update_line_relations()) {
display_error("Cannot update sales document links");
return false;
}
foreach($dropcol as $table => $columns)
foreach($columns as $col) {
- if (db_query("ALTER TABLE `{$pref}{$table}` DROP `$col`")==false) {
+ if (db_query("ALTER TABLE `".TB_PREF."{$table}` DROP `$col`")==false) {
display_error("Cannot drop {$table}.{$col} column:<br>".db_error_msg($db));
return false;
}
}
// remove old preferences table after upgrade script has been executed
- $sql = "DROP TABLE IF EXISTS `{$pref}company`";
+ $sql = "DROP TABLE IF EXISTS `".TB_PREF."company`";
if (!db_query($sql))
return false;
}
$this->update_lang_cfg();
- return update_company_prefs(array('version_id'=>$db_version), $pref);
+ return update_company_prefs(array('version_id'=>$db_version));
}
//
// Checking before install
//
- function pre_check($pref, $force)
+ function prepare()
{
- if ($this->beta && !$force)
+ if ($this->beta)
$this->sql = 'alter2.3rc.sql';
return true;
}
- //
- // Test if patch was applied before.
- //
- function installed($pref) {
- $this->beta = !check_table($pref, 'suppliers', 'tax_included');
- $this->preconf = $this->fix_extensions();
- $n = 1; // number of patches to be installed
- $patchcnt = 0;
-
- if (!$this->beta) {
- $n += 3;
- if (!check_table($pref, 'comments', 'type', array('Key'=>'MUL'))) $patchcnt++;
- if (!check_table($pref, 'sys_prefs')) $patchcnt++;
- if (!check_table($pref, 'sales_orders', 'payment_terms')) $patchcnt++;
- }
- if (!check_table($pref, 'purch_orders', 'tax_included')) $patchcnt++;
- return $n == $patchcnt ? true : ($patchcnt ? ($patchcnt.'/'. $n) : 0);
- }
//=========================================================================================
// 2.3 specific update functions
//
-
+
/*
Update order totals
*/
- function update_totals($pref)
+ function update_totals()
{
global $path_to_root;
include_once("$path_to_root/sales/includes/cart_class.inc");
include_once("$path_to_root/purchasing/includes/po_class.inc");
$cart = new cart(ST_SALESORDER);
- $sql = "SELECT order_no, trans_type FROM {$pref}sales_orders";
+ $sql = "SELECT order_no, trans_type FROM ".TB_PREF."sales_orders";
$orders = db_query($sql);
if (!$orders)
return false;
while ($order = db_fetch($orders)) {
read_sales_order($order['order_no'], $cart, $order['trans_type']);
- $result = db_query("UPDATE {$pref}sales_orders
+ $result = db_query("UPDATE ".TB_PREF."sales_orders
SET total=".$cart->get_trans_total()
." WHERE order_no=".$order[0]);
unset($cart->line_items);
}
unset($cart);
$cart = new purch_order();
- $sql = "SELECT order_no FROM {$pref}purch_orders";
+ $sql = "SELECT order_no FROM ".TB_PREF."purch_orders";
$orders = db_query($sql);
if (!$orders)
return false;
while ($order_no = db_fetch($orders)) {
read_po($order_no[0], $cart);
- $result = db_query("UPDATE {$pref}purch_orders SET total=".$cart->get_trans_total());
+ $result = db_query("UPDATE ".TB_PREF."purch_orders SET total=".$cart->get_trans_total());
unset($cart->line_items);
}
return true;
there can be sales documents with lines not properly linked to parents. This rare
cases will be described in error log.
*/
- function update_line_relations($pref)
+ function update_line_relations()
{
global $path_to_root, $systypes_array;
require_once("$path_to_root/includes/sysnames.inc");
- $sql = "SELECT d.type, trans_no, order_ FROM {$pref}debtor_trans d
- LEFT JOIN {$pref}voided v ON d.type=v.type AND d.trans_no=v.id
+ $sql = "SELECT d.type, trans_no, order_ FROM ".TB_PREF."debtor_trans d
+ LEFT JOIN ".TB_PREF."voided v ON d.type=v.type AND d.trans_no=v.id
WHERE ISNULL(v.type) AND
(d.type=".ST_CUSTDELIVERY
." OR d.type=".ST_SALESINVOICE
if ($src_line['stock_id'] == $doc_line['stock_id']
&& ($src_line['quantity'] >= $doc_line['quantity'])) {
- $sql = "UPDATE {$pref}debtor_trans_details SET src_id = {$src_line['id']}
+ $sql = "UPDATE ".TB_PREF."debtor_trans_details SET src_id = {$src_line['id']}
WHERE id = {$doc_line['id']}";
if (!db_query($sql))
return false;
}
return true;
}
-
+
function fix_extensions()
{
global $path_to_root, $next_extension_id, $installed_languages;
-
+
$lang_chd = false;
foreach($installed_languages as $i => $lang) {
if (!isset($lang['path'])) {
if ($lang_chd)
write_lang();
-
$installed_extensions= get_company_extensions();
if (!isset($next_extension_id))
$next_extension_id = 1;
$new_exts = array();
-
+
/* Old extension modules are uninstalled - they need manual porting after
heavy changes in extension system in FA2.3
-
+
foreach($installed_extensions as $i => $ext)
{
if (isset($ext['title'])) // old type entry
$install = new fa2_3;
-?>
\ No newline at end of file