2025-11-26 09:31:54 +00:00
#!/usr/bin/perl
BEGIN { use lib '/usr/home/cfg' ; require push_inc ; }
require cfg ;
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
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 ;
& today ;
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
@ ARGV = split ( /\\*\&/ , $ ENV { 'QUERY_STRING' } ) ;
$ action = $ ARGV [ 0 ] ;
our ( $ q ) = CGI - > new ( ) ;
our $ iaction = $ q - > param ( 'iaction' ) || $ action ;
our $ isaved = $ q - > param ( 'isaved' ) || '' ;
# our $debug = 1 ;
our $ double_box_layout = 1 ; # box on the right layout included
#-------- page opts --------------------------------------------------------------------------------------------------------------------------------------------------
# our $allow_add_override = 0 ; if ($user_type eq 'ops_users') { $allow_add_override = 1 ; }
& page_opts ;
#---------------------------------------------------------------------------------------------------------------------------------------------------------------------
print "Content-type: text/html\n\n" ;
our $ srchscr = 0 ;
our $ fnsortcol = 0 ;
our $ redirtype = 'list' ; # $redirtype = 'search' ;
& db_open_upd ;
our $ db_ignore_open_close = 1 ; # do one open and one close instead of repeating it
if ( $ iaction eq 'edit' ) { & load_table_vars ( "`camera_nr` LIKE 'VPU%' OR `camera_nr` LIKE 'S1%' OR `camera_nr` LIKE 'Prime%' OR `camera_nr` LIKE 'Coach%'" ) ; }
& common_min_action ;
# if ( $iaction ~~ ['stock','active','purchased','demo','all','main','other','vpu','rental'] ) {
# &list_screen ;
# &common_min_screen3;
# }
$ db_ignore_open_close = 0 ; # do one open and one close instead of repeating it
& db_close_conn ;
exit ;
#------------------------------------------------------------------------------------------
sub validate {
# called from common_min_action
my $ exists = '' ;
& db_min_ro ( $ table , '*' , "camera_nr='$i{camera_nr}'" , '' , '' ) ;
foreach my $ id ( keys % { $ db { $ table } } ) {
if ( $ db { $ table } { $ id } { camera_nr } eq $ i { camera_nr } ) {
$ exists = 1 ;
}
}
if ( $ exists ) {
$ alert = & common_min_alert ( 'warning' , "CAMERA_NR ALREADY EXISTS!" , 'ok' ) ;
% col_name = ( ) ;
& common_min_add_screen ;
& common_min_screen1 ;
}
} #------------------------------------------------------------------------------------------
sub insert {
& add_db_fields ;
$ i { last_edited_by } = $ userid ;
$ i { user_id } = $ userid ;
$ i { id } = & db_min_get_max ( $ table , 'id' ) ;
& val_check ;
$ i { date_time } = "$now_ccyy_mm_dd $now_hour:$now_min:$now_sec" ;
$ i { last_updated } = "$now_ccyy_mm_dd $now_hour:$now_min:$now_sec" ;
& common_upload_files ( "cameras/$i{id}" ) ;
& process_upload_ifields ;
& process_sport_type_ids ;
& set_fields ;
if ( $ i { linked_vpu_id } ) {
local $ store_serial_nr = $ i { serial_nr } ;
local $ store_linked_vpu_id = $ i { linked_vpu_id } ;
}
& db_min_insert ( $ table ) ;
if ( $ store_linked_vpu_id ) {
% i = ( ) ;
$ i { quote_linked_vpu } = $ store_serial_nr ;
& db_min_upd ( $ table , "id='$store_linked_vpu_id'" ) ;
}
} #------------------------------------------------------------------------------------------
sub update {
unless ( $ i { id } ) { $ error = qq( NO ID ) ; return ; }
& edit_db_fields ;
if ( $ userid ) { $ i { last_edited_by } = $ userid ; }
& val_check ;
$ i { last_updated } = "$now_ccyy_mm_dd $now_hour:$now_min:$now_sec" ;
& common_upload_files ( "cameras/$i{id}" ) ;
& process_upload_ifields ;
& process_sport_type_ids ;
& set_fields ;
& db_min_upd ( $ table , "id='$i{id}'" ) ;
my $ store_linked_vpu_id = $ i { linked_vpu_id } ;
my $ store_serial_nr = $ i { serial_nr } ;
my $ store_id = $ i { id } ;
if ( $ i { event_linked_vpu } and $ i { event_system_id } ) { # update the linked VPU too
my $ store_event_system_id = $ i { event_system_id } ;
my $ store_event_linked_vpu = $ i { event_linked_vpu } ;
% i = ( ) ;
$ i { event_system_id } = $ store_event_system_id ;
& db_min_upd ( $ table , "serial_nr='$store_event_linked_vpu'" ) ;
}
if ( $ store_linked_vpu_id ) {
% i = ( ) ;
$ i { quote_linked_vpu } = $ store_serial_nr ;
& db_min_upd ( $ table , "id='$store_linked_vpu_id'" ) ; # updating the VPU camera
} else {
% i = ( ) ;
$ i { quote_linked_vpu } = '' ;
& db_min_upd ( $ table , "quote_linked_vpu='$store_serial_nr'" ) ; # updating the VPU camera
% i = ( ) ;
$ i { event_linked_vpu } = '' ;
& db_min_upd ( $ table , "event_linked_vpu='$store_serial_nr'" ) ; # updating the VPU camera
}
$ i { id } = $ store_id ;
# exit if $username eq 'rory' ;
} #------------------------------------------------------------------------------------------
sub process_sport_type_ids {
local @ sporttypeids = split ( /\,/ , $ i { sporttypeids } ) ;
my $ sporttypeids = join ( "," , @ sporttypeids ) ;
$ sporttypeids =~ s/\s//g ; # remove white space
$ ignore { sporttypeids } = 1 ;
$ i { sport_type_ids } = $ sporttypeids ;
} #------------------------------------------------------------------------------------------
sub set_fields {
$ ignore { serial_nr } = '' ;
$ ignore { serial_nr_2 } = '' ;
$ ignore { serial_nr_3 } = '' ;
$ ignore { serial_nr_desc } = '' ;
$ ignore { serial_nr_2_desc } = '' ;
$ ignore { serial_nr_3_desc } = '' ;
$ i { usd_amount } = '0.00' unless $ i { usd_amount } ;
$ i { cur_amount } = '0.00' unless $ i { cur_amount } ;
$ i { linked_vpu_id } = '0' unless $ i { linked_vpu_id } ;
$ i { sport_type_ids } = 'NULL' unless $ i { sport_type_ids } ;
$ i { system_name } = 'NULL' unless $ i { system_name } ;
$ i { replaced_vpu_ids } = 'NULL' unless $ i { replaced_vpu_ids } ;
} #------------------------------------------------------------------------------------------
sub duplicate {
unless ( $ i { id } ) { $ error = qq~NO ID~ ; return ; }
local $ copy_id = $ i { id } ;
& db_min_copy ( $ table , $ copy_id ) ;
& common_min_copy_files ( "$htmlpath/uploads/cameras/$copy_id" , "$htmlpath/uploads/cameras/$i{id}" ) ;
} #------------------------------------------------------------------------------------------
sub val_check {
# unless ($i{quote_id}) { $i{quote_id} = '0' ; }
# unless ($i{replacement_date}) { $ignore{replacement_date} = 1 ; }
unless ( $ i { replacement_date } ) { $ i { replacement_date } = NULL ; }
unless ( $ i { date_received } ) { $ i { date_received } = NULL ; }
unless ( $ i { event_linked_vpu } ) { $ i { event_linked_vpu } = NULL ; }
unless ( $ i { event_system_id } ) { $ i { event_system_id } = 0 ; }
if ( $ i { camera_system_id } ) {
my @ valarr = split ( /\:/ , $ i { camera_system_id } ) ;
$ i { camera_system_id } = $ valarr [ 0 ] ; # set the value to only be the id
$ camera_nr_prefix = $ valarr [ 1 ] ; # set the value to only be the id
}
# &db_min_ro($table,'id,camera_nr',"`camera_system_id`='$i{camera_system_id}'",'','') ;
# &set_max_cam_nr ;
# # $camera_nr_suffix++ ;
} #------------------------------------------------------------------------------------------
# sub set_max_cam_nr {
# foreach my $id (keys %{$db{$table}}) {
# # $camera_nr_suffix++ ;
# my ($cam_type,$cam_cnt) = split(/\-/,$db{$table}{$id}{camera_nr});
# $max_cam_cnt{$cam_type} = $cam_cnt unless $max_cam_cnt{$cam_type} > $cam_cnt;
# }
# } #------------------------------------------------------------------------------------------
sub report_ifields {
& load_search_vars ;
if ( $ i { camera_id } ) {
push @ report_sql , "(`id`='$i{camera_id}')" ;
push @ report_results , "camera = $camera_name{$i{camera_id}}" ;
$ xlsreportname . = '-' . $ i { camera_id } ;
# our $acc_id_sql_where = "`camera_id`='$i{camera_id}'"
}
# if ($i{camera_system_id}) {
if ( $ i { camera_system_id } and $ i { camera_system_id } ne 'main' and $ i { camera_system_id } ne 'other' and $ i { camera_system_id } ne 'all' ) {
push @ report_sql , "(`camera_system_id`='$i{camera_system_id}')" ;
push @ report_results , "camera_system = $camera_system{$i{camera_system_id}}" ;
$ xlsreportname . = '-' . $ i { camera_id } ;
# our $acc_id_sql_where = "`camera_id`='$i{camera_id}'"
} elsif ( $ i { camera_system_id } eq 'main' or $ i { camera_system_id } eq 'other' or $ i { camera_system_id } eq 'all' ) {
push @ report_results , "camera_system = $i{camera_system_id}" ;
}
if ( $ i { stock } ) {
push @ report_results , "stock = $i{stock}" ;
$ xlsreportname . = '-' . $ i { stock } ;
}
if ( $ i { client_id } ) {
# push @report_sql, "(`client_id` = '$i{client_id}')" ;
push @ report_results , "Client = $client{$i{client_id}}" ;
}
if ( $ i { serial_nr } ) {
push @ report_sql , "(`serial_nr` LIKE '%$i{serial_nr}%')" ;
push @ report_results , "serial_nr LIKE `$i{serial_nr}`" ;
}
if ( $ i { quote_nr } ) {
push @ report_sql , "(`quote_nr`='$i{quote_nr}')" ;
push @ report_results , "quote_nr = `$i{quote_nr}`" ;
}
if ( $ i { date_received_from } and $ i { date_received_to } ) { # check dates
my $ date_received_from_check = $ i { date_received_from } ;
$ date_received_from_check =~ s/\-//g ;
my $ date_received_to_check = $ i { date_received_to } ;
$ date_received_to_check =~ s/\-//g ;
if ( $ date_received_from_check > $ date_received_to_check ) { $ error = qq( CAMERAS FROM ( $i{date_received_from} ) > CAMERAS TO ( $i{date_received_to} ) ) ; & report_screen ; }
}
if ( $ i { date_received_from } ) {
push @ report_sql , "(`date_received` >= '$i{date_received_from}')" ;
push @ report_results , "date_received >= $i{date_received_from}" ;
}
if ( $ i { date_received_to } ) {
push @ report_sql , "(`date_received` <= '$i{date_received_to}')" ;
push @ report_results , "date_received <= $i{date_received_to}" ;
}
$ report_results_msg = uc join ( ', ' , @ report_results ) ;
unless ( $ report_results_msg ) { $ error = qq( ENTER AT LEAST ONE SEARCH PARAMETER ) ; & report_screen ; } else { $ isaved = qq( SELECT WHERE $report_results_msg ) ; }
} #------------------------------------------------------------------------------------------
sub load_search_vars {
& db_min_ro ( 'cameras' , 'id,camera_nr' , "`id`='$i{camera_id}'" , '' , '' ) ;
foreach my $ id ( keys % { $ db { cameras } } ) { $ camera_name { $ id } = $ db { cameras } { $ id } { camera_nr } ; }
& db_min_ro ( 'camera_systems' , 'id,name' , "`id`='$i{camera_system_id}'" , '' , '' ) ;
foreach my $ id ( keys % { $ db { camera_systems } } ) { $ camera_system { $ id } = $ db { camera_systems } { $ id } { name } ; }
if ( $ i { client_id } ) {
my $ customers_sql_where = "`id`='$i{client_id}'" ;
& db_min_ro ( 'customers' , '*' , $ customers_sql_where , '' , '' ) ;
foreach my $ id ( keys % { $ db { customers } } ) { $ client { $ id } = $ db { customers } { $ id } { name } ; }
}
} #------------------------------------------------------------------------------------------
sub process_upload_ifields {
foreach ( keys % uploads_file ) { $ i { $ _ } = $ uploads_file { $ _ } ; $ ignore { $ _ } = '' ; }
} #------------------------------------------------------------------------------------------
sub list_screen {
our $ open_new_tab = qq~target="_blank"~ ;
my $ srch_where_sql = join ( ' AND ' , @ report_sql ) ;
my $ add_sql_where = '' ;
our @ sql_col_display = ( "camera_nr" , "in_stock" , "camera_system_id" , "serial_nr" , "part_number" , "system_name" , "date_received" , "client_id" , "ref_nr" , "date_delivered" , "date_active" , "quote_ref" , "replacement_date" ) ;
push @ sql_col_display , "" ;
& report_xls_export_header ( "Cameras$xlsreportname" , 'cameras' ) ;
& load_list_vars ( "$srch_where_sql$add_sql_where" ) ;
foreach my $ id ( sort { $ b <=> $ a } keys % { $ db { $ table } } ) {
next if ( & common_camera_system_filter ( $ table , $ id ) ) ;
if ( $ i { client_id } ) { next unless $ client { $ i { client_id } } eq $ quote_customer { $ id } ; }
# if ($i{stock}) { next unless $i{stock} eq lc $quote_type{$id} ; }
# if ($i{stock}) { &common_debug("next unless $i{stock} eq $lc_stock"); }
$ camera_system_count { $ camera_system { $ db { $ table } { $ id } { camera_system_id } } } + + ;
$ print_tbody . = qq~<tr>~ ;
$ xlscol = 0 ;
foreach ( @ sql_col_display ) {
unless ( $ _ ) { next ; } # blank for the buttons column
my $ val = $ db { $ table } { $ id } { $ _ } ;
my $ align = '' ;
my $ center = qq~ class="dt-center"~ ;
if ( $ _ eq 'date_received' ) { $ align = $ center ; }
# if ($_ eq 'date_delivered') { $val = $quote_delivery_date{$id} ; $align = $center ; }
if ( $ _ eq 'date_delivered' ) { $ val = $ db { $ table } { $ id } { quote_delivery_date } ; $ align = $ center ; }
if ( $ _ eq 'date_active' ) { $ val = $ db { $ table } { $ id } { quote_active_date } ; $ align = $ center ; }
if ( $ _ eq 'camera_system_id' ) { $ val = $ camera_system { $ val } ; }
if ( $ _ eq 'client_id' ) { $ val = $ quote_customer { $ id } ; }
# if ($_ eq 'quote_type') { $val = $quote_type{$id} ; }
if ( $ _ eq 'ref_nr' ) { $ val = $ db { $ table } { $ id } { quote_nr } ; $ align = $ center ; }
if ( $ _ eq 'quote_ref' ) { $ val = $ db { $ table } { $ id } { quote_ref } ? $ db { $ table } { $ id } { quote_ref } : $ quote_ref { $ id } ; }
# if ($_ eq 'purchase/rental') { $val = $quote_type{$id} ; $align = $center ; }
if ( $ _ eq 'demo' ) { $ val = $ db { $ table } { $ id } { demo_recipient } ; }
if ( $ _ eq 'extended_warranty' ) {
$ val = $ db { $ table } { $ id } { quote_ew_date_from } if $ db { $ table } { $ id } { quote_ew_date_from } ;
$ val . = "/$db{$table}{$id}{quote_ew_date_to}" if $ db { $ table } { $ id } { quote_ew_date_to } ;
$ align = $ center ;
}
if ( $ _ eq 'in_stock' ) { if ( $ db { $ table } { $ id } { quote_nr } or $ db { $ table } { $ id } { demo_recipient } or $ db { $ table } { $ id } { replacement_date } or $ db { $ table } { $ id } { event_system_id } ) { $ val = 0 ; } else { $ val = 1 ; } }
& report_xls_export_process_cell ( '' , '' , $ val ) ; # ------------------------------------------------------------------------- HTML AFTER
$ xlscol + + ;
# if ($_ eq 'in_stock') { if ($db{$table}{$id}{quote_nr}) { $val = &set_tick('red', '') ; } else { $val = &set_tick('green', '') ; } $align = $center ; }
if ( $ _ eq 'in_stock' ) { if ( $ val == 1 ) { $ val = & set_tick ( 'green' , '' ) ; } else { $ val = & set_tick ( 'red' , '' ) ; } $ align = $ center ; }
# if ($_ eq 'quote_nr') { $val = qq~<a href="javascript:editQuote('$quote_id{$val}');">$val</a>~ ; }
if ( $ _ eq 'replacement_date' ) {
$ val = qq~<span class="label" style="background-color:#000000;border:1px solid #000000;">$val</span>~ ;
}
$ val = & common_camera_links ( $ table , $ id , $ val ) if ( $ _ eq 'camera_nr' or $ _ eq 'ref_nr' ) and $ pixellot_limit { $ username } != 1 and $ events_limit { $ username } != 1 ;
if ( $ _ eq 'camera_nr' && $ camera_ticket { $ id } && $ pixellot_limit { $ username } != 1 && $ events_limit { $ username } != 1 ) {
$ val . = $ camera_ticket { $ id } ;
}
$ print_tbody . = qq~<td $align>$val</td>~ ;
}
my $ delete_butt = '' ; my $ copy_butt = '' ; my $ edit_butt = '' ;
if ( ( $ useropts { boss } { $ username } or $ useropts { super } { $ username } ) and $ pixellot_limit { $ username } != 1 and $ events_limit { $ username } != 1 ) {
$ edit_butt = qq~<a class="btn btn-info btn-xs" href="javascript:editMinItem('$id');"><i class="glyphicon glyphicon-edit icon-white"></i></a>~ ;
$ copy_butt = qq~<a class="btn btn-success btn-xs" href="javascript:copyMinItem('$id');" title="Copy" data-toggle="tooltip" data-placement="top"><i class="glyphicon glyphicon-retweet icon-white"></i></a>~ ;
$ delete_butt = qq~<a class="btn btn-danger btn-xs" href="javascript:deleteMinItem('$db{$table}{$id}{camera_nr}','$id')"><i class="glyphicon glyphicon-trash icon-white"></i></a>~ ;
}
# if ($camera_exists_on_quote{$id}) { $delete_butt = '' ; }
if ( $ db { $ table } { $ id } { quote_nr } ) { $ delete_butt = '' ; }
$ print_tbody . = qq( <td nowrap> $edit_butt $copy_butt $delete_butt</td></tr> ) ;
$ xlsrow + + ;
}
& report_xls_export_footer ( 'L' , 15 , 'cameras' ) ;
our $ fnsortcol = 0 ; our $ fnsortorder = 'asc' ;
$ print_more_boxes . = qq( <br><button type="button" class="btn btn-default" onclick="history.go ( -1 ) ;">Back</button> ) ;
& common_min_extra_crumb ( "search-$lcpage\s" , "Search Screen" ) ;
} #------------------------------------------------------------------------------------------
sub set_tick {
my ( $ color , $ tooltip ) = @ _ ;
$ tick { green } = qq~<span style="display:none;">2</span><span class="label label-success"><i $tooltip class="glyphicon glyphicon-ok"></i></span>~ ;
$ tick { orange } = qq~<span style="display:none;">1</span><span class="label label-warning"><i $tooltip class="glyphicon glyphicon-ok"></i></span>~ ;
$ tick { red } = qq~<span style="display:none;">0</span><span class="label label-danger"><i $tooltip class="glyphicon glyphicon-ok"></i></span>~ ;
return ( $ tick { $ color } ) ;
} #------------------------------------------------------------------------------------------
sub load_list_vars {
my ( $ where ) = @ _ ;
& db_min_ro ( 'camera_systems' , 'id,name' , '' , '' , '' ) ;
foreach my $ id ( keys % { $ db { camera_systems } } ) { $ camera_system { $ id } = $ db { camera_systems } { $ id } { name } ; }
& db_min_ro ( 'customers' , 'id,name' , '' , '' , '' ) ;
foreach my $ id ( keys % { $ db { customers } } ) { $ customer { $ id } = $ db { customers } { $ id } { name } ; }
my $ surl = qq~javascript:dlgMdl('$useropts{scripts}/dialog/read_ticket.pl~ ;
& db_min_ro ( 'tickets' , '*' , "camera_ids IS NOT NULL" , '' , '' ) ;
foreach my $ id ( keys % { $ db { tickets } } ) {
my $ cam_ids = $ db { tickets } { $ id } { camera_ids } ;
my $ uid = $ db { tickets } { $ id } { unique_id } ;
my $ sent_from = $ db { tickets } { $ id } { sent_from } ;
my $ date_time = $ db { tickets } { $ id } { date_time } ;
my $ s_uid = $ db { tickets } { $ id } { suid } ;
my $ subject = $ db { tickets } { $ id } { subject } ;
my @ camera_ids = split ( /\,/ , $ cam_ids ) ;
foreach my $ cam_id ( @ camera_ids ) {
$ camera_ticket { $ cam_id } . = '<a href="' . $ surl . qq~?uniqueid=$uid&from=$sent_from&suid=$s_uid&responded=1&subject=$subject','$subject [$uid]','','medium-dialog');" data-toggle="tooltip" data-placement="right" data-title="Read ticket [$date_time]" style="margin:2px 2px 0 0;"><i class="glyphicon glyphicon-envelope red" style="margin-left:2px;top:3px;"></i></a>~
}
}
# &common_load_quote_vars('>0');
& common_load_quote_vars ( "cameras.quote_nr>0 AND cameras.quote_nr=quotes.quote_nr" ) ;
& load_table_vars ( $ where ) ;
# &db_min_ro($table,'*',$where,'','') ;
} #------------------------------------------------------------------------------------------
sub load_table_vars {
my ( $ where ) = @ _ ;
& db_min_ro ( $ table , '*' , $ where , '' , '' ) ;
# foreach my $id (keys %{$db{$table}}) {
# $cam_nr{$id} = $db{$table}{$id}{camera_nr} ;
# $serial_nr{$id} = $db{$table}{$id}{serial_nr} ;
# }
} #------------------------------------------------------------------------------------------
sub thead {
my $ cam_qtys = '' ;
foreach ( keys % camera_system_count ) {
$ cam_qtys . = qq~$_ : $camera_system_count{$_}<br>~ ;
}
$ replace_blank_table_top_right = qq~ <a href="#" data-toggle="popover" data-placement="left" data-content="$cam_qtys" title="Camera Qty Count" data-html="true" data-trigger="focus" class="btn btn-default btn-xs"><i class="glyphicons glyphicons-hash" style="margin-top:3px;"></i></a>~ if $ cam_qtys ;
& common_min_thead ;
} #-------------------------------------------------------------------------------
sub hidden_db_fields {
$ ignore { iaction } = 1 ;
# $ignore{logo} = 1 ;
$ ignore { serial_nr } = 1 ;
$ ignore { serial_nr_2 } = 1 ;
$ ignore { serial_nr_3 } = 1 ;
$ ignore { serial_nr_desc } = 1 ;
$ ignore { serial_nr_2_desc } = 1 ;
$ ignore { serial_nr_3_desc } = 1 ;
$ ignore { quote_nr } = 1 ;
$ ignore { quote_customer } = 1 ;
# $ignore{quote_ref} = 1 ;
$ ignore { quote_main_ref } = 1 ;
$ ignore { quote_delivery_date } = 1 ;
$ ignore { quote_active_date } = 1 ;
$ ignore { quote_type } = 1 ;
$ ignore { quote_date_from } = 1 ;
$ ignore { quote_date_to } = 1 ;
$ ignore { quote_linked_vpu_sn } = 1 ;
$ ignore { quote_linked_vpu_cn } = 1 ;
$ hidden { quote_linked_vpu } = 2 ;
# $ignore{active} = 1 ;
$ hidden { replaced_vpu_ids } = 2 ;
# $checkbox{active} = 1 ;
$ hidden { last_updated } = 2 ;
$ hidden { last_edited_by } = 2 ;
$ hidden { date_time } = 2 ;
$ hidden { user_id } = 2 ;
$ required { currency } = 1 ;
$ readonly { currency } = 'READONLY' ;
$ readonly { cur_amount } = 'READONLY' ;
# $required{serial_nr} = 1 ; # alphanumeric
$ textarea { notes } = 1 ;
$ datepicker { replacement_date } = 1 ;
$ datepicker { date_received } = 1 ;
# $datepicker{date_delivered} = 1 ;
# $datepicker{date_active} = 1 ;
$ info_glyph_tooltip { demo_recipient } = qq~<i style="margin-top:-3px" data-toggle="tooltip" data-placement="right" data-title="Set to staff member name if demo stock taken home." class="glyphicons glyphicons-info-sign blue"></i>~ ;
for ( 1 .. 3 ) {
$ ignore { "camera_$_" } = 1 ;
$ ignore { "iattachcamera_$_" } = 1 ;
}
} #------------------------------------------------------------------------------------------
sub add_db_fields {
& sort_fields ;
& hidden_db_fields ;
$ hidden { id } = 2 ;
$ required { camera_nr } = 1 ;
# $hidden{camera_nr} = 2 ;
& common_exchange_rates ;
$ db { $ table } { '' } { currency } = 'ZAR' ;
$ db { $ table } { '' } { roe } = $ roe { ZAR } ;
if ( $ iaction eq 'add' ) { & build_boxes_add ; } # can't be in add_screen, only works if here
} #------------------------------------------------------------------------------------------
sub edit_db_fields {
& sort_fields ;
& hidden_db_fields ;
$ readonly { camera_nr } = 'READONLY' ;
$ hidden { camera_system_id } = 2 ;
$ ignore { date_time } = 1 ;
$ ignore { user_id } = 1 ;
unless ( $ db { $ table } { $ i { id } } { currency } ) {
& common_exchange_rates ;
$ db { $ table } { $ i { id } } { currency } = 'ZAR' ;
$ db { $ table } { $ i { id } } { roe } = $ roe { ZAR } ;
}
$ hidden { id } = 1 ; # 1 = bypass for db update
} #------------------------------------------------------------------------------------------
sub sort_fields {
% sort_field = ( ) ;
$ sort_field { 1 } = 'camera_system_id' ; $ fcol { camera_system_id } = 8 ;
$ sort_field { 2 } = 'camera_nr' ; $ fcol { camera_nr } = 8 ;
$ sort_field { 3 } = 'date_received' ; $ fcol { date_received } = 4 ;
$ sort_field { 4 } = 'usd_amount' ; $ dont_end_row { usd_amount } = 1 ; $ fcol { usd_amount } = 2 ; $ preferred_title { usd_amount } = 'Amount' ;
$ sort_field { 5 } = 'currency' ; $ add_col { currency } = 1 ; $ fcol { currency } = 2 ;
$ sort_field { 6 } = 'roe' ; $ add_col { roe } = 1 ; $ fcol { roe } = 2 ;
$ sort_field { 7 } = 'cur_amount' ; $ add_col { cur_amount } = 1 ; $ fcol { cur_amount } = 2 ;
$ sort_field { 8 } = 'demo_recipient' ; $ add_finish_div { demo_recipient } = 1 ; $ fcol { demo_recipient } = 8 ;
$ sort_field { 9 } = 'linked_vpu_id' ; $ fcol { linked_vpu_id } = 4 ; $ dont_end_row { linked_vpu_id } = 1 ; $ select { linked_vpu_id } = 1 ; $ preferred_title { linked_vpu_id } = "Linked VPU" ;
$ sort_field { 10 } = 'sport_type_ids' ; $ select { sport_type_ids } = 1 ; $ preferred_title { sport_type_ids } = "Sport Types" ; $ dlg { sport_type_ids } = qq~ <div class="col-md-1"><a href="javascript:dlgMdl('$useropts{'scripts'}/dialog/add_sport_type.pl?add&selectSport_type_ids','Add Sport Type','height:450px','medium-dialog');" class="btn btn-primary btn-xs" style="padding:1px 2px 1px 3px;margin-top:0px;" title='Add Sport Type' data-toggle='tooltip' data-placement='right'><i class="glyphicon glyphicon-plus" style="padding:0;margin-top:0px;"></i></a></div>~ ;
$ sort_field { 11 } = 'quote_ref' ;
$ sort_field { 12 } = 'notes' ;
} #-------------------------------------------------------------------------------
sub select_opts {
my ( $ id ) = @ _ ;
$ multiple { sport_type_ids } = 1 ;
my @ sport_type_ids = split ( /\,/ , $ db { $ table } { $ id } { sport_type_ids } ) ;
foreach ( @ sport_type_ids ) {
$ selected_multi { $ _ } = 'SELECTED' ;
& common_debug ( "SELECTED sport_type_ids [$_] : [selected=$selected_multi{$_}]" ) ;
}
& common_min_select_opts ( 'sport_type_ids' , 'sport_types' , 'name' , $ db { $ table } { $ id } { sport_type_ids } , '' ) ;
$ extra_form_fields . = qq~<input type="hidden" name="sporttypeids" id="sport-type-ids" value="">~ ;
$ trigger_jquery_raw . = qq ~
\ $( "#savebutt" ) . click ( function ( ) {
let st_val = \ $( "#selectSport_type_ids" ) . chosen ( ) . val ( ) ;
\ $( '#sport-type-ids' ) . val ( st_val ) ;
\ $( '#cameras-form' ) . submit ( ) ;
} ) ; ~ ;
if ( $ iaction eq 'add' ) {
& db_min_ro ( 'camera_systems' , '*' , $ where , '' , '' ) ;
$ select { camera_system_id } = 1 ;
$ required { camera_system_id } = 1 ;
local $ sel_camera_system_id = 0 ;
local % camera_system_code = ( ) ;
foreach my $ id ( keys % { $ db { camera_systems } } ) {
my $ saved_val = $ db { $ table } { $ i { id } } { camera_system_id } ;
if ( $ saved_val ) { my @ valarr = split ( /\:/ , $ saved_val ) ; $ saved_val = $ valarr [ 0 ] ; }
if ( $ saved_val eq $ id ) { $ selected = 'SELECTED' ; $ sel_camera_system_id = $ id } else { $ selected = '' ; }
$ opts { camera_system_id } . = qq~<option $selected value="$id:$db{camera_systems}{$id}{code}">$db{camera_systems}{$id}{name}</option>~ ;
}
}
local $ sel = 'SELECTED' ;
$ opts { linked_vpu_id } = qq~<option value="" $sel>- NONE -</option>~ ;
$ sel = '' ;
if ( $ db { $ table } { $ id } { camera_system_id } == 1 or $ db { $ table } { $ id } { camera_system_id } == 2 or $ db { $ table } { $ id } { camera_system_id } == 14 ) {
2026-02-03 12:35:43 +00:00
my $ dbtable = "aisa_admin_db.$table" ;
2025-11-26 09:31:54 +00:00
& db_min_ro ( $ dbtable , 'id,camera_nr,serial_nr,linked_vpu_id,quote_linked_vpu,camera_system_id' , "(camera_nr LIKE 'vpu%' OR camera_nr LIKE 'S1%' OR camera_nr LIKE 'S2%') AND (quote_linked_vpu IS NULL OR quote_linked_vpu = '' OR quote_linked_vpu = '$db{cameras}{$id}{serial_nr}') AND (event_linked_vpu IS NULL OR event_linked_vpu = '')" , '' , '' ) ;
local % is_linked = ( ) ;
foreach ( sort keys % { $ db { $ dbtable } } ) {
next if $ _ == $ i { id } ;
$ is_linked { $ db { $ dbtable } { $ _ } { linked_vpu_id } } = $ db { $ dbtable } { $ _ } { serial_nr } if $ db { $ dbtable } { $ _ } { linked_vpu_id } ;
}
$ opts { linked_vpu_id } = qq~~ ;
foreach ( sort keys % { $ db { $ dbtable } } ) {
local ( $ cam_part_1 , $ cam_part_2 ) = split ( /\-/ , $ db { $ dbtable } { $ _ } { camera_nr } ) ;
next if substr ( $ db { $ dbtable } { $ _ } { camera_nr } , 0 , 3 ) ne 'VPU' ;
next if ( $ is_linked { $ _ } and $ db { $ dbtable } { $ _ } { quote_linked_vpu } ne $ db { cameras } { $ id } { serial_nr } ) ;
next if substr ( $ db { $ dbtable } { $ _ } { camera_nr } , 3 , 2 ) ne 'S1' and substr ( $ db { $ dbtable } { $ _ } { camera_nr } , 3 , 2 ) ne 'S2' ;
next if $ db { camera_systems } { $ db { $ table } { $ i { id } } { camera_system_id } } { code } and $ db { camera_systems } { $ db { $ table } { $ i { id } } { camera_system_id } } { code } ne substr ( $ db { $ dbtable } { $ _ } { camera_nr } , 3 , 2 ) ;
$ sel = 'SELECTED' if $ db { $ dbtable } { $ i { id } } { linked_vpu_id } == $ _ or $ db { $ dbtable } { $ _ } { quote_linked_vpu } eq $ db { cameras } { $ id } { serial_nr } ;
$ opts { linked_vpu_id } . = qq~<option value="$_" $sel>$db{$dbtable}{$_}{camera_nr} [$db{$dbtable}{$_}{serial_nr}]</option>~ ;
$ sel = '' ;
}
}
$ trigger_jquery_raw . = qq ~
\ $( "#selectCamera_system_id" ) . change ( function ( ) {
var cam_nr = \ $( "#inputCamera_nr" ) ;
var sel_cam_id = \ $( "#selectCamera_system_id" ) . val ( ) ;
var url = "$useropts{scripts}/get/get_db_latest_cam_nr.pl?camera_system_id=" + \ $( "#selectCamera_system_id" ) . val ( ) ;
\ $ . get ( url , function ( json ) {
\ $ . each ( json , function ( key , data ) {
cam_nr . val ( data . camera_nr ) ;
} ) ;
} ,
'json' ) ;
// console . log ( "sel_cam_id :" + sel_cam_id ) ;
var vpu_id = \ $( "#selectLinked_vpu_id" ) ;
vpu_id . empty ( ) ;
vpu_id . trigger ( "chosen:updated" ) ;
var linked_vpu_id = '$db{cameras}{$id}{linked_vpu_id}' ;
// console . log ( "1 . vpu_id : " + vpu_id . val ( ) ) ;
if ( sel_cam_id == '1:S1' || sel_cam_id == '2:S2' || sel_cam_id == '14:' ) {
vpu_id . prepend ( "<option value='0'>- NONE -</option>" ) ;
// var active = \ $( "#checkboxActive" ) ;
var url2 = "$useropts{scripts}/get/get_db_linked_vpu.pl?camera_system_id=" + \ $( "#selectCamera_system_id" ) . val ( ) + "&linked_vpu_id=" + linked_vpu_id ;
// console . log ( "url2 : " + url2 + " linked_vpu_id : " + linked_vpu_id ) ;
vpu_id . empty ( ) ;
\ $ . get ( url2 , function ( json ) {
\ $ . each ( json , function ( key , data ) {
// console . log ( "vpu_id :" + data . id + " - " + data . camera_nr + " - " + data . serial_nr + "id data.sel : " + data . sel ) ;
if ( data . sel == 0 ) {
vpu_id . append ( "<option value='" + data . id + "'>" + data . camera_nr + " [" + data . serial_nr + "]</option>" ) ;
}
else {
vpu_id . append ( "<option value='" + data . id + "' SELECTED>" + data . camera_nr + " [" + data . serial_nr + "]</option>" ) ;
}
} ) ;
vpu_id . trigger ( "chosen:updated" ) ;
} ,
'json' ) ;
}
// console . log ( "2 . vpu_id : " + vpu_id . val ( ) ) ;
if ( vpu_id . val ( ) == null ) {
vpu_id . append ( "<option value='0'>- NONE -</option>" ) ;
vpu_id . trigger ( "chosen:updated" ) ;
}
} ) ;
\ $( "#inputUsd_amount,#inputRoe" ) . change ( function ( ) {
var roe = \ $( "#inputRoe" ) . val ( ) ;
var curr = \ $( "#inputCurrency" ) . val ( ) ; // \ $( "#selectCurrency" ) . val ( ) ;
var uval = \ $( "#inputUsd_amount" ) . val ( ) ;
var usdAmnt = uval * 1 ;
var currAmnt = usdAmnt * roe ;
\ $( "#inputCur_amount" ) . val ( currAmnt . toFixed ( 2 ) ) ;
} ) ;
~ ;
$ trigger_jquery . = qq ~
\ $( "#camera-uploads-box" ) . trigger ( 'click' ) ;
\ $( "#camera-replacement-box" ) . trigger ( 'click' ) ;
~ ;
} #-------------------------------------------------------------------------------
sub add_screen {
# called from common_add_screen
& select_opts ( '' ) ;
our $ savjqy = 1 ; # incorporate jquery into the save event to accommodate the multiple chosen options
# &build_boxes_add ; # can't do this here
} #------------------------------------------------------------------------------------------
sub build_boxes_add {
$ print_box_content_rows . = & common_min_forms_start ( $ table ) ;
$ print_box_content_rows . = qq~<div class='row'><div class='col-md-6'>~ ;
$ print_box_content_rows . = & common_min_box_top ( 'camera' , " Camera" , $ box_main_bg ) ;
$ print_box_content_rows . = & common_min_edit_form ( $ id , $ table , '' , 3 , 9 , 1 , 1 ) ;
$ print_box_content_rows . = & common_min_box_foot ;
& build_boxes_left ( '' ) ;
$ print_box_content_rows . = qq~</div><div class='col-md-6'>~ ;
& build_boxes_right ( '' ) ;
$ print_box_content_rows . = qq~</div></div>~ ;
$ print_box_content_rows . = & common_min_forms_end ( '' , $ table , 'save' ) ;
} #----------------------------------------------------------------------------------------
sub edit_screen {
our ( $ lcol , $ fcol ) = & common_min_columns ( $ label_col , $ field_col ) ;
& select_opts ( $ i { id } ) ;
$ addcpb = 1 ; # add copy button to the edit screen
our $ savjqy = 1 ; # incorporate jquery into the save event to accommodate the multiple chosen options
& build_boxes_edit ( $ i { id } ) ;
& common_min_extra_crumb ( "search-$lcpage\s" , "Search Screen" ) ;
} #------------------------------------------------------------------------------------------
sub build_boxes_edit {
my ( $ id ) = @ _ ;
$ print_box_content_rows . = & common_min_forms_start ( $ table ) ;
$ print_box_content_rows . = qq~<div class='row'><div class='col-md-6'>~ ;
$ print_box_content_rows . = & common_min_box_top ( 'camera' , " Camera : $db{$table}{$id}{id}" , $ box_main_bg ) ;
$ print_box_content_rows . = & common_min_edit_form ( $ id , $ table , '' , 3 , 9 , 1 , 1 ) ;
$ print_box_content_rows . = & common_min_box_foot ;
& build_boxes_left ( $ id ) ;
$ print_box_content_rows . = qq~</div><div class='col-md-6'>~ ;
& build_boxes_right ( $ id ) ;
$ print_box_content_rows . = qq~</div></div>~ ;
$ print_box_content_rows . = & common_min_forms_end ( $ id , $ table , 'update' , $ skip ) ;
} #----------------------------------------------------------------------------------------
sub build_boxes_left {
my ( $ id ) = @ _ ;
# our ($lcol,$fcol) = &common_min_columns(3,9) ;
$ print_box_content_rows . = qq ~
< div class = 'row' >
< div class = 'col-md-12' >
</div>
</div> ~ ; # fixes row highlighting issue
# #----------------- NEW BOX LEFT ---------------------------------------------------------------------
$ add_form_fields = '' ; $ fcol = 3 ;
# if ($_>$cntcamloop) { $cam_display_butt = qq~display:none;~ ; } else { $cam_display_butt = '' ; }
$ add_form_fields . = qq ~
< div class = 'row' id = "sn_row" >
< div class = 'col-md-12' > ~ ;
$ col = 'serial_nr' ;
$ required { $ col } = 1 ;
& common_min_forms_required ;
$ add_form_fields . = & common_min_form_input ( 'serial_nr' , $ db { $ table } { $ id } { serial_nr } , '' , '' , 1 ) ;
$ add_form_fields . = qq ~
< div class = 'fieldname col-md-2' >
< label class = 'control-label' for = 'inputPart_number' > Part Number </label>
</div>
~ ;
$ add_form_fields . = & common_min_form_input_col ( 'part_number' , $ db { $ table } { $ id } { part_number } ) ;
$ fcol = 3 ; $ lcol = 3 ;
$ add_form_fields . = qq ~
</div>
</div> ~ ;
$ add_form_fields . = qq~<br><br>~ ;
unless ( $ db { $ table } { $ id } { serial_nr_2 } ) {
$ disp_sn_2_style = qq~style="display:none;"~ ;
$ add_form_fields . = qq~<a id="btn_serial_nr" href="#" style="padding-left:16px;clear:both;"><i class="glyphicon glyphicon-plus blue"></i></a>~ ;
$ trigger_jquery_raw . = qq ~ \ $( "#btn_serial_nr" ) . click ( function ( ) {
\ $( "#sn_2_row" ) . toggle ( ) ;
\ $( "#btn_serial_nr" ) . hide ( ) ;
\ $( "#btn_serial_nr_2" ) . show ( ) ;
} ) ; ~ ;
}
$ add_form_fields . = qq ~
</div> ~ ;
$ add_form_fields . = qq~<div class='row' id="sn_2_row" $disp_sn_2_style><div class='col-md-12'>~ ;
$ add_form_fields . = & common_min_form_input ( 'serial_nr_2' , $ db { $ table } { $ id } { serial_nr_2 } , '' , '' , 1 ) ; $ fcol = 5 ;
$ add_form_fields . = & common_min_form_input_col ( 'serial_nr_2_desc' , $ db { $ table } { $ id } { serial_nr_2_desc } ) ; $ fcol = 3 ;
$ add_form_fields . = qq~<br><br>~ ;
unless ( $ db { $ table } { $ id } { serial_nr_3 } ) {
$ disp_sn_3_style = qq~style="display:none;"~ ;
$ add_form_fields . = qq~<a id="btn_serial_nr_2" href="#" style="padding-left:16px;clear:both;"><i class="glyphicon glyphicon-plus blue"></i></a>~ ;
$ trigger_jquery_raw . = qq ~ \ $( "#btn_serial_nr_2" ) . click ( function ( ) {
\ $( "#sn_3_row" ) . toggle ( ) ;
\ $( "#btn_serial_nr_2" ) . hide ( ) ;
\ $( "#btn_serial_nr_3" ) . show ( ) ;
} ) ; ~ ;
}
$ add_form_fields . = qq~</div>~ ;
$ add_form_fields . = qq~</div></div>~ ;
$ add_form_fields . = qq~<div class='row' id="sn_3_row" $disp_sn_3_style><div class='col-md-12'>~ ;
$ add_form_fields . = & common_min_form_input ( 'serial_nr_3' , $ db { $ table } { $ id } { serial_nr_3 } , '' , '' , 1 ) ; $ fcol = 5 ;
$ add_form_fields . = & common_min_form_input_col ( 'serial_nr_3_desc' , $ db { $ table } { $ id } { serial_nr_3_desc } ) ; $ fcol = 3 ;
$ add_form_fields . = qq~<br><br>~ ;
unless ( $ db { $ table } { $ id } { serial_nr_4 } ) {
$ disp_sn_4_style = qq~style="display:none;"~ ;
$ add_form_fields . = qq~<a id="btn_serial_nr_3" href="#" style="padding-left:16px;clear:both;"><i class="glyphicon glyphicon-plus blue"></i></a>~ ;
$ trigger_jquery_raw . = qq ~ \ $( "#btn_serial_nr_3" ) . click ( function ( ) {
\ $( "#sn_4_row" ) . toggle ( ) ;
\ $( "#btn_serial_nr_3" ) . hide ( ) ;
\ $( "#btn_serial_nr_4" ) . show ( ) ;
} ) ; ~ ;
}
$ add_form_fields . = qq~</div>~ ;
$ add_form_fields . = qq~</div></div>~ ;
$ add_form_fields . = qq~<div class='row' id="sn_4_row" $disp_sn_4_style><div class='col-md-12'>~ ;
$ add_form_fields . = & common_min_form_input ( 'serial_nr_4' , $ db { $ table } { $ id } { serial_nr_4 } , '' , '' , 1 ) ; $ fcol = 5 ;
$ add_form_fields . = & common_min_form_input_col ( 'serial_nr_4_desc' , $ db { $ table } { $ id } { serial_nr_4_desc } ) ; $ fcol = 3 ;
$ add_form_fields . = qq~</div>~ ;
$ add_form_fields . = qq~</div></div>~ ;
$ add_form_fields . = qq ~
< div class = 'row' > < div class = 'col-md-12' > & nbsp ; </div> </div>
< div class = 'row' >
< div class = 'col-md-12' > ~ ;
$ add_form_fields . = & common_min_form_input ( 'system_name' , $ db { $ table } { $ id } { system_name } , '' , '' , '' ) ;
$ add_form_fields . = qq ~
</div>
</div> ~ ;
$ print_box_content_rows . = & common_min_box_top ( 'film' , 'Serial Nr.' , $ box_right_bg ) ;
$ print_box_content_rows . = $ add_form_fields ;
$ print_box_content_rows . = & common_min_box_foot ;
my $ cam_nr_prefix = substr ( $ db { $ table } { $ id } { camera_nr } , 0 , 2 ) ;
if ( ( $ cam_nr_prefix eq 'S1' || $ cam_nr_prefix eq 'S2' || $ cam_nr_prefix eq 'VP' ) and $ db { $ table } { $ id } { quote_nr } == 0 ) {
$ add_form_fields = '' ;
$ print_box_content_rows . = qq~<div class='row'><div class='col-md-12'></div></div>~ ; # fixes row highlighting issue
% done_col_val = ( ) ;
2026-02-03 12:35:43 +00:00
& common_min_select_opts ( 'event_linked_vpu' , 'aisa_admin_db.cameras' , 'camera_nr' , $ db { $ table } { $ id } { event_linked_vpu } , '' , '' , "camera_nr LIKE 'VPU%' AND (quote_linked_vpu = '' OR quote_linked_vpu IS NULL)" , 'serial_nr' ) unless $ cam_nr_prefix eq 'VP' ;
2025-11-26 09:31:54 +00:00
$ print_box_content_rows . = & common_min_box_top ( 'star' , 'Events' , $ box_right_bg ) ; $ preferred_title { event_linked_vpu } = 'Event System' ;
$ print_box_content_rows . = qq~<div class='row'><div class='col-md-12'>~ ;
$ print_box_content_rows . = & common_min_form_select ( 'event_linked_vpu' , $ db { $ table } { $ id } { event_linked_vpu } , 1 ) ; $ fcol = 5 ;
2026-02-03 12:35:43 +00:00
& common_min_select_opts ( 'event_system_id' , 'aisa_admin_db.event_systems' , 'description' , $ db { $ table } { $ id } { event_system_id } , '' ) ;
2025-11-26 09:31:54 +00:00
$ allow_deselect { event_system_id } = 1 ;
$ print_box_content_rows . = & common_min_form_select_col ( 'event_system_id' , $ db { $ table } { $ id } { event_system_id } ) ;
$ print_box_content_rows . = qq~</div>~ ;
$ print_box_content_rows . = qq~</div></div>~ ;
$ print_box_content_rows . = & common_min_box_foot ;
}
# #----------------- END BOX LEFT ---------------------------------------------------------------------
$ print_box_content_rows . = qq~<div class='row'><div class='col-md-12'></div></div>~ ; # fixes row highlighting issue
} #----------------------------------------------------------------------------------------
sub build_boxes_right {
my ( $ id ) = @ _ ;
my $ box_icon = '' ;
#----------------------------------------------------------------- New box --------------------------------------
if ( $ iaction eq 'edit' ) {
& db_min_ro ( 'customers' , 'id,name' , '' , '' , '' ) ;
foreach my $ cust_id ( keys % { $ db { customers } } ) { $ customer { $ cust_id } = $ db { customers } { $ cust_id } { name } ; }
my $ q_nr = $ db { $ table } { $ id } { quote_nr } ;
my $ c_nr = $ db { $ table } { $ id } { camera_nr } ;
# &common_load_quote_vars("='$id'");
& common_load_quote_vars ( "cameras.quote_nr='$q_nr' AND quotes.quote_nr='$q_nr'" ) ;
if ( $ q_nr ) {
# my $ref = $db{$table}{$id}{quote_ref} ? $db{$table}{$id}{quote_ref} : $quote_ref{$id} ;
$ print_box_content_rows . = & common_min_box_top ( 'qrcode' , 'Details' , $ box_right_bg , $ box_icon , '' ) ;
$ lcol = 3 ;
$ fcol = 4 ;
my $ field = 'quote_nr' ; $ preferred_title { quote_nr } = 'Ref Nr' ; $ readonly { $ field } = 'READONLY' ; $ print_box_content_rows . = & common_min_form_input ( $ field , $ q_nr ) ; $ ignore { $ field } = 1 ;
my $ field = 'quote_customer' ; $ preferred_title { quote_customer } = 'Customer' ; $ readonly { $ field } = 'READONLY' ; $ print_box_content_rows . = & common_min_form_input ( $ field , $ quote_customer { $ id } ) ; $ ignore { $ field } = 1 ;
my $ field = 'quote_main_ref' ; $ preferred_title { quote_main_ref } = 'Ref' ; $ readonly { $ field } = 'READONLY' ; $ print_box_content_rows . = & common_min_form_input ( $ field , $ quote_ref { $ id } ) ; $ ignore { $ field } = 1 ;
my $ field = 'quote_delivery_date' ; $ preferred_title { quote_delivery_date } = 'Delivery Date' ; $ readonly { $ field } = 'READONLY' ; $ print_box_content_rows . = & common_min_form_input ( $ field , $ db { $ table } { $ id } { quote_delivery_date } ) ; $ ignore { $ field } = 1 ;
my $ field = 'quote_active_date' ; $ preferred_title { quote_active_date } = 'Active Date' ; $ readonly { $ field } = 'READONLY' ; $ print_box_content_rows . = & common_min_form_input ( $ field , $ db { $ table } { $ id } { quote_active_date } ) ; $ ignore { $ field } = 1 ;
my $ field = 'quote_type' ; $ preferred_title { quote_type } = 'Type' ; $ readonly { $ field } = 'READONLY' ; $ print_box_content_rows . = & common_min_form_input ( $ field , $ quote_type { $ id } ) ; $ ignore { $ field } = 1 ;
my $ field = 'quote_date_from' ; $ preferred_title { quote_date_from } = 'EW From' ; $ readonly { $ field } = 'READONLY' ; $ print_box_content_rows . = & common_min_form_input ( $ field , $ db { $ table } { $ id } { quote_ew_date_from } ) ; $ ignore { $ field } = 1 ;
my $ field = 'quote_date_to' ; $ preferred_title { quote_date_to } = 'EW To' ; $ readonly { $ field } = 'READONLY' ; $ print_box_content_rows . = & common_min_form_input ( $ field , $ db { $ table } { $ id } { quote_ew_date_to } ) ; $ ignore { $ field } = 1 ;
my $ field = 'quote_linked_vpu_sn' ; $ preferred_title { quote_linked_vpu_sn } = 'Linked VPU SerialNr' ; $ readonly { $ field } = 'READONLY' ; $ print_box_content_rows . = & common_min_form_input ( $ field , $ linked_sn { $ db { $ table } { $ id } { serial_nr } } ) ; $ ignore { $ field } = 1 ; # &common_debug("SN - $val [$db{$table}{$id}{camera_nr},$quote_nr{$id},$id]");
my $ field = 'quote_linked_vpu_cn' ; $ preferred_title { quote_linked_vpu_cn } = 'Linked VPU CameraNr' ; $ readonly { $ field } = 'READONLY' ; $ print_box_content_rows . = & common_min_form_input ( $ field , $ linked_cn { $ db { $ table } { $ id } { serial_nr } } ) ; $ ignore { $ field } = 1 ; # &common_debug("CN - $val [$db{$table}{$id}{camera_nr},$quote_nr{$id},$id]");
$ print_box_content_rows . = & common_min_box_foot ;
}
}
$ print_box_content_rows . = & common_min_box_top ( 'picture' , 'Uploads' , $ box_right_bg , $ box_icon , 'camera-uploads-box' ) ;
$ print_box_content_rows . = qq~<div class="row"><div class="col-md-12"> </div></div><div class="row">~ ;
for ( 1 .. 3 ) {
my $ uploads = & common_get_field_uploads ( $ id , "camera_$_" , 'id' ) ;
if ( $ uploads ) {
$ print_box_content_rows . = qq~<div class="col-md-6" id="logos">$uploads</div>~ ;
} else {
$ print_box_content_rows . = qq ~ < div class = "col-md-6" > < div class = "form-group" >
< label for = "imageInputFile" > Attach Upload $ _ </label>
< input type = "file" id = "imageInputFile" name = 'iattachcamera_$_' tabindex = '$tindex' >
< p class = "help-block" > Upload file from PC . </p>
</div> </div> ~ ;
}
}
$ print_box_content_rows . = qq~</div>~ ;
$ print_box_content_rows . = & common_min_box_foot ;
#----------------------------------------------------------------- New box --------------------------------------
$ print_box_content_rows . = & common_min_box_top ( 'wrench' , 'Replacement' , $ box_right_bg , $ box_icon , 'camera-replacement-box' ) ;
# $print_box_content_rows .= qq~<div class="row"><div class="col-md-12"> </div></div><div class="row">~;
$ fcol = 4 ;
$ print_box_content_rows . = & common_min_form_datepicker ( 'replacement_date' , $ db { $ table } { $ id } { replacement_date } ) ;
$ print_box_content_rows . = & common_min_form_input ( 'replacement_camera_nr' , $ db { $ table } { $ id } { replacement_camera_nr } ) ;
# $print_box_content_rows .= qq~</div>~;
$ print_box_content_rows . = & common_min_box_foot ;
} #----------------------------------------------------------------------------------------
sub get_uploads {
my ( $ id , $ type ) = @ _ ;
unless ( $ id and $ type ) { return ( ) ; }
my $ gallery = '' ; my % gallery = ( ) ;
my $ field = $ type ;
if ( $ db { $ table } { $ id } { $ field } ) {
$ tooltip = qq( data-toggle="tooltip" data-placement="top" title="$type" data-original-title="$type" ) ;
$ gallery { $ type } . = qq( <li id="$type-$db{$table}{$id}{$field}" class="thumbnail" $tooltip>
< a style = "background:url(/mediastorage/trackusers/$id/$db{$table}{$id}{case_nr}/$db{$table}{$id}{$field})" title = "$type" href = "/mediastorage/trackusers/$id/$db{$table}{$id}{case_nr}/$db{$table}{$id}{$field}" > < img class = "grayscale" src = "/mediastorage/trackusers/$id/$db{$table}{$id}{case_nr}/$db{$table}{$id}{$field}" alt = "$type" style = "position:relative;max-height:100%;" > </a>
</li> ) ;
}
if ( $ gallery { $ type } ) { $ gallery = '<ul class="thumbnails gallery">' . $ gallery { $ type } . '</ul>' ; }
return ( $ gallery ) ;
} #------------------------------------------------------------------------------------------
sub page_opts {
our $ glyphicon = 'list' ;
our $ lcpage = 'camera' ;
& common_page_name ;
our $ table = 'cameras' ;
$ page_title = 'Camera' ;
$ alert = qq~<div id="alertbar"></div>~ ;
& common_min_add_extras unless $ pixellot_limit { $ username } or $ events_limit { $ username } ;
} #-------------------------------------------------------------------------------
sub report_screen {
our $ lcol = 3 ;
our $ fcol = 5 ;
# my ($set_year,$set_month,$set_day) = Add_Delta_Days($now_year,$now_mm,$now_dd,-365); # 6 weeks back
# $set_month = sprintf("%02s", $set_month) ;
# $set_day = sprintf("%02s", $set_day) ;
$ print_box_content_rows . = & common_min_forms_start ( 'report' ) ;
& common_camera_opts ;
& common_min_select_opts ( 'camera_system_id' , 'camera_systems' , 'code' , $ i { camera_system_id } , '' ) ;
& common_min_select_opts ( 'client_id' , 'customers' , 'name' , $ i { client_id } , '' ) ;
$ print_box_content_rows . = & common_min_form_select ( 'client_id' , $ i { client_id } ) ;
$ print_box_content_rows . = & common_min_form_input ( 'serial_nr' , '' ) ;
$ print_box_content_rows . = & common_min_form_select ( 'camera_system_id' , $ i { camera_system_id } ) ;
$ print_box_content_rows . = & common_min_form_datepicker ( 'date_received_from' , '' ) ;
$ print_box_content_rows . = & common_min_form_datepicker ( 'date_received_to' , '' ) ;
$ print_box_content_rows . = & common_min_form_select ( 'stock' , '' ) ;
& common_min_select_opts ( 'quote_nr' , 'cameras' , 'quote_nr' , '' , '' , '' , 'quote_nr>0' , '' , '' , 'DISTINCT(quote_nr)' ) ;
$ print_box_content_rows . = & common_min_forms_end ( '' , '' , 'report' ) ;
& common_min_search_screen ;
} #-------------------------------------------------------------------------------
use common ;
use report ;
use xlsxcreator ;
use today ;
1 ;