#!/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 aren’t 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. # our $debuqg = 1 ; # 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~~ ; } $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~~ : ($poc_name && !$poc_nr) ? qq~~ : 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~~ ; # &common_debug("1. venue_location >>>>>> []"); } foreach (keys %{$opts{venue_location}}) { $opts{venue_location}{$_} .= qq~~ ; } # $opts{venue_location}{other} .= qq~~ ; &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~~ 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~~ ; $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~~ ; } # &common_debug("1. system_location >>>>>> [$opts{system_location}]"); our %status_hash = (1 =>"Booked",2 => "Pending",3=>"In Transit",4 =>"Delivered") ; $opts{status} .= qq~~ ; $opts{status} .= qq~~ ; $opts{status} .= qq~~ ; $opts{status} .= qq~~ ; $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~~ ; $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~~ ; # } } #------------------------------------------------------------------------------------------ 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~~ 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~$val~ ; } $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~$val~ 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~~ ; $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()) ? "
- Add WayBillNr" : "" ; let set_supplier = (\$("#selectLogistics_supplier_id_"+ft_event_id).val() != '2') ? "
- Set Supplier to DCB" : "" ; 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("").trigger("chosen:updated") ; } else if (!required_fields_are_in) { \$("#waybill_col_"+ft_event_id).html("").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()) ? "" : "
- Add Item(s)" ; 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 "" ; } ~ ; $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~
~ ; $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~$id\_$from_to~ . &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~~ ; $val = substr($val,0,27) . qq~~ ; } $valxlsx = $db{$table}{$id}{ref} ; } elsif ($col_disp eq 'FT') { $val = uc $from_to ; $val = qq~~ . $val . qq~~ ; } 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}
~ ; # } # $val = substr($val,0,-4) if $val ; $val = join("
", 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~~ : 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~~ ; $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~$default_val~ ; } } 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~$default_val~ ; } } 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~~ : 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~~ ; $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~~ if $dcb_waybill_nr{$from_to} && $logistics_waybill_ids_hash{$id}{$from_to} && $items && $supp{$from_to} == 2 ; } else { $val = qq~~ ; } $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/\
//g ; } elsif ($col_disp eq 'sport') { $valxlsx =~ s/\
/\;/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~~ ; # $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 { "" } split /\,/, $default_val); $default_val = '' ; } $item_default_val = $default_val ; $valxlsx = join (';', map { $db{logistics_items}{$_}{name} } split /\,/, $default_val); $extra_form_fields .= qq~~; $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}} = "" ; # $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~
$val
~ ; } } 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~$val~ ; } } 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~~ ; $col_nm = "" ; $default_val = '' ; } elsif ($default_val_is_saved && $default_val && $default_val eq 'other') { $opts{$field_id} = qq~~ ; $col_nm = "" ; $default_val = '' ; } $changed_val = qq~~ 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~~ ; # $col_nm = "loc_$default_val" ; # $default_val = '' ; # } # $default_val_is_saved $changed_val = qq~~ 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~ ~ ; $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 < $useropts{title}
ENDOFTEXT # exit ; } #------------------------------------------------------------------------------------------ use dcb ; use today ; use common ; use report ; use logistics ; use xlsxcreator ; 1;