aisa/scripts/_FromProd/v1.0/quote_defaults.pl
2026-02-03 14:35:43 +02:00

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(&nbsp;<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(&nbsp;<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>&nbsp;</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;