aisa/scripts/leave_settings.pl
2025-11-26 11:31:54 +02:00

219 lines
6.4 KiB
Perl

#!/usr/bin/perl
BEGIN { use lib '/usr/home/cfg' ; require push_inc ; }
use CGI qw( :standard );
use CGI::Carp qw(fatalsToBrowser);
require cfg ;
print header; # CGI.pm method
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
&today;
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
# unless ($username eq 'rory') { print ">>>>>> RORY DOING MAINTENANCE <<<<<<"; exit; }
@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 ;
&common_min_restriction_super ;
#-------- page opts --------------------------------------------------------------------------------------------------------------------------------------------------
&page_opts ;
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
&common_min_action;
exit;
#------------------------------------------------------------------------------------------
sub validate {
my $exists = '' ;
&db_min_ro($table,'*',"`leave_year`='$i{leave_year}' AND `category`='$i{category}' AND `user_id`='$i{user_id}'",'','') ;
foreach my $id (keys %{$db{$table}}) {
if (($db{$table}{$id}{leave_year} eq $i{leave_year}) and ($db{$table}{$id}{category} eq $i{category}) and ($db{$table}{$id}{user_id} eq $i{user_id})) {
$exists = 1 ;
}
}
if ($exists) {
$alert = &common_min_alert('warning',"<i><strong>$i{category}</strong></i> SETTING ALREADY EXISTS FOR USER <i><strong>$i{user_id}</strong></i> FOR <i><strong>$i{leave_year}</strong></i>!",'ok') ;
%col_name = ();
&common_min_add_screen;
&common_min_screen1;
}
} #------------------------------------------------------------------------------------------
sub insert {
&add_db_fields ;
$i{lastupdate} = "$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{block}) { $i{block} = '0' ; }
# &common_min_upload_files("leave/$i{id}") ;
$i{lastupdate} = "$now_ccyy_mm_dd $now_hour:$now_min:$now_sec" ;
&db_min_upd($table,"id='$i{id}'") ;
} #------------------------------------------------------------------------------------------
sub list_screen {
&db_min_ro('users','*','','','') ;
foreach my $id (keys %{$db{users}}) { $user{$id} = $db{users}{$id}{name} ; }
&db_min_ro($table,'*','','','') ;
foreach my $id (keys %{$db{$table}}) {
my $category = ucfirst $db{$table}{$id}{category} ;
my $edit_butt = '' ;
my $del_butt = '' ;
if ($useropts{boss}{lc $username}){
$edit_butt = qq(<a class="btn btn-info btn-xs" href="javascript:editMinItem('$db{$table}{$id}{id}');"><i class="glyphicon glyphicon-edit icon-white"></i></a>&nbsp;) ;
$del_butt = qq(<a class="btn btn-danger btn-xs" href="javascript:deleteMinItem('$db{$table}{$id}{username}','$db{$table}{$id}{id}')"><i class="glyphicon glyphicon-trash icon-white"></i></a>) ;
}
$print_tbody .= qq(<tr id="$id">
<td>$id</td>
<td>$user{$db{$table}{$id}{user_id}}</td>
<td>$db{$table}{$id}{leave_year}</td>
<td>$db{$table}{$id}{days_entitled}</td>
<td>$db{$table}{$id}{days_carried_over}</td>
<td>$category</td>
<td>$db{$table}{$id}{lastupdate}</td>
<td nowrap>&nbsp;
$edit_butt
$del_butt
</td>
</tr>) ;
}
} #------------------------------------------------------------------------------------------
sub add_db_fields {
&hidden_fields ;
$ignore{id} = 1 ;
} #------------------------------------------------------------------------------------------
sub hidden_fields {
$ignore{iaction} = 1 ;
$hidden{lastupdate} = 2 ; # 2 = update db
$required{days_entitled} = 9 ;
$required{days_carried_over} = 9 ;
# $required{days_taken} = 9 ;
$ignore{days_taken} = 1 ;
$required{user_id} = 1 ;
$datepicker{leave_start_date} = 1 ;
} #------------------------------------------------------------------------------------------
sub edit_db_fields {
&hidden_fields ;
$hidden{id} = 1 ; # 1 = bypass for db update
$ignore{iattachleave} = 1 ;
} #------------------------------------------------------------------------------------------
sub add_screen {
$selected{leave_year}{$now_year} = 'SELECTED';
$selected{category}{'annual'} = 'SELECTED';
&select_opts('') ;
} #------------------------------------------------------------------------------------------
sub edit_screen {
$selected{leave_year}{$db{$table}{$i{id}}{leave_year}} = 'SELECTED';
$selected{category}{$db{$table}{$i{id}}{category}} = 'SELECTED';
&select_opts($i{id}) ;
} #------------------------------------------------------------------------------------------
sub select_opts {
my ($id) = @_ ;
&common_min_opts('leave_type','category',1) ;
my @years = ($now_year-1,$now_year,$now_year+1) ;
$required{leave_year} = 1 ; $select{leave_year} = 1 ;
foreach (@years) {
$opts{leave_year} .= qq(<option value="$_" $selected{leave_year}{$_}>$_</option>) ;
}
# my $sql_where = "`username`<>'rory' AND `username`<>'duvan'" ;
@user_excl_sql = () ;
foreach (keys %{$useropts{it}}) {
push @user_excl_sql, "username <> '$_'" ;
}
my $user_excl_sql = join(" AND ", @user_excl_sql) ;
&common_min_select_opts('user_id','users','name',$db{$table}{$i{id}}{user_id},'','',$user_excl_sql) ;
} #-------------------------------------------------------------------------------
sub thead {
$print_thead = qq(<THEAD><TR><TH>ID</TH><TH>CONSULTANT</TH><TH>LEAVE_YEAR</TH><TH>DAYS_ENTITLED</TH><TH>DAYS_CARRIED_OVER</TH><TH>CATEGORY</TH><TH>LASTUPDATE</TH><TH>&nbsp;</TH></TR></THEAD>) ;
} #-------------------------------------------------------------------------------
sub page_opts {
our $glyphicon = 'calendar' ;
our $lcpage = 'leave-setting' ; $ucpage = uc $lcpage ; $ucfirstpage = ucfirst $lcpage ;
our $table = 'leave_settings' ;
if ($useropts{boss}{lc $username}) { &common_min_add_box_icon ; }
} #-------------------------------------------------------------------------------
use common ;
use today ;
1;