343 lines
9.8 KiB
Perl
343 lines
9.8 KiB
Perl
#!/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( <a class="btn btn-danger btn-xs" href="javascript:deleteMinItem('$db{$table}{$id}{SupplierName}','$id')"><i class="glyphicon glyphicon-trash icon-white"></i></a>) ;
|
|
my $edit_butt = qq( <a class="btn btn-info btn-xs" href="javascript:editMinItem('$id');"><i class="glyphicon glyphicon-edit icon-white"></i></a>) ;
|
|
|
|
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(<tr id="$id">
|
|
<td>$id</td>
|
|
<td>$db{$table}{$id}{type}</td>
|
|
<td>$db{$table}{$id}{field_name}</td>
|
|
<td>$def_zar</td>
|
|
<td>$def_qty</td>
|
|
<td>$min_zar</td>
|
|
<td>$db{$table}{$id}{last_update}</td>
|
|
<td nowrap>
|
|
$edit_butt
|
|
$view_butt
|
|
$del_butt
|
|
</td>
|
|
</tr>) ;
|
|
}
|
|
|
|
} #------------------------------------------------------------------------------------------
|
|
|
|
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(<option $selected{type}{Inbound} value="Inbound">Inbound</option><option $selected{type}{Outbound} value="Outbound">Outbound</option>);
|
|
|
|
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(<option value=""></option>);
|
|
|
|
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(<option $selected{field_name}{$cost_desc{$_}} value="$cost_desc{$_}">$cost_desc{$_}</option>); }
|
|
$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(<option $selected{field_name}{$cost_desc{$_}} value="$cost_desc{$_}">$cost_desc{$_}</option>); }
|
|
$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(<option $selected{field_name}{$cost_desc{$_}} value="$cost_desc{$_}">$cost_desc{$_}</option>); }
|
|
$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(<THEAD><TR><TH>ID</TH><TH>Type</TH><TH>Field Name</TH><TH>Default ZAR</TH><TH>Default Qty</TH><TH>Min ZAR</TH><TH>Last Update</TH><TH> </TH></TR></THEAD>) ;
|
|
|
|
} #-------------------------------------------------------------------------------
|
|
|
|
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; |