Focus set to invalid field after submit check fail
[fa-stable.git] / sales / credit_note_entry.php
index c53cc062b6eeeae4d46c90c671605b8262368140..fe9bd274a7468c8cac970a4ca132817030caea59 100644 (file)
 <?php
-
-/*The credit selection screen uses the Cart class used for the making up orders
-some of the variable names refer to order - please think credit when you read order */
-
+//---------------------------------------------------------------------------
+//
+//     Entry/Modify free hand Credit Note
+//
 $page_security = 3;
 $path_to_root="..";
 include_once($path_to_root . "/sales/includes/cart_class.inc");
-
 include_once($path_to_root . "/includes/session.inc");
-
 include_once($path_to_root . "/includes/data_checks.inc");
-
 include_once($path_to_root . "/sales/includes/sales_db.inc");
-
 include_once($path_to_root . "/sales/includes/sales_ui.inc");
-
 include_once($path_to_root . "/sales/includes/ui/sales_credit_ui.inc");
 include_once($path_to_root . "/sales/includes/ui/sales_order_ui.inc");
 
 $js = "";
-if ($use_popup_windows)
+if ($use_popup_windows) {
        $js .= get_js_open_window(900, 500);
-if ($use_date_picker)
+}
+if ($use_date_picker) {
        $js .= get_js_date_picker();
-page(_("Customer Credit Note"), false, false, "", $js);
+}
+
+if(isset($_GET['NewCredit'])) {
+       $_SESSION['page_title'] = _("Customer Credit Note");
+       handle_new_credit(0);
+} elseif (isset($_GET['ModifyCredit'])) {
+       $_SESSION['page_title'] = sprintf(_("Modifying Customer Credit Note #%d"), $_GET['ModifyCredit']);
+       handle_new_credit($_GET['ModifyCredit']);
+       $help_page_title = _("Modifying Customer Credit Note");
+}
+
+page($_SESSION['page_title'],false, false, "", $js);
 
-//-----------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
 check_db_has_stock_items(_("There are no items defined in the system."));
 
 check_db_has_customer_branches(_("There are no customers, or there are no customers with branches. Please define customers and customer branches."));
 
-//---------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
-if (isset($_GET['AddedID']))
-{
+if (isset($_GET['AddedID'])) {
        $credit_no = $_GET['AddedID'];
        $trans_type = 11;
 
-       display_notification_centered(_("Credit Note has been processed"));
+       display_notification_centered(sprintf(_("Credit Note # %d has been processed"),$credit_no));
+
        display_note(get_customer_trans_view_str($trans_type, $credit_no, _("View this credit note")), 0, 1);
 
-       display_note(get_gl_view_str($trans_type, $credit_no, _("View the GL Journal Entries for this Credit Note")));
+       display_note(get_gl_view_str($trans_type, $credit_no, _("View the GL Journal Entries for this Credit Note")));
 
        hyperlink_params($_SERVER['PHP_SELF'], _("Enter Another Credit Note"), "NewCredit=yes");
 
        display_footer_exit();
 }
+//--------------------------------------------------------------------------------
+
+function line_start_focus() {
+  set_focus(get_company_pref('no_supplier_list') ? 'stock_id_edit' : 'StockID2');
+}
 
-//--------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
 function copy_to_cn()
 {
-       $_SESSION['credit_items']->memo_ = $_POST['CreditText'];
-
-       $_SESSION['credit_items']->orig_order_date = $_POST['OrderDate'];
-       $_SESSION['credit_items']->freight_cost = $_POST['ChargeFreightCost'];
-
-       $_SESSION['credit_items']->Location = $_POST["Location"];
-
-       $_SESSION['credit_items']->default_sales_type = $_POST['sales_type_id'];
-       $_SESSION['credit_items']->tax_group_id = $_POST["tax_group_id"];
+       $_SESSION['Items']->Comments = $_POST['CreditText'];
+       $_SESSION['Items']->document_date = $_POST['OrderDate'];
+       $_SESSION['Items']->freight_cost = input_num('ChargeFreightCost');
+       $_SESSION['Items']->Location = $_POST["Location"];
+       $_SESSION['Items']->sales_type = $_POST['sales_type_id'];
+       $_SESSION['Items']->reference = $_POST['ref'];
+       $_SESSION['Items']->ship_via = $_POST['ShipperID'];
 }
 
-//--------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
 function copy_from_cn()
 {
-       $_POST['CreditText'] = $_SESSION['credit_items']->memo_;
-
-       $_POST['OrderDate'] = $_SESSION['credit_items']->orig_order_date;
-       $_POST['ChargeFreightCost'] = $_SESSION['credit_items']->freight_cost;
-
-       $_POST["Location"] = $_SESSION['credit_items']->Location;
-
-       $_POST['sales_type_id'] = $_SESSION['credit_items']->default_sales_type;
-       $_POST["tax_group_id"] = $_SESSION['credit_items']->tax_group_id;
+       $_POST['CreditText'] = $_SESSION['Items']->Comments;
+       $_POST['OrderDate'] = $_SESSION['Items']->document_date;
+       $_POST['ChargeFreightCost'] = price_format($_SESSION['Items']->freight_cost);
+       $_POST['Location'] = $_SESSION['Items']->Location;
+       $_POST['sales_type_id'] = $_SESSION['Items']->sales_type;
+       $_POST['ref'] = $_SESSION['Items']->reference;
+       $_POST['ShipperID'] = $_SESSION['Items']->ship_via;
 }
 
-//-----------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
-function handle_new_order()
+function handle_new_credit($trans_no)
 {
-       if (isset($_SESSION['credit_items']))
-       {
-               unset ($_SESSION['credit_items']->line_items);
-               unset ($_SESSION['credit_items']);
-       }
-
-    session_register("credit_items");
-
-    $_SESSION['credit_items'] = new cart;
-       $_POST['OrderDate'] = Today();
-       if (!is_date_in_fiscalyear($_POST['OrderDate']))
-               $_POST['OrderDate'] = end_fiscalyear();
-       $_SESSION['credit_items']->orig_order_date = $_POST['OrderDate'];
-
+       processing_start();
+       $_SESSION['Items'] = new Cart(11,$trans_no);
+       copy_from_cn();
 }
 
-//-----------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
-if (isset($_POST['ProcessCredit']))
+function can_process()
 {
 
        $input_error = 0;
 
-       if (!references::is_valid($_POST['ref']))
-       {
+       if ($_SESSION['Items']->count_items() == 0 && (!check_num('ChargeFreightCost',0)))
+               return false;
+       if($_SESSION['Items']->trans_no == 0) {
+           if (!references::is_valid($_POST['ref'])) {
                display_error( _("You must enter a reference."));
+               set_focus('ref');
                $input_error = 1;
-       }
-       elseif (!is_new_reference($_POST['ref'], 11))
-       {
+           } elseif (!is_new_reference($_POST['ref'], 11))     {
                display_error( _("The entered reference is already in use."));
+               set_focus('ref');
                $input_error = 1;
+           } 
        }
-       elseif (!is_date($_POST['OrderDate']))
-       {
+       if (!is_date($_POST['OrderDate'])) {
                display_error(_("The entered date for the credit note is invalid."));
+               set_focus('OrderDate');
                $input_error = 1;
-       }
-       elseif (!is_date_in_fiscalyear($_POST['OrderDate']))
-       {
+       } elseif (!is_date_in_fiscalyear($_POST['OrderDate'])) {
                display_error(_("The entered date is not in fiscal year."));
+               set_focus('OrderDate');
                $input_error = 1;
        }
-       if ($input_error == 1)
-               unset($_POST['ProcessCredit']);
+       return ($input_error == 0);
 }
 
-//------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
-if (isset($_POST['ProcessCredit']))
-{
-       //alert("WriteOffGLCode = ".$_POST['WriteOffGLCode'].", CreditType = ".$_POST['CreditType']);
+if (isset($_POST['ProcessCredit']) && can_process()) {
        if ($_POST['CreditType'] == "WriteOff" && (!isset($_POST['WriteOffGLCode']) ||
-               $_POST['WriteOffGLCode'] == ''))
-       {
+               $_POST['WriteOffGLCode'] == '')) {
                display_note(_("For credit notes created to write off the stock, a general ledger account is required to be selected."), 1, 0);
-               display_note(_("Please select an account to write the cost of the stock off to, then click on Process again."), 1, 0);
+               display_note(_("Please select an account to write the cost of the stock off to, then click on Process again."), 1, 0);
                exit;
        }
-       if (!isset($_POST['WriteOffGLCode']))
-               $_POST['WriteOffGLCode'] = "";
-       if (!isset($_POST['ShipperID']))
-               $_POST['ShipperID'] = 0;
-       $credit_no = add_credit_note($_SESSION['credit_items'], $_POST['OrderDate'],
-               $_POST['CreditType'], $_POST['tax_group_id'],
-               $_POST['ChargeFreightCost'], $_POST['sales_type_id'], $_POST['ShipperID'],
-               $_POST['ref'], $_POST['CreditText'], $_POST['WriteOffGLCode']);
-
-       unset($_SESSION['credit_items']->line_items);
-       unset($_SESSION['credit_items']);
-
+       if (!isset($_POST['WriteOffGLCode'])) {
+               $_POST['WriteOffGLCode'] = 0;
+       }
+       $credit_no = $_SESSION['Items']->write($_POST['WriteOffGLCode']);
+       processing_end();
        meta_forward($_SERVER['PHP_SELF'], "AddedID=$credit_no");
 
 } /*end of process credit note */
 
-//---------------------------------------------------------------------------------------------------
-
-function get_details_from_customer()
-{
-       return get_customer_details_to_order($_SESSION['credit_items'], $_POST['customer_id'], $_POST['branch_id']);
-}
-
-//-----------------------------------------------------------------------------------------------
+  //-----------------------------------------------------------------------------
 
 function check_item_data()
 {
-       if ($_POST['qty'] <= 0)
-       {
+       if (!check_num('qty',0)) {
                display_error(_("The quantity must be greater than zero."));
+               set_focus('qty');
                return false;
        }
-       if (!is_numeric($_POST['price']) || $_POST['price'] < 0)
-       {
+       if (!check_num('price',0)) {
                display_error(_("The entered price is negative or invalid."));
+               set_focus('price');
                return false;
        }
-       if (!is_numeric($_POST['Disc']) || $_POST['Disc'] > 100 || $_POST['Disc'] < 0)
-       {
+       if (!check_num('Disc', 0, 100)) {
                display_error(_("The entered discount percent is negative, greater than 100 or invalid."));
+               set_focus('Disc');
                return false;
        }
-       return true;
+       return true;
 }
 
-//-----------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
 function handle_update_item()
 {
-    if($_POST['UpdateItem'] != "" && check_item_data())
-    {
-       $_SESSION['credit_items']->update_cart_item($_POST['line_no'], $_POST['qty'],
-               $_POST['price'], ($_POST['Disc'] / 100));
-    }
+       if ($_POST['UpdateItem'] != "" && check_item_data()) {
+               $_SESSION['Items']->update_cart_item($_POST['line_no'], input_num('qty'),
+                       input_num('price'), input_num('Disc') / 100);
+       }
+    line_start_focus();
 }
 
-//-----------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
-function handle_delete_item()
+function handle_delete_item($line_no)
 {
-       $_SESSION['credit_items']->remove_from_cart($_GET['Delete']);
+       $_SESSION['Items']->remove_from_cart($line_no);
+    line_start_focus();
 }
 
-//-----------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
 function handle_new_item()
 {
+
        if (!check_item_data())
                return;
 
-       add_to_order($_SESSION['credit_items'], $_POST['line_no'], $_POST['stock_id'], $_POST['qty'],
-               $_POST['price'], $_POST['Disc'] / 100);
+       add_to_order($_SESSION['Items'], $_POST['stock_id'], input_num('qty'),
+               input_num('price'), input_num('Disc') / 100);
+    line_start_focus();
 }
-
-//-----------------------------------------------------------------------------------------------
-if (isset($_GET['Delete']) || isset($_GET['Edit']))
-       copy_from_cn();
-
-if (isset($_GET['Delete']))
-       handle_delete_item();
+//-----------------------------------------------------------------------------
+$id = find_submit('Delete');
+if ($id!=-1)
+       handle_delete_item($id);
 
 if (isset($_POST['AddItem']) || isset($_POST['UpdateItem']))
        copy_to_cn();
@@ -231,51 +212,41 @@ if (isset($_POST['AddItem']))
 if (isset($_POST['UpdateItem']))
        handle_update_item();
 
-//-----------------------------------------------------------------------------------------------
+if (isset($_POST['CancelItemChanges']) || isset($_POST['UpdateItem']))
+       line_start_focus();
 
-if (isset($_GET['NewCredit']) || !isset($_SESSION['credit_items']))
-{
-       handle_new_order();
-}
-else
-{
+//-----------------------------------------------------------------------------
+
+if (!processing_active()) {
+       handle_new_credit();
+} else {
        if (!isset($_POST['customer_id']))
-               $_POST['customer_id'] = $_SESSION['credit_items']->customer_id;
+               $_POST['customer_id'] = $_SESSION['Items']->customer_id;
        if (!isset($_POST['branch_id']))
-               $_POST['branch_id'] = $_SESSION['credit_items']->Branch;
+               $_POST['branch_id'] = $_SESSION['Items']->Branch;
 }
 
-//-----------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 
 start_form(false, true);
 
-$customer_error = display_credit_header($_SESSION['credit_items']);
+$customer_error = display_credit_header($_SESSION['Items']);
 
-if ($customer_error == "")
-{
+if ($customer_error == "") {
        start_table("$table_style width=80%", 10);
        echo "<tr><td>";
-    display_credit_items(_("Credit Note Items"), $_SESSION['credit_items']);
-    credit_options_controls();
-    echo "</td></tr>";
-    end_table();
-}
-else
-{
+       display_credit_items(_("Credit Note Items"), $_SESSION['Items']);
+       credit_options_controls();
+       echo "</td></tr>";
+       end_table();
+} else {
        display_error($customer_error);
 }
 
-if (!isset($_POST['ProcessCredit']))
-{
-    echo "<br><center><table><tr>";
-    submit_cells('Update', _("Update"));
-       if ($_SESSION['credit_items']->count_items() >= 1
-                       /*OR $_POST['ChargeTax'] > 0*/ || (isset($_POST['ChargeFreightCost']) && $_POST['ChargeFreightCost'] > 0))
-       {
-           submit_cells('ProcessCredit', _("Process Credit Note"));
-       }
-       echo "</tr></table>";
-}
+echo "<br><center><table><tr>";
+submit_cells('Update', _("Update"));
+submit_cells('ProcessCredit', _("Process Credit Note"));
+echo "</tr></table>";
 
 end_form();
 end_page();