our %sec_cnt = ('a_systems' => "3-Systems", 'b_software_licence' => "3-Software Licence (Monthly Fee)", 'c_game_breakdown_analytics' => "2-Game Breakdown and Analytics (Annual Fee)", 'd_installation_kits' => "7-Installation Kits", 'e_hardware_add_ons' => "7-Hardware Add Ons", 'f_additional_services' => "7-Additional Services", 'g_match_credits' => "4-Match Credits", 'h_other' => "5-Other", 'i_rental' => "2-Rental" , "j_hardware" => "1-Hardware"); sub tabs_costings_forms_jquery { $onload .= qq~onload="add_up_totals('costing',\$('#inputRoe').val(),1);"~ if $iaction ne 'add' ; $trigger_jquery_raw .= qq~ let prev_currency = \$("#selectCurrency").val() ; \$("#selectCurrency").change(function () { if ((\$(this).val() == 'USD' && \$("input[name='roe']").val() == '20.00' && prev_currency != 'ZAR') || (prev_currency != 'ZAR' && \$(this).val() != 'ZAR' && prev_currency != 'USD' && \$(this).val() != 'USD')) { return ; } let roe = 1 ; if (\$(this).val() == 'USD') { roe = 20 ; } \$("input[name='roe']").val(roe.toFixed(2)) ; let j = 1 ; let tab = "costing" ; if (\$(this).val() == 'ZAR') { while (\$("#"+tab+"_"+j).html()) { if (!\$("#checkboxVat_"+tab+"_"+j).is(":checked")) { \$("#checkboxVat_"+tab+"_"+j).prop('checked',true) ; } j++ ; } } else if (\$(this).val() != 'ZAR' && prev_currency == 'ZAR') { while (\$("#"+tab+"_"+j).html()) { if (\$("#checkboxVat_"+tab+"_"+j).is(":checked")) { \$("#checkboxVat_"+tab+"_"+j).prop('checked',false) ; } j++ ; } } prev_currency = \$(this).val() ; add_up_totals("costing",roe,1) ; }) ; \$("input[name='roe']").change(function () { if (\$("#selectCurrency").val() == 'ZAR' && \$(this).val() != '1.00') { \$("input[name='roe']").val("1.00") ; return ; } update_with_roe(\$(this).val()) ; }) ; function update_with_roe (roe="") { if (roe < 0 || !roe || roe == "") { roe = 1 ; } \$("input[name='roe']").val(parseFloat(roe).toFixed(2)) ; let sub_total = 0 ; let vat_total = 0 ; add_up_totals("costing",roe,1) ; } function add_up_totals (tab,roe,recalc_totals) { let sub_total = 0 ; let vat_total = 0 ; let i = 1 ; while (\$("#"+tab+"_"+i).html()) { if (\$("#inputDescription_"+tab+"_"+i).val()) { if (\$("#checkboxExcl_"+tab+"_"+i).is(":checked")) { i++ ; continue ; } let ttl = 0 ; if (recalc_totals) { ttl = parseFloat(\$("#inputZar_amount_"+tab+"_"+i).val()) * parseFloat(\$("#inputQty_"+tab+"_"+i).val()) * parseFloat(roe) ; } else { ttl = parseFloat(\$("#inputTotal_"+tab+"_"+i).val().replace(/,/g, '')) } \$("#inputTotal_"+tab+"_"+i).val(ttl.toFixed(2)) ; if (!\$("#inputTotal_"+tab+"_"+i).val() || \$("#inputTotal_"+tab+"_"+i).val() == "NaN") { \$("#inputTotal_"+tab+"_"+i).val("0.00") ; ttl = 0 ; } sub_total += ttl ; if (\$("#checkboxVat_"+tab+"_"+i).is(":checked")) { vat_total += ttl*0.15 ; } } else if (!\$("#checkboxExcl_"+tab+"_"+i).is(":checked")) { \$("#checkboxExcl_"+tab+"_"+i).prop('checked',true) ; } i++ ; } \$("input[name='subtotal']").val(sub_total.toFixed(2)) ; \$("input[name='vat']").val(vat_total.toFixed(2)) ; \$("input[name='total']").val((sub_total+vat_total).toFixed(2)) ; } \$("#two").on("click","[id^='checkboxVat_']", function () { changed_vat(this.id) ; }) ; \$("#two").on("click","[id^='checkboxExcl_']", function () { changed_others(this.id) ; }) ; \$("#two").on("change","[id^='inputDescription_'],[id^='inputQty_'],[id^='inputZar_amount_']", function () { changed_others(this.id) ; }) ; function get_tab (id) { let tab = "" ; if (id.includes("costing")) { tab = "costing" ; } return tab ; } function changed_vat (id) { let tab = get_tab (id) ; let row_nr = get_row_nr(id) ; calc_totals(row_nr,tab) ; } function changed_others (id) { let row_nr = get_row_nr(id) ; let firstIndex = id.indexOf('_'); let col = id.substring(0,firstIndex); let tab = get_tab (id) ; if (col == "inputZar") { let inp = parseFloat(\$("#"+id).val()) ; inp = parseFloat(inp) ; \$("#"+id).val(inp.toFixed(2)) ; } calc_totals(row_nr,tab) ; } function calc_totals (row_cnt,tab) { var qty = \$("#inputQty_"+tab+"_"+row_cnt) ; var usd = \$("#inputZar_amount_"+tab+"_"+row_cnt) ; var conv = \$("#inputTotal_"+tab+"_"+row_cnt) ; var excl = \$("#checkboxExcl_"+tab+"_"+row_cnt) ; var item = \$("#inputDescription_"+tab+"_"+row_cnt) ; if (!usd.val() && !qty.val()) { if (!item.val()) { excl.prop("checked",true) ; } else if (item.val() && excl.is(":checked")) { excl.prop("checked",false) ; } return ; } var vat = \$("#checkboxVat_"+tab+"_"+row_cnt) ; if (!item.val()) { excl.prop("checked",true) ; vat.prop("checked",true) ; qty.val("") ; usd.val("") ; conv.val("") ; } else if (item.val() && excl.is(":checked")) { // excl.prop("checked",false) ; } if (!\$("#inputRoe").val()) { \$("#inputRoe").val(1) ; } let roe = parseFloat(\$("#inputRoe").val()) ; let ttl = usd.val() * qty.val() * roe ; conv.val(ttl.toFixed(2)) ; let sub_total = 0 ; let vat_total = 0 ; let nr_of_rows = 50 ; add_up_totals (tab,roe,0) ; } function add_costing_row (row_nr,tab,options1,options2) { let tindex = "$tindex" ; tindex = parseInt(tindex) ; row_nr = parseInt(row_nr) ; tindex = tindex - 10*(1+50-row_nr) ; row_nr = row_nr + 1 ; let row = "
" ; row = row+add_checkbox(row_nr,"excl_"+tab+"_"+row_nr,"checkboxExcl_"+tab+"_"+row_nr,tindex,1) ; tindex++ ; // row = row+add_select(row_nr,"description_"+tab+"_"+row_nr,"selectDescription_"+tab+"_"+row_nr,"Select Description "+row_nr,options1,tindex,2,90,'','') ; tindex++ ; row = row+add_input(row_nr,"description_"+tab+"_"+row_nr,"inputDescription_"+tab+"_"+row_nr,"Description "+row_nr,tindex,'',2) ; tindex++ ; row = row+add_input(row_nr,"qty_"+tab+"_"+row_nr,"inputQty_"+tab+"_"+row_nr,"Qty "+row_nr,tindex,'',1) ; tindex++ ; row = row+add_input(row_nr,"amount_usd_"+tab+"_"+row_nr,"inputZar_amount_"+tab+"_"+row_nr,"ZAR Amount "+row_nr,tindex,'',1) ; tindex++ ; row = row+add_input(row_nr,"amount_ttl_"+tab+"_"+row_nr,"inputTotal_"+tab+"_"+row_nr,"Total Amount "+row_nr,tindex,"readonly",1) ; tindex++ ; row = row+add_checkbox(row_nr,"vat_"+tab+"_"+row_nr,"checkboxVat_"+tab+"_"+row_nr,tindex,1) ; tindex++ ; row = row+"
" ; row = row+"
" ; return row ; } function get_row_nr (id) { let lastIndex = id.lastIndexOf('_'); lastIndex = parseInt(lastIndex) ; let row_nr = id.substring(1+lastIndex); row_nr = parseInt(row_nr) ; return row_nr ; } function add_checkbox (row_nr,field_name,field_id,tindex,fcol) { let checkbox = "
" ; return checkbox ; } function add_input (row_nr,field_name,field_id,placeholder,tindex,readonly,fcol) { let input = "
" ; return input ; } function add_select (row_nr,field_name,field_id,placeholder,options,tindex,fcol,width,div_id,hide_div) { let select = "
" ; select = select + add_select_raw(row_nr,field_name,field_id,placeholder,options,tindex,width) ; select = select + "
" ; return select ; } function add_select_raw (row_nr,field_name,field_id,placeholder,options,tindex,width) { let select_raw = "
" ; return select_raw ; } ~ ; } #------------------------------------------------------------------------------------------ sub tabs_get_default_totals { my ($id) = @_ ; # our %sec_cnt = ('a_systems' => "3-Systems", 'b_software_licence' => "3-Software Licence (Monthly Fee)", 'c_game_breakdown_analytics' => "2-Game Breakdown and Analytics (Annual Fee)", 'd_installation_kits' => "7-Installation Kits", 'e_hardware_add_ons' => "7-Hardware Add Ons", 'f_additional_services' => "7-Additional Services", 'g_match_credits' => "4-Match Credits", 'h_other' => "5-Other", 'i_rental' => "2-Rental" , "j_hardware" => "1-Hardware"); # our %sec_cnt = ('a_other' => "5-Other"); our %sec_cnt = ('a_systems' => "3-Systems", 'b_software_licence' => "3-Software Licence (Monthly Fee)", 'c_game_breakdown_analytics' => "2-Game Breakdown and Analytics (Annual Fee)", 'd_installation_kits' => "7-Installation Kits", 'e_hardware_add_ons' => "7-Hardware Add Ons", 'f_additional_services' => "7-Additional Services", 'g_match_credits' => "4-Match Credits", 'h_rental' => "2-Rental" , "j_hardware" => "1-Hardware"); our %default_totals = () ; our @ttlarr = ("one_time_fee","monthly_recurring_fee","annual_fee") ; our @ttlarr2 = ("subtotal","vat","total") ; my $needs_to_update_totals = ($db{$table}{$id}{total_one_time_fee} !~ /;/ && $db{quotes_min}{$id}{item_ttl_costing_other} =~ /(?
 
~ ; $trigger_jquery_raw .= qq~ if (!\$("#checkboxQuote_accepted").is(":checked") && !\$("#checkboxQuote_pending").is(":checked") && !\$("#checkboxQuote_cancelled").is(":checked")) { \$("#checkboxQuote_pending").prop("checked","true") ; } \$("#checkboxQuote_accepted,#checkboxQuote_pending,#checkboxQuote_cancelled").click( function () { if (this.id != 'checkboxQuote_accepted' && \$("#checkboxQuote_accepted").is(":checked")) { \$("#checkboxQuote_accepted").prop("checked",false) ; } if (this.id != 'checkboxQuote_pending' && \$("#checkboxQuote_pending").is(":checked")) { \$("#checkboxQuote_pending").prop("checked",false) ; } if (this.id != 'checkboxQuote_cancelled' && \$("#checkboxQuote_cancelled").is(":checked")) { \$("#checkboxQuote_cancelled").prop("checked",false) ; } if (!\$("#checkboxQuote_accepted").is(":checked") && !\$("#checkboxQuote_pending").is(":checked") && !\$("#checkboxQuote_cancelled").is(":checked")) { \$("#checkboxQuote_pending").prop("checked","true") ; } }); ~ ; &tab_content_box($sec_name,$sec_col); # --------------- END CUSOTMER DETAILS ---------------------------------------------------------------------------------------------------------- } # if ($tab == 2) { # Costing # # --------------- START COSTING ---------------------------------------------------------------------------------------------------------------- # $add_form_fields = '' ; # $lcol = 1 ; $fcol = 2 ; # $preferred_title{currency} = 'Currency' ; # $add_form_fields .= &common_min_form_select('currency',$db{$table}{$id}{currency},1) ; # $trigger_jquery .= qq~\$("#selectCurrency_chosen").css( "width", "96%" );~ ; # $preferred_title{roe} = ' ROE ' ; $fcol = 1 ; # $add_form_fields .= &common_min_form_label_col('roe') ; # $add_form_fields .= &common_min_form_input_col('roe',$db{$table}{$id}{roe},1) ; # $add_form_fields .= qq~~ ; # my $sec = '_costing' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ; # $ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ; # return if $ret ; # &tab_costing_select_opts('price_list','description',"`excl`<>'1'",$sec) ; # # &db_min_ro('quotes_pdf_titles', '*', "quote_id = $id", '', '') ; # foreach (keys %{$db{quotes_pdf_titles}}){ # next unless $db{quotes_pdf_titles}{$_}{quote_id} == $id ; # $old_title_to_new_title{$db{quotes_pdf_titles}{$_}{old_name}}{$db{quotes_pdf_titles}{$_}{quote_id}} = $db{quotes_pdf_titles}{$_}{new_name} ; # } # foreach (sort keys %sec_cnt) { # $_k = substr($_,1) ; # next if $_k eq '_hardware' ; # my @parts = split(/\-/,$sec_cnt{$_}) ; # $add_form_fields .= qq~

$parts[1] :

~ ; # # $add_form_fields .= qq~

$parts[1] :

~ ; # $fcol = 3 ; # $add_form_fields .= qq~
PDF title :
~ ; # # $add_form_fields .= qq~
PDF TITLE :
~ ; # if ($old_title_to_new_title{$parts[1]}{$id} and $old_title_to_new_title{$parts[1]}{$id} ne $parts[1]){ # $add_form_fields .= &common_min_form_input_col($_k, $old_title_to_new_title{$parts[1]}{$id}) ; # } # else { # $add_form_fields .= &common_min_form_input_col($_k,'') ; # } # $add_form_fields .= qq~
~ ; # &tab_build_qt_col_headers("$sec$_k") ; # &build_cost_form($id,$tab,$parts[0],"$sec$_k") ; # if ($_k eq '_systems') { # $preferred_title{'systems_included'} = ' ' ; $preferred_placeholder{'systems_included'} = 'Included' ; $fcol = 3 ; # $add_form_fields .= &common_min_form_textarea('systems_included',$db{$table}{$id}{systems_included},'') ; # } # if ($_k eq '_rental') { # $preferred_title{'rental_included'} = ' ' ; $preferred_placeholder{'rental_included'} = 'Included' ; $fcol = 3 ; # $add_form_fields .= &common_min_form_textarea('rental_included',$db{$table}{$id}{rental_included},'') ; # } # if ($_k eq '_other') { # $preferred_title{'other_included'} = ' ' ; $preferred_placeholder{'other_included'} = 'Included' ; $fcol = 3 ; # $add_form_fields .= &common_min_form_textarea('other_included',$db{$table}{$id}{other_included},'') ; # } # } # $add_form_fields .= qq~
 
~ ; # $add_form_fields .= qq~
PDF total :
~ ; # $lcol = 3 ; # if ($old_title_to_new_title{"Hardware"}{$id} and $old_title_to_new_title{"Hardware"}{$id} ne "Hardware"){ # $add_form_fields .= &common_min_form_input_col('_hardware', $old_title_to_new_title{"Hardware"}{$id}) ; # } # else { # $add_form_fields .= &common_min_form_input_col('_hardware','') ; # } # my @ttlarr_labels = ("sub_total","vat_total","grand_total") ; # $lcol = 1 ; $fcol = 1 ; # foreach (@ttlarr_labels) { # $readonly{$_} = "READONLY" ; # my $val = $db{$table}{$id}{$_} ; $val = '0.00' unless $val ; # $type = 'hidden' ; $add_form_fields .= &common_min_form_input_col($_,$val) ; $type = '' ; # $lcol = 1 ; $add_form_fields .= &common_min_form_label_col($_) ; # } # $add_form_fields .= qq~
~ ; # $lcol = 1 ; $fcol = 1 ; # foreach my $a (@ttlarr) { # $readonly{$a} = "READONLY" ; # $add_form_fields .= qq~
~ ; # $lcol = 2 ; # $add_form_fields .= &common_min_form_label_col($a) ; # $lcol = 1 ; # foreach my $b (@ttlarr2) { # $field = "$b\_$a\_1" ; $readonly{$field} = "READONLY"; $input_style{$field} = qq~style="text-align:right;"~ ; # my $val = ($default_totals{$field}{1}) ? $default_totals{$field}{1} : '0.00' ; # $add_form_fields .= &common_min_form_input_col($field,$val) ; # } # $add_form_fields .= qq~
~ ; # } # $add_form_fields .= qq~
 
~ ; # &tab_content_box($sec_name,$sec_col) ; # # --------------- END COSTING ---------------------------------------------------------------------------------------------------------------- # # $trigger_jquery_raw .= qq~ # # function get_tab (id) { # # let tab = "" ; # # if (id.includes("workings_event")) { # # tab = "workings_event" ; # # } else if (id.includes("costing_event")) { # # tab = "costing_event" ; # # } # # return tab ; # # } # # function changed_vat (id) { # # let tab = get_tab (id) ; # # let row_nr = get_row_nr(id) ; # # calc_totals(row_nr,tab) ; # # } # # function changed_others (id) { # # let row_nr = get_row_nr(id) ; # # let firstIndex = id.indexOf('_'); # # let col = id.substring(0,firstIndex); # # let tab = get_tab (id) ; # # if (col == "inputAmount") { # # let inp = parseFloat(\$("#"+id).val()) ; # # inp = parseFloat(inp) ; # # \$("#"+id).val(inp.toFixed(2)) ; # # } else if (\$("#selectDescription_"+tab+"_"+row_nr).val() && \$("#selectDescription_"+tab+"_"+row_nr).val() != 14 && \$("#selectOperator_"+tab+"_"+row_nr).val()) { # # // \$("#selectOperator_"+tab+"_"+row_nr).val("") ; # # // \$("#selectOperator_"+tab+"_"+row_nr).trigger("chosen:updated") ; # # } # # // else if (col == "selectOperator" && \$("#selectDescription"+tab+"_"+row_nr).val() != 14) { # # // } # # if (col == "selectOperator") { // || (col == "selectDescription" && \$("#selectDescription_"+tab+"_"+row_nr).val( # # return ; # # } # # calc_totals(row_nr,tab) ; # # } # # // \$("$vat_field_ids_string").change(function() { # # \$("#content").on("change","[id^='checkboxVat_']", function () { # # const id = this.id ; # # changed_vat(id) ; # # }); # # // \$("$excl_field_ids_string,$description_field_ids_string,$qty_field_ids_string,$amount_usd_field_ids_string,$operator_field_ids_string").change(function() { # # \$("#content").on("change","[id^='checkboxExcl_'],[id^='selectDescription_'],[id^='inputQty_'],[id^='inputZar_amount_'],[id^='selectOperator_workings_event_']", function () { # # const id = this.id ; # # changed_others(id) ; # # }); # # ~ ; # # $trigger_jquery_raw .= qq~ # # \$("#content").on("click","[id^='btn_workings_event_'],[id^='btn_costing_event_']", function () { # # // \$("$btn_ids_string").click(function () { # # const id = this.id ; # # let tab = get_tab (id) ; # # console.log("id : "+id) ; # # console.log("tab : "+tab) ; # # add_quote_expenses_row_all(id,tab) ; # # }); # # function add_quote_expenses_row_all (id,tab) { # # let row_nr = get_row_nr(id) ; # # \$("#"+tab+"_"+row_nr).show(); # # let row_html = "" ; # # if (tab == "workings_event") { # # row_html = add_quote_expenses_row(row_nr,tab,"$description_options_workings","$operator_options") ; # # } else if (tab == "costing_event") { # # row_html = add_quote_expenses_row(row_nr,tab,"$description_options_costing","") ; # # } # # \$("#"+tab+"_"+row_nr).html(row_html); # # // \$("#$suffix\_"+row_nr).trigger("chosen:updated") ; # # \$("#selectDescription_"+tab+"_"+row_nr).chosen({ allow_single_deselect:true }) ; # # if (tab == "workings_event") { # # \$("#selectOperator_workings_event_"+row_nr).chosen({ allow_single_deselect:true }); # # \$("#inputRemarks_workings_event_"+row_nr).css("text-align","") ; # # \$("#inputSupplier_workings_event_"+row_nr).css("text-align","") ; # # \$("#inputRef_nr_workings_event_"+row_nr).css("text-align","") ; # # } # # \$("#btn_"+tab+"_"+row_nr).hide(); # # var v = row_nr + 1 ; # # // \$("#btn_$suffix\_"+v).css("padding-left","16px") ; # # \$("#btn_"+tab+"_"+v).html("") ; # # \$("#btn_"+tab+"_"+v).show(); # # \$("#btn_row_"+tab+"_"+v).show() ; # # \$("#2_"+tab+"_"+row_nr).show() ; # # \$("#checkboxExcl_"+tab+"_"+row_nr).prop('checked',false) ; # # // \$("#"+tab+"_"+row_nr).on("change","#checkboxVat_"+tab+"_"+row_nr+"", function() { # # // const id = this.id ; # # // changed_vat(id) ; # # // }); # # // \$("#"+tab+"_"+row_nr).on("change","#checkboxExcl_"+tab+"_"+row_nr+",#selectDescription_"+tab+"_"+row_nr+",#selectOperator_"+tab+"_"+row_nr+",#inputQty_"+tab+"_"+row_nr+",#inputZar_amount_"+tab+"_"+row_nr+"", function() { # # // const id = this.id ; # # // changed_others(id) ; # # // }); # # } # # ~ if $btn_ids_string ; # # $trigger_jquery_raw .= qq~ # # \$("#selectCurrency").change(function () { # # }) ; # # \$("input[name='roe']").change(function () { # # let roe = \$(this).val() ; # # if (roe < 0 || !roe) { # # roe = 1 ; # # } # # \$(this).val(parseFloat(roe).toFixed(2)) ; # # var sub_total = 0 ; var vat_total = 0 ; var sub_total_quote = 0 ; var vat_total_quote = 0 ; # # [sub_total,vat_total] = add_up_totals("workings_event",50,roe,1) ; # # [sub_total_quote,vat_total_quote] = add_up_totals("costing_event",30,roe,1) ; # # // // // \$("input[name='income']").val((sub_total_quote+vat_total_quote).toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ; # # // // // \$("input[name='expenses']").val((sub_total+vat_total).toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ; # # \$("input[name='income']").val((sub_total_quote+vat_total_quote).toFixed(2)) ; # # \$("input[name='expenses']").val((sub_total+vat_total).toFixed(2)) ; # # update_overall_totals(sub_total,vat_total,"workings_event") ; # # update_overall_totals(sub_total_quote,vat_total_quote,"costing_event") ; # # }) ; # # function add_up_totals (tab,nr_of_rows,roe,recalc_totals) { # # let sub_total = 0 ; let vat_total = 0 ; # # for (let i=1; i<=nr_of_rows; i++) { # # if (!\$("#"+tab+"_"+i).html()) { break ; } # # if (\$("#selectDescription_"+tab+"_"+i).val()) { # # if (\$("#checkboxExcl_"+tab+"_"+i).is(":checked")) { continue ; } # # let ttl = 0 ; # # if (recalc_totals) { # # ttl = parseFloat(\$("#inputZar_amount_"+tab+"_"+i).val()) * parseFloat(\$("#inputQty_"+tab+"_"+i).val()) * parseFloat(roe) ; # # } else { # # ttl = parseFloat(\$("#inputTotal_"+tab+"_"+i).val().replace(/,/g, '')) # # } # # // // // // \$("#inputTotal_"+tab+"_"+i).val(ttl.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ; # # \$("#inputTotal_"+tab+"_"+i).val(ttl.toFixed(2)) ; # # if (!\$("#inputTotal_"+tab+"_"+i).val() || \$("#inputTotal_"+tab+"_"+i).val() == "NaN") { # # \$("#inputTotal_"+tab+"_"+i).val("0.00") ; # # ttl = 0 ; # # } # # sub_total += ttl ; # # if (\$("#checkboxVat_"+tab+"_"+i).is(":checked")) { # # vat_total += ttl*0.15 ; # # } # # } else if (!\$("#checkboxExcl_"+tab+"_"+i).is(":checked")) { # # \$("#checkboxExcl_"+tab+"_"+i).prop('checked',true) ; # # } # # } # # return [sub_total,vat_total] ; # # } # # // function getNum(val) { # # // if (isNaN(val)) { # # // return 0; # # // } # # // return val; # # // } # # function calc_totals (row_cnt,tab) { # # var qty = \$("#inputQty_"+tab+"_"+row_cnt) ; # # var usd = \$("#inputZar_amount_"+tab+"_"+row_cnt) ; # # var conv = \$("#inputTotal_"+tab+"_"+row_cnt) ; # # var excl = \$("#checkboxExcl_"+tab+"_"+row_cnt) ; # # var item = \$("#selectDescription_"+tab+"_"+row_cnt) ; # # if (!usd.val() && !conv.val() && !usd.val()) { # # // console.log("skip calc_totals_workings") ; # # if (!item.val()) { # # excl.prop("checked",true) ; # # } # # return ; # # } # # var vat = \$("#checkboxVat_"+tab+"_"+row_cnt) ; # # if (!item.val()) { # # excl.prop("checked",true) ; # # vat.prop("checked",true) ; # # qty.val("") ; # # usd.val("") ; # # conv.val(""); # # if (tab == "workings_event") { # # var rem = \$("#inputRemarks_"+tab+"_"+row_cnt) ; # # var sup = \$("#inputSupplier_"+tab+"_"+row_cnt) ; # # var ref = \$("#inputRef_nr_"+tab+"_"+row_cnt) ; # # var op = \$("#selectOperator_"+tab+"_"+row_cnt) ; # # rem.val("") ; # # sup.val("") ; # # ref.val("") ; # # op.val("") ; # # op.trigger("chosen:updated") ; # # } # # } else if (excl.is(":checked") && item.val() && conv.val() == "0.00") { # # excl.prop("checked",false) ; # # } # # if (!\$("#inputRoe").val()) { \$("#inputRoe").val(1) ; } # # let roe = parseFloat(\$("#inputRoe").val()) ; # # let ttl = usd.val() * qty.val() * roe ; # # // // // conv.val(ttl.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ; # # conv.val(ttl.toFixed(2)) ; # # let sub_total = 0 ; let vat_total = 0 ; # # let nr_of_rows = 50 ; # # if (tab == "costing_event") { # # nr_of_rows = 30 ; # # } # # [sub_total,vat_total] = add_up_totals (tab,nr_of_rows,roe,0) ; # # if (tab == "workings_event") { # # // // // \$("input[name='expenses']").val((sub_total+vat_total).toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ; # # \$("input[name='expenses']").val((sub_total+vat_total).toFixed(2)) ; # # update_overall_totals(sub_total,vat_total,tab) ; # # } else { # # // // // \$("input[name='income']").val((sub_total+vat_total).toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ; # # \$("input[name='income']").val((sub_total+vat_total).toFixed(2)) ; # # update_overall_totals(sub_total,vat_total,tab) ; # # // update_overall_totals_costings(sub_total,vat_total) ; # # } # # } # # function update_overall_totals (sub_total,vat_total,tab) { # # let profit_loss = parseFloat(\$("input[name='income']").val().replace(/,/g, '')) - parseFloat(\$("input[name='expenses']").val().replace(/,/g, '')) ; # # // // // \$("input[name='profit_loss']").val(profit_loss.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ; # # // // // \$("input[name='sub_total_"+tab+"']").val(sub_total.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ; # # // // // \$("input[name='vat_total_"+tab+"']").val(vat_total.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ; # # // // // \$("input[name='grand_total_"+tab+"']").val((sub_total+vat_total).toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ; # # \$("input[name='profit_loss']").val(profit_loss.toFixed(2)) ; # # \$("input[name='sub_total_"+tab+"']").val(sub_total.toFixed(2)) ; # # \$("input[name='vat_total_"+tab+"']").val(vat_total.toFixed(2)) ; # # \$("input[name='grand_total_"+tab+"']").val((sub_total+vat_total).toFixed(2)) ; # # } # # function add_quote_expenses_row (row_nr,tab,options1,options2) { # # let tindex = $tindex ; # # tindex = parseInt(tindex) ; # # row_nr = parseInt(row_nr) ; # # tindex = tindex - 10*(1+50-row_nr) ; # # let row = add_checkbox(row_nr,"excl_"+tab+"_"+row_nr,"checkboxExcl_"+tab+"_"+row_nr,tindex,1) ; tindex++ ; # # row = row+""+add_select(row_nr,"description_"+tab+"_"+row_nr,"selectDescription_"+tab+"_"+row_nr,"Select Description "+row_nr,options1,tindex,2,90,'','') ; tindex++ ; # # if (tab == "workings_event") { # # row = row+add_select(row_nr,"operator_workings_event_"+row_nr,"selectOperator_workings_event_"+row_nr,"Select Operator "+row_nr,options2,tindex,2,90,'','') ; tindex++ ; # # row = row+add_input(row_nr,"remarks_workings_event_"+row_nr,"inputRemarks_workings_event_"+row_nr,"Remarks "+row_nr,tindex,'',1) ; tindex++ ; # # row = row+add_input(row_nr,"supplier_workings_event_"+row_nr,"inputSupplier_workings_event_"+row_nr,"Supplier "+row_nr,tindex,'',1) ; tindex++ ; # # row = row+add_input(row_nr,"ref_nr_workings_event_"+row_nr,"inputRef_nr_workings_event_"+row_nr,"Ref Nr "+row_nr,tindex,'',1) ; tindex++ ; # # } # # row = row+add_input(row_nr,"qty_"+tab+"_"+row_nr,"inputQty_"+tab+"_"+row_nr,"Qty "+row_nr,tindex,'',1) ; tindex++ ; # # row = row+add_input(row_nr,"amount_usd_"+tab+"_"+row_nr,"inputZar_amount_"+tab+"_"+row_nr,"Amount "+row_nr,tindex,'',1) ; tindex++ ; # # row = row+add_input(row_nr,"amount_ttl_"+tab+"_"+row_nr,"inputTotal_"+tab+"_"+row_nr,"Total Amount "+row_nr,tindex,"readonly",1) ; tindex++ ; # # row = row+add_checkbox(row_nr,"vat_"+tab+"_"+row_nr,"checkboxVat_"+tab+"_"+row_nr,tindex,1) ; tindex++ ; # # return row ; # # } # # ~ ; # } if ($tab==2) { # Costing # --------------- START COSTING ---------------------------------------------------------------------------------------------------------------- $add_form_fields = '' ; $lcol = 1 ; $fcol = 2 ; $db{$table}{$id}{currency} = "ZAR" unless $db{$table}{$id}{currency} ; $opts{currency} = qq~~ ; $opts{currency} =~ s/value="\Q$db{$table}{$id}{currency}\E"/value="$db{$table}{$id}{currency}" SELECTED/g ; $add_form_fields .= &common_min_form_select('currency',$db{$table}{$id}{currency},1) ; $trigger_jquery .= qq~\$("#selectCurrency_chosen").css( "width", "96%" );~ ; $preferred_title{roe} = ' ROE ' ; $fcol = 1 ; $add_form_fields .= &common_min_form_label_col('roe') ; $db{$table}{$id}{roe} = "1.00" unless $db{$table}{$id}{roe} ; $add_form_fields .= &common_min_form_input_col('roe',$db{$table}{$id}{roe},1) ; $add_form_fields .= qq~
~ ; my $sec = 'costing' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ; $ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ; if ($ret) { return ; } %sec_cnt = ('a' => "10-Other"); foreach (sort keys %sec_cnt) { $_k = substr($_,1) ; next if $_k eq '_hardware' ; my @parts = split(/\-/,$sec_cnt{$_}) ; # $add_form_fields .= qq~

$parts[1] :

~ ; $fcol = 3 ; # $add_form_fields .= qq~
PDF title :
~ ; # if ($old_title_to_new_title{$parts[1]}{$id} and $old_title_to_new_title{$parts[1]}{$id} ne $parts[1]) { # $add_form_fields .= &common_min_form_input_col($_k, $old_title_to_new_title{$parts[1]}{$id}) ; # } else { # $add_form_fields .= &common_min_form_input_col($_k,'') ; # } # $add_form_fields .= qq~
~ ; &tab_build_qt_col_headers("$sec$_k") ; &build_cost_form($id,$tab,$parts[0],"$sec$_k") ; # if ($_k eq '_systems') { # $preferred_title{'systems_included'} = ' ' ; $preferred_placeholder{'systems_included'} = 'Included' ; $fcol = 3 ; # $add_form_fields .= &common_min_form_textarea('systems_included',$db{$table}{$id}{systems_included},'') ; # } # if ($_k eq '_rental') { # $preferred_title{'rental_included'} = ' ' ; $preferred_placeholder{'rental_included'} = 'Included' ; $fcol = 3 ; # $add_form_fields .= &common_min_form_textarea('rental_included',$db{$table}{$id}{rental_included},'') ; # } # if ($_k eq '_other') { # $preferred_title{'other_included'} = ' ' ; $preferred_placeholder{'other_included'} = 'Included' ; $fcol = 3 ; # $add_form_fields .= &common_min_form_textarea('other_included',$db{$table}{$id}{other_included},'') ; # } } # $add_form_fields .= qq~
 
~ ; # $add_form_fields .= qq~
 
~ ; $add_form_fields .= qq~
~ ; # $add_form_fields .= qq~
PDF total :
~ ; $add_form_fields .= qq~
~ ; $lcol = 3 ; # if ($old_title_to_new_title{"Hardware"}{$id} and $old_title_to_new_title{"Hardware"}{$id} ne "Hardware") { # $add_form_fields .= &common_min_form_input_col('_hardware', $old_title_to_new_title{"Hardware"}{$id}) ; # } else { # $add_form_fields .= &common_min_form_input_col('_hardware','') ; # } # my @ttlarr = ("sub_total","vat_total","grand_total") ; # @ttlarr2 = ("subtotal","vat","total") ; $lcol = 1 ; $fcol = 1 ; foreach (@ttlarr2) { $readonly{$_} = "READONLY" ; my $val = $db{$table}{$id}{$_} ; $val = '0.00' unless $val ; # $add_form_fields .= qq~
~ ; $lcol=2; # $add_form_fields .= &common_min_form_label_col($_) ; $lcol = 1 ; $type = 'hidden' ; $add_form_fields .= &common_min_form_input_col($_,$val) ; $type = '' ; # $add_form_fields .= qq~
~ ; $lcol = 1 ; $add_form_fields .= &common_min_form_label_col($_) ; # $add_form_fields .= qq~
~ ; } $add_form_fields .= qq~
~ ; # $add_form_fields .= qq~
 
~ ; # my @ttlarr = ("one_time_fee","monthly_recurring_fee","annual_fee") ; $lcol = 1 ; $fcol = 1 ; # foreach my $a (@ttlarr) { # $readonly{$a} = "READONLY" ; # # if ($_ eq 'one_time_fee') { # # $add_form_fields .= qq~
PDF total :
~ ; # # $lcol = 1 ; # # if ($old_title_to_new_title{"Hardware"}{$id} and $old_title_to_new_title{"Hardware"}{$id} ne "Hardware"){ # # $add_form_fields .= &common_min_form_input_col('_hardware', $old_title_to_new_title{"Hardware"}{$id}) ; # # } # # else { # # $add_form_fields .= &common_min_form_input_col('_hardware','') ; # # } # # } # # else { # $add_form_fields .= qq~
~ ; # # } # $lcol = 2 ; # $add_form_fields .= &common_min_form_label_col($a) ; # $lcol = 1 ; # foreach my $b (@ttlarr2) { # $field = "$b\_$a\_2" ; $readonly{$field} = "READONLY"; $input_style{$field} = qq~style="text-align:right;"~ ; # # my $val = $db{$table}{$id}{$field} ; $val = '0.00' unless $val ; # my $val = $default_totals{$field}{2} ? $default_totals{$field}{2} : '0.00' ; # $add_form_fields .= &common_min_form_input_col($field,$val) ; # } # # $field = "2_subtotal_$_" ; $readonly{$field} = "READONLY"; $input_style{$field} = qq~style="text-align:right;"~ ; # # # my $val = $db{$table}{$id}{$field} ; $val = '0.00' unless $val ; # # my $val = $db{$table}{$id}{$field} ? $db{$table}{$id}{$field} : '0.00' ; # # $add_form_fields .= &common_min_form_input_col($field,$val) ; # # $field = "2_vat_$_" ; $readonly{$field} = "READONLY"; $input_style{$field} = qq~style="text-align:right;"~ ; # # # my $val = $db{$table}{$id}{$field} ; $val = '0.00' unless $val ; # # my $val = $db{$table}{$id}{$field} ? $db{$table}{$id}{$field} : '0.00' ; # # $add_form_fields .= &common_min_form_input_col($field,$val) ; # # $field = "2_total_$_" ; $readonly{$field} = "READONLY"; $input_style{$field} = qq~style="text-align:right;"~ ; # # # my $val = $db{$table}{$id}{$field} ; $val = '0.00' unless $val ; # # my $val = $db{$table}{$id}{$field} ? $db{$table}{$id}{$field} : '0.00' ; # # $add_form_fields .= &common_min_form_input_col($field,$val) ; # $add_form_fields .= qq~
~ ; # } $add_form_fields .= qq~
~ ; foreach my $a (@ttlarr2) { $readonly{$a} = "READONLY" ; $lcol = 1 ; $field = "$a" ; $readonly{$field} = "READONLY"; $input_style{$field} = qq~style="text-align:right;"~ ; my $val = $default_totals{$field}{2} ? $default_totals{$field}{2} : '0.00' ; $add_form_fields .= &common_min_form_input_col($field,$val) ; } $add_form_fields .= qq~
~ ; $add_form_fields .= qq~
 
~ ; $preferred_title{'include_exclude'} = 'Include/Exclude' ; $preferred_placeholder{'include_exclude'} = 'Include/Exclude' ; $fcol = 5 ; $add_form_fields .= &common_min_form_textarea('include_exclude',$db{$table}{$id}{include_exclude},'') ; $add_form_fields .= qq~
 
~ ; $add_form_fields .= qq~
~ ; my @docs = ("1","2","3") ; ($db{$table}{$id}{costing_1},$db{$table}{$id}{costing_2},$db{$table}{$id}{costing_3}) = split(/\:;:/,$db{$table}{$id}{costing_uploads}) ; 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~

Upload file from PC.

~; } } $add_form_fields .= qq~
~ ; # $print_box_content_rows .= qq~
~ ; # $print_box_content_rows .= $add_form_fields ; # $print_box_content_rows .= &common_min_box_foot; &tab_content_box($sec_name,$sec_col) ; # --------------- END COSTING ---------------------------------------------------------------------------------------------------------------- } # if ($tab==4) { # Purchase Summary # # --------------- START PURCHASE SUMMARY ---------------------------------------------------------------------------------------------------------------- # $add_form_fields = '' ; # my $sec = '_purchase_summary' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ; # $ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ; # if ($ret) { return ; } # my $style_vat = '' ; if ($no_vat{$sec}) { $style_vat = 'style="display:none;"' ; } # $add_form_fields .= qq~
 
~ ; # my $field = "excl$sec" ; # if ($db{$table}{$id}{$field} == 1) { $checked = 'CHECKED'; } else { $checked = ''; } # $label{$field} = 1 ; # $add_form_fields .= qq~
~ ;$fcol=1 ; # $add_form_fields .= &common_min_form_checkbox_col($field,$db{$table}{$id}{$field},$checked) ; # $add_form_fields .= qq~

Purchase Summary

~ ; # $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~
~ ; # my $suffix = $sec ; my $rcnt = 3 ; # # &set_check_boxes_checked($id,$rcnt,"excl",$suffix); # $default_desc{1} = 'Hardware Purchase' ; # $default_desc{2} = 'Monthly Fees' ; # $default_desc{3} = 'Annual Fees' ; # my @prefexes = ("excl", "item") ; # foreach my $prefex (@prefexes) { # $col_name = "$prefex" . "$suffix" ; # $cnt = 0 ; # # if($db{quotes_min}{$id}{$col_name}){ # for my $col_input (split(";", $db{quotes_min}{$id}{$col_name})){ # $cnt++ ; # $saved_field{$prefex}{$suffix}{$cnt} = $col_input ; # } # # } # } # for (1 .. $rcnt) { # $add_form_fields .= qq~
~ ; # #---------------------------------------------------------------------------------------------------- # $field = "excl_$_$suffix" ; $fcol=1 ; # # if ($checkit{$field} == 1) { $checked = 'CHECKED'; } else { $checked = ''; } # # if ($db{$table}{$id}{$field} == 1) { $checked = 'CHECKED'; } else { $checked = ''; } # if ($saved_field{"excl"}{$suffix}{$_} == 1) { $checked = 'CHECKED'; } else { $checked = ''; } # $label{$field} = 1 ; # # $add_form_fields .= &common_min_form_checkbox_col($field,$db{$table}{$id}{$field},$checked) ; # $add_form_fields .= &common_min_form_checkbox_col($field,$saved_field{"excl"}{$suffix}{$_},$checked) ; # #---------------------------------------------------------------------------------------------------- # my $field = "item_$_$suffix" ; $fcol=2 ; # $preferred_placeholder{$field} = "Item $_" ; # # my $val = $db{$table}{$id}{$field} ; # my $val = $saved_field{"item"}{$suffix}{$_} ; # $val = $default_desc{$_} unless $val ; # # $readonly{$field} = 'READONLY' ; # $add_form_fields .= &common_min_form_input_col($field,$val) ; # #---------------------------------------------------------------------------------------------------- # for my $year (1 .. 5) { # $field = "year_$year\_$_$suffix" ; $input_style{$field} = qq~style="text-align:right;"~; # unless ($year==1 and $_==3) { # $readonly{$field} = 'READONLY' ; # } else { # $trigger_jquery_raw .= qq~\$("#inputYear_1_$_$suffix").change(function() { # calcAnnual$field() ; # }); # ~; # $trigger_jquery_raw .= qq~function calcAnnual$field() # { # var annual_ttl = getNum(parseFloat(\$("#inputYear_1_$_$suffix").val())) + getNum(parseFloat(\$("#inputYear_2_$_$suffix").val())) + getNum(parseFloat(\$("#inputYear_3_$_$suffix").val())) ; # \$("#inputTotal_$_$suffix").val(annual_ttl.toFixed(2)); # }~; # } # $preferred_placeholder{$field} = "Year $year Total $_" ; # # my $val = &q_get_val($db{$table}{$id}{$field}) ; # $excl_on_change{$field} = 1 ; # $year_totals{"yearly_totals_$year"} += $db{$table}{$id}{$field} ; # $fcol = 12 ; # $add_form_fields .= qq~
~ if $year <= 3 ; # $add_form_fields .= qq~~ ; # } # $fcol = 2 ; # #---------------------------------------------------------------------------------------------------- # $field = "total_$_$suffix" ; $input_style{$field} = qq~style="text-align:right;"~; $readonly{$field} = 'READONLY' ; # $fcol=2 ; # $preferred_placeholder{$field} = "Total $_" ; # # my $val = &q_get_val($db{$table}{$id}{$field}) ; # $add_form_fields .= &common_min_form_input_col($field,$db{$table}{$id}{$field},1) ; # #---------------------------------------------------------------------------------------------------- # $add_form_fields .= qq~
~ ; # $add_form_fields .= qq~
~ ; # } # $add_form_fields .= qq~
~ ; # for my $y (1 .. 5) { # $grand_tot += $year_totals{"yearly_totals_$y"} ; # $field ="yearly_totals_$y" ; # $readonly{$field} = 'READONLY' ; # # $year_totals{"yearly_totals_$y"} = &common_commify($year_totals{"yearly_totals_$y"}) ; # $input_style{$field} = qq~style="text-align:right;"~ ; # $fcol = 12 ; # $add_form_fields .= qq~
~ if $y <= 3 ; # $add_form_fields .= qq~~ ; # } # $trigger_jquery_raw .= qq~ # // console.log("suffix : "+$suffix) ;console.log("1") ; # if (\$("#selectPeriod").val() == 60) { # for (let ii = 1; ii <= 5; ii++) { # if (ii <= 3) { # \$("#year_"+ii+"_sum").removeClass("col-md-2").addClass("col-md-1") ; # \$("#total_"+ii+"").removeClass("col-md-2").addClass("col-md-1") # } # else if (ii <= 5 && ii > 3) { # \$("#year_"+ii+"_sum").removeClass("col-md-0").addClass("col-md-1") ; # \$("#total_"+ii+"").removeClass("col-md-0").addClass("col-md-1") ; # \$("#year_"+ii+"_sum").show() ; # \$("#total_"+ii+"").show() ; # } # for (let jj = 1; jj <= 3; jj++) { # if (ii <= 3) { # \$("#b_year_"+ii+"_"+jj+"").removeClass("col-md-2").addClass("col-md-1") ; # } # else if (ii <= 5 && ii > 3) { # \$("#b_year_"+ii+"_"+jj+"").removeClass("col-md-0").addClass("col-md-1") ; # \$("#b_year_"+ii+"_"+jj+"").show() ; # } # } # } # } # \$("#selectPeriod").on("change", function() { # for (let i = 1; i <= 5; i++) { # if (i <= 3 && \$(this).val() == 36) { # \$("#year_"+i+"_sum").removeClass("col-md-1").addClass("col-md-2") ; # \$("#total_"+i+"").removeClass("col-md-1").addClass("col-md-2") ; # } # else if (i <= 3 && \$(this).val() == 60) { # \$("#year_"+i+"_sum").removeClass("col-md-2").addClass("col-md-1") ; # \$("#total_"+i+"").removeClass("col-md-2").addClass("col-md-1") # } # else if (i <= 5 && i > 3 && \$(this).val() == 36) { # \$("#year_"+i+"_sum").removeClass("col-md-1").addClass("col-md-0") ; # \$("#total_"+i+"").removeClass("col-md-1").addClass("col-md-0") ; # \$("#year_"+i+"_sum").hide() ; # \$("#total_"+i+"").hide() ; # } # else if (i <= 5 && i > 3 && \$(this).val() == 60) { # \$("#year_"+i+"_sum").removeClass("col-md-0").addClass("col-md-1") ; # \$("#total_"+i+"").removeClass("col-md-0").addClass("col-md-1") ; # \$("#year_"+i+"_sum").show() ; # \$("#total_"+i+"").show() ; # } # for (let j = 1; j <= 3; j++) { # if (i <= 3 && \$(this).val() == 36) { # \$("#b_year_"+i+"_"+j+"").removeClass("col-md-1").addClass("col-md-2") ; # } # else if (i <= 5 && i > 3 && \$(this).val() == 36) { # \$("#b_year_"+i+"_"+j+"").removeClass("col-md-1").addClass("col-md-0") ; # \$("#b_year_"+i+"_"+j+"").hide() ; # } # else if (i <= 3 && \$(this).val() == 60) { # \$("#b_year_"+i+"_"+j+"").removeClass("col-md-2").addClass("col-md-1") ; # } # else if (i <= 5 && i > 3 && \$(this).val() == 60) { # \$("#b_year_"+i+"_"+j+"").removeClass("col-md-0").addClass("col-md-1") ; # \$("#b_year_"+i+"_"+j+"").show() ; # // if (\$("#b_year_"+i+"_"+j+"").text().trim() === '') { # // \$("#b_year_"+i+"_"+j+"").text("0.00") ; # // } # } # } # } # }); # ~ ; # $fcol = 2 ; # $field ="yearly_total" ; # $readonly{$field} = 'READONLY' ; # # $grand_tot = &common_commify($grand_tot) ; # $input_style{$field} = qq~style="text-align:right;"~ ; # $add_form_fields .= &common_min_form_input_col($field,$grand_tot,1) ; # $add_form_fields .= qq~
~ ; # $add_form_fields .= qq~
 
~ ; # &tab_content_box($sec_name,$sec_col); # # --------------- END PURCHASE SUMMARY ---------------------------------------------------------------------------------------------------------------- # } # if ($tab==5) { # Notes # # --------------- START NOTES ---------------------------------------------------------------------------------------------------------------- # my $sec = '_notes' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ; # $ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ; # if ($ret) { return ; } # $add_form_fields = '' ; # # &set_check_boxes_checked($id,$sec_cnt,"excl",$sec); # &db_min_ro('quote_notes','*',"id='1'",'','') ; # $add_form_fields .= qq~

Notes:

~ ; # &tab_build_terms_headers; # $cntnoteloop=1; for (1 .. 12) { &tab_build_terms_fields('note',$_,$id) ; } # $add_form_fields .= qq~

Payment Terms:

~ ; # &tab_build_terms_headers; # $cntnoteloop=1; for (1 .. 6) { &tab_build_terms_fields('payment_term',$_,$id) ; } # $add_form_fields .= qq~

ROE:

~ ; # &tab_build_terms_headers; # $cntnoteloop=1; for (1 .. 6) { &tab_build_terms_fields('roe',$_,$id) ; } # $add_form_fields .= qq~

Delivery Time:

~ ; # &tab_build_terms_headers; # $cntnoteloop=1; for (1 .. 4) { &tab_build_terms_fields('delivery_time',$_,$id) ; } # $add_form_fields .= qq~

Terms and Conditions:

~ ; # &tab_build_terms_headers; # $cntnoteloop=1; for (1 .. 1) { &tab_build_terms_fields_terms_and_conditions('terms',$_,$id) ; } # $trigger_jquery .= qq~\$("#selectTerms_chosen").css( "width", "100%" );~ ; # &tab_content_box($sec_name,$sec_col); # # --------------- END NOTES ---------------------------------------------------------------------------------------------------------------- # } if ($tab==3) { # Camera Details # --------------- START CAMERA DETAILS ---------------------------------------------------------------------------------------------------------------- $add_form_fields = '' ; my $sec = '_camera_details' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ; $ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ; if ($ret) { return ; } $add_form_fields = '' ; $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~
~ ; $add_form_fields .= qq~
~ ; $add_form_fields .= qq~
~ ; $add_form_fields .= qq~
~ ; $add_form_fields .= qq~
~ ; # my $suffix = $sec ; my $rcnt = 11 ; # my $suffix = $sec ; my $rcnt = 20 ; my $suffix = $sec ; my $rcnt = $max_cams ; # set in quotes.pl # our %linked_vpu = () ; our %vpu_serial_nr = () ; our %vpu_camera_nr = () ; &tab_camera_details_select_opts('cameras','camera_nr',"camera_nr NOT LIKE 'vpu%'",$suffix,$rcnt) ; $rcnt = $max_cams ; # reset in tab_camera_details_select_opts # &tab_camera_details_select_opts('cameras','camera_nr',"event_system_id < 1",$suffix,$rcnt) ; my $cam_qtys = '' ; # &common_debug("cam_qtys : quote_nr=$db{$table}{$id}{quote_nr}") ; foreach (keys %{$camera_system_count{$db{$table}{$id}{quote_nr}}}) { # &common_debug("cam_qtys : cam=$_, qty=$camera_system_count{$db{$table}{$id}{quote_nr}}{$_}") ; $cam_qtys .= qq~$_ : $camera_system_count{$db{$table}{$id}{quote_nr}}{$_}
~ ; } # our $cam_box_icon = qq~ ~ if $cam_qtys ; our $cam_box_icon = qq~ ~ if $cam_qtys ; # foreach (sort keys %sec_cnt) { # $_k = substr($_,1) ; # my @parts = split(/\-/,$sec_cnt{$_}) ; # $add_form_fields .= qq~

$parts[1] :

~ ; # &tab_build_qt_col_headers("$sec$_k"); # &build_cost_form($id,$tab,$parts[0],"$sec$_k"); # } # unless ($db{quote_notes}{1}{$inpfield}) { $checkit{$exfield} = 1 ; } # $add_form_fields .= qq~
~ ; # 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~~; } else { $cntcamloop++ ; } $add_form_fields .= 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~
$cam_display_plus_btn
~ ; $add_form_fields .= qq~
~ ; } $add_form_fields .= qq~
 
~ ; &tab_content_box($sec_name,$sec_col); $cam_box_icon = '' ; # --------------- END CAMERA DETAILS ---------------------------------------------------------------------------------------------------------------- } if ($tab==4) { # 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~

$parts[1] :

~ ; # # &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==5) { # 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~

Upload file from PC.

~; } } $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]") ; 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 ; } # &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~
$note_display_plus_btn
~ ; # } #------------------------------------------------------------------------------------ # 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~
$note_display_plus_btn
~ ; # } #------------------------------------------------------------------------------------ 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==4) { # 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{9} = 'nine' ; # $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 = 'Camera Details' ; } elsif ($tab==4) { $tabname = 'Invoice Details' ; } # elsif ($tab==7) { $tabname = 'Extended Warranty' ; } # elsif ($tab==8) { $tabname = 'Rental' ; } elsif ($tab==5) { $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;