X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Fdata_checks.inc;h=d6e5261a0066acfc569dbd3709ec086c2145c09b;hb=bddfd188fc7b9c754623c0ffd978ca9f0c4fd4e5;hp=ef33acfdfd4d329412a7461586c07488f20b526a;hpb=da8311619dd73feae101d246a1957b972e00cbd2;p=fa-stable.git diff --git a/includes/data_checks.inc b/includes/data_checks.inc index ef33acfd..d6e5261a 100644 --- a/includes/data_checks.inc +++ b/includes/data_checks.inc @@ -1,5 +1,14 @@ . +***********************************************************************/ function db_has_customers() { return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."debtors_master"); @@ -28,8 +37,21 @@ function check_db_has_currencies($msg) { display_error($msg, true); end_page(); - exit; - } + exit; + } +} + +function db_has_currency_rates($currency, $date_, $msg=false) +{ + $date = date2sql($date_); + + if (is_company_currency($currency)) + return 1; + $ret = check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."exchange_rates WHERE curr_code = '$currency' && date_ <= '$date'"); + if ($ret == 0 && $msg) + display_error(sprintf(_("Cannot retrieve exchange rate for currency %s as of %s. Please add exchange rate manually on Exchange Rates page."), + $currency, $date_), true); + return $ret; } function db_has_sales_types() @@ -96,46 +118,16 @@ function check_db_has_tax_groups($msg) } } -function db_has_movement_types() -{ - return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."movement_types"); -} - -function check_db_has_movement_types($msg) -{ - global $path_to_root; - if (!db_has_movement_types()) - { - display_error($msg, true); - end_page(); - exit; - } -} - -function db_has_bank_trans_types() -{ - return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."bank_trans_types"); -} - -function check_db_has_bank_trans_types($msg) -{ - global $path_to_root; - if (!db_has_bank_trans_types()) - { - display_error($msg, true); - end_page(); - exit; - } -} - function db_customer_has_branches($customer_id) { - return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."cust_branch WHERE debtor_no=$customer_id"); + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."cust_branch " + ."WHERE debtor_no=".db_escape($customer_id)); } function db_has_customer_branches() { - return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."cust_branch"); + return check_empty_result("SELECT COUNT(*) FROM " + .TB_PREF."cust_branch WHERE !inactive"); } function check_db_has_customer_branches($msg) @@ -161,8 +153,8 @@ function check_db_has_sales_people($msg) { display_error($msg, true); end_page(); - exit; - } + exit; + } } function db_has_sales_areas() @@ -258,7 +250,8 @@ function check_db_has_suppliers($msg) function db_has_stock_items() { - return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master"); + + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master WHERE mb_flag!='F'"); } function check_db_has_stock_items($msg) @@ -274,7 +267,7 @@ function check_db_has_stock_items($msg) function db_has_bom_stock_items() { - return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master WHERE (mb_flag='M' OR mb_flag='K')"); + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master WHERE mb_flag='M'"); } function check_db_has_bom_stock_items($msg) @@ -306,7 +299,7 @@ function check_db_has_manufacturable_items($msg) function db_has_purchasable_items() { - return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master WHERE (mb_flag!='M' AND mb_flag!='K')"); + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master WHERE mb_flag!='M'"); } function check_db_has_purchasable_items($msg) @@ -322,7 +315,7 @@ function check_db_has_purchasable_items($msg) function db_has_costable_items() { - return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master WHERE (mb_flag!='D' AND mb_flag!='K')"); + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master WHERE mb_flag!='D'"); } function check_db_has_costable_items($msg) @@ -336,9 +329,129 @@ function check_db_has_costable_items($msg) } } +function check_db_has_fixed_asset_classes($msg) +{ + global $path_to_root; + if (!db_has_fixed_asset_classes()) + { + display_error($msg, true); + end_page(); + exit; + } +} + +function db_has_fixed_asset_classes() +{ + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_fa_class"); +} + +function db_has_depreciable_fixed_assets() +{ + $year = get_current_fiscalyear(); + $begin = date2sql(add_months(sql2date($year['begin']), -1)); + $end = date2sql(add_months(sql2date($year['end']), -1)); + + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master + WHERE mb_flag='F' + AND material_cost > 0 + AND stock_id IN ( SELECT stock_id FROM ".TB_PREF."stock_moves WHERE type=".ST_SUPPRECEIVE." AND qty!=0 ) + AND stock_id NOT IN ( SELECT stock_id FROM ".TB_PREF."stock_moves WHERE (type=".ST_CUSTDELIVERY." OR type=".ST_INVADJUST.") AND qty!=0 ) + AND depreciation_date <= '".$end."' + AND depreciation_date >='".$begin."'"); +} + +function check_db_has_depreciable_fixed_assets($msg) +{ + global $path_to_root; + + if (!db_has_depreciable_fixed_assets()) + { + display_error($msg, true); + end_page(); + exit; + } +} + +function db_has_fixed_assets() +{ + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master WHERE mb_flag='F'"); +} + +function check_db_has_fixed_assets($msg) +{ + global $path_to_root; + + if (!db_has_fixed_assets()) + { + display_error($msg, true); + end_page(); + exit; + } +} + +function db_has_purchasable_fixed_assets() +{ + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master + WHERE mb_flag='F' + AND !inactive + AND stock_id NOT IN + ( SELECT stock_id FROM ".TB_PREF."stock_moves WHERE type=".ST_SUPPRECEIVE." AND qty!=0 )"); +} + +function check_db_has_purchasable_fixed_assets($msg) +{ + global $path_to_root; + + if (!db_has_purchasable_fixed_assets()) + { + display_error($msg, true); + end_page(); + exit; + } +} + +function db_has_disposable_fixed_assets() +{ + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_master + WHERE mb_flag='F' + AND !inactive + AND stock_id IN + ( SELECT stock_id FROM ".TB_PREF."stock_moves WHERE type=".ST_SUPPRECEIVE." AND qty!=0 ) + AND stock_id NOT IN + ( SELECT stock_id FROM ".TB_PREF."stock_moves WHERE (type=".ST_CUSTDELIVERY." OR type=".ST_INVADJUST.") AND qty!=0 )"); +} + +function check_db_has_disposable_fixed_assets($msg) +{ + global $path_to_root; + + if (!db_has_disposable_fixed_assets()) + { + display_error($msg, true); + end_page(); + exit; + } +} + function db_has_stock_categories() { - return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_category"); + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_category WHERE dflt_mb_flag!='F'"); +} + +function check_db_has_fixed_asset_categories($msg) +{ + global $path_to_root; + if (!db_has_fixed_asset_categories()) + { + display_error($msg, true); + end_page(); + exit; + } +} + +function db_has_fixed_asset_categories() +{ + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."stock_category WHERE dflt_mb_flag='F'"); } function check_db_has_stock_categories($msg) @@ -348,8 +461,8 @@ function check_db_has_stock_categories($msg) { display_error($msg, true); end_page(); - exit; - } + exit; + } } function db_has_workcentres() @@ -370,7 +483,7 @@ function check_db_has_workcentres($msg) function db_has_locations() { - return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."locations"); + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."locations WHERE fixed_asset=0"); } function check_db_has_locations($msg) @@ -392,6 +505,7 @@ function db_has_bank_accounts() function check_db_has_bank_accounts($msg) { global $path_to_root; + if (!db_has_bank_accounts()) { display_error($msg, true); @@ -400,6 +514,12 @@ function check_db_has_bank_accounts($msg) } } +function db_has_cash_accounts() +{ + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."bank_accounts + WHERE account_type=3"); +} + function db_has_gl_accounts() { return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."chart_master"); @@ -421,12 +541,148 @@ function check_db_has_gl_account_groups($msg) } } +function db_has_quick_entries() +{ + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."quick_entries"); +} + +function db_has_tags($type) +{ + return check_empty_result("SELECT COUNT(*) FROM ".TB_PREF."tags WHERE type=".db_escape($type)); +} + +function check_db_has_tags($type, $msg) +{ + global $path_to_root; + if (!db_has_tags($type)) + { + display_error($msg, true); + end_page(); + exit; + } +} + function check_empty_result($sql) { $result = db_query($sql, "could not do check empty query"); $myrow = db_fetch_row($result); - return $myrow[0] > 0; + return is_array($myrow) ? $myrow[0] > 0 : false; +} +// +// Integer input check +// Return 1 if number has proper form and is within range +// +function check_int($postname, $min=null, $max=null) { + if(!isset($_POST[$postname])) + return 0; + $num = input_num($postname); + if(!is_int($num)) + return 0; + if (isset($min) && ($num<$min)) + return 0; + if (isset($max) && ($num>$max)) + return 0; + return 1; +} +// +// Numeric input check. +// Return 1 if number has proper form and is within range +// Empty/not defined fields are defaulted to $dflt value. +// +function check_num($postname, $min=null, $max=null, $dflt=0) { + if(!isset($_POST[$postname])) + return 0; + $num = input_num($postname, $dflt); + if ($num === false || $num === null) + return 0; + if (isset($min) && ($num<$min)) + return 0; + if (isset($max) && ($num>$max)) + return 0; + return 1; +} + +function check_is_closed($type, $type_no, $msg=null) +{ + global $systypes_array; + + if (($type_no > 0) && is_closed_trans($type, $type_no)) + { + if (!$msg) + $msg = sprintf(_("%s #%s is closed for further edition."), $systypes_array[$type], $type_no); + display_error($msg, true); + display_footer_exit(); + } } -?> \ No newline at end of file +function check_db_has_template_orders($msg) +{ + $sql = "SELECT sorder.order_no + FROM ".TB_PREF."sales_orders as sorder," + .TB_PREF."sales_order_details as line + WHERE sorder.order_no = line.order_no AND sorder.type = 1 + GROUP BY line.order_no"; + + if (!check_empty_result($sql)) + { + display_error($msg, true); + end_page(); + exit; + } +} + +function check_deferred_income_act($msg) +{ + global $path_to_root; + + if (!get_company_pref('deferred_income_act')) + { + display_error($msg, true); + display_footer_exit(); + } +} + +function check_is_editable($trans_type, $trans_no, $msg=null) +{ + if (!$_SESSION['wa_current_user']->can_access('SA_EDITOTHERSTRANS')) + { + $audit = get_audit_trail_last($trans_type, $trans_no); + + if ($_SESSION['wa_current_user']->user != $audit['user']) + { + if (!$msg) + $msg = ''._("You have no edit access to transactions created by other users.").''; + display_note($msg); + display_footer_exit(); + } + } + if (!in_array($trans_type, array(ST_SALESORDER, ST_SALESQUOTE, ST_PURCHORDER, ST_WORKORDER))) + check_is_closed($trans_type, $trans_no, $msg); +} + +function check_reference($reference, $trans_type, $trans_no=0, $context=null, $line=null) +{ + global $Refs; + + if (!$Refs->is_valid($reference, $trans_type, $context, $line)) + { + display_error(_("The entered reference is invalid.")); return false; + } + elseif (!$Refs->is_new_reference($reference, $trans_type, $trans_no)) + { + display_error( _("The entered reference is already in use.")); return false; + } + return true; +} + +function check_sys_pref($name, $msg, $empty = '') +{ + global $path_to_root; + + if (get_company_pref($name) === $empty) + { + display_error(menu_link("/admin/gl_setup.php", $msg), true); + display_footer_exit(); + } +}