sub build_workings_costings_forms_jquery {
my $description_options_costing = $opts{"description_costing_event_1"} ;
$description_options_costing =~ s/\SELECTED//g ;
$description_options_costing =~ s/\"/\'/g ;
my $description_options_workings = $opts{"description_workings_event_1"} ;
$description_options_workings =~ s/\SELECTED//g ;
$description_options_workings =~ s/\"/\'/g ;
our $operator_options = $opts{"operator_workings_event_1"} ;
$operator_options =~ s/\SELECTED//g ;
$operator_options =~ s/\"/\'/g ;
my $btn_ids_string = join(",",@btn_ids) ;
my $excl_field_ids_string = join(",",@excl_field_ids) ;
my $description_field_ids_string = join(",",@description_field_ids) ;
my $operator_field_ids_string = join(",",@operator_field_ids) ;
my $vat_field_ids_string = join(",",@vat_field_ids) ;
my $qty_field_ids_string = join(",",@qty_field_ids) ;
my $amount_usd_field_ids_string = join(",",@amount_usd_field_ids) ;
$trigger_jquery_raw .= qq~
// function update_qty_in_quote_tab_when_changing_nr_of_full_or_half_days
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^='inputAmount_usd_'],[id^='selectOperator_workings_event_']", function () {
const id = this.id ;
if ((id.includes("inputQty_") || id.includes("inputAmount_usd_")) && id.includes("costing_event")) {
let row_nr = get_row_nr(id) ;
let f_t = (\$("input[name='added_full_day_cost_item_"+row_nr+"']").val()) ? "full" : (\$("input[name='added_half_day_cost_item_"+row_nr+"']").val()) ? "half" : "" ;
if (f_t) {
let col = (id.includes("inputQty_")) ? "-2" : "-1" ;
let full_half_add = \$("input[name='added_"+f_t+"_day_cost_item_"+row_nr+"']").val() ;
let get_e_cost_id = (id.includes("inputAmount_usd_")) ? get_row_nr(\$("input[name='added_"+f_t+"_day_cost_item_"+row_nr+"']").val()) : "" ;
if (((id.includes("inputQty_") && \$(this).val() == nr_days[f_t]) || (id.includes("inputAmount_usd_") && \$(this).val() == default_cost_item_rates[f_t+","+get_e_cost_id])) && full_half_add && full_half_add.includes(col)) {
full_half_add = full_half_add.replace(col+"_","") ;
\$("input[name='added_"+f_t+"_day_cost_item_"+row_nr+"']").val(full_half_add) ;
} else if (full_half_add && !full_half_add.includes(col)) {
\$("input[name='added_"+f_t+"_day_cost_item_"+row_nr+"']").val(col+"_"+full_half_add) ;
}
}
} else if (id.includes("selectDescription_")) {
let this_id = id ;
let row_nr = get_row_nr(id) ;
let tab = (this_id.includes("_costing_event_")) ? "costing_event" : (this_id.includes("_workings_event_")) ? "workings_event" : "" ;
let full_day_exists = nr_days["full"] ; let half_day_exists = nr_days["half"] ;
let already_loaded_full_day = (\$("#"+this_id).val()) ? \$("input[name='full_"+tab+"_"+\$("#"+this_id).val()+"']").val() : "" ;
let already_loaded_half_day = (\$("#"+this_id).val()) ? \$("input[name='half_"+tab+"_"+\$("#"+this_id).val()+"']").val() : "" ;
already_loaded_full_day = (typeof already_loaded_full_day == 'undefined') ? "" : 1 ;
already_loaded_half_day = (typeof already_loaded_half_day == 'undefined') ? "" : 1 ;
if (already_loaded_full_day && already_loaded_half_day) {
return ;
}
if (already_loaded_full_day == 1) {
full_day_exists = 0 ;
}
if (already_loaded_half_day == 1) {
half_day_exists = 0 ;
}
let date_from = \$("input[name='date_from']").val() ;
date_from = date_from.substring(0,10) ;
let full_half_day = 0 ;
if (full_day_exists != 0) {
if ((typeof \$("input[name='full_"+tab+"_"+\$("#"+this_id).val()+"']").val() == 'undefined' || \$("input[name='full_"+tab+"_"+\$("#"+this_id).val()+"']").val()) && \$("#"+this_id).val()) {
\$("#content").append("") ;
}
full_half_day = 1 ;
// } else if (half_day_exists || (already_loaded_full_day && !half_day_exists && !already_loaded_half_day)) {
} else if (half_day_exists != 0) {
if ((typeof \$("input[name='half_"+tab+"_"+\$("#"+this_id).val()+"']").val() == 'undefined' || !\$("input[name='half_"+tab+"_"+\$("#"+this_id).val()+"']").val()) && \$("#"+this_id).val()) {
\$("#content").append("") ;
}
full_half_day = 2 ;
}
let rate_ = "" ;
if (default_cost_item_rates["full,"+\$("#"+this_id).val()] && full_half_day == 1) {
rate_ = default_cost_item_rates["full,"+\$("#"+this_id).val()] ;
} else if (default_cost_item_rates["half,"+\$("#"+this_id).val()] && full_half_day == 2) {
rate_ = default_cost_item_rates["half,"+\$("#"+this_id).val()] ;
}
if (rate_ == "") {
\$("input[name='added_full_day_cost_item_"+row_nr+"']").remove() ;
\$("input[name='added_half_day_cost_item_"+row_nr+"']").remove() ;
return ;
}
full_half_day = (full_half_day == 1) ? "full" : (full_half_day == 2) ? "half" : "" ;
\$("input[name='qty_"+tab+"_"+row_nr+"']").val(nr_days[full_half_day]) ;
\$("input[name='amount_usd_"+tab+"_"+row_nr+"']").val(rate_) ;
\$("input[name='amount_ttl_"+tab+"_"+row_nr+"']").val((rate_*nr_days[full_half_day]).toFixed(2)) ;
if (!\$("input[name='added_"+full_half_day+"_day_cost_item_"+row_nr+"']").val()) {
\$("#"+tab+"_"+row_nr).append("") ;
} else {
\$("input[name='added_"+full_half_day+"_day_cost_item_"+row_nr+"']").val("-3_"+\$(this).val()) ;
}
calc_totals(row_nr,tab) ;
}
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();
\$("#btn_row_"+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+",#inputAmount_usd_"+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(\$("#inputAmount_usd_"+tab+"_"+i).val()) * parseFloat(\$("#inputQty_"+tab+"_"+i).val()) * parseFloat(roe) ;
} else {
ttl = parseFloat(\$("#inputAmount_ttl_"+tab+"_"+i).val().replace(/,/g, ''))
}
// // // // \$("#inputAmount_ttl_"+tab+"_"+i).val(ttl.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2})) ;
\$("#inputAmount_ttl_"+tab+"_"+i).val(ttl.toFixed(2)) ;
if (!\$("#inputAmount_ttl_"+tab+"_"+i).val() || \$("#inputAmount_ttl_"+tab+"_"+i).val() == "NaN") {
\$("#inputAmount_ttl_"+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 = \$("#inputAmount_usd_"+tab+"_"+row_cnt) ;
var conv = \$("#inputAmount_ttl_"+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") {
} else if (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.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++ ;
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,"inputAmount_usd_"+tab+"_"+row_nr,"Amount "+row_nr,tindex,'',1) ; tindex++ ;
row = row+add_input(row_nr,"amount_ttl_"+tab+"_"+row_nr,"inputAmount_ttl_"+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 ;
}
~ ;
} #------------------------------------------------------------------------------------------
sub event_tabs_build_qt_left {
my ($id,$tab,$ret,$demo_page) = @_ ;
if ($tab == 1) { # Cusotmer Details
# --------------- START CUSOTMER DETAILS --------------------------------------------------------------------------------------------------------
my $title_ = ($demo_page) ? "Demo" : "Event" ;
my $sec = '_customer_details' ;
my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
$ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
return if $ret ;
$lcol = 3 ; $fcol = 1 ; $add_form_fields = '' ;
# $add_form_fields .= qq~
~ if $is_schools_manager ;
$add_form_fields .= qq~
~ if $glod_user_level < 3 ;
my $checked = ($db{$table}{$id}{quote_completed}) ? 'CHECKED' : '' ;
$preferred_title{quote_completed} = "$title_ Completed" ;
$add_form_fields .= &common_min_form_checkbox('quote_completed',$db{$table}{$id}{quote_completed},$checked) ;
# my $checked = 'CHECKED' if $db{$table}{$id}{quote_accepted} ;
my $checked = ($db{$table}{$id}{quote_accepted}) ? 'CHECKED' : '' ;
$preferred_title{quote_accepted} = "$title_ Accepted" ;
$add_form_fields .= &common_min_form_checkbox('quote_accepted',$db{$table}{$id}{quote_accepted},$checked) ;
my $checked = ($db{$table}{$id}{quote_rejected}) ? 'CHECKED' : '' ;
$preferred_title{quote_rejected} = "$title_ Rejected" ;
$add_form_fields .= &common_min_form_checkbox('quote_rejected',$db{$table}{$id}{quote_rejected},$checked) ;
# my $checked = 'CHECKED' if $db{$table}{$id}{quote_pending} or $iaction eq 'add' ;
my $checked = ($db{$table}{$id}{quote_pending} || $iaction eq 'add') ? 'CHECKED' : '' ;
$preferred_title{quote_pending} = "$title_ Pending" ;
$add_form_fields .= &common_min_form_checkbox('quote_pending',$db{$table}{$id}{quote_pending},$checked) ;
# my $checked = 'CHECKED' if $db{$table}{$id}{quote_cancelled} ;
my $checked = ($db{$table}{$id}{quote_cancelled}) ? 'CHECKED' : '' ;
$preferred_title{quote_cancelled} = "$title_ Cancelled" ;
$add_form_fields .= &common_min_form_checkbox('quote_cancelled',$db{$table}{$id}{quote_cancelled},$checked) ;
# $add_form_fields .= qq~
~ if $is_schools_manager ;
$add_form_fields .= qq~
~ if $glod_user_level < 3 ;
$fcol = 8 ;
$add_form_fields .= &common_min_form_input('contact_name',$db{$table}{$id}{contact_name},'') ;
$add_form_fields .= &common_min_form_input('address',$db{$table}{$id}{address},'') ;
$add_form_fields .= &common_min_form_input('email',$db{$table}{$id}{email},'') ;
$add_form_fields .= &common_min_form_input('tel',$db{$table}{$id}{tel},'') ;
$fcol = 5 ;
$add_form_fields .= qq~~ ;
&event_tabs_content_box($sec_name,$sec_col);
$trigger_jquery_raw .= qq~
if (!\$("#checkboxQuote_accepted").is(":checked") && !\$("#checkboxQuote_rejected").is(":checked") && !\$("#checkboxQuote_pending").is(":checked") && !\$("#checkboxQuote_cancelled").is(":checked") && !\$("#checkboxQuote_completed").is(":checked")) {
\$("#checkboxQuote_pending").prop("checked","true") ;
}
\$("#checkboxQuote_completed,#checkboxQuote_accepted,#checkboxQuote_rejected,#checkboxQuote_pending,#checkboxQuote_cancelled").click( function () {
if (this.id != 'checkboxQuote_completed' && \$("#checkboxQuote_completed").is(":checked")) {
\$("#checkboxQuote_completed").prop("checked",false) ;
}
if (this.id != 'checkboxQuote_accepted' && \$("#checkboxQuote_accepted").is(":checked")) {
\$("#checkboxQuote_accepted").prop("checked",false) ;
}
if (this.id != 'checkboxQuote_rejected' && \$("#checkboxQuote_rejected").is(":checked")) {
\$("#checkboxQuote_rejected").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 (this.id == 'checkboxQuote_completed' && !\$("#checkboxQuote_accepted").is(":checked")) {
\$("#checkboxQuote_accepted").prop("checked",true) ;
}
if (!\$("#checkboxQuote_accepted").is(":checked") && !\$("#checkboxQuote_rejected").is(":checked") && !\$("#checkboxQuote_pending").is(":checked") && !\$("#checkboxQuote_cancelled").is(":checked") && !\$("#checkboxQuote_completed").is(":checked")) {
\$("#checkboxQuote_pending").prop("checked","true") ;
}
}) ;
~ ;
# --------------- END CUSOTMER DETAILS ----------------------------------------------------------------------------------------------------------
}
if ($tab == 2) { # Cusotmer Details
# --------------- START CUSOTMER DETAILS --------------------------------------------------------------------------------------------------------
my $sec = '_event_details' ;
my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
$ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
return if $ret ;
# my $op_change = qq~~ ;
# for (1 .. $nr_of_system_names_and_clubs) {
# $op_change .= qq~,#selectOperator_id_calibration_$_~ ;
# }
# $op_change = substr($op_change,1) ;
$lcol = 2 ; $fcol = 3 ;
$add_form_fields = '' ;
$add_form_fields .= qq~
~ ;
# $fcol = 6 ;
$preferred_title{ref} = 'Event Name' ;
$preferred_title{date_from} = 'Event Date/Time From' ;
$preferred_title{date_to} = 'Event Date/Time To' ;
my $current_day_of_week = Day_of_Week($now_year,$now_mm,$now_dd) ;
my $delta_days = 6 - $current_day_of_week ;
$delta_days = 7 unless $delta_days ;
$delta_days = 6 if $delta_days < 0 ;
my ($def_year,$def_mon,$def_day) = Add_Delta_Days($now_year,$now_mm,$now_dd,$delta_days) ;
$def_mon = sprintf("%02d",$def_mon) ;
$def_day = sprintf("%02d",$def_day) ;
$db{$table}{$id}{date_from} = "$def_year-$def_mon-$def_day 08:00:00" unless $db{$table}{$id}{date_from} ;
$db{$table}{$id}{date_to} = "$def_year-$def_mon-$def_day 17:00:00" unless $db{$table}{$id}{date_to} ;
my $hide_select_1 = '' ; my $readonly_select = '' ; my $sport_type_ids_readonly = '' ; my $organisation_ids_readonly = '' ; my $linear_id_readonly = '' ; my $readonlyform = 0 ; # my $hide_select_2 = qq~~ ;
my $quote_accepted = $db{$table}{$id}{quote_accepted} ;
my $quote_rejected = $db{$table}{$id}{quote_rejected} ;
my $quote_cancelled = $db{$table}{$id}{quote_cancelled} ;
my $quote_completed = $db{$table}{$id}{quote_completed} ;
# $db{$table}{$event_id}{quote_completed}
# if (($quote_accepted || $quote_rejected || $quote_cancelled) && $glod_user_level < 4) {
if ((($quote_accepted || $quote_rejected || $quote_cancelled) && $glod_user_level < 3) || ($quote_completed && $glod_user_level <= 3)) {
for (1 .. 20) {
$readonly{"time_from_$_"} = "READONLY";
$readonly{"time_to_$_"} = "READONLY";
}
$readonlyform = 1 ;
$readonly{ref} = "READONLY" ; $readonly{date_from} = "READONLY" ; $readonly{date_to} = "READONLY" ; $readonly{qty} = "READONLY" ; $readonly{city_id} = "READONLY" ;
$add_form_fields .= &common_min_form_input('ref',$db{$table}{$id}{ref},'') ;
$add_form_fields .= &common_min_form_input('date_from',$db{$table}{$id}{date_from}) ;
$add_form_fields .= &common_min_form_input('date_to',$db{$table}{$id}{date_to}) ;
$hide_select_1 = qq~
~ ; # $hide_select_2 = qq~
~ ;
$readonly{sport_type_ids_readonly} = "READONLY" ; $readonly{region_id_readonly} = "READONLY" ; $readonly{city_id_readonly} = "READONLY" ; $readonly{organisation_ids_readonly} = "READONLY" ; $readonly{linear_id_readonly} = "READONLY" ;
$preferred_title{sport_type_ids_readonly} = "Sport Type(s)" ; $preferred_title{region_id_readonly} = "Regions" ; $preferred_title{city_id_readonly} = "City" ; $preferred_title{organisation_ids_readonly} = "Venue(s)" ; $preferred_title{linear_id_readonly} = "Linear" ;
foreach (split(",",$db{$table}{$id}{sport_type_ids})) {
$sport_type_ids_readonly .= qq~$db{sport_types}{$_}{name},~ ;
}
chop $sport_type_ids_readonly if $sport_type_ids_readonly ;
foreach (split(",",$db{$table}{$id}{organisation_ids})) {
$organisation_ids_readonly .= qq~$db{organisations}{$_}{name},~ ;
}
chop $organisation_ids_readonly if $organisation_ids_readonly ;
local %linear_vals = () ; $linear_vals{1} = "Yes" ; $linear_vals{2} = "No" ; $linear_vals{3} = "Delayed" ;
# my $cities_readoly = qq~~ ;
# foreach my $city_id (split(",",$db{$table}{$id}{city_id})) {
# $cities_readoly .= qq~$db{cities}{$city_id}{city}, ~ ;
# }
# chop $cities_readoly if $cities_readoly ; chop $cities_readoly if $cities_readoly ;
my $cities_readoly = join (", ", map { "$db{cities}{$city_id}{name}" } split(/\,/,$db{$table}{$id}{city_id})) ;
# $readonly_select .= &common_min_form_input('sport_type_ids_readonly',$db{sport_types}{$db{$table}{$id}{sport_type_ids}}{name},'') ;
$readonly_select .= &common_min_form_input('sport_type_ids_readonly',$sport_type_ids_readonly ,'') ;
$readonly_select .= &common_min_form_input('region_id_readonly',$db{regions}{$db{$table}{$id}{region_id}}{name},'') ;
$readonly_select .= &common_min_form_input('city_id_readonly',$cities_readoly,'') ;
# $readonly_select .= &common_min_form_input('organisation_ids_readonly',$db{organisations}{$db{$table}{$id}{organisation_ids}}{name},'') ;
$readonly_select .= &common_min_form_input('organisation_ids_readonly',$organisation_ids_readonly,'') ;
$readonly_select .= &common_min_form_input('linear_id_readonly',$linear_vals{$db{$table}{$id}{linear_id}},'') ;
} else {
$add_form_fields .= &common_min_form_input('ref',$db{$table}{$id}{ref},'') ;
$readonly{date_from} = "READONLY" ; $readonly{date_to} = "READONLY" ;
$add_form_fields .= &common_min_form_datetimepicker('date_from',$db{$table}{$id}{date_from}) ;
$add_form_fields .= &common_min_form_datetimepicker('date_to',$db{$table}{$id}{date_to}) ;
$dlg{sport_type_ids} = qq~
$db{$table}{$id}{sports_type}~ ;
$dlg{sport_type_ids} .= qq~
~ ;
$dlg{city_id} .= qq~
$db{$table}{$id}{city}~ ;
$dlg{city_id} .= qq~
~ ;
$dlg{organisation_ids} .= qq~
$db{$table}{$id}{location}~ ;
$dlg{organisation_ids} .= qq~
~ ;
$dlg{region_id} .= qq~
$db{$table}{$id}{location}~ ;
$dlg{region_id} .= qq~
~ ;
}
# $fcol = 1 ;
$preferred_title{qty} = 'Actual Days' ; $dont_end_row{qty} = 1 ;
# if (($quote_accepted || $quote_rejected || $quote_cancelled) && $glod_user_level < 4) { $readonly{qty} = "READONLY" ; }
# if (($quote_accepted || $quote_rejected || $quote_cancelled) && $glod_user_level < 3) { $readonly{qty} = "READONLY" ; }
if ((($quote_accepted || $quote_rejected || $quote_cancelled) && $glod_user_level < 3) || ($quote_completed && $glod_user_level <= 3)) { $readonly{qty} = "READONLY" ; }
my @times_from = split(/\;/,";$db{$table}{$id}{times_from}") ;
my @times_to = split(/\;/,$db{$table}{$id}{times_to}) ;
my @default = () ; my $saved_time_from = qq~~ ; my $saved_time_to = qq~~ ;
my $year = ($db{$table}{$id}{date_from}) ? substr($db{$table}{$id}{date_from},0,4) : $now_year ;
my $month = ($db{$table}{$id}{date_from}) ? substr($db{$table}{$id}{date_from},5,2) : $now_mm ;
my $day = ($db{$table}{$id}{date_from}) ? substr($db{$table}{$id}{date_from},8,2) : $now_dd ;
$fcol = 1 ;
$radio_opts{event_length} = "Full Day+Half Day" ;
# my $cnt_radio_opts = 0 ;
# foreach (split(/\+/,$radio_opts{event_length})) {
# $cnt_radio_opts++ ;
# }
my @timepicker_ids = () ; my @day_ids = () ;
my %default_days_selected = () ; our %default_active_event_dates = () ;
# our $final_day_active = 0 ; local $cnt_days = 0 ;
# foreach (@defaut_days_active) {
# $cnt_days++ ;
# $final_day_active = $cnt_days if $_ ;
# }
my ($year1,$month1,$day1) = split(/\-/,substr($db{$table}{$id}{date_from},0,10));
my ($year2,$month2,$day2) = split(/\-/,substr($db{$table}{$id}{date_to},0,10));
our $final_day = Delta_Days($year1,$month1,$day1,$year2,$month2,$day2) + 1 ;
our @defaut_days_active = split(/\;/,$db{$table}{$id}{days_active}) ;
my $event_without_saved_defaults = 0 ;
if (!$db{$table}{$id}{days_active}) {
$event_without_saved_defaults = 1 ;
# my $def_qty = ($db{$table}{$id}{qty}) ? $db{$table}{$id}{qty} : 1 ;
for (1 .. $final_day) {
# for (1 .. $def_qty) {
$db{$table}{$id}{days_active} .= "1;" ;
}
# $trigger_jquery .= qq~\$("#selectDay_1_chosen").css("width","100%" );~ if $def_qty== 1 ;
}
my @default_event_length = split(/\;/,$db{$table}{$id}{event_length}) ; my %calc_default_event_length = () ;
my @days_active = split(/\;/,$db{$table}{$id}{days_active}) ;
my $cnt = 0 ;
# my $final_day = 0 ;
my $no_event_days_cnt = 0 ;
my $hide_rows_1 = (substr($db{$table}{$id}{date_from},0,10) eq substr($db{$table}{$id}{date_to},0,10)) ? "style='display:none;'" : "" ;
my $hide_rows_2 = ($final_day <= 10) ? "style='display:none;'" : "" ;
my %time_label_header_row = () ;
$time_label_header_row{1} = qq~
~ ;
$time_label_header_row{2} = qq~
~ ;
# foreach (@days_active) {
# $cnt++ ;
# $final_day = $cnt if $_ ;
# }
# $final_day = 1 unless $final_day ;
# $final_day = $db{$table}{$id}{qty} if $db{$table}{$id}{qty} && !$days_active[$db{$table}{$id}{qty}-1] ;
my $def_nr_of_full_days = 0 ; my $def_nr_of_half_days = 0 ;
for (1 .. 20) {
my $cnt_row = ($_ <= 10) ? 1 : 2 ;
$default_days_selected{blank}{$_} = "SELECTED" unless $days_active[$_ - 1] ;
$default_days_selected{1}{$_} = "SELECTED" if $days_active[$_ - 1] ;
push @timepicker_ids,"#timepickerTime_from_$_" ;
push @timepicker_ids,"#timepickerTime_to_$_" ;
push @day_ids,"#day_$_" ;
my ($new_year,$new_month,$new_day) = ($_ > 1) ? Add_Delta_Days($year,$month,$day,$_-1) : ($year,$month,$day) ;
$new_day = sprintf("%02s",$new_day) ;
$new_month = sprintf("%02s",$new_month) ;
# $default_active_event_dates{$_} = "$new_year-$new_month-$new_day" if $days_active[$_ - 1] ;
$default_active_event_dates{$_} = "$new_year-$new_month-$new_day" if $_ <= $final_day ;
my $field = "time_from_$_" ;
$default[$_ - 1] = $times_from[$_ - 1] ;
$default[$_ - 1] = substr($db{$table}{$id}{date_from},11) if $db{$table}{$id}{date_from} && (!$times_from[$_ - 1] || $_ == 1) ;
my $default1 = $default[$_ - 1] ;
$custom_style{$field} = ((!$event_without_saved_defaults && !$defaut_days_active[$_ - 1]) || $_ == 1 || ($_ > $final_day)) ? qq~display:none;~ : '' ;
# $days_time_row .= ($glod_user_level > 2) ? &common_min_form_timepicker_col($field,$default[$_ - 1],'',1) : ($readonly{qty} ne "READONLY" || ($final_day >= $_ && !$custom_style{$field})) ? qq~
~ : qq~
~ ;
$days_time_row{$cnt_row} .= ($readonly{qty} ne "READONLY") ? &common_min_form_timepicker_col($field,$default[$_ - 1],'',1) : ($readonly{qty} eq "READONLY" && ($final_day >= $_ && !$custom_style{$field})) ? qq~
~ : qq~
~ ;
$trigger_jquery_raw .= qq~\$("#timepickerTime_from_1").css("display","none");~ ;
# $default_time_from .= qq~"$_":"$default[$_ - 1]",~ ;
$saved_time_from .= qq~"$_":"$times_from[$_ - 1]",~ if $times_from[$_ - 1] ;
# $final_day = $_ if $times_from[$_ - 1] ;
$field = "time_to_$_" ;
$custom_style{$field} = ((!$event_without_saved_defaults && !$defaut_days_active[$_ - 1]) || $_ >= $final_day) ? qq~display:none;~ : '' ;
$default[$_ - 1] = $times_to[$_ - 1] ;
$default[$_ - 1] = substr($db{$table}{$id}{date_to},11) if $db{$table}{$id}{date_to} && (!$times_to[$_ - 1] || $_ == 6) ;
#___
# $days_time_row_2 .= ($readonly{qty} ne "READONLY") ? &common_min_form_timepicker_col($field,$default[$_ - 1],'',1) : ($final_day >= $_ && !$custom_style{$field}) ? &common_min_form_input_col($field,$default[$_ - 1],'',0) : qq~
~ ;
# $days_time_row_2 .= ($glod_user_level > 2) ? &common_min_form_timepicker_col($field,$default[$_ - 1],'',1) : ($readonly{qty} ne "READONLY" || ($final_day >= $_ && !$custom_style{$field})) ? qq~
~ : qq~
~ ;
$days_time_row_2{$cnt_row} .= ($readonly{qty} ne "READONLY") ? &common_min_form_timepicker_col($field,$default[$_ - 1],'',1) : ($readonly{qty} eq "READONLY" && ($final_day >= $_ && !$custom_style{$field})) ? qq~
~ : qq~
~ ;
# $trigger_jquery_raw .= qq~\$("#timepickerTime_from_$_").css("display","none");~ if $db{$table}{$id}{qty} < $_ ;
# if (!$db{$table}{$id}{days_active} && ($db{$table}{$id}{qty} != 1 || !$db{$table}{$id}{event_length}) && $db{$table}{$id}{qty} >= $_) {
# if (!$db{$table}{$id}{days_active} || ($days_active[$_ - 1] && !$default_event_length[$_ - 1])) {
# $trigger_jquery .= qq~
# \$("#radio_1_1").prop('checked',true) ;
# ~ if $_ == 1 ;
if ($default_event_length[$_ - 1] eq '1' && $days_active[$_ - 1]) {
$def_nr_of_full_days++ ;
} elsif ($default_event_length[$_ - 1] eq '2' && $days_active[$_ - 1]) {
$def_nr_of_half_days++ ;
}
if (!$db{$table}{$id}{event_length}) {
my ($h1,$m1,$s1) = ($_ == 1 || !$times_from[$_ - 1]) ? split(/\:/,substr($db{$table}{$id}{date_from},11)) : split(/\:/,$times_from[$_ - 1]) ;
my ($h2,$m2,$s2) = split(/\:/,substr($db{$table}{$id}{date_to},11)) ;
my $time_diff = 3600*($h2-$h1) + 60*($m2-$m1) + ($s2-$s1) ;
if ($time_diff >= 18000) {
$calc_default_event_length{$_} = 1 ;
$trigger_jquery .= qq~
\$("#radio_$_\_1").prop('checked',true) ;
~ if $readonly{qty} ne "READONLY" ;
# $def_nr_of_full_days++ if $default_event_length[$_ - 1] ;
} elsif ($time_diff >= 0 && $time_diff < 18000) {
$calc_default_event_length{$_} = 2 ;
$trigger_jquery .= qq~
\$("#radio_$_\_2").prop('checked',true) ;
~ if $readonly{qty} ne "READONLY" ;
# $def_nr_of_half_days++ if $default_event_length[$_ - 1] ;
}
$trigger_jquery .= qq~
\$("#day_$_").val("1") ;
\$("#day_$_").trigger("chosen:updated") ;
~ if $_ <= $final_day && $readonly{qty} ne "READONLY" ;
} elsif ($_ <= $final_day) {
# $days_active[$_ - 1
# my ($h1,$m1,$s1) = split(/\:/,$times_from[$_ - 1]) ;
# my ($h2,$m2,$s2) = split(/\:/,$times_to[$_ - 1]) ;
# my $time_diff = 3600*($h2-$h1) + 3600*($m2-$m1) + ($s2-$s1) ;
if ($default_event_length[$_ - 1]) {
if ($default_event_length[$_-1] eq "1") {
$trigger_jquery .= qq~
// \$("input[name='selected_$_\_event_length']").val("1") ;
\$("#radio_$_\_1").prop('checked',true) ;
~ ;
# $def_nr_of_full_days++ ;
} elsif ($default_event_length[$_-1] eq "2") {
$trigger_jquery .= qq~
// \$("input[name='selected_$_\_event_length']").val("2") ;
\$("#radio_$_\_2").prop('checked',true) ;
~ ;
# $def_nr_of_half_days++ ;
}
} else {
my ($h1,$m1,$s1) = split(/\:/,substr($db{$table}{$id}{date_from},11)) ;
my ($h2,$m2,$s2) = split(/\:/,substr($db{$table}{$id}{date_to},11)) ;
my $time_diff = 3600*($h2-$h1) + 60*($m2-$m1) + ($s2-$s1) ;
if ($time_diff >= 18000) {
$calc_default_event_length{$_} = 1 ;
$trigger_jquery .= qq~
\$("#radio_$_\_1").prop('checked',true) ;
~ if $readonly{qty} ne "READONLY" ;
# $def_nr_of_full_days++ ;
} elsif ($time_diff >= 0 && $time_diff < 18000) {
$calc_default_event_length{$_} = 2 ;
$trigger_jquery .= qq~
\$("#radio_$_\_2").prop('checked',true) ;
~ if $readonly{qty} ne "READONLY" ;
# $def_nr_of_half_days++ ;
}
}
}
if ((!$days_active[$_ - 1] && $_ > $final_day) || ($db{$table}{$id}{days_active} == ";;;;;") || (!$days_active[$_ - 1] && $_ <= $final_day)) {
$trigger_jquery .= qq~\$("#radio_$_\_1").css("display","none") ; ~ ;
$trigger_jquery .= qq~\$("#radio_$_\_2").css("display","none") ; ~ ;
}
# $default_time_to .= qq~"$_":"$default[$_ - 1]",~ ;
$saved_time_to .= qq~"$_":"$times_to[$_ - 1]",~ if $times_to[$_ - 1] ;
$field = "day_$_" ;
$custom_style{$field} = ($final_day < $_ || $final_day == 1) ? qq~display:none;~ : '' ;
if ($readonly{qty} ne "READONLY") {
# if ($glod_user_level > 2) {
$trigger_jquery .= qq~\$("#day_$_\_chosen").css("display","none");~ if $_ > $final_day || $final_day == 1 ;
# $time_label_header_row .= qq~
~ ;
$time_label_header_row{$cnt_row} .= qq~
~ ;
# $trigger_jquery .= qq~ console.log("Day $_ : ;$default_days_selected{blank}{$_};$default_days_selected{1}{$_}; "+\$("#day_$_").val()) ; ~ ;
} else {
$time_label_header_row{$cnt_row} .= (!$default_days_selected{1}{$_}) ? qq~
~ : qq~
~ ;
}
}
$def_nr_of_full_days = 1 if !$def_nr_of_full_days && !$def_nr_of_half_days ;
$trigger_jquery_raw .= qq~\$("#timepickerTime_to_$final_day").css("display","none");~ if $final_day ;
my $day_ids_string = join(",",@day_ids) ;
# chop $default_time_from if $default_time_from ; chop $default_time_to if $default_time_to ;
$trigger_jquery_raw .= qq~
// let [nr_days["full"],nr_days["half"]] = count_nr_of_full_day_and_half_days() ;
let nr_days = {} ; let prev_nr_days = {} ;
nr_days["full"] = "$def_nr_of_full_days" ;
nr_days["half"] = "$def_nr_of_half_days" ;
nr_days["full"] = parseInt(nr_days["full"]) ;
nr_days["half"] = parseInt(nr_days["half"]) ;
prev_nr_days["full"] = nr_days["full"] ; prev_nr_days["half"] = nr_days["half"] ;
const default_cost_item_rates = {$default_cost_item_rates_javascript} ;
// const default_full_day_cost_item_rates = {$default_full_day_cost_item_rates_javascript} ;
// const default_half_day_cost_item_rates = {$default_half_day_cost_item_rates_javascript} ;
let ij = 0 ; let orig_selected_system_names = {} ;
// const get_event_cost_id = {"63":"24","286":"25","285":"10"} ; // TESTING
const get_event_cost_id = {$get_event_cost_id_from_system_id_javascript} ; // TESTING
let cnt_systems_per_cost_item = {} ;
let changed_radio_cnt = 0 ; let system_with_cost_item_rates_selected = 0 ;
let saved_time_from = {$saved_time_from} ;
let saved_time_to = {$saved_time_to} ;
// while (true) {
// ij++ ;
// if (!\$("#system_name_row_"+ij).html()) {
// break ;
// }
// orig_selected_system_names[ij] = (\$("#selectSystem_name_"+ij).val()) ? \$("#selectSystem_name_"+ij).val() : "" ;
// if (default_cost_item_rates[get_event_cost_id[\$("#selectSystem_name_"+ij).val()]]) {
// system_with_cost_item_rates_selected = 1 ;
// }
// }
~ ;
$trigger_jquery_raw .= qq~
cnt_selected_systems_per_cost_item() ;
~ if $cntxt{4} ;
$trigger_jquery_raw .= qq~
\$("#days_drop_downs_1 [id^='day_'],#days_drop_downs_2 [id^='day_']").on("change", function (e) {
// \$("$day_ids_string").change(function (e) {
console.log("changed day "+this.id) ;
update_qty_in_quote_tab_when_changing_nr_of_full_or_half_days() ;
const id = this.id ;
let col_nr = get_row_nr(id) ;
// const secondLastIndex = beforeLastUnderscore.lastIndexOf('_');
// const changedInput = beforeLastUnderscore.substring(secondLastIndex + 1);
let nr_days = \$("input[name='qty']").val() ;
let nr_of_active_days = calc_nr_of_active_days() ;
let datesBetween ;
let date_counter = 0 ; let dates_map = {} ;
// if ((\$\(this).val() && (nr_of_active_days == 7 || nr_of_active_days == 11)) || (!\$\(this).val() && (nr_of_active_days == 6 || nr_of_active_days == 10))) {
datesBetween = getDatesBetween(\$("input[name='date_from']").val(),\$("input[name='date_to']").val(),0) ;
for (const date of datesBetween) {
date_counter++ ;
dates_map[date_counter] = date ;
// console.log("date_counter : "+date_counter+" , dates_map[date_counter] : "+dates_map[date_counter]) ;
}
// }
let all_added_dropdowns = "#1" ;
let all_added_dropdowns_chosen = "#1" ;
// let select_chosen_ids_1 = '#3' ;
// let select_chosen_ids_2 = '#4' ;
// let def_val = 0 ;
// if (\$("#day_"+b).val()) {
// def_val = \$("#selectCustom_operator_"+a+"_"+b).val() ;
// add_operator_dropdown("day_"+b+"_name_"+a+"_extra_1","day_"+a+"_"+b+"_extra_1","custom_operator_"+a+"_"+b,"selectCustom_operator_"+a+"_"+b,dates_map[b],a,0) ;
// select_chosen_ids_1 = select_chosen_ids_1+",#selectCustom_operator_"+a+"_"+b ;
// select_chosen_ids_2 = select_chosen_ids_2+",#selectCustom_operator_"+a+"_"+b+"_chosen" ;
// names_to_display = names_to_display + ",#day_"+b+"_name_"+a+"_extra_1" ;
// }
// delete_operator_dropdown ("day_"+b+"_name","day_"+a+"_"+b) ;
// delete_operator_dropdown ("day_"+b+"_name_"+a+"_extra_1","day_"+a+"_"+b+"_extra_2") ;
// if (!\$("#selectCustom_operator_"+a+"_"+b).val() && def_val) {
// \$("#selectCustom_operator_"+a+"_"+b).val(def_val) ;
// \$("#selectCustom_operator_"+a+"_"+b).trigger("chosen:updated") ;
// }
// }
let def_val = 0 ;
let hide_this_1 = '' ;
let hide_this_2 = '' ;
if (!\$\(this).val()) {
\$("#timepickerTime_from_"+col_nr+"").css("display","none") ;
\$("#timepickerTime_to_"+col_nr+"").css("display","none") ;
\$("#radio_"+col_nr+"_1").css("display","none") ;
\$("#radio_"+col_nr+"_2").css("display","none") ;
nr_days=nr_days-1;
if (nr_of_active_days < 6) {
\$("#day_"+col_nr+"_name").css("display","none") ;
\$("#day_"+col_nr+"_name").removeClass('col-md-1').addClass('col-md-0') ;
}
for (let q=1;q<=15;q++) {
if (\$("input[name='clicked_button_"+q+"']").val()) {
if (nr_of_active_days <= 6 && q > 1 && !\$("#extra_heading_"+q).is(":hidden")) {
\$("#extra_heading_"+q).hide() ;
console.log("Hide Heading") ;
} else if (nr_of_active_days > 6 && q > 1 && \$("#extra_heading_"+q).length && \$("#extra_heading_"+q).is(":hidden") && \$("input[name='clicked_button_"+q+"']").val()) {
\$("#extra_heading_"+q).show() ;
console.log("Display Heading") ;
} else if (nr_of_active_days > 6 && q > 1 && !\$("#extra_heading_"+q).length && \$("input[name='clicked_button_"+q+"']").val()) {
console.log("Add Heading") ;
\$("#system_name_row_"+q).before("") ;
}
if (nr_of_active_days < 6) {
\$("#day_"+q+"_"+col_nr).css("display","none") ;
\$("#day_"+q+"_"+col_nr).removeClass('col-md-1').addClass('col-md-0') ;
} else if (nr_of_active_days == 6) {
if (q > 1 && !\$("#extra_heading_"+q).is(":hidden")) {
\$("#extra_heading_"+q).hide() ;
}
for (let col=1;col<=20;col++) {
if (\$("#day_"+col).val() && !\$("#day_"+q+"_"+col).html()) {
add_operator_dropdown ("day_"+col+"_name","day_"+q+"_"+col,"custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q,0) ;
all_added_dropdowns = all_added_dropdowns + ",#selectCustom_operator_"+q+"_"+col ;
all_added_dropdowns_chosen = all_added_dropdowns_chosen + ",selectCustom_operator_"+q+"_"+col+"_chosen" ;
} else if (!\$("#day_"+col).val() && dates_map[col] && !\$("#day_"+q+"_"+col).html()) {
add_operator_dropdown ("day_"+col+"_name","day_"+q+"_"+col,"custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q,1) ;
all_added_dropdowns = all_added_dropdowns + ",#selectCustom_operator_"+q+"_"+col ;
all_added_dropdowns_chosen = all_added_dropdowns_chosen + ",selectCustom_operator_"+q+"_"+col+"_chosen" ;
} else if (\$("#day_"+col).val() && \$("#day_"+q+"_"+col).html() && \$("#day_"+q+"_"+col).is(":hidden")) {
display_non_empty_operator_dropdown("day_"+col+"_name","day_"+q+"_"+col) ;
}
delete_operator_dropdown ("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1") ;
// console.log("hide_operator_dropdown : ) ;
}
\$("#system_name_row_"+q+"_extra_1").hide() ;
\$("#day_names_"+q+"_extra_1").hide() ;
} else if (nr_of_active_days > 6 && nr_of_active_days < 10) {
// hide_non_empty_operator_dropdown("day_"+col_nr+"_name","day_"+q+"_"+col_nr) ;
hide_non_empty_operator_dropdown("day_"+col_nr+"_name_"+q+"_extra_1","day_"+q+"_"+col_nr+"_extra_1") ;
} else if (nr_of_active_days == 10) {
for (let col=1;col<=20;col++) {
if (\$("#day_"+col).val() && dates_map[col]) {
add_operator_dropdown ("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1","custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q,0) ;
all_added_dropdowns = all_added_dropdowns + ",#selectCustom_operator_"+q+"_"+col ;
all_added_dropdowns_chosen = all_added_dropdowns_chosen + ",#selectCustom_operator_"+q+"_"+col+"_chosen" ;
} else if (!\$("#day_"+col).val() && dates_map[col]) {
add_operator_dropdown ("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1","custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q,1) ;
all_added_dropdowns = all_added_dropdowns + ",#selectCustom_operator_"+q+"_"+col ;
all_added_dropdowns_chosen = all_added_dropdowns_chosen + ",#selectCustom_operator_"+q+"_"+col+"_chosen" ;
} else if (\$("#day_"+col).val() && \$("#day_"+q+"_"+col+"_extra_1").html() && \$("#day_"+q+"_"+col+"_extra_1").is(":hidden")) {
display_non_empty_operator_dropdown("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1") ;
}
delete_operator_dropdown ("day_"+col+"_name_"+q+"_extra_2","day_"+q+"_"+col+"_extra_2") ;
}
hide_non_empty_operator_dropdown("day_"+col_nr+"_name_"+q+"_extra_1","day_"+q+"_"+col_nr+"_extra_1") ;
\$("#system_name_row_"+q+"_extra_1").show() ;
\$("#day_names_"+q+"_extra_1").show() ;
\$("#system_name_row_"+q+"_extra_2").hide() ;
\$("#day_names_"+q+"_extra_2").hide() ;
} else if (nr_of_active_days > 10) {
let nr_dates_used = 0 ;
console.log("de select : #nr_of_active_days : "+nr_of_active_days) ;
for (let col=1;col<=20;col++) {
if (nr_dates_used == 10 && !dates_map[col]) {
break ;
}
if (\$("#day_"+col).val() && dates_map[col] && nr_dates_used < 10) {
nr_dates_used++ ;
if (\$("#day_"+q+"_"+col+"_extra_1").is(":hidden")) {
def_val = \$("#selectCustom_operator_"+q+"_"+col).val() ;
add_operator_dropdown ("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1","custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q,0) ;
all_added_dropdowns = all_added_dropdowns + ",#selectCustom_operator_"+q+"_"+col ;
all_added_dropdowns_chosen = all_added_dropdowns_chosen + ",#selectCustom_operator_"+q+"_"+col+"_chosen" ;
delete_operator_dropdown("day_"+col+"_name_"+q+"_extra_2","day_"+q+"_"+col+"_extra_2",0) ;
if (!\$("#selectCustom_operator_"+q+"_"+col).val() && def_val) {
\$("#selectCustom_operator_"+q+"_"+col).val(def_val) ;
\$("#selectCustom_operator_"+q+"_"+col).trigger("chosen:updated") ;
}
}
} else if (!\$("#day_"+col).val() && dates_map[col]) {
add_operator_dropdown ("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1","custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q,1) ;
if (!\$("#day_"+q+"_"+col+"_extra_1").is(":hidden")) {
hide_this_1 = "day_"+col+"_name_"+q+"_extra_1" ;
hide_this_2 = "day_"+q+"_"+col+"_extra_1" ;
}
if (!\$("#day_"+q+"_"+col+"_extra_2").is(":hidden") && col > 10) {
hide_this_1 = "day_"+col+"_name_"+q+"_extra_2" ;
hide_this_2 = "day_"+q+"_"+col+"_extra_2" ;
}
}
}
}
}
if (hide_this_1) {
console.log("hide this : "+hide_this_1+" , "+hide_this_2) ;
hide_non_empty_operator_dropdown (hide_this_1,hide_this_2) ;
}
}
} else {
if (col_nr != "1") {
\$("#timepickerTime_from_"+col_nr).css("display","") ;
}
\$("#timepickerTime_to_"+col_nr).css("display","") ;
\$("#radio_"+col_nr+"_1").css("display","") ;
\$("#radio_"+col_nr+"_2").css("display","") ;
nr_days=parseInt(nr_days)+1;
for (let q=1;q<=15;q++) {
if (\$("input[name='clicked_button_"+q+"']").val()) {
\$("#day_"+q+"_"+col_nr).css("display","") ;
if (\$("#selectCustom_operator_"+q+"_"+col_nr+"_chosen").css("width") !== "100%"){
\$("#selectCustom_operator_"+q+"_"+col_nr+"_chosen").css("width","100%") ;
}
}
}
if (nr_of_active_days <= 6 && \$("#clicked_any_button").text() && \$("#day_"+col_nr+"_name").css("display") === "none") {
\$("#day_"+col_nr+"_name").show() ;
\$("#day_"+col_nr+"_name").removeClass('col-md-0').addClass('col-md-1') ;
}
for (let q=1;q<=15;q++) {
if (\$("input[name='clicked_button_"+q+"']").val()) {
if (nr_of_active_days <= 6 && q > 1 && !\$("#extra_heading_"+q).is(":hidden")) {
\$("#extra_heading_"+q).hide() ;
console.log("Hide Heading") ;
} else if (nr_of_active_days > 6 && q > 1 && \$("#extra_heading_"+q).length && \$("#extra_heading_"+q).is(":hidden") && \$("input[name='clicked_button_"+q+"']").val()) {
\$("#extra_heading_"+q).show() ;
console.log("Display Heading") ;
} else if (nr_of_active_days > 6 && q > 1 && !\$("#extra_heading_"+q).length && \$("input[name='clicked_button_"+q+"']").val()) {
console.log("Add Heading") ;
\$("#system_name_row_"+q).before("") ;
}
if (q > 1 && \$("#extra_heading_"+q).is(":hidden")) {
\$("#extra_heading_"+q).show() ;
}
if (nr_of_active_days <= 6) {
\$("#day_"+q+"_"+col_nr).show() ;
\$("#day_"+q+"_"+col_nr).removeClass('col-md-0').addClass('col-md-1') ;
console.log("#day_"+q+"_"+col_nr) ;
} else if (nr_of_active_days == 7) {
for (let col=1;col<=20;col++) {
def_val = \$("#selectCustom_operator_"+q+"_"+col).val() ;
if (\$("#day_"+col).val()) {
add_operator_dropdown ("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1","custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q,0) ;
all_added_dropdowns = all_added_dropdowns + ",#selectCustom_operator_"+q+"_"+col ;
all_added_dropdowns_chosen = all_added_dropdowns_chosen + ",#selectCustom_operator_"+q+"_"+col+"_chosen" ;
} else if (!\$("#day_"+col).val() && dates_map[col]) {
add_operator_dropdown ("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1","custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q,1) ;
all_added_dropdowns = all_added_dropdowns + ",#selectCustom_operator_"+q+"_"+col ;
all_added_dropdowns_chosen = all_added_dropdowns_chosen + ",#selectCustom_operator_"+q+"_"+col+"_chosen" ;
} else if (\$("#day_"+col).val() && \$("#day_"+q+"_"+col).html() && \$("#day_"+q+"_"+col).is(":hidden")) {
display_non_empty_operator_dropdown("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1") ;
}
delete_operator_dropdown ("day_"+col+"_name","day_"+q+"_"+col) ;
if (!\$("#selectCustom_operator_"+q+"_"+col).val() && def_val) {
\$("#selectCustom_operator_"+q+"_"+col).val(def_val) ;
\$("#selectCustom_operator_"+q+"_"+col).trigger("chosen:updated") ;
}
}
\$("#day_"+col_nr+"_name").hide() ;
\$("#system_name_row_"+q+"_extra_1").show() ;
\$("#day_names_"+q+"_extra_1").show() ;
} else if (nr_of_active_days > 7 && nr_of_active_days <= 10) {
display_non_empty_operator_dropdown("day_"+col_nr+"_name_"+q+"_extra_1","day_"+q+"_"+col_nr+"_extra_1") ;
hide_non_empty_operator_dropdown("day_"+col_nr+"_name","day_"+q+"_"+col_nr) ;
} else if (nr_of_active_days >= 11) {
let date_used = {} ; let date_used_hidden = {} ; let nr_dates_used = 0 ;
for (let col=1;col<=20;col++) {
if (nr_dates_used == 10 && !dates_map[col]) {
break ;
}
if (\$("#day_"+col).val() && dates_map[col] && nr_dates_used < 10) {
date_used[col] = 1 ;
nr_dates_used++ ;
add_operator_dropdown ("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1","custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q,0) ;
all_added_dropdowns = all_added_dropdowns + ",#selectCustom_operator_"+q+"_"+col ;
all_added_dropdowns_chosen = all_added_dropdowns_chosen + ",#selectCustom_operator_"+q+"_"+col+"_chosen" ;
} else if (!\$("#day_"+col).val() && dates_map[col]) {
date_used_hidden[col] = 1 ;
add_operator_dropdown ("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1","custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q,1) ;
}
}
for (let col=11;col<=20;col++) {
// if (col > 10) {
if (\$("#day_"+col).val() && !date_used[col]) {
def_val = \$("#selectCustom_operator_"+q+"_"+col).val() ;
add_operator_dropdown ("day_"+col+"_name_"+q+"_extra_2","day_"+q+"_"+col+"_extra_2","custom_operator_"+q+"_"+col,"selectCustom_operator_"+q+"_"+col,dates_map[col],q) ;
all_added_dropdowns = all_added_dropdowns + ",#selectCustom_operator_"+q+"_"+col ;
all_added_dropdowns_chosen = all_added_dropdowns_chosen + ",#selectCustom_operator_"+q+"_"+col+"_chosen" ;
delete_operator_dropdown("day_"+col+"_name_"+q+"_extra_1","day_"+q+"_"+col+"_extra_1",0) ;
if (!\$("#selectCustom_operator_"+q+"_"+col).val() && def_val) {
\$("#selectCustom_operator_"+q+"_"+col).val(def_val) ;
\$("#selectCustom_operator_"+q+"_"+col).trigger("chosen:updated") ;
}
} else {
delete_operator_dropdown ("day_"+col+"_name_"+q+"_extra_2","day_"+q+"_"+col+"_extra_2",0) ;
}
}
\$("#system_name_row_"+q+"_extra_2").show() ;
\$("#day_names_"+q+"_extra_2").show() ;
\$("#system_name_row_"+q+"_extra_1").show() ;
\$("#day_names_"+q+"_extra_1").show() ;
}
}
}
}
// hide_non_empty_operator_dropdown (hide_this_1,hide_this_2) ;
\$(all_added_dropdowns).chosen({allow_single_deselect:true}) ;
\$(all_added_dropdowns_chosen).css("width","100%") ;
// \$(select_chosen_ids_1).chosen({allow_single_deselect:true}) ;
// \$(select_chosen_ids_2).css("width","100%") ;
\$("input[name='qty']").val(nr_days) ;
}) ;
~ if $readonly{qty} ne "READONLY" ;
my $timepicker_ids_string = join(",",@timepicker_ids) ;
# $trigger_jquery_raw .= qq~ \$("$timepicker_ids_string").datetimepicker({language:'pt-BR',pickDate:false});~ ;
if ($readonly{qty} ne "READONLY") {
$trigger_jquery_raw .= qq~
function set_full_half_day (beforeUnderscore,afterUnderscore) {
let start_time = \$("input[name='time_from_"+afterUnderscore+"']").val() ;
let end_time = \$("input[name='time_to_"+afterUnderscore+"']").val() ;
let seconds1 = timeStringToSeconds(start_time) ;
let seconds2 = timeStringToSeconds(end_time) ;
let diffSeconds = seconds2 - seconds1 ;
// let nr_days = \$("#inputQty").val() ;
let changed_a_full_half_day_toggle = 0 ;
if (diffSeconds >= 18000) {
if (\$("#radio_"+afterUnderscore+"_2").is(":checked")) {
nr_days["half"]-- ;
}
if (!\$("#radio_"+afterUnderscore+"_1").is(":checked")) {
\$("#radio_"+afterUnderscore+"_1").prop('checked',true) ;
changed_a_full_half_day_toggle = 1 ;
nr_days["full"]++ ;
}
} else if (diffSeconds >= 0 && diffSeconds < 18000) {
if (\$("#radio_"+afterUnderscore+"_1").is(":checked")) {
nr_days["full"]-- ;
}
if (!\$("#radio_"+afterUnderscore+"_2").is(":checked")) {
\$("#radio_"+afterUnderscore+"_2").prop('checked',true) ;
changed_a_full_half_day_toggle = 1 ;
nr_days["half"]++ ;
}
} else {
// nr_days = parseInt(nr_days) ;
// nr_days-- ;
// \$("#inputQty").val(nr_days) ;
if (\$("#radio_"+afterUnderscore+"_1").is(":checked")) {
\$("#radio_"+afterUnderscore+"_1").prop('checked',false) ;
changed_a_full_half_day_toggle = 1 ;
nr_days["full"]-- ;
}
if (\$("#radio_"+afterUnderscore+"_2").is(":checked")) {
\$("#radio_"+afterUnderscore+"_2").prop('checked',false) ;
changed_a_full_half_day_toggle = 1 ;
nr_days["half"]-- ;
}
if (beforeUnderscore == 'timepickerTime_from') {
\$("input[name='time_from_"+afterUnderscore+"']").val(end_time) ;
} else if (beforeUnderscore == 'timepickerTime_to') {
\$("input[name='time_to_"+afterUnderscore+"']").val(start_time) ;
}
}
if (changed_a_full_half_day_toggle == 1) {
changed_radio_cnt++ ;
}
}
\$("$timepicker_ids_string").datetimepicker({language:'pt-BR',pickDate:false});
// \$("#timepickerTime_from_1").on('changeDate', function() {
// let dateString1 = \$("input[name='time_from").val() ;
// }) ;
\$("$timepicker_ids_string").on('changeDate', function() {
const id = this.id ;
const lastIndex = id.lastIndexOf('_');
const beforeUnderscore = id.substring(0,lastIndex);
let afterUnderscore = id.substring(lastIndex+1);
afterUnderscore = parseInt(afterUnderscore) ;
// const from_to_toggle = {"timepickerTime_from":"time_to","timepickerTime_to":"time_from"} ;
// console.log("timepicker change id : "+id+" , beforeUnderscore : "+beforeUnderscore+" , afterUnderscore : "+afterUnderscore) ;
// let date_to = \$("input[name='date_to']").val() ;
// let datetimeValue = \$("#datetimepickerDate_to").data("date");
// // // if (beforeUnderscore == 'from' && afterUnderscore == 1) {
// // // let dateString = \$("input[name='time_from").val() ;
// // // let timePart = dateString.split(' ')[1];
// // // \$("input[name='time_from_1']").val(timePart) ;
// // // return ;
// // // }
// // // if (beforeUnderscore == 'to') {
// // // let dateString1 = \$("input[name='time_from").val() ;
// // // let dateString2 = \$("input[name='time_to").val() ;
// // // const count_dates = getDatesBetween(dateFromInput,dateToInput,1) ;
// // // if (afterUnderscore == count_dates) {
// // // let timePart = dateString.split(' ')[1];
// // // \$("input[name='time_to_"+count_dates+"']").val(timePart) ;
// // // return ;
// // // }
// // // }
if (id.includes("timepickerTime_from_")) {
saved_time_from[afterUnderscore] = \$("input[name='time_from_"+afterUnderscore+"']").val() ;
} else if (id.includes("timepickerTime_to_")) {
saved_time_to[afterUnderscore] = \$("input[name='time_to_"+afterUnderscore+"']").val() ;
}
// console.log("input[name='time_from_"+afterUnderscore+"']") ;
// console.log("input[name='time_to_"+afterUnderscore+"']") ;
changed_radio_cnt = 0 ;
set_full_half_day(beforeUnderscore,afterUnderscore) ;
if (changed_radio_cnt) {
update_qty_in_quote_tab_when_changing_nr_of_full_or_half_days() ;
}
// let start_time = \$("input[name='time_from_"+afterUnderscore+"']").val() ;
// let end_time = \$("input[name='time_to_"+afterUnderscore+"']").val() ;
// let seconds1 = timeStringToSeconds(start_time) ;
// let seconds2 = timeStringToSeconds(end_time) ;
// let diffSeconds = seconds2 - seconds1 ;
// if (diffSeconds >= 18000) {
// if (!\$("#radio_"+afterUnderscore+"_1").is(":checked")) {
// \$("#radio_"+afterUnderscore+"_1").prop('checked',true) ;
// }
// } else if (diffSeconds >= 0 && diffSeconds < 18000) {
// if (!\$("#radio_"+afterUnderscore+"_2").is(":checked")) {
// \$("#radio_"+afterUnderscore+"_2").prop('checked',true) ;
// }
// } else {
// if (\$("#radio_"+afterUnderscore+"_1").is(":checked")) {
// \$("#radio_"+afterUnderscore+"_1").prop('checked',false) ;
// }
// if (\$("#radio_"+afterUnderscore+"_2").is(":checked")) {
// \$("#radio_"+afterUnderscore+"_2").prop('checked',false) ;
// }
// if (beforeUnderscore == 'timepickerTime_from') {
// \$("input[name='time_from_"+afterUnderscore+"']").val(end_time) ;
// } else {
// \$("input[name='time_to_"+afterUnderscore+"']").val(start_time) ;
// }
// }
// console.log("start_time : "+start_time+" , end_time : "+end_time+" , seconds1 : "+seconds1+" , seconds2 : "+seconds2+" , diffSeconds : "+diffSeconds) ;
}) ;
~ ;
}
chop $default_time_from if $default_time_from ; chop $default_time_to if $default_time_to ;
$fcol = 3 ; $lcol = 2 ; my $expenses_html_for_javascript = qq~~ ; my $vat_default_for_hidden_expenses = qq~~ ; my $cnt_hidden_rows = 0 ; my $changed_opid_as_level_3 = 0 ;
# my $default_event_length_1 = qq~~ ; my $default_event_length_2 = qq~~ ; my $e_cnt = 0 ;
# foreach (split(/\;/,$db{$table}{$id}{event_length})) {
# $e_cnt++ ;
# $default_event_length_1 .= qq~$_;~ if $e_cnt <= 10 ;
# $default_event_length_2 .= qq~$_;~ if $e_cnt > 10 ;
# }
# chop $default_event_length_1 if $default_event_length_1 ;
# chop $default_event_length_2 if $default_event_length_2 ;
my %event_length_rows = () ;
if ($readonly{qty} eq "READONLY") {
$readonly{nr_of_systems} = "READONLY" ;
$event_length_rows{1} .= qq~
~ ;
$event_length_rows{1} .= qq~
~ ;
# $event_length_rows{2} = $event_length_rows{1} ;
if ($db{$table}{$id}{event_length}) {
# my
my @words = split /\;/, $db{$table}{$id}{event_length} ;
my $output = join ' ', map { ucfirst lc $_ } @words;
# style="top:4px;left:-4px;"
# my $time_label_header_row = qq~
~ ;
#
my $cnt = 0 ;
foreach (@words) {
$cnt++ ;
$event_length_rows{2} = qq~
~ if $cnt >= 11 && $_ && !$event_length_rows{2} ;
my $el_row_cnt = ($cnt <= 10) ? 1 : 2 ;
$event_length_rows{$el_row_cnt} .= ($_ eq '1') ? qq~
~ : ($_ eq '2') ? qq~
~ : qq~
~ ;
}
} else {
for (1 .. $final_day) { #
my $el_row_cnt = ($cnt <= 10) ? 1 : 2 ;
$event_length_rows{$el_row_cnt} .= ($calc_default_event_length{$_} eq '1') ? qq~
~ : ($calc_default_event_length{$_} eq '2') ? qq~
~ : qq~
~ ;
}
}
# $add_form_fields .= &common_min_form_label('event_length',$output) ;
# $add_form_fields .= qq~
~ ;
$event_length_rows{1} .= qq~
~ if $event_length_rows{1} ;
$event_length_rows{2} .= qq~
~ if $event_length_rows{2} ;
# $add_form_fields .= &common_min_form_input('qty',$db{$table}{$id}{qty},'',1) ;
# $add_form_fields .= qq~
~ ;
# $add_form_fields .= qq~
~ ;
} else {
$fcol = 1 ;
# $add_form_fields .= qq~
~ ;
# $add_form_fields .= &common_min_form_radio_col('event_length',$db{$table}{$id}{event_length},'',10,$final_day) ;
$event_length_rows{1} .= &common_min_form_radio_col('event_length',$db{$table}{$id}{event_length},'',10,$final_day,"",1) ;
my $final_day_second = $final_day - 10 ;
$final_day_second = -1 if $final_day_second <= 0 ;
$event_length_rows{2} .= &common_min_form_radio_col('event_length',$db{$table}{$id}{event_length},'',10,$final_day_second,"radio_row_id_2",2) ;
# my $sec = &common_min_form_radio_col('event_length',$default_event_length_2,'',10,$final_day_second) ;
# $add_form_fields .= qq~
~ ;
$fcol = 3 ;
# $add_form_fields .= &common_min_form_input('qty',$db{$table}{$id}{qty},'',1) ;
# $add_form_fields .= qq~
~ ;
if ($glod_user_level < 4) {
$changed_opid_as_level_3 = 1 ;
my @excl_def = split(/\;/,$db{event_quotes_min}{$id}{excl_workings_event}) ;
my @saved_des = split(/\;/,$db{event_quotes_min}{$id}{description_workings_event}) ;
my @saved_op = split(/\;/,$db{event_quotes_min}{$id}{operator_workings_event}) ;
my @remarks_def = split(/\;/,$db{event_quotes_min}{$id}{remarks_workings_event}) ;
my @supp_def = split(/\;/,$db{event_quotes_min}{$id}{supplier_workings_event}) ;
my @ref_nr_def = split(/\;/,$db{event_quotes_min}{$id}{ref_nr_workings_event}) ;
my @qty_old = split(/\;/,$db{event_quotes_min}{$id}{qty_workings_event});
my @amount_usd_old = split(/\;/,$db{event_quotes_min}{$id}{amount_usd_workings_event});
my @amount_old = split(/\;/,$db{event_quotes_min}{$id}{amount_workings_event});
my @vat_default = split(/\;/,$db{event_quotes_min}{$id}{vat_workings_event}) ;
my %expenses_html = () ;
&db_min_ro('users','id',"user_type LIKE 'casual%' AND block <> 1 AND inactive <> 1",'','') ;
foreach (keys %{$db{users}}) {
$opts{users} .= qq~
~ ;
}
$opts{description} = qq~
~ ;
$add_form_fields .= qq~
~ ;
$db{$table}{$id}{roe} = 1 unless $db{$table}{$id}{roe} ;
my $custom_set_checked = ($db{$table}{$id}{custom_set} || $db{$table}{$id}{demo_id}) ? "CHECKED" : "" ;
$add_form_fields .= qq~
~ ;
for (1 .. 50) {
if ($qty_old[50-$_] || $amount_usd_old[50-$_] || $amount_old[50-$_] || $saved_des[50-$_] || $saved_op[50-$_]) {
$cnt_hidden_rows = 51-$_ ;
last ;
}
}
my @ttlarr = ("sub_total_workings_event","vat_total_workings_event","grand_total_workings_event") ;
if ($cnt_hidden_rows) {
# &db_min_ro('event_cost_items','id','','','') ;
&db_min_ro('event_cost_items','id',"excl_from_expenses < 1",'','') ;
for my $row_cnt (1 .. $cnt_hidden_rows) {
foreach (keys %{$db{event_cost_items}}) {
my $sel = ($saved_des[$row_cnt-1] and $saved_des[$row_cnt-1] eq $_) ? "SELECTED" : "" ;
$opts{"description_$row_cnt"} .= qq~
~ ;
}
foreach (keys %{$db{users}}) {
my $sel = ($saved_op[$row_cnt-1] and $saved_op[$row_cnt-1] eq $_) ? "SELECTED" : "" ;
$opts{"users_$row_cnt"} .= qq~
~ ;
}
$vat_default_for_hidden_expenses .= qq~$row_cnt:"$vat_default[$row_cnt-1],"~ ;
$add_form_fields .= qq~
~ ;
my $excl_checked = ($excl_def[$row_cnt-1]) ? "CHECKED" : "" ;
my $vat_checked = ($vat_default[$row_cnt-1]) ? "CHECKED" : "" ;
$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~
~ ;
last if $cnt_hidden_rows == $row_cnt ;
}
$add_form_fields .= qq~
~ ;
foreach (@ttlarr) {
my $inp_name = "input" . ucfirst $_ ;
$add_form_fields .= qq~~ ;
}
$add_form_fields .= qq~
~ ;
# chop $vat_default_for_hidden_expenses if $vat_default_for_hidden_expenses ;
}
for ($cnt_hidden_rows+1 .. 50) {
# next if $cnt_hidden_rows && $_ <= $cnt_hidden_rows ;
$add_form_fields .= qq~
~ ;
# $expenses_html{$_} = qq~$_:"
"~ ;
}
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
foreach (@ttlarr) {
my $inp_name = "input" . ucfirst $_ ;
$expenses_html{1000} .= qq~
~ ;
}
$expenses_html{1000} = qq~1000:"$expenses_html{1000}"~ ;
foreach (sort keys %expenses_html) {
$expenses_html_for_javascript .= qq~$expenses_html{$_},~ ;
}
chop $expenses_html_for_javascript if $expenses_html_for_javascript ;
}
}
$add_form_fields .= qq~$time_label_header_row{1}
~ ;
$add_form_fields .= qq~$days_time_row{1}
~ ;
$add_form_fields .= qq~$days_time_row_2{1}
~ ;
$add_form_fields .= qq~$event_length_rows{1}~ ;
$add_form_fields .= qq~$time_label_header_row{2}~ ;
$add_form_fields .= qq~$days_time_row{2}
~ ;
$add_form_fields .= qq~$days_time_row_2{2}
~ ;
$add_form_fields .= qq~$event_length_rows{2}~ ;
$add_form_fields .= &common_min_form_input('qty',$db{$table}{$id}{qty},'',1) ;
$add_form_fields .= qq~~ ;
$db{$table}{$id}{nr_of_systems} = 0 unless $db{$table}{$id}{nr_of_systems} ;
$preferred_title{nr_of_systems} = "Number of Systems" ;
# if ($glod_user_level > 3) {
# if ($glod_user_level > 2) {
if ($glod_user_level > 3 || (!$quote_completed && $glod_user_level == 3)) {
$preferred_title{type} = "Type of System" ;
$add_form_fields .= &common_min_form_select('type',$db{$table}{$id}{type},'') ;
$trigger_jquery .= qq~\$("#selectType\_chosen").css( "width", "100%" );~ ;
$add_form_fields .= &common_min_form_input('nr_of_systems',$db{$table}{$id}{nr_of_systems},'') ;
$preferred_title{type_details_id} = "Type Details" ;
$add_form_fields .= &common_min_form_select('type_details_id',$db{$table}{$id}{type_details_id},'') ;
$trigger_jquery .= qq~\$("#selectType_details_id\_chosen").css("width","100%") ;~ ;
# } elsif ($glod_user_level < 4 && ($quote_accepted || $quote_rejected || $quote_cancelled)) {
}
# elsif ($glod_user_level < 3 && ($quote_accepted || $quote_rejected || $quote_cancelled)) {
elsif ((($quote_accepted || $quote_rejected || $quote_cancelled) && $glod_user_level < 3) || ($quote_completed && $glod_user_level <= 3)) {
&db_min_ro('event_types','id,name',"`id`='$db{$table}{$id}{type}'",'','') if $db{$table}{$id}{type} ;
$readonly{type_of_system} = "READONLY" ; $readonly{system_details} = "READONLY" ; $readonly{system_name} = "READONLY" ; $readonly{club_name} = "READONLY" ;
$preferred_title{type_of_system} = "Type of System" ;
$add_form_fields .= &common_min_form_input('type_of_system',$db{event_types}{$db{$table}{$id}{type}}{name},'') ;
$add_form_fields .= &common_min_form_input('nr_of_systems',$db{$table}{$id}{nr_of_systems},'') ;
&db_min_ro('event_type_details','id,name',"`id`='$db{$table}{$id}{type_details_id}'",'','') unless $db{$table}{$id}{type_details_id} =~ /;/ ;
&db_min_ro('event_type_details','id,name',"",'','') if $db{$table}{$id}{type_details_id} =~ /;/ ;
my $input_val = qq~~ ;
foreach my $type_id (split(",",$db{$table}{$id}{type_details_id})) {
next unless $db{event_type_details}{$type_id}{name} ;
$input_val .= qq~$db{event_type_details}{$type_id}{name}, ~ ;
}
chop $input_val if $input_val ; chop $input_val if $input_val ;
$add_form_fields .= &common_min_form_input('system_details',$input_val,'') ;
} else {
$preferred_title{type} = "Type of System" ;
$add_form_fields .= &common_min_form_select('type',$db{$table}{$id}{type},'') ;
$trigger_jquery .= qq~\$("#selectType\_chosen").css("width","100%" );~ ;
$add_form_fields .= &common_min_form_input('nr_of_systems',$db{$table}{$id}{nr_of_systems},'') ;
}
our $remaining_op_ids = qq~~ ;
&build_system_name_form($db{$table}{$id}{event_system_id_multiple},$db{$table}{$id}{club_ids},$quote_accepted,$quote_rejected,$quote_cancelled,$db{$table}{$id}{daily_operator_ids},$db{$table}{$id}{days_active},$db{$table}{$id}{quote_completed}) ;
my $hide_club_name1 = qq~~ ; my $hide_club_name2 = qq~~ ; my $required_fields_full = 0 ;
$required_fields_full = 1 if $db{$table}{$id}{ref} and $db{$table}{$id}{type} and $db{$table}{$id}{event_system_id}
and $db{$table}{$id}{qty} and $db{$table}{$id}{region_id} and $db{$table}{$id}{city_id} ;
$add_form_fields .= qq~~ ;
$fcol = 3 ;
# # if ($glod_user_level > 3) {
# if ($glod_user_level > 2) {
# $dlg{operator_ids} .= qq~~ ;
# $preferred_title{operator_ids} = "Operator(s)" ;
# $add_form_fields .= &common_min_form_select('operator_ids',$remaining_op_ids,'') ;
# $trigger_jquery .= qq~\$("#selectOperator_ids\_chosen").css( "width", "100%" );~ ;
# # } elsif ($glod_user_level < 4 && ($quote_accepted || $quote_rejected || $quote_cancelled)) {
# }
# if ($glod_user_level < 3 && ($quote_accepted || $quote_rejected || $quote_cancelled)) {
if ((($quote_accepted || $quote_rejected || $quote_cancelled) && $glod_user_level < 3) || ($quote_completed && $glod_user_level <= 3)) {
my @op_names = map { $db{users}{$_}{name} } @multi_select_op_ids;
$op_names = join(", ",@op_names) ;
$preferred_title{operators} = "Operator(s)" ; $readonly{operators} = "READONLY" ;
$add_form_fields .= &common_min_form_input('operators',$op_names,'') ;
} else {
if ($glod_user_level > 2) {
$dlg{operator_ids} .= qq~~ ;
$preferred_title{operator_ids} = "Operator(s)" ;
$trigger_jquery .= qq~\$("#selectOperator_ids\_chosen").css( "width", "100%" );~ ;
}
$add_form_fields .= qq~~ if $glod_user_level < 3 ;
$add_form_fields .= &common_min_form_select('operator_ids',$remaining_op_ids,'') ;
$add_form_fields .= qq~
~ if $glod_user_level < 3 ;
# } elsif ($glod_user_level < 4 && ($quote_accepted || $quote_rejected || $quote_cancelled)) {
}
my @casuals = () ;
foreach (keys %{$db{events}}) {
$qnr = $db{events}{$_}{event_quote_nr} ;
$uid = $db{events}{$_}{user_id} ;
next unless $db{events}{$_}{category} eq 'available' ;
push @casuals, "$casual_name{$uid} [$casual_type{$uid}]" ;
}
$add_form_fields .= &common_min_form_input('casual_worker','A','hidden') ;
$add_form_fields .= &common_min_form_input('casual_worker_2','B','hidden') ;
my $nr_of_casuals = 0 + $db{$table}{$id}{nr_of_casuals} + $db{$table}{$id}{nr_of_casuals_2} ;
$add_form_fields .= &common_min_form_input('nr_of_casuals',$nr_of_casuals,'hidden') ;
$add_form_fields .= &common_min_form_input('nr_of_casuals_2',0,'hidden') ;
$fcol = 3 ;
# $add_form_fields .= &common_min_form_input('sports_type',$db{$table}{$id}{sports_type},'') ;
if ($hide_select_1) {
$add_form_fields .= qq~$readonly_select~ ;
}
$preferred_title{sport_type_ids} = "Sport Type(s)" ; $preferred_title{organisation_ids} = "Venue(s)" ;
$add_form_fields .= qq~$hide_select_1~ ;
$add_form_fields .= &common_min_form_select('sport_type_ids',$db{$table}{$id}{sport_type_ids},'') ;
# $add_form_fields .= &common_min_form_input('ligr',$db{$table}{$id}{ligr},'') ;
# if ($db{$table}{$id}{ligr} eq 'Yes') { $checked = 'CHECKED'; } else { $checked = ''; }
# $add_form_fields .= &common_min_form_checkbox('ligr',$db{$table}{$id}{ligr},$checked) ;
# $add_form_fields .= &common_min_form_input('Location',$db{$table}{$id}{location},'') ;
$add_form_fields .= &common_min_form_select('region_id',$db{$table}{$id}{region_id},'') ;
$add_form_fields .= &common_min_form_select('city_id',$db{$table}{$id}{city_id},'') ;
$add_form_fields .= &common_min_form_select('organisation_ids',$db{$table}{$id}{organisation_ids},'') ;
$allow_deselect{linear_id} = 1 ;
my %linear_def = () ; $linear_def{$db{$table}{$id}{linear_id}} = 'SELECTED' ;
$opts{linear_id} .= qq~~ ;
$add_form_fields .= &common_min_form_select('linear_id',$db{$table}{$id}{linear_id},'') ;
# $supplier_type_ids
$preferred_title{supplier_type_ids} = "Supplier Type(s)" ;
$add_form_fields .= qq~~ . &common_min_form_select('supplier_type_ids',$db{$table}{$id}{supplier_type_ids},'') if $db{$table}{$id}{sss_quote_nr} ;
if ($hide_select_1) {
$add_form_fields .= qq~~ ;
}
# $opts{event_length} = qq~~ ;
# $radio_opts{event_length} = "Full Day+Half Day" ;
# $fcol = 1 ;
# $add_form_fields .= qq~~ ;
# $add_form_fields .= &common_min_form_radio_col('event_length',$db{$table}{$id}{event_length},'') ;
# $add_form_fields .= qq~
~ ;
# $fcol = 6 ;
# $add_form_fields .= qq~$hide_select_2~ ;
# $ignore{club} = 1 ;
# $add_form_fields .= &common_min_form_input('club','','') ;
# $add_form_fields .= &common_min_form_input('City',$db{$table}{$id}{city},'') ;
$add_form_fields .= qq~~ ;
# $add_form_fields .= qq~~ ;
# $add_form_fields .= qq~
~ ;
# $operator_options = qq~~ ;
$add_form_fields .= qq~~ ;
$add_form_fields .= qq~~ ;
$trigger_jquery_raw .= qq~
// // // \$("input[name='event_length']").change( function () {
// // // let radio_sel = \$(this).val() ;
// // // for (let i = 1; i<=50; i++) {
// // // let usd = \$("#inputAmount_usd_workings_event_"+i) ;
// // // let item = \$("#selectDescription_workings_event_"+i) ;
// // // let amnt = 0 ;
// // // if (\$('input[name="event_length"][value="full_day"]').is(":checked") && usd.val() == '500.00' && item.val() == 14) {
// // // amnt = 750 ;
// // // } else if (\$('input[name="event_length"][value="half_day"]').is(":checked") && usd.val() == '750.00' && item.val() == 14) {
// // // amnt = 500 ;
// // // } else {
// // // continue ;
// // // }
// // // let qty = \$("#inputQty_workings_event_"+i) ;
// // // let conv = \$("#inputAmount_ttl_workings_event_"+i) ;
// // // usd.val(amnt.toFixed(2)) ;
// // // let total_amnt = qty.val()*amnt ;
// // // conv.val(total_amnt.toFixed(2)) ;
// // // }
// // // if ($changed_opid_as_level_3) {
// // // calc_hidden_totals() ;
// // // } else {
// // // calcAllWorkings() ;
// // // }
// // // }) ;
let map_region_to_country = {} ;
const \$clientSelect = \$("#selectQuote_to") ;
const \$countrySelect = \$("#selectCountry_id") ;
const \$regionSelect = \$("#selectRegion_id") ;
const \$citySelect = \$("#selectCity_id") ;
const \$venuesSelect = \$("#selectOrganisation_ids") ;
let prev_region = \$regionSelect.val() ;
let prev_country = \$countrySelect.val() ;
const updateChosen = \$el => \$el.trigger("chosen:updated");
const getClientId = () => {
const val = \$clientSelect.val();
return val ? val.toString().split(":")[0] : null;
} ;
const fetchJSON = async url => {
try {
const res = await fetch(url);
if (!res.ok) throw new Error(`Request failed: \${res.status}`);
return await res.json();
} catch (err) {
console.error("Fetch error:", err);
return [];
}
};
const populateSelect = (\$field,json_list,getLabel,defaultSelected = () => "") => {
let isSelected ;
if (typeof defaultSelected === "function") {
isSelected = defaultSelected;
} else if (Array.isArray(defaultSelected)) {
isSelected = data => defaultSelected.includes(data.id) ? "selected" : "";
} else {
isSelected = data => data.id == defaultSelected ? "selected" : "";
}
json_list.forEach(data => {
\$field.append(``);
});
updateChosen(\$field);
return json_list.length;
};
const getInputValue = name => \$(`input[name='\${name}']`).val();
const getMultiSelectSplitNumbers = (\$field) => {
let field_ = \$field.chosen().val() ;
field_ = String(field_);
return field_.split(',') ;
} ;
const clearSelect = (\$el) => {
\$el.empty();
\$el.append(``).trigger("chosen:updated");
};
// async function update_country_region_from_client (clientId) {
// }
async function update_region_drop_down_from_country (countryId) {
clearSelect(\$regionSelect) ;
const regionUrl = `$useropts{scripts}/get/get_regions_from_country.pl?country_id=\${countryId}` ;
const regions = await fetchJSON(regionUrl);
for (const data of regions) {
map_region_to_country[data.id] = countryId ;
}
const regionCount = populateSelect(\$regionSelect, regions, r => r.code ? `\${r.name} [\${r.code}]` : r.name , "") ;
// let selectedRegionId = 0 ;
if (regionCount === 1) {
\$regionSelect.val(regions[0].id)
} else if (regionCount === 0 && \$countrySelect.val()) {
// selectedRegionId = 13 ;
\$regionSelect.append(``) ;
}
updateChosen(\$regionSelect) ;
const regionId = \$regionSelect.val() ;
if (regionId != prev_region) {
await update_cities_from_region_and_country(regionId,countryId) ;
await update_venues_from_region_and_country(regionId,countryId) ;
}
prev_region = regionId ;
}
async function update_cities_from_region_and_country (regionId,countryId="") {
let splittedNumbers = getMultiSelectSplitNumbers(\$citySelect) ;
clearSelect(\$citySelect) ;
let url = `$useropts{scripts}/get/get_cities_from_region.pl?region_id=\${regionId}&country_id=\${countryId}` ;
const cities = await fetchJSON(url);
const citiesCount = populateSelect(\$citySelect, cities, r => r.city_name ? r.city_name : "",r => splittedNumbers.includes(r.id) ? "selected" : "" ) ;
if (citiesCount == 1) \$citySelect.val(cities[0].id).trigger("chosen:updated") ;
}
async function update_venues_from_region_and_country (regionId,countryId="") {
let splittedNumbers2 = getMultiSelectSplitNumbers(\$venuesSelect) ;
clearSelect(\$venuesSelect) ;
url = `$useropts{scripts}/get/get_venues_from_region.pl?region_id=\${regionId}&country_id=\${countryId}` ;
const venues = await fetchJSON(url);
const venuesCount = populateSelect(\$venuesSelect, venues, r => r.venue_name , r => splittedNumbers2.includes(r.id) ? "selected" : "" ) ;
// if (venuesCount == 1) \$venuesSelect.val(venues[0].id).trigger("chosen:updated") ;
}
\$clientSelect.change( async function() {
dispCustomer() ;
let clientId = getClientId() ;
// __________________________________________________________________ update_country_region_from_client
const hasCustomRegion = !!getInputValue('custom_selected_region');
const hasCustomCountry = !!getInputValue('custom_selected_country');
if (clientId) {
let url1 = `$useropts{scripts}/get/get_region_country_from_client.pl?client_id=\${clientId}` ;
console.log("1 clientId : "+clientId) ;
if (!hasCustomRegion || !hasCustomCountry) {
const data = await fetchJSON(url1);
data.forEach(async ({region_id,country_id}) => {
if (!hasCustomCountry && country_id && country_id != '0') {
\$countrySelect.val(country_id).trigger("chosen:updated") ;
if (!hasCustomRegion) await update_region_drop_down_from_country(country_id) ;
if (!region_id || region_id == '0') {
await update_cities_from_region_and_country(0,country_id) ;
await update_venues_from_region_and_country(0,country_id) ;
}
}
if (!hasCustomRegion && region_id && region_id != '0') {
\$regionSelect.val(region_id).trigger("chosen:updated") ;
await update_cities_from_region_and_country(region_id) ;
await update_venues_from_region_and_country(region_id) ;
}
// if (!hasCustomCountry && country_id && country_id != '0')
// if (!hasCustomRegion && region_id && region_id != '0') \$regionSelect.val(region_id).trigger("chosen:updated") ;
});
}
} else {
if (!hasCustomCountry) \$countrySelect.val("").trigger("chosen:updated") ;
if (!hasCustomRegion) {
\$regionSelect.val("").trigger("chosen:updated") ;
let region_option_count = \$regionSelect.find("option").length ;
if (region_option_count <= 2) {
await update_region_drop_down_from_country(clientId) ;
}
}
}
// await update_country_region_from_client(clientId) ;
// __________________________________________________________________ update_country_region_from_client
}) ;
\$countrySelect.change( async function() {
\$("input[name='custom_selected_country']").val("1") ;
await update_region_drop_down_from_country(\$countrySelect.val()) ;
}) ;
\$regionSelect.change( async function() {
\$("input[name='custom_selected_region']").val("1") ;
\$("input[name='custom_selected_country']").val("1") ;
const regionId = \$regionSelect.val() ;
await update_country_from_region(regionId,1) ;
await update_cities_from_region_and_country(regionId) ;
await update_venues_from_region_and_country(regionId) ;
});
let prev_date_part_from = \$("input[name='date_from']").val() ;
prev_date_part_from = prev_date_part_from.split(' ')[0] ;
let prev_date_part_to = \$("input[name='date_to']").val() ;
prev_date_part_to = prev_date_part_to.split(' ')[0] ;
\$('#datetimepickerDate_from,#datetimepickerDate_to').on('changeDate', function(e) {
let from_to = get_row_nr(this.id) ;
// saved_time_from["1"] = $("input[name='date_from']").val() ;
if (this.id == "datetimepickerDate_from") {
let date_new = \$("input[name='date_from']").val() ;
let time_part = date_new.split(' ')[1];
\$("input[name='time_from_1']").val(time_part) ;
}
calc_date_diff_in_days(this.id) ;
// \$("#day_4_name_1_extra_1").css("display","none") ;
}) ;
async function update_country_from_region (regionId,update_country=0) {
if (map_region_to_country[regionId] || regionId == '13') {
\$countrySelect.val(map_region_to_country[regionId]).trigger("chosen:updated") ;
} else if (!\$("input[name='custom_selected_country']").val() || update_country) {
const lookupUrl = `$useropts{scripts}/get/get_country_from_region.pl?country_id=®ion_id=\${regionId}`;
console.log("update_country_from_region lookupUrl : "+lookupUrl) ;
const regionMeta = await fetchJSON(lookupUrl);
const { country_id } = regionMeta[0] ?? {} ;
if (country_id) {
map_region_to_country[regionId] = country_id;
\$countrySelect.val(country_id).trigger("chosen:updated");
}
}
}
// function javascript_sprintf_sort_off (num) {
// if (num < 10) {
// num = "0"+num.toString() ;
// }
// return num ;
// }
// // function move_system_operators_drop_downs_between_short_to_long () {
// // let cnt_active_days = 0 ; let cnt_dates_between = 0 ;
// // for (let col=1; col<=20; col++) {
// // if (\$("#day_"+col).val()) {
// // cnt_active_days++ ; cnt_dates_between = col ;
// // }
// // }
// // if ((cnt_active_days <= 6 && \$("#day_1_1").html()) || (cnt_active_days <= 20 && cnt_active_days > 6 && \$("#day_1_1_1").html())) {
// // return ;
// // }
// // if (cnt_active_days && &cnt_active_days <= 6 && !\$("#day_1_1").html() && \$("#day_1_1_extra_1").html()) {
// // for (let row=1; row<=15; col++) {
// // if (!\$("input[name='clicked_button_"+row+"']").val()) { continue ; }
// // \$("#system_name_row_"+row+"_extra_1").css("display","none") ;
// // \$("#system_name_row_"+row+"_extra_2").css("display","none") ;
// // \$("day_names_extra_1").css("display","none") ;
// // \$("day_names_extra_2").css("display","none") ;
// // for (let col=1; col<=20; col++) {
// // if (\$("#day_"+col).val()) {
// // \$("#day_"+row+"_"+col).append(\$("#day_"+row+"_"+col+"_extra").contents());
// // \$("#day_"+row+"_"+col).css("display","") ;
// // }
// // }
// // }
// // // \$("#2").append(\$("#1").contents());
// // } else if (cnt_active_days > 6 && \$("#day_1_1").html() && !\$("#day_1_1_1").html()) {
// // for (let row=1; row<=15; col++) {
// // if (!\$("input[name='clicked_button_"+row+"']").val()) { continue ; }
// // if (\$("#system_name_row_"+row+"_1").is(":hidden")) {
// // (\$("#system_name_row_"+row+"_1").css("display","") ;
// // }
// // if (\$("#system_name_row_"+row+"_2").is(":hidden") && cnt_active_days > 10) {
// // (\$("#system_name_row_"+row+"_2").css("display","") ;
// // }
// // let active_day_counter = 0 ;
// // for (let col=1; col<=20; col++) {
// // if (\$("#day_"+col).val()) {
// // active_day_counter++ ;
// // \$("#day_"+row+"_"+active_day_counter+"_extra").append(\$("#day_"+row+"_"+col+"").contents());
// // }
// // }
// // }
// // }
// // }
function calc_date_diff_in_days(from_to) {
// console.log("from_to : "+from_to) ;
let dateFromInput = \$("input[name='date_from']").val();
// const dateToInput = \$("#datetimepickerDate_to").data("date");
let dateToInput = \$("input[name='date_to']").val() ;
let date_part_from = dateFromInput.split(' ')[0];
let date_part_to = dateToInput.split(' ')[0];
let time_part_from = dateFromInput.split(' ')[1];
let time_part_to = dateToInput.split(' ')[1];
if (prev_date_part_from == date_part_from && date_part_to == prev_date_part_to) {
changed_radio_cnt = 0 ;
const datesBetween = getDatesBetween(dateFromInput,dateToInput,0) ; let date_counter = 0 ;
for (const date of datesBetween) {
date_counter++ ;
if (date_counter > 20) { date_counter = 20 ; break ; }
if (((!saved_time_to[date_counter] || datesBetween.length == date_counter) && from_to.includes("Date_to")) || (date_counter > 1 && !saved_time_from[date_counter] && from_to.includes("Date_from"))) {
if (from_to.includes("Date_from")) {
\$("input[name='time_from_"+date_counter+"']").val(time_part_from) ;
} else {
\$("input[name='time_to_"+date_counter+"']").val(time_part_to) ;
}
set_full_half_day('',date_counter) ;
if ((nr_days["full"] && !prev_nr_days["full"]) || (nr_days["half"] && !prev_nr_days["half"]) || (!nr_days["full"] && prev_nr_days["full"]) || (!nr_days["half"] && prev_nr_days["half"])) {
update_qty_in_quote_tab_when_changing_nr_of_full_or_half_days() ;
changed_radio_cnt = 0 ;
}
prev_nr_days["full"] = nr_days["full"] ;
prev_nr_days["half"] = nr_days["half"] ;
}
}
// if (saved_time_to[date_counter] && from_to.includes("Date_to")) {
// \$("input[name='time_to_"+date_counter+"']").val(time_part_to) ;
// }
if (from_to.includes("Date_to")) {
saved_time_to[date_counter] = time_part_to ;
} else {
saved_time_from["1"] = time_part_from ;
}
// if (from_to.includes("Date_from")) {
// \$("input[name='time_from_1']").val(time_part_from) ;
// set_full_half_day('',1) ;
// } else {
// let diffInDays = 1 + (new Date(date_part_to) - new Date(date_part_from)) / (1000 * 60 * 60 * 24) ;
// \$("input[name='time_to_"+diffInDays+"']").val(time_part_to) ;
// set_full_half_day('',diffInDays) ;
// }
if (changed_radio_cnt) {
update_qty_in_quote_tab_when_changing_nr_of_full_or_half_days() ;
}
return ;
}
prev_date_part_from = date_part_from ;
prev_date_part_to = date_part_to ;
const date1 = new Date(dateFromInput) ;
const date2 = new Date(dateToInput) ;
let hide_date_names = "#1" ;
let glod_user_level = parseInt("$glod_user_level") ;
let y1 = date1.getFullYear() ; let m1 = date1.getMonth() ; let d1 = date1.getDate() ; let y2 = date2.getFullYear() ; let m2 = date2.getMonth() ; let d2 = date2.getDate() ;
m1 = m1 + 1 ;
if (m1 < 10) {
m1 = "0"+m1.toString() ;
}
m2 = m2 + 1 ;
if (m2 < 10) {
m2 = "0"+m2.toString() ;
}
if ((y1 == y2 && m1 == m2 && d1 == d2) || date1 > date2) {
if (date1 > date2 && from_to == "datetimepickerDate_from") {
\$("#datetimepickerDate_to").datetimepicker("setDate",date_part_from+" "+time_part_to) ;
\$("#day_1_name label.control-label").text(date_part_from) ;
} else if (date1 > date2 && from_to == "datetimepickerDate_to") {
\$("#datetimepickerDate_from").datetimepicker("setDate",date_part_to+" "+time_part_from) ;
\$("#day_1_name label.control-label").text(date_part_to) ;
}
\$("input[name='time_from_1']").val(time_part_from) ;
\$("input[name='time_to_1']").val(time_part_to) ;
changed_radio_cnt = 0 ;
set_full_half_day('',1) ;
\$("#radio_1_1").css("display","");
\$("#radio_1_2").css("display","");
\$("#radio_row_id_2_1").hide() ;
\$("#radio_row_id_2_2").hide() ;
if (!\$("#days_drop_downs_1").is(":hidden")) {
\$("#start_times_row_1").hide() ;
\$("#end_times_row_1").hide() ;
\$("#days_drop_downs_1").hide() ;
}
if (!\$("#days_drop_downs_2").is(":hidden")) {
\$("#start_times_row_2").hide() ;
\$("#end_times_row_2").hide() ;
\$("#days_drop_downs_2").hide() ;
}
let reduced_nr_of_days = 0 ;
for (let i=2; i<=20; i++) {
\$("#day_"+i+"_chosen").css("display","none") ;
if (\$("#day_"+i).val()) {
\$("#day_"+i).val("") ;
\$("#day_"+i).trigger("chosen:updated") ;
\$("#radio_"+i+"_1").css("display","none") ;
\$("#radio_"+i+"_2").css("display","none") ;
reduced_nr_of_days = 1 ;
}
}
if (changed_radio_cnt || reduced_nr_of_days) {
update_qty_in_quote_tab_when_changing_nr_of_full_or_half_days() ;
}
if (!\$("#day_1").val()) {
\$("#day_1").val("1") ;
\$("#day_1").trigger("chosen:updated") ;
}
\$("#inputQty").val("1") ;
if (\$("#clicked_any_button").text()) {
// if (!\$("#days_drop_downs_1").is(":hidden")) {
// \$("#days_drop_downs_1").css("display","none") ;
// \$("#start_times_row_1").css("display","none") ;
// \$("#end_times_row_1").css("display","none") ;
// }
// if (!\$("#days_drop_downs_2").is(":hidden")) {
// \$("#days_drop_downs_2").css("display","none") ;
// \$("#start_times_row_2").css("display","none") ;
// \$("#end_times_row_2").css("display","none") ;
// }
// if (\$("#day_1_1").is(":hidden")) {
// \$("#day_1_1").removeClass('col-md-0').addClass('col-md-1') ;
// \$("#day_1_1").css("display","") ;
// }
// if (!\$("#day_1_1").html()) {
// let select_1_1_raw = add_select_raw (1,"custom_operator_1_1","selectCustom_operator_1_1","Select an Option","$operator_options",-1,100) ;
// \$("#day_1_1").html(select_1_1_raw) ;
// }
add_operator_dropdown("day_1_name","day_1_1","custom_operator_1_1","selectCustom_operator_1_1",y1+"-"+m1+"-"+d1,1,0) ;
for (let a=1;a<=15;a++) {
if (!\$("input[name='clicked_button_"+a+"']").val()) { continue ; }
if (a > 1 && !\$("#extra_heading_"+a).is(":hidden")) {
\$("#extra_heading_"+a).hide() ;
}
if (!\$("#day_names_"+a+"_extra_1").is(":hidden")) {
\$("#day_names_"+a+"_extra_1").css("display","none") ;
\$("#system_name_row_"+a+"_extra_1").css("display","none") ;
}
if (!\$("#day_names_"+a+"_extra_2").is(":hidden")) {
\$("#day_names_"+a+"_extra_2").css("display","none") ;
\$("#system_name_row_"+a+"_extra_2").css("display","none") ;
}
// \$("#day_"+row+"_"+active_day_counter+"_extra").append(\$("#day_"+row+"_"+col+"").contents());
\$("#day_1_name").css("display","") ;
\$("#day_"+a+"_1").css("display","") ;
for (let b=2;b<=20;b++) {
if (!\$("#day_"+b+"_name").is(":hidden")) {
\$("#day_"+b+"_name").css("display","none") ;
}
if (!\$("#day_"+a+"_"+b).is(":hidden")) {
\$("#day_"+a+"_"+b).css("display","none") ;
}
}
}
}
return ;
}
// if (\$("#clicked_any_button").text()) {
// for (let a=1;a<=15;a++) {
// if (!\$("input[name='clicked_button_"+a+"']").val()) { continue ; }
// for (let b=1;b<=date_counter;b++) {
// if (!\$("#day_"+b+"_name").is(":hidden")) {
// \$("#day_"+a+"_"+b).css("display","") ;
// \$("#selectCustom_operator_"+a+"_"+b+"_chosen").css("width","100%") ;
// } else {
// \$("#day_"+a+"_"+b).css("display","none") ;
// }
// }
// }
// }
if (\$("#days_drop_downs_1").is(":hidden")) {
// if (glod_user_level > 3) {
\$("#days_drop_downs_1").css("display","") ;
\$("#start_times_row_1").css("display","") ;
\$("#end_times_row_1").css("display","") ;
}
// if (date1 > date2 ) {
// \$("#inputQty").val("0") ;
// for (let k=1;k<=6;k++) {
// \$("#day_"+k).val('') ;
// \$("#day_"+k).trigger("chosen:updated") ;
// \$("input[name='time_from_"+k+"']").val('') ;
// \$("input[name='time_to_"+k+"']").val('') ;
// \$("#timepickerTime_from_"+k).css("display","none") ;
// \$("#timepickerTime_to_"+k).css("display","none") ;
// \$("#radio_"+k+"_1").css("display","none") ;
// \$("#radio_"+k+"_2").css("display","none") ;
// \$("#day_"+k+"_chosen").css("display","none") ;
// }
// return ;
// let date_part_from = dateFromInput.split(' ')[0];
// \$("#datetimepickerDate_to").datetimepicker("setDate",date_part_from+" "+time_part_to) ;
// \$("input[name='time_from_1']").val(time_part_from) ;
// \$("input[name='time_to_1']").val(time_part_to) ;
// let time_1 = timeStringToSeconds(time_part_from) ;
// let time_2 = timeStringToSeconds(time_part_to) ;
// if (time_2 < time_1 || !\$("#day_1").val()) {
// \$("#inputQty").val("0") ;
// } else {
// \$("#inputQty").val("1") ;
// let time_diff_ = time_2 - time_1 ;
// if (time_diff_ >= 18000) {
// \$("#radio_1_1").prop('checked',true) ;
// } else {
// \$("#radio_1_2").prop('checked',true) ;
// }
// }
// \$("#days_drop_downs").css("display","none") ;
// \$("#start_times_row").css("display","none") ;
// \$("#end_times_row").css("display","none") ;
// for (let k=2;k<=6;k++) {
// if (\$("#day_"+k).val()) {
// \$("#day_"+k).val('') ;
// \$("#day_"+k).trigger("chosen:updated") ;
// \$("#radio_"+k+"_1").css("display","none") ;
// \$("#radio_"+k+"_2").css("display","none") ;
// }
// }
// return ;
// }
\$("input[name='time_from_1']").val(time_part_from) ;
const datesBetween = getDatesBetween(dateFromInput,dateToInput,0) ;
let date_counter = 0 ; let dates_count = 0 ; let count_days = 0 ;
let count_days_after = 0 ; let nr_of_active_days = 0 ;
// for (const date of datesBetween) {
// date_counter++ ; dates_count++ ;
// if (\$("#day_"+date_counter+"_chosen").is(":hidden")) {
// \$("#radio_"+date_counter+"_1").css("display","");
// \$("#radio_"+date_counter+"_2").css("display","");
// \$("#day_"+date_counter).val("1") ;
// \$("#day_"+date_counter).trigger("chosen:updated") ;
// \$("#day_"+date_counter+"_chosen").css("display","");
// \$("#day_"+date_counter+"_chosen").css("width","100%");
// \$("#day_"+date_counter).val('1') ;
// \$("#day_"+date_counter).trigger("chosen:updated") ;
// if (date_counter > 1) {
// console.log("1 . display timepickerTime_from_"+date_counter) ;
// \$("#timepickerTime_from_"+date_counter).css("display","");
// }
// }
// if (\$("#day_"+date_counter).val()) {
// nr_of_active_days++ ;
// }
// }
// date_counter = 0 ;
let dates_map = {} ;
changed_radio_cnt = 0 ; let changed_nr_of_days = 0 ;
for (const date of datesBetween) {
date_counter++ ;
dates_map[date_counter] = date ;
// console.log("1 . date_counter : "+dates_map[date_counter]) ;
// if (date_counter > 6) { date_counter = 6 ; count_days_after++ ; continue ; }
if (date_counter > 20) { date_counter = 20 ; break ; }
if (date_counter > 1 && !saved_time_from[date_counter]) {
\$("input[name='time_from_"+date_counter+"']").val(time_part_from) ;
}
if (!saved_time_to[date_counter]) {
\$("input[name='time_to_"+date_counter+"']").val(time_part_to) ;
}
set_full_half_day('',date_counter) ;
if (\$("#day_"+date_counter+"_chosen").is(":hidden")) {
\$("#radio_"+date_counter+"_1").css("display","");
\$("#radio_"+date_counter+"_2").css("display","");
\$("#day_"+date_counter).val("1") ;
\$("#day_"+date_counter).trigger("chosen:updated") ;
\$("#day_"+date_counter+"_chosen").css("display","");
\$("#day_"+date_counter+"_chosen").css("width","100%");
\$("#day_"+date_counter).val('1') ;
\$("#day_"+date_counter).trigger("chosen:updated") ;
if (date_counter > 1) {
// console.log("1 . display timepickerTime_from_"+date_counter) ;
\$("#timepickerTime_from_"+date_counter).css("display","");
}
changed_nr_of_days = 1 ;
}
if (\$("#day_"+date_counter).val()) {
\$("#timepickerTime_to_"+date_counter).css("display","") ;
nr_of_active_days++ ;
}
\$("#day_"+date_counter+" option[value='1']").text(date);
\$("#day_"+date_counter+" option[value='1']").trigger("chosen:updated") ;
if (\$("#day_"+date_counter).val()) {
count_days++ ;
}
}
if (\$("#days_drop_downs_2").is(":hidden") && date_counter > 10) {
// if (glod_user_level > 3) {
\$("#days_drop_downs_2").css("display","") ;
\$("#start_times_row_2").css("display","") ;
\$("#end_times_row_2").css("display","") ;
\$("#radio_row_id_2_1").css("display","") ;
\$("#radio_row_id_2_2").css("display","") ;
} else if (!\$("#days_drop_downs_2").is(":hidden") && date_counter <= 10) {
\$("#days_drop_downs_2").css("display","none") ;
\$("#start_times_row_2").css("display","none") ;
\$("#end_times_row_2").css("display","none") ;
\$("#radio_row_id_2_1").css("display","none") ;
\$("#radio_row_id_2_2").css("display","none") ;
}
if (count_days_after) {
date2.setDate(date2.getDate() - count_days_after);
\$("#datetimepickerDate_to").datetimepicker("setDate",date2) ;
}
let select_raw ;
// console.log("nr_of_active_days : "+nr_of_active_days) ;
let select_chosen_ids_1 = '#1' ;
let select_chosen_ids_2 = '#2' ;
let names_to_display = '#3' ;
let def_val = 0 ;
if (\$("#clicked_any_button").text()) {
if (nr_of_active_days <= 6) {
for (let b=1;b<=date_counter;b++) {
if (from_to == "datetimepickerDate_from") {
\$("#day_"+b+"_name label.control-label").text('') ;
}
// if (!\$("#day_"+date_counter+"_name label.control-label").text()) {
if (\$("#day_"+b+"_name").is(":hidden")) {
\$("#day_"+b+"_name label.control-label").text(dates_map[b]) ;
\$("#day_"+b+"_name").css("display","") ;
\$("#day_"+b+"_name").removeClass('col-md-0').addClass('col-md-1') ;
}
if (!\$("#day_"+b).val() || !\$("#clicked_any_button").text()) {
\$("#day_"+b+"_name").css("display","none") ;
}
}
}
for (let a=1;a<=15;a++) {
if (!\$("input[name='clicked_button_"+a+"']").val()) {
let prev_row_nr = a - 1 ;
if (!\$("extra_heading_"+a).html() && \$("input[name='clicked_button_"+a+"']").val() && prev_row_nr && nr_of_active_days > 6) {
console.log("hello world Add Heading") ;
\$("#system_name_row_"+a).before("") ;
} else if (\$("extra_heading_"+a).is(":hidden") && \$("input[name='clicked_button_"+a+"']").val() && prev_row_nr && nr_of_active_days > 6) {
\$("#system_name_row_"+a).show() ;
} else if (!\$("extra_heading_"+a).is(":hidden") && \$("input[name='clicked_button_"+a+"']").val() && prev_row_nr && nr_of_active_days <= 6) {
\$("#extra_heading_"+a).hide() ;
}
continue ;
}
// let prev_row = a - 1 ;
if (nr_of_active_days <= 6 && a > 1 && !\$("#extra_heading_"+a).is(":hidden")) {
\$("#extra_heading_"+a).hide() ;
console.log("Hide Heading") ;
} else if (nr_of_active_days > 6 && a > 1 && \$("#extra_heading_"+a).length && \$("#extra_heading_"+a).is(":hidden") && \$("input[name='clicked_button_"+a+"']").val()) {
\$("#extra_heading_"+a).show() ;
console.log("Display Heading") ;
} else if (nr_of_active_days > 6 && a > 1 && !\$("#extra_heading_"+a).length && \$("input[name='clicked_button_"+a+"']").val()) {
console.log("123 Add Heading") ;
\$("#system_name_row_"+a).before("") ;
}
if (nr_of_active_days <= 6) {
if (!\$("#day_names_"+a+"_extra_1").is(":hidden")) {
\$("#day_names_"+a+"_extra_1").css("display","none") ;
\$("#system_name_row_"+a+"_extra_1").css("display","none") ;
}
if (!\$("#day_names_"+a+"_extra_2").is(":hidden")) {
\$("#day_names_"+a+"_extra_2").css("display","none") ;
\$("#system_name_row_"+a+"_extra_2").css("display","none") ;
}
for (let b=1;b<=date_counter;b++) {
// if (!\$("#day_"+b+"_name").is(":hidden")) {
def_val = \$("#selectCustom_operator_"+a+"_"+b).val() ;
if (!\$("#day_"+a+"_"+b).html() && \$("#day_"+b).val()) {
\$("#day_"+a+"_"+b).show() ;
\$("#day_"+a+"_"+b).removeClass('col-md-0').addClass('col-md-1') ;
if (!\$("#day_"+a+"_"+b).html()) {
let select_raw = add_select_raw (a,"custom_operator_"+a+"_"+b,"selectCustom_operator_"+a+"_"+b,"Select an Option","$operator_options",-1,100) ;
\$("#day_"+a+"_"+b).html(select_raw) ;
\$("#day_"+a+"_"+b).trigger("chosen:updated") ;
\$("#selectCustom_operator_"+a+"_"+b).chosen({allow_single_deselect:true}) ;
\$("#selectCustom_operator_"+a+"_"+b+"_chosen").css("width","100%") ;
}
// \$("#selectCustom_operator_"+a+"_"+b+"_chosen").css("width","100%") ;
}
if (!\$("#selectCustom_operator_"+a+"_"+b).val() && def_val) {
\$("#selectCustom_operator_"+a+"_"+b).val(def_val) ;
\$("#selectCustom_operator_"+a+"_"+b).trigger("chosen:updated") ;
}
// else {
// \$("#day_"+a+"_"+b).css("display","none") ;
// }
}
} else if (nr_of_active_days > 6 && nr_of_active_days <= 10) {
// console.log("EXTRA TAB 1 nr_of_active_days : "+nr_of_active_days) ;
if (\$("#day_names_"+a+"_extra_1").is(":hidden")) {
\$("#day_names_"+a+"_extra_1").show() ;
}
\$("#system_name_row_"+a+"_extra_1").show() ;
if (!\$("#day_names_"+a+"_extra_2").is(":hidden")) {
\$("#day_names_"+a+"_extra_2").hide() ;
}
\$("#system_name_row_"+a+"_extra_2").hide() ;
for (let b=1;b<=date_counter;b++) {
// for (let b=1;b<=20;b++) {
// if (\$("#day_"+b).val()) {
def_val = \$("#selectCustom_operator_"+a+"_"+b).val() ;
add_operator_dropdown("day_"+b+"_name_"+a+"_extra_1","day_"+a+"_"+b+"_extra_1","custom_operator_"+a+"_"+b,"selectCustom_operator_"+a+"_"+b,dates_map[b],a,0) ;
select_chosen_ids_1 = select_chosen_ids_1+",#selectCustom_operator_"+a+"_"+b ;
select_chosen_ids_2 = select_chosen_ids_2+",#selectCustom_operator_"+a+"_"+b+"_chosen" ;
names_to_display = names_to_display + ",#day_"+b+"_name_"+a+"_extra_1" ;
\$("#day_"+b+"_name_"+a+"_extra_1 label.control-label").text(dates_map[b]) ;
// }
console.log("#day_"+b+"_name_"+a+"_extra_1") ;
if (!\$("#day_"+b).val()) {
hide_non_empty_operator_dropdown("day_"+b+"_name_"+a+"_extra_1","day_"+a+"_"+b+"_extra_1") ;
// \$("#day_"+b+"_name_"+a+"_extra_1").css("display","none") ;
hide_date_names = hide_date_names + ",#day_"+b+"_name_"+a+"_extra_1" ;
// \$("#day_4_name_1_extra_1").css("display","none") ;
}
delete_operator_dropdown ("day_"+b+"_name","day_"+a+"_"+b) ;
delete_operator_dropdown ("day_"+b+"_name_"+a+"_extra_2","day_"+a+"_"+b+"_extra_2") ;
if (!\$("#selectCustom_operator_"+a+"_"+b).val() && def_val) {
\$("#selectCustom_operator_"+a+"_"+b).val(def_val) ;
\$("#selectCustom_operator_"+a+"_"+b).trigger("chosen:updated") ;
}
}
} else if (nr_of_active_days > 10) {
if (\$("#day_names_"+a+"_extra_1").is(":hidden")) {
\$("#day_names_"+a+"_extra_1").show() ;
}
if (\$("#day_names_"+a+"_extra_2").is(":hidden")) {
\$("#day_names_"+a+"_extra_2").show() ;
}
\$("#system_name_row_"+a+"_extra_1").show() ;
\$("#system_name_row_"+a+"_extra_2").show() ;
let used_dates = 0 ;
for (let b=1;b<=date_counter;b++) {
// if (used_dates <= 10) {
let def_val = 0 ;
def_val = \$("#selectCustom_operator_"+a+"_"+b).val() ;
if (used_dates < 10 && \$("#day_"+b).val()) {
used_dates++ ;
add_operator_dropdown("day_"+b+"_name_"+a+"_extra_1","day_"+a+"_"+b+"_extra_1","custom_operator_"+a+"_"+b,"selectCustom_operator_"+a+"_"+b,dates_map[b],a,0) ;
select_chosen_ids_1 = select_chosen_ids_1+",#selectCustom_operator_"+a+"_"+b ;
select_chosen_ids_2 = select_chosen_ids_2+",#selectCustom_operator_"+a+"_"+b+"_chosen" ;
delete_operator_dropdown ("day_"+b+"_name_"+a+"_extra_2","day_"+a+"_"+b+"_extra_2") ;
\$("#day_"+b+"_name_"+a+"_extra_2 label.control-label").text(dates_map[b]) ;
} else if (!\$("#day_"+b).val() && dates_map[b]) {
add_operator_dropdown("day_"+b+"_name_"+a+"_extra_1","day_"+a+"_"+b+"_extra_1","custom_operator_"+a+"_"+b,"selectCustom_operator_"+a+"_"+b,dates_map[b],a,1) ;
select_chosen_ids_1 = select_chosen_ids_1+",#selectCustom_operator_"+a+"_"+b ;
select_chosen_ids_2 = select_chosen_ids_2+",#selectCustom_operator_"+a+"_"+b+"_chosen" ;
hide_non_empty_operator_dropdown("day_"+b+"_name_"+a+"_extra_2","day_"+a+"_"+b+"_extra_2") ;
} else if (\$("#day_"+b).val() && used_dates == 10) {
add_operator_dropdown("day_"+b+"_name_"+a+"_extra_2","day_"+a+"_"+b+"_extra_2","custom_operator_"+a+"_"+b,"selectCustom_operator_"+a+"_"+b,dates_map[b],a,0) ;
delete_operator_dropdown ("day_"+b+"_name_"+a+"_extra_1","day_"+a+"_"+b+"_extra_1") ;
select_chosen_ids_1 = select_chosen_ids_1+",#selectCustom_operator_"+a+"_"+b ;
select_chosen_ids_2 = select_chosen_ids_2+",#selectCustom_operator_"+a+"_"+b+"_chosen" ;
}
delete_operator_dropdown ("day_"+b+"_name","day_"+a+"_"+b) ;
if (!\$("#selectCustom_operator_"+a+"_"+b).val() && def_val) {
\$("#selectCustom_operator_"+a+"_"+b).val(def_val) ;
\$("#selectCustom_operator_"+a+"_"+b).trigger("chosen:updated") ;
}
// if (\$("#day_"+a+"_"+b+"_extra_2").html()) {
// \$("#day_"+a+"_"+b+"_extra_2").html('') ;
// \$("#day_"+a+"_"+b+"_extra_2").removeClass('col-md-1').addClass('col-md-0') ;
// \$("#day_"+a+"_"+b+"_extra_2").css("display","none") ;
// }
// }
// else {
// if (\$("#day_"+b).val()) {
// add_operator_dropdown("day_"+b+"_name_"+a+"_extra_2","day_"+a+"_"+b+"_extra_1","custom_operator_"+a+"_"+b,"selectCustom_operator_"+a+"_"+b,dates_map[b],a,0) ;
// } else if (!\$("#day_"+b).val() && dates_map[b]) {
// hide_non_empty_operator_dropdown("day_"+b+"_name_"+a+"_extra_2","day_"+a+"_"+b+"_extra_2") ;
// }
// }
}
}
}
}
\$("#inputQty").val(count_days) ;
\$("#timepickerTime_to_"+date_counter).css("display","none");
// console.log("date_counter : "+date_counter) ;
if (date_counter <= 20) {
for (let j=date_counter+1;j<=20;j++) {
for (let k=1; k<=15; k++) {
if (\$("input[name='clicked_button_"+k+"']").val()) {
if ( \$("#day_"+k+"_"+j).html()) {
\$("#day_"+k+"_"+j).html('') ;
\$("#day_"+k+"_"+j).removeClass('col-md-1').addClass('col-md-0') ;
\$("#day_"+k+"_"+j).hide() ;
}
// delete_operator_dropdown("day_"+j+"_name_"+k,"day_"+k+"_"+j) ;
delete_operator_dropdown("day_"+j+"_name_"+k+"_extra_1","day_"+k+"_"+j+"_extra_1") ;
delete_operator_dropdown("day_"+j+"_name_"+k+"_extra_2","day_"+k+"_"+j+"_extra_2") ;
}
}
if (\$("#day_"+j).val()) {
\$("#day_"+j).val("").trigger("chosen:updated") ; changed_nr_of_days = 1 ;
}
if (!\$("#day_"+j+"_chosen").is(":hidden")) {
\$("#day_"+j+"_name label.control-label").text('') ;
\$("#day_"+j+"_name").css("display","none") ;
\$("#radio_"+j+"_1").css("display","none") ;
\$("#radio_"+j+"_2").css("display","none") ;
\$("#day_"+j+"_chosen").css("display","none") ;
// console.log("col : "+j) ;
}
if (!\$("#timepickerTime_from_"+j).is(":hidden")) {
\$("#timepickerTime_from_"+j).css("display","none") ;
}
if (!\$("#timepickerTime_to_"+j).is(":hidden")) {
\$("#timepickerTime_to_"+j).css("display","none") ;
}
}
}
if (changed_radio_cnt || changed_nr_of_days) {
update_qty_in_quote_tab_when_changing_nr_of_full_or_half_days() ;
}
\$(names_to_display).removeClass('col-md-0').addClass('col-md-1');
\$(names_to_display).show() ;
\$(select_chosen_ids_1).chosen({allow_single_deselect:true}) ;
\$(select_chosen_ids_2).css("width","100%") ;
// // // for (let k=1;k<=50;k++) {
// // // if (\$("#selectDescription_workings_event_"+k).val() == 14) {
// // // \$("#inputQty_workings_event"+k).val(0) ;
// // // let ttl_amnt = 0 ;
// // // \$("#inputAmount_workings_event"+k).val(ttl_amnt.toFixed(2)) ;
// // // }
// // // }
// // // calcAllWorkings() ;
// // // for (let k=1;k<=50;k++) {
// // // if (\$("#selectDescription_workings_event"+k).val() == 14) {
// // // let inp_qty = differenceDays ;
// // // \$("#inputQty_workings_event"+k).val(inp_qty) ;
// // // let amnt = \$("#inputAmount_usd_workings_event"+k).val() ;
// // // let ttl_amnt = amnt*inp_qty ;
// // // \$("#inputAmount_workings_event"+k).val(ttl_amnt.toFixed(2)) ;
// // // }
// // // }
// // // if ($changed_opid_as_level_3) {
// // // calc_hidden_totals() ;
// // // } else {
// // // calcAllWorkings() ;
// // // }
// \$("#day_4_name_1_extra_1").css("display","none") ;
if (hide_date_names != "#1") {
\$(hide_date_names).css("display","none") ;
}
}
function timeStringToSeconds(timeString) {
const [hours, minutes, seconds] = timeString.split(':').map(Number);
return hours * 3600 + minutes * 60 + seconds;
}
function getDatesBetween(startDateStr,endDateStr,count_dates) {
if (!startDateStr || !endDateStr) {
return ;
}
const dates = [];
let currentDate = new Date(startDateStr);
let endDate = new Date(endDateStr) ;
// currentDate.setHours(currentDate.getHours() + 2);
// endDate.setHours(endDate.getHours() + 2);
currentDate.setHours(+2);
currentDate.setMinutes(0);
currentDate.setSeconds(0);
endDate.setHours(+2);
endDate.setMinutes(59);
endDate.setSeconds(59);
// console.log("2 . currentDate : "+currentDate.toISOString().split('T')[0]) ;
while (currentDate < endDate) {
// console.log("3 . currentDate : "+currentDate.toISOString().split('T')[0]) ;
dates.push(currentDate.toISOString().split('T')[0]);
currentDate.setDate(currentDate.getDate() + 1);
if (count_dates) { count_dates++ ; }
}
if (count_dates) {
count_dates-- ;
return count_dates;
} else {
return dates;
}
}
~ ;
&event_tabs_content_box($sec_name,$sec_col);
# --------------- END CUSOTMER DETAILS ----------------------------------------------------------------------------------------------------------
}
if ($tab == 3) { # Event Specifics
# --------------- START DOCUMENT UPLOADS ----------------------------------------------------------------------------------------------------------------
$add_form_fields = '' ;
my $sec = '_event_specifics' ; 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 %selected_1 = () ; my %selected_2 = () ;
&db_min_ro('event_quotes_categories','*','','','') ;
$selected_1{$db{$table}{$id}{category_id_1}} = 'SELECTED' ;
$selected_2{$db{$table}{$id}{category_id_2}} = 'SELECTED' ;
my $none_id = 0 ;
foreach (sort {$db{event_quotes_categories}{$a}{category} cmp $db{event_quotes_categories}{$b}{category}} keys %{$db{event_quotes_categories}}) {
if ($db{event_quotes_categories}{$_}{category} eq 'None') {
$none_id = $_ ;
next ;
}
$opts{category_id_2} .= qq~~ ;
$opts{category_id_1} .= qq~~ ;
}
$opts{category_id_2} .= qq~~ ;
$opts{category_id_1} .= qq~~ ;
$add_form_fields .= qq~~ ;
$add_form_fields .= qq~
~ ;
$fcol = 8 ; $lcol = 3 ;
my @cat_details = split('\|;\|',$db{event_quotes_min}{$id}{category_details}) ;
$preferred_title{category_1_details} = "Category 1 Sub Categories" ;
$preferred_title{category_2_details} = "Category 2 Sub Categories" ;
&common_shared_poc_recipient_select_code("poc",'',$id) ;
$add_form_fields .= qq~
SPORT:_AGE GROUP_TEAM 1_VS_AGE GROUP_TEAM 2
SPORT:_AGE GROUP_TEAM 1_VS_AGE GROUP_TEAM 2-FESTIVAL/LEAGUE
~ ;
$add_form_fields .= &common_min_form_select('category_id_1',$db{$table}{$id}{category_id_1},'') ;
$add_form_fields .= &common_min_form_textarea('category_1_details',$cat_details[0],'') ;
$add_form_fields .= &common_min_form_select('category_id_2',$db{$table}{$id}{category_id_2},'') ;
$add_form_fields .= &common_min_form_textarea('category_2_details',$cat_details[1],'') ;
$trigger_jquery .= qq~\$("#selectCategory_id_1\_chosen").css("width","100%");~ ;
$trigger_jquery .= qq~\$("#selectCategory_id_2\_chosen").css("width","100%");~ ;
$preferred_title{format_of_title} = "Format of TITLE to be followed when scheduling events" ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
# $add_form_fields .= &common_min_form_input('recipient_name',$db{$table}{$id}{recipient_name},'') ;
# $add_form_fields .= &common_min_form_input('recipient_nr',$db{$table}{$id}{recipient_nr},'') ;
&common_shared_poc_recipient_select_code("recipient",'',$id) ;
$add_form_fields .= &common_min_form_textarea('additional_notes',$db{$table}{$id}{additional_notes},'') ;
$add_form_fields .= &common_min_form_textarea('format_of_title',$db{$table}{$id}{format_of_title},'') ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
my @docs = ('1','2','3') ;
$add_form_fields .= qq~
~ ;
&common_shared_poc_recipient_select_shared_jquery ;
foreach (@docs) {
my $doc = lc $_ ; $doc =~ s/ /\_/ ; $doc =~ s/&/\_/ ;
$working_uploads = &common_get_field_uploads($id,"upload_$doc",'id') ;
if ($working_uploads) {
$add_form_fields .= qq~
$working_uploads
~;
} else {
$add_form_fields .= qq~
~;
}
}
$add_form_fields .= qq~
~ ;
&event_tabs_content_box($sec_name,$sec_col);
# --------------- END DOCUMENT UPLOADS ----------------------------------------------------------------------------------------------------------------
}
if ($tab == 4) { # 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) ; # don't end row
$trigger_jquery .= qq~\$("#selectCurrency_chosen").css( "width", "96%" );~ ;
$preferred_title{roe} = ' ROE ' ; $fcol=1; # $fcol=2 ;
$add_form_fields .= &common_min_form_label_col('roe') ;
$db{$table}{$id}{roe} = 1 if not $db{$table}{$id}{roe} ;
$add_form_fields .= &common_min_form_input_col('roe',$db{$table}{$id}{roe},1) ;
# $preferred_title{roe} = ' Discount ' ;
# $add_form_fields .= &common_min_form_label_col('discount') ;
# $add_form_fields .= &common_min_form_select_col('discount',$db{$table}{$id}{discount}) ;
$trigger_jquery .= qq~\$("#selectDiscount_chosen").css( "width", "96%" );~ ;
$add_form_fields .= qq~~ ;
our %sec_cnt = ('a_event' => "30-List Event Costings");
our $display_hidden_input = ($username eq 'handre') ? "readonly" : "style='display:none;'" ;
my $sec = 'costing' ;
my ($sec_name, $sec_cnt, $sec_col) = &tab_sec_det($sec) ;
$ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
return if $ret;
&event_tabs_build_sec($sec,$tab) ;
foreach (sort keys %sec_cnt) {
$_k = substr($_, 1) ;
my @parts = split(/\-/, $sec_cnt{$_}) ;
$add_form_fields .= qq~
~ ;
&tab_build_qt_col_headers("$sec$_k");
# # # &db_min_ro('event_quotes_min','id,excl_costing_event,item_costing_event,qty_costing_event,usd_amnt_costing_event,item_ttl_costing_event,vat_costing_event,curr_amnt_costing_event',"id=$id",'','') if $id ;
&event_tabs_build_costs_forms($id,$tab,$parts[0],"$sec$_k");
}
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
my @ttlarr = ("sub_total","vat_total","grand_total") ;
$lcol = 1 ;
$fcol = 1 ;
foreach (@ttlarr) {
$lcol = 1 ; $add_form_fields .= &common_min_form_label_col($_) ;
}
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~~ ;
$lcol = 2 ;
$add_form_fields .= &common_min_form_label_col('Total') ;
$lcol = 1 ; $fcol = 1 ;
foreach (@ttlarr) {
$readonly{"$_\_costing_event"} = "READONLY" ;
$input_style{"$_\_costing_event"} = qq~style="text-align:right;"~ ;
my $val = $db{$table}{$id}{$_} ? $db{$table}{$id}{$_} : '0.00' ;
$add_form_fields .= &common_min_form_input_col("$_\_costing_event",$val) ;
}
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
&event_tabs_content_box($sec_name,$sec_col);
$trigger_jquery_raw .= qq~
function count_nr_of_full_day_and_half_days () {
let full_day_exists = 0 ; let half_day_exists = 0 ;
console.log("count_nr_of_full_day_and_half_days") ;
for (let i = 1; i<=20; i++) {
if (\$("#radio_"+i+"_1").is(":checked") && \$("#day_"+i).val()) {
full_day_exists++ ;
} else if (\$("#radio_"+i+"_2").is(":checked") && \$("#day_"+i).val()) {
half_day_exists++ ;
}
}
console.log("full_day_exists : "+full_day_exists) ;
return [full_day_exists,half_day_exists] ;
}
function cnt_selected_systems_per_cost_item () {
let i = 0 ;
cnt_systems_per_cost_item = {} ;
while (true) {
i++ ;
let system_id = \$("#selectSystem_name_"+i).val() ;
if (!cnt_systems_per_cost_item[get_event_cost_id[system_id]]) {
cnt_systems_per_cost_item[get_event_cost_id[system_id]] = 0 ;
}
if (!\$("#system_name_row_"+i).html()) {
i-- ;
break ;
}
if (system_id && get_event_cost_id[system_id]) {
cnt_systems_per_cost_item[get_event_cost_id[system_id]]++ ;
}
}
}
function auto_deselect_cost_items_in_quote_tab (row_nr) {
let orig_system_id = orig_selected_system_names[row_nr] ;
let orig_cost_item = get_event_cost_id[orig_system_id] ; // Check whether get_event_cost_id exists
if (!orig_system_id || (orig_system_id && !orig_cost_item)) {
return ;
}
let i = 0 ;
// Chech if the corresponding cost item exists for a diffent selected system
while (true) {
i++ ;
if (!\$("#system_name_row_"+i).html()) {
break ;
}
if (i == row_nr) {
continue ;
}
if (orig_cost_item == get_event_cost_id[\$("#selectSystem_name_"+i).val()]) {
return ;
}
}
i = 0 ; let j = 0 ; let select_new_values = {} ; let input_new_values = {} ; let checkbox_new_values = {} ;
while (true) {
i++ ; j++ ;
if (!\$("#costing_event_"+i).html()) {
i-- ; j-- ;
break ;
}
let hidden_input = (\$("input[name='added_full_day_cost_item_"+i+"']").val()) ? \$("input[name='added_full_day_cost_item_"+i+"']").val() : (\$("input[name='added_half_day_cost_item_"+i+"']").val()) ? \$("input[name='added_full_day_cost_item_"+i+"']").val() : "" ;
if (typeof hidden_input !== "undefined" && (hidden_input.includes("-1") || hidden_input.includes("-2"))) {
continue ;
}
if (orig_cost_item == \$("#selectDescription_costing_event_"+i).val()) {
j-- ;
\$("#selectDescription_costing_event_"+i).val("").trigger("chosen:updated") ;
\$("#inputQty_costing_event_"+i).val("") ;
\$("#inputAmount_usd_costing_event_"+i).val("") ;
// calc_totals(i,"costing_event") ;
} else {
select_new_values["#selectDescription_costing_event_"+j] = \$("#selectDescription_costing_event_"+i).val() ;
input_new_values["input[name='qty_costing_event_"+j+"']"] = \$("input[name='qty_costing_event_"+i+"']").val() ;
input_new_values["input[name='amount_usd_costing_event_"+j+"']"] = \$("input[name='amount_usd_costing_event_"+i+"']").val() ; ;
input_new_values["input[name='amount_ttl_costing_event_"+j+"']"] = \$("input[name='amount_ttl_costing_event_"+i+"']").val() ; ;
checkbox_new_values["#checkboxVat_costing_event_"+j] = (\$("#checkboxVat_costing_event_"+i).is(":checked")) ? 1 : 0 ;
}
if (i != j) {
\$("input[name='added_full_day_cost_item_"+i+"']").remove() ;
\$("input[name='added_half_day_cost_item_"+i+"']").remove() ;
}
}
for (let key in select_new_values) {
console.log("select_new_values : "+key) ;
if (select_new_values[key] != \$(key).val()) {
\$(key).val(select_new_values[key]).trigger("chosen:updated") ;
}
}
for (let key in input_new_values) {
if (typeof \$(key).val() == 'undefined' && input_new_values[key]) {
// let display = (hidden_input_name[key].includes("_day_cost_item_")) ? "" : "" ;
let display = (hidden_input_name[key].includes("_day_cost_item_") && "$username" == "handre") ? "" : "style='display:none;'" ;
\$(hidden_input_to_html_row[key]).append("") ;
}
if (input_new_values[key] != \$(key).val()) {
\$(key).val(input_new_values[key]) ;
}
}
for (let key in checkbox_new_values) {
if (\$(key).is(":checked") && !checkbox_new_values[key]) {
\$(key).prop("checked",false) ;
} else if (!\$(key).is(":checked") && checkbox_new_values[key]) {
\$(key).prop("checked",true) ;
}
}
if (j < i) {
for (let k=j+1;k<=i+1;k++) {
if ((j == 0 && k > 1) || j > 0) {
\$("#costing_event_"+k).html("") ;
}
if ((k == j+1 && j > 0) || (j == 0 && k == 2)) {
console.log("SHOW : #btn_row_costing_event_"+k) ;
\$("#btn_row_costing_event_"+k).show() ;
\$("#btn_costing_event_"+k).show() ;
} else if (j > 0 || (j == 0 && k > 2)) {
console.log("HIDE : #btn_row_costing_event_"+k) ;
\$("#btn_row_costing_event_"+k).hide() ;
\$("#btn_costing_event_"+k).hide() ;
}
}
}
}
function auto_select_cost_items_in_quote_tab (id,row_number) {
cnt_selected_systems_per_cost_item() ;
let system_id = \$("#"+id).val() ;
let row_nr = (row_number) ? row_number : get_row_nr(id) ;
if (orig_selected_system_names[row_nr] && get_event_cost_id[orig_selected_system_names[row_nr]] != get_event_cost_id[system_id]) {
auto_deselect_cost_items_in_quote_tab(row_nr) ;
}
let event_cost_id = get_event_cost_id[system_id] ;
console.log("event_cost_id : "+event_cost_id) ;
let i = 0 ;
if (!event_cost_id) {
while (true) {
i++ ;
if (!\$("#costing_event_"+i).html()) {
break ;
}
if (\$("#selectDescription_costing_event_"+i).val() && \$("#selectDescription_costing_event_"+i).val() == get_event_cost_id[orig_selected_system_names[row_nr]] && i != row_nr) {
event_cost_id = get_event_cost_id[orig_selected_system_names[row_nr]] ;
}
}
if (!event_cost_id) {
orig_selected_system_names[row_nr] = \$("#selectSystem_name_"+row_nr).val() ;
return ;
}
} else if (event_cost_id && get_event_cost_id[orig_selected_system_names[row_nr]] && get_event_cost_id[orig_selected_system_names[row_nr]] != event_cost_id) {
while (true) {
i++ ;
if (!\$("#costing_event_"+i).html()) {
break ;
}
if (\$("#selectDescription_costing_event_"+i).val() && \$("#selectDescription_costing_event_"+i).val() == get_event_cost_id[orig_selected_system_names[row_nr]]) {
let hidden_input_val = (\$("input[name='added_full_day_cost_item_"+i+"']").val()) ? \$("input[name='added_full_day_cost_item_"+i+"']").val() : (\$("input[name='added_half_day_cost_item_"+i+"']").val()) ? \$("input[name='added_half_day_cost_item_"+i+"']").val() : "" ;
if (hidden_input_val && !hidden_input_val.includes("-2")) {
let hidden_input_fh = (\$("input[name='added_full_day_cost_item_"+i+"']").val()) ? "full" : (\$("input[name='added_half_day_cost_item_"+i+"']").val()) ? "half" : "" ;
if (hidden_input_fh) {
\$("#inputQty_costing_event_"+i).val(nr_days[hidden_input_fh]*cnt_systems_per_cost_item[get_event_cost_id[orig_selected_system_names[row_nr]]]) ;
calc_totals(i,"costing_event") ;
}
}
}
}
}
orig_selected_system_names[row_nr] = \$("#selectSystem_name_"+row_nr).val() ;
let default_full_day_cost_item_rate = default_cost_item_rates["full,"+event_cost_id] ;
let default_half_day_cost_item_rate = default_cost_item_rates["half,"+event_cost_id] ;
if (!default_full_day_cost_item_rate && !default_half_day_cost_item_rate) {
return ;
}
if (!nr_days["full"] && !nr_days["half"]) {
return ;
}
if (nr_days["full"] && !default_full_day_cost_item_rate && !nr_days["half"] && default_half_day_cost_item_rate) {
return ;
}
if (!nr_days["full"] && default_full_day_cost_item_rate && nr_days["half"] && !default_half_day_cost_item_rate) {
return ;
}
let last_used_row = 0 ; i = 0 ; let cnt_systems = cnt_systems_per_cost_item[event_cost_id] ;
if (\$("#costing_event_1").html() && !\$("#costing_event_2").html() && !\$("#selectDescription_costing_event_1").val()) {
last_used_row = 0 ;
} else {
let nr_of_blank_rows_needed = (nr_days["full"] && nr_days["half"]) ? 2 : 1 ;
while (true) {
i++ ;
let j = 1 + i ;
if (\$("#selectDescription_costing_event_"+i).val() && \$("#selectDescription_costing_event_"+i).val() != event_cost_id) {
last_used_row = i ;
// console.log(" 5.1 last_used_row : "+last_used_row) ;
} else if (\$("#costing_event_"+i).html() && \$("#selectDescription_costing_event_"+i).val() && \$("#selectDescription_costing_event_"+i).val() == event_cost_id) {
last_used_row = i - 1 ;
break ;
} else if ((!\$("#selectDescription_costing_event_"+i).val() && nr_of_blank_rows_needed == 1) || (nr_of_blank_rows_needed == 2 && !\$("#selectDescription_costing_event_"+i).val() && !\$("#selectDescription_costing_event_"+j).val())) {
i-- ;
break ;
}
}
}
let full_half_loop = (nr_days["full"] && nr_days["half"]) ? ["full","half"] : (nr_days["full"]) ? ["full"] : (nr_days["half"]) ? ["half"] : [] ;
let = f_t_h = {"full":"half","half":"full"} ;
i = 0 ; let j = 0 ; last_used_row++ ; let need_to_shift_data_below_down = 0 ; let select_new_values = {} ; let input_new_values = {} ; let checkbox_new_values = {} ; let hidden_input_to_html_row = {} ;let hidden_input_name = {} ; let add_html_row = {} ; let already_moved_this_row = {} ; let break_loop = 0 ; let cals_totals_row = {} ;
while (true) {
i++ ; j++ ;
if (last_used_row > i) {
continue ;
}
let k = last_used_row ;
if (j > i && \$("#selectDescription_costing_event_"+i).val() && !already_moved_this_row[i]) {
need_to_shift_data_below_down = 1 ;
select_new_values["#selectDescription_costing_event_"+j] = \$("#selectDescription_costing_event_"+i).val() ;
input_new_values["input[name='qty_costing_event_"+j+"']"] = \$("input[name='qty_costing_event_"+i+"']").val() ;
input_new_values["input[name='amount_usd_costing_event_"+j+"']"] = \$("input[name='amount_usd_costing_event_"+i+"']").val() ;
input_new_values["input[name='amount_ttl_costing_event_"+j+"']"] = \$("input[name='amount_ttl_costing_event_"+i+"']").val() ;
checkbox_new_values["#checkboxVat_costing_event_"+j] = (\$("#checkboxVat_costing_event_"+i).is(":checked")) ? 1 : 0 ;
let hidden_input_value = (\$("input[name='added_full_day_cost_item_"+i+"']").val()) ? "full" : (\$("input[name='added_half_day_cost_item_"+i+"']").val()) ? "half" : "" ;
if (hidden_input_value && hidden_input_value != "") {
input_new_values["input[name='added_"+hidden_input_value+"_day_cost_item_"+j+"']"] = \$("input[name='added_"+hidden_input_value+"_day_cost_item_"+i+"']").val() ;
hidden_input_to_html_row["input[name='added_"+hidden_input_value+"_day_cost_item_"+j+"']"] = "#costing_event_"+j ;
hidden_input_name["input[name='added_"+hidden_input_value+"_day_cost_item_"+j+"']"] = "added_"+hidden_input_value+"_day_cost_item_"+j ;
\$("input[name='added_"+hidden_input_value+"_day_cost_item_"+i+"']").remove() ;
}
if (!\$("#costing_event_"+j).html()) {
add_html_row[j] = 1 ;
}
cals_totals_row[j] = 1 ;
}
if (i == last_used_row) {
for (let f_h in full_half_loop) {
let default_rate = (full_half_loop[f_h] == "full") ? default_full_day_cost_item_rate : default_half_day_cost_item_rate ;
if (nr_days[full_half_loop[f_h]] && default_rate) {
i++ ; j++ ;
if (f_h == 0 && full_half_loop[1] && \$("#selectDescription_costing_event_"+i).val() && \$("#selectDescription_costing_event_"+i).val() != event_cost_id) {
j++ ;
already_moved_this_row[i] = 1 ;
need_to_shift_data_below_down = 1 ;
select_new_values["#selectDescription_costing_event_"+j] = \$("#selectDescription_costing_event_"+i).val() ;
input_new_values["input[name='qty_costing_event_"+j+"']"] = \$("input[name='qty_costing_event_"+i+"']").val() ;
input_new_values["input[name='amount_usd_costing_event_"+j+"']"] = \$("input[name='amount_usd_costing_event_"+i+"']").val() ;
input_new_values["input[name='amount_ttl_costing_event_"+j+"']"] = \$("input[name='amount_ttl_costing_event_"+i+"']").val() ;
checkbox_new_values["#checkboxVat_costing_event_"+j] = (\$("#checkboxVat_costing_event_"+i).is(":checked")) ? 1 : 0 ;
let hidden_input_value = (\$("input[name='added_full_day_cost_item_"+i+"']").val()) ? "full" : (\$("input[name='added_half_day_cost_item_"+i+"']").val()) ? "half" : "" ;
if (hidden_input_value && hidden_input_value != "") {
input_new_values["input[name='added_"+hidden_input_value+"_day_cost_item_"+j+"']"] = \$("input[name='added_"+hidden_input_value+"_day_cost_item_"+i+"']").val() ;
hidden_input_to_html_row["input[name='added_"+hidden_input_value+"_day_cost_item_"+j+"']"] = "#costing_event_"+j ;
hidden_input_name["input[name='added_"+hidden_input_value+"_day_cost_item_"+j+"']"] = "added_"+hidden_input_value+"_day_cost_item_"+j ;
\$("input[name='added_"+hidden_input_value+"_day_cost_item_"+i+"']").remove() ;
}
cals_totals_row[j] = 1 ;
}
i-- ; j-- ;
if (!\$("#costing_event_"+k).html()) {
add_quote_expenses_row_all("costing_event_"+k,"costing_event") ;
\$("#selectDescription_costing_event_"+k+"_chosen").css("width","90%") ;
\$("#costing_event_"+k).append("") ;
break_loop = 1 ;
} else if (\$("#costing_event_"+k).html() && typeof \$("input[name='added_"+full_half_loop[f_h]+"_day_cost_item_"+k+"']").val() == 'undefined') {
\$("#costing_event_"+k).append("") ;
\$("input[name='added_"+f_t_h[full_half_loop[f_h]]+"_day_cost_item_"+k+"']").remove() ;
} else {
\$("input[name='added_"+full_half_loop[f_h]+"_day_cost_item_"+k+"']").val(event_cost_id) ;
}
\$("#selectDescription_costing_event_"+k).val(event_cost_id).trigger("chosen:updated") ;
\$("#inputQty_costing_event_"+k).val(nr_days[full_half_loop[f_h]]*cnt_systems) ;
\$("#inputAmount_usd_costing_event_"+k).val(default_rate) ;
calc_totals(k,"costing_event") ;
k++ ;
}
}
}
if (!\$("#costing_event_"+i).html() || break_loop) {
i-- ; j-- ;
break ;
}
}
if (need_to_shift_data_below_down) {
for (let row_nr in add_html_row) {
add_quote_expenses_row_all("costing_event_"+row_nr,"costing_event") ;
\$("#selectDescription_costing_event_"+row_nr+"_chosen").css("width","90%") ;
}
for (let key in select_new_values) {
if (select_new_values[key] != \$(key).val()) {
\$(key).val(select_new_values[key]).trigger("chosen:updated") ;
}
}
for (let key in input_new_values) {
if (typeof \$(key).val() == 'undefined' && input_new_values[key]) {
// let display = (hidden_input_name[key].includes("_day_cost_item_")) ? "" : "" ;
let display = (hidden_input_name[key].includes("_day_cost_item_") && "$username" == "handre") ? "" : "style='display:none;'" ;
\$(hidden_input_to_html_row[key]).append("") ;
}
if (input_new_values[key] != \$(key).val()) {
\$(key).val(input_new_values[key]) ;
}
}
for (let key in checkbox_new_values) {
if (\$(key).is(":checked") && !checkbox_new_values[key]) {
\$(key).prop("checked",false) ;
} else if (!\$(key).is(":checked") && checkbox_new_values[key]) {
\$(key).prop("checked",true) ;
}
}
for (let key in cals_totals_row) {
calc_totals(key,"costing_event") ;
}
if (j > i) {
for (let k=i+1;k<=j;k++) {
\$("#costing_event_"+k).show() ;
\$("#btn_row_costing_event_"+k).hide() ;
\$("#btn_costing_event_"+k).hide() ;
}
let k = j+1 ;
\$("#btn_row_costing_event_"+k).show() ;
\$("#btn_costing_event_"+k).show() ;
}
// let [sub_total,vat_total] = add_up_totals ("costing_event",j,\$("input[name='roe']").val(),0) ;
// \$("input[name='income']").val((sub_total+vat_total).toFixed(2)) ;
// update_overall_totals(sub_total,vat_total,"costing_event") ;
}
}
\$("#content").on("change","[id^='radio_']", function () {
// [nr_days["full"],nr_days["half"]] = count_nr_of_full_day_and_half_days() ;
update_qty_in_quote_tab_when_changing_nr_of_full_or_half_days () ;
}) ;
function update_qty_in_quote_tab_when_changing_nr_of_full_or_half_days () {
console.log("update_qty_in_quote_tab_when_changing_nr_of_full_or_half_days") ;
[nr_days["full"],nr_days["half"]] = count_nr_of_full_day_and_half_days() ;
let opp_add = {"full":"half","half":"full"} ;
let i = 0 ; let j = 0 ; let select_new_values = {} ; let input_new_values = {} ; let checkbox_new_values = {} ;
if (!prev_nr_days["full"] && !prev_nr_days["half"] && (nr_days["full"] || nr_days["half"])) {
// return ;
}
let add =
(!prev_nr_days["full"] && !prev_nr_days["half"] && nr_days["full"]) ? "blank_full" :
(!prev_nr_days["half"] && !prev_nr_days["full"] && nr_days["half"]) ? "blank_half" :
(!prev_nr_days["full"] && nr_days["full"]) ? "full" :
(!prev_nr_days["half"] && nr_days["half"]) ? "half" :
"" ;
let remove =
(prev_nr_days["full"] && !nr_days["full"]) ? "full" :
(prev_nr_days["half"] && !nr_days["half"]) ? "half" :
"" ;
let change =
(prev_nr_days["full"] != nr_days["full"] && prev_nr_days["half"] != nr_days["half"] && prev_nr_days["full"] && nr_days["full"] && prev_nr_days["half"] && nr_days["half"]) ? "both" :
(prev_nr_days["full"] && nr_days["full"] && prev_nr_days["full"] != nr_days["full"]) ? "full" :
(prev_nr_days["half"] != nr_days["half"] && prev_nr_days["half"] && nr_days["half"]) ? "half" :
"" ;
let hidden_input_to_html_row = {} ; let hidden_input_name = {} ; let add_html_row = {} ; let remove_input = {} ; let cals_totals_row = {} ;
while (true) {
i++ ; j++ ;
if (!\$("#costing_event_"+i).html()) {
i-- ; j-- ;
break ;
}
let added_full_cost_item = \$("input[name='added_full_day_cost_item_"+i+"']").val() ;
let added_half_cost_item = \$("input[name='added_half_day_cost_item_"+i+"']").val() ;
let event_cost_id = (added_full_cost_item) ? added_full_cost_item : (added_half_cost_item) ? added_half_cost_item : "" ;
let event_cost_id_extract = (event_cost_id.includes("_")) ? get_row_nr(event_cost_id) : event_cost_id ;
let added = (added_full_cost_item) ? "full" : (added_half_cost_item) ? "half" : "" ;
if ((added && add && added == add) || (add == "blank_full" && add == "full") || (add == "blank_half" && add == "half")) {
continue ;
}
let do_not_remove_this_row = (event_cost_id.includes("-1") || event_cost_id.includes("-2")) ? 1 : 0 ;
if (event_cost_id && event_cost_id != "") {
let change_row = (change && (change == added || change == "both")) ? added : 0 ;
let rate = (event_cost_id.includes("-1")) ? \$("input[name='amount_usd_costing_event_"+i+"']").val() : default_cost_item_rates[added+","+event_cost_id_extract] ;
// let rate = \$("input[name='amount_usd_costing_event_"+i+"']").val() ;
let qty = (event_cost_id.includes("-2")) ? \$("input[name='qty_costing_event_"+i+"']").val() : (!cnt_systems_per_cost_item[event_cost_id_extract]) ? nr_days[added] : nr_days[added]*cnt_systems_per_cost_item[event_cost_id_extract] ;
if (!qty) { qty = 0 ; }
if (change_row) {
input_new_values["input[name='qty_costing_event_"+j+"']"] = qty ;
input_new_values["input[name='amount_usd_costing_event_"+j+"']"] = rate ;
// input_new_values["input[name='amount_ttl_costing_event_"+j+"']"] = (qty*rate).toFixed(2) ;
if (i != j) {
select_new_values["#selectDescription_costing_event_"+j] = \$("#selectDescription_costing_event_"+i).val() ;
checkbox_new_values["#checkboxVat_costing_event_"+j] = (\$("#checkboxVat_costing_event_"+i).is(":checked")) ? 1 : 0 ;
input_new_values["input[name='added_"+change_row+"_day_cost_item_"+j+"']"] = event_cost_id ;
hidden_input_to_html_row["input[name='added_"+change_row+"_day_cost_item_"+j+"']"] = "#costing_event_"+j ;
hidden_input_name["input[name='added_"+change_row+"_day_cost_item_"+j+"']"] = "added_"+change_row+"_day_cost_item_"+j ;
\$("input[name='added_"+change_row+"_day_cost_item_"+i+"']").remove() ;
}
cals_totals_row[j] = 1 ;
if (!add || event_cost_id.includes("-3")) {
continue ;
}
}
if (add == "full") {
\$("input[name='added_"+added+"_day_cost_item_"+i+"']").remove() ;
j++ ;
}
if (i != j && ((add && add != added && added != remove) || (!do_not_remove_this_row && remove && remove != added))) {
select_new_values["#selectDescription_costing_event_"+j] = \$("#selectDescription_costing_event_"+i).val() ;
input_new_values["input[name='qty_costing_event_"+j+"']"] = qty ;
input_new_values["input[name='amount_usd_costing_event_"+j+"']"] = rate ;
// input_new_values["input[name='amount_ttl_costing_event_"+j+"']"] = (qty*rate).toFixed(2) ;
checkbox_new_values["#checkboxVat_costing_event_"+j] = (\$("#checkboxVat_costing_event_"+i).is(":checked")) ? 1 : 0 ;
if (!\$("#costing_event_"+j).html()) {
add_html_row[j] = 1 ;
console.log("add_html_row : "+j) ;
input_new_values["input[name='added_"+added+"_day_cost_item_"+j+"']"] = event_cost_id ;
hidden_input_to_html_row["input[name='added_"+added+"_day_cost_item_"+j+"']"] = "#costing_event_"+j ;
hidden_input_name["input[name='added_"+added+"_day_cost_item_"+j+"']"] = "added_"+added+"_day_cost_item_"+j ;
}
cals_totals_row[j] = 1 ;
}
if (add == "half") {
if (i != j) {
\$("input[name='added_full_day_cost_item_"+i+"']").remove() ;
input_new_values["input[name='added_"+added+"_day_cost_item_"+j+"']"] = event_cost_id ;
hidden_input_to_html_row["input[name='added_"+added+"_day_cost_item_"+j+"']"] = "#costing_event_"+j ;
hidden_input_name["input[name='added_"+added+"_day_cost_item_"+j+"']"] = "added_"+added+"_day_cost_item_"+j ;
}
j++ ;
}
if (remove && remove == added && !add) {
if (do_not_remove_this_row) {
continue ;
}
j-- ;
\$("#selectDescription_costing_event_"+i).val("").trigger("chosen:updated") ;
\$("input[name='qty_costing_event_"+i+"']").val("") ;
\$("input[name='amount_usd_costing_event_"+i+"']").val("") ;
\$("input[name='amount_ttl_costing_event_"+i+"']").val("") ;
\$("input[name='added_"+remove+"_day_cost_item_"+i+"']").remove() ;
continue ;
} else if (!do_not_remove_this_row && remove && remove == added && add) {
if (add == "half") {
j-- ;
}
\$("input[name='added_"+remove+"_day_cost_item_"+i+"']").remove() ;
}
let jj = (add == "full") ? j - 1 : (add == "half") ? j : j ;
if (add) {
if (!\$("#costing_event_"+jj).html()) {
add_html_row[jj] = 1 ;
// console.log("add : "+add) ;
}
if (!do_not_remove_this_row && remove == "half") {
j-- ;
}
rate = default_cost_item_rates[add+","+event_cost_id_extract] ;
qty = (!cnt_systems_per_cost_item[event_cost_id_extract]) ? nr_days[add] : nr_days[add]*cnt_systems_per_cost_item[event_cost_id_extract] ;
// select_new_values["#selectDescription_costing_event_"+jj] = \$("#selectDescription_costing_event_"+i).val() ;
select_new_values["#selectDescription_costing_event_"+jj] = event_cost_id_extract ;
input_new_values["input[name='qty_costing_event_"+jj+"']"] = qty ;
input_new_values["input[name='amount_usd_costing_event_"+jj+"']"] = rate ;
// input_new_values["input[name='amount_ttl_costing_event_"+jj+"']"] = (rate*qty).toFixed(2) ;
input_new_values["input[name='added_"+add+"_day_cost_item_"+jj+"']"] = (event_cost_id.includes("-3")) ? "-3_"+event_cost_id_extract : event_cost_id_extract ;
hidden_input_to_html_row["input[name='added_"+add+"_day_cost_item_"+jj+"']"] = "#costing_event_"+jj ;
hidden_input_name["input[name='added_"+add+"_day_cost_item_"+jj+"']"] = "added_"+add+"_day_cost_item_"+jj ;
if (add != added && \$("input[name='added_"+added+"_day_cost_item_"+jj+"']").val()) {
// \$("input[name='added_"+added+"_day_cost_item_"+jj+"']").remove() ;
remove_input["input[name='added_"+added+"_day_cost_item_"+jj+"']"] = 1 ;
}
cals_totals_row[jj] = 1 ;
}
} else if (!event_cost_id && i != j) {
select_new_values["#selectDescription_costing_event_"+j] = \$("#selectDescription_costing_event_"+i).val() ;
input_new_values["input[name='qty_costing_event_"+j+"']"] = \$("input[name='qty_costing_event_"+i+"']").val() ;
input_new_values["input[name='amount_usd_costing_event_"+j+"']"] = \$("input[name='amount_usd_costing_event_"+i+"']").val() ;
input_new_values["input[name='amount_ttl_costing_event_"+j+"']"] = \$("input[name='amount_ttl_costing_event_"+i+"']").val() ;
checkbox_new_values["#checkboxVat_costing_event_"+j] = (\$("#checkboxVat_costing_event_"+i).is(":checked")) ? 1 : 0 ;
if (!\$("#costing_event_"+j).html()) {
add_html_row[j] = 1 ;
}
// cals_totals_row[j] = 1 ;
} else if (!event_cost_id && (add == "blank_full" || add == "blank_half")) {
let k = j + 1 ;
if (\$("#selectDescription_costing_event_"+j).val() && !\$("#costing_event_"+k).html()) {
j++ ;
}
if (!\$("#selectDescription_costing_event_"+j).val()) {
let ij = 0 ; let add_type = (add == "blank_full") ? "full" : "half" ;
while (true) {
ij++ ;
if (!\$("#system_name_row_"+ij).html()) {
break ;
}
if (default_cost_item_rates[add_type+","+get_event_cost_id[\$("#selectSystem_name_"+ij).val()]]) {
if (!\$("#costing_event_"+j).html()) {
add_html_row[j] = 1 ;
} else {
\$("#checkboxExcl_costing_event_"+j).prop("checked",false) ;
}
select_new_values["#selectDescription_costing_event_"+j] = get_event_cost_id[\$("#selectSystem_name_"+ij).val()] ;
input_new_values["input[name='qty_costing_event_"+j+"']"] = nr_days[add_type] ;
input_new_values["input[name='amount_usd_costing_event_"+j+"']"] = default_cost_item_rates[add_type+","+get_event_cost_id[\$("#selectSystem_name_"+ij).val()]] ;
// input_new_values["input[name='amount_ttl_costing_event_"+j+"']"] = (nr_days[add_type]*default_cost_item_rates[add_type+","+get_event_cost_id[\$("#selectSystem_name_"+ij).val()]]).toFixed(2) ;
checkbox_new_values["#checkboxVat_costing_event_"+j] = 1 ;
input_new_values["input[name='added_"+add_type+"_day_cost_item_"+j+"']"] = get_event_cost_id[\$("#selectSystem_name_"+ij).val()] ; ;
hidden_input_to_html_row["input[name='added_"+add_type+"_day_cost_item_"+j+"']"] = "#costing_event_"+j ;
hidden_input_name["input[name='added_"+add_type+"_day_cost_item_"+j+"']"] = "added_"+add_type+"_day_cost_item_"+j ;
cals_totals_row[j] = 1 ;
j++ ;
}
}
j-- ;
break ;
}
} else if (event_cost_id.includes("-3")) {
let rate = (event_cost_id.includes("-1")) ? \$("input[name='amount_usd_costing_event_"+i+"']").val() : default_cost_item_rates[added+","+event_cost_id_extract] ;
// let rate = \$("input[name='amount_usd_costing_event_"+i+"']").val() ;
let qty = (event_cost_id.includes("-2")) ? \$("input[name='qty_costing_event_"+i+"']").val() : (!cnt_systems_per_cost_item[event_cost_id_extract]) ? nr_days[added] : nr_days[added]*cnt_systems_per_cost_item[event_cost_id_extract] ;
if (!qty) { qty = 0 ; }
input_new_values["input[name='qty_costing_event_"+j+"']"] = qty ;
input_new_values["input[name='amount_usd_costing_event_"+j+"']"] = rate ;
// input_new_values["input[name='amount_ttl_costing_event_"+j+"']"] = (qty*rate).toFixed(2) ;
cals_totals_row[j] = 1 ;
}
}
for (let key in remove_input) {
\$(key).remove() ;
}
for (let row_nr in add_html_row) {
add_quote_expenses_row_all("costing_event_"+row_nr,"costing_event") ;
\$("#selectDescription_costing_event_"+row_nr+"_chosen").css("width","90%") ;
}
for (let key in select_new_values) {
if (select_new_values[key] != \$(key).val()) {
\$(key).val(select_new_values[key]).trigger("chosen:updated") ;
}
}
for (let key in input_new_values) {
if (typeof \$(key).val() == 'undefined' && input_new_values[key]) {
let display = (hidden_input_name[key].includes("_day_cost_item_") && "$username" == "handre") ? "" : "style='display:none;'" ;
\$(hidden_input_to_html_row[key]).append("") ;
}
if (input_new_values[key] != \$(key).val()) {
\$(key).val(input_new_values[key]) ;
}
}
for (let key in checkbox_new_values) {
if (\$(key).is(":checked") && !checkbox_new_values[key]) {
\$(key).prop("checked",false) ;
} else if (!\$(key).is(":checked") && checkbox_new_values[key]) {
\$(key).prop("checked",true) ;
}
}
for (let key in cals_totals_row) {
calc_totals(key,"costing_event") ;
}
if (remove && !j) {
j++ ;
}
if (j < i) {
for (let k=j+1;k<=i+1;k++) {
\$("#costing_event_"+k).html("") ;
if (k == j+1) {
\$("#btn_row_costing_event_"+k).show() ;
\$("#btn_costing_event_"+k).show() ;
} else {
\$("#btn_row_costing_event_"+k).hide() ;
\$("#btn_costing_event_"+k).hide() ;
}
}
} else if (j > i) {
for (let k=i+1;k<=j;k++) {
\$("#costing_event_"+k).show() ;
\$("#btn_row_costing_event_"+k).hide() ;
\$("#btn_costing_event_"+k).hide() ;
}
let k = j+1 ;
\$("#btn_row_costing_event_"+k).show() ;
\$("#btn_costing_event_"+k).show() ;
}
let [sub_total,vat_total] = add_up_totals ("costing_event",j,\$("input[name='roe']").val(),0) ;
\$("input[name='income']").val((sub_total+vat_total).toFixed(2)) ;
update_overall_totals(sub_total,vat_total,"costing_event") ;
prev_nr_days["full"] = nr_days["full"] ;
prev_nr_days["half"] = nr_days["half"] ;
}
\$("#content").on("change","[id^='selectSystem_name_']", function () {
let corresponding_cost_item_exists = ((default_cost_item_rates["full,"+get_event_cost_id[\$(this).val()]] && nr_days["full"]) || (default_cost_item_rates["half,"+get_event_cost_id[\$(this).val()]] && nr_days["half"])) ? 1 : 0 ;
if (corresponding_cost_item_exists) {
system_with_cost_item_rates_selected = 1 ;
} else if (system_with_cost_item_rates_selected && (!\$(this).val() || (\$(this).val() && !corresponding_cost_item_exists))) {
system_with_cost_item_rates_selected = 0 ;
let ij = 0 ;
while (true) {
ij++ ;
if (!\$("#system_name_row_"+ij).html()) {
break ;
}
if (!\$("#selectSystem_name_"+ij).val()) {
continue ;
}
if ((default_cost_item_rates["full,"+get_event_cost_id[\$("#selectSystem_name_"+ij).val()]] && nr_days["full"]) || (default_cost_item_rates["half,"+get_event_cost_id[\$("#selectSystem_name_"+ij).val()]] && nr_days["half"])) {
system_with_cost_item_rates_selected = 1 ;
}
}
}
auto_select_cost_items_in_quote_tab(this.id) ;
}) ;
// \$("#content").on("change","[id^='selectDescription_']", async function () {
// let this_id = this.id ;
// let row_nr = get_row_nr(this_id) ;
// let tab = (this_id.includes("_costing_event_")) ? "costing_event" : (this_id.includes("_workings_event_")) ? "workings_event" : "" ;
// // if (!\$("input[name='added_half_day_cost_item_"+row_nr+"']").val() && !\$("input[name='added_half_day_cost_item_"+row_nr+"']")val() && ((nr_days["full"] && default_cost_item_rates["full,"+\$("#"+this_id).val()]) || (nr_days["full"] && default_cost_item_rates["full,"+\$("#"+this_id).val()]))) {
// // if (nr_days["full"] && default_cost_item_rates["full,"+\$("#"+this_id).val()]) {
// // "input[name='qty_costing_event_"+j+"']"
// // }
// // if (nr_days["full"] && default_cost_item_rates["full,"+\$("#"+this_id).val()] && nr_days["half"] && default_cost_item_rates["half,"+\$("#"+this_id).val()]) {
// // let j = row_nr + 1 ;
// // select_new_values["#selectDescription_costing_event_"+j] = \$(this).val() ;
// // input_new_values["input[name='qty_costing_event_"+j+"']"] = nr_days["half"] ;
// // input_new_values["input[name='amount_usd_costing_event_"+j+"']"] = default_cost_item_rates["half,"+\$(this).val()] ;
// // input_new_values["input[name='amount_ttl_costing_event_"+j+"']"] = (nr_days["half"]*default_cost_item_rates["half,"+\$(this).val()]).toFixed(2) ;
// // checkbox_new_values["#checkboxVat_costing_event_"+j] = 1 ;
// // input_new_values["input[name='added_half_day_cost_item_"+j+"']"] = \$(this).val() ;
// // hidden_input_to_html_row["input[name='added_half_day_cost_item_"+j+"']"] = "#costing_half"+add_type+"_day_cost_item_"+j ;
// // \$("input[name='added_full_day_cost_item_"+j+"']").remove() ;
// // // let ij = j ;
// // // while (true) {
// // // select_new_values["#selectDescription_costing_event_"+j] = \$("#selectDescription_costing_event_"+j).val() ;
// // // input_new_values["input[name='qty_costing_event_"+j+"']"] = \$("input[name='qty_costing_event_"+j+"']").val() ;
// // // input_new_values["input[name='amount_usd_costing_event_"+j+"']"] = \$("input[name='amount_usd_costing_event_"+j+"']") ;
// // // input_new_values["input[name='amount_ttl_costing_event_"+j+"']"] = (nr_days["half"]*default_cost_item_rates["half,"+\$(this).val()]).toFixed(2) ;
// // // checkbox_new_values["#checkboxVat_costing_event_"+j] = 1 ;
// // // input_new_values["input[name='added_half_day_cost_item_"+j+"']"] = \$(this).val() ;
// // // hidden_input_to_html_row["input[name='added_half_day_cost_item_"+j+"']"] = "#costing_half"+add_type+"_day_cost_item_"+j ;
// // // \$("input[name='added_full_day_cost_item_"+j+"']").remove() ;
// // // }
// // }
// // }
// if (\$("input[name='amount_usd_"+tab+"_"+row_nr+"']").val()) {
// // return ;
// }
// let full_day_exists = nr_days["full"] ; let half_day_exists = nr_days["half"] ;
// // [full_day_exists,half_day_exists] = count_nr_of_full_day_and_half_days() ;
// let already_loaded_full_day = (\$("#"+this_id).val()) ? \$("input[name='full_"+tab+"_"+\$("#"+this_id).val()+"']").val() : "" ;
// let already_loaded_half_day = (\$("#"+this_id).val()) ? \$("input[name='half_"+tab+"_"+\$("#"+this_id).val()+"']").val() : "" ;
// already_loaded_full_day = (typeof already_loaded_full_day == 'undefined') ? "" : 1 ;
// already_loaded_half_day = (typeof already_loaded_half_day == 'undefined') ? "" : 1 ;
// if (already_loaded_full_day && already_loaded_half_day) {
// return ;
// }
// if (already_loaded_full_day == 1) {
// full_day_exists = 0 ;
// }
// if (already_loaded_half_day == 1) {
// half_day_exists = 0 ;
// }
// let date_from = \$("input[name='date_from']").val() ;
// date_from = date_from.substring(0,10) ;
// let full_half_day = 0 ;
// // if (full_day_exists || (!already_loaded_full_day && already_loaded_half_day && !full_day_exists)) {
// if (full_day_exists != 0) {
// if ((typeof \$("input[name='full_"+tab+"_"+\$("#"+this_id).val()+"']").val() == 'undefined' || \$("input[name='full_"+tab+"_"+\$("#"+this_id).val()+"']").val()) && \$("#"+this_id).val()) {
// \$("#content").append("") ;
// }
// full_half_day = 1 ;
// // } else if (half_day_exists || (already_loaded_full_day && !half_day_exists && !already_loaded_half_day)) {
// } else if (half_day_exists != 0) {
// if ((typeof \$("input[name='half_"+tab+"_"+\$("#"+this_id).val()+"']").val() == 'undefined' || !\$("input[name='half_"+tab+"_"+\$("#"+this_id).val()+"']").val()) && \$("#"+this_id).val()) {
// \$("#content").append("") ;
// }
// full_half_day = 2 ;
// }
// let rate_ = "" ;
// if (default_cost_item_rates["full,"+\$("#"+this_id).val()] && full_half_day == 1) {
// rate_ = default_cost_item_rates["full,"+\$("#"+this_id).val()] ;
// } else if (default_cost_item_rates["half,"+\$("#"+this_id).val()] && full_half_day == 2) {
// rate_ = default_cost_item_rates["half,"+\$("#"+this_id).val()] ;
// } else if (full_half_day) {
// let rate_url = "$useropts{scripts}/get/get_event_cost_item_rates.pl?"+\$("#"+this_id).val()+"&"+date_from+"&"+full_half_day+"&"+this_id ;
// await \$.get(rate_url, function(json) {
// \$.each(json, function(key, data) {
// rate_ = data.rate ;
// });
// },'json') ;
// }
// if (rate_ == "") {
// return ;
// }
// // let tab = "" ;
// // if (this_id.includes("_costing_event_")) {
// // tab = "costing_event" ;
// // } else if (this_id.includes("_workings_event_")) {
// // tab = "workings_event" ;
// // }
// full_half_day = (full_half_day == 1) ? "full" : (full_half_day == 2) ? "half" : "" ;
// \$("input[name='qty_"+tab+"_"+row_nr+"']").val(nr_days[full_half_day]) ;
// \$("input[name='amount_usd_"+tab+"_"+row_nr+"']").val(rate_) ;
// \$("input[name='amount_ttl_"+tab+"_"+row_nr+"']").val((rate_*nr_days[full_half_day]).toFixed(2)) ;
// \$("#"+tab+"_"+row_nr).append("") ;
// calc_totals(row_nr,tab) ;
// // amount_usd_costing_event_1
// // amount_usd_workings_event_1
// }) ;
// \$("#content").on("change","[id^='selectSystem_name_']", function () {
// }) ;
~ ;
# --------------- END COSTING ----------------------------------------------------------------------------------------------------------------
}
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 . '|' ;
# # return if $ret ;
# # $add_form_fields = '' ;
# # &db_min_ro('quote_event_notes','*','','','') ;
# # $add_form_fields .= qq~
# #
# #
# #
# # Notes:
# #
# #
# #
~ ;
# # &tab_build_terms_headers ;
# # $cntnoteloop = 1 ;
# # for (1 .. 5) {
# # &tab_build_terms_fields('note',$_,$id) ;
# # }
# # $add_form_fields .= qq~
# #
# #
# #
# # Payment Terms:
# #
# #
# #
~ ;
# # &tab_build_terms_headers ;
# # $cntnoteloop = 1 ;
# # for (1 .. 5) {
# # &tab_build_terms_fields('payment_term',$_,$id) ;
# # }
# # &event_tabs_content_box($sec_name,$sec_col) ;
# --------------- END NOTES ----------------------------------------------------------------------------------------------------------------
}
if ($tab == 6) { # Workings
# --------------- START Working ----------------------------------------------------------------------------------------------------------------
$add_form_fields = '' ;
$lcol = 1 ;
$fcol = 2 ;
my @docs = ('Slip') ;
$add_form_fields .= qq~
~ ;
$file_cnt = 3 ;
foreach (@docs) {
my $doc = lc $_ ; $doc =~ s/ /\_/ ; $doc =~ s/&/\_/ ;
$event_uploads = &common_get_field_uploads($id,"$doc",'id','delete-attached-slip') ;
if ($event_uploads) {
$add_form_fields .= qq~
$event_uploads
~;
} else {
$add_form_fields .= qq~
~;
}
}
$trigger_jquery_raw .= qq(
\$('#delete-attached-slip').click(function (e) {
BootstrapDialog.confirm({
title: 'Confirm Delete',
message: 'Are you sure you want to delete
$doc?',
type: BootstrapDialog.TYPE_DANGER, // <-- Default value is BootstrapDialog.TYPE_PRIMARY <-- Default value is BootstrapDialog.TYPE_WARNING
callback: function(result) {
if (result) {
var url = "$useropts{scripts}/get/get_delete_attach.pl?slips/$id&$db{$table}{$id}{slip}&$table&$id&slip" ;
\$.get(url);
\$('#attach-$id-4').hide() ;
\$('#delete-attached-slip').hide() ;
} else {
// alert('Nope.');
}
}
});
});
) ;
$event_uploads = '' ;
# $add_form_fields .= &common_min_form_label_col("Custom Set") ;
my $custom_set_checked = ($db{$table}{$id}{custom_set} || $db{$table}{$id}{demo_id}) ? "CHECKED" : "" ;
$add_form_fields .= qq~
~ ; # class="control-label"
# $add_form_fields .= &common_min_form_checkbox_col('custom_set','') ;
$add_form_fields .= qq~
~ ;
our %sec_cnt = ('a_event' => "50-List Expenses") ;
my $sec = 'workings' ;
my ($sec_name, $sec_cnt_workings, $sec_col) = &tab_sec_det($sec) ;
$ret_pdf_link_sec .= $sec . '+' . $sec_cnt_workings . '|' ;
return if $ret ;
&event_tabs_build_sec($sec,$tab) ;
foreach (sort keys %sec_cnt) {
$_k = substr($_, 1) ;
my @parts = split(/\-/, $sec_cnt{$_}) ;
$add_form_fields .= qq~
~ if $parts[1] ne 'Operators';
$add_form_fields .= qq~
$parts[1] :
$icon_casuals
~ if $parts[1] eq 'Operators' ;
&tab_build_qt_col_headers_workings("$sec$_k") ;
# # # &db_min_ro('event_quotes_min', 'id, remarks_workings_event, supplier_workings_event, ref_nr_workings_event, qty_workings_event, amount_usd_workings_event, amount_workings_event, vat_workings_event, description_workings_event', "id = $id", '', '') if $id ;
&event_tabs_build_costs_forms($id,$tab,$parts[0],"$sec$_k") ;
}
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
my @ttlarr = ("sub_total", "vat_total", "grand_total") ;
$lcol = 1;
$fcol = 1;
foreach (@ttlarr) {
$lcol = 1;
$add_form_fields .= &common_min_form_label_col($_) ;
}
$add_form_fields .= qq~
~ ;
$trigger_jquery_raw .= qq~
\$("#textareaAdditional_notes").change(function () {
if (\$(this).val()) {
\$('label[for="additional_notes_expenses"]').text('Additional Notes : ') ;
\$("#textareaAdditional_notes_expenses_input").html(\$(this).val()) ;
} else if (!\$(this).val() && \$('label[for="additional_notes_expenses"]').text()) {
\$('label[for="additional_notes_expenses"]').text('') ;
\$("#textareaAdditional_notes_expenses_input").html('') ;
}
}) ;
~ ;
my $add1 = ($db{$table}{$id}{additional_notes}) ? "Additional Notes : " : "" ;
my $add2 = ($db{$table}{$id}{additional_notes}) ? "$db{$table}{$id}{additional_notes}" : "" ;
$add_form_fields .= qq~~ ;
$lcol = 2;
$add_form_fields .= &common_min_form_label_col('Total') ;
$lcol = 1;
my @ttlarr = ("total_amount_workings_event","total_vat_amount_workings_event","total_grand_amount_workings_event");
$lcol = 1 ; $fcol = 1 ;
my %renamed_totals = ("total_amount_workings_event" => "sub_total_workings_event", "total_vat_amount_workings_event" => "vat_total_workings_event" , "total_grand_amount_workings_event" => "grand_total_workings_event") ;
foreach (@ttlarr) {
$readonly{$renamed_totals{$_}} = "READONLY";
$input_style{$renamed_totals{$_}} = qq~style="text-align:right;"~ ;
my $val = $db{$table}{$id}{$_} ? $db{$table}{$id}{$_} : '0.00' ;
$add_form_fields .= &common_min_form_input_col($renamed_totals{$_},$val) ;
}
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
&event_tabs_content_box($sec_name,$sec_col) ;
# --------------- END WORKING ----------------------------------------------------------------------------------------------------------------
}
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 . '|' ;
return if $ret ;
$lcol = 3 ;
$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_input('po_nr',$db{$table}{$id}{po_nr},'') ;
$add_form_fields .= &common_min_form_datepicker('invoice_date',$db{$table}{$id}{invoice_date}) ;
&event_tabs_content_box($sec_name,$sec_col);
# --------------- END INVOICE DETAILS ----------------------------------------------------------------------------------------------------------
}
} #------------------------------------------------------------------------------------
sub event_tabs_build_sec {
my ($sec_,$tab) = @_ ;
# # # &db_min_ro('event_quotes_min', 'id,description_workings_event,operator_workings_event', "id = $i{id}", '', '') if $i{id};
my @saved_des = () ; my @saved_op = () ;
# my %casual_name_dropdown_hash = () ;
if ($sec_ eq "workings") {
@saved_des = split(";", $db{event_quotes_min}{$i{id}}{description_workings_event}) ;
@saved_op = split(";", $db{event_quotes_min}{$i{id}}{operator_workings_event}) ;
&db_min_ro('users','*',"user_type LIKE 'casual%' AND block <> 1 AND inactive <> 1",'','') if $iaction eq 'add' ;
foreach my $uid (sort {$db{users}{$a}{name} cmp $db{users}{$b}{name}} keys %{$db{users}}) {
# $casual_name_dropdown_hash{$uid} = $db{users}{$uid}{name} ;
$opts{operator_field} .= qq~~ ;
}
} else {
@saved_des = split(";", $db{event_quotes_min}{$i{id}}{item_costing_event}) ;
}
unless ($opts{description_field}) {
$opts{description_field} = qq~~ ;
my $other_id = 0 ;
foreach (sort {$db{event_cost_items}{$a}{name} cmp $db{event_cost_items}{$b}{name}} keys %event_list_name_array_expenses) {
next if $db{event_cost_items}{$_}{excl_from_expenses} ;
if (lc $db{event_cost_items}{$_}{name} eq "other") {
$other_id = $_ ;
next ;
}
$opts{description_field} .= qq~~ ;
}
$opts{description_field} .= qq~~ ;
}
my @description_chosen_field_ids = () ; my @operator_chosen_field_ids = () ; my @desriptions_that_are_operators = () ;
foreach (sort keys %sec_cnt) {
$_k = substr($_,1) ; $k = substr($_,2) ;
my @parts = split(/\-/,$sec_cnt{$_}) ;
for my $p_ (1 .. $parts[0]) { # item_1_costing_systems
my $field = "$sec_$_k\_$p_" ;
my $saved_val = $saved_des[$p_ - 1] ;
next if $p_ > 1 && !$saved_val ;
my $saved_val_2 = $saved_op[$p_ - 1] ;
if ($_k eq '_event') {
$opts{"description_$field"} = $opts{description_field} ;
$trigger_jquery_raw .= qq~\$("#selectDescription_$field").val("$saved_val") ; \$("#selectDescription_$field").trigger("chosen:updated") ; ~ if $saved_val and $saved_val ne "14" ;
push @desriptions_that_are_operators,"#selectDescription_$field" if $saved_val eq "14" ;
if ($sec_ eq "workings") {
$opts{"operator_$field"} = $opts{operator_field} ;
$trigger_jquery_raw .= qq~\$("#selectOperator_$field").val("$saved_val_2") ; \$("#selectOperator_$field").trigger("chosen:updated") ; ~ if $saved_val_2 ;
}
}
$item_type = 'input' ;
unless ($got{$field}) {
$got{$field} = 1 ;
push @excl_field_ids,"#checkboxExcl_$field" ;
push @description_field_ids,"#selectDescription_$field" ;
push @operator_field_ids,"#selectOperator_$field" ;
push @description_chosen_field_ids,"#selectDescription_$field\_chosen" ;
push @operator_chosen_field_ids,"#selectOperator_$field\_chosen" ;
push @vat_field_ids,"#checkboxVat_$field" ;
push @qty_field_ids,"#inputQty_$field" ;
push @amount_usd_field_ids,"#inputAmount_usd_$field" ;
}
}
}
my $desriptions_that_are_operators_string = join (",",@desriptions_that_are_operators) ;
$trigger_jquery_raw .= qq~\$("$desriptions_that_are_operators_string").val("14") ; \$("$desriptions_that_are_operators_string").trigger("chosen:updated") ; ~ if $desriptions_that_are_operators_string ;
# if ($sec_ eq "demo_expenses") {
$trigger_jquery .= qq~
\$("#$cntxt{$tab} [id^='select']").filter( function() {
return this.id.endsWith("_chosen") ;
}).css("width","90%");
~ ;
# $trigger_jquery .= qq~\$("#$cntxt{$tab} [id^='select']").css("width","90%");~ ;
# return ;
# }
# my $description_chosen_field_ids_string = join(",",@description_chosen_field_ids) ;
# $trigger_jquery .= qq~\$("$description_chosen_field_ids_string").css("width","90%");~ ;
# if ($sec_ eq "workings") {
# my $operator_chosen_field_ids_string = join(",",@operator_chosen_field_ids) ;
# $trigger_jquery .= qq~\$("$operator_chosen_field_ids_string").css("width","90%");~ ;
# }
} #------------------------------------------------------------------------------------------
sub event_tabs_customer_select_opts {
my ($table,$dispfield,$where,$field) = @_ ;
$where .= " AND " if $where ;
$where .= "events='1'" ;
&db_min_ro($table,'*',$where,'','') ;
foreach my $id (sort { $db{$table}{$a}{name} cmp $db{$table}{$b}{name} } keys %{$db{$table}}) {
my $saved_val = $db{event_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%" );~ ;
$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~
~ ;
} #------------------------------------------------------------------------------------
sub tab_build_terms_fields {
my ($sec,$cnt,$id) = @_ ;
my $exfield = "excl_$cnt\_$sec\s" ;
my $inpfield = "$sec\_$cnt" ;
unless ($db{quote_event_notes}{1}{$inpfield}) {
$checkit{$exfield} = 1 ;
}
if ($db{$table}{$id}{$inpfield}) {
$val = $db{$table}{$id}{$inpfield} ;
} else {
$val = $db{quote_event_notes}{1}{$inpfield} ;
}
$note_display_style = '' ; $note_display_plus_btn = '' ;
unless ($cnt==1 or $db{quote_event_notes}{1}{$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 = '' ;
}
$note_display_plus_btn = qq~~;
} else {
$cntnoteloop++ ;
}
$add_form_fields .= qq~~ ;
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
$add_form_fields .= &common_min_form_input_col($inpfield,$val,'') ;
$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 . '|' ;
return if $ret ;
$lcol = 3 ;
$add_form_fields = '' ;
$fcol = 8 ;
# $textarea_height{notes} = ($is_schools_manager) ? 102 : 93 ;
# $textarea_height{notes} = ($glod_user_level < 4) ? 102 : 93 ;
$textarea_height{notes} = ($glod_user_level < 3) ? 102 : 93 ;
$add_form_fields .= &common_min_form_textarea('notes',$db{$table}{$id}{notes},'') ;
$add_form_fields .= qq~~ ;
# unless ($is_schools_manager) {
if ($glod_user_level > 3) {
$textarea_height{office_notes} = 93 ;
$add_form_fields .= &common_min_form_textarea('office_notes',$db{$table}{$id}{office_notes},'') ;
$add_form_fields .= qq~~ ;
}
&event_tabs_content_box($sec_name,$sec_col);
# --------------- END CUSOTMER DETAILS ----------------------------------------------------------------------------------------------------------
}
if ($tab==7) { # Cusotmer Details
# --------------- START CUSOTMER DETAILS --------------------------------------------------------------------------------------------------------
my $sec = '_profit_loss' ; my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
$ret_pdf_link_sec .= $sec . '+' . $sec_cnt . '|' ;
return if $ret ;
$lcol = 3 ; $fcol = 5 ;
my $expenses = $db{$table}{$id}{total_grand_amount_workings_event} ? sprintf("%0.2f",$db{$table}{$id}{total_grand_amount_workings_event}) : '0.00' ;
# my $income = $db{$table}{$id}{grand_total} ? $db{$table}{$id}{grand_total} : '0.00' ;
my $income = $db{$table}{$id}{sub_total} ? sprintf("%0.2f",$db{$table}{$id}{sub_total}) : '0.00' ;
# my $profit_or_loss = $income - $expenses ;
my $profit_or_loss = sprintf("%0.2f",($income - $expenses)) ;
$add_form_fields = '' ;
$lcol = 3;
$fcol = 3;
$readonly{income} = "READONLY";
$readonly{expenses} = "READONLY";
$readonly{profit_loss} = "READONLY";
$add_form_fields .= &common_min_form_input('income',$income,'') ;
$add_form_fields .= &common_min_form_input('expenses',$expenses,'') ;
$add_form_fields .= &common_min_form_input('profit_loss',$profit_or_loss,'') ;
&event_tabs_content_box($sec_name,$sec_col);
# my $sec = '_overall_revenue' ;
# my ($sec_name,$sec_cnt,$sec_col) = &tab_sec_det($sec) ;
# my @ttlarr = ("total_grand_amount_workings_event", "grand_total") ;
# foreach (@ttlarr) {
# $readonly{$_} = "READONLY";
# $input_style{$_} = qq~style="text-align:right;"~;
# my $val = $db{$table}{$id}{$_} ? $db{$table}{$id}{$_} : '0.00' ;
# $add_form_fields .= &common_min_form_input_col($_,$val) ;
# }
# &event_tabs_content_box($sec_name,$sec_col) ;
# --------------- END CUSOTMER DETAILS ----------------------------------------------------------------------------------------------------------
}
} #------------------------------------------------------------------------------------
sub tab_curr_symbols {
$curr_symb{ZAR} = 'R';
$curr_symb{USD} = '$';
$curr_symb{GBP} = 'GBP';
$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 = '' ;
$style_vat = 'style="display:none;"' if $no_vat{$sec} ;
$add_form_fields .= qq~~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ if $sec eq 'costing_event';
$add_form_fields .= qq~
~ if $sec eq 'costing_casual_users';
$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_build_qt_col_headers_workings {
my ($sec) = @_ ;
my $style_vat = '' ;
$style_vat = 'style="display:none;"' if $no_vat{$sec} ;
$add_form_fields .= qq~~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ if $sec ne 'workings_casual_users';
$add_form_fields .= qq~
~ if $sec ne 'workings_casual_users';
# $add_form_fields .= qq~
~ if $sec eq '_workings_casual_users';
$add_form_fields .= qq~
~ if $sec ne 'workings_casual_users';
# $add_form_fields .= qq~
~ if $sec eq '_workings_casual_users';
$add_form_fields .= qq~
~ if $sec ne 'workings_casual_users';
$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 event_tabs_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~$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' ;
# return if $is_schools_manager ;
return if $glod_user_level < 4 ;
$cntxt{4} = 'four' ;
# $cntxt{5} = 'five' ;
$cntxt{6} = 'six' ;
$cntxt{7} = 'seven' ;
} #----------------------------------------------------------------------------------------
sub tab_names {
my ($tab) = @_ ;
my $tabname = '' ;
if ($tab==1) { $tabname = 'Customer Details' ; }
elsif ($tab==2) { $tabname = 'Event Details' ; }
elsif ($tab==3) { $tabname = 'Event Specifics' ; }
elsif ($tab==4) { $tabname = 'Quote' ; }
# elsif ($tab==5) { $tabname = 'Notes' ; }
elsif ($tab==6) { $tabname = 'Expenses' ; }
elsif ($tab==7) { $tabname = 'Invoice Details' ; }
return ($tabname) ;
} #------------------------------------------------------------------------------------
sub tab_hash {
# &db_min_ro('users',"id","user_type like '%casual%'",'','') ;
# &db_min_ro('events',"id,event_quote_nr,user_id,category",'','','') ;
# &db_min_ro('event_cost_items','*','','name asc','') ;
our @excl_field_ids = () ; our @description_field_ids = () ; our @operator_field_ids = () ; our @vat_field_ids = () ; our @qty_field_ids = () ; our @amount_usd_field_ids = () ; our @excl_field_ids = () ; our @btn_ids = () ;
&tab_load_vars;
for (1 .. 7) {
next if $_ == 5 ;
my $tname = &tab_names($_) ;
our $ret_pdf_link_sec = '' ; # _sa_out+16|_cl_del+13|_sa_in+17|_des_sa+13|
&event_tabs_build_qt_left('',$_,1) ;
&tab_build_qt_right('',$_,1) ;
$tabcnt{$tname} = $_ ;
$tabsec{$tname} = $ret_pdf_link_sec ;
}
# &build_workings_costings_forms_jquery ;
} #------------------------------------------------------------------------------------
sub tab_load_vars {
# our %casuals = ();
our %available_casuals = () ;
our %not_available_casuals = () ;
# unless (defined %casuals) {
unless (scalar keys %casuals > 0) {
&db_min_ro('users',"id","user_type like '%casual%'",'','') ;
foreach my $user_id (keys %{$db{users}}){
$casuals{$user_id} = 1 ;
}
}
&db_min_ro('events',"id,event_quote_nr,user_id,category",'','','') ;
foreach my $event_id (keys %{$db{events}}){
next unless $casuals{$db{events}{$event_id}{user_id}} ;
if ($db{events}{$event_id}{event_quote_nr} == $id and $db{events}{$event_id}{category} eq 'available'){
$available_casuals{$db{events}{$event_id}{user_id}} = 1 ;
} elsif ($db{events}{$event_id}{event_quote_nr} == $id and $db{events}{$event_id}{category} eq 'unavailable'){
$not_available_casuals{$db{events}{$event_id}{user_id}} = 1 ;
}
}
our %dlg_operator = () ;
for (1 .. 50) {
next unless $db{$table}{$id}{"operator_workings_event_$_"} ;
if ($available_casuals{$db{$table}{$id}{"operator_workings_event_$_"}}) {
$dlg_operator{"operator_workings_event_$_"} = qq~
~ ;
} elsif ($not_available_casuals{$db{$table}{$id}{"operator_workings_event_$_"}}) {
$dlg_operator{"operator_workings_event_$_"} = qq~ ~ ;
} else {
$dlg_operator{"operator_workings_event_$_"} = qq~~ ;
}
}
# &db_min_ro('event_cost_items','*','','name asc','') ;
&db_min_ro('event_cost_items','*',"excl_from_expenses < 1",'name asc','') ;
our %event_list_name_array_quote = () ;
our %event_list_name_array_expenses = () ;
my @spl = () ;
foreach my $iid (keys %{$db{event_cost_items}}) {
@spl = split(" ", $db{event_cost_items}{$iid}{name});
for (@spl) {$_ = ucfirst $_ ; }
$db{event_cost_items}{$iid}{name} = join (" ", @spl) ;
$event_list_name_array_quote{$iid} = $db{event_cost_items}{$iid}{name} ;
$event_list_name_array_expenses{$iid} = $db{event_cost_items}{$iid}{name} ;
}
} #------------------------------------------------------------------------------------
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 = 'Event Costings' ;
for (1 .. 30) { $vat_tick{$_} = 1 ; }
}
if ($sec eq 'workings') {
$sec_nam = 'Event Expenses' ;
for (1 .. 50) { $vat_tick{$_} = 1 ; }
}
return ($sec_nam,$sec_cnt,$sec_col) ;
} #------------------------------------------------------------------------------------
sub event_tabs_build_boxes_top {
my ($id,$demo_page) = @_ ;
our ($lcol,$fcol) = &common_min_columns(3,6) ;
$add_form_fields = '' ;
$fcol=8 ;
$add_form_fields .= qq~~ ;
$preferred_title{quote_nr} = "Nr" ;
$add_form_fields .= &common_min_form_input('quote_nr',$db{$table}{$id}{quote_nr},'') ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~~ ;
if (($db{$table}{$id}{quote_date} eq '') or ($db{$table}{$id}{quote_date} eq '0000-00-00')) {
$db{$table}{$id}{quote_date} = $now_ccyy_mm_dd ;
}
$preferred_title{quote_date} = "Date" ;
$add_form_fields .= &common_min_form_datepicker('quote_date',$db{$table}{$id}{quote_date}) ;
my $plus_n_days_ccyy_mm_dd = &common_add_delta_days(14) ;
$add_form_fields .= qq~
~ ;
if (!$demo_page) {
$add_form_fields .= qq~~ ;
$preferred_title{quote_to} = "Client" ;
$add_form_fields .= &common_min_form_select('quote_to',$db{$table}{$id}{quote_to},'') ;
$add_form_fields .= qq~
~ ;
$dlg{quote_to} = qq~
~ ;
}
$fcol = 7;
$add_form_fields .= qq~~ ;
$allow_deselect{country_id} = 1 ;
$add_form_fields .= &common_min_form_select('country_id',$db{$table}{$id}{country_id},'') ;
$trigger_jquery_raw .= qq~\$("#selectCountry_id").chosen({ allow_single_deselect:true });~ ;
$add_form_fields .= qq~
~ ;
if ($demo_page) {
$add_form_fields .= qq~~ ;
$allow_deselect{region_id} = '' ;
$add_form_fields .= &common_min_form_select('region_id',$db{$table}{$id}{region_id},'') ;
$add_form_fields .= qq~
~ ;
}
$fcol = 8;
$print_box_content_rows .= &common_min_box_top('qrcode',"Quote",'BABEC2');
$print_box_content_rows .= qq~
~;
$print_box_content_rows .= qq~
~ ;
$print_box_content_rows .= &common_min_box_foot;
} #------------------------------------------------------------------------------------
sub event_tabs_build_costs_forms {
my ($id,$tab,$rcnt,$suffix) = @_ ;
$tab_sections{$tab} .= "$suffix+$rcnt|" ;
$jq_work_cal = qq~
var vat_totalW$suffix = 0 ;
var total_totalW$suffix = 0 ;
var subtotalW$suffix = 0 ;
var vat_amountW = 0 ;
~ ;
$jq_fs = '' ;
%cnt_specific_jquery = () ;
&set_check_boxes_checked($id,$rcnt,"excl",$suffix);
&set_check_boxes_checked($id,$rcnt,"vat",$suffix);
my $cntloop = 1 ;
my $field = "" ;
my $val = 0 ;
my $table_ = "event_quotes_min" ;
my @excl_old = split(";", $db{$table_}{$id}{"excl_$suffix"}) ;
my @qty_old = split(";", $db{$table_}{$id}{"qty_$suffix"}) ;
my @vat_old = split(";", $db{$table_}{$id}{"vat_$suffix"}) ;
my @remarks_old = () ;
my @supplier_old = () ;
my @ref_nr_old = () ;
my @amount_usd_old = () ;
my @amount_ttl_old = () ;
my @des_old = () ;
my @ops_old = () ;
my @curr_amnt_cost = () ;
if ($suffix eq "workings_event") {
@remarks_old = split(";",$db{$table_}{$id}{remarks_workings_event}) ;
@supplier_old = split(";",$db{$table_}{$id}{supplier_workings_event}) ;
@ref_nr_old = split(";",$db{$table_}{$id}{ref_nr_workings_event}) ;
@amount_usd_old = split(";",$db{$table_}{$id}{amount_usd_workings_event});
@amount_ttl_old = split(";",$db{$table_}{$id}{amount_workings_event});
@des_old = split(";",$db{$table_}{$id}{description_workings_event}) ;
@ops_old = split(";",$db{$table_}{$id}{operator_workings_event}) ;
} else {
@amount_usd_old = split(";",$db{$table_}{$id}{usd_amnt_costing_event});
@amount_ttl_old = split(";",$db{$table_}{$id}{item_ttl_costing_event});
@des_old = split(";",$db{$table_}{$id}{item_costing_event});
@curr_amnt_cost = split(";",$db{$table_}{$id}{curr_amnt_costing_event});
}
for (1 .. $rcnt) {
$display_style = '' ;
$display_plus_btn = '' ;
my $style_display_butt = "" ;
unless ($_ == 1 or $des_old[$_ - 1]) {
$display_style = qq~style='display:none;'~ ;
push @btn_ids,"#btn_$suffix\_$_" ;
if ( $_>$cntloop ) {
$display_butt = qq~display:none;~ ;
$style_display_butt = qq~style="display:none;"~ ;
} else {
$display_butt = '' ;
}
$display_plus_btn = ($_>$cntloop) ? qq~~ : qq~~;
} else {
$cntloop++ ;
}
$add_form_fields .= qq~~ ;
#----------------------------------------------------------------------------------------------------
if ($des_old[$_-1] || $_ == 1) {
push @all_select_ids,"#selectDescription_$suffix\_$_" ;
push @all_select_ids,"#selectOperator_$suffix\_$_" if $suffix eq "workings_event" ;
$field = "excl_$suffix\_$_" ;
$fcol = 1;
# if ($checkit{$field} == 1) {
if ($excl_old[$_ - 1]){
$checked = 'CHECKED';
} elsif (($excl_tick{$_}) and ($iaction eq 'add')) {
$checked = 'CHECKED';
} else {
$checked = '';
}
$label{$field} = 1;
$add_form_fields .= &common_min_form_checkbox_col($field,$checkit{$field},$checked) ;
#----------------------------------------------------------------------------------------------------
$field = "description_$suffix\_$_" ;
$fcol = 2;
# $allow_deselect{$field} = 1;
$preferred_title{$field} = "Description $_" ; #if $suffix ne '_workings_casual_users';
$opts{$field} = $opts{description_field} unless $opts{$field} ;
if ($des_old[$_-1] && $opts{$field} !~ /SELECTED/ && $opts{$field} !~ /selected/) {
$opts{$field} =~ s/\"/\'/g ;
$opts{$field} =~ s/value='$des_old[$_-1]'/value='$des_old[$_-1]' SELECTED/g ;
}
$add_form_fields .= &common_min_form_select_col($field,'') ;
#----------------------------------------------------------------------------------------------------
if ($suffix eq "workings_event") {
$field = "operator_$suffix\_$_" ;
$fcol = 2;
# $allow_deselect{$field} = 1;
$preferred_title{$field} = "Operator $_" ;
$opts{$field} = $opts{operators_field} unless $opts{$field} ;
if ($ops_old[$_-1] && $opts{$field} !~ /SELECTED/ && $opts{$field} !~ /selected/) {
$opts{$field} =~ s/\"/\'/g ;
$opts{$field} =~ s/value='$ops_old[$_-1]'/value='$ops_old[$_-1]' SELECTED/g ;
}
$add_form_fields .= &common_min_form_select_col($field,'') ;
#----------------------------------------------------------------------------------------------------
$field = "remarks_$suffix\_$_" ;
$fcol = 1;
# $allow_deselect{$field} = 1;
$preferred_placeholder{$field} = "Remarks $_" ;
$add_form_fields .= &common_min_form_input_col($field, $remarks_old[$_ - 1]) ;
#----------------------------------------------------------------------------------------------------
$field = "supplier_$suffix\_$_" ;
$fcol = 1;
# $allow_deselect{$field} = 1;
$preferred_placeholder{$field} = "Supplier $_" ;
$add_form_fields .= &common_min_form_input_col($field,$supplier_old[$_ - 1]) if $suffix ne '_workings_casual_users';
#----------------------------------------------------------------------------------------------------
$field = "ref_nr_$suffix\_$_" ;
$fcol = 1;
# $allow_deselect{$field} = 1;
$preferred_placeholder{$field} = "Ref Nr $_" ;
$add_form_fields .= &common_min_form_input_col($field,$ref_nr_old[$_ - 1]) ;
#----------------------------------------------------------------------------------------------------
}
$field = "qty_$suffix\_$_" ;
# $field .= '_costing_event';
$fcol = 1;
$input_style{$field} = qq(style="text-align:right;");
$preferred_placeholder{$field} = "Qty $_" ;
$val = $qty_old[$_ - 1] ;
unless ($val) {
$val = $def_qty{$_} ;
}
$val = &q_get_val($val) ;
$add_form_fields .= &common_min_form_input_col($field,$val) ;
#----------------------------------------------------------------------------------------------------
$field = "amount_usd_$suffix\_$_" ;
$fcol = 1;
$input_style{$field} = qq(style="text-align:right;");
$val = $amount_usd_old[$_ - 1] ;
unless ($val) {
$val = $def_usd{$_} ;
}
$val = &q_get_val($val) ;
$preferred_placeholder{$field} = "Amount $_" ;
# $excl_on_change{$field} = 1 ;
$val = '0.00' unless $val ;
$add_form_fields .= &common_min_form_input_col($field,$val,1) ;
$add_form_fields .= qq~~ if $des_old[$_-1] && $amount_usd_old[$_ - 1] eq $default_cost_item_rates{$des_old[$_-1]}{half} ;
$add_form_fields .= qq~~ if $des_old[$_-1] && $amount_usd_old[$_ - 1] eq $default_cost_item_rates{$des_old[$_-1]}{full} ;
#----------------------------------------------------------------------------------------------------
# if ($suffix eq "costing_event") {
# $field = "curr_amnt_$suffix\_$_" ;
# # $field .= '_costing_event';
# $input_style{$field} = qq(style="text-align:right;");
# $readonly{$field} = 'READONLY' ; # $fcol=2 ;
# $preferred_placeholder{$field} = "ZAR Amnt $_" ;
# # $val = &q_get_val($db{$table}{$id}{$field}) ;
# $val = &q_get_val($curr_amnt_cost[$_ -1]) ;
# our $type = 'hidden' ;
# $add_form_fields .= &common_min_form_input_col($field,$val,1) ; $type = '' ;
# $type = '' ;
# }
# #----------------------------------------------------------------------------------------------------
$field = "amount_ttl_$suffix\_$_" ;
$input_style{$field} = qq(style="text-align:right;");
$val = $amount_ttl_old[$_ - 1] ;
$val = &q_get_val($val) ;
# $val = &common_commify($val) ;
# $val = sprintf("%0.2f",$val) ;
$preferred_placeholder{$field} = "Total Amount $_" ;
# $excl_on_change{$field} = 1 ;
$readonly{$field} = 'READONLY' ;
$val = '0.00' unless $val ;
$add_form_fields .= &common_min_form_input_col($field,$val,1) ;
#----------------------------------------------------------------------------------------------------
$field = "vat_$suffix\_$_" ;
$fcol=1 ;
# if ($checkit{$field} == 1) {
if($vat_old[$_ - 1]){
$checked = 'CHECKED';
} elsif ($iaction eq 'add') {
$checked = 'CHECKED';
} else {
$checked = '';
}
$label{$field} = 1 ;
if ($no_vat{$suffix}) {
$style_field{$field} = 'style="display:none;"' ;
}
# $excl_on_change{$field} = 1 ;
$add_form_fields .= &common_min_form_checkbox_col($field,$checkit{$field},$checked) ;
#----------------------------------------------------------------------------------------------------
} else {
$tindex+=10 if $suffix eq "workings_event" ;
$tindex+=7 if $suffix eq "costing_event" ;
}
my $f_h_val = substr($quote_tab_default_full_half_items[$_-1],2) ;
$add_form_fields .= (substr($quote_tab_default_full_half_items[$_-1],0,2) eq '1:') ? qq~~ : (substr($quote_tab_default_full_half_items[$_-1],0,2) eq '2:') ? qq~~ : qq~~ ;
$add_form_fields .= qq~
~ ;
$add_form_fields .= qq~
~ ;
my $style_disp_row = ($des_old[$_-1]) ? "" : "style='display:none;'" ;
$add_form_fields .= qq~
~ ;
}
} #----------------------------------------------------------------------------------------
1;