Allow editing account when editing a row in GL Bank and GL Journal Entry
[fa-stable.git] / gl / includes / ui / gl_journal_ui.inc
index c5b5eb15a0c079169f0443bb02d19599eaea057e..04d703dda35f368e6ef9860506c7bea783dd7d29 100644 (file)
@@ -1,13 +1,13 @@
 <?php
 /**********************************************************************
     Copyright (C) FrontAccounting, LLC.
-       Released under the terms of the GNU Affero General Public License,
-       AGPL, as published by the Free Software Foundation, either version 
-       of the License, or (at your option) any later version.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
-    See the License here <http://www.gnu.org/licenses/agpl-3.0.html>.
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
 include_once($path_to_root . "/includes/ui.inc");
 include_once($path_to_root . "/includes/ui/items_cart.inc");
@@ -16,47 +16,46 @@ include_once($path_to_root . "/includes/ui/items_cart.inc");
 
 function display_order_header(&$Order)
 {
-       global $table_style2;
+       global $table_style2, $Ajax;
 
-       $qes = has_quick_entries(-1, 0);
-       start_table("$table_style2 width=90%");
-       if ($qes)
-               echo "<tr><td valign=top width=30%>"; // outer table
-       else    
-               echo "<tr><td valign=top width=50%>"; // outer table
+       $qes = has_quick_entries(QE_JOURNAL);
+       $new = $Order->order_id==0;
+       start_outer_table("$table_style2 width=90%");
+       table_section(1);
 
-       echo "<table>";
        start_row();
-    date_cells(_("Date:"), 'date_');
-       ref_cells(_("Reference:"), 'ref', '', references::get_next(0));
+    date_cells(_("Date:"), 'date_', '', $new);
+
+       table_section(2, $qes ? "20%" : "50%");
+       ref_cells(_("Reference:"), 'ref', '');
+       hidden('ref_original');
        end_row();
 
-       echo "</table>";
 
-       if ($qes)
-               echo "</td><td width=20%>"; // outer table
-       else    
-               echo "</td><td width=50%>"; // outer table
+       if ($new) {
+               table_section(3, "20%");
+               start_row();
+               check_cells(_("Reverse Transaction:"), 'Reverse', null);
+               end_row();
+       }
 
-       echo "<table>";
-       start_row();
-       check_cells(_("Reverse Transaction:"), 'Reverse', null);
-       end_row();
-       echo "</table>";
        if ($qes !== false)
        {
-               echo "</td><td width=50%>"; // outer table
-               echo "<table>";
+               table_section(3, "50%");
                start_row();
-               quick_entries_list_cells(_("Quick Entry:"), 'person_id', null, -1, 0);
-               amount_cells(_("Total Amount"), 'totamount', null, null, "&nbsp;&nbsp;".submit('go', _("Go"), false, false, true));                     
+               quick_entries_list_cells(_("Quick Entry").":", 'person_id', null, QE_JOURNAL, true);
+               $qid = get_quick_entry(get_post('person_id'));
+               if (list_updated('person_id')) {
+                       unset($_POST['totamount']); // enable default
+               $Ajax->activate('totamount');
+               }
+               amount_cells($qid['base_desc'].":", 'totamount', price_format($qid['base_amount']),
+                null, "&nbsp;&nbsp;".submit('go', _("Go"), false, false, true));
                end_row();
-               echo "</table>";
+
        }
                
-
-       echo "</td></tr>"; // outer table
-       end_table(1);
+       end_outer_table(1);
 }
 
 //---------------------------------------------------------------------------------
@@ -88,9 +87,9 @@ function display_gl_items($title, &$order)
        $k = 0;
 
        $id = find_submit('Edit');
-       foreach ($order->gl_items as $item) 
+       foreach ($order->gl_items as $line => $item) 
        {
-               if ($id != $item->index)
+               if ($id != $line)
                {
                alt_table_row_color($k);
 
@@ -111,15 +110,15 @@ function display_gl_items($title, &$order)
                }       
                        label_cell($item->reference);
 
-                       edit_button_cell("Edit$item->index", _("Edit"),
+                       edit_button_cell("Edit$line", _("Edit"),
                                _('Edit journal line'));
-                       delete_button_cell("Delete$item->index", _("Delete"),
+                       delete_button_cell("Delete$line", _("Delete"),
                                _('Remove line from journal'));
                end_row();
                } 
                else 
                {
-                       gl_edit_item_controls($order, $dim, $item->index);
+                       gl_edit_item_controls($order, $dim, $line);
                }
        }
 
@@ -133,6 +132,7 @@ function display_gl_items($title, &$order)
                label_cell(_("Total"), "align=right colspan=" . $colspan);
                amount_cell($order->gl_items_total_debit());
                amount_cell(abs($order->gl_items_total_credit()));
+               label_cell('', "colspan=3");
                end_row();
        }
 
@@ -150,6 +150,7 @@ function gl_edit_item_controls(&$order, $dim, $Index=null)
        $id = find_submit('Edit');
        if ($Index != -1 && $Index == $id)
        {
+           // Modifying an existing row
                $item = $order->gl_items[$Index];
                $_POST['code_id'] = $item->code_id;
                $_POST['dimension_id'] = $item->dimension_id;
@@ -167,10 +168,9 @@ function gl_edit_item_controls(&$order, $dim, $Index=null)
                $_POST['description'] = $item->description;
                $_POST['LineMemo'] = $item->reference;
 
-               hidden('Index', $item->index);
-               hidden('code_id', $item->code_id);
-               label_cell($_POST['code_id']);
-               label_cell($item->description);
+               hidden('Index', $id);
+               $skip_bank = !$_SESSION["wa_current_user"]->can_access('SA_BANKJOURNAL');
+               gl_all_accounts_list('code_id', null, $skip_bank, true);
                if ($dim >= 1) 
                        dimensions_list_cells(null, 'dimension_id', null, true, " ", false, 1);
                if ($dim > 1) 
@@ -179,6 +179,7 @@ function gl_edit_item_controls(&$order, $dim, $Index=null)
        }
        else
        {
+           // Adding a new row
                $_POST['AmountDebit'] = '';  //price_format(0);
                $_POST['AmountCredit'] = ''; //price_format(0);
                $_POST['dimension_id'] = 0;
@@ -190,8 +191,8 @@ function gl_edit_item_controls(&$order, $dim, $Index=null)
                            $Ajax->activate('code_id');
                }
                
-               $skip_bank = ($_SESSION["wa_current_user"]->access != 2);
-               gl_all_accounts_list('code_id', null, $skip_bank, false, true);
+               $skip_bank = !$_SESSION["wa_current_user"]->can_access('SA_BANKJOURNAL');
+               gl_all_accounts_list('code_id', null, $skip_bank, true);
                if ($dim >= 1)
                        dimensions_list_cells(null, 'dimension_id', null, true, " ", false, 1);
                if ($dim > 1)
@@ -204,7 +205,7 @@ function gl_edit_item_controls(&$order, $dim, $Index=null)
 
        small_amount_cells(null, 'AmountDebit');
        small_amount_cells(null, 'AmountCredit');
-       text_cells_ex(null, 'LineMemo', 35, 50);
+       text_cells_ex(null, 'LineMemo', 35, 255);
 
        if ($id != -1)
        {