Merging latest changes from stable branch up to 2.3.24
authorJanusz Dobrowolski <janusz@frontaccounting.eu>
Sat, 18 Apr 2015 09:41:45 +0000 (11:41 +0200)
committerJanusz Dobrowolski <janusz@frontaccounting.eu>
Sat, 18 Apr 2015 09:42:56 +0000 (11:42 +0200)
15 files changed:
.gitattributes [new file with mode: 0644]
.gitignore [new file with mode: 0644]
.hgtags [deleted file]
README.md [new file with mode: 0644]
admin/db/users_db.inc
admin/security_roles.php
gl/includes/db/gl_db_trans.inc
includes/current_user.inc
includes/db_pager.inc
includes/session.inc
includes/ui/ui_controls.inc
reporting/rep304.php
reporting/rep409.php
reporting/reports_main.php
update.html

diff --git a/.gitattributes b/.gitattributes
new file mode 100644 (file)
index 0000000..2eba13d
--- /dev/null
@@ -0,0 +1,19 @@
+# prevent eol hell
+* text=auto !eol
+*.php  text
+*.inc  text
+*.sql  text
+*.js   text
+*.css  text
+*.po   text
+*.png  binary
+*.gif  binary
+*.jpg  binary
+*.ico  binary
+*.mo   binary
+
+# improve diff chunks headers
+*.php  diff=php
+*.inc  diff=php
+.gitattributes export-ignore  
+.gitignore export-ignore
diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..12a5b6d
--- /dev/null
@@ -0,0 +1,21 @@
+/company/*/attachments
+/company/*/backup/*.sql
+/company/*/backup/*.sql.gz
+/company/*/pdf_files/*.pdf
+/company/*/js_cache/*.js
+/company/*/reporting
+/company/*/images
+/tmp
+/lang
+/modules
+/themes
+!/themes/default
+!/themes/aqua
+!/themes/cool
+!/lang/en_US
+!/lang/new_language_template
+installed_languages.inc
+installed_extensions.php
+config.php
+config_db.php
+!index.php
diff --git a/.hgtags b/.hgtags
deleted file mode 100644 (file)
index 1951232..0000000
--- a/.hgtags
+++ /dev/null
@@ -1,62 +0,0 @@
-c1d866d6b83d0c5485b5db5e6274c84867e1a23d unstable_2_2_3
-f04bf81e73785ae8046fb0db6b24b195fae6a898 unstable_2_2_2
-1f8893afab256390ff0b886f20056240ee597256 unstable_2_2_1
-81311dff36fe32c2feb6852fd3291458c4427d58 version_2_2_11
-94a4d5bebb4181d1d1cbd321f10af8bf46f23970 unstable_2_2_7
-ac10033a27c784ed75bdd4145706a98a04e0f0f0 unstable_2_2_6
-ae6ee6b3dca9273b3d6e010f845b7d8429a84c5d version_1_16
-7cf9cc449f2e9d3abca545e055d9518bdd121e81 unstable_2_2_4
-644401c169dbd8cdc9a8c49c46a60770e5ea2c94 unstable_2_2_9
-884c13f8d4adf69c4ea8111bdbff8659ce684bf6 unstable_2_3_1
-bbb1429d2d8b31b7955ccc21b41252aa29ff072d version_2_2_10
-a41ebc4b648410485133e16e28fafbbb5898cd1e unstable_2_0_5
-46fa5d500a95af68ea55d1a9cddc0aa69e225376 version_2_2_0
-6cddf4e65926fd96be09c5a4428e96c941b95113 unstable_2_0_7
-f5dec7346cd355ca67d5c487a8f30b13389d3f41 unstable_2_0_6
-c8cdd464c255c08e3f6472299015a59f51b52455 unstable_2_0_3
-f31b0efb0a527d1bf017f4ea2537bfb1def988f4 unstable_2_1_4
-6f64efa83160486f8e5be15f5062bad1c1f85a26 version_2_2_1
-fb2509eb6e3cf4420c1664e14f9dce35aee982c8 version_2_2_2
-76194de16495b8a36af14fad086f08c3afc61ed2 unstable_2_1_7
-49aed0b1d11e8151353388932f93d7ca54ae595d unstable_2_1_RC
-7760009d2ff0639bc251752f7b1bb32ace798669 unstable_2_1_1
-d94f046142c31f258b858152f46d255f9d7dacf2 unstable_2_1_2
-b213c9447f9ba0c27805f5728c97ea9e4ada0562 unstable_2_1_3
-1de2d5e9f93d0cb4dad6e031df3e06d0b181085b version_2_3_1
-f632044a4f39f081865005e72e95ca20ab6fa78b version_2_3_0
-bc8fabaea78385d76ea351e4d4c4d0116b0c59b8 version_2_2_3
-8273257ef7c6b2dde049086a988a13f40e8617ee unstable_2_2_5
-cc6f75d3c45496fc1c20a2d7b4f4523cd07d2f5c version_2_0_6
-6cddf4e65926fd96be09c5a4428e96c941b95113 version_2_0_7
-c19490a9d1b54488956af837e17a8be2bc24a076 version_2_0_4
-5c607598409bbc48914fcea0ba54ab4e6422bd00 version_2_0_5
-97debb8eb697f85c361d0fc4c0b6e65ff64c3bf6 version_2_0_3
-f6e5ff894f5ed3f28854e8cbf076354ae86aed9d version_2_0_0
-4cbc9d7e54b3116241019cfc82cf68a0c54c264e version_2_2_5
-1fdb14bc5a6bf5a68217bcfdc020e3836b9277f0 version_2_1_7
-afeac5a74c874e05d64b2be4787ab5499b63ef40 version_2_1_6
-e7c6d0ef63fd27414096609f8736309a115de1d4 version_2_1_5
-4f3c216f042c49b5b50170400ba96ec615571732 version_2_1_4
-09dc26c993d9da57cdda60c63d58a4b828d94e35 version_2_1_3
-2b5dbb3897b866a166d2afbe55dacfdd6f5b77d8 version_2_1_2
-bf69ba50db32f35024b3100973a300f75b9a677b version_2_1_1
-7f7b008b5c4b584433c90a477df0ba561fc5c6a9 version_2_1_0
-dbab67c7bdb2e559fc6efaca42824dc3684d7fa8 version_2_2_4
-ae1add2821b66d1965804b95b6662cfc8da0fcba version_2_2_7
-0eaa0d4c41cc59f35e8fa0922bbd037b12918eaf version_2_1_RC
-71b8e0cce008720ec98634415baf498bb3cf3594 version_2_1_7_1
-63796dd5894b27aa4536286ec77916a29ccd5209 unstable_2_2_10
-e06cb52d1d84618b36ad0aaaa40781defecf002e version_2_2_9
-0d6c2e11d9357f33f166159a008dafc8456db9f9 version_2_2_6
-6345cd24d272070c42b91419962810f58bd06af0 version_2_3RC3
-074d18d3b920bdd41848a904b1a2af5aa40a3ab6 version_2_3_3
-b5cb2a38213b8638e6ece671e0c15796177ae3a9 version_2_3_4
-bbd75fe337d100a74505913140dd01a7bd925831 version_2_3_7
-390d9d69797c94d30ff61768485704717a96a9e3 version_2_3_10
-a8b119b77f054c85223eb3a256268a3d5a61b3cb version_2_3_9
-b2ead0b2a3e30c13254288eddf587b5d8140d731 version_2_3_8
-06e6f1abb26edd035aa34a5180da99ca72fce5dd version_2_3_11
-05b037ff3c0b294819843e6bc5ca6ee7b6555176 version_2_3_12
-180d185518cfc3e4fbb6b9ba2279436145c30ebc unstable_2.3.13
-a253b76db0fb0a972672c174f4af7a7ad85df066 version_2_3_13
-2515a2808a2de65f2eeed795b98e3ef7dbf328ea version_2_3_14
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..59ca3a1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,22 @@
+FrontAccounting ERP
+===================
+
+FrontAccounting ERP is open source, web-based accounting software for small and medium enterprises.
+It supports double entry accounting providing both low level journal entry and user friendly, document based 
+interface for everyday business activity with automatic GL postings generation. This is multicurrency,
+multilanguage system with active worldwide users community:
+
+Project web site http://frontaccounting.com
+
+SourceForge project page: http://sourceforge.net/projects/frontaccounting/
+
+Central users forum: http://frontaccounting.com/punbb/index.php
+
+Main code repository: http://git.code.sf.net/p/frontaccounting/git
+
+GitHub mirror: http://github.com/FrontAccountingERP/FA
+
+Mantis bugtracker: http://mantis.frontaccounting.com
+
+FrontAccounting is available under GPL v.3 license.
+
index 8e215a20222f736330edd537fd070fb7cbbe56a5..55b31d747714c506cc11f475a5c752f32a980908 100644 (file)
@@ -107,6 +107,9 @@ function get_user_by_email($email)
 
        $result = db_query($sql, "could not get user for email $email");
 
+       if (db_num_rows($result) != 1)
+               return false;
+
        return db_fetch($result);
 }
 
index 9ffe8d7bc17f09cb3158f4c2a8217bdfff9189e4..885acd774429cc856b8584d1675d109ceee552c2 100644 (file)
@@ -85,14 +85,14 @@ if (get_post('addupdate'))
                $sections = array();
                $areas = array();
                foreach($_POST as $p =>$val) {
-                       if (substr($p,0,4) == 'Area') {
+                       if (substr($p,0,4) == 'Area' && $val == 1) {
                                $a = substr($p, 4);
                                if (($a&~0xffff) && (($a&0xff00)<(99<<8))) {
                                        $sections[] = $a&~0xff; // add extended section for plugins
                                }
                                $areas[] = (int)$a;
                        }
-                       if (substr($p,0,7) == 'Section')
+                       if (substr($p,0,7) == 'Section' && $val == 1)
                                $sections[] = (int)substr($p, 7);
                }
 //             $areas = sort_areas($areas);
index d5adab4fa87d27ffc3bbe3faf4298efbcb5511cc..78bff3a9c953d3e41676f21871aef5b954c4d751 100644 (file)
@@ -562,7 +562,7 @@ function get_sql_for_journal_inquiry($filter, $from, $to, $ref='', $memo='', $al
                 $user_id=null, $contractor_id=null, $dimension=null)
 {
 
-       $sql = "SELECT  IF(ISNULL(a.gl_seq),0,a.gl_seq) as gl_seq,
+       $sql = "SELECT  IFNULL(a.gl_seq,0) as gl_seq,
                gl.tran_date,
                gl.type as trans_type,
                gl.type_no as trans_no,
index 87f71b1e45ce2a6c9ee10357bb4f3cc1ae4ee3c1..72a97118adbbb31e337e7c3d9cee5d1a972a16f0 100644 (file)
@@ -150,16 +150,16 @@ class current_user
 
                set_global_connection();
 
-               $myrow = get_user_by_email($email);
+               $user = get_user_by_email($email);
 
-               if ($myrow['id'] != "") {
+               if ($user != false) {
 
                        $bytes = openssl_random_pseudo_bytes(8, $cstrong);
                        $password   = base64_encode($bytes);
 
                        $hash = md5($password);
 
-                       update_user_password($myrow['id'], $myrow['user_id'], $hash);
+                       update_user_password($user['id'], $user['user_id'], $hash);
 
                        mail($myrow['email'], _("New password for")." ".$SysPrefs->app_title, $password);
 
index f9089e9ee5a0f2ba89f152762f0645f5dab020ad..b9e7e75927445b30fc45140cc9bbe72119a542ca 100644 (file)
@@ -303,7 +303,7 @@ class db_pager {
                if ($count) {
                        $group = $group == '' ? "*" : "DISTINCT $group";
 
-                       return "SELECT COUNT($group) FROM $from $where";
+                       return "SELECT COUNT(*) FROM (SELECT $group FROM $from $where) tmp_count";
                }
 
                $sql = "$select FROM $from $where";
index d8a82f8bd0699087dae83f27ff70d1fc1bf3a6fb..ad3978c27df990184058915412795db7b0a5e936 100644 (file)
@@ -149,9 +149,9 @@ function password_reset_fail()
        global $path_to_root;
        
   echo "<center><br><br><font size='5' color='red'><b>" . _("Incorrect Email") . "<b></font><br><br>";
-  echo "<b>" . _("The email address does not exist in the system.") . "<b><br><br>";
+  echo "<b>" . _("The email address does not exist in the system, or is used by more than one user.") . "<b><br><br>";
 
-  echo _("If you are not an authorized user, please contact your system administrator to obtain an account to enable you to use the system.");
+  echo _("Plase try again or contact your system administrator to obtain new password.");
   echo "<br><a href='$path_to_root/index.php?reset=1'>" . _("Try again") . "</a>";
   echo "</center>";
 
index 3d542f12bd9b99f5f99d7ddda641080e28b65194..afc02589bf78db1193b07d28e3655aa20efadc11 100644 (file)
@@ -60,7 +60,8 @@ function output_hidden()
 {
        global $hidden_fields;
 
-       echo implode('', $hidden_fields);
+       if (is_array($hidden_fields))
+               echo implode('', $hidden_fields);
        $hidden_fields = array();
 }
 //---------------------------------------------------------------------------------
@@ -131,6 +132,7 @@ function table_section($number=1, $width=false)
        if ($number > 1)
        {
                echo "</table>\n";
+               output_hidden();
                $width = ($width ? "width='$width'" : "");
                //echo "</td><td class='tableseparator' $width>\n"; // outer table
                echo "</td><td style='border-left:1px solid #cccccc;' $width>\n"; // outer table
@@ -141,7 +143,10 @@ function table_section($number=1, $width=false)
 function end_outer_table($breaks=0, $close_table=true)
 {
        if ($close_table)
+       {
                echo "</table>\n";
+               output_hidden();
+       }
        echo "</td></tr>\n";
        end_table($breaks);
 }
@@ -394,13 +399,14 @@ function div_end()
 {
     global $ajax_divs, $Ajax;
 
+       output_hidden();
     if (count($ajax_divs))
     {
                $div = array_pop($ajax_divs);
                if ($div[1] !== null)
                        $Ajax->addUpdate($div[1], $div[0], ob_get_flush());
-               echo "</div>";
     }
+       echo "</div>";
 }
 
 //-----------------------------------------------------------------------------
@@ -448,6 +454,7 @@ function tabbed_content_start($name, $tabs, $dft='') {
 }
 
 function tabbed_content_end() {
+       output_hidden();
        echo "</div>"; // content box (don't change to div_end() unless div_start() is used above)
        div_end(); // tabs widget
 }
index 4bdedbcb0e90e1b63428b509fa96e856d2be5104..723859669c45879b87456aa8176af2063ff50020 100644 (file)
@@ -29,14 +29,16 @@ include_once($path_to_root . "/inventory/includes/db/items_category_db.inc");
 
 print_inventory_sales();
 
-function getTransactions($category, $location, $fromcust, $from, $to)
+function getTransactions($category, $location, $fromcust, $from, $to, $show_service)
 {
        $from = date2sql($from);
        $to = date2sql($to);
+<<<<<<< HEAD
        $sql = "SELECT item.category_id,
                        category.description AS cat_description,
                        item.stock_id,
                        item.description, item.inactive,
+                       item.mb_flag,
                        move.loc_code,
                        trans.debtor_no,
                        debtor.name AS debtor_name,
@@ -56,16 +58,23 @@ function getTransactions($category, $location, $fromcust, $from, $to)
                AND move.trans_no=trans.trans_no
                AND move.tran_date>='$from'
                AND move.tran_date<='$to'
-               AND (trans.type=".ST_CUSTDELIVERY." OR move.type=".ST_CUSTCREDIT.")
-               AND (item.mb_flag='B' OR item.mb_flag='M')";
-               if ($category != 0)
-                       $sql .= " AND item.category_id = ".db_escape($category);
-               if ($location != '')
-                       $sql .= " AND move.loc_code = ".db_escape($location);
-               if ($fromcust != '')
-                       $sql .= " AND debtor.debtor_no = ".db_escape($fromcust);
-               $sql .= " GROUP BY item.stock_id, debtor.name ORDER BY item.category_id,
-                       item.stock_id, debtor.name";
+               AND (trans.type=".ST_CUSTDELIVERY." OR move.type=".ST_CUSTCREDIT.")";
+
+       if (!$show_service)
+               $sql .= " AND (item.mb_flag='B' OR item.mb_flag='M')";
+
+       if ($category != 0)
+               $sql .= " AND item.category_id = ".db_escape($category);
+
+       if ($location != '')
+               $sql .= " AND move.loc_code = ".db_escape($location);
+
+       if ($fromcust != '')
+               $sql .= " AND debtor.debtor_no = ".db_escape($fromcust);
+
+       $sql .= " GROUP BY item.stock_id, debtor.name ORDER BY item.category_id,
+               item.stock_id, debtor.name";
+
     return db_query($sql,"No transactions were returned");
 
 }
@@ -81,9 +90,10 @@ function print_inventory_sales()
     $category = $_POST['PARAM_2'];
     $location = $_POST['PARAM_3'];
     $fromcust = $_POST['PARAM_4'];
-       $comments = $_POST['PARAM_5'];
-       $orientation = $_POST['PARAM_6'];
-       $destination = $_POST['PARAM_7'];
+       $show_service = $_POST['PARAM_5'];
+       $comments = $_POST['PARAM_6'];
+       $orientation = $_POST['PARAM_7'];
+       $destination = $_POST['PARAM_8'];
        if ($destination)
                include_once($path_to_root . "/reporting/includes/excel_report.inc");
        else
@@ -108,6 +118,8 @@ function print_inventory_sales()
                $fromc = _('All');
        else
                $fromc = get_customer_name($fromcust);
+       if ($show_service) $show_service_items = _('Yes');
+       else $show_service_items = _('No');
 
        $cols = array(0, 75, 175, 250, 300, 375, 450,   515);
 
@@ -121,7 +133,8 @@ function print_inventory_sales()
                                    1 => array('text' => _('Period'),'from' => $from, 'to' => $to),
                                    2 => array('text' => _('Category'), 'from' => $cat, 'to' => ''),
                                    3 => array('text' => _('Location'), 'from' => $loc, 'to' => ''),
-                                   4 => array('text' => _('Customer'), 'from' => $fromc, 'to' => ''));
+                                   4 => array('text' => _('Customer'), 'from' => $fromc, 'to' => ''),
+                                   5 => array('text' => _('Show Service Items'), 'from' => $show_service_items, 'to' => ''));
 
     $rep = new FrontReport(_('Inventory Sales Report'), "InventorySalesReport", user_pagesize(), 9, $orientation);
        if ($orientation == 'L')
@@ -131,7 +144,7 @@ function print_inventory_sales()
     $rep->Info($params, $cols, $headers, $aligns);
     $rep->NewPage();
 
-       $res = getTransactions($category, $location, $fromcust, $from, $to);
+       $res = getTransactions($category, $location, $fromcust, $from, $to, $show_service);
        $total = $grandtotal = 0.0;
        $total1 = $grandtotal1 = 0.0;
        $total2 = $grandtotal2 = 0.0;
@@ -174,7 +187,10 @@ function print_inventory_sales()
                        $rep->TextCol(1, 3, $trans['description'].($trans['inactive']==1 ? " ("._("Inactive").")" : ""), -1);
                $rep->AmountCol(3, 4, $trans['qty'], get_qty_dec($trans['stock_id']));
                $rep->AmountCol(4, 5, $trans['amt'], $dec);
-               $rep->AmountCol(5, 6, $trans['cost'], $dec);
+               if (is_service($trans['mb_flag']))
+                       $rep->TextCol(5, 6, "---");
+               else    
+                       $rep->AmountCol(5, 6, $trans['cost'], $dec);
                $rep->AmountCol(6, 7, $cb, $dec);
                $rep->fontSize += 2;
                $total += $trans['amt'];
index 218f07faa59191b84f20cdda2c54c61325e2bb59..73a384813bc9bfb4d0e008180ce92052099a43a8 100644 (file)
@@ -89,28 +89,7 @@ function print_workorders()
                $has_marked = false;
                while ($myrow2=db_fetch($result))
                {
-                       $qoh = 0;
-                       $show_qoh = true;
-                       // if it's a non-stock item (eg. service) don't show qoh
-                       if (!has_stock_holding($myrow2["mb_flag"]))
-                               $show_qoh = false;
-
-                       if ($show_qoh)
-                               $qoh = get_qoh_on_date($myrow2["stock_id"], $myrow2["loc_code"], $date_);
-
-                       if ($show_qoh && ($myrow2["units_req"] * $myrow["units_issued"] > $qoh) &&
-                               !$SysPrefs->allow_negative_stock())
-                       {
-                               // oops, we don't have enough of one of the component items
-                               $has_marked = true;
-                       }
-                       else
-                               $has_marked = false;
-                       if ($has_marked)
-                               $str = $myrow2['stock_id']." ***";
-                       else
-                               $str = $myrow2['stock_id'];
-                       $rep->TextCol(0, 1,     $str, -2);
+                       $rep->TextCol(0, 1,     $myrow2['stock_id'], -2);
                        $rep->TextCol(1, 2, $myrow2['description'], -2);
 
                        $rep->TextCol(2, 3,     $myrow2['location_name'], -2);
@@ -124,9 +103,6 @@ function print_workorders()
                        if ($rep->row < $rep->bottomMargin + (15 * $rep->lineHeight))
                                $rep->NewPage();
                }
-               $rep->NewLine(1);
-               $rep->TextCol(0, 5," *** = "._("Insufficient stock"), -2);
-
                $memo = get_comments_string(ST_WORKORDER, $i);
                if ($memo != "")
                {
index 6f9555489ab66b14552c782da38cfc45419dcd5b..2435cc698923fd85d659aac8381b74593435ff70 100644 (file)
@@ -235,6 +235,7 @@ $reports->addReport(RC_INVENTORY, 304, _('Inventory &Sales Report'),
                        _('Inventory Category') => 'CATEGORIES',
                        _('Location') => 'LOCATIONS',
                        _('Customer') => 'CUSTOMERS_NO_FILTER',
+                       _('Show Service Items') => 'YES_NO',
                        _('Comments') => 'TEXTBOX',
                        _('Orientation') => 'ORIENTATION',
                        _('Destination') => 'DESTINATION'));
index 51dd4709eb4041397a4cfbc11560f0a4ada26020..d88329d564854199c1a6f954c605a235be193d12 100644 (file)
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head>\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-<meta http-equiv="CONTENT-TYPE" content="text/html; charset=iso-8859-1"><title>FrontAccounting Update</title>\r
-\r
-<meta name="GENERATOR" content="OpenOffice.org 2.4 (Linux)">\r
-<meta name="CREATED" content="0;0">\r
-<meta name="CHANGED" content="20100902;19041400"></head><body style="direction: ltr;" lang="en-US">\r
-<h4><strong><font color="#cc6600"><font style="font-size: 20pt;" size="5"><i>Front</i></font></font></strong><strong><font style="font-size: 20pt;" size="5">Accounting\r
-Update</font></strong></h4>\r
-<h2><strong><b>1. Application files update</b></strong></h2>\r
-\r
-<p style="margin-top: 0.42cm; page-break-after: avoid;"><font face="Liberation Sans, sans-serif"><font size="4"><strong><span style="">a. Source\r
-files update</span></strong></font></font></p>\r
-\r
-<p><strong><span style="">Extract distribution\r
-zip/tar.gz file in empty directory, and copy all the files to your\r
-FrontAccounting directory overwriting old files. If it is major\r
-release upgrade you can skip next step and go directly to cleanup.</span></strong></p>\r
-\r
-<p style="margin-top: 0.42cm; page-break-after: avoid;"><strong><font face="Liberation Sans, sans-serif"><font size="4"><span style="">b. Configuration\r
-files update</span></font></font></strong></p>\r
-\r
-<p><strong><span style="">Compare new\r
-</span></strong><strong><i><b>config.default.php</b></i></strong><strong>\r
-</strong><strong><span style="">file with the\r
-old\r
-</span></strong><strong><i><b>config.php </b></i></strong><strong><span style="font-style: normal;"><span style="">and\r
-add all n</span></span></strong><strong><span style="">ew\r
-settings (if any). </span></strong>\r
-</p>\r
-\r
-<strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><span style="background-color: white;">The following variables has been moved from config.default.php into sys_prefs table:<br>\r
-<br>\r
-$no_zero_lines_amount = 1;<br>\r
-$show_po_item_codes = 0;<br>\r
-$accounts_alpha = 0;<br>\r
-$loc_notification = 0;<br>\r
-$print_invoice_no = 0;<br>\r
-$allow_negative_prices = 1;<br>\r
-$print_item_images_on_quote = 0;<br>\r
-<br>\r
-These values can be maintained in Setup tab -&gt; System and GL Setup.<br>\r
-<br>\r
-The following variables has been moved from config.default.php into sys_refs table:<br>\r
-<br>\r
-$alternative_tax_include_on_docs = 0;<br>\r
-$suppress_tax_rates = 0;<br>\r
-<br>\r
-These values can be maintained in Setup tab -&gt; Company Setup.<br>\r
-<br>\r
-The following variables has been moved from config.default.php into users table:<br>\r
-<br>\r
-$save_report_selections = 0;<br>\r
-$use_date_picker = 1;<br>\r
-$def_print_destination = 0;<br>\r
-$def_print_orientation = 0;<br>\r
-<br>\r
-These values can be maintained in Setup tab -&gt; Display Setup or Preferences.<br>\r
-<br>\r
-&nbsp;Please also remove these variables from your existing config.php file</span><br>\r
-</span></span></strong><h2><strong><b>2. Database upgrade</b></strong></h2>\r
-<p><strong><span style="">This step can be\r
-skipped\r
-for small version updates i.e. when you have already installed\r
-FrontAccounting version 2.4 or later. Before database upgrade is\r
-done on all company databases backup file is created automatically to\r
-enable database restore after failure.</span></strong></p>\r
-<p><strong><span style="">After major version\r
-upgrade overwriting files in first step makes the system unaccessible\r
-for all users but site admin, who have to run upgrade procedures to\r
-update all company databases to the new version provided with the\r
-release. After logging to administrator account of first installed\r
-company go directly to Setup/Software Upgrade screen, mark all\r
-subsequent 'Install' checkboxes and press 'Upgrade System'.</span></strong></p>\r
-<p style="">If something goes wrong during\r
-upgrade, you can eventually try forced upgrade option. Forced upgrade\r
-ignores some smaller errors which can arise during upgrade due to\r
-some exotic database configuration. This is depreciated option, so\r
-first read error messages if any, try to fix signalized problems,\r
-restore databases from backup and retry normal installation. To run\r
-upgrade in forced mode check box 'Force Upgrade', and press 'Upgrade\r
-System' again.</p>\r
-<h2>3. Final cleanup</h2>\r
-<p>Remove or rename install folder in main FrontAccounting\r
-directory.\r
-</p><h2>4. New features configuration</h2>\r
-<p>During upgrade process new features are initialized to default\r
-status, and sometimes old settings are also changed to conform with\r
-new security policy. This automatic process is designed to be as\r
-neutral for end users as possible, however sometimes site or company\r
-admin intervention can be necessary to set thing after changes to\r
-their best state. Below you will find description of new settings\r
-available after upgrade.</p>\r
-\r
-<p>----------------------</p>\r
-<ul>\r
-</ul>\r
+<html><head>
+<meta http-equiv="CONTENT-TYPE" content="text/html; charset=iso-8859-1"><title>FrontAccounting Update</title>
+<meta name="GENERATOR" content="OpenOffice.org 2.4 (Linux)">
+<meta name="CREATED" content="0;0">
+<meta name="CHANGED" content="20100902;19041400"></head><body style="direction: ltr;" lang="en-US">
+<h4><strong><font color="#cc6600"><font style="font-size: 20pt;" size="5"><i>Front</i></font></font></strong><strong><font style="font-size: 20pt;" size="5">Accounting
+Update</font></strong></h4>
+<h2>Important Notes for release 2.3.22.</h2>
+
+<h4>New global flags in config.php (config-default.php):</h4>
+/* Show average costed values instead of fixed standard cost */ In Enventory Valuation Report.<br>
+<span style="font-weight: bold;">$use_costed_values = 0;</span><br>
+<br>
+/* Print Item Images on Sales Quotations. Set to 1 if so. */<br>
+<span style="font-weight: bold;">$print_item_images_on_quote = 0;</span><br>
+<h2>Important Notes for release 2.3.21.</h2>
+
+<h4>Crucial security patches:</h4>
+
+This version consists of crucial security patches and this applies especially to all publicly available servers, <br>
+&nbsp;f.i. installations which are run in not fully trusted environment like public demos, shared accounts or SAAS.<br>
+<h4>New global flags in config.php (config-default.php):</h4>
+/* Whether to allow sending new password by e-mail */<br>
+<span style="font-weight: bold;">$allow_password_reset = false</span><h2>Important Notes for release 2.3.20.</h2>
+
+<h4>Crucial security patches:</h4>
+This version consists of crucial security patches and all guest FA
+installations (I mean whenever FA is run in not fully trusted
+environment) should be updtaed.<br>
+<h2>Important Notes for release 2.3.17.</h2>
+
+<h4>New global flags in config.php (config-default.php):</h4>
+/*<br>
+&nbsp;&nbsp;&nbsp; Choose Exchange Rate Provider<br>
+&nbsp;&nbsp;&nbsp; Default is ECB for backwards compatibility<br>
+*/<br>
+<span style="font-weight: bold;">$xr_providers = array("ECB", "YAHOO", "GOOGLE", "BLOOMBERG");<br>
+$dflt_xr_provider = 0;<br>
+<br>
+</span>/*<br>
+&nbsp;&nbsp;&nbsp; Set to true when remote service is authoritative
+source of exchange rates, and can be stored automatically without<br>
+&nbsp;&nbsp;&nbsp; manual edition. Otherwise exrate is stored on first new currency transaction of the day.<br>
+*/<br>
+<span style="font-weight: bold;">$xr_provider_authoritative = false;<br>
+</span><h2>Important Notes for release 2.3.16.</h2>
+<h4>New global flags in config.php (config-default.php):</h4><span style="font-weight: bold;">/*<br>&nbsp;&nbsp; </span>&nbsp;Optional sorting new sales documents lines according to item code<span style="font-weight: bold;"><br>*/<br>$sort_sales_items = false;<br><br>/*<br>&nbsp;&nbsp; &nbsp;</span>Trial Balance opening balance presentation option.<br>&nbsp;&nbsp; &nbsp;When set to true past years part of opening balance is cleared.<span style="font-weight: bold;"><br>*/<br>$clear_trial_balance_opening = false;</span><h2>Important Notes for release 2.3.14.</h2>
+<h4>New global flags in config.php (config-default.php):</h4>
+/* default print orientation. 0 = Portrait, 1 = Landscape */<br>
+&nbsp;&nbsp;&nbsp; <span style="font-weight: bold;">$def_print_orientation
+= 0;</span><br>
+<h2>Important Notes for release 2.3.13.</h2>
+<h4>New global flags in config.php (config-default.php):</h4>
+/* No check on edit conflicts. Maybe needed to be set to 1 in certains
+Windows Servers */<br>
+&nbsp;&nbsp;&nbsp; <span style="font-weight: bold;">$no_check_edit_conflicts
+= 0;</span><br>
+<h2>Important Notes for release 2.3.12.</h2>
+<h4>New global flags in config.php (config-default.php):</h4>
+/* <br>
+&nbsp;&nbsp;&nbsp; Display a dropdown select box for
+choosing Company to login if false.<br>
+&nbsp;&nbsp;&nbsp; Show a blank editbox only if true where
+the Company NickName<br>
+&nbsp;&nbsp;&nbsp; will have to be manually entered. This
+is when privacy is needed.<br>
+*/<br>
+&nbsp; &nbsp; <span style="font-weight: bold;">$text_company_selection</span>&nbsp;
+= false;<br>
+<br>
+/*&nbsp; Should FA hide menu items (Applications, Modules, and
+Actions) from the user if they don't have access to them? <br>
+&nbsp;&nbsp;&nbsp; 0 for
+no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 for yes<br>
+*/<br>
+<br>
+&nbsp;&nbsp;&nbsp; <span style="font-weight: bold;">$hide_inaccessible_menu_items</span>
+= 0;<br>
+<br>
+/*<br>
+&nbsp;&nbsp;&nbsp; Brute force prevention.<br>
+&nbsp;&nbsp;&nbsp; $login_delay seconds delay is required
+between login attempts after $login_max_attemps failed logins.<br>
+&nbsp;&nbsp;&nbsp; Set $login_delay to 0 to disable the
+feature (not recommended)<br>
+*/<br>
+&nbsp; &nbsp; <span style="font-weight: bold;">$login_delay</span>
+= 30;<br>
+&nbsp; &nbsp; <span style="font-weight: bold;">$login_max_attempts</span>
+= 10;
+<h2><strong></strong>Important Notes for release
+2.3.5.</h2>
+Change in the behaviour of <span style="font-weight: bold; font-style: italic;">Recurrent
+Invoices</span>.<br>
+<ul>
+<li>Now
+the Last Sent day is stamped with the former Last Sent (or Begin date
+the first time) + months + days. Before the Last Sent day was stamped
+with tthe creation date (today). The Invoice date is still todays date.
+</li>
+<li>If you for some reason want to make a pause in the
+recurrent
+invoices, you can now edit the Last Sent day in the Management section
+of Sales tab.</li>
+<li>Before the days value, together with a month
+value, decided which day in the month the invoice was due..
+&nbsp;This
+does not&nbsp;work now. You can&nbsp;change the day in the
+month you
+want the recurrency to happen by setting the Last Sent day with the new
+day in the Management section.&nbsp;</li>
+<li>If you create a new Recurrent Invoice the Beginning date
+can be set to the day in the month you want the recurrencies to be due.</li>
+</ul>
+<h2>Important Notes</h2>
+<p>Upgrade process can be done only by administrator of the first
+company created during FrontAccounting installation. This person is
+considered as a site admin who have granted access to potentially
+dangerous setup options, like Setup/Software Upgrade.</p>
+<p>In the following description sections related to older FA
+versions are
+prefixed with <span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[color
+tags]</span><span style="background: transparent none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
+. Y</span>ou can skip tagged fragment safely if currently FA
+application is newer than the version in tag.</p>
+<p>Upgrade process consists of up to four stages, some of them
+are
+optional:</p>
+<ol>
+<li>
+<p>Application source files update </p>
+</li>
+<li>
+<p>Database upgrade &#8211; this step is needed only during upgrade
+which involves change in major application version number (e.g. from
+2.2.x to 2.3.x), and sometimes during upgrade from beta release to
+stable version. Otherwise this step can be skipped.</p>
+</li>
+<li>
+<p>Final cleanup &#8211; is needed when some old source files,
+obsoleted by new release should be removed.</p>
+</li>
+<li>
+<p>New features configuration &#8211; this is optional step needed
+for most major releases and some minor ones. </p>
+</li>
+</ol>
+<p style="margin-bottom: 0cm;">Before starting upgrade
+ensure nobody
+is using the application and make database backup for all companies.
+To be on safe side backup also old source files, especially those
+locally customized (if any).</p>
+<p>Log into admin account of first company.<strong> </strong><strong><span style="">If
+you use a theme other than the standard 3 (aqua, cool or default),
+switch to one of these before going further.</span></strong></p>
+<h2><strong><b>1. Application files update</b></strong></h2>
+<p style="margin-top: 0.42cm; page-break-after: avoid;"><font face="Liberation Sans, sans-serif"><font size="4"><strong><span style="">a. Source
+files update</span></strong></font></font></p>
+<p><strong><span style="">Extract distribution
+zip/tar.gz file in empty directory, and copy all the files to your
+FrontAccounting directory overwriting old files. If it is major
+release upgrade you can skip next step and go directly to cleanup.</span></strong></p>
+<p style="margin-top: 0.42cm; page-break-after: avoid;"><strong><font face="Liberation Sans, sans-serif"><font size="4"><span style="">b. Configuration
+files update</span></font></font></strong></p>
+<p><strong><span style="">Compare new
+</span></strong><strong><i><b>config.default.php</b></i></strong><strong>
+</strong><strong><span style="">file with the
+old
+</span></strong><strong><i><b>config.php </b></i></strong><strong><span style="font-style: normal;"><span style="">and
+add all n</span></span></strong><strong><span style="">ew
+settings (if any). </span></strong>
+</p>
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA
+2.2beta]</span></span></strong></p>
+<p><strong> <span style="">$show_users_online
+= 0;</span></strong></p>
+<p><strong> <span style="">$def_print_destination
+= 0;</span></strong></p>
+<p><strong><span style="">$dflt_date_fmt=0;</span></strong></p>
+<p><strong><span style="">$dflt_date_sep=0;</span></strong></p>
+<p><strong><span style="">$table_style,table_style2
+changed</span></strong></p>
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA
+2.3beta]</span></span></strong></p>
+<p><strong> <span style="">$alternative_tax_include_on_doc=0;</span></strong></p>
+<p><strong><span style="">$suppress_tax_rates
+= 0;</span></strong></p>
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA
+2.3RC1]</span></span></strong><strong> </strong>
+</p>
+<p><strong><span style="">Application version
+information and a couple of other private FA variables are stored in
+</span></strong><strong><i><b>version.php</b></i></strong><strong>
+</strong><strong><span style="">file. The
+application version displayed in footer is defined in $version
+variable unless this is set in config.php file. If you want current
+release version to be displayed on every FA update just remove or
+comment out $version variable in </span></strong><strong><span style="font-style: normal;"><span style="">config.php</span></span></strong><strong><span style="">.</span></strong></p>
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA
+2.3RC2]</span></span></strong></p>
+<p><strong> <span style="">$save_report_selections
+&nbsp;= 0; &nbsp;// A value &gt; 0 means days to save the
+report selections.</span></strong></p>
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA
+2.3]</span></span></strong></p>
+<p><strong> <span style="">$save_po_item_codes
+&nbsp;= 0; &nbsp;//&nbsp; show item codes on purchase
+order&nbsp;</span></strong></p>
+<p><strong><span style="">$def_print_destination
+= 0; // &nbsp;default print destination. 0 = PDF/Printer, 1 = Excel</span></strong></p>
+<p><strong><span style="">$alternative_tax_include_on_docs
+= 0; // &nbsp;1 = print Subtotal tax excluded, tax and Total tax
+included</span></strong></p>
+<p><strong><span style="">$suppress_tax_rates
+= 0; // &nbsp;suppress tax rates on documents. 0 = no, 1 = yes.</span></strong></p>
+<strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"></span></span></strong><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"></span></span></strong>
+<h2><strong><b>2. Database upgrade</b></strong></h2>
+<p><strong><span style="">This step can be
+skipped
+for small version updates i.e. when you have already installed
+FrontAccounting version 2.3.1 or later. Before database upgrade is
+done on all company databases backup file is created automatically to
+enable database restore after failure.</span></strong></p>
+<p><strong><span style="">After major version
+upgrade overwriting files in first step makes the system unaccessible
+for all users but site admin, who have to run upgrade procedures to
+update all company databases to the new version provided with the
+release. After logging to administrator account of first installed
+company go directly to Setup/Software Upgrade screen, mark all
+subsequent 'Install' checkboxes and press 'Upgrade System'.</span></strong></p>
+<p style="">If something goes wrong during
+upgrade, you can eventually try forced upgrade option. Forced upgrade
+ignores some smaller errors which can arise during upgrade due to
+some exotic database configuration. This is depreciated option, so
+first read error messages if any, try to fix signalized problems,
+restore databases from backup and retry normal installation. To run
+upgrade in forced mode check box 'Force Upgrade', and press 'Upgrade
+System' again.</p>
+<h2>3. Final cleanup</h2>
+<p>Remove or rename install folder in main FrontAccounting
+directory.
+</p>
+<p>After upgrade is installed you can remove files obsoleted by
+new
+FrontAccounting version. Also old, unused settings <span style="font-style: normal;"><span style="">can
+be removed from </span></span><i><b>config.php</b></i><span style="font-style: normal;"><span style="">
+file.</span></span></p>
+<p style="margin-top: 0.42cm; page-break-after: avoid;"><font face="Liberation Sans, sans-serif"><font size="4">a.
+Source files cleanup</font></font></p>
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA
+2.2beta]</span></span></strong></p>
+<p><strong><span style=""><span style="background: transparent none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">/includes/reserved.inc
+&#8211; removed.</span></span></strong></p>
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA
+2.1]</span></span></strong><strong> </strong>
+</p>
+<p><strong><span style="">/admin/db/v_banktrans.inc
+- removed</span></strong></p>
+<p style="margin-top: 0.42cm; page-break-after: avoid;"><font face="Liberation Sans, sans-serif"><font size="4"><span style="font-style: normal;"><span style="">b.
+Config.php cleanup </span></span></font></font>
+</p>
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA
+2.2RC1]</span></span></strong><strong> </strong>
+</p>
+<p><strong><span style="">$security_headings,
+$security_groups arrays &#8211; moved to database (see Access Setup) </span></strong>
+</p>
+<p><strong><span style="">$def_app &#8211; moved
+to user configuration in database.</span></strong></p>
+<p><strong><span style="font-style: normal;"><span style="">$version
+&#8211; moved to </span></span></strong><strong><i><b>version.php</b></i></strong><strong><span style="font-style: normal;"><span style="">
+file. Remove</span></span></strong></p>
+<h2>4. New features configuration</h2>
+<p>During upgrade process new features are initialized to default
+status, and sometimes old settings are also changed to conform with
+new security policy. This automatic process is designed to be as
+neutral for end users as possible, however sometimes site or company
+admin intervention can be necessary to set thing after changes to
+their best state. Below you will find description of new settings
+available after upgrade.</p>
+<p><br>
+<br>
+</p>
+<p>----------------------</p>
+<ul>
+</ul>
 </body></html>
\ No newline at end of file