~ ;
# if ($checkit{$exfield} == 1) { $checked = 'CHECKED'; } elsif (($excl_tick{$cnt}) and ($iaction eq 'add')) { $checked = 'CHECKED'; } else { $checked = ''; }
# &set_check_boxes_checked($id,$rcnt,"excl",$suffix);
my $cntcamloop=1;
for (1 .. $rcnt) {
my $q_nr = $db{$table}{$id}{quote_nr} ;
# next if substr($sel_cam_nr{$camera_details{$q_nr}{$_}{"$_$suffix"}{id}},0,3) eq 'VPU' ;
my $a = "$_$suffix" ;
# &common_debug("rcnt : $_ , q_nr : $q_nr , camera_details : $camera_details{$q_nr}{$_}{$a}{id}") ;
$cam_display_style = '' ; $cam_display_plus_btn = '' ;
# unless ($_==1 or $db{$table}{$id}{"camera_nr_$_$suffix"}) {
unless ($_==1 or $camera_details{$q_nr}{$_}{"$_$suffix"}{id}) {
$cam_display_style = qq~style='display:none;'~ ;
$trigger_jquery_raw .= qq~ \$("#btn_$_$suffix").click(function () {
\$("#$_$suffix").toggle();
\$("#btn_$_$suffix").hide();
var v = $_ + 1 ;
\$("#btn_"+v+"$suffix").show();
});~ ;
if ($_>$cntcamloop) { $cam_display_butt = qq~display:none;~ ; } else { $cam_display_butt = '' ; }
$cam_display_plus_btn = qq~
~ ;
# my $cam_id = $db{$table}{$id}{"camera_nr_$_$suffix"} ;
# $add_form_fields .= qq~
~ ;
#----------------------------------------------------------------------------------------------------
$field = "excl_$_$suffix" ; $fcol=1 ;
my $val = $camera_details{$q_nr}{$_}{"$_$suffix"}{quote_cam_excl} ;
# if ($checkit{$field} == 1) { $checked = 'CHECKED'; } elsif ($_!=1 and $iaction eq 'add') { $checked = 'CHECKED'; } else { $checked = ''; }
if ($val==1) { $checked = 'CHECKED'; } elsif ($iaction eq 'add') { $checked = 'CHECKED'; } elsif ($val eq '0') { $checked = ''; } else { $checked = 'CHECKED'; }
# &common_debug("$field : [$val] [$checked] [$_$suffix]") ;
$label{$field} = 1 ;
$excl_on_change{$field} = 1 ;
$add_form_fields .= &common_min_form_checkbox_col($field,$val,$checked) ;
#----------------------------------------------------------------------------------------------------
my $field = "camera_nr_$_$suffix" ; $fcol=2 ;
$allow_deselect{$field} = 1 ;
$preferred_placeholder{$field} = "Camera Nr $_" ;
# my $val = $db{$table}{$id}{$field} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
$val = $camera_details{$q_nr}{$_}{"$_$suffix"}{id} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
# $add_form_fields .= &common_min_form_input_col($field,$val) ;
$excl_on_change{$field} = 1 ;
$opts{$field} = $opts_on_edit{$field} if $opts_on_edit{$field} and $db{quotes}{$i{id}}{max_cams} > 50 ; #and $username eq 'rory' ; # overwrite if selected and max_cams exceeded
$add_form_fields .= &common_min_form_select_col($field,$val) ;
my $abrv_cam_system = substr($sel_cam_nr{$val},0,3);
# next if $abrv_cam_system eq 'VPU' ;
# &common_debug("abrv_cam_system=$abrv_cam_system, abrv_prev_cam_system=$abrv_prev_cam_system, prev_cam_nr=$prev_cam_nr, link to: c_excl_$_\_camera_details") ;
# if ($abrv_cam_system eq 'VPU' and ($abrv_prev_cam_system eq 'S1' or $abrv_prev_cam_system_other eq 'Prime' or $abrv_prev_cam_system_other eq 'Coach')) {
# if ($abrv_cam_system eq 'VPU' and ($abrv_prev_cam_system eq 'S1' or $abrv_prev_cam_system eq 'S2' or $abrv_prev_cam_system_other eq 'Prime' or $abrv_prev_cam_system_other eq 'Coach')) {
if ($linked_vpu{$val}) {
$trigger_jquery .= qq~\$("#c_excl_$_\_camera_details").append("
");\$('[data-toggle="tooltip"]').tooltip({html:true}) ;~;
}
# }
$abrv_prev_cam_system = substr($abrv_cam_system,0,2);
$abrv_prev_cam_system_other = substr($abrv_cam_system,0,5);
$prev_cam_nr = $sel_cam_nr{$val} ;
#----------------------------------------------------------------------------------------------------
# # my $field = "item_code_$_$suffix" ; $fcol=1 ;
# # $preferred_placeholder{$field} = "Item Code $_" ;
# # my $val = $db{$table}{$id}{$field} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
# # $add_form_fields .= &common_min_form_input_col($field,$val) ;
#----------------------------------------------------------------------------------------------------
my $field = "description_$_$suffix" ; $fcol=1 ;
$preferred_placeholder{$field} = "Description $_" ;
# my $val = $db{$table}{$id}{$field} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
my $val = $camera_details{$q_nr}{$_}{"$_$suffix"}{quote_cam_desc} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
$excl_on_change{$field} = 1 ;
$add_form_fields .= &common_min_form_input_col($field,$val) ;
#----------------------------------------------------------------------------------------------------
# my $field = "qty_$_$suffix" ; $fcol=1 ;
# $preferred_placeholder{$field} = "Qty $_" ;
# my $val = $db{$table}{$id}{$field} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
# $type = 'hidden' ; $add_form_fields .= &common_min_form_input_col($field,$val) ; $type = '' ;
#----------------------------------------------------------------------------------------------------
my $field = "serial_nr_$_$suffix" ; $fcol=2 ;
$preferred_placeholder{$field} = "Serial Nr $_" ;
# my $val = $db{$table}{$id}{$field} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
my $val = $camera_details{$q_nr}{$_}{"$_$suffix"}{serial_nr} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
$excl_on_change{$field} = 1 ;
$add_form_fields .= &common_min_form_input_col($field,$val) ;
#----------------------------------------------------------------------------------------------------
my $field = "ref_$_$suffix" ; $fcol=1 ;
$preferred_placeholder{$field} = "Ref $_" ;
# my $val = $db{$table}{$id}{$field} ;
my $val = $camera_details{$q_nr}{$_}{"$_$suffix"}{quote_ref} ;
$excl_on_change{$field} = 1 ;
$add_form_fields .= &common_min_form_input_col($field,$val) ;
# &common_debug("2. $field : [$q_nr] [$_] [$_$suffix] [$val]") if $val;
#----------------------------------------------------------------------------------------------------
my $field = "delivery_date_$_$suffix" ; $fcol=1 ;
$preferred_placeholder{$field} = "Delivery Date $_" ;
# my $val = $db{$table}{$id}{$field} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
my $val = $camera_details{$q_nr}{$_}{"$_$suffix"}{quote_delivery_date} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
$excl_on_change{$field} = 1 ;
$add_form_fields .= &common_min_form_datepicker_col($field,$val) ;
#----------------------------------------------------------------------------------------------------
my $field = "active_date_$_$suffix" ; $fcol=1 ;
$preferred_placeholder{$field} = "Active Date $_" ;
# my $val = $db{$table}{$id}{$field} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
my $val = $camera_details{$q_nr}{$_}{"$_$suffix"}{quote_active_date} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
$add_form_fields .= &common_min_form_datepicker_col($field,$val) ;
#----------------------------------------------------------------------------------------------------
my $field = "ew_date_from_$_$suffix" ; $fcol=1 ;
$preferred_placeholder{$field} = "E/W Date From $_" ;
# my $val = $db{$table}{$id}{$field} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
my $val = $camera_details{$q_nr}{$_}{"$_$suffix"}{quote_ew_date_from} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
$excl_on_change{$field} = 1 ;
$add_form_fields .= &common_min_form_datepicker_col($field,$val) ;
#----------------------------------------------------------------------------------------------------
my $field = "ew_date_to_$_$suffix" ; $fcol=1 ;
$preferred_placeholder{$field} = "E/W Date To $_" ;
# my $val = $db{$table}{$id}{$field} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
my $val = $camera_details{$q_nr}{$_}{"$_$suffix"}{quote_ew_date_to} ; # if ($_==1) { $readonly{$field} = 'READONLY' ; }
$excl_on_change{$field} = 1 ;
$add_form_fields .= &common_min_form_datepicker_col($field,$val) ;
#----------------------------------------------------------------------------------------------------
# my $ew_pdf_butt = '' ; if ($username eq 'rory' or $username eq 'handre') { $ew_pdf_butt = qq~
~; }
# my $ew_pdf_butt = '' ; if ($camera_details{$q_nr}{$_}{"$_$suffix"}{quote_ew_date_from} and $camera_details{$q_nr}{$_}{"$_$suffix"}{quote_ew_date_to} and uc substr($camera_details{$q_nr}{$_}{"$_$suffix"}{camera_nr},0,3) ne 'VPU') { $ew_pdf_butt = qq~
~; }
my $ew_pdf_butt = '' ; if ($camera_details{$q_nr}{$_}{"$_$suffix"}{quote_ew_date_from} and $camera_details{$q_nr}{$_}{"$_$suffix"}{quote_ew_date_to} and (uc substr($camera_details{$q_nr}{$_}{"$_$suffix"}{camera_nr},0,2) eq 'S1' or uc substr($camera_details{$q_nr}{$_}{"$_$suffix"}{camera_nr},0,5) eq 'SCORE')) { $ew_pdf_butt = qq~
~; }
#----------------------------------------------------------------------------------------------------
$add_form_fields .= qq~
$ew_pdf_butt
~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
}
$add_form_fields .= qq~
~ ;
&tab_content_box($sec_name,$sec_col);
$cam_box_icon = '' ;
# --------------- END CAMERA DETAILS ----------------------------------------------------------------------------------------------------------------
}
if ($tab==7) { # Invoice Details
# --------------- START INVOICE DETAILS --------------------------------------------------------------------------------------------------------
my $sec = '_invoice_details' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
$ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
if ($ret) { return ; }
$lcol = 2 ;
$fcol = 5 ;
$add_form_fields = '' ;
$add_form_fields .= &common_min_form_input('invoice_nr',$db{$table}{$id}{invoice_nr},'') ;
my $checked = 'CHECKED' if $db{$table}{$id}{annual_invoice} ;
$add_form_fields .= &common_min_form_checkbox('annual_invoice',$db{$table}{$id}{annual_invoice},$checked) ;
# if ($db{$table}{$id}{invoice_date} eq '' or $db{$table}{$id}{invoice_date} eq '0000-00-00') { $db{$table}{$id}{invoice_date} = $now_ccyy_mm_dd ; }
$add_form_fields .= &common_min_form_datepicker('invoice_date',$db{$table}{$id}{invoice_date}) ;
$add_form_fields .= &common_min_form_input('annual_invoice_2',$db{$table}{$id}{annual_invoice_2},'') ;
$add_form_fields .= &common_min_form_input('annual_invoice_3',$db{$table}{$id}{annual_invoice_3},'') ;
# $add_form_fields .= qq~
~ ;
&tab_content_box($sec_name,$sec_col);
# --------------- END INVOICE DETAILS ----------------------------------------------------------------------------------------------------------
}
# if ($tab==7) { # Extended Warranty
# # --------------- START EXTENDED WARRANTY --------------------------------------------------------------------------------------------------------
# my $sec = '_extended_warranty' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
# $ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
# if ($ret) { return ; }
# $lcol = 2 ;
# $fcol = 3 ;
# $add_form_fields = '' ;
# if (($db{$table}{$id}{date_from} eq '') or ($db{$table}{$id}{date_from} eq '0000-00-00')) { $db{$table}{$id}{date_from} = $now_ccyy_mm_dd ; }
# $add_form_fields .= &common_min_form_datepicker('date_from',$db{$table}{$id}{date_from}) ;
# if (($db{$table}{$id}{date_to} eq '') or ($db{$table}{$id}{date_to} eq '0000-00-00')) { $db{$table}{$id}{date_to} = $now_ccyy_mm_dd ; }
# $add_form_fields .= &common_min_form_datepicker('date_to',$db{$table}{$id}{date_to}) ;
# &tab_content_box($sec_name,$sec_col);
# # --------------- END EXTENDED WARRANTY ----------------------------------------------------------------------------------------------------------
# }
# if ($tab==8) { # Rental
# # --------------- START RENTAL --------------------------------------------------------------------------------------------------------
# my $sec = '_rental' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
# $ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
# if ($ret) { return ; }
# $lcol = 2 ;
# $fcol = 3 ;
# $add_form_fields = '' ;
# # our %sec_cnt = ('_cost' => "1-Cost");
# # my $sec = '_rental' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
# # $ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
# # if ($ret) { return ; }
# # foreach (sort keys %sec_cnt) {
# # my @parts = split(/\-/,$sec_cnt{$_}) ;
# # $add_form_fields .= qq~
~ ;
# # &tab_build_qt_col_headers("$sec$_");
# # &build_cost_form($id,$tab,$parts[0],"$sec$_");
# # }
# &tab_content_box($sec_name,$sec_col);
# # --------------- END RENTAL ----------------------------------------------------------------------------------------------------------
# }
if ($tab==8) { # Document Uploads
# --------------- START DOCUMENT UPLOADS ----------------------------------------------------------------------------------------------------------------
$add_form_fields = '' ;
my $sec = '_document_uploads' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
$ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
if ($ret) { return ; }
$add_form_fields = '' ;
my @docs = ('Signed Quote','PO','Other 1','SLA','T&Cs','Other 2','Photos','Delivery Note','Other 3');
$add_form_fields .= qq~
~ ;
foreach (@docs) {
my $doc = lc $_ ; $doc =~ s/ /\_/ ; $doc =~ s/&/\_/ ;
$costing_uploads = &common_get_field_uploads($id,"costing_$doc",'id') ;
if ($costing_uploads) {
$add_form_fields .= qq~
$costing_uploads
~;
} else {
$add_form_fields .= qq~
~;
}
}
$add_form_fields .= qq~
~ ;
&tab_content_box($sec_name,$sec_col);
# --------------- END DOCUMENT UPLOADS ----------------------------------------------------------------------------------------------------------------
}
} #------------------------------------------------------------------------------------
sub tab_costing_select_opts {
my ($table,$dispfield,$where,$sec_) = @_ ;
&db_min_ro($table,'*',$where,'','') ;
my @b = (
"_costing_additional_services",
"_costing_game_breakdown_analytics",
"_costing_hardware_add_ons",
"_costing_installation_kits",
"_costing_match_credits",
"_costing_other",
"_costing_rental",
"_costing_software_licence",
"_costing_systems" ) ;
foreach my $suf (@b){
$col_name = "item" . "$suf" ;
$cnt = 0 ;
if($db{quotes_min}{$i{id}}{$col_name}){
foreach my $col_input (split(";", $db{quotes_min}{$i{id}}{$col_name})){
$cnt++ ;
$saved_field{"item"}{$suf}{$cnt} = $col_input ;
# &common_debug("$aa/$suffix : $cc") ;
}
}
}
foreach my $id (keys %{$db{$table}}) {
foreach (sort keys %sec_cnt) {
$_k = substr($_,1) ; $k = substr($_,2) ;
# &common_debug("tab_select_opts : $db{$table}{$id}{type} ne $k") ;
unless ($db{$table}{$id}{type} eq $k) { next ; }
my @parts = split(/\-/,$sec_cnt{$_}) ;
for my $p_ (1 .. $parts[0]) { # item_1_costing_systems
my $field = "$p_$sec_$_k" ; #my $ucf_field = ucfirst $field ; my $chosen_field = ucfirst $field . '_chosen' ;
# $opts{"item_$p_$sec_$_k"} .= qq~
~ ;
my $field_2 = "$sec_$_k" ;
# my $saved_val = $db{quotes}{$i{id}}{"item_$field"} ;
my $saved_val = $saved_field{"item"}{$field_2}{$p_} ;
if ($saved_val) { my @valarr = split(/\:/,$saved_val) ; $saved_val = $valarr[0] ; }
if ($saved_val eq $id) { $selected = 'SELECTED' ; } else { $selected = '' ; }
# $opts{"item_$field"} .= qq~
~ ;
$opts{"item_$field"} .= qq~
~ ;
# if ($field eq '3_costing_software_licence' or $field eq '2_costing_game_breakdown_analytics') {
if ($field eq '2_costing_systems' or $field eq '3_costing_systems' or $field eq '3_costing_software_licence' or $field eq '2_costing_game_breakdown_analytics') {
$item_type = 'input' ;
} else {
$item_type = 'select' ;
}
unless ($got{$field}) {
$preferred_title{"item_$field"} = &common_min_print_field("item_$p_$_k") ;
if ($item_type eq 'select') { $trigger_jquery .= qq~\$("#selectItem_$field\_chosen").css( "width", "96%" )
~ ; } $got{$field} = 1 ;
$trigger_jquery_raw .= qq~\$("#$item_type\Item_$field, #selectDiscount").change(function() {
calcCosting$field(1) ;
});
~;
$trigger_jquery_raw .= qq~\$("#inputQty_$field, #inputUsd_amnt_$field").change(function() {
calcCosting$field(0) ;
});
~;$trigger_jquery_raw .= qq~function calcCosting$field(b)
{
if (b==1) { \$("#inputUsd_amnt_$field").val(''); }
var excl = \$("#checkboxExcl_$field");
var item = \$("#$item_type\Item_$field");
var usd = \$("#inputUsd_amnt_$field");
var conv = \$("#inputCurr_amnt_$field");
var qty = \$("#inputQty_$field");
var ttl = \$("#inputItem_ttl_$field");
var vat = \$("#checkboxVat_$field");
// console.log('DISCOUNT - item: '+item.val()+', usd: '+usd.val()) ;
if (!item.val()) {
excl.prop("checked", true);
usd.val("");
conv.val("");
qty.val("");
ttl.val("");
vat.val("");
// return ;
}
calcCosting(excl,item,qty,usd,conv,vat,ttl) ;
}~;
}
}
}
}
} #------------------------------------------------------------------------------------------
sub tab_camera_details_select_opts {
my ($table,$dispfield,$where,$suffix,$rcnt) = @_ ;
&db_min_ro('customers','id,name','','','') ;
foreach my $id (keys %{$db{customers}}) { $customers_name{$id} = $db{customers}{$id}{name} ; }
&db_min_ro('camera_systems','id,name','','','') ;
foreach my $id (keys %{$db{camera_systems}}) { $camera_system{$id} = $db{camera_systems}{$id}{name} ; }
# my $add_quote_fields = '' ; my $sql_or_where = '' ; my @sqlorwhere = () ;
# for (1 .. $rcnt) {
# $add_quote_fields .= ",quotes.camera_nr_$_$suffix" ;
# push @sqlorwhere, "quotes.camera_nr_$_$suffix>0" ;
# }
# $sql_or_where = join(" OR ",@sqlorwhere) ;
# &db_min_ro("$table,quotes","quotes.id,$table.id$add_quote_fields",$sql_or_where,'','') ;
# foreach my $id (keys %{$db{"$table,quotes"}}) {
# # $db{quotes}{$i{id}}{"camera_nr_$field"}
# for (1 .. 10) {
# my $field = $db{"$table,quotes"}{$id}{"camera_nr_$_$suffix"} ;
# if ($field) {
# # $camera_exists_on_quote{$field} = $id ;
# $exclude_camera_from_list{$field} = 1 ;
# # &common_debug("exclude_camera_from_list : $field") ;
# }
# }
# }
our %linked_vpu = () ; our %vpu_serial_nr = () ; our %vpu_camera_nr = () ; my $cnt_sel=0; my %done_quote_cam_num = () ; my %done_field = () ;
&db_min_ro($table,'id,camera_nr,serial_nr,quote_nr',"camera_nr LIKE 'vpu%'",'','') ;
foreach (keys %{$db{$table}}) {
$vpu_serial_nr{$_} = $db{$table}{$_}{serial_nr} ;
$vpu_camera_nr{$_} = $db{$table}{$_}{camera_nr} ;
my $qnr = $db{$table}{$_}{quote_nr} ;
if ($qnr eq $db{quotes}{$i{id}}{quote_nr}) {
$cnt_cams{$qnr}++;
# &common_debug("$cnt_cams{$qnr}. $qnr eq $db{quotes}{$i{id}}{quote_nr} ") if $qnr == 1261 ;
}
}
&db_min_ro($table,'*',$where,'','') ;
LOOP1: foreach my $id (sort keys %{$db{$table}}) {
# &common_debug("1. LOOP1 $db{$table}{$id}{quote_nr} and $db{$table}{$id}{quote_nr} ne $db{quotes}{$i{id}}{quote_nr}") if $db{$table}{$id}{quote_nr} == 1261 ;
if ($db{$table}{$id}{quote_nr} and $db{$table}{$id}{quote_nr} ne $db{quotes}{$i{id}}{quote_nr}) { next ; }
# &common_debug("2. LOOP1 event_system_id=$db{$table}{$id}{event_system_id} ") if $db{$table}{$id}{quote_nr} == 1261 ;
if ($db{$table}{$id}{event_system_id}) { $skip_event_linked_vpu{$db{$table}{$id}{event_linked_vpu}} = 1 ; next ; } # skip as it's being used for events
# &common_debug("3. LOOP1 skip_event_linked_vpu=$skip_event_linked_vpu{$db{$table}{$id}{serial_nr}}") if $db{$table}{$id}{quote_nr} == 1261 ;
if ($skip_event_linked_vpu{$db{$table}{$id}{serial_nr}}) { next ; } # skip as it's being used for events
# &common_debug("LOOP1 rcnt=$rcnt") if $db{$table}{$id}{quote_nr} == 1261 ;
my $qnr = $db{$table}{$id}{quote_nr} ;
if ($qnr eq $db{quotes}{$i{id}}{quote_nr}) {
$cnt_cams{$qnr}++;
# &common_debug("$cnt_cams{$qnr}. $qnr eq $db{quotes}{$i{id}}{quote_nr} ") if $qnr == 1261 ;
}
# LOOP2: for (1 .. $rcnt) {
# if ($qnr eq $db{quotes}{$i{id}}{quote_nr} and $db{$table}{$id}{quote_cam_num} eq $_) {
# $cnt_sel++ ;
# # &common_debug("$cnt_sel. $qnr eq $db{quotes}{$i{id}}{quote_nr} and $db{$table}{$id}{quote_cam_num} eq $_") if $qnr == 1261 ;
# }
# }
}
$max_cams = $cnt_cams{$db{quotes}{$i{id}}{quote_nr}} if $cnt_cams{$db{quotes}{$i{id}}{quote_nr}} > $max_cams && $db{quotes}{$i{id}}{quote_nr} ;
&common_debug("$cnt_cams{$db{quotes}{$i{id}}{quote_nr}} [max_cams = $max_cams]") ;
# print "\n cnt_sel : $cnt_sel \n" ;
LOOP1: foreach my $id (sort keys %{$db{$table}}) {
# &common_debug("exclude_camera_from_list [$exclude_camera_from_list{$id}] : [$table] : $id") ;
if ($db{$table}{$id}{quote_nr} and $db{$table}{$id}{quote_nr} ne $db{quotes}{$i{id}}{quote_nr}) { next ; }
if ($db{$table}{$id}{event_system_id}) { $skip_event_linked_vpu{$db{$table}{$id}{event_linked_vpu}} = 1 ; next ; } # skip as it's being used for events
if ($skip_event_linked_vpu{$db{$table}{$id}{serial_nr}}) { next ; } # skip as it's being used for events
my ($camtype,$camcnt) = split(/\-/,$db{$table}{$id}{$dispfield}) ;
$camera_system_count{$db{$table}{$id}{quote_nr}}{$camtype}++ if $db{$table}{$id}{quote_nr} and $camtype ;
$linked_vpu{$id} = $db{$table}{$id}{linked_vpu_id} ;
# &common_debug("[cam_qtys] quote_nr : [$db{$table}{$id}{quote_nr}] [$db{$table}{$id}{$dispfield}] [$camera_system_count{$db{$table}{$id}{quote_nr}}{$db{$table}{$id}{$dispfield}}]") if $db{$table}{$id}{quote_nr} ;
my $qnr = $db{$table}{$id}{quote_nr} ;
# LOOP2: for (1 .. $rcnt) {
LOOP2: for (1 .. $max_cams) {
my $field = "$_$suffix" ;
# if ($exclude_camera_from_list{$id} and $db{quotes}{$i{id}}{"camera_nr_$_$suffix"} ne $id) { next LOOP2; ; }
# if ($exclude_camera_from_list{$id} and $db{quotes}{$i{id}}{"camera_nr_$_$suffix"} ne $id) { next LOOP1; ; }
# my $quote_camera_id = $db{quotes}{$i{id}}{"camera_nr_$field"} ; if ($quote_camera_id) { my @valarr = split(/\:/,$quote_camera_id) ; $quote_camera_id = $valarr[0] ; }
# # my $abrv_cam_system = substr($db{$table}{$id}{camera_nr},0,3);
# next if $seen_cnt{$_} ;
# $seen_cnt{$_} = 1 ;
# next unless $qnr ;
my $selected = '' ;
# if ($saved_val eq $id) { $selected = 'SELECTED' ; $sel_cam_nr{$id} = $db{$table}{$id}{camera_nr}; } else { $selected = '' ; }
# if ($db{$table}{$id}{quote_nr} eq $db{quotes}{$i{id}}{quote_nr} and $quote_camera_id eq $id) {
# if ($qnr == 1261) {
# &common_debug("if ($qnr eq $db{quotes}{$i{id}}{quote_nr} and $_ <= $cnt_sel and not $done_quote_cam_num{$db{$table}{$id}{quote_cam_num}} and not $done_field{$field}) { ") ;
# }
# if ($qnr eq $db{quotes}{$i{id}}{quote_nr} and $_ <= $cnt_sel and not $done_quote_cam_num{$db{$table}{$id}{quote_cam_num}} and not $done_field{$field}) {
if ($qnr eq $db{quotes}{$i{id}}{quote_nr} and $_ <= $max_cams and not $done_quote_cam_num{$db{$table}{$id}{quote_cam_num}} and not $done_field{$field}) {
$done_quote_cam_num{$db{$table}{$id}{quote_cam_num}} = 1 ; $done_field{$field} = 1 ;
$selected = 'SELECTED' ; $sel_cam_nr{$id} = $db{$table}{$id}{camera_nr};
# &common_debug("1. quote_ref : [$db{$table}{$id}{quote_cam_num}] [$field] [$db{$table}{$id}{quote_ref}] [$_. max_cams=$max_cams]");
$camera_details{$qnr}{$_}{$field}{quote_delivery_date} = $db{$table}{$id}{quote_delivery_date} ;
$camera_details{$qnr}{$_}{$field}{quote_active_date} = $db{$table}{$id}{quote_active_date} ;
$camera_details{$qnr}{$_}{$field}{quote_ew_date_from} = $db{$table}{$id}{quote_ew_date_from} ;
$camera_details{$qnr}{$_}{$field}{quote_ew_date_to} = $db{$table}{$id}{quote_ew_date_to} ;
$camera_details{$qnr}{$_}{$field}{quote_cam_desc} = $db{$table}{$id}{quote_cam_desc} ;
$camera_details{$qnr}{$_}{$field}{quote_cam_excl} = $db{$table}{$id}{quote_cam_excl} ;
$camera_details{$qnr}{$_}{$field}{quote_cam_num} = $db{$table}{$id}{quote_cam_num} ;
$camera_details{$qnr}{$_}{$field}{quote_nr} = $qnr ;
$camera_details{$qnr}{$_}{$field}{quote_ref} = $db{$table}{$id}{quote_ref} ;
$camera_details{$qnr}{$_}{$field}{serial_nr} = $db{$table}{$id}{serial_nr} ;
$camera_details{$qnr}{$_}{$field}{camera_nr} = $db{$table}{$id}{camera_nr} ;
$camera_details{$qnr}{$_}{$field}{id} = $id ;
} elsif ($qnr and $db{$table}{$id}{quote_cam_num}) { # camera alread linked to a quote
next ;
}
# print "\n $qnr eq $db{quotes}{$i{id}}{quote_nr} and $db{$table}{$id}{quote_cam_num} and $_ <= $cnt_sel , field : $field" ;
# &common_debug("tab_camera_details_select_opts [$field] : [$saved_val eq $id] : $selected") ;
my $display_field = $db{$table}{$id}{$dispfield} ; my ($system,$camcnt) = split(/\-/,$display_field) ; $camcnt+=0; $display_field .= " [$camcnt] [$db{$table}{$id}{serial_nr}]" ; # $display_field =~ s/-//g ;
# my $opts = qq~
~ ;
my $opts = qq~
~ ;
$opts_on_edit{"camera_nr_$field"} = $opts if $selected ;
$opts{"camera_nr_$field"} .= $opts ;
# $debugcnt++ ; &common_debug("$debugcnt. camera_nr_$field [$display_field] : [$iaction eq 'edit' and $camera_details{$q_nr}{$_}{$field}{id}] : $selected : cam camera_nr=$db{$table}{$id}{camera_nr} [max_cams=$db{quotes}{$i{id}}{max_cams}]") ;
# # if ($username eq 'rory' and $iaction eq 'edit' and $db{quotes}{$i{id}}{quote_nr} and $db{quotes}{$i{id}}{max_cams} > 25) {
# if ($username eq 'rory' and $iaction eq 'edit' and $camera_details{$q_nr}{$_}{$field}{id} and $db{quotes}{$i{id}}{max_cams} > 25) {
# $opts_single{"camera_nr_$field"} = $opts if $selected ;
# $debugcnt++ ; &common_debug("$debugcnt. camera_nr_$field [$display_field] : [$username eq 'rory' and $iaction eq 'edit' and $camera_details{$q_nr}{$_}{$field}{id}] : $selected : cam camera_nr=$db{$table}{$id}{camera_nr} [max_cams=$db{quotes}{$i{id}}{max_cams}]") if $selected ;
# } else {
# $opts{"camera_nr_$field"} .= $opts ;
# $debugcnt++ ; &common_debug("NO *** $debugcnt. *** camera_nr_$field [$display_field] : [$username eq 'rory' and $iaction eq 'edit' and $camera_details{$q_nr}{$_}{$field}{id}] : $selected : cam camera_nr=$db{$table}{$id}{camera_nr} [max_cams=$db{quotes}{$i{id}}{max_cams}]") ;
# }
unless ($got{$field}) {
# $preferred_title{"item_$field"} = &common_min_print_field("item_$p_$_k") ;
$trigger_jquery .= qq~\$("#selectCamera_nr_$field\_chosen").css( "width", "96%" );
~ ; $got{$field} = 1 ;
$trigger_jquery_raw .= qq~\$("#selectCamera_nr_$field").change(function() {
dispCamDetails$field('$_') ;
});
~;
$trigger_jquery_raw .= qq~function dispCamDetails$field(f)
{
var excl = \$("#checkboxExcl_$field");
var camnr = \$("#selectCamera_nr_$field");
var itcode = '' ; // var itcode = \$("#inputItem_code_$field");
var desc = \$("#inputDescription_$field");
var qty = \$("#inputQty_$field");
var snr = \$("#inputSerial_nr_$field");
var ddate = \$("#datepickDelivery_date_$field");
var adate = \$("#datepickActive_date_$field");
dispCamDetails(excl,camnr,qty,itcode,desc,snr,ddate,adate,f) ;
}~;
}
}
}
} #------------------------------------------------------------------------------------------
sub tab_customer_select_opts {
my ($table,$dispfield,$where,$field) = @_ ;
&db_min_ro($table,'*',$where,'','') ;
foreach my $id (keys %{$db{$table}}) {
my $saved_val = $db{quotes}{$i{id}}{$field} ;
if ($saved_val) { my @valarr = split(/\:/,$saved_val) ; $saved_val = $valarr[0] ; }
if ($saved_val eq $id) { $selected = 'SELECTED' ; } else { $selected = '' ; }
$opts{$field} .= qq~
~ ;
unless ($got{$field}) {
# $trigger_jquery .= qq~\$("#selectQuote_to_chosen").css( "width", "96%" );
$trigger_jquery .= qq~\$("#selectQuote_to_chosen").css( "width", "100%" );
~ ; $got{$field} = 1 ;
$trigger_jquery_raw .= qq~\$("#selectQuote_to").change(function() {
dispCustomer() ;
});
~;
$trigger_jquery_raw .= qq~function dispCustomer()
{
var custval = \$("#selectQuote_to").val();
var arrP = custval.split(":");
\$("#inputContact_name").val(arrP[1]);
\$("#inputAddress").val(arrP[4]);
\$("#inputEmail").val(arrP[2]);
\$("#inputTel").val(arrP[3]);
}~;
}
}
} #------------------------------------------------------------------------------------------
sub tab_build_terms_headers {
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
} #------------------------------------------------------------------------------------
sub tab_build_terms_fields {
my ($sec,$cnt,$id) = @_ ;
my $exfield = "excl_$cnt\_$sec\s" ;
my $inpfield = "$sec\_$cnt" ;
unless ($db{quote_notes}{1}{$inpfield}) { $checkit{$exfield} = 1 ; }
my $val = ($db{$table}{$id}{$inpfield} && $db{$table}{$id}{$inpfield} ne "-1") ? $db{$table}{$id}{$inpfield} : (($db{$table}{$id}{$inpfield} && $db{$table}{$id}{$inpfield} eq "-1")) ? "" : $db{quote_notes}{1}{$inpfield} ;
$note_display_style = '' ; $note_display_plus_btn = '' ;
# unless ($cnt==1 or $db{quote_notes}{1}{$inpfield}) {
unless ($cnt==1 || $val) {
$note_display_style = qq~style='display:none;'~ ;
$trigger_jquery_raw .= qq~ \$("#btn_$cnt\_$sec").click(function () {
\$("#$cnt\_$sec").toggle();
\$("#btn_$cnt\_$sec").hide();
var v = $cnt + 1 ;
\$("#btn_"+v+"\_$sec").show();
});~ ;
if ($cnt>$cntnoteloop) { $note_display_butt = qq~display:none;~ ; } else { $note_display_butt = '' ; }
$note_display_plus_btn = qq~
~;
} else { $cntnoteloop++ ; }
$add_form_fields .= qq~
~ ;
# $add_form_fields .= qq~
~ ;
# if ($checkit{$exfield} == 1) { $checked = 'CHECKED'; } elsif (($excl_tick{$cnt}) and ($iaction eq 'add')) { $checked = 'CHECKED'; } else { $checked = ''; }
# if ($db{$table}{$id}{$exfield} == 1) { $checked = 'CHECKED'; } else { $checked = ''; }
$sec = "_" . $sec . "s" ;
$col_name = "excl" . "$sec" ;
$counter = 0 ;
# &db_min_ro('quotes_min', "id, excl$sec", "id = $id", '', '') ;
foreach my $col_input (split(/\;/,$db{quotes_min}{$id}{$col_name})) {
$counter++ ;
$saved_field{"excl"}{$sec}{$counter} = $col_input ;
}
if ($saved_field{"excl"}{$sec}{$cnt}) { $checked = 'CHECKED'; } else { $checked = '' ; }
$label{$exfield} = 1 ;
$fcol=1 ;
$add_form_fields .= &common_min_form_checkbox_col($exfield,$checkit{$exfield},$checked) ;
$fcol=6 ;
$input_style{$inpfield} = qq~style='margin-bottom:4px;margin-top:-2px;'~ ; # add spaces between boxes
$add_form_fields .= &common_min_form_input_col($inpfield,$val,'') ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
} #------------------------------------------------------------------------------------
sub tab_build_terms_fields_terms_and_conditions {
my ($sec,$cnt,$id) = @_ ;
my $exfield = "excl_$cnt\_$sec" ;
my $inpfield = "$sec" ;
my $quote_notes_field = "$sec\_$cnt" ;
unless ($db{$table}{$id}{$inpfield}) { $checkit{$exfield} = 1 ; }
if ($db{$table}{$id}{$inpfield}) { $selected{$db{$table}{$id}{$inpfield}} = 'SELECTED';}
$note_display_style = '' ;
unless ($cnt==1 or $db{$table}{$id}{$inpfield}) {
$note_display_style = qq~style='display:none;'~ ;
$trigger_jquery_raw .= qq~ \$("#btn_$cnt\_$sec").click(function () {
\$("#$cnt\_$sec").toggle();
\$("#btn_$cnt\_$sec").hide();
var v = $cnt + 1 ;
\$("#btn_"+v+"\_$sec").show();
});~ ;
if ($cnt>$cntnoteloop) { $note_display_butt = qq~display:none;~ ; } else { $note_display_butt = '' ; }
} else { $cntnoteloop++ ; }
$add_form_fields .= qq~
~ ;
# $add_form_fields .= qq~
~ ;
# if ($checkit{$exfield} == 1) { $checked = 'CHECKED'; } elsif (($excl_tick{$cnt}) and ($iaction eq 'add')) { $checked = 'CHECKED'; } else { $checked = ''; }
$sec_2 = "_" . $sec ;
$col_name = "excl" . "$sec_2" ;
$counter = 0 ;
# &db_min_ro('quotes_min', "id, excl$sec", "id = $id", '', '') ;
foreach my $col_input (split(";", $db{quotes_min}{$id}{$col_name})){
$counter++ ;
$saved_field{"excl"}{$sec_2}{$counter} = $col_input ;
}
if ($saved_field{"excl"}{$sec_2}{$cnt}) { $checked = 'CHECKED'; } else { $checked = ''; }
# if ($db{$table}{$id}{$exfield} == 1) { $checked = 'CHECKED'; } else { $checked = ''; }
$label{$exfield} = 1 ;
$fcol=1 ;
$add_form_fields .= &common_min_form_checkbox_col($exfield,$checkit{$exfield},$checked) ;
$fcol=6 ;
$input_style{$inpfield} = qq~style='margin-bottom:4px;margin-top:-2px;'~ ; # add spaces between boxes
$opts{$inpfield} = "" ;
for (1 .. 5){
$quote_notes_field = "$sec\_$_" ;
next unless $db{quote_notes}{1}{$quote_notes_field} ;
$opts{$inpfield} .= qq() ;
}
$allow_deselect{$inpfield} = 1;
$add_form_fields .= &common_min_form_select_col($inpfield,$db{$table}{$id}{$inpfield},'') ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
} #------------------------------------------------------------------------------------
sub tab_build_qt_right {
my ($id,$tab,$ret) = @_ ;
if ($tab==1) { # Cusotmer Details
# --------------- START CUSOTMER DETAILS --------------------------------------------------------------------------------------------------------
my $sec = '_office_details' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
$ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
if ($ret) { return ; }
$lcol = 2 ;
$add_form_fields = '' ;
$fcol = 9 ;
$textarea_height{notes} = 80 ;
$add_form_fields .= &common_min_form_textarea('notes',$db{$table}{$id}{notes},'') ;
$add_form_fields .= qq~
~ ;
$textarea_height{office_notes} = 80 ;
$add_form_fields .= &common_min_form_textarea('office_notes',$db{$table}{$id}{office_notes},'') ;
$add_form_fields .= qq~
~ ;
&tab_content_box($sec_name,$sec_col);
# --------------- END CUSOTMER DETAILS ----------------------------------------------------------------------------------------------------------
}
if ($tab==7) { # Cusotmer Details
# --------------- START CUSOTMER DETAILS --------------------------------------------------------------------------------------------------------
my $sec = '_invoice_notes' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
$ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
if ($ret) { return ; }
$lcol = 2 ;
$add_form_fields = '' ;
$fcol = 9 ;
# $add_form_fields .= qq~
~ ;
$add_form_fields .= &common_min_form_input('po_nr',$db{$table}{$id}{po_nr},'') ;
$add_form_fields .= &common_min_form_textarea('invoice_notes',$db{$table}{$id}{invoice_notes},'') ;
$add_form_fields .= qq~
~ ;
&tab_content_box($sec_name,$sec_col);
# --------------- END CUSOTMER DETAILS ----------------------------------------------------------------------------------------------------------
}
} #------------------------------------------------------------------------------------
sub tab_curr_symbols {
$curr_symb{ZAR} = 'R';
$curr_symb{USD} = '$';
# $curr_symb{GBP} = '£';
$curr_symb{GBP} = 'GBP';
# $curr_symb{EUR} = '€';
$curr_symb{EUR} = 'EUR';
our $js_curr_arr = '' ;
foreach (keys %curr_symb) {
$js_curr_arr .= qq(currArr['$_'] = "$curr_symb{$_}";) ;
}
} #------------------------------------------------------------------------------------
sub tab_build_qt_col_headers {
my ($sec) = @_ ;
my $style_vat = '' ; if ($no_vat{$sec}) { $style_vat = 'style="display:none;"' ; }
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
# $add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
%cost_desc = () ; %def_qty = () ; %def_zar = () ; %min_zar = () ; %vat_tick = () ; %excl_tick = () ;
} #----------------------------------------------------------------------------------------
sub tab_content_box {
my ($sec_name,$sec_col) = @_ ;
$fcol=9 ;
$print_box_content_rows .= &common_min_box_top('indent-left',$sec_name,$sec_col,$cam_box_icon);
# $print_box_content_rows .= qq~
~ ;
$print_box_content_rows .= qq~$add_form_fields~;
$print_box_content_rows .= &common_min_box_foot;
} #----------------------------------------------------------------------------------------
sub tab_cnt {
our %cntxt = () ;
$cntxt{1} = 'one' ;
$cntxt{2} = 'two' ;
$cntxt{3} = 'three' ;
$cntxt{4} = 'four' ;
$cntxt{5} = 'five' ;
$cntxt{6} = 'six' ;
$cntxt{7} = 'seven' ;
$cntxt{8} = 'eight' ;
# $cntxt{9} = 'nine' ;
} #----------------------------------------------------------------------------------------
sub tab_names {
my ($tab) = @_ ;
my $tabname = '' ;
if ($tab==1) { $tabname = 'Quote Details' ; }
elsif ($tab==2) { $tabname = 'Costing' ; }
elsif ($tab==3) { $tabname = 'Costing Other' ; }
elsif ($tab==4) { $tabname = 'Purchase Summary' ; }
elsif ($tab==5) { $tabname = 'Notes' ; }
elsif ($tab==6) { $tabname = 'Camera Details' ; }
elsif ($tab==7) { $tabname = 'Invoice Details' ; }
# elsif ($tab==7) { $tabname = 'Extended Warranty' ; }
# elsif ($tab==8) { $tabname = 'Rental' ; }
elsif ($tab==8) { $tabname = 'Document Uploads' ; }
return ($tabname) ;
} #------------------------------------------------------------------------------------
sub tab_hash {
# &tabs_get_default_totals ;
# for (1 .. 8) {
# my $tname = &tab_names($_) ;
# our $ret_pdf_link_sec = '' ; # _sa_out+16|_cl_del+13|_sa_in+17|_des_sa+13|
# &tab_build_qt_left('',$_,1) ;
# &tab_build_qt_right('',$_,1) ;
# $tabcnt{$tname} = $_ ;
# $tabsec{$tname} = $ret_pdf_link_sec ;
# }
} #------------------------------------------------------------------------------------
sub tab_sec_det {
my ($sec) = @_ ;
my ($sec_nam,$sec_cnt,$sec_col) ;
$sec_col = '71919b' ; # '85acb8' ;
$sec_cnt = 20 ;
$sec_nam = substr($sec,1) ;
@array = split(/\_/,$sec_nam); my @sec_nam = map ucfirst, @array;
$sec_nam = join(" ", @sec_nam) ;
if ($sec eq '_costing') {
$sec_nam = 'Camera System Costing' ;
for (1 .. 20) { $vat_tick{$_} = 1 ; }
}
return ($sec_nam,$sec_cnt,$sec_col) ;
} #------------------------------------------------------------------------------------
1;