aisa/scripts/logistics_report.pl

2893 lines
136 KiB
Perl
Raw Permalink Normal View History

2025-11-26 09:31:54 +00:00
#!/usr/bin/perl
BEGIN { use lib '/usr/home/cfg' ; require push_inc ; }
require cfg ;
print "Content-type: text/html\n\n";
# unless ($useropts{it}{$username}) { print "<<<<<<<<<<<< MAINTENANCE IN PROGRESS >>>>>>>>>" ; exit ; }
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
use CGI::Carp qw(fatalsToBrowser);
use CGI;
use Mail::Sendmail;
use Fcntl qw(:flock);
use File::Copy;
use File::Basename;
use Date::Calc qw(:all);
use Excel::Writer::XLSX;
use Time::Piece ;
use LWP::UserAgent;
use XML::LibXML;
use LWP::Simple;
use XML::Simple ;
use JSON ;
&today;
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
@ARGV = split(/\\*\&/, $ENV{'QUERY_STRING'});
$action = $ARGV[0] ;
our ($q) = CGI -> new() ;
our $iaction = $q -> param('iaction') || $action ;
our $isaved = $q -> param('isaved') || '' ;
# When the “Create Waybill Out” box in the column is selected and “save"
# is clicked at the bottom of the page, each row selected talks to the
# DCB platform and waybills get created using the information linked to each row.
# The check box in that row and column should then disappear to indicate that a waybill for that step has been created.
# When the “Create Waybill In” box in the column is selected and “save” is clicked at the bottom of the page, each row selected talks to the DCB platform and waybills get created using the information linked to each row. This time, however, the “From” Venue becomes the delivery venue and the “To” venue becomes the pick up venue. These venues will still need to be able to be edited because sometimes systems arent returned to where they came from originally. The check box in that row and column should then disappear to indicate that a waybill for that step has been created.
# When the “Process Complete” box in the column is selected and “save” is clicked at the bottom of the page, each row selected now gets removed from the logistics page and archived.
2026-02-03 12:35:43 +00:00
our $debug = 1 ;
2025-11-26 09:31:54 +00:00
# our $testing = 1 ;
# our $testdcd = 1 ;
# if ($username ne 'handre') {
# print "<< MAINTENANCE IN PROGRESS >>" ; exit ;
# }
# -------- page opts --------------------------------------------------------------------------------------------------------------------------------------------------
&page_opts ;
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
our $srchscr = 1 ;
# $is_dcb_partner = 0 ;
our $open_new_tab = qq~target="_blank"~ ;
if ($iaction eq 'save') {
&db_open_upd ;
our $db_ignore_open_close = 1 ; # do one open and one close instead of repeating it
&common_min_load_params ;
&report_ifields;
&update ;
&list_screen ;
$db_ignore_open_close = 0 ; # do one open and one close instead of repeating it
&db_close_conn ;
exit if ($username eq 'handre' || $username eq 'rory') && $testing ;
&screen3;
&redirect_screen;
}
&db_open_ro ;
our $db_ignore_open_close = 1 ; # do one open and one close instead of repeating it
&report_screen if $iaction eq '' ;
if ($iaction eq 'report') {
&common_min_load_params ;
&report_ifields;
&list_screen ;
&screen3;
}
&common_min_action;
$db_ignore_open_close = 0 ; # do one open and one close instead of repeating it
&db_close_conn ;
exit;
#------------------------------------------------------------------------------------------
sub update {
&logistics_load_db_vars ;
my %AISA_supplier = () ;
foreach (keys %{$db{logistics_suppliers}}) {
$AISA_supplier{$_} = 1 if $db{logistics_suppliers}{$_}{supplier} =~ /AISA/ ;
}
our %ii = () ; my %iii = %i ; my $saved_from_to = "" ; #
my %saved_f_t = () ; $saved_f_t{"from"} = "to" ; $saved_f_t{"to"} = "from" ; # my %process_complete_envet_ids = () ;
# my $ft = '' ;
$ignore{'oaction'} = 1 ; my %calulated_default_values = () ;
my %iii = () ;
foreach (sort keys %i) {
local @field_parts = split(/\_/,$_) ;
my $eid = $field_parts[-1] ;
my $ft = $field_parts[-2] ;
next if $eid !~ /\d+/ || ($ft ne 'from' && $ft ne 'to') ;
my $upd_field_1 = "update_from_$eid" ;
my $upd_field_2 = "update_to_$eid" ;
next if !$i{$upd_field_1} && !$i{$upd_field_2} ;
# &common_debug("$_ [eid=$eid] [ft=$ft]") ;
$seen_create_waybill{from}{$eid} = 1 if $_ =~ /create_waybill_from/ && $i{$_} ;
$seen_create_waybill{to}{$eid} = 1 if $_ =~ /create_waybill_to/ && $i{$_} ;
if ((($_ =~ /create_waybill_from/ && $i{$upd_field_1}) || ($_ =~ /create_waybill_to/ && !$seen_create_waybill{from}{$eid} && $i{$upd_field_2})) && $i{$_}) {
my $venue_field = "venue_location_$ft\_$eid" ;
my $venue = $i{$venue_field} ;
our @items = split(/\|/,$i{"item_$ft\_$eid"}) ;
our $items_cnt = scalar @items || 1 ;
our ($suburb,$city,$postal_code,$address,$address1,$address2,$address3,$address4,$routeCode,$dcbdate) ; my @add_sql_upd = () ; my $add_sql_upd = '' ;
$city = ($db{organisations}{$venue}{name}) ? $db{organisations}{$venue}{name} : '' ; ### $db{organisations}{$venue}{name} ??
$suburb = ($db{organisations}{$venue}{suburb}) ? $db{organisations}{$venue}{suburb} : '' ;
$postal_code = ($db{organisations}{$venue}{postal_code}) ? $db{organisations}{$venue}{postal_code} : '' ;
$address1 = ($db{organisations}{$venue}{address_line_1}) ? $db{organisations}{$venue}{address_line_1} : '' ;
$address2 = ($db{organisations}{$venue}{address_line_2}) ? $db{organisations}{$venue}{address_line_2} : '' ;
$address3 = ($db{organisations}{$venue}{address_line_3}) ? $db{organisations}{$venue}{address_line_3} : '' ;
$address4 = ($db{organisations}{$venue}{address_line_4}) ? $db{organisations}{$venue}{address_line_4} : '' ;
$routeCode = ($db{organisations}{$venue}{dcb_route_code}) ? $db{organisations}{$venue}{dcb_route_code} : '' ;
# $dcbdate = ($ft eq 'to') ? substr($db{$table}{$eid}{date_from},0,10) : substr($db{$table}{$eid}{date_to},0,10) ;
$dcbdate = ($ft eq 'to') ? $db{$table}{$eid}{date_from} : $db{$table}{$eid}{date_to} ;
# &common_debug("1. CHECK [$_] [ft=$ft] [eid=$eid] [venue_field=$venue_field] [venue=$venue] [!$postal_code || !$suburb || !$city || !$address1]") ;
if (!$postal_code || !$suburb || !$city || !$address1) {
($suburb,$city,$postal_code,$address) = &common_location_osm_address($db{organisations}{$venue}{name}) if $db{organisations}{$venue}{name} ;
# &common_debug("($suburb,$city,$postal_code,$address) = &common_location_osm_address($db{organisations}{$venue}{name}) if $db{organisations}{$venue}{name} ;") ;
push @add_sql_upd, qq~city = "$city"~ if $city && !$db{organisations}{$venue}{city} ;
push @add_sql_upd, qq~suburb = "$suburb"~ if $suburb && !$db{organisations}{$venue}{suburb} ;
push @add_sql_upd, qq~postal_code = "$postal_code"~ if $postal_code && !$db{organisations}{$venue}{postal_code} ;
if ($address) {
($address1,$address2,$address3,$address4) = split(/\, /,$address);
push @add_sql_upd, qq~address_line_1 = "$address1"~ if $address1 && !$db{organisations}{$venue}{address_line_1} ; #, address_line_2 = '$address2', address_line_3 = '$address3', address_line_4 = '$address4'
push @add_sql_upd, qq~address_line_2 = "$address2"~ if $address2 && !$db{organisations}{$venue}{address_line_2} ;
push @add_sql_upd, qq~address_line_3 = "$address3"~ if $address3 && !$db{organisations}{$venue}{address_line_3} ;
push @add_sql_upd, qq~address_line_4 = "$address4"~ if $address4 && !$db{organisations}{$venue}{address_line_4} ;
}
# $add_sql_upd = join(", ",@add_sql_upd) ;
# &db_min_raw("UPDATE organisations SET $add_sql_upd WHERE id='$venue'") if $venue && $add_sql_upd ;
}
# &common_debug("2. CHECK [$suburb && $postal_code && !$routeCode]") ;
if ($suburb && $postal_code && !$routeCode) {
&dcb_postalcode ;
if (!$routeCode) {
my $suburb_tmp = $suburb ; $suburb = '' ;
&dcb_postalcode ;
$suburb = $suburb_tmp ;
}
push @add_sql_upd, qq~dcb_route_code = "$routeCode"~ if $routeCode && !$db{organisations}{$venue}{dcb_route_code} ;
}
$add_sql_upd = join(", ",@add_sql_upd) ;
&db_min_raw("UPDATE organisations SET $add_sql_upd WHERE id='$venue'") if $venue && $add_sql_upd ;
# &common_debug("3. CHECK [routeCode=$routeCode]") ;
# &dcb_savewabill($venue,$ft,$eid) if $routeCode ;
&dcb_upload_oms_waybill($venue,$ft,$eid) if $routeCode ;
my @dcb_waybill = split(/\-/,$db{$table}{$eid}{logistics_dcb_waybill}) ;
# my $dcb_waybill = ($ft eq 'to') ? "$dcb_waybill[0]-1" : "1-$dcb_waybill[1]" ;
# if ($savewabillResult =~ /Successful/iog) {
if ($uploadwaybillresult =~ /SUCCESS/iog) {
# $ii{$eid}{logistics_dcb_waybill} = ($ft eq 'to') ? "$dcb_waybill[0]-1" : "1-$dcb_waybill[1]" ;
if ($ft eq 'from') {
$ii{$eid}{from}{logistics_dcb_waybill} = 1 ;
$iii{$eid}{from}{status} = 1 ;
if ($i{"create_waybill_to_$eid"} && $i{$upd_field_2}) {
$ii{$eid}{to}{logistics_dcb_waybill} = 1 ;
$iii{$eid}{to}{status} = 1 ;
}
} else {
$ii{$eid}{to}{logistics_dcb_waybill} = 1 ;
$iii{$eid}{to}{status} = 1 ;
}
}
$ii{$eid}{from}{logistics_dcb_waybill} = 1 if $dcb_waybill[0] && !$ii{$eid}{from}{logistics_dcb_waybill} ;
$ii{$eid}{to}{logistics_dcb_waybill} = 1 if $dcb_waybill[1] && !$ii{$eid}{to}{logistics_dcb_waybill} ;
}
# if ($_ =~ /process_complete_/) {
# if (!$i{"update_$ft\_$eid"}) { ## AND ???
# $process_complete_envet_ids{$eid} = $i{"process_complete_$ft\_$eid"} ;
# }
# }
if ($_ =~ /item_multi/) {
# my $e_id = substr($_,4) ;
next if !$i{"update_from_$eid"} && !$i{"update_to_$eid"} ;
$ii{$eid}{item} = $i{$_} ;
next ;
} elsif ($_ =~ /shipment_operator_/ && $_ !~ /shipment_operator_value_was_saved/) {
# my $e_id = substr($_,4) ;
next if !$i{"update_from_$eid"} && !$i{"update_to_$eid"} ;
# if ($AISA_supplier{$i{"logistics_supplier_id_to_$eid"}} && $i{"update_to_$eid"}) {
unless ($calulated_default_values{$eid}{shipment_operator}) {
my @saved_field_from_to = split(/\-/,$db{$table}{$eid}{logistics_shipment_operator_id}) ;
$ii{$eid}{from}{shipment_operator} = $saved_field_from_to[0] ;
$ii{$eid}{to}{shipment_operator} = $saved_field_from_to[1] ;
my $update_field = "update_to_$eid" ; my $sup_field = "logistics_supplier_id_to_$eid" ;
if ($i{$update_field} && $AISA_supplier{$i{$sup_field}}) {
$ii{$eid}{to}{shipment_operator} = $i{"shipment_operator_to_$eid"} ;
}
if ($i{"update_from_$eid"} && $AISA_supplier{$i{"logistics_supplier_id_from_$eid"}}) {
$ii{$eid}{from}{shipment_operator} = $i{"shipment_operator_from_$eid"} ;
}
$calulated_default_values{$eid}{shipment_operator} = 1 ;
}
next ;
} elsif ($_ =~ /poc/) {
next if !$i{"update_from_$eid"} && !$i{"update_to_$eid"} ;
$ii{$eid}{poc} = $i{$_} ;
next ;
}
elsif (($_ =~ /other_from/ && $_ !~ /other_from_value_was_saved/) || ($_ =~ /other_to/ && $_ !~ /other_to_value_was_saved/)) {
my $system_location_field = "system_location_to_$eid" ;
my $venue_location_field = "venue_location_from_$eid" ;
# my $other_field = "other_to_from\_$eid" ;
unless ($calulated_default_values{$eid}{other_from_to}) {
my @saved_field_from_to = split(/\:\|\:/,$db{$table}{$eid}{logistics_location_other}) ;
my @saved_field_from_to_2_1 = split(/\|/,$saved_field_from_to[0]) ;
my @saved_field_from_to_2_2 = split(/\|/,$saved_field_from_to[1]) ;
$ii{$eid}{other_from} .= ($i{"update_from_$eid"} && $i{$venue_location_field} eq 'other') ? $i{"other_from_from\_$eid"} . '|' : $saved_field_from_to_2_1[0] . '|' ;
$ii{$eid}{other_from} .= ($i{"update_to_$eid"} && $i{$system_location_field} eq '5') ? $i{"other_from_to\_$eid"} : $saved_field_from_to_2_1[1] ;
$system_location_field = "system_location_from_$eid" ;
$venue_location_field = "venue_location_to_$eid" ;
$ii{$eid}{other_to} .= ($i{"update_from_$eid"} && $i{$system_location_field} eq '5') ? $i{"other_to_from\_$eid"} . '|' : $saved_field_from_to_2_2[0] . '|' ;
$ii{$eid}{other_to} .= ($i{"update_to_$eid"} && $i{$venue_location_field} eq 'other') ? $i{"other_to_to\_$eid"} : $saved_field_from_to_2_2[1] ;
# $ii{$eid}{other_to} .= $i{"other_to_from\_$eid"} . '|' . $i{"other_to_to\_$eid"} ;
# $ii{$eid}{other_from} = $saved_field_from_to[0] ;
# $ii{$eid}{other_to} = $saved_field_from_to[1] ;
$calulated_default_values{$eid}{other_from_to} = 1 ;
}
# if ($i{$upd_field}) {
# $ii{$eid}{other_from} = $i{"other_from_from\_$eid"} . '|' . $i{"other_from_to\_$eid"} ;
# $ii{$eid}{other_to} = $i{"other_to_from\_$eid"} . '|' . $i{"other_to_to\_$eid"} ;
# }
}
# elsif ($_ =~ /system_location/ && $_ !~ /changed_system_location/) {
# next if !$i{"update_from_$eid"} && !$i{"update_to_$eid"} ;
# $ii{$eid}{system_location} = $i{$_} ;
# next ;
# }
# elsif ($_ =~ /venue_location/ && $_ =~ /changed_venue_location/) {
# next if !$i{"update_from_$eid"} && !$i{"update_to_$eid"} ;
# $ii{$eid}{venue_location} = $i{$_} ;
# next ;
# }
elsif ($_ =~ /received_by/) {
next if !$i{"update_from_$eid"} && !$i{"update_to_$eid"} ;
$ii{$eid}{received_by} = $i{$_} ;
next ;
}
my $upd_field = "update_$ft\_$eid" ;
# next if !$i{$upd_field} ;
if ($_ =~ /system_location/ && $_ !~ /changed_system_location/) {
# next if !$i{"update_from_$eid"} && !$i{"update_to_$eid"} ;
# $ii{$eid}{system_location} = $i{$_} ;
# next ;
unless ($calulated_default_values{$eid}{system_location}) {
my @saved_field_from_to = split(/\-/,$db{$table}{$eid}{logistics_system_location_id}) ;
$ii{$eid}{from}{system_location} = $saved_field_from_to[0] ;
$ii{$eid}{to}{system_location} = $saved_field_from_to[1] ;
$calulated_default_values{$eid}{system_location} = 1 ;
}
$ii{$eid}{$saved_f_t{$ft}}{system_location} = $i{$_} if $i{$upd_field} ;
} elsif ($_ =~ /venue_location/ && $_ !~ /changed_venue_location/) {
# next if !$i{"update_from_$eid"} && !$i{"update_to_$eid"} ;
# $ii{$eid}{venue_location} = $i{$_} ;
# next ;
unless ($calulated_default_values{$eid}{venue_location}) {
my @saved_field_from_to = split(/\-/,$db{$table}{$eid}{logistics_venue_id}) ;
$ii{$eid}{from}{venue_location} = $saved_field_from_to[0] ;
$ii{$eid}{to}{venue_location} = $saved_field_from_to[1] ;
$calulated_default_values{$eid}{venue_location} = 1 ;
}
$ii{$eid}{$ft}{venue_location} = $i{$_} if $i{$upd_field} ;
} elsif ($_ =~ /waybill_nr/) {
unless ($calulated_default_values{$eid}{waybill_nr}) {
my @saved_field_from_to = split(/\-/,$db{$table}{$eid}{logistics_waybill_nrs}) ;
$ii{$eid}{from}{waybill_nr} = $saved_field_from_to[0] ;
$ii{$eid}{to}{waybill_nr} = $saved_field_from_to[1] ;
$calulated_default_values{$eid}{waybill_nr} = 1 ;
}
$ii{$eid}{$ft}{waybill_nr} = $i{$_} if $i{$upd_field} ;
} elsif ($_ =~ /logistics_supplier/) {
unless ($calulated_default_values{$eid}{logistics_supplier}) {
my @saved_field_from_to = split(/\-/,$db{$table}{$eid}{logistics_suppliers}) ;
$ii{$eid}{from}{logistics_supplier} = $saved_field_from_to[0] ;
$ii{$eid}{to}{logistics_supplier} = $saved_field_from_to[1] ;
$calulated_default_values{$eid}{logistics_supplier} = 1 ;
}
$ii{$eid}{$ft}{logistics_supplier} = $i{$_} if $i{$upd_field} ;
} elsif ($_ =~ /status/) {
unless ($calulated_default_values{$eid}{status}) {
my @saved_field_from_to = split(/\-/,$db{$table}{$eid}{logistics_status_ids}) ;
$ii{$eid}{from}{status} = $saved_field_from_to[0] ;
$ii{$eid}{to}{status} = $saved_field_from_to[1] ;
$calulated_default_values{$eid}{status} = 1 ;
}
$ii{$eid}{$ft}{status} = $i{$_} if $i{$upd_field} ;
$ii{$eid}{$ft}{status} = $iii{$eid}{$ft}{status} if $iii{$eid}{$ft}{status} ;
} elsif ($_ =~ /special_instructions/ && $_ !~ /other_special_instructions/) {
unless ($calulated_default_values{$eid}{special_instructions}) {
my @saved_field_from_to = split(/\-\-/,$db{$table}{$eid}{logistics_special_instructions}) ;
# my @saved_field_from_to_2_1 = split(/\:\|\:/,$saved_field_from_to[0]) ;
# my @saved_field_from_to_2_2 = split(/\:\|\:/,$saved_field_from_to[1]) ;
my $other_field_name = "other_special_instructions_from_$eid" ;
my $special_field_name = "special_instructions_from_$eid" ;
my $update_field_name = "update_from_$eid" ;
$ii{$eid}{from}{special_instructions} = ($i{$update_field_name}) ? $i{$special_field_name} . ":|:" . $i{$other_field_name } : $saved_field_from_to[0] ;
$other_field_name = "other_special_instructions_to_$eid" ;
$special_field_name = "special_instructions_to_$eid" ;
$update_field_name = "update_to_$eid" ;
$ii{$eid}{to}{special_instructions} = ($i{$update_field_name}) ? $i{$special_field_name} . ":|:" . $i{$other_field_name} : $saved_field_from_to[1] ;
$calulated_default_values{$eid}{special_instructions} = 1 ;
}
# if ($i{$upd_field} ) {
# my $other_field_name = "other_special_instructions_$ft\_$eid" ;
# $ii{$eid}{$ft}{special_instructions} = ($ft eq 'to') ? $i{$_} : qq~$i{$_}:|:$i{$other_field_name}~ ;
# $i{$_} =~ s/\-/ /g; $i{$other_field_name} =~ s/\-/ /g; # remove dash so as to not mess up the split
# $ii{$eid}{$ft}{special_instructions} = qq~$i{$_}:|:$i{$other_field_name}~ if $i{$upd_field} ;
# }
} elsif ($_ =~ /dcb_comments/ && $_ !~ /dcb_comments_value_was_saved_/) {
unless ($calulated_default_values{$eid}{dcb_comments}) {
my @saved_field_from_to = split(/\-\-/,$db{$table}{$eid}{logistics_dcb_comments}) ;
$ii{$eid}{from}{dcb_comments} = $saved_field_from_to[0] ;
$ii{$eid}{to}{dcb_comments} = $saved_field_from_to[1] ;
$calulated_default_values{$eid}{dcb_comments} = 1 ;
}
my $supplier_field = "logistics_supplier_id_$ft\_$eid" ;
$ii{$eid}{$ft}{dcb_comments} = $i{$_} if $i{$upd_field} && $i{$supplier_field} eq '2' ;
}
# elsif ($_ =~ /other_special_instructions/) {
# my @saved_field_from_to = split(/\-/,$db{$table}{$eid}{logistics_special_instructions}) ;
# $ii{$eid}{$saved_f_t{$ft}}{special_instructions} = ($ft eq 'to') ? $saved_field_from_to[0] : $saved_field_from_to[1] ;
# $ii{$eid}{$ft}{special_instructions} = $i{$_} ;
# }
# elsif ($_ =~ /process_complete_/) {
# my @saved_field_from_to = split(/\-/,$db{$table}{$eid}{logistics_complete}) ;
# $ii{$eid}{$saved_f_t{$ft}}{logistics_complete} = ($ft eq 'to') ? $saved_field_from_to[0] : $saved_field_from_to[1] ;
# $ii{$eid}{$ft}{logistics_complete} = $i{$_} ;
# }
elsif ($_ =~ /delivery_time/) {
unless ($calulated_default_values{$eid}{delivery_time}) {
my @saved_field_from_to = split(/\|/,$db{$table}{$eid}{logistics_delivery_datetime}) ;
$ii{$eid}{from}{delivery_time} = substr($saved_field_from_to[0],11) ;
$ii{$eid}{to}{delivery_time} = substr($saved_field_from_to[1],11) ;
$calulated_default_values{$eid}{delivery_time} = 1 ;
}
$ii{$eid}{$ft}{delivery_time} = $i{$_} if $i{$upd_field} ;
} elsif ($_ =~ /delivery_date/) {
unless ($calulated_default_values{$eid}{delivery_date}) {
my @saved_field_from_to = split(/\|/,$db{$table}{$eid}{logistics_delivery_datetime}) ;
$ii{$eid}{from}{delivery_date} = substr($saved_field_from_to[0],0,10) ;
$ii{$eid}{to}{delivery_date} = substr($saved_field_from_to[1],0,10) ;
$calulated_default_values{$eid}{delivery_date} = 1 ;
}
$ii{$eid}{$ft}{delivery_date} = $i{$_} if $i{$upd_field} ;
}
}
my %iii = %i ;
my $supp_field = 'logistics_suppliers' ;
my $waybill_field = 'logistics_waybill_nrs' ;
my $status_field = 'logistics_status_ids' ;
my $item_field = 'logistics_item_ids' ;
my $special_instructions_field = 'logistics_special_instructions' ;
my $delivery_datetime_field = 'logistics_delivery_datetime' ;
my $received_by_field = 'logistics_received_by' ;
my $other_location = 'logistics_location_other' ;
# my $system_location = 'logistics_system_location_id' ;
my $dcb_waybill = 'logistics_dcb_waybill' ;
my $dcb_comments_field = 'logistics_dcb_comments' ;
my $shipment_operator_field = 'logistics_shipment_operator_id' ;
my $system_location_field = 'logistics_system_location_id' ;
my $venue_field = 'logistics_venue_id' ;
my @from_to = ("from","to") ; my %seen_sys_id = () ;
foreach my $event_id (keys %ii) {
my $upd_field_1 = "update_from_$event_id" ;
my $upd_field_2 = "update_to_$event_id" ;
next if !$iii{$upd_field_1} && !$iii{$upd_field_2} ;
%i = () ;
# if ($db{$table}{$event_id}{logistics_venue_id} ne $ii{$event_id}{venue_location}) {
# $i{logistics_venue_id} = $ii{$event_id}{venue_location} ;
# $i{logistics_venue_id} = 0 unless $i{logistics_venue_id} ;
# }
foreach my $f_t (@from_to) {
my $add_dash = ($f_t eq 'from') ? '-' : '' ;
$i{$supp_field} .= "$ii{$event_id}{$f_t}{logistics_supplier}$add_dash" ;
$i{$waybill_field} .= "$ii{$event_id}{$f_t}{waybill_nr}$add_dash" ;
$i{$status_field} .= "$ii{$event_id}{$f_t}{status}$add_dash" ;
$i{$dcb_waybill} .= "$ii{$event_id}{$f_t}{logistics_dcb_waybill}$add_dash" ;
$i{$shipment_operator_field} .= "$ii{$event_id}{$f_t}{shipment_operator}$add_dash" ;
$i{$system_location_field} .= "$ii{$event_id}{$f_t}{system_location}$add_dash" ;
$i{$venue_field} .= "$ii{$event_id}{$f_t}{venue_location}$add_dash" ;
$add_dash = ($f_t eq 'from') ? '--' : '' ;
$i{$special_instructions_field} .= "$ii{$event_id}{$f_t}{special_instructions}$add_dash" ;
$i{$dcb_comments_field} .= "$ii{$event_id}{$f_t}{dcb_comments}$add_dash" ;
# $i{logistics_complete} .= "$ii{$event_id}{$f_t}{logistics_complete}$add_dash" ;
$add_dash = ($f_t eq 'from') ? '|' : '' ;
$i{$delivery_datetime_field} .= ($ii{$event_id}{$f_t}{delivery_date} && $ii{$event_id}{$f_t}{delivery_time}) ? "$ii{$event_id}{$f_t}{delivery_date}T$ii{$event_id}{$f_t}{delivery_time}$add_dash" : "$add_dash" ;
}
$i{$item_field} = "$ii{$event_id}{item}" ;
# $i{$delivery_datetime_field} = "$ii{$event_id}{delivery_date}T$ii{$event_id}{delivery_time}" ;
$i{$received_by_field} = "$ii{$event_id}{received_by}" ;
# $i{$shipment_operator_field} = "$ii{$event_id}{shipment_operator}" ;
# my @poc_details = split(/\_/,$ii{$event_id}{poc}) ;
# $i{recipient_name} = $poc_details[0] ;
# $i{recipient_nr} = $poc_details[1] ;
$i{recipient_id} = $ii{$event_id}{poc} ;
# $i{logistics_dcb_waybill} = $ii{$event_id}{logistics_dcb_waybill} ;
$i{$other_location} = $ii{$event_id}{other_from} . ":|:" . $ii{$event_id}{other_to};
# $i{$system_location} = $ii{$event_id}{system_location} ;
# my $upd_field = "update_$ft\_$event_id" ;
$i{$item_field} = join (",", map {"$_"} sort {$a <=> $b} split(/\,/,$i{$item_field})) if $i{$item_field} ;
$db{$table}{$event_id}{logistics_item_ids} = join (",", map {"$_"} sort {$a <=> $b} split(/\,/,$db{$table}{$event_id}{logistics_item_ids})) if $db{$table}{$event_id}{logistics_item_ids} ;
$ignore{logistics_dcb_waybill} = (($i{logistics_dcb_waybill} eq $db{$table}{$event_id}{logistics_dcb_waybill}) || !$i{logistics_dcb_waybill}) ? 1 : 0 ;
$ignore{logistics_venue_id} = (($i{logistics_venue_id} eq $db{$table}{$event_id}{logistics_venue_id})) ? 1 : 0 ;
$ignore{$supp_field} = ((!$i{$supp_field} && !$db{$table}{$event_id}{logistics_suppliers}) || ($i{$supp_field} eq $db{$table}{$event_id}{logistics_suppliers})) ? 1 : 0 ;
$ignore{$status_field} = ((!$i{$status_field} && !$db{$table}{$event_id}{logistics_status_ids}) || ($i{$status_field} eq $db{$table}{$event_id}{logistics_status_ids})) ? 1 : 0 ;
$ignore{$waybill_field} = ((!$i{$waybill_field} && !$db{$table}{$event_id}{logistics_waybill_nrs}) || ($i{$waybill_field} eq $db{$table}{$event_id}{logistics_waybill_nrs})) ? 1 : 0 ;
$ignore{$item_field} = ((!$i{$item_field} && !$db{$table}{$event_id}{logistics_item_ids}) || ($i{$item_field} eq $db{$table}{$event_id}{logistics_item_ids})) ? 1 : 0 ;
$ignore{$delivery_datetime_field} = ((!$i{$delivery_datetime_field} && !$db{$table}{$event_id}{$delivery_datetime_field}) || ($i{$delivery_datetime_field} eq $db{$table}{$event_id}{$delivery_datetime_field})) ? 1 : 0 ;
$ignore{$received_by_field} = ((!$i{$received_by_field} && !$db{$table}{$event_id}{$received_by_field}) || ($i{$received_by_field} eq $db{$table}{$event_id}{$received_by_field})) ? 1 : 0 ;
$ignore{$shipment_operator_field} = ((!$i{$shipment_operator_field} && !$db{$table}{$event_id}{$shipment_operator_field}) || ($i{$shipment_operator_field} eq $db{$table}{$event_id}{$shipment_operator_field})) ? 1 : 0 ;
$ignore{$special_instructions_field} = ((!$i{$special_instructions_field} && !$db{$table}{$event_id}{logistics_special_instructions}) || ($i{$special_instructions_field} eq $db{$table}{$event_id}{logistics_special_instructions})) ? 1 : 0 ;
$ignore{$other_location} = (($i{$other_location} eq $db{$table}{$event_id}{$other_location}) || !$i{$other_location}) ? 1 : 0 ;
# $ignore{$system_location} = ($i{$system_location} && $i{$system_location} eq $db{$table}{$event_id}{$system_location}) ? 1 : 0 ;
$ignore{$dcb_waybill} = ($i{$dcb_waybill} && $i{$dcb_waybill} eq $db{$table}{$event_id}{$dcb_waybill}) ? 1 : 0 ;
$ignore{$dcb_comments_field} = ($i{$dcb_comments_field} && $i{$dcb_comments_field} eq $db{$table}{$event_id}{$dcb_comments_field}) ? 1 : 0 ;
$ignore{$system_location_field} = ($i{$system_location_field} && $i{$system_location_field} eq $db{$table}{$event_id}{$system_location_field}) ? 1 : 0 ;
$ignore{$venue_field} = ($i{$venue_field} && $i{$venue_field} eq $db{$table}{$event_id}{$venue_field}) ? 1 : 0 ;
# $ignore{$status_field} = 1 if (!$i{$status_field} && !$db{$table}{$event_id}{logistics_status_ids}) || ($i{$status_field} eq $db{$table}{$event_id}{logistics_status_ids}) || !$iii{$upd_field} ;
# recipient_name,recipient_nr
# $ignore{$poc_field} = 1 if (!$i{$poc_field} && !$db{$table}{$event_id}{logistics_poc_ids}) || $i{$poc_field} eq $db{$table}{$event_id}{logistics_poc_ids} ;
# $ignore{poc_name} = 1 if ($i{poc_name} eq $db{$table}{$event_id}{poc_name}) || ($i{poc_name} eq $db{$table}{$event_id}{recipient_name}) || !$iii{$upd_field} ;
# $ignore{poc_contact_nr} = 1 if ($i{poc_contact_nr} eq $db{$table}{$event_id}{poc_contact_nr}) || ($i{poc_name} eq $db{$table}{$event_id}{recipient_nr}) || !$iii{$upd_field} ;
# $ignore{logistics_complete} = 1 if ($i{logistics_complete} eq '-') ;
# $ignore{logistics_complete} = 1 if (!$i{logistics_complete} && !$db{$table}{$event_id}{logistics_complete}) || ($i{logistics_complete} eq $db{$table}{$event_id}{logistics_complete}) || !$iii{$upd_field} ;
$ignore{poc_name} = 1 ;
$ignore{poc_contact_nr} = 1 ;
$ignore{poc_id} = 0 ;
$ignore{recipient_name} = 1 ;
$ignore{recipient_nr} = 1 ;
$ignore{recipient_id} = 0 ;
if ($db{$table}{$event_id}{poc_id} && !$db{$table}{$event_id}{recipient_id}) {
$i{poc_id} = $i{recipient_id} ;
$ignore{poc_id} = 1 if $i{poc_id} eq $db{$table}{$event_id}{poc_id} ;
$ignore{recipient_id} = 1 ;
} else {
$ignore{poc_id} = 1 ;
$ignore{recipient_id} = 1 if $i{recipient_id} eq $db{$table}{$event_id}{recipient_id} ;
}
$i{recipient_id} = 0 unless $i{recipient_id} ;
$i{poc_id} = 0 unless $i{poc_id} ;
# print "\n ignore poc_name : $ignore{poc_name}" ;
# print "\n ignore poc_contact_nr : $ignore{poc_contact_nr}" ;
# print "\n ignore poc_id : $ignore{poc_id}" ;
# print "\n ignore recipient_name : $ignore{recipient_name}" ;
# print "\n ignore recipient_nr : $ignore{recipient_nr}" ;
# print "\n ignore recipient_id : $ignore{recipient_id}" ;
# print "\n poc_id : $i{poc_id} , $db{$table}{$event_id}{poc_id}, $upd_field : $iii{$upd_field}" ;
# print "\n recipient_id : $i{recipient_id} , $db{$table}{$event_id}{recipient_id}" ;
# exit ;
# if ($db{$table}{$event_id}{poc_name} && !$db{$table}{$event_id}{recipient_name}) {
# $i{poc_name} = $i{recipient_name} ;
# $ignore{poc_name} = 1 if ($i{poc_name} eq $db{$table}{$event_id}{poc_name}) || !$iii{$upd_field} ;
# $ignore{recipient_name} = 1 ;
# } else {
# $ignore{poc_name} = 1 ;
# $ignore{recipient_name} = 1 if ($i{recipient_name} eq $db{$table}{$event_id}{recipient_name}) || !$iii{$upd_field} ;
# }
# if ($db{$table}{$event_id}{poc_contact_nr} && !$db{$table}{$event_id}{recipient_nr}) {
# $i{poc_contact_nr} = $i{recipient_nr} ;
# $ignore{poc_contact_nr} = 1 if ($i{poc_name} eq $db{$table}{$event_id}{poc_name}) || !$iii{$upd_field} ;
# $ignore{recipient_nr} = 1 ;
# } else {
# $ignore{poc_contact_nr} = 1 ;
# $ignore{recipient_nr} = 1 if ($i{recipient_nr} eq $db{$table}{$event_id}{recipient_nr}) || !$iii{$upd_field} ;
# }
# $process_complete_envet_ids{$event_id} = 1 if $ignore{logistics_dcb_waybill} && $ignore{logistics_complete} && $ignore{poc_name} && $ignore{poc_contact_nr} && $ignore{logistics_venue_id} && $ignore{$supp_field} && $ignore{$waybill_field} && $ignore{$status_field} && $ignore{$item_field} && $ignore{$poc_field} && $ignore{$special_instructions_field} && $sys_ids ;
# &common_debug("logistics_dcb_waybill [event_id=$event_id] [i=$i{logistics_dcb_waybill}] [db=$db{$table}{$event_id}{logistics_dcb_waybill}]") ;
# &common_debug("$status_field [ignore=$ignore{$status_field}] [event_id=$event_id] [i=$i{$status_field}] [db=$db{$table}{$event_id}{logistics_status_ids}]") ;
# user=;t_from=2025-01-24T18:14:29|user=25;d_from=2025-01-24T18:20:05|user=25;s_to=2025-01-24T18:42:29|user=25;d_from.t_from=2025-01-27T08:46:12|user=25;=2025-02-03T06:43:07
#------------------------------------------------------------------------------------------ CALCULATE THE logistics_last_changed_by COLUMN :
my ($saved_start,$saved_end) = split(/\|/,$db{$table}{$event_id}{logistics_delivery_datetime}) ;
my ($saved_start_date,$saved_start_time) = split(/\T/,$saved_start) ;
my ($saved_end_date,$saved_end_time) = split(/\T/,$saved_end) ;
my ($saved_status_from,$saved_status_to) = split(/\-/,$db{$table}{$event_id}{logistics_status_ids}) ;
my $live_time = qq~$now_year-$now_mm-$now_dd\T$now_hour:$now_min:$now_sec~ ;
$saved_date_col_user{$userid}{$live_time}{d_from} = 1 if $ii{$event_id}{from}{delivery_date} ne $saved_start_date && $iii{$upd_field_1} ;
$saved_date_col_user{$userid}{$live_time}{t_from} = 1 if $ii{$event_id}{from}{delivery_time} ne $saved_start_time && $iii{$upd_field_1} ;
$saved_date_col_user{$userid}{$live_time}{d_to} = 1 if $ii{$event_id}{to}{delivery_date} ne $saved_end_date && $iii{$upd_field_2};
$saved_date_col_user{$userid}{$live_time}{t_to} = 1 if $ii{$event_id}{to}{delivery_time} ne $saved_end_time && $iii{$upd_field_2} ;
$saved_date_col_user{$userid}{$live_time}{s_to} = 1 if $ii{$event_id}{to}{status} ne $saved_status_to && $iii{$upd_field_2} ;
my $saved_user = 0 ; my %seen_col_date = () ;
foreach my $a (split(/\|/,$db{$table}{$event_id}{logistics_last_changed_by})) {
if ($a =~ /user=(\d+)/) {
$saved_user = $1;
}
foreach my $b (split(/\;/,$a)) {
my @c = split(/\=/,$b) ;
if ($c[0] ne 'user') {
foreach my $col (split(/\./,$c[0])) {
next if $saved_date_col_user{$userid}{$live_time}{$col} ;
if ($seen_col_date{$col}) {
my $cur_date_val = $c[1] ; $cur_date_val =~ s/[:\-T]//g ;
my $seen_date_val = $seen_col_date{$col} ; $seen_date_val =~ s/[:\-T]//g ;
if ($seen_date_val < $cur_date_val) {
$saved_date_col_user{$saved_user}{$seen_col_date{$col}}{$col} = 0 ;
$saved_date_col_user{$saved_user}{$c[1]}{$col} = 1 ;
}
} else {
$saved_date_col_user{$saved_user}{$c[1]}{$col} = 1 ;
}
$seen_col_date{$col} = $c[1] ;
}
}
}
}
my %seen_user = () ; # my %seen_col = () ;
foreach my $user (sort keys %saved_date_col_user) {
# my %seen_col = () ;
foreach my $datetime (sort {$b cmp $a} keys %{$saved_date_col_user{$user}}) {
my $add_string = ($i{logistics_last_changed_by}) ? qq~|~ : qq~~ ;
$add_string .= qq~user=$user\;~ unless $seen_user{$user} ;
my $d = qq~~ ; my $cols_exists = 0 ;
foreach (sort keys %{$saved_date_col_user{$user}{$datetime}}) {
next unless $saved_date_col_user{$user}{$datetime}{$_} ;
# next if $seen_col{$_} ; $seen_col{$_} = 1 ;
$d .= qq~$_\.~ ; $cols_exists = 1 if $_ ;
}
chop $d ;
$seen_user{$user} = 1 if $d ;
$add_string .= qq~$d\=$datetime~ if $d ;
$i{logistics_last_changed_by} .= qq~$add_string~ if $cols_exists && $user ;
}
}
# $i{logistics_last_changed_by} .= qq~user=$userid~ if $i{logistics_last_changed_by} ;
$ignore{logistics_last_changed_by} = ($i{logistics_last_changed_by} eq $db{$table}{$event_id}{logistics_last_changed_by}) ? 1 : 0 ;
#------------------------------------------------------------------------------------------
if ($event_id) {
foreach (keys %i) {
next if $ignore{$_} ;
$line .= qq~$_='$i{$_}',~ ;
}
$line = qq~$now_year$now_year$now_mm$now_dd$now_hour$now_min$now_sec|$now_year-$now_mm-$now_dd $now_hour:$now_min:$now_sec|event_quote_id='$event_id'|user_id=$userid|changed_from|~ . $line if $line ;
chop $line ;
# &common_log_changes("events/changes.dat",$line) ;
&db_min_upd($table,"id='$event_id'") ;
}
# # # if ($set) {
# # # %i = () ;
# # # my $upd_set = $set ; $upd_set =~ s/\`//g ;
# # # $i{last_changed_by} = "$db{$table}{$event_id}{last_changed_by}, $username SET [$upd_set]" ;
# # # &db_min_upd($table,"id='$event_id'") if $event_id ;
# # # }
}
%i = %iii ;
} #------------------------------------------------------------------------------------------
# sub calc_changes {
# } #------------------------------------------------------------------------------------------
sub report_screen {
our $lcol = 3 ;
our $fcol = 5 ;
$allow_deselect{client_id} = 1 ;
&common_min_select_opts('client_id','customers','name',$i{client_id},'','',"events='1'") ;
&common_min_select_opts('organisation_ids','organisations','name','','','','','','','','name') ;
my $dcb_sql = ($is_dcb_partner) ? " AND id='2'" : '' ;
my $dcb_sel = ($is_dcb_partner) ? 2 : '' ;
&common_min_select_opts('supplier_id','logistics_suppliers','supplier',$dcb_sel,'','',"active = '1'$dcb_sql",'','','','supplier') ;
&common_min_select_opts('region_id','regions','name','','','code','','','','','name') ;
%status_hash = ($is_dcb_partner) ? (1 =>"Booked") : (1 =>"Booked",2 => "Pending",3=>"In Transit",4 =>"Delivered") ;
$i{status_id} = ($is_dcb_partner && !$i{status_id}) ? 1 : $i{status_id} ;
$selected{$i{status_id}} = "SELECTED" if $i{status_id} ;
for (1 .. 4) { $opts{status_id} .= qq~<option value="$_" $selected{$_}>$status_hash{$_}</option>~ ; }
$preferred_title{organisation_ids} = "Venue" ;
$print_box_content_rows .= &common_min_forms_start('report') ;
$trigger_jquery .= qq~
\$("#selectClient_id").val('5').trigger("chosen:updated") ;
~ ;
$allow_deselect{organisation_ids} = 1 ;
$allow_deselect{supplier_id} = 1 ;
$allow_deselect{status_id} = 1 ;
$allow_deselect{region_id} = 1 ;
$print_box_content_rows .= &common_min_form_select('client_id',$i{client_id}) ;
# my ($monday,$sunday) = &common_get_this_monday_sunday ;
my ($now_year2,$now_mm2,$now_dd2) = Add_Delta_Days($now_year,$now_mm,$now_dd,10) ;
$now_mm2 = sprintf("%02d",$now_mm2) ;
$now_dd2 = sprintf("%02d",$now_dd2) ;
$print_box_content_rows .= &common_min_form_datepicker('date_from',"$now_year-$now_mm-$now_dd") ; #unless $i{date_from} ;
$print_box_content_rows .= &common_min_form_datepicker('date_to',"$now_year2-$now_mm2-$now_dd2") ; #unless $i{date_from} ;
$print_box_content_rows .= &common_min_form_select('organisation_ids','') ;
$print_box_content_rows .= &common_min_form_select('supplier_id','') ;
$print_box_content_rows .= &common_min_form_select('status_id','') ;
$print_box_content_rows .= &common_min_form_select('region_id','') ;
$print_box_content_rows .= &common_min_forms_end('','','report') ;
&common_min_search_screen ;
} #-------------------------------------------------------------------------------
sub report_ifields {
&load_search_vars ;
# if ($i{date_from} && !$i{date_to}) { # check dates
# push @report_sql, "`date_from` >= '$i{date_from} 00:00:00'" ; ############################################### > OR >=
# push @report_results, "(EVENT AFTER '$i{date_from}')" ;
# } elsif (!$i{date_from}) {
# $error = qq~PLEASE ENTER A START DATE!~ ;
# &report_screen;
# } elsif ($i{date_from} && $i{date_to}) { # check dates
# push @report_sql, "(
# ('$i{date_from} 00:00:00' <= `date_from` AND `date_from` <= '$i{date_to} 23:59:59') OR
# ('$i{date_from} 00:00:00' <= `date_to` AND `date_to` <= '$i{date_to} 23:59:59') OR
# ('$i{date_from} 00:00:00' <= `date_from` AND `date_to` >= '$i{date_to} 23:59:59') OR
# ('$i{date_from} 00:00:00' >= `date_from` AND `date_to` <= '$i{date_to} 23:59:59')
# )" ; ############################################### > OR >=
# push @report_results, "(EVENT BETWEEN '$i{date_from}' AND '$i{date_to}')" ;
# }
if ($i{date_from} && $i{date_to}) {
push @report_sql, "(
('$i{date_from} 00:00:00' <= `date_from` AND `date_from` <= '$i{date_to} 23:59:59') OR
('$i{date_from} 00:00:00' <= `date_to` AND `date_to` <= '$i{date_to} 23:59:59') OR
('$i{date_from} 00:00:00' >= `date_from` AND `date_to` >= '$i{date_to} 23:59:59') OR
('$i{date_from} 00:00:00' <= `date_from` AND `date_to` <= '$i{date_to} 23:59:59')
)" ; ############################################### > OR >=
push @report_results, "(EVENT EXISTS BETWEEN '$i{date_from}' AND '$i{date_to}')" ;
} elsif (!$i{date_from} && $i{date_to}) {
push @report_sql, "`date_to` >= '$i{date_to} 23:59:59'" ; ############################################### > OR >=
push @report_results, "(EVENT ENDING BEFORE '$i{date_to}')" ;
} elsif ($i{date_from} && !$i{date_to}) {
push @report_sql, "'$i{date_from} 00:00:00' <= `date_from`" ; ############################################### > OR >=
push @report_results, "(EVENT STARTING AFTER '$i{date_from}')" ;
} elsif (!$i{date_from} && !$i{date_to}) {
$error = qq~PLEASE ENTER AT LEAST A START OR END DATE!!!~ ;
}
if ($i{client_id}) {
push @report_sql, "(`quote_to` = '$i{client_id}')" ;
push @report_results, "Client = $db{customers}{$i{client_id}}{name}" ;
}
if ($i{organisation_ids}) {
push @report_sql, "(FIND_IN_SET($i{organisation_ids},organisation_ids))" ;
push @report_results, "Venue = `$db{organisations}{$i{organisation_ids}}{name}`" ;
}
if ($i{supplier_id}) {
push @report_sql, "((logistics_suppliers REGEXP '(^|;)[^-]*-$i{supplier_id}(\$\|;)') OR (logistics_suppliers REGEXP '(^|;)($i{supplier_id})-[^;]*(\$\|;)'))" ;
push @report_results, "Supplier = `$db{logistics_suppliers}{$i{supplier_id}}{supplier}`" ;
}
if ($is_dcb_partner && $i{status_id} != 1) { $i{status_id} = 1 ; }
if ($i{status_id}) {
local %status_hash = (1 =>"Booked",2 => "Pending",3=>"In Transit",4 =>"Delivered") ;
push @report_results, "Status = `$status_hash{$i{status_id}}`" ;
push @report_sql, "((logistics_status_ids REGEXP '(^|;)[^-]*-$i{status_id}(\$\|;)') OR (logistics_status_ids REGEXP '(^|;)($i{status_id})-[^;]*(\$\|;)'))" ;
}
if ($i{region_id}) {
push @report_sql, "`region_id` = '$i{region_id}'" ;
push @report_results, "Region = `$db{regions}{$i{region_id}}{name} [$db{regions}{$i{region_id}}{code}]`" ;
}
$report_results_msg = uc join(', ', @report_results) ;
if (not $report_results_msg) {
$error = qq~ENTER AT LEAST ONE SEARCH PARAMETER~ ;
&report_screen;
} else {
$isaved = qq~SELECT WHERE $report_results_msg~ ;
}
our $srch_where_sql = join(' AND ',@report_sql) ;
} #------------------------------------------------------------------------------------------
sub load_search_vars {
&db_min_ro('customers','id,name',"`id`='$i{client_id}'",'','') if $i{client_id} ;
&db_min_ro('organisations',"id,name","`id`='$i{organisation_ids}'",'','') if $i{organisation_ids} ;
&db_min_ro('logistics_suppliers','*',"`id`='$i{supplier_id}'",'','') if $i{supplier_id} ;
&db_min_ro('regions','id,name,code',"`id`='$i{region_id}'",'','') if $i{region_id} ;
} #------------------------------------------------------------------------------------------
sub get_default_date {
my ($date,$diff) = @_ ;
my @sd = &common_split_sql_time($date) ;
my @dtyp = &common_add_delta_dhms($sd[0],$sd[1],$sd[2],$sd[3],$sd[4],$sd[5],$diff,0,0,0) ;
return ($dtyp[0]) ;
} #------------------------------------------------------------------------------------------
sub load_list_vars {
my ($where) = @_ ;
&db_min_ro($table,"id,quote_to,ref,organisation_ids,quote_accepted,event_system_id_multiple,region_id,operator_ids,date_from,date_to,poc_name,poc_id,recipient_id,logistics_suppliers,logistics_waybill_nrs,logistics_address_ids,logistics_venue_id,logistics_status_ids,logistics_item_ids,city_id,sport_type_ids,logistics_special_instructions,logistics_complete,logistics_dcb_waybill,logistics_delivery_datetime,logistics_received_by,logistics_location_other,logistics_system_location_id,logistics_last_changed_by,logistics_dcb_comments,logistics_shipment_operator_id","$where AND `quote_accepted` = '1'",'','') ;
&db_min_ro('event_quotes_poc','*','','','') ;
&db_min_ro('event_quotes_recipient','*','','','') ;
# my %seen_poc = () ; load_list_vars
foreach (sort {$db{$table}{$a}{poc_id} cmp $db{$table}{$b}{poc_id}} keys %{$db{$table}}) {
# next if $seen_poc{$db{$table}{$_}{poc_name}}{$db{$table}{$_}{poc_contact_nr}} || !$db{$table}{$_}{poc_name} ;
# $seen_poc{$db{$table}{$_}{poc_name}}{$db{$table}{$_}{poc_contact_nr}} = 1 ;
my $poc_id = ($db{$table}{$_}{recipient_id}) ? $db{$table}{$_}{recipient_id} : $db{$table}{$_}{poc_id} ;
my $poc_name = ($db{$table}{$_}{recipient_id}) ? $db{event_quotes_recipient}{$db{$table}{$_}{recipient_id}}{name} : $db{event_quotes_poc}{$db{$table}{$_}{poc_id}}{name} ;
my $poc_nr = ($db{$table}{$_}{recipient_id}) ? $db{event_quotes_recipient}{$db{$table}{$_}{recipient_id}}{contact_nr} : $db{event_quotes_poc}{$db{$table}{$_}{poc_id}}{contact_nr} ;
next unless $poc_name ;
$poc_nr =~ s/\'//g ; $poc_name =~ s/ $// ;
$opts{poc}{$_} .= ($poc_name && $poc_nr) ? qq~<option value='$poc_id' SELECTED>$poc_name [$poc_nr]</option>~ : ($poc_name && !$poc_nr) ? qq~<option value='$poc_name\_$poc_nr' SELECTED>$poc_name</option>~ : qq~~ ;
}
&db_min_ro('event_systems','*',"(`system_type` = 'solo' OR `system_type` = 'mobile' OR `description` lIKE 'cricket%')",'','') ;
our %logistics_waybill_ids_hash = () ;
our %fval = () ;
our %col_database_col = () ;
&db_min_ro('customers','id',"events='1'",'','') ;
foreach my $id (keys %{$db{$table}}) {
$fval{item}{$id}{from} = $db{$table}{$id}{logistics_item_ids} ;
$fval{item}{$id}{to} = $db{$table}{$id}{logistics_item_ids} ;
my @split_values = split(/\-/, $db{$table}{$id}{logistics_suppliers}) ;
$fval{supplier}{$id}{from} = $split_values[0] ;
$fval{supplier}{$id}{to} = $split_values[1] ;
@split_values = split(/\-/,$db{$table}{$id}{logistics_waybill_nrs}) ;
$logistics_waybill_ids_hash{$id}{from} = $split_values[0] ;
$logistics_waybill_ids_hash{$id}{to} = $split_values[1] ;
$fval{waybill_nr}{$id}{from} = $split_values[0] ;
$fval{waybill_nr}{$id}{to} = $split_values[1] ;
@split_values = split(/\-/,$db{$table}{$id}{logistics_status_ids}) ;
$fval{status}{$id}{from} = $split_values[0] ;
$fval{status}{$id}{to} = $split_values[1] ;
@split_values = split(/\-\-/,$db{$table}{$id}{logistics_dcb_comments}) ;
$fval{dcb_comments}{$id}{from} = $split_values[0] ;
$fval{dcb_comments}{$id}{to} = $split_values[1] ;
@split_values = split(/\-\-/,$db{$table}{$id}{logistics_special_instructions}) ;
my @split_from = split(/\:\|\:/,$split_values[0]) ;
my @split_to = split(/\:\|\:/,$split_values[1]) ;
$fval{special_instructions}{$id}{from} = $split_from[0] ;
$fval{other_special_instructions}{$id}{from} = $split_from[1] ;
$fval{special_instructions}{$id}{to} = $split_to[0] ;
$fval{other_special_instructions}{$id}{to} = $split_to[1] ;
# my $def_poc_name = ($db{$table}{$id}{recipient_name}) ? $db{$table}{$id}{recipient_name} : $db{$table}{$id}{poc_name} ;
# my $def_poc_nr = ($db{$table}{$id}{recipient_nr}) ? $db{$table}{$id}{recipient_nr} : $db{$table}{$id}{poc_contact_nr} ;
my $def_poc_id = ($db{$table}{$id}{recipient_id}) ? $db{$table}{$id}{recipient_id} : $db{$table}{$id}{poc_id} ;
# $def_poc_name =~ s/ $// ;
# $fval{poc}{$id}{from} = qq~$def_poc_name\_$def_poc_nr~ if $def_poc_name || $def_poc_nr;
$fval{poc}{$id}{from} = qq~$def_poc_id~ if $def_poc_id;
$fval{poc}{$id}{to} = $fval{poc}{$id}{from} ;
my @delivery_split = split(/\|/,$db{$table}{$id}{logistics_delivery_datetime}) ;
my @delivery_from = split("T",$delivery_split[0]) ;
my @delivery_to = split("T",$delivery_split[1]) ;
$fval{delivery_date}{$id}{to} = $delivery_to[0] || &get_default_date($db{$table}{$id}{date_to},-1) ;
$fval{delivery_time}{$id}{to} = $delivery_to[1] || '15:00:00' ;
$fval{delivery_date}{$id}{from} = $delivery_from[0] || &get_default_date($db{$table}{$id}{date_from},1) ;
$fval{delivery_time}{$id}{from} = $delivery_from[1] || '15:00:00' ;
my @location_other_split = split(/\:\|\:/,$db{$table}{$id}{logistics_location_other}) ;
my @location_other_to_split = split(/\|/,$location_other_split[1]) ;
$fval{other_to}{$id}{from} = $location_other_to_split[0] ;
$fval{other_to}{$id}{to} = $location_other_to_split[1] ;
my @location_other_from_split = split(/\|/,$location_other_split[0]) ;
$fval{other_from}{$id}{from} = $location_other_from_split[0] ;
$fval{other_from}{$id}{to} = $location_other_from_split[1] ;
$fval{received_by}{$id}{to} = $db{$table}{$id}{logistics_received_by} ;
$fval{received_by}{$id}{from} = $fval{received_by}{$id}{to} ;
@split_values = split(/\-/,$db{$table}{$id}{logistics_shipment_operator_id}) ;
$fval{shipment_operator}{$id}{from} = $split_values[0] ;
$fval{shipment_operator}{$id}{to} = $split_values[1] ;
@split_values = split(/\-/,$db{$table}{$id}{logistics_system_location_id}) ;
$fval{system_location}{$id}{from} = $split_values[1] ;
$fval{system_location}{$id}{to} = $split_values[0] ;
@split_values = split(/\-/,$db{$table}{$id}{logistics_venue_id}) ;
$fval{venue_location}{$id}{from} = $split_values[0] ;
$fval{venue_location}{$id}{to} = $split_values[1] ;
}
&db_min_ro('cities','id,name,city_short','','','') ;
&db_min_ro('sport_types','id,name','','','') ;
&db_min_ro('regions','code,id','','','') ;
&db_min_ro('organisations','id,name,region_code','','','') ;
foreach (sort {$db{organisations}{$a}{name} cmp $db{organisations}{$b}{name}} keys %{$db{organisations}}) {
$opts{venue_location}{$db{regions}{$db{organisations}{$_}{region_code}}{id}} .= qq~<option value="$_">$db{organisations}{$_}{name}</option>~ ;
# &common_debug("1. venue_location >>>>>> [<option value=$_>$db{organisations}{$_}{name}</option>]");
}
foreach (keys %{$opts{venue_location}}) {
$opts{venue_location}{$_} .= qq~<option value="other">OTHER</option>~ ;
}
# $opts{venue_location}{other} .= qq~<option value="5">Other</option>~ ;
&db_min_ro('users','id,name,user_type,username',"`name` NOT LIKE 'Rory%'",'','') ;
foreach (sort {$db{users}{$a}{name} cmp $db{users}{$b}{name}} keys %{$db{users}}) {
$opts{shipment_operator} .= qq~<option value="$_">$db{users}{$_}{name}</option>~ if $db{users}{$_}{user_type} =~ /casual_/;
}
my $dcb_sql = ($is_dcb_partner) ? " AND id='2'" : '' ;
&db_min_ro('logistics_suppliers','*',"active = '1'$dcb_sql",'','') ;
our %AISA_supplier = () ;
foreach (sort {$db{logistics_suppliers}{$a}{supplier} cmp $db{logistics_suppliers}{$b}{supplier}} keys %{$db{logistics_suppliers}}) {
$logistics_suppliers_selected = ($_ == 2) ? 'SELECTED' : '' ; # DCB Logistics
$opts{supplier} .= qq~<option value="$_" $logistics_suppliers_selected>$db{logistics_suppliers}{$_}{supplier}</option>~ ;
$db{logistics_suppliers}{$_}{name} = $db{logistics_suppliers}{$_}{supplier} ;
$AISA_supplier{$_} = 1 if $db{logistics_suppliers}{$_}{supplier} =~ /AISA/ ;
}
# $opts{supplier_to} = $opts{supplier_from} ;
&db_min_ro('logistics_locations','*','','','') ;
foreach (sort {$db{logistics_locations}{$a}{location} cmp $db{logistics_locations}{$b}{location}} keys %{$db{logistics_locations}}) {
$opts{system_location} .= qq~<option value="$_">$db{logistics_locations}{$_}{location}</option>~ ;
}
# &common_debug("1. system_location >>>>>> [$opts{system_location}]");
our %status_hash = (1 =>"Booked",2 => "Pending",3=>"In Transit",4 =>"Delivered") ;
$opts{status} .= qq~<option value="1">$status_hash{1}</option>~ ;
$opts{status} .= qq~<option value="2" SELECTED>$status_hash{2}</option>~ ;
$opts{status} .= qq~<option value="3">$status_hash{3}</option>~ ;
$opts{status} .= qq~<option value="4">$status_hash{4}</option>~ ;
$opts2{status} = $opts{status} ;
# $opts{status} = $opts{status_to} ;
&db_min_ro('logistics_items','*','','','') ;
foreach (sort {($db{logistics_items}{$a}{name} =~ /^(\d+)/)[0] <=> ($db{logistics_items}{$b}{name} =~ /^(\d+)/)[0]} keys %{$db{logistics_items}}) {
next if lc $db{logistics_items}{$_}{name} eq 'other' ;
$opts{item}.= qq~<option value="$_">$db{logistics_items}{$_}{name}</option>~ ;
$logistics_items_qty{$db{logistics_items}{$_}{qty}} .= "$_," if ($db{logistics_items}{$_}{name} =~ /Tripod/ || $db{logistics_items}{$_}{name} =~ /Extension/ || $db{logistics_items}{$_}{name} =~ /Mobile System/) && $db{logistics_items}{$_}{name} =~ / x / ;
}
foreach (keys %logistics_items_qty) {
chop $logistics_items_qty{$_} ;
}
# foreach (keys %{$opts{item}}) {
$opts{item} .= qq~<option value="1">Other</option>~ ;
# }
} #------------------------------------------------------------------------------------------
sub list_screen {
$print_box_content_rows .= &common_min_forms_start("$lcpage") ;
&load_list_vars($srch_where_sql) ;
$fcol = 12 ;
# my @from_to = ('from','to') ;
my @from_to = ('to','from') ;
our @sql_col_display = ("nr","FT","event","dates","stime","etime","venue","city","sport","system","from","other_from","to","other_to","supplier","shipment_operator","poc","dcb_comments","item","delivery_date","delivery_time","special_instructions","other_special_instructions","waybill_nr","status","received_by") ;
my $report = 1 ;
our $xlsx_title_heading = "Logistics Report" ;
our $xlsxdir = "logistics_report" ;
our $xlsxreportname = "Logistics_Report" ;
&report_xlsx_export_header("$xlsxreportname",$xlsxdir,'',$xlsx_title_heading) ;
@sql_col_display = ("nr","FT","event","dates","stime","etime","venue","city","sport","system","from","other_from","to","other_to","supplier","shipment_operator","poc","dcb_comments","item","delivery_date","delivery_time","special_instructions","other_special_instructions","waybill_nr","status","received_by","create_waybill","update") ;
# $column_same_for_from_and_to{nr} = 1 ;
# $column_same_for_from_and_to{event} = 1 ;
# $column_same_for_from_and_to{dates} = 1 ;
# $column_same_for_from_and_to{stime} = 1 ;
# $column_same_for_from_and_to{etime} = 1 ;
# $column_same_for_from_and_to{venue} = 1 ;
# $column_same_for_from_and_to{city} = 1 ;
# $column_same_for_from_and_to{sport} = 1 ;
# $column_same_for_from_and_to{system} = 1 ;
# $column_same_for_from_and_to{poc} = 1 ;
# $column_same_for_from_and_to{item} = 1 ;
# $column_same_for_from_and_to{received_by} = 1 ;
my @rev_sql_col_display = reverse @sql_col_display ;
foreach (@rev_sql_col_display) { $lastchild++ ; $last_child{$_} = $lastchild ; } # &common_debug("last-child : $_ [$last_child{$_}]");
$xlsxrow-- ;
my $column_nr = scalar @sql_col_display ;
# my ($now_year2,$now_mm2,$now_dd2) = Add_Delta_Days($now_year,$now_mm,$now_dd,-7) ;
my $now_year2 = $now_year ;
my $now_mm2 = $now_mm - 1 ;
$now_year2 -= 1 unless $now_mm2 ;
$now_mm2 = 12 unless $now_mm2 ;
$now_mm2 = sprintf("%02d",$now_mm2) ;
my $now_dd2 = "01" ;
our $current_date = int("$now_year2$now_mm2$now_dd2") ; our $found_editable = 0 ;
our %seen_field_id = () ; our %all_location_ids_per_system = () ; our $all_ids = qq~~ ;
local @month_names = ("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ;
our @months = @month_names ;
our $quote_and_ops_ids = qq~~ ;
$fval_table{"supplier"} = "logistics_suppliers" ;
$fval_table{"status"} = "status_hash" ;
$db{status_hash}{1}{name} = "Booked" ;
$db{status_hash}{2}{name} = "Pending" ;
$db{status_hash}{3}{name} = "In Transit" ;
$db{status_hash}{4}{name} = "Delivered" ;
$preferred_title{status} = "Status" ;
$preferred_title{supplier} = "Supplier" ;
$preferred_title{item} = "Item" ;
$preferred_title{poc} = "poc" ;
our %linked_from_and_to_fields = () ; our @from_to_field_ids = () ; our @from_to_multi_field_ids = () ; our @from_to_checkbox_field_ids = () ;
our %from_to_opposite = () ;
$from_to_opposite{from} = "to" ;
$from_to_opposite{to} = "from" ;
our $other_from_dropdown_can_exist = 0 ;
our $other_to_dropdown_can_exist = 0 ;
our $other_from_text_can_exist = 0 ;
our $other_to_text_can_exist = 0 ;
our $dcb_supplier_is_selected = 0 ;
my $max_z_index = 0 ;
our $AISA_supplier_selected_somewhere = 0 ; my %skip = () ;
our $other_from_system_location_selected_somewhere = 0 ; our $other_to_system_location_selected_somewhere = 0 ;
our $other_from_venue_selected_somewhere = 0 ; our $other_to_venue_selected_somewhere = 0 ;
our $dcb_supplier_is_selected_somewhere = 0 ;
foreach my $id (sort {$b <=> $a} keys %{$db{$table}}) {
next unless $db{customers}{$db{$table}{$id}{quote_to}}{id} ;
if ($i{organisation_ids}) {
my @or_ids_arr = split(/\,/,$db{$table}{$id}{organisation_ids}) ;
my $cnt = 0 ;
foreach my $or_id (@or_ids_arr) {
next unless $or_id ;
$cnt++ if $or_id eq $i{organisation_ids} ;
}
unless ($cnt) {
$skip{event}{$id} = 1 ;
next ;
}
}
my $systems_in_event_count = 0 ; my $system_location_ids = '' ; my $event_venue_ids = '' ;
local @system_name_ids = split(/\;/,$db{$table}{$id}{event_system_id_multiple}) ;
my $cnt = 0 ;
foreach my $event_sys_id (@system_name_ids) {
next unless $event_sys_id ;
next unless $db{event_systems}{$event_sys_id}{system_type} ;
$cnt++ ;
}
unless ($cnt) {
$skip{event}{$id} = 1 ;
next ;
}
my @dcb_waybill = split(/\-/,$db{$table}{$id}{logistics_dcb_waybill}) ; $dcb_waybill_nr{from} = $dcb_waybill[0] ; $dcb_waybill_nr{to} = $dcb_waybill[1] ;
my @suppliers2 = split(/\-/,$db{$table}{$id}{logistics_suppliers}) ;
$supp{'from'} = $suppliers2[0] ; $supp{'to'} = $suppliers2[1] ;
my $start_date = substr($db{$table}{$id}{date_from},0,10) ; $start_date =~ s/\-//g ; $start_date = int($start_date) ;
my $end_date = substr($db{$table}{$id}{date_to},0,10) ; $end_date =~ s/\-//g ; $end_date = int($end_date) ;
for my $from_to (sort {$b <=> $a} @from_to) {
my ($status_from,$status_to) = split (/\-/,$db{$table}{$id}{logistics_status_ids}) ;
my ($supplier_from,$supplier_to) = split (/\-/,$db{$table}{$id}{logistics_suppliers}) ;
if (($i{status_id} && (($from_to eq 'from' && $i{status_id} ne $status_from) || ($from_to eq 'to' && $i{status_id} ne $status_to))) || ($i{supplier_id} && (($from_to eq 'from' && $i{supplier_id} ne $supplier_from) || ($from_to eq 'to' && $i{supplier_id} ne $supplier_to)))) {
$skip{$from_to}{$id} = 1 ;
next ;
}
my $readlonly_row = (($from_to eq 'to' && $current_date > $start_date) || ($from_to eq 'from' && $current_date > $end_date) || ($dcb_waybill_nr{$from_to} && $logistics_waybill_ids_hash{$id}{$from_to} && $db{$table}{$id}{logistics_item_ids} && $supp{$from_to} == 2)) ? 1 : 0 ;
$max_z_index++ if !$readlonly_row ;
$AISA_supplier_selected_somewhere = 1 if ($from_to eq 'from' && $AISA_supplier{$supplier_from}) || ($from_to eq 'to' && $AISA_supplier{$supplier_to}) ;
$other_from_system_location_selected_somewhere = 1 if $db{$table}{$id}{logistics_system_location_id} =~ /^5-/ && $from_to eq 'from' ;
$other_to_system_location_selected_somewhere = 1 if $db{$table}{$id}{logistics_system_location_id} =~ /-5$/ && $from_to eq 'to' ;
$other_from_venue_selected_somewhere = 1 if $db{$table}{$id}{logistics_venue_id} =~ /^other-/ && $from_to eq 'from' ;
$other_to_venue_selected_somewhere = 1 if $db{$table}{$id}{logistics_venue_id} =~ /-other$/ && $from_to eq 'to' ;
$dcb_supplier_is_selected_somewhere = 1 if ($from_to eq 'from' && ($supplier_from eq '2' || !$supplier_from)) || (($supplier_to || $supplier_to eq '2') && $from_to eq 'to') ;
}
}
$max_z_index = $max_z_index * 7 ;
foreach my $id (sort {$b <=> $a} keys %{$db{$table}}) {
next unless $db{customers}{$db{$table}{$id}{quote_to}}{id} ;
# next unless $id eq '9029' ;
# my @logistics_complete = split(/\-/,$db{$table}{$id}{logistics_complete}) ;
next if $skip{event}{$id} || !$id ;
our @system_name_ids = split(/\;/,$db{$table}{$id}{event_system_id_multiple}) ;
our @op_ids = split(/\,/,$db{$table}{$id}{operator_ids}) ;
our @venue_ids = split(/\,/,$db{$table}{$id}{organisation_ids}) ;
our @dcb_waybill = split(/\-/,$db{$table}{$id}{logistics_dcb_waybill}) ; $dcb_waybill_nr{from} = $dcb_waybill[0] ; $dcb_waybill_nr{to} = $dcb_waybill[1] ;
our $items = $db{$table}{$id}{logistics_item_ids} ;
our @suppliers = split(/\-/,$db{$table}{$id}{logistics_suppliers}) ; $supp{'from'} = $suppliers[0] ; $supp{'to'} = $suppliers[1] ;
our $start_date = substr($db{$table}{$id}{date_from},0,10) ; $start_date =~ s/\-//g ; $start_date = int($start_date) ;
our $end_date = substr($db{$table}{$id}{date_to},0,10) ; $end_date =~ s/\-//g ; $end_date = int($end_date) ;
# next if ($from_to eq 'from' && $logistics_complete[0]) || ($from_to eq 'to' && $logistics_complete[1]) ;
# next if $i{supplier_id} && $i{supplier_id} ne $fval{'supplier'}{$id}{'from'} && $i{supplier_id} ne $fval{'supplier'}{$id}{'to'} ;
# next if $i{status_id} && $i{status_id} ne $fval{'status'}{$id}{'from'} && $i{status_id} ne $fval{'status'}{$id}{'to'} ;
our $there_is_no_corresponding_TO = 0 ; our $there_is_no_corresponding_FROM = 0 ;
our %prev_update_time = () ;
my $saved_user = 0 ;
foreach my $a (split(/\|/,$db{$table}{$id}{logistics_last_changed_by})) {
if ($a =~ /user=(\d+)/) {
$prev_update_time{user}{na} = $1;
}
foreach my $b (split(/\;/,$a)) {
my @c = split(/\=/,$b) ;
if ($c[0] ne 'user') {
foreach my $col (split(/\./,$c[0])) {
$prev_update_time{date}{$col} = &common_min_date_as_string($c[1]) ;
$prev_update_time{user}{$col} = $prev_update_time{user}{na} ;
}
}
}
}
for my $from_to (sort {$b <=> $a} @from_to) {
# $i{status_id}$i{supplier_id}
$there_is_no_corresponding_TO = 1 if $from_to eq 'from' && (($i{status_id} && $i{status_id} ne $status_to) || ($i{supplier_id} && $i{supplier_id} ne $supplier_to)) ;
$there_is_no_corresponding_FROM = 1 if $from_to eq 'to' && (($i{status_id} && $i{status_id} ne $status_from) || ($i{supplier_id} && $i{supplier_id} ne $supplier_from)) ;
next if $skip{$from_to}{$id} ;
$cali_cnt++;
$xlsxcol = 0 ;
$print_tbody .= qq~<tr id="$id$dow">~ if $report ;
$systems_in_event_count++ ;
&fields_row($from_to,$id);
our $default_javascript = '' ; our $column_nr_cnt = $column_nr+1 ; our $system_count = 0 ; our $time_icon_color = 'black' ; our @waybill = () ; our $items = qq~~ ; our @suppliers = () ;
if ($db{$table}{$id}{logistics_dcb_waybill}) {
@waybill = split(/\-/,$db{$table}{$id}{logistics_dcb_waybill}) ; $dcb_waybill_nr{'from'} = $waybill[0] ; $dcb_waybill_nr{'to'} = $waybill[1] ;
$items = $db{$table}{$id}{logistics_item_ids} ;
@suppliers = split(/\-/,$db{$table}{$id}{logistics_suppliers}) ; $supp{'from'} = $suppliers[0] ; $supp{'to'} = $suppliers[1] ;
}
our $readlonly_row = (($from_to eq 'to' && $current_date > $start_date) || ($from_to eq 'from' && $current_date > $end_date) || ($dcb_waybill_nr{$from_to} && $logistics_waybill_ids_hash{$id}{$from_to} && $items && $supp{$from_to} == 2)) ? 1 : 0 ;
our $supplier_default_val = 0 ;
our $item_default_val = 0 ;
our $waybill_nr_default_val = 0 ;
our $AISA_supplier_selected = 0 ;
our $other_from_system_location_is_saved = 0 ;
our $other_to_system_location_is_saved = 0 ;
our $other_from_venue_location_is_saved = 0 ;
our $other_to_venue_location_is_saved = 0 ;
foreach (@sql_col_display) {
$column_nr_cnt-- ;
next unless $_ ; # blank for the buttons column
our $formatting = $format84 ;
our $val = $db{$table}{$id}{$_} ;
our $valxlsx = '' ;
our $align = qq~ class="dt-center"~ ;
our $nowrap = '' ;
our $tooltip_updated = '' ;
$val = '' ; $valxlsx = 'MUSTBEBLANK' ;
our $default_val = $fval{$_}{$id}{$from_to} ;
our $only_display_val = '' ;
our $background_color = '' ;
our $default_val_is_saved = ($default_val && !$readlonly_row) ? 1 : 0 ;
our $cell_contains_select = 0 ;
our $hide_cell = 0 ;
&color_row($from_to,$id,$_) ;
&from_to_row($from_to,$id,$_) ;
next if $seen_event{$id} && $column_same_for_from_and_to{$_} ;
&val_row($from_to,$id,$_) ;
my $style = ($column_same_for_from_and_to{$_} && !$there_is_no_corresponding_TO && !$there_is_no_corresponding_FROM) ? qq~rowspan="2"~ : qq~~ ;
# $style .= ($default_val_is_saved && !$background_color && !$readlonly_row) ? qq~ style="background-color:#424949;"~ : ($default_val_is_saved && $background_color && !$readlonly_row) ? qq~ style="background-color:$background_color;"~ : qq~~ ;
$style .= ($default_val_is_saved && !$background_color && !$readlonly_row) ? qq~background-color:#424949;~ : ($default_val_is_saved && $background_color && !$readlonly_row) ? qq~background-color:$background_color;~ : qq~~ ;
$style .= ($cell_contains_select) ? qq~z-index:$max_z_index;~ : qq~~ ;
$style .= ($hide_cell) ? qq~display:none;~ : qq~~ ;
$style = qq~ style="$style"~ ;
if ($_ eq 'venue' && $db{$table}{$id}{organisation_ids} !~ /\b$fval{venue_location}{$id}{$from_to}\b/) {
$style = qq~style='background-color:rgb(255,0,0);'~ ;
$tooltip_updated = qq~title data-toggle='tooltip' data-placement='top' data-original-title='Does not match with the venue to travel $from_to!'~ ;
$val = qq~<span $tooltip_updated>$val</span>~ ;
}
$max_z_index-- if $cell_contains_select ;
my $cell_id = ($_ eq 'create_waybill') ? "id='waybill_col_$from_to\_$id'" : ($_ eq 'dcb_comments') ? "id='dcb_comments_col_$from_to\_$id'" : ($_ eq 'shipment_operator') ? "id='s_o_cell_$from_to\_$id'" : ($_ eq 'other_from' && $from_to eq 'to') ? "id='other_from_cell_$id'" : ($_ eq 'other_to' && $from_to eq 'from') ? "id='other_to_cell_$id'" : ($_ eq 'other_from' && $from_to eq 'from') ? "id='other_from_from_cell_$id'" : ($_ eq 'other_to' && $from_to eq 'to') ? "id='other_to_to_cell_$id'" : "" ;
$print_tbody .= qq~<td $align $nowrap $style $cell_id>$val</td>~ if $report ;
# next if $_ eq 'create_waybill_out' || $_ eq 'create_waybill_in' || $_ eq 'process_complete' || $_ eq 'update' ;
# next if $_ eq 'create_waybill' || $_ eq 'process_complete' || $_ eq 'update' ;
next if $_ eq 'create_waybill' || $_ eq 'update' ;
&xlsxcreator_write_xlsx($ws,$xlsxrow,$xlsxcol,$valxlsx,$formatting) ;
$xlsxcol++ ;
}
$print_tbody .= qq~</tr>~ ;
$xlsxrow++ ;
$seen_event{$id} = 1 ;
chop $system_location_ids if $system_location_ids ; chop $event_venue_ids if $event_venue_ids ;
}
}
my $from_to_field_ids_str = join (",",@from_to_field_ids) ;
my $from_to_multi_field_ids_str = join (",",@from_to_multi_field_ids) ;
my $from_to_checkbox_field_ids_str = join (",",@from_to_checkbox_field_ids) ;
chop $linked_from_and_to_fields{main} if $linked_from_and_to_fields{main} ;
chop $linked_from_and_to_fields{multi_selects} if $linked_from_and_to_fields{multi_selects} ;
chop $linked_from_and_to_fields{checkboxes} if $linked_from_and_to_fields{checkboxes} ;
$trigger_jquery_raw .= qq~
function dcb_checkbox(add_item,ft,event_id) {
let ft_event_id = ft+"_"+event_id ;
let add_waybill = (!\$("input[name='waybill_nr_"+ft_event_id+"']").val()) ? "<br><b>- Add WayBillNr</b>" : "" ;
let set_supplier = (\$("#selectLogistics_supplier_id_"+ft_event_id).val() != '2') ? "<br><b>- Set Supplier to DCB</b>" : "" ;
let required_fields_are_in = (!add_waybill && !add_item && !set_supplier) ? 1 : 0 ;
let checkbox_exists = \$("#waybill_col_"+ft_event_id).find('input[type="checkbox"]').length ;
if (required_fields_are_in && !checkbox_exists) {
\$("#waybill_col_"+ft_event_id).html("<input value='1' name='create_waybill_"+ft_event_id+"' type='checkbox' id='create_waybill_"+ft_event_id+"'>").trigger("chosen:updated") ;
} else if (!required_fields_are_in) {
\$("#waybill_col_"+ft_event_id).html("<i class='glyphicon glyphicon-remove' title data-toggle='tooltip' data-placement='left' data-original-title='Before sending to DCB:"+add_waybill+""+add_item+""+set_supplier+"'></i>").trigger("chosen:updated") ;
\$("#waybill_col_" + ft_event_id + " [data-toggle='tooltip']").tooltip({html:true});
}
}
function prevent_table_left_scroll () {
let scrollLeft = \$("#$useropts{table_id}").parent().scrollLeft() ;
setTimeout(() => {
\$("#$useropts{table_id}").parent().scrollLeft(scrollLeft) ; // Restore scroll position after dropdown change
},0) ;
}
~ ;
$trigger_jquery_raw_on_change_1 .= qq~
// parent.event.preventDefault() ;
prevent_table_left_scroll() ;
let corresponding_drop_down_field ; let event_id = get_row_nr(this.id,1) ;
if (this.id.includes("selectItem_")) {
corresponding_drop_down_field = {$linked_from_and_to_fields{multi_selects}} ;
\$("#"+corresponding_drop_down_field[this.id]).val(\$(this).val()).trigger("chosen:updated") ;
check_whether_to_update(corresponding_drop_down_field[this.id]) ;
}
if (this.id.includes("inputWaybill_nr_") || this.id.includes("selectLogistics_supplier_id_") || this.id.includes("selectItem_")) {
let ft_event_id = "from_"+event_id ;
let add_item = (\$("#selectItem_"+ft_event_id).chosen().val()) ? "" : "<br><b>- Add Item(s)</b>" ;
if (!\$("#waybill_col_"+ft_event_id).find('a[href]').length && !\$('#waybill_col_'+ft_event_id).find('i.glyphicon.glyphicon-ok').length) {
dcb_checkbox(add_item,'from',event_id) ;
}
ft_event_id = "to_"+event_id ;
if (!\$("#waybill_col_"+ft_event_id).find('a[href]').length && !\$('#waybill_col_'+ft_event_id).find('i.glyphicon.glyphicon-ok').length) {
dcb_checkbox(add_item,'to',event_id) ;
}
}
// this.id.includes("inputOther_") ||
if (this.id.includes("selectPoc_") || this.id.includes("inputReceived_by_") && (this.id.includes("selectSystem_location_") && !\$("input[name='changed_system_location']").val()) && (this.id.includes("selectVenue_location_") && !\$("input[name='changed_venue_location']").val())) {
corresponding_drop_down_field = {$linked_from_and_to_fields{main}} ;
\$("#"+corresponding_drop_down_field[this.id]).val(\$(this).val()).trigger("chosen:updated") ;
check_whether_to_update(corresponding_drop_down_field[this.id]) ;
if (this.id.includes("selectSystem_location_") && !\$("input[name='changed_system_location']").val()) {
\$("input[name='changed_system_location']").val("1") ;
}
if (this.id.includes("selectVenue_location_") && !\$("input[name='changed_venue_location']").val()) {
\$("input[name='changed_venue_location']").val("1") ;
}
}
if (this.id.includes("create_waybill_")) {
corresponding_drop_down_field = {$linked_from_and_to_fields{checkboxes}} ;
if (\$(this).is(":checked") && !\$("#"+corresponding_drop_down_field[this.id]).is(":checked")) {
\$("#"+corresponding_drop_down_field[this.id]).prop("checked",true) ;
} else if (!\$(this).is(":checked") && \$("#"+corresponding_drop_down_field[this.id]).is(":checked")) {
\$("#"+corresponding_drop_down_field[this.id]).prop("checked",false) ;
}
let event_id = get_row_nr(this.id,1) ;
// if (!\$("input[name='update_from_"+event_id+"']").is(":checked")) {
\$("input[name='update_from_"+event_id+"']").prop("checked",true) ;
// }
// if (!\$("input[name='update_to_"+event_id+"']").is(":checked")) {
\$("input[name='update_to_"+event_id+"']").prop("checked",true) ;
// }
// check_whether_to_update(corresponding_drop_down_field[this.id]) ;
}
~ ;
my $from_venue_ids_str = join(",",@from_venue_ids) ; my $from_venue_ids_str_jquery = $from_venue_ids_str ; $from_venue_ids_str_jquery =~ s/\,/\","/g ;
my $to_venue_ids_str = join(",",@to_venue_ids) ; my $to_venue_ids_str_jquery = $to_venue_ids_str ; $to_venue_ids_str_jquery =~ s/\,/\","/g ;
my $supplier_ids_str = join(",",@supplier_ids_arr) ; my $supplier_ids_str_jquery = $supplier_ids_str ; $supplier_ids_str_jquery =~ s/\,/\","/g ;
$opts{shipment_operator} =~ s/\"/\'/g ;
$trigger_jquery_raw .= qq~
const shipment_operator_opts = "$opts{shipment_operator}" ;
function add_select (field_name,field_id,placeholder,options,tindex,width) {
return "<select class='form-control' style='margin:2px 0 2px 0; width: "+width+"%;' name='"+field_name+"' id='"+field_id+"'data-placeholder='"+placeholder+"' data-rel='chosen' tabindex='"+tindex+"'><option value=''></option>"+options+"</select>" ;
}
~ ;
$trigger_jquery_raw_on_change_1 .= qq~
let row_index = get_row_nr(this.id,2) ;
if (this.id.includes("selectLogistics_supplier_")) {
let AISA_selected_somewhere = 0 ; let AISA_selected_nowhere = 0 ; var supplierIDs = ["$supplier_ids_str_jquery"] ;
if (\$("#"+this.id).val() == '2') {
\$("#textareaDcb_comments_"+row_index).css("display","") ;
if (\$("input[name='dcb_comments_value_was_saved_"+row_index+"']").val() == '1') {
\$("#dcb_comments_col_"+row_index).css("background-color","rgb(66,73,73)") ; // rgb(66,73,73)
}
}
if (\$("#"+this.id).val() == '2' && \$("#$useropts{table_id} tr th:nth-last-child($last_child{dcb_comments})").is(":hidden")) {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{dcb_comments})").css("display","") ;
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{dcb_comments})").css("display","") ;
}
} else if (\$("#"+this.id).val() != '2' && !\$("#$useropts{table_id} tr th:nth-last-child($last_child{dcb_comments})").is(":hidden")) {
// Check if DCB is selected anywhere else ----------------------------------------------
let dcb_selected_somewhere_else = 0 ;
supplierIDs.forEach(function(selectID) {
if (\$("#"+selectID).val() == '2') {
dcb_selected_somewhere_else = 1 ;
return ;
}
}) ;
if (!dcb_selected_somewhere_else && !\$("#$useropts{table_id} tr th:nth-last-child($last_child{dcb_comments})").is(":hidden")) {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{dcb_comments})").css("display","none") ;
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{dcb_comments})").css("display","none") ;
}
} else if (!\$("#textareaDcb_comments_"+row_index).is(":hidden")) {
\$("#textareaDcb_comments_"+row_index).css("display","none") ;
if (\$("input[name='dcb_comments_value_was_saved_"+row_index+"']").val()) {
\$("#dcb_comments_col_"+row_index).css("background-color","") ; // rgb(66,73,73)
}
}
}
// if (\$('option:selected', this).text().includes('AISA') && !\$("#s_o_cell_"+row_index).html()) {
if (\$('option:selected', this).text().includes('AISA') && !\$("#s_o_cell_"+row_index).find('select').length) {
let placeholder = (row_index.includes("to")) ? "To" : "From" ; placeholder = placeholder + " " + get_row_nr(row_index,1) ; placeholder = "Select Shipment Operator "+placeholder ;
let select_drop_down = add_select("shipment_operator_"+row_index,"selectShipment_operator_"+row_index,placeholder,shipment_operator_opts,1,0) ;
\$("#s_o_cell_"+row_index).append(select_drop_down).trigger("chosen:updated") ;
\$("#selectShipment_operator_"+row_index).chosen({ allow_single_deselect:true }) ;
\$("#selectShipment_operator_"+row_index+"_chosen").css("width","90%") ;
\$("#selectShipment_operator_"+row_index+"_chosen").css("position","absolute") ;
\$("#selectShipment_operator_"+row_index+"_chosen").css("left","5%") ;
\$("#selectShipment_operator_"+row_index+"_chosen").css("top","50%") ;
\$("#selectShipment_operator_"+row_index+"_chosen").css("transform","translateY(-50%)") ;
if (!\$("#selectShipment_operator_"+row_index).val() && \$("input[name='shipment_operator_value_was_saved_"+row_index+"']").val()) {
\$("#selectShipment_operator_"+row_index).val(\$("input[name='shipment_operator_value_was_saved_"+row_index+"']").val()).trigger("chosen:updated") ;
}
if (\$("input[name='shipment_operator_value_was_saved_"+row_index+"']").val()) {
\$("#s_o_cell_"+row_index).css("background-color","rgb(66,73,73)") ; // rgb(66,73,73)
}
if (\$("#$useropts{table_id} tr th:nth-last-child($last_child{shipment_operator})").is(":hidden")) {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{shipment_operator})").css("display","") ;
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{shipment_operator})").css("display","") ;
}
}
\$("#$useropts{table_id}").on("change","#selectShipment_operator_"+row_index, function() {
prevent_table_left_scroll() ;
check_whether_to_update(this.id) ;
});
} else if (\$('option:selected',this).text().includes('AISA') && \$("#s_o_cell_"+row_index).is(":hidden")) {
if (\$("#$useropts{table_id} tr th:nth-last-child($last_child{shipment_operator})").is(":hidden")) {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{shipment_operator})").css("display","") ;
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{shipment_operator})").css("display","") ;
}
} else {
\$("#s_o_cell_"+row_index).css("display","") ;
}
if (\$("input[name='shipment_operator_value_was_saved_"+row_index+"']").val()) {
\$("#s_o_cell_"+row_index).css("background-color","rgb(66,73,73)") ; // rgb(66,73,73)
if (!\$("#selectShipment_operator_"+row_index).val()) {
\$("#selectShipment_operator_"+row_index).val(\$("input[name='shipment_operator_value_was_saved_"+row_index+"']").val()).trigger("chosen:updated") ;
}
}
} else if (\$('option:selected',this).text().includes('AISA')) {
if (\$("input[name='shipment_operator_value_was_saved_"+row_index+"']").val()) {
\$("#s_o_cell_"+row_index).css("background-color","rgb(66,73,73)") ; // rgb(66,73,73)
if (!\$("#selectShipment_operator_"+row_index).val()) {
\$("#selectShipment_operator_"+row_index).val(\$("input[name='shipment_operator_value_was_saved_"+row_index+"']").val()).trigger("chosen:updated") ;
}
\$("#selectShipment_operator_"+row_index+"_chosen").css("display","") ;
}
} else if (!\$('option:selected',this).text().includes('AISA') && !\$("#s_o_cell_"+row_index).is(":hidden")) {
console.log("1 shipment_operator") ;
if (!\$("#$useropts{table_id} tr th:nth-last-child($last_child{shipment_operator})").is(":hidden")) {
let AISA_selected_somewhere = 0 ;
supplierIDs.forEach(function(selectID) {
if (\$("#"+selectID+" option:selected").text().includes('AISA')) {
AISA_selected_somewhere = 1 ;
return ;
}
}) ;
if (AISA_selected_somewhere) {
// \$("#s_o_cell_"+row_index).css("display","none") ;
\$("#selectShipment_operator_"+row_index+"_chosen").css("display","none") ;
console.log("2 shipment_operator : "+\$("input[name='shipment_operator_value_was_saved_"+row_index+"']").val()) ;
if (\$("input[name='shipment_operator_value_was_saved_"+row_index+"']").val()) {
\$("#s_o_cell_"+row_index).css("background-color","") ;
}
} else {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{shipment_operator})").css("display","none") ;
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{shipment_operator})").css("display","none") ;
}
}
}
}
// else if (\$('option:selected', this).text().includes('AISA') && \$("#s_o_cell_"+row_index).is(":hidden")) {
// \$("#s_o_cell_"+row_index).css("display","") ;
// }
// else if (!\$('option:selected', this).text().includes('AISA') && !\$("#s_o_cell_"+row_index).is(":hidden")) {
// }
// let dcb_comments_default_text_can_exist = "$dcb_comments_text_can_exist" ;
}
if (this.id.includes("selectSystem_location_")) {
// \$("$from_venue_ids_str").change( function () {
// const user_type = "$db{users}{$userid}{user_type}" ;
const user_type = "$glod_user_level" ;
// if (user_type != "casual_c" && user_type != "it" && "$userid" != "24" && "$userid" != "1" && "$userid" != "338") {
// if (user_type <= 3 && user_type != "it" && "$userid" != "24" && "$userid" != "1" && "$userid" != "338") {
if (user_type < 3) {
return ;
}
let other_from_dropdown_can_exist = "$other_from_dropdown_can_exist" ;
let other_to_dropdown_can_exist = "$other_to_dropdown_can_exist" ;
let other_from_text_can_exist = "$other_from_text_can_exist" ;
let other_to_text_can_exist = "$other_to_text_can_exist" ;
if (\$("#"+this.id).val() == '5') {
// \$("#$useropts{table_id} tr th:nth-last-child($last_child{item})").css("width","17%");
// \$("#$useropts{table_id} tr th:nth-last-child($last_child{status})").css("width","7%");
// \$("#$useropts{table_id} tr th:nth-last-child($last_child{received_by})").css("width","7%");
// \$("#$useropts{table_id} tr:eq(1) td:nth-last-child($last_child{other_from})").html("") ;
// \$("#$useropts{table_id} tr:eq(2) td:nth-last-child($last_child{other_to})").html("") ;
if (row_index.includes("to_")) {
console.log("other to") ;
if (\$("input[name='other_from_to_"+event_id+"']").is(":hidden")) {
\$("input[name='other_from_to_"+event_id+"']").css("display","") ;
}
if (\$("input[name='other_from_value_was_saved_to_"+event_id+"']").val()) {
\$("#other_from_cell_"+event_id).css("background-color","rgb(66,73,73)") ; // rgb(66,73,73)
}
if (other_from_dropdown_can_exist || other_from_text_can_exist) {
if (\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_from})").is(":hidden")) {
if (other_from_dropdown_can_exist != "0" || other_from_text_can_exist != "0") {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_from})").css("display","") ;
}
}
}
if (other_from_dropdown_can_exist || other_from_text_can_exist) {
if (\$("#$useropts{table_id} tr:eq(1) td:nth-last-child($last_child{other_from})").is(":hidden")) {
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
if (other_from_dropdown_can_exist != "0" || other_from_text_can_exist != "0") {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{other_from})").css("display","") ;
}
}
}
}
} else if (row_index.includes("from_")) {
console.log("other from") ;
if (\$("input[name='other_to_from_"+event_id+"']").is(":hidden")) {
\$("input[name='other_to_from_"+event_id+"']").css("display","") ;
}
if (\$("input[name='other_to_value_was_saved_from_"+event_id+"']").val()) {
\$("#other_to_cell_"+event_id).css("background-color","rgb(66,73,73)") ; // rgb(66,73,73)
}
if (other_to_dropdown_can_exist || other_to_text_can_exist) {
if (\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_to})").is(":hidden")) {
if (other_to_dropdown_can_exist != "0" || other_to_text_can_exist != "0") {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_to})").css("display","") ;
}
}
}
if (other_to_dropdown_can_exist || other_to_text_can_exist) {
if (\$("#$useropts{table_id} tr:eq(1) td:nth-last-child($last_child{other_to})").is(":hidden")) {
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
if (other_to_dropdown_can_exist != "0" || other_to_text_can_exist != "0") {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{other_to})").css("display","") ;
}
}
}
}
}
} else if (\$("#"+this.id).val() != '5') {
if (!\$("#$useropts{table_id} tr:eq(1) td:nth-last-child($last_child{other_from})").is(":hidden") && row_index.includes("to_")) {
if (!\$("input[name='other_from_to_"+event_id+"']").is(":hidden")) {
\$("input[name='other_from_to_"+event_id+"']").css("display","none") ;
\$("#other_from_cell_"+event_id).css("background-color","") ;
console.log("HIDE other_from_cell_") ;
}
var selectIDs = ["$to_venue_ids_str_jquery"] ;
let venues_as_other_selected = 0 ;
selectIDs.forEach(function(selectID) {
if (\$(selectID).val() == '5' || \$(selectID).val() == 'other') {
venues_as_other_selected = 1 ;
return ;
}
});
if (!venues_as_other_selected) {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_from})").css("display","none") ;
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{other_from})").css("display","none") ;
}
}
} else if (!\$("#$useropts{table_id} tr:eq(1) td:nth-last-child($last_child{other_to})").is(":hidden") && row_index.includes("from_")) {
console.log("other_from") ;
if (!\$("input[name='other_to_from_"+event_id+"']").is(":hidden")) {
\$("input[name='other_to_from_"+event_id+"']").css("display","none") ;
\$("#other_to_cell_"+event_id).css("background-color","") ;
}
var selectIDs = ["$from_venue_ids_str_jquery"] ;
let venues_as_other_selected = 0 ;
selectIDs.forEach(function(selectID) {
if (\$(selectID).val() == '5' || \$(selectID).val() == 'other') {
venues_as_other_selected = 1 ;
return ;
}
}) ;
if (!venues_as_other_selected) {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_to})").css("display","none") ;
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{other_to})").css("display","none") ;
}
}
}
// \$("#$useropts{table_id} tr th:nth-last-child($last_child{item})").css("width","14%");
}
}
if (this.id.includes("selectVenue_location_")) {
const user_type = "$glod_user_level" ;
if (user_type < 3) {
return ;
}
let other_from_dropdown_can_exist = "$other_from_dropdown_can_exist" ;
let other_to_dropdown_can_exist = "$other_to_dropdown_can_exist" ;
let other_from_text_can_exist = "$other_from_text_can_exist" ;
let other_to_text_can_exist = "$other_to_text_can_exist" ;
if (\$("#"+this.id).val() == 'other') {
if (row_index.includes("from_")) {
if (\$("input[name='other_from_value_was_saved_from_"+event_id+"']").val()) {
\$("#other_from_from_cell_"+event_id).css("background-color","rgb(66,73,73)") ; // rgb(66,73,73)
}
if (\$("input[name='other_from_from_"+event_id+"']").is(":hidden")) {
\$("input[name='other_from_from_"+event_id+"']").css("display","") ;
}
if (\$("input[name='other_from_from_value_was_saved_to_"+event_id+"']").val()) {
\$("#other_from_from_cell_"+event_id).css("background-color","rgb(66,73,73)") ; // rgb(66,73,73)
}
if (other_from_dropdown_can_exist || other_from_text_can_exist) {
if (\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_from})").is(":hidden")) {
if (other_from_dropdown_can_exist != "0" || other_from_text_can_exist != "0") {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_from})").css("display","") ;
}
}
}
if (other_from_dropdown_can_exist || other_from_text_can_exist) {
if (\$("#$useropts{table_id} tr:eq(1) td:nth-last-child($last_child{other_from})").is(":hidden")) {
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
if (other_from_dropdown_can_exist != "0" || other_from_text_can_exist != "0") {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{other_from})").css("display","") ;
}
}
}
}
} else if (row_index.includes("to_")) {
if (\$("input[name='other_to_value_was_saved_to_"+event_id+"']").val()) {
\$("#other_to_to_cell_"+event_id).css("background-color","rgb(66,73,73)") ; // rgb(66,73,73)
}
if (\$("input[name='other_to_to_"+event_id+"']").is(":hidden")) {
\$("input[name='other_to_to_"+event_id+"']").css("display","") ;
}
if (\$("input[name='other_to_to_value_was_saved_from_"+event_id+"']").val()) {
\$("#other_to_to_cell_"+event_id).css("background-color","rgb(66,73,73)") ; // rgb(66,73,73)
}
if (other_to_dropdown_can_exist || other_to_text_can_exist) {
if (\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_to})").is(":hidden")) {
if (other_to_dropdown_can_exist != "0" || other_to_text_can_exist != "0") {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_to})").css("display","") ;
}
}
}
if (other_to_dropdown_can_exist || other_to_text_can_exist) {
if (\$("#$useropts{table_id} tr:eq(1) td:nth-last-child($last_child{other_to})").is(":hidden")) {
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
if (other_to_dropdown_can_exist != "0" || other_to_text_can_exist != "0") {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{other_to})").css("display","") ;
}
}
}
}
}
} else if (\$("#"+this.id).val() != 'other') {
if (!\$("#$useropts{table_id} tr:eq(1) td:nth-last-child($last_child{other_from})").is(":hidden") && row_index.includes("to_")) {
\$("#other_to_to_cell_"+event_id).css("background-color","") ;
if (!\$("input[name='other_to_to_"+event_id+"']").is(":hidden")) {
\$("input[name='other_to_to_"+event_id+"']").css("display","none") ;
\$("#other_to_to_cell_"+event_id).css("background-color","") ;
}
var selectIDs = ["$from_venue_ids_str_jquery"] ;
let venues_as_other_selected = 0 ;
selectIDs.forEach(function(selectID) {
if (\$(selectID).val() == '5' || \$(selectID).val() == 'other') {
venues_as_other_selected = 1 ;
return ;
}
});
if (!venues_as_other_selected) {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_to})").css("display","none") ;
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{other_to})").css("display","none") ;
}
}
} else if (!\$("#$useropts{table_id} tr:eq(1) td:nth-last-child($last_child{other_from})").is(":hidden") && row_index.includes("from_")) {
\$("#other_from_from_cell_"+event_id).css("background-color","") ;
if (!\$("input[name='other_from_from_"+event_id+"']").is(":hidden")) {
\$("input[name='other_from_from_"+event_id+"']").css("display","none") ;
\$("#other_from_from_cell_"+event_id).css("background-color","") ;
}
var selectIDs = ["$to_venue_ids_str_jquery"] ;
let venues_as_other_selected = 0 ;
selectIDs.forEach(function(selectID) {
console.log("selectID : "+selectID+" : "+\$(selectID).val()) ;
if (\$(selectID).val() == '5' || \$(selectID).val() == 'other') {
venues_as_other_selected = 1 ;
return ;
}
}) ;
console.log("2 HIDE OTHER FROM COL : "+venues_as_other_selected) ;
if (!venues_as_other_selected) {
\$("#$useropts{table_id} tr th:nth-last-child($last_child{other_from})").css("display","none") ;
for (let i = \$('#$useropts{table_id}').DataTable()._('tr').length; i >= 1 ; i--) {
\$("#$useropts{table_id} tr:eq("+i+") td:nth-last-child($last_child{other_from})").css("display","none") ;
}
}
}
}
}
// }) ;
~ ;
&logistics_jquery($from_to) ;
&report_xlsx_export_footer('L',15,$xlsxdir) ;
$fnsortorder = 'desc' ;
&common_min_extra_crumb("$lcpage","Search Screen") ;
$trigger_jquery_raw .= qq~
\$("#savebutt").click(function() {
let item_val ;
$jquery_chosen_sel
\$("#$lcpage-form").submit() ;
}) ;
~ ;
$extra_form_footer = qq~
<form role="form" id="logisticsform" method="post">
<input type="hidden" id="logisticsaction" name="iaction" value="">
<input type="hidden" name="date_from" value="$i{date_from}">
<input type="hidden" name="date_to" value="$i{date_to}">
<input type="hidden" name="client_id" value="$i{client_id}">
<input type="hidden" name="organisation_ids" value="$i{organisation_ids}">
<input type="hidden" name="supplier_id" value="$i{supplier_id}">
<input type="hidden" name="status_id" value="$i{status_id}">
<input type="hidden" name="region_id" value="$i{region_id}">
</form>
~ ;
$trigger_jquery_raw .= qq~
function toggleToFrom (ft) {
\$('#logisticsaction').val(ft);
\$('#logisticsform').submit();
}
~;
&common_min_table_update_checkbox_col(2) ;
&common_min_table_datepicker_jquery ;
&common_min_table_timepicker_jquery ;
my $all_datepicker_names_str = join(",",@all_datepicker_names) ;
my $all_timepicker_names_str = join(",",@all_timepicker_names) ;
$trigger_jquery_raw .= qq~
// \$("$all_datepicker_names_str,$all_timepicker_names_str").css("display","none") ;
// \$("span").removeClass("input-group-addon");
~ ;
$trigger_jquery_raw .= qq~
// setInterval(function() {
\$("$all_datepicker_ids_str,$all_timepicker_ids").on('changeDate', function(e) {
// const date_live = new Date('$now_year-$now_mm-$now_dd\T$now_hour:$now_min:$now_sec');
const date_live = new Date();
let row_nr = get_row_nr(this.id,2) ;
let delivery_date = \$("#datepickerDelivery_date_"+row_nr).data("date") ;
let delivery_time = \$("#timepickerDelivery_time_"+row_nr).data("date") ;
const delivery_datetime_string = delivery_date+"T"+delivery_time ;
const delivery_date_time = new Date(delivery_datetime_string);
if (0 < delivery_date_time - date_live && delivery_date_time - date_live < 86400000) {
\$("#datepickerDelivery_date_"+row_nr+" .glyphicon.glyphicon-calendar").css('color','red');
\$("#timepickerDelivery_time_"+row_nr+" .glyphicon.glyphicon-time").css('color','red');
} else {
\$("#datepickerDelivery_date_"+row_nr+" .glyphicon.glyphicon-calendar").css('color','black');
\$("#timepickerDelivery_time_"+row_nr+" .glyphicon.glyphicon-time").css('color','black');
}
// setInterval(myFunction(this.id), 5000);
}) ;
~ ;
} #------------------------------------------------------------------------------------------
sub val_row {
my ($from_to,$id,$col_disp) = @_ ;
if ($col_disp eq 'count') {
$val = $cali_cnt ;
} elsif ($col_disp eq 'nr') {
$val = qq~<span style="display:none;">$id\_$from_to</span>~ . &common_min_get_event_quote_button($id,$table) ;
$valxlsx = $id ;
} elsif ($col_disp eq 'event') {
$align = qq~ class="dt-left"~ ;
$nowrap = 'nowrap' ;
$val = "$db{$table}{$id}{ref}" ;
if (length($val) > 30) {
# $val = substr($val,0,27) . qq~<i class="glyphicons glyphicons-more" title data-toggle="tooltip" data-placement="top" data-original-title="[$uc_from_to] $db{$table}{$id}{ref}"></i>~ ;
$val = substr($val,0,27) . qq~<i class="glyphicons glyphicons-more" title data-toggle="tooltip" data-placement="top" data-original-title="$db{$table}{$id}{ref}"></i>~ ;
}
$valxlsx = $db{$table}{$id}{ref} ;
} elsif ($col_disp eq 'FT') {
$val = uc $from_to ;
$val = qq~<strong>~ . $val . qq~</strong>~ ;
} elsif ($col_disp eq 'dates') {
&logistics_dates($from_to,$id) ;
} elsif ($col_disp eq 'start') {
my $mon = substr($db{$table}{$id}{date_from},5,2) ; $nowrap = 'nowrap' ;
$val = substr($db{$table}{$id}{date_from},8,2) . ' ' . $month_names[$mon] . substr($db{$table}{$id}{date_from},0,4) . ' @ ' . substr($db{$table}{$id}{date_from},11,5) ;
} elsif ($col_disp eq 'start_date') {
$val = substr($db{$table}{$id}{date_from},0,10) ; $nowrap = 'nowrap' ;
} elsif ($col_disp eq 'stime') {
$valxlsx = substr($db{$table}{$id}{date_from},11,5) ; $val = $valxlsx ;
} elsif ($col_disp eq 'end') {
my $mon = substr($db{$table}{$id}{date_to},5,2) ; $nowrap = 'nowrap' ;
$val = substr($db{$table}{$id}{date_to},8,2) . ' ' . $month_names[$mon] . substr($db{$table}{$id}{date_to},0,4) . ' @ ' . substr($db{$table}{$id}{date_to},11,5) ;
} elsif ($col_disp eq 'end_date') {
$val = substr($db{$table}{$id}{date_to},0,10) ; $nowrap = 'nowrap' ;
} elsif ($col_disp eq 'etime') {
$valxlsx = substr($db{$table}{$id}{date_to},11,5) ;
$val = $valxlsx ;
} elsif ($col_disp eq 'venue') {
&logistics_venue($from_to,$id) ;
# $valxlsx = $val ;
} elsif ($col_disp eq 'city') {
$val = ($db{cities}{$db{$table}{$id}{city_id}}{city_short}) ? $db{cities}{$db{$table}{$id}{city_id}}{city_short} : $db{cities}{$db{$table}{$id}{city_id}}{name} ; $nowrap = 'nowrap' ;
$valxlsx = $val ;
} elsif ($col_disp eq 'region') {
$val = $db{regions}{$db{$table}{$id}{region_id}}{code} ;
} elsif ($col_disp eq 'sport') {
# $val = '' ;
$nowrap = 'nowrap' ;
# foreach my $s_id (split(/\,/,$db{$table}{$id}{sport_type_ids})) {
# $val .= qq~$db{sport_types}{$s_id}{name}<br>~ ;
# }
# $val = substr($val,0,-4) if $val ;
$val = join("<br>", map { "$db{sport_types}{$_}{name}" } split(/\,/,$db{$table}{$id}{sport_type_ids})) ;
$valxlsx = $val ;
} elsif ($col_disp eq 'system') {
$nowrap = 'nowrap' ;
&logistics_system($from_to,$id) ;
} elsif ($col_disp eq 'shipment_operator') {
$opts{$field{$col_disp}} = $opts{shipment_operator} ;
if (!$readlonly_row) {
# $linked_from_and_to_fields{main} .= qq~"selectShipment_operator_$from_to\_$id":"selectShipment_operator_$from_to_opposite{$from_to}\_$id",~ ;
$cell_contains_select = 1 ;
$opts{$field{$col_disp}} = qq~~ unless $AISA_supplier_selected ;
my $val_temp = ($default_val_is_saved && $default_val) ? qq~<input value='$default_val' name='shipment_operator_value_was_saved_$from_to\_$id' style='display:none'>~ : qq~~ ;
$default_val_is_saved = 0 if !$AISA_supplier_selected ;
if ($default_val_is_saved && $default_val && $AISA_supplier_selected) {
my $field_id = $field{$col_disp} ;
$col_disp = "s_o_$default_val" ;
$field{$col_disp} = $field_id ;
$opts{$field{$col_disp}} = qq~<option value='$default_val' SELECTED>$db{users}{$default_val}{name}</option>~ ;
$default_val = '' ;
$preferred_placeholder{$field{$col_disp}} = "Select Shipment Operator $from_to $id" ;
}
$val = ($AISA_supplier_selected) ? $val_temp . &common_min_table_select($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,$background_color,'',$col_disp,'','') : $val_temp ;
# $val = &common_min_table_select($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,'','',$col_name,'','') ;
} else {
$val = ($db{users}{$default_val}{name}) ? qq~$db{users}{$default_val}{name}~ : qq~~ ;
$val .= ($db{users}{$default_val}{username} && $db{users}{$default_val}{name}) ? qq~[$db{users}{$default_val}{username}]~ : ($db{users}{$default_val}{username} && !$db{users}{$default_val}{name}) ? qq~$db{users}{$default_val}{username}~ : qq~~ ;
}
$hide_cell = 1 if !$AISA_supplier_selected_somewhere ;
} elsif ($col_disp eq 'delivery_date') {
$default_val = $fval{delivery_date}{$id}{$from_to} ;
# if (($from_to eq 'to' && $current_date <= $start_date) || ($from_to eq 'from' && $current_date <= $end_date)) {
my $col = "d_$from_to" ;
$tooltip_updated .= "Last Updated : $prev_update_time{date}{$col}" if $prev_update_time{date}{$col} ;
$tooltip_updated .= " , " if $tooltip_updated ;
$tooltip_updated .= "Changed By : $db{users}{$prev_update_time{user}{$col}}{name}" if $prev_update_time{user}{$col} && $prev_update_time{date}{$col} ;
if (!$readlonly_row) {
$fval{delivery_time}{$id}{$from_to} =~ s/\-/\:/g ;
my $difference = &common_time_diff_seconds("$now_year-$now_mm-$now_dd $now_hour:$now_min:$now_sec","$fval{delivery_date}{$id}{$from_to} $fval{delivery_time}{$id}{$from_to}") ;
if ($difference > 0 && $difference < 86400) {
$time_icon_color = 'red' ;
}
# $val = &common_min_table_datepicker($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,$background_color,$default_val_is_saved,$col_nm,'',$time_icon_color,$update_tooltip,$tooltip_updated) ;
$val = &common_min_table_datepicker($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,$background_color,'',$col_nm,'',$time_icon_color,$update_tooltip,$tooltip_updated) ;
} else {
$nowrap = 'nowrap' ;
$tooltip_updated = qq~title data-toggle='tooltip' data-placement='top' data-original-title='$tooltip_updated'~ if $tooltip_updated ;
$val = qq~<span $tooltip_updated>$default_val</span>~ ;
}
} elsif ($col_disp eq 'delivery_time') {
$default_val = $fval{delivery_time}{$id}{$from_to} ;
# if (($from_to eq 'to' && $current_date <= $start_date) || ($from_to eq 'from' && $current_date <= $end_date)) {
my $col = "t_$from_to" ;
$tooltip_updated .= "Last Updated : $prev_update_time{date}{$col}" if $prev_update_time{date}{$col} ;
$tooltip_updated .= " , " if $tooltip_updated ;
$tooltip_updated .= "Changed By : $db{users}{$prev_update_time{user}{$col}}{name}" if $prev_update_time{user}{$col} && $prev_update_time{date}{$col} ;
if (!$readlonly_row) {
my $col = "t_$from_to" ;
# $val = &common_min_table_timepicker($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,$background_color,$default_val_is_saved,$col_nm,'',$time_icon_color,$tooltip_updated) ;
$val = &common_min_table_timepicker($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,$background_color,'',$col_nm,'',$time_icon_color,$tooltip_updated) ;
} else {
$nowrap = 'nowrap' ;
$tooltip_updated = qq~title data-toggle='tooltip' data-placement='top' data-original-title='$tooltip_updated'~ if $tooltip_updated ;
$val = qq~<span $tooltip_updated>$default_val</span>~ ;
}
} elsif ($col_disp eq 'received_by' || (substr($col_disp,0,5) eq 'other' && $col_disp ne 'other_special_instructions')) {
# $hide_cell = 1 if substr($col_disp,0,5) eq 'other' && $db{$table}{$eid}{logistics_system_location_id} ne '5' && !$other_system_location_selected_somewhere ;
my $val_temp = qq~~ ;
if (substr($col_disp,0,5) eq 'other') {
# $hide_cell = ($other_system_location_selected_somewhere && ($glod_user_level > 3 || $db{users}{$userid}{user_type} eq "it" || $userid eq "24" || $userid eq "1" || $userid eq "338")) ? 0 : 1 ;
# $default_val = $fval{system_location}{$id}{$from_to} ;
$val_temp = ($default_val_is_saved && $default_val) ? qq~<input value='$default_val' name='$col_disp\_value_was_saved_$from_to\_$id' style='display:none'>~ : qq~~ ;
$default_val_is_saved = 0 if (!$other_from_system_location_is_saved && $from_to eq 'to' && $col_disp eq 'other_from') || (!$other_to_system_location_is_saved && $from_to eq 'from' && $col_disp eq 'other_to') || (!$other_from_venue_location_is_saved && $from_to eq 'from' && $col_disp eq 'other_from') || (!$other_to_venue_location_is_saved && $from_to eq 'to' && $col_disp eq 'other_to') ;
$hide_cell = (((($other_from_system_location_selected_somewhere || $other_from_venue_selected_somewhere) && $col_disp eq 'other_from') || (($other_to_system_location_selected_somewhere || $other_to_venue_selected_somewhere) && $col_disp eq 'other_to')) && $glod_user_level >= 3) ? 0 : 1 ;
}
# $db{$table}{$id}{logistics_system_location_id}
my $acx = (substr($col_disp,0,5) eq 'other') ? "$col_disp\_$from_to\_location\_$id" : "$col_disp\_$id" ;
$preferred_placeholder{$field{$col_disp}} = join " ", map { ucfirst $_ } split "_" , $acx ;
# if (($from_to eq 'to' && $current_date <= $start_date) || ($from_to eq 'from' && $current_date <= $end_date)) {
if (!$readlonly_row) {
$only_display_val = 0 ; $found_editable = 1 ;
} else {
$only_display_val = 1 ;
}
if ($col_disp eq 'received_by') {
push @from_to_field_ids,"#inputReceived_by_$from_to\_$id" ;
$linked_from_and_to_fields{main} .= qq~"inputReceived_by_$from_to\_$id":"inputReceived_by_$from_to_opposite{$from_to}\_$id",~ ;
} else {
push @from_to_field_ids,"#inputOther_$from_to_opposite{$from_to}\_$from_to\_$id" ;
$linked_from_and_to_fields{main} .= qq~"inputOther_$from_to_opposite{$from_to}\_$from_to\_$id":"inputOther_$from_to\_$from_to_opposite{$from_to}\_$id",~ ;
}
$preferred_placeholder{$field{$col_disp}} =~ s/To /System /g if $col_disp =~ /other/ && $from_to eq 'to' ;
$preferred_placeholder{$field{$col_disp}} =~ s/From /System /g if $col_disp =~ /other/ && $from_to eq 'from' ;
$val = # (($col_disp eq 'other_from' && $from_to eq 'from') || ($col_disp eq 'other_to' && $from_to eq 'to')) ? "" :
(
(
($db{$table}{$id}{logistics_system_location_id} =~ /-5$/ && $col_disp eq 'other_to' && $from_to eq 'from') ||
($db{$table}{$id}{logistics_system_location_id} =~ /^5-/ && $col_disp eq 'other_from' && $from_to eq 'to') ||
($db{$table}{$id}{logistics_venue_id} =~ /-other$/ && $col_disp eq 'other_to' && $from_to eq 'to') ||
($db{$table}{$id}{logistics_venue_id} =~ /^other-/ && $col_disp eq 'other_from' && $from_to eq 'from')
) ||
$col_disp !~ /other/
) ? $val_temp . &common_min_table_input($field{$col_disp},$default_val,$only_display_val,$cali_cnt,$column_nr_cnt,$background_color,$default_val_is_saved) :
$val_temp . &common_min_table_input($field{$col_disp},$default_val,$only_display_val,$cali_cnt,$column_nr_cnt,$background_color,$default_val_is_saved,'','',1) ;
$other_from_text_can_exist = ($col_disp eq 'other_from' && $from_to eq 'to' && $default_val) ? 1 : 0 ;
$other_to_text_can_exist = ($col_disp eq 'other_to' && $from_to eq 'from' && $default_val) ? 1 : 0 ;
# if (substr($col_disp,0,5) eq 'other' && ($glod_user_level > 3 || $db{users}{$userid}{user_type} eq "it" || $userid eq "24" || $userid eq "1" || $userid eq "338")) {
# # Do Nothing
# } elsif (substr($col_disp,0,5) eq 'other') {
# $valxlsx = "" ;
# }
} elsif ($col_disp eq 'operator') {
$val = ($op_ids[$system_count - 1]) ? $db{users}{$op_ids[$system_count - 1]}{name} : '' ;
$formatting = $format92 if $cali_cnt == 2 ;
# } elsif ($col_disp eq 'waybill_nr_from' || $col_disp eq 'waybill_nr_to') {
} elsif ($col_disp eq 'waybill_nr') {
my $fname = 'waybill_nr' ; $val = '' ; $valxlsx = 'MUSTBEBLANK' ;
my $wb_code = 'AIS' . uc substr($from_to,0,1) . '_' ;
if (!$readlonly_row) {
$found_editable = 1 ;
my $wb_nr = ($default_val) ? $default_val : $wb_code . $id ;
$waybill_nr_default_val = ($wb_nr) ? 1 : 0 ;
# $val = &common_min_table_input($field{$col_disp},$wb_nr,'',$cali_cnt,$column_nr_cnt,'',$default_val_is_saved,$col_disp) ;
$val = &common_min_table_input($field{$col_disp},$wb_nr,'',$cali_cnt,$column_nr_cnt,'','',$col_disp) ;
$valxlsx = $wb_nr ;
} else {
$val = ($logistics_waybill_ids_hash{$id}{$from_to}) ? $logistics_waybill_ids_hash{$id}{$from_to} : (!$readlonly_row) ? $id : "" ;
$valxlsx = $val ;
}
# &logistics_waybill_nr($from_to,$id) ;
# } elsif ($col_disp eq 'special_instructions_to' || $col_disp eq 'special_instructions_from') {
} elsif ($col_disp eq 'special_instructions') {
if (!$readlonly_row) {
$found_editable = 1 ;
$default_val_is_saved = 1 if $default_val ;
# $val = &common_min_table_textarea($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,'',$default_val_is_saved) ;
$val = &common_min_table_textarea($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,'','') ;
} elsif ($default_val) {
$val = $default_val ;
$valxlsx = $val ;
}
} elsif ($col_disp eq 'other_special_instructions') {
if ($from_to eq 'to') {
$val = "" ;
return ;
}
# if ($current_date <= $end_date) {
if (!$readlonly_row) {
$found_editable = 1 ;
$default_val_is_saved = 1 if $default_val ;
# $val = &common_min_table_textarea($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,'',$default_val_is_saved) ;
$val = &common_min_table_textarea($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,'','') ;
} elsif ($defualt) {
$val = $defualt ;
$valxlsx = $val ;
}
# } elsif ($col_disp eq 'create_waybill_out' || $col_disp eq 'create_waybill_in' || $col_disp eq 'process_complete') {
# } elsif ($col_disp eq 'create_waybill' || $col_disp eq 'process_complete') {
} elsif ($col_disp eq 'dcb_comments') {
if (!$readlonly_row) {
$found_editable = 1 ;
$default_val_is_saved = 1 if $default_val ;
my $hide_textarea = ($supplier_default_val ne '2') ? 1 : 0 ;
my $val_temp = qq~<input value='$default_val_is_saved' name='dcb_comments_value_was_saved_$from_to\_$id' style='display:none'>~ ;
$default_val_is_saved = 0 if $hide_textarea ;
# $val = $val_temp . &common_min_table_textarea($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,'',$default_val_is_saved,'','',$hide_textarea) ;
$val = $val_temp . &common_min_table_textarea($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,'','','','',$hide_textarea) ;
} elsif ($default_val) {
$val = $default_val ;
}
$valxlsx = $default_val ;
$hide_cell = 1 if !$dcb_supplier_is_selected_somewhere ;
} elsif ($col_disp eq 'create_waybill') {
&logistics_create_waybill($from_to,$id) ;
push @from_to_checkbox_field_ids,"#create_waybill_$from_to\_$id" ;
$linked_from_and_to_fields{checkboxes} .= qq~"create_waybill_$from_to\_$id":"create_waybill_$from_to_opposite{$from_to}\_$id",~ ;
} elsif ($col_disp eq 'update') {
chop $default_javascript if $default_javascript ;
unless ($dcb_waybill_nr{$from_to}) {
$default_javascript .= qq~,~ if $default_javascript ;
$default_javascript .= qq~"create_waybill_$from_to\_$id":""~ ;
}
# if (!$dcb_waybill_nr{$from_to} && $logistics_waybill_ids_hash{$id}{$from_to} && $items && $supp{$from_to} == 2) {
# $default_javascript .= qq~,~ if $default_javascript ;
# $default_javascript .= qq~"create_waybill_$from_to\_$id":""~ ;
# }
if ($default_javascript) {
push @default_javascript_by_id, qq~"$from_to\_$id":{$default_javascript}~ ;
push @all_update_field_ids,"#$ucfirstfield{1},#$ucfirstfield{2},#$ucfirstfield{supplier},#$ucfirstfield{status},#$ucfirstfield{waybill_nr},#$ucfirstfield{item},#$ucfirstfield{poc},#$ucfirstfield{special_instructions},#$ucfirstfield{delivery_date},#$ucfirstfield{delivery_time},#$ucfirstfield{received_by}" ;
push @all_update_field_ids,"#$ucfirstfield{other_from}" if $ucfirstfield{other_from} ;
push @all_update_field_ids,"#$ucfirstfield{other_to}" if $ucfirstfield{other_to} ; #$ucfirstfield{other_special_instructions}
push @all_update_field_ids,"#$ucfirstfield{other_special_instructions}" if $ucfirstfield{other_special_instructions} ne 'input' ;
push @all_update_field_ids,"#create_waybill_$from_to\_$id" ;
push @all_update_field_ids,"#$ucfirstfield{dcb_comments}" ;
push @all_update_field_ids,"#$ucfirstfield{shipment_operator}" ;
}
# if (($from_to eq 'to' && $current_date <= $end_date) || ($from_to eq 'from' && $current_date <= $start_date)) {
if (($from_to eq 'to' && $current_date <= $start_date) || ($from_to eq 'from' && $current_date <= $end_date)) {
$quote_and_ops_ids .= qq~"$id":"1",~ ;
$val = &common_min_table_checkbox($field{update}) ;
$logistics_supplier_ids_hash{$id}{$from_to} = "" unless $logistics_supplier_ids_hash{$id}{$from_to} ;
$val = qq~<i class="glyphicon glyphicon-ok"></i>~ if $dcb_waybill_nr{$from_to} && $logistics_waybill_ids_hash{$id}{$from_to} && $items && $supp{$from_to} == 2 ;
} else {
$val = qq~<i class="glyphicon glyphicon-remove"></i>~ ;
}
$valxlsx = '' ;
$formatting = $format1 ;
}
if (!$valxlsx && $col_disp ne 'dcb_comments' && $col_disp ne 'delivery_date' && $col_disp ne 'delivery_time' && $col_disp ne 'received_by' && $col_disp ne 'item' && substr($col_disp,0,5) ne 'other') {
$valxlsx = $val ;
}
$valxlsx =~ s/\MUSTBEBLANK//g ;
if ($col_disp eq 'dates') {
$valxlsx =~ s/\<br>//g ;
} elsif ($col_disp eq 'sport') {
$valxlsx =~ s/\<br>/\;/g ;
}
} #------------------------------------------------------------------------------------------
# sub last_updated_tooltip {
# my ($col) = @_ ;
# return "title data-toggle='tooltip' data-placement='top' data-original-title='Last Updated : $prev_update_time{$col}'" ;
# } #------------------------------------------------------------------------------------------
sub fields_row {
my ($from_to,$id) = @_ ;
our %field = () ;
$field{1} = "venue_location_$from_to\_$id" ;
$field{2} = "system_location_$from_to\_$id" ;
$field{supplier} = "logistics_supplier_id_$from_to\_$id" ;
$field{status} = "status_$from_to\_$id" ;
$field{waybill_nr} = "waybill_nr_$from_to\_$id" ;
$field{item} = "item_$from_to\_$id" ;
$field{poc} = "poc_$from_to\_$id" ;
$field{other_special_instructions} = ($from_to eq 'from') ? "other_special_instructions_$from_to\_$id" : "" ;
$field{special_instructions} = "special_instructions_$from_to\_$id" ;
$field{update} = "update_$from_to\_$id" ;
$field{delivery_date} = "delivery_date_$from_to\_$id" ;
$field{delivery_time} = "delivery_time_$from_to\_$id" ;
$field{received_by} = "received_by_$from_to\_$id" ;
$field{other_from} = "other_from_$from_to\_$id" ;
$field{other_to} = "other_to_$from_to\_$id" ;
$field{dcb_comments} = "dcb_comments_$from_to\_$id" ;
$field{shipment_operator} = "shipment_operator_$from_to\_$id" ;
our %ucfirstfield = () ;
foreach (keys %field) {
$ucfirstfield{$_} = ucfirst $field{$_} ;
if ($_ eq 'update') {
$ucfirstfield{$_} = qq~checkbox~ . $ucfirstfield{$_} ;
} elsif ($_ eq 'waybill_nr'|| $_ eq 'received_by' || (substr($_,0,5) eq 'other' && $_ ne 'other_special_instructions')) {
$ucfirstfield{$_} = qq~input~ . $ucfirstfield{$_} ;
} elsif ($_ eq 'special_instructions' || $_ eq 'other_special_instructions' || $_ eq 'dcb_comments') {
$ucfirstfield{$_} = ($ucfirstfield{$_}) ? qq~textarea~ . $ucfirstfield{$_} : qq~1~ ;
} elsif ($_ eq 'delivery_date') {
$ucfirstfield{$_} = qq~datepicker~ . $ucfirstfield{$_} ;
} elsif ($_ eq 'delivery_time') {
$ucfirstfield{$_} = qq~timepicker~ . $ucfirstfield{$_} ;
} else {
$ucfirstfield{$_} = qq~select~ . $ucfirstfield{$_} ;
}
}
$event_venue_ids .= qq~#$ucfirstfield{1},~ ;
$system_location_ids .= qq~#$ucfirstfield{2},~ ;
$all_location_ids_per_system{$event_sys_id} .= qq~#$ucfirstfield{2},~ ;
$seen_field_id{$ucfirstfield{2}} = 1 ;
} #------------------------------------------------------------------------------------------
sub color_row {
my ($from_to,$id,$col_disp) = @_ ;
my $tooltip_updated = qq~~ ;
if ($col_disp =~ /status/ && $from_to eq 'to') {
$tooltip_updated .= "Last Updated : $prev_update_time{date}{s_to}" if $prev_update_time{date}{s_to} ;
$tooltip_updated .= " , " if $tooltip_updated ;
$tooltip_updated .= "Changed By : $db{users}{$prev_update_time{user}{s_to}}{name}" if $prev_update_time{user}{s_to} && $prev_update_time{date}{s_to} ;
}
if ($col_disp =~ /supplier/ || $col_disp =~ /status/ || $col_disp eq 'item' || $col_disp eq 'poc') {
my $col_name = $col_disp ;
# if (($from_to eq 'to' && $current_date <= $start_date) || ($from_to eq 'from' && $current_date <= $end_date)) {
$opts{$col_disp} = $opts2{status} if $col_disp =~ /status/ ;
if (!$readlonly_row) {
$found_editable = 1 ;
$preferred_title{$field{$col_disp}} = $preferred_title{$col_disp} ;
if ($default_val) {
$valxlsx = $db{$fval_table{$col_disp}}{$default_val}{name} ;
if ($col_disp =~ /status/) {
# $default_val_is_saved = 1 if $default_val ;
if ($default_val eq '1') { #Booked
$background_color = "rgb(81,203,242)" ;
} elsif ($default_val eq '2') { #Pending
$background_color = "rgb(66,73,73)" ;
} elsif ($default_val eq '3') { #In Transit
$background_color = "rgb(255,165,0)" ;
} elsif ($default_val eq '4') { #Delivered
$background_color = "rgb(46,204,113)" ;
} else {
$default_val = 2 ;
}
# if ($default_val_is_saved) {
# $col_name = "status_$default_val" ;
# $opts{$col_name} = qq~<option value='$default_val' SELECTED >$db{status_hash}{$default_val}{name}</option>~ ;
# $default_val = '' ;
# }
# &common_debug(">>>> color_row : $background_color") ;
}
}
if ($col_disp eq 'item') {
$multiple{$field{item}} = 1 ;
$opts{$field{item}} = $opts{item} ;
$col_name = "item$system_count" ;
if (!$default_val) {
$default_val = $logistics_items_qty{$system_count} ;
}
if ($default_val && $default_val_is_saved) {
$col_name = "item_$default_val" ;
$col_name =~ s/\,/\_/g ;
$opts{$field{item}} = join ('', map { "<option value='$_' SELECTED >$db{logistics_items}{$_}{name}</option>" } split /\,/, $default_val);
$default_val = '' ;
}
$item_default_val = $default_val ;
$valxlsx = join (';', map { $db{logistics_items}{$_}{name} } split /\,/, $default_val);
$extra_form_fields .= qq~<input type="hidden" name="item_multi_$from_to\_$id" id="item-$from_to-$id" value="">~;
$jquery_chosen_sel .= qq~
item_val = \$("#selectItem_$from_to\_$id").chosen().val() ;
\$("#item-$from_to\-$id").val(item_val) ;
~ ;
# $col_name = $col_disp ;
push @from_to_multi_field_ids,"#selectItem_$from_to\_$id" ;
$linked_from_and_to_fields{multi_selects} .= qq~"selectItem_$from_to\_$id":"selectItem_$from_to_opposite{$from_to}\_$id",~ ;
} elsif ($col_disp eq 'poc') {
# $col_name = $default_val ;
$col_name = '' ;
$opts{$field{poc}} = $opts{poc}{$id} ;
push @from_to_field_ids,"#selectPoc_$from_to\_$id" ;
$linked_from_and_to_fields{main} .= qq~"selectPoc_$from_to\_$id":"selectPoc_$from_to_opposite{$from_to}\_$id",~ ;
$valxlsx = $default_val ;
# $opts{$field{poc}} =~ s/value="$default_val"/value="$default_val" SELECTED/g ;
$default_val = '' ;
# $default_val =~ s/ /\_/g ;
}
# elsif ($col_disp eq 'status') {
# $col_name = '' ;
# $opts{$field{$col_disp}} = $opts{$col_disp} ;
# # &common_debug(">>>> color_row : $from_to,$id,$col_disp [$field{$col_disp}] [$col_name] [$opts{$field{$col_disp}}]") ;
# }
if ($col_disp =~ /supplier/) {
push @supplier_ids_arr,$ucfirstfield{$col_disp} ;
$supplier_default_val = ($default_val_is_saved) ? $default_val : 2 ;
$AISA_supplier_selected = 1 if $AISA_supplier{$supplier_default_val} ;
$dcb_supplier_is_selected = 1 if $supplier_default_val eq '2' ;
# if ($default_val && $default_val_is_saved) {
# $col_name = "supplier_$default_val" ;
# $opts{$field{$col_disp}} = "<option value='$default_val' SELECTED >$db{logistics_suppliers}{$default_val}{supplier}</option>" ;
# $default_val = '' ;
# }
}
$cell_contains_select = 1 ;
# $val = &common_min_table_select($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,$background_color,$default_val_is_saved,$col_name,'','') ;
$val = &common_min_table_select($field{$col_disp},$default_val,'',$cali_cnt,$column_nr_cnt,$background_color,'',$col_name,'','') ;
if ($tooltip_updated) {
$tooltip_updated = qq~title data-toggle='tooltip' data-placement='left' data-original-title='$tooltip_updated'~ ;
$val = qq~<div style="height:20px;" $tooltip_updated>$val</div>~ ;
}
} elsif ($default_val) {
$val = $db{$fval_table{$col_disp}}{$default_val}{name} ;
$valxlsx = $val ;
if ($col_disp =~ /status/) {
if ($default_val eq '1') { #Booked
$background_color = "rgb(81,203,242)" ;
} elsif ($default_val eq '2') { #Pending
$background_color = "rgb(66,73,73)" ;
} elsif ($default_val eq '3') { #In Transit
$background_color = "rgb(255,165,0)" ;
} elsif ($default_val eq '4') { #Delivered
$background_color = "rgb(46,204,113)" ;
}
if ($tooltip_updated) {
$tooltip_updated = qq~title data-toggle='tooltip' data-placement='top' data-original-title='$tooltip_updated'~ ;
$val = qq~<span $tooltip_updated>$val</span>~ ;
}
} elsif ($col_disp eq 'item') {
$valxlsx = join (',', map { $db{logistics_items}{$_}{name} } split /\,/, $default_val) ;
$val = $valxlsx if $default_val_is_saved ;
$valxlsx =~ s/\,/\;/g ;
} elsif ($col_disp eq 'poc') {
$val = $default_val ;
}
}
}
} #------------------------------------------------------------------------------------------
sub from_to_row {
my ($from_to,$id,$col_disp) = @_ ;
if ($col_disp eq 'from' || $col_disp eq 'to') {
$default_val = '' ; my $field_id = "" ;
my $col_nm = $col_disp ;
if (!$readlonly_row) {
my $changed_val = qq~~ ;
if (($col_disp eq 'to' && $from_to eq 'to') || ($col_disp eq 'from' && $from_to eq 'from')) { # && $iaction eq 'report') || ($col_disp eq 'from' && $col_disp eq 'report_from')
$linked_from_and_to_fields{main} .= qq~"$ucfirstfield{1}":"selectVenue_location_$from_to_opposite{$from_to}\_$id",~ ;
push @from_to_field_ids,"#$ucfirstfield{1}" ;
# $fval{system_location}{$id}{$from_to}
# $fval{venue_location}{$id}{$from_to}
# $default_val = $db{$table}{$id}{logistics_venue_id} ;
$default_val = $fval{venue_location}{$id}{$from_to} ;
$default_val_is_saved = ($default_val) ? 1 : 0 ;
$field_id = $field{1} ;
$default_val = $venue_ids[0] unless $default_val ;
$valxlsx = "$db{organisations}{$default_val}{name} [$db{organisations}{$default_val}{region_code}]" if $db{organisations}{$default_val}{region_code} ;
$opts{$field_id} = $opts{venue_location}{$db{$table}{$id}{region_id}} ;
$col_nm = "$col_disp\_$db{$table}{$id}{region_id}" ;
if ($default_val_is_saved && $default_val && $default_val ne 'other') {
$opts{$field_id} = qq~<option value='$default_val' SELECTED>$db{organisations}{$default_val}{name}</option>~ ;
$col_nm = "" ;
$default_val = '' ;
} elsif ($default_val_is_saved && $default_val && $default_val eq 'other') {
$opts{$field_id} = qq~<option value='other' SELECTED>OTHER</option>~ ;
$col_nm = "" ;
$default_val = '' ;
}
$changed_val = qq~<input name='changed_venue_location_$id' value='$default_val_is_saved'>~ unless $seen_event{venue_location}{$id} ;
$seen_event{venue_location}{$id} = 1 ;
push @from_venue_ids,"#select" . ucfirst $field_id if $field_id && $field_id =~ /_to_/ ;
push @to_venue_ids,"#select" . ucfirst $field_id if $field_id && $field_id =~ /_from_/ ;
$other_from_venue_location_is_saved = 1 if $db{$table}{$id}{logistics_venue_id} =~ /^other-/ ;
$other_to_venue_location_is_saved = 1 if $db{$table}{$id}{logistics_venue_id} =~ /-other$/ ;
} else {
$other_from_dropdown_can_exist = 1 if $col_disp eq 'from' && $from_to eq 'to' ;
$other_to_dropdown_can_exist = 1 if $col_disp eq 'to' && $from_to eq 'from' ;
$linked_from_and_to_fields{main} .= qq~"$ucfirstfield{2}":"selectSystem_location_$from_to_opposite{$from_to}\_$id",~ ;
push @from_to_field_ids,"#$ucfirstfield{2}" ;
$field_id = $field{2} ;
my $found_loc = 0 ;
# $hide_cell = 1 if $db{$table}{$id}{logistics_system_location_id} ne '5' ;
$other_from_system_location_is_saved = 1 if $db{$table}{$id}{logistics_system_location_id} =~ /^5-/ ;
$other_to_system_location_is_saved = 1 if $db{$table}{$id}{logistics_system_location_id} =~ /-5$/ ;
# if ($db{$table}{$id}{logistics_system_location_id}) {
if (($db{$table}{$id}{logistics_system_location_id} =~ /^\d+-/ && $from_to eq 'to') || ($db{$table}{$id}{logistics_system_location_id} =~ /-\d+$/ && $from_to eq 'from')) {
# $default_val = $db{$table}{$id}{logistics_system_location_id} ;
$default_val = $fval{system_location}{$id}{$from_to} ;
$default_val_is_saved = 1 ;
$found_loc = 1 ;
}
if (!$found_loc) {
foreach my $event_sys_id (sort @system_name_ids) {
next unless $event_sys_id ;
next unless $db{event_systems}{$event_sys_id}{system_type} ;
if ($db{event_systems}{$event_sys_id}{logistics_location_id}) {
$valxlsx = $db{logistics_locations}{$db{event_systems}{$event_sys_id}{logistics_location_id}}{location} ;
$default_val = $db{event_systems}{$event_sys_id}{logistics_location_id} ;
$default_val_is_saved = 0 ;
$found_loc = 1 ;
}
last ;
}
}
$default_val_is_saved = 0 if !$found_loc ;
$default_val = &check_city_match($found_loc,$db{cities}{$db{$table}{$id}{city_id}}{name}) unless $default_val ;
$opts{$field_id} = $opts{system_location} ;
push @from_venue_ids,"#select" . ucfirst $field_id if $field_id && $field_id =~ /_from_/ ;
push @to_venue_ids,"#select" . ucfirst $field_id if $field_id && $field_id =~ /_to_/ ;
# $seen_other = 1 if $default_val == 5 ;
# if ($default_val_is_saved && $default_val) {
# $opts{$field_id} = qq~<option value='$default_val' SELECTED>$db{logistics_locations}{$default_val}{location}</option>~ ;
# $col_nm = "loc_$default_val" ;
# $default_val = '' ;
# }
# $default_val_is_saved
$changed_val = qq~<input name='changed_system_location_$id' value='$default_val_is_saved'>~ unless $seen_event{system_location}{$id} ;
$seen_event{system_location}{$id} = 1 ;
}
$cell_contains_select = 1 ;
# $val = &common_min_table_select($field_id,$default_val,'',$cali_cnt,$column_nr_cnt,$background_color,$default_val_is_saved,$col_nm) ;
$val = $changed_val . &common_min_table_select($field_id,$default_val,'',$cali_cnt,$column_nr_cnt,$background_color,'',$col_nm) ;
# &common_debug("2. system_location >>>>>> from_to_row : $field_id : [$db{$table}{$id}{logistics_system_location_id}] [$opts{$field_id}]");
} else {
if (($col_disp eq 'to' && $from_to eq 'to') || ($col_disp eq 'from' && $from_to eq 'from')) {
# $default_val = $db{$table}{$id}{logistics_venue_id} ;
$default_val = $fval{venue_location}{$id}{$from_to} ;
$default_val_is_saved = ($default_val) ? 1 : 0 ;
$default_val = $venue_ids[0] unless $default_val ;
if ($default_val) {
$val = qq~$db{organisations}{$default_val}{name}~ ;
$val .= qq~ [$db{organisations}{$default_val}{region_code}]~ if $db{organisations}{$default_val}{region_code} ;
}
} else {
my $found_loc = 0 ;
# $hide_cell = 1 if $db{$table}{$id}{logistics_system_location_id} ne '5' ;
if ($db{$table}{$id}{logistics_system_location_id}) {
# $val = $db{logistics_locations}{$db{$table}{$id}{logistics_system_location_id}}{location} ;
$val = ($from_to eq 'from') ? $db{logistics_locations}{$fval{system_location}{$id}{to}}{location} : $db{logistics_locations}{$fval{system_location}{$id}{from}}{location} ;
$found_loc = 1 ;
}
$default_val_is_saved = ($db{$table}{$id}{logistics_system_location_id} && (($from_to eq 'from' && $fval{system_location}{$id}{to}) || ($from_to eq 'to' && $fval{system_location}{$id}{from}))) ? 1 : 0 ;
if (!$found_loc) {
foreach my $event_sys_id (sort @system_name_ids) {
next unless $event_sys_id ;
next unless $db{event_systems}{$event_sys_id}{system_type} ;
if ($db{event_systems}{$event_sys_id}{logistics_location_id}) {
$val = $db{logistics_locations}{$db{event_systems}{$event_sys_id}{logistics_location_id}}{location} ;
$found_loc = 1 ;
last ;
}
}
}
$match = (!$db{$table}{$id}{logistics_system_location_id}) ? &check_city_match($found_loc,$db{cities}{$db{$table}{$id}{city_id}}{name}) : qq~~ ;
# $match = &check_city_match($found_loc,$db{cities}{$db{$table}{$id}{city_id}}{name}) ;
$val = $db{logistics_locations}{$match}{location} if $match ;
}
$valxlsx = $val ;
}
}
} #------------------------------------------------------------------------------------------
sub check_city_match {
my ($found_loc,$city) = @_ ;
my $match = 0 ;
if (!$found_loc && $city =~ /Johannesburg/) {
$match = 1 ;
} elsif (!$found_loc && $city =~ /Cape Town/) {
$match = 2 ;
} elsif (!$found_loc && $city =~ /Durban/) {
$match = 3 ;
} elsif (!$found_loc && $city =~ /Bloemfontein/) {
$match = 4 ;
}
&common_debug("check_city_match found_loc=$found_loc, city=$city >>>>>> match = $match [$db{logistics_locations}{$match}{location}]");
return ($match) ;
} #------------------------------------------------------------------------------------------
sub page_opts {
our $glyphicon = 'list' ;
our $lcpage = 'logistics-report' ;
&common_page_name ;
# our $table = 'event_quotes' ;
our $table = 'event_quotes' ;
$page_title = 'Logistics Report' ;
} #-------------------------------------------------------------------------------
sub thead {
&common_min_thead ;
} #-------------------------------------------------------------------------------
sub screen3 {
our %custom_column_styles = () ;
$custom_column_styles{system} = qq~style="width:7%;min-width:120px;"~ ;
$custom_column_styles{from} = qq~style="width:7%;min-width:120px;"~ ;
$custom_column_styles{to} = qq~style="width:7%;min-width:120px;"~ ;
$custom_column_styles{supplier} = qq~style="width:7%;min-width:120px;"~ ;
$custom_column_styles{poc} = qq~style="width:7%;min-width:120px;"~ ;
$custom_column_styles{item} = qq~style="min-width:325px;max-width:325px;"~ ;
$custom_column_styles{delivery_time} = qq~style="min-width:105px;max-width:105px;"~ ;
$custom_column_styles{delivery_date} = qq~style="width:4.5%;min-width:120px;"~ ;
$custom_column_styles{special_instructions} = qq~style="width:7%;min-width:120px;"~ ;
$custom_column_styles{other_special_instructions} = qq~style="width:7%;min-width:120px;"~ ;
$custom_column_styles{waybill_nr} = qq~style="width:7%;min-width:120px;"~ ;
$custom_column_styles{status} = qq~style="width:7%;min-width:120px;"~ ;
$custom_column_styles{received_by} = qq~style="width:7%;min-width:120px;"~ ;
# if ($seen_other && ($glod_user_level > 3 || $db{users}{$userid}{user_type} eq "it" || $userid eq "24" || $userid eq "1" || $userid eq "338")) {
if (($other_from_system_location_selected_somewhere || $other_from_venue_selected_somewhere) && $glod_user_level >= 3) {
$custom_column_styles{other_from} = qq~style="width:7%;min-width:120px;"~ ;
} else {
$custom_column_styles{other_from} = qq~style="width:7%;min-width:120px;display:none;"~ ;
}
if (($other_to_system_location_selected_somewhere || $other_to_venue_selected_somewhere) && $glod_user_level >= 3) {
$custom_column_styles{other_to} = qq~style="width:7%;min-width:120px;"~ ;
} else {
$custom_column_styles{other_to} = qq~style="width:7%;min-width:120px;display:none;"~ ;
}
if (!$dcb_supplier_is_selected_somewhere) {
$custom_column_styles{dcb_comments} = qq~style="width:7%;min-width:120px;display:none;"~ ;
} else {
$custom_column_styles{dcb_comments} = qq~style="width:7%;min-width:120px;"~ ;
}
if ($AISA_supplier_selected_somewhere) {
$custom_column_styles{shipment_operator} = qq~style="width:7%;min-width:120px;"~ ;
} else {
$custom_column_styles{shipment_operator} = qq~style="width:7%;min-width:120px;display:none;"~ ;
}
&thead ;
if ($isaved) { $alert = &common_min_alert('success',"$ucpage $isaved!",'ok') ; } else { &common_min_alert_type ; }
my $page = "event-quotes" ;
if ($s{no}) { $page = $lcpage ; }
our $list = 0 ;
&common_min_table('id',$page,'list') ;
# &common_min_table_select_jquery("#$useropts{table_id} td:nth-last-child($last_child{status}),#$useropts{table_id} td:nth-last-child($last_child{poc}),#$useropts{table_id} td:nth-last-child($last_child{supplier}),#$useropts{table_id} td:nth-last-child($last_child{from}),#$useropts{table_id} td:nth-last-child($last_child{to}),#$useropts{table_id} td:nth-last-child($last_child{system})") ;
my $datatable_field_id = "#$useropts{table_id} td:nth-last-child($last_child{status}),#$useropts{table_id} td:nth-last-child($last_child{poc}),#$useropts{table_id} td:nth-last-child($last_child{shipment_operator}),#$useropts{table_id} td:nth-last-child($last_child{supplier}),#$useropts{table_id} td:nth-last-child($last_child{from}),#$useropts{table_id} td:nth-last-child($last_child{to}),#$useropts{table_id} td:nth-last-child($last_child{system})" ;
# &common_min_table_select_jquery($datatable_field_id) ;
&common_min_table_select_fixed_width_jquery($datatable_field_id) ;
&common_min_table_select_prevent_dropdown_overlap_jquery_1 ;
&common_min_table_select_default_values_jquery ;
&common_min_table_multi_select_jquery ;
# &table_select_fixed_width_jquery($datatable_field_id) ;
# &common_min_table_select_default_values_jquery ;
# &common_min_table_multi_select_jquery ;
my $all_multi_select_ids_str = join(",",@all_multi_select_ids) ;
$all_multi_select_ids_str =~ s/\,/_chosen span,/g ;
$all_multi_select_ids_str .= qq~_chosen span~ ;
$trigger_jquery_raw .= qq~
\$("$all_multi_select_ids_str").css('font-size','10px') ;
~ ;
our $savjqy = 1 ;
# &common_min_extra_crumb("manage-$lcpage\s","Manage $ucfirstpage\s") ;
$extra_form_fields .= qq~
<input type="hidden" name="oaction" value="$iaction">
<input type="hidden" name="date_from" value="$i{date_from}">
<input type="hidden" name="date_to" value="$i{date_to}">
<input type="hidden" name="client_id" value="$i{client_id}">
<input type="hidden" name="organisation_ids" value="$i{organisation_ids}">
<input type="hidden" name="supplier_id" value="$i{supplier_id}">
<input type="hidden" name="status_id" value="$i{status_id}">
<input type="hidden" name="region_id" value="$i{region_id}">
~ ;
$print_box_content_rows .= &common_min_forms_end('','','save') if $is_dcb_partner || ($usertype ne 'schools_manager' && $glod_user_level >= 3) ;
$useropts{'common'}{'css'} .= qq~
tbody tr td {
font-size: 10px;
}
.tooltip-inner {
max-width: 500px;
white-space: normal;
}
.tooltip {
position: fixed; /* Ensures the tooltip is positioned relative to the viewport */
}
#itv-table thead th {
position: sticky;
top: 0;
background: white; /* Ensures the header is visible */
z-index: 1020; /* Keeps it above other elements */
}
.dropdown-menu {
z-index: 1100 !important; /* Higher than the table header */
}
~ ;
# z-index: 10000000; /* Ensures the tooltip appears on top of other elements */
$trigger_jquery_raw .= qq~
\$('[data-toggle="tooltip"]').tooltip({
container: 'body',
placement: 'top', // Or your preferred placement
});
~ ;
require _blank ;
exit ;
} #------------------------------------------------------------------------------------------
# sub table_select_fixed_width_jquery {
# my ($columns_with_selects) = @_ ;
# return unless $columns_with_selects ;
# # foreach (keys %table_select_rows) {
# # chop $table_select_rows{$_} ;
# # $trigger_jquery_raw .= qq~\$("$table_select_rows{$_}").css("z-index","$_") ; ~ ;
# # }
# $trigger_jquery_raw .= qq~
# \$("$columns_with_selects").css("position","relative") ;
# \$("$columns_with_selects").css("text-align","center") ;
# ~ ;
# my $dropdown_chosen_ids_str = join(',',@dropdown_chosen_ids) ;
# my $dropdown_multi_chosen_ids_str = join(',',@dropdown_multi_chosen_ids) ;
# $trigger_jquery .= qq~
# \$("$dropdown_multi_chosen_ids_str").css("width","100%") ;~ if $dropdown_multi_chosen_ids_str ;
# return unless $dropdown_chosen_ids_str ;
# # $trigger_jquery .= qq~
# # \$("$dropdown_chosen_ids_str").css("position","absolute") ;~ ;
# $trigger_jquery .= qq~
# \$("$dropdown_chosen_ids_str").css("width","90%") ;~ ;
# $trigger_jquery .= qq~
# \$("$dropdown_chosen_ids_str").css("left","5%") ;~ ;
# $trigger_jquery .= qq~
# \$("$dropdown_chosen_ids_str").css("top","50%") ;~ ;
# $trigger_jquery .= qq~
# \$("$dropdown_chosen_ids_str").css("transform","translateY(-50%)") ;~ ;
# } #------------------------------------------------------------------------------------------
sub redirect_screen {
&common_min_alert_type ;
print <<ENDOFTEXT;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>$useropts{title}</title>
<script src="$useropts{'bower_components'}/jquery/jquery.min.js"></script>
</head>
<body>
<script>
\$(document).ready(function(){ \$('#$lcpage-form').submit(); })
</script>
</body>
<form role="form" id="$lcpage-form" method="post" action="$lcpage">
<input type="hidden" name="iaction" value="report">
<input type="hidden" name="oaction" value="$iaction">
<input type="hidden" name="date_from" value="$i{date_from}">
<input type="hidden" name="date_to" value="$i{date_to}">
<input type="hidden" name="client_id" value="$i{client_id}">
<input type="hidden" name="organisation_ids" value="$i{organisation_ids}">
<input type="hidden" name="supplier_id" value="$i{supplier_id}">
<input type="hidden" name="status_id" value="$i{status_id}">
<input type="hidden" name="region_id" value="$i{region_id}">
<input type="hidden" name="isaved" value="$success">
</form>
</html>
ENDOFTEXT
#
exit ;
} #------------------------------------------------------------------------------------------
use dcb ;
use today ;
use common ;
use report ;
use logistics ;
use xlsxcreator ;
1;