#!/usr/bin/perl BEGIN { use lib '/usr/home/cfg' ; require push_inc ; } use CGI::Carp qw(fatalsToBrowser); require cfg ; #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- use CGI; use Crypt::PasswdMD5; &today; #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- @ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'}); $action = $ARGV[0] ; our ($q) = CGI -> new() ; our $iaction = $q -> param('iaction') || $action ; our $isaved = $q -> param('isaved') || '' ; # our $debug = 1 ; #-------- page opts -------------------------------------------------------------------------------------------------------------------------------------------------- &page_opts ; #--------------------------------------------------------------------------------------------------------------------------------------------------------------------- print "Content-type: text/html\n\n"; if ($iaction eq 'add') { unless ($username eq 'rory') { print "UNAUTHORISED" ; exit ; } } unless ($useropts{super}{$username}) { print "UNAUTHORISED" ; exit ; } &common_min_action; exit; #------------------------------------------------------------------------------------------ sub validate { my $exists = '' ; &db_min_ro($table,'*',"`field_name`='$i{field_name}' AND `type`='$i{type}'",'','') ; foreach my $id (keys %{$db{$table}}) { if ($db{$table}{$id}{field_name} eq $i{field_name}) { $exists = 1 ; } } if ($exists) { $alert = &common_min_alert('warning',"FIELD_NAME ALREADY EXISTS!",'ok') ; %col_name = (); &common_min_add_screen; &common_min_screen1; } } #------------------------------------------------------------------------------------------ sub insert { &add_db_fields ; $i{last_update} = "$now_ccyy_mm_dd $now_hour:$now_min:$now_sec" ; &db_min_insert($table) ; } #------------------------------------------------------------------------------------------ sub update { unless ($i{id}) { $error = qq(NO ID) ; return ; } &edit_db_fields ; # unless ($i{Active}) { $i{Active} = '0' ; } $i{last_update} = "$now_ccyy_mm_dd $now_hour:$now_min:$now_sec" ; &db_min_upd($table,"`id`='$i{id}'") ; } #------------------------------------------------------------------------------------------ sub list_screen { &db_min_ro($table,'*','','','') ; foreach my $id (keys %{$db{$table}}) { # my $del_butt = qq( ) ; my $edit_butt = qq( ) ; my $def_zar = &replace_zero($db{$table}{$id}{default_zar}) ; my $def_qty = &replace_zero($db{$table}{$id}{default_qty}) ; my $min_zar = &replace_zero($db{$table}{$id}{min_zar}) ; $print_tbody .= qq( $id $db{$table}{$id}{type} $db{$table}{$id}{field_name} $def_zar $def_qty $min_zar $db{$table}{$id}{last_update} $edit_butt $view_butt $del_butt ) ; } } #------------------------------------------------------------------------------------------ sub replace_zero { my ($val) = @_ ; if ($val eq '0.00') { $val = '' ; } return ($val) ; } #------------------------------------------------------------------------------------------ sub add_db_fields { &hidden_db_fields; $hidden{id} = 2 ; } #------------------------------------------------------------------------------------------ sub edit_db_fields { &hidden_db_fields; $readonly{field_name} = 'READONLY' ; $required{field_name} = 1 ; $readonly{type} = 'READONLY' ; $required{type} = 1 ; $hidden{id} = 1 ; # 1 = bypass for db update } #------------------------------------------------------------------------------------------ sub hidden_db_fields { $ignore{iaction} = 1 ; $hidden{last_update} = 2 ; &sort_fields; } #------------------------------------------------------------------------------------------ sub sort_fields { $sort_field{1} = 'field_name' ; $sort_field{2} = 'type' ; $sort_field{3} = 'default_zar' ; $preferred_title{default_zar} = 'Default ZAR' ; $sort_field{4} = 'default_qty' ; $sort_field{5} = 'min_zar' ; $preferred_title{min_zar} = 'Min ZAR' ; } #------------------------------------------------------------------------------- sub add_screen { # called from common_add_screen &select_opts('') ; } #------------------------------------------------------------------------------------------ sub edit_screen { our ($lcol,$fcol) = &common_min_columns($label_col,$field_col) ; $selected{field_name}{$db{$table}{$i{id}}{field_name}} = 'SELECTED'; # $selected{type}{$db{$table}{$i{id}}{type}} = 'SELECTED'; # load quote defaults # &db_min_ro($table,'*','','','') ; foreach (keys %{$db{$table}}) { $defzar{$db{$table}{$_}{type}}{$db{$table}{$_}{field_name}} = $db{$table}{$_}{default_zar}; $minzar{$db{$table}{$_}{type}}{$db{$table}{$_}{field_name}} = $db{$table}{$_}{min_zar}; $defqty{$db{$table}{$_}{type}}{$db{$table}{$_}{field_name}} = $db{$table}{$_}{default_qty}; } &select_opts($i{id}) ; # $extra_form_fields .= &common_min_form_input('new_password','','password') ; } #------------------------------------------------------------------------------------------ sub select_opts { my ($id) = @_ ; unless ($id) { # don't display dropdown on edit $select{field_name} = 1 ; $select{type} = 1 ; } $opts{type} = qq(); if ($db{$table}{$id}{type} eq 'Inbound') { &clear_hashes; &tab_build_qt_sa_in; &field_name_opts($id); } if ($db{$table}{$id}{type} eq 'Outbound') { &clear_hashes; &tab_build_qt_sa_out; &field_name_opts($id); } if ($db{$table}{$id}{type} eq 'Domestic') { &clear_hashes; &tab_sec_det('_cour_dom'); $cost_desc{25} = 'Fuel & Security'; # Bodge it for this one $def_qty{25} = $defqty{Domestic}{$cost_desc{25}} ; # '32.5' &field_name_opts($id); } if ($db{$table}{$id}{type} eq 'International') { &clear_hashes; &tab_sec_det('_cour_intl'); $cost_desc{25} = 'Fuel & Security'; # Bodge it for this one $def_qty{25} = $defqty{International}{$cost_desc{25}} ; # '32.5' &field_name_opts($id); } if ($db{$table}{$id}{type} eq 'Carnet') { &clear_hashes; &tab_sec_det('_ata_car'); &field_name_opts($id); } $print_box_content_rows .= &common_min_form_select('field_name','','',1,'') ; } #------------------------------------------------------------------------------- sub clear_hashes { %cost_desc = () ; %def_qty = () ; %def_zar = () ; } #------------------------------------------------------------------------------- sub field_name_opts { my ($id) = @_ ; $opts{field_name} = qq(); if ($id) { # only on edit $readonly{default_zar} = 'READONLY' ; $readonly{min_zar} = 'READONLY' ; $readonly{default_qty} = 'READONLY' ; $required{default_zar} = 0 ; $required{min_zar} = 0 ; $required{default_qty} = 0 ; } foreach (keys %cost_desc) { if ($def_qty{$_}) { unless ($got_opts{$cost_desc{$_}}) { $opts{field_name} .= qq(); } $got_opts{$cost_desc{$_}} = 1 ; if (($selected{field_name}{$cost_desc{$_}}) and ($id)) { $readonly{default_qty} = '' ; $required{default_qty} = 1 ; } } if ($def_zar{$_}) { unless ($got_opts{$cost_desc{$_}}) { $opts{field_name} .= qq(); } $got_opts{$cost_desc{$_}} = 1 ; if (($selected{field_name}{$cost_desc{$_}}) and ($id)) { $readonly{default_zar} = '' ; $required{default_zar} = 1 ; } } if ($min_zar{$_}) { unless ($got_opts{$cost_desc{$_}}) { $opts{field_name} .= qq(); } $got_opts{$cost_desc{$_}} = 1 ; if (($selected{field_name}{$cost_desc{$_}}) and ($id)) { $readonly{min_zar} = '' ; $required{min_zar} = 1 ; } } } } #------------------------------------------------------------------------------- sub view_screen { my ($iid) = @_ ; our ($lcol,$fcol) = &common_min_columns($label_col,$field_col) ; foreach my $cnt (sort {$a <=> $b} keys %sort_field) { my $col = $sort_field{$cnt} ; if ($ignore{$col}) { next ; } my $val = $db{$table}{$iid}{$col} ; $print_box_content_rows .= &common_min_form_view($col,$val) ; } } #------------------------------------------------------------------------------------------ sub thead { $print_thead = qq(IDTypeField NameDefault ZARDefault QtyMin ZARLast Update ) ; } #------------------------------------------------------------------------------- sub page_opts { our $glyphicon = 'qrcode' ; our $lcpage = 'quote-default' ; # $ucpage = uc $lcpage ; # $ucfirstpage = ucfirst $lcpage ; my @splitlcpage = split(/\-/,$lcpage) ; my @ucfirstpage = map(ucfirst, map(lc,@splitlcpage)); $ucfirstpage = join(' ', @ucfirstpage); $ucpage = uc $ucfirstpage ; our $table = 'quote_defaults' ; $page_title = 'Quote Defaults' ; our $glob_sort_col = 1 ; our $glob_sort_asc_desc = 'asc' ; # &common_min_add_extras ; } #------------------------------------------------------------------------------- use tabs ; use common ; use today ; 1;