From 27610a5a7a22cafffa960dbfd795f33f33c78dc2 Mon Sep 17 00:00:00 2001 From: Joe Hunt Date: Wed, 17 Jul 2019 23:08:51 +0200 Subject: [PATCH] 4946: Inserting a supplier without the short name resets the whole form. Fixed. --- purchasing/manage/suppliers.php | 240 +++++++++++++++++--------------- 1 file changed, 124 insertions(+), 116 deletions(-) diff --git a/purchasing/manage/suppliers.php b/purchasing/manage/suppliers.php index 89026989..c18c7827 100644 --- a/purchasing/manage/suppliers.php +++ b/purchasing/manage/suppliers.php @@ -31,7 +31,113 @@ if (isset($_GET['supplier_id'])) $_POST['supplier_id'] = $_GET['supplier_id']; } -$supplier_id = get_post('supplier_id'); +$supplier_id = get_post('supplier_id', ''); + +function can_process() +{ + /* actions to take once the user has clicked the submit button + ie the page has called itself with some user input */ + + //first off validate inputs sensible + + if (strlen($_POST['supp_name']) == 0 || $_POST['supp_name'] == "") + { + display_error(_("The supplier name must be entered.")); + set_focus('supp_name'); + return false; + } + + if (strlen($_POST['supp_ref']) == 0 || $_POST['supp_ref'] == "") + { + display_error(_("The supplier short name must be entered.")); + set_focus('supp_ref'); + return false; + } + return true; +} + +function handle_submit(&$supplier_id) +{ + global $path_to_root, $Ajax, $SysPrefs; + + if (!can_process()) + return; + begin_transaction(); + if ($supplier_id) + { + update_supplier($_POST['supplier_id'], $_POST['supp_name'], $_POST['supp_ref'], $_POST['address'], + $_POST['supp_address'], $_POST['gst_no'], + $_POST['website'], $_POST['supp_account_no'], $_POST['bank_account'], + input_num('credit_limit', 0), $_POST['dimension_id'], $_POST['dimension2_id'], $_POST['curr_code'], + $_POST['payment_terms'], $_POST['payable_account'], $_POST['purchase_account'], $_POST['payment_discount_account'], + $_POST['notes'], $_POST['tax_group_id'], check_value('tax_included')); + update_record_status($_POST['supplier_id'], $_POST['inactive'], + 'suppliers', 'supplier_id'); + + $Ajax->activate('supplier_id'); // in case of status change + display_notification(_("Supplier has been updated.")); + } + else + { + add_supplier($_POST['supp_name'], $_POST['supp_ref'], $_POST['address'], $_POST['supp_address'], + $_POST['gst_no'], $_POST['website'], $_POST['supp_account_no'], $_POST['bank_account'], + input_num('credit_limit',0), $_POST['dimension_id'], $_POST['dimension2_id'], + $_POST['curr_code'], $_POST['payment_terms'], $_POST['payable_account'], $_POST['purchase_account'], + $_POST['payment_discount_account'], $_POST['notes'], $_POST['tax_group_id'], check_value('tax_included')); + + $supplier_id = $_POST['supplier_id'] = db_insert_id(); + + add_crm_person($_POST['supp_ref'], $_POST['contact'], '', $_POST['address'], + $_POST['phone'], $_POST['phone2'], $_POST['fax'], $_POST['email'], + $_POST['rep_lang'], ''); + + add_crm_contact('supplier', 'general', $supplier_id, db_insert_id()); + + display_notification(_("A new supplier has been added.")); + $Ajax->activate('_page_body'); + } + commit_transaction(); +} + +if (isset($_POST['submit'])) +{ + handle_submit($supplier_id); +} + +if (isset($_POST['delete']) && $_POST['delete'] != "") +{ + //the link to delete a selected record was clicked instead of the submit button + + $cancel_delete = 0; + + // PREVENT DELETES IF DEPENDENT RECORDS IN 'supp_trans' , purch_orders + + if (key_in_foreign_table($_POST['supplier_id'], 'supp_trans', 'supplier_id')) + { + $cancel_delete = 1; + display_error(_("Cannot delete this supplier because there are transactions that refer to this supplier.")); + + } + else + { + if (key_in_foreign_table($_POST['supplier_id'], 'purch_orders', 'supplier_id')) + { + $cancel_delete = 1; + display_error(_("Cannot delete the supplier record because purchase orders have been created against this supplier.")); + } + + } + if ($cancel_delete == 0) + { + delete_supplier($_POST['supplier_id']); + + unset($_SESSION['supplier_id']); + $supplier_id = ''; + $Ajax->activate('_page_body'); + display_notification("#" . $_POST['supplier_id'] . " " . _("Supplier has been deleted.")); + } //end if Delete supplier +} + //-------------------------------------------------------------------------------------------- function supplier_settings(&$supplier_id) { @@ -70,21 +176,23 @@ function supplier_settings(&$supplier_id) } else { - $_POST['supp_name'] = $_POST['supp_ref'] = $_POST['address'] = $_POST['supp_address'] = - $_POST['tax_group_id'] = $_POST['website'] = $_POST['supp_account_no'] = $_POST['notes'] = ''; - $_POST['dimension_id'] = 0; - $_POST['dimension2_id'] = 0; - $_POST['tax_included'] = 0; - $_POST['sales_type'] = -1; - $_POST['gst_no'] = $_POST['bank_account'] = ''; - $_POST['payment_terms'] = ''; - $_POST['credit_limit'] = price_format(0); - - $company_record = get_company_prefs(); - $_POST['curr_code'] = $company_record["curr_default"]; - $_POST['payable_account'] = $company_record["creditors_act"]; - $_POST['purchase_account'] = ''; // default/item's cogs account - $_POST['payment_discount_account'] = $company_record['pyt_discount_act']; + if (list_updated('supplier_id') || !isset($_POST['supp_name'])) { + $_POST['supp_name'] = $_POST['supp_ref'] = $_POST['address'] = $_POST['supp_address'] = + $_POST['tax_group_id'] = $_POST['website'] = $_POST['supp_account_no'] = $_POST['notes'] = ''; + $_POST['dimension_id'] = 0; + $_POST['dimension2_id'] = 0; + $_POST['tax_included'] = 0; + $_POST['sales_type'] = -1; + $_POST['gst_no'] = $_POST['bank_account'] = ''; + $_POST['payment_terms'] = ''; + $_POST['credit_limit'] = price_format(0); + + $company_record = get_company_prefs(); + $_POST['curr_code'] = $company_record["curr_default"]; + $_POST['payable_account'] = $company_record["creditors_act"]; + $_POST['purchase_account'] = ''; // default/item's cogs account + $_POST['payment_discount_account'] = $company_record['pyt_discount_act']; + } } table_section_title(_("Basic Data")); @@ -183,106 +291,6 @@ function supplier_settings(&$supplier_id) div_end(); } -if (isset($_POST['submit'])) -{ - - //initialise no input errors assumed initially before we test - $input_error = 0; - - /* actions to take once the user has clicked the submit button - ie the page has called itself with some user input */ - - //first off validate inputs sensible - - if (strlen($_POST['supp_name']) == 0 || $_POST['supp_name'] == "") - { - $input_error = 1; - display_error(_("The supplier name must be entered.")); - set_focus('supp_name'); - } - - if (strlen($_POST['supp_ref']) == 0 || $_POST['supp_ref'] == "") - { - $input_error = 1; - display_error(_("The supplier short name must be entered.")); - set_focus('supp_ref'); - } - - if ($input_error !=1 ) - { - - begin_transaction(); - if ($supplier_id) - { - update_supplier($_POST['supplier_id'], $_POST['supp_name'], $_POST['supp_ref'], $_POST['address'], - $_POST['supp_address'], $_POST['gst_no'], - $_POST['website'], $_POST['supp_account_no'], $_POST['bank_account'], - input_num('credit_limit', 0), $_POST['dimension_id'], $_POST['dimension2_id'], $_POST['curr_code'], - $_POST['payment_terms'], $_POST['payable_account'], $_POST['purchase_account'], $_POST['payment_discount_account'], - $_POST['notes'], $_POST['tax_group_id'], check_value('tax_included')); - update_record_status($_POST['supplier_id'], $_POST['inactive'], - 'suppliers', 'supplier_id'); - - $Ajax->activate('supplier_id'); // in case of status change - display_notification(_("Supplier has been updated.")); - } - else - { - add_supplier($_POST['supp_name'], $_POST['supp_ref'], $_POST['address'], $_POST['supp_address'], - $_POST['gst_no'], $_POST['website'], $_POST['supp_account_no'], $_POST['bank_account'], - input_num('credit_limit',0), $_POST['dimension_id'], $_POST['dimension2_id'], - $_POST['curr_code'], $_POST['payment_terms'], $_POST['payable_account'], $_POST['purchase_account'], - $_POST['payment_discount_account'], $_POST['notes'], $_POST['tax_group_id'], check_value('tax_included')); - - $supplier_id = $_POST['supplier_id'] = db_insert_id(); - - add_crm_person($_POST['supp_ref'], $_POST['contact'], '', $_POST['address'], - $_POST['phone'], $_POST['phone2'], $_POST['fax'], $_POST['email'], - $_POST['rep_lang'], ''); - - add_crm_contact('supplier', 'general', $supplier_id, db_insert_id()); - - display_notification(_("A new supplier has been added.")); - $Ajax->activate('_page_body'); - } - commit_transaction(); - } - -} -elseif (isset($_POST['delete']) && $_POST['delete'] != "") -{ - //the link to delete a selected record was clicked instead of the submit button - - $cancel_delete = 0; - - // PREVENT DELETES IF DEPENDENT RECORDS IN 'supp_trans' , purch_orders - - if (key_in_foreign_table($_POST['supplier_id'], 'supp_trans', 'supplier_id')) - { - $cancel_delete = 1; - display_error(_("Cannot delete this supplier because there are transactions that refer to this supplier.")); - - } - else - { - if (key_in_foreign_table($_POST['supplier_id'], 'purch_orders', 'supplier_id')) - { - $cancel_delete = 1; - display_error(_("Cannot delete the supplier record because purchase orders have been created against this supplier.")); - } - - } - if ($cancel_delete == 0) - { - delete_supplier($_POST['supplier_id']); - - unset($_SESSION['supplier_id']); - $supplier_id = ''; - $Ajax->activate('_page_body'); - display_notification("#" . $_POST['supplier_id'] . " " . _("Supplier has been deleted.")); - } //end if Delete supplier -} - start_form(); if (db_has_suppliers()) -- 2.30.2