let input_valeur_kaban = $('#edit_prog_kanban_fs_valeurKanban'), //OK
input_appro_mini = $('#edit_prog_kanban_fs_approMini'),
input_sm_valeur = $('#edit_prog_kanban_fs_stockMiniValeur'), //OK
input_kanban_le_decide = $('#edit_prog_kanban_fs_nombreLEDecide'), //OK
input_kanban_ecart = $('#edit_prog_kanban_fs_ecart'),
input_cost = $('#edit_prog_kanban_fs_prix'), //OK
input_conso = $('#edit_prog_kanban_fs_consoPeriode'), //OK
input_period =$('#edit_prog_kanban_fs_nombreJoursPeriode'), //OK
input_kb_calc = $('#edit_prog_kanban_fs_nombreKanbanTotal'), // TODO a delete pour FS
input_le_calc = $('#edit_prog_kanban_fs_nombreLETotal'),
input_le_max = $('#edit_prog_kanban_fs_leMax'),
input_ta_total = $('#edit_prog_kanban_fs_delaiTotal'),
input_le_reel = $('#edit_prog_kanban_fs_leReel'),
input_le_day = $('#edit_prog_kanban_fs_leJour'),
input_nb_kb_decide = $('#edit_prog_kanban_fs_nombreKanbanDecide'),
form_prog = $('#form_prog'),
span_cmj = $('#cmj'),
btn_submit = $('#submit_form_prog'),
data_has_change = false;
;
$(btn_submit).prop('disabled',true);
function set_data_has_change()
{
data_has_change = true;
$(btn_submit).removeAttr('disabled');
refresh_display();
}
$('#form_prog input').change(function(){
set_data_has_change();
});
$('#edit_prog_kanban_fs_manager').change(function () {
set_data_has_change();
});
if(data_has_change){
$(btn_submit).click(function(){
$('#kanban_line_prototype').remove();
form_parsley.validate();
form_parsley.whenValid().then(function () {
$(btn_submit).html(btn_spin);
$(form_prog).submit();
});
});
}
let div_prototype = $('#kanban_line_prototype');
let prototype = $(div_prototype).data('prototype'),
counter = $(div_prototype).data('widget-counter'),
modal_form_lines_body = $('#modal_form_lines_body');
let form_parsley = $(form_prog).parsley(parsley_options);
function initModalAddLine(){
$(modal_form_lines_body).html('');
const regex = /__name__/gm;
let addLineForm = prototype.replace(regex,counter);
$(modal_form_lines_body).html(addLineForm);
gammeCalcLeKbVal(counter);
form_parsley = $(form_prog).parsley(parsley_options);
}
initModalAddLine();
$('#btn_confirm_add_line').click(function () {
checkLineForm('edit_prog_kanban_fs_lignes_'+ counter, function (valid) {
if (valid){
createLineInGammeTable();
initModalAddLine();
set_data_has_change();
handleRemoveItemCollection();
move_item();
}
});
});
function refresh_display(){
let cmj = parseFloat({{ (kanban.consoPeriode / kanban.nombreJoursPeriode)|number_format(4,'.','') }}),
kb_val = 0,
ta_total = 0,
le_day = 0,
le_kb = 0,
sm_day = 0;
if($(input_conso).val()) {
let conso =parseFloat($(input_conso).val().replace(',','.'));
let period = 1;
if($(input_period).val()){
period = parseFloat($(input_period).val().replace(',','.'));
} else $(input_period).val(1);
d_cmj = new Decimal(conso).dividedBy(period);
cmj = d_cmj.valueOf();
}
$(span_cmj).html(Math.round10(cmj, -4));
{# calcul #}
let lines_values = parseTableItems();
ta_total = lines_values.ta_total;
le_kb = lines_values.le_kb;
kb_val = parseInt($(input_valeur_kaban).val());
if(cmj > 0) {
let d_le_decide = new Decimal(lines_values.le_decide * kb_val);
le_day = d_le_decide.dividedBy(cmj).valueOf();
$(input_le_day).val(Math.round10(le_day,-2));
}
if(ta_total === 0 ) ta_total = 1;
$(input_ta_total).val(ta_total);
$(input_le_reel).val(Math.round10(lines_values.le_decide * kb_val,-2));
$(input_le_max).val(lines_values.le_decide);
{# kanban #}
if(le_day > 0 && kb_val > 0 && ta_total > 0 && cmj > 0){
let d_le_calc = new Decimal(sm_day).plus(ta_total).plus(le_day).dividedBy(le_day);
d_le_calc = d_le_calc.plus(1);
$(input_le_calc).val(Math.ceil(d_le_calc.valueOf()));
let kb_nb_le_calc = d_le_calc.valueOf();
if(kb_nb_le_calc >= 0) {
$('#edit_prog_kanban_fs_nombreKanbanTotal').val(Math.round10(kb_nb_le_calc,0));
$(input_kb_calc).val(Math.round10(kb_nb_le_calc,0));
let kb_le_decide = parseInt($(input_kanban_le_decide).val());
if (kb_le_decide >= 0 ){
let gap_value = (kb_le_decide - Math.ceil(d_le_calc.valueOf()))*lines_values.le_decide;
if(!gap_value){
gap_value = 0;
}
$(input_kanban_ecart).val(gap_value);
$(input_nb_kb_decide).val(Math.round10(Math.ceil(kb_le_decide)*lines_values.le_decide,0));
}
}
}
//else $(stock_table).hide();
}
refresh_display();
function parseTableItems(){
let response = {
'le_q' : 0,
'le_decide' : 0,
'le_kb' : 0,
'ta_total' : 0
};
$('#lines_collections tr').each(function(){
let tr = this;
let line_ta = parseFloat($(tr).find('.line_ta').html()),
line_le_q = parseFloat($(tr).data('leq')),
line_le_kb = parseFloat($(tr).find('.line_le_kb').html()),
line_le_decide = parseFloat($(tr).find('.line_le_dcd').html());
if(typeof line_ta == 'number') response.ta_total = response.ta_total + line_ta;
if(typeof line_le_kb == 'number' && line_le_kb > response.le_kb ) response.le_kb = line_le_kb;
if(typeof line_le_decide == 'number' && line_le_decide > response.le_decide ) response.le_decide = line_le_decide;
if(typeof line_le_q == 'number' && line_le_q > response.le_q ) response.le_q = line_le_q;
});
return response;
}
$('.graph-container').css({opacity:1});
function createLineInGammeTable() {
let section_fournisseur_code = $('#edit_prog_kanban_fs_lignes_'+counter+'_sectionFournisseur option:selected').html().split('-')[0],
section_client_code = $('#edit_prog_kanban_fs_lignes_'+counter+'_sectionClient option:selected').html().split('-')[0];
if (section_fournisseur_code.codePointAt(1) === 56550) section_fournisseur_code = section_fournisseur_code.substr(2);
if (section_client_code.codePointAt(1) === 56550) section_client_code = section_client_code.substr(2);
let input_poste = $('#edit_prog_kanban_fs_lignes_'+ counter +'_poste'),
input_delai = $('#edit_prog_kanban_fs_lignes_'+ counter +'_delai'),
input_nombreLEDecide = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEDecide'),
input_nombreLEQuantite = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEQuantite'),
input_nombreLEKanban = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEKanban'),
input_sectionFournisseur = $('#edit_prog_kanban_fs_lignes_'+ counter +'_sectionFournisseur'),
input_sectionClient = $('#edit_prog_kanban_fs_lignes_'+ counter +'_sectionClient');
let delay = parseFloat($(input_delai).val().replace(',','.'));
let obj = {
'sectionFournisseur': section_fournisseur_code,
'sectionClient': section_client_code,
'poste': $(input_poste).val(),
'delai': delay,
'nombreLEDecide': $(input_nombreLEDecide).val(),
'nombreLEQuantite': $(input_nombreLEQuantite).val(),
'nombreLEKanban': $(input_nombreLEKanban).val(),
'fournisseur_val': $(input_sectionFournisseur).val(),
'client_val': $(input_sectionClient).val()
};
let html_form = $(modal_form_lines_body).html();
let red_text_class = '';
if (obj.nombreLEKanban != obj.nombreLEDecide) red_text_class = ' text-red';
let html_line = '
'+
''+obj.poste+' | '+
''+obj.sectionFournisseur+' | '+
''+obj.sectionClient+' | '+
''+obj.delai+' | '+
''+obj.nombreLEKanban+' | '+
''+obj.nombreLEDecide+' | '+
'\n' +
' \n' +
' '+
'\n' +
' '+
''+
html_form +
' '+
' '+
' | '+
'
';
$('#lines_collections').append(html_line);
$(modal_form_lines_body).html('');
// must be reload
input_poste = $('#edit_prog_kanban_fs_lignes_'+ counter +'_poste');
input_delai = $('#edit_prog_kanban_fs_lignes_'+ counter +'_delai');
input_nombreLEDecide = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEDecide');
input_nombreLEQuantite = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEQuantite');
input_nombreLEKanban = $('#edit_prog_kanban_fs_lignes_'+ counter +'_nombreLEKanban');
input_sectionFournisseur = $('#edit_prog_kanban_fs_lignes_'+ counter +'_sectionFournisseur');
input_sectionClient = $('#edit_prog_kanban_fs_lignes_'+ counter +'_sectionClient');
$(input_poste).val(obj.poste);
$(input_delai).val(obj.delai);
$(input_nombreLEDecide).val(obj.nombreLEDecide);
$(input_nombreLEQuantite).val(obj.nombreLEQuantite);
$(input_sectionFournisseur).val(obj.fournisseur_val);
$(input_sectionClient).val(obj.client_val);
$(input_nombreLEKanban).val(obj.nombreLEKanban);
$('#edit_prog_kanban_fs_lignes_'+counter+'_numeroOrdre').val(parseInt(counter)+1);
counter++;
$('#modal_form_lines').foundation('close');
return true;
}
let modal_confirm_delete_line = $('#modal_confirm_delete_line'),
btn_confirm_delete_line = $('#btn_confirm_delete_line');
function handleRemoveItemCollection(){
$('.remove-item-collection').click(function(){
let tr = $(this).closest('tr');
$(modal_confirm_delete_line).foundation('open');
$(btn_confirm_delete_line).unbind('click');
$(btn_confirm_delete_line).bind('click', function(){
tr.remove();
$(modal_confirm_delete_line).foundation('close');
});
});
}
handleRemoveItemCollection();
function move_item(){
$('.move-down').unbind('click');
$('.move-down').bind('click', function () {
let current_tr = $(this).closest("tr");
let next_tr = $(current_tr).next();
let order_index_current = $(current_tr).find("input.input_numero_ordre").val();
let order_index_next = $(next_tr).find("input.input_numero_ordre").val();
// update indexes
$(next_tr).find("input.input_numero_ordre").val(order_index_current);
$(current_tr).find("input.input_numero_ordre").val(order_index_next);
$(next_tr).after($(current_tr));
set_data_has_change();
});
$('.move-up').unbind('click');
$('.move-up').bind('click', function () {
let current_tr = $(this).closest("tr");
let before_tr = $(current_tr).prev();
let order_index_current = parseInt($(current_tr).find("input.input_numero_ordre").val());
let order_index_before = parseInt($(before_tr).find("input.input_numero_ordre").val());
// update indexes
$(before_tr).find("input.input_numero_ordre").val(order_index_current);
$(current_tr).find("input.input_numero_ordre").val(order_index_before);
$(before_tr).before($(current_tr));
set_data_has_change();
});
}
move_item();
$(input_valeur_kaban).change(function () {
// Function to recalculate all gammes
let vk = $(this).val();
$('#lines_collections tr').each(function () {
let le_qte = $(this).data('leq');
let new_le_kb = Math.round10(parseFloat(le_qte) / vk, 0);
$(this).find('.line_le_kb').html(new_le_kb);
});
});
function calc_kb_lines(input_le_q, input_le_k, input_le_dcd) {
let input_le_quantite = $(input_le_q),
input_le_kanban = $(input_le_k),
input_le_decide = $(input_le_dcd),
vk = parseFloat($(input_valeur_kaban).val())||1;
$(input_le_quantite).change(function(){
if($(input_le_quantite).val()){
let le_kb_value = Math.round10(parseFloat($(input_le_quantite).val()) / vk, 0);
$(input_le_kanban).val(le_kb_value);
if(!$(input_le_decide).val()) $(input_le_decide).val(le_kb_value);
}
});
}
let modal_form_edit_line = $('#modal_form_edit_line'),
modal_form_edit_line_body = $('#modal_form_edit_line_body')
btn_confirm_edit_line = $('#btn_confirm_edit_line'),
current_line_order = '_name_',
current_tr = null,
current_row = null,
current_form_edit = null,
item_proto_container = null;
$('.edit-item-collection').click(function () {
// todo get the proto of this element
$(this).closest('td').find("div.hide");
current_row = $(this).closest('td').find("div.hide");
current_line_order = $(this).closest('td').find("div.hide").find("label").html();
current_form_edit = $(this).closest('td').find("div.hide").find("div#edit_prog_kanban_fs_lignes_"+current_line_order);
current_tr = $(this).closest('tr');
item_proto_container = $(this).closest('td').find("div.hide")[0];
$(modal_form_edit_line_body).html(current_form_edit);
calc_kb_lines($('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEQuantite'), $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEKanban'), $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEDecide'));
gammeCalcLeKbVal(current_line_order);
$(modal_form_edit_line).foundation('open');
});
{#$(modal_form_edit_line).on('closed.zf.reveal', function () {#}
{# $(current_row).children().append($(modal_form_edit_line_body).html());#}
{#});#}
$(btn_confirm_edit_line).click(function () {
checkLineForm('edit_prog_kanban_fs_lignes_'+ current_line_order, function (valid) {
if (valid){
let section_fournisseur_code = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionFournisseur option:selected').html().split('-')[0],
section_client_code = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionClient option:selected').html().split('-')[0];
if (section_fournisseur_code.codePointAt(1) === 56550) section_fournisseur_code = section_fournisseur_code.substr(2);
if (section_client_code.codePointAt(1) === 56550) section_client_code = section_client_code.substr(2);
let input_poste = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_poste'),
input_delai = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_delai'),
input_nombreLEDecide = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEDecide'),
input_nombreLEQuantite = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEQuantite'),
input_nombreLEKanban = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEKanban'),
input_sectionFournisseur = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionFournisseur'),
input_sectionClient = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionClient');
let delay = parseFloat($(input_delai).val().replace(',','.'));
let obj = {
'sectionFournisseur': section_fournisseur_code,
'sectionClient': section_client_code,
'poste': $(input_poste).val(),
'delai': delay,
'nombreLEDecide': $(input_nombreLEDecide).val(),
'nombreLEQuantite': $(input_nombreLEQuantite).val(),
'nombreLEKanban': $(input_nombreLEKanban).val(),
'fournisseur_val': $(input_sectionFournisseur).val(),
'client_val': $(input_sectionClient).val()
};
cleanHtmlTrAfterEditLine(current_tr)
let red_text_class = '';
if (obj.nombreLEKanban != obj.nombreLEDecide) red_text_class = ' text-red';
let modified_html_line = ''+obj.poste+' | '+
''+obj.sectionFournisseur+' | '+
''+obj.sectionClient+' | '+
''+obj.delai+' | '+
''+obj.nombreLEKanban+' | '+
''+obj.nombreLEDecide+' | ';
current_tr.prepend(modified_html_line);
$(current_row).children().append($(modal_form_edit_line_body).html());
$(modal_form_edit_line_body).html('');
//current_form_edit.html($(modal_form_edit_line_body).html());
input_poste = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_poste');
input_delai = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_delai');
input_nombreLEDecide = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEDecide');
input_nombreLEQuantite = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEQuantite');
input_nombreLEKanban = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_nombreLEKanban');
input_sectionFournisseur = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionFournisseur');
input_sectionClient = $('#edit_prog_kanban_fs_lignes_'+ current_line_order +'_sectionClient');
$(input_poste).val(obj.poste);
$(input_delai).val(parseFloat(obj.delai));
$(input_nombreLEDecide).val(obj.nombreLEDecide);
$(input_nombreLEQuantite).val(obj.nombreLEQuantite);
$(input_sectionFournisseur).val(obj.fournisseur_val);
$(input_sectionClient).val(obj.client_val);
$(input_nombreLEKanban).val(obj.nombreLEKanban);
set_data_has_change();
$(modal_form_edit_line).foundation('close');
}
});
});
function cleanHtmlTrAfterEditLine(tr) {
$(tr).find('td').each(function () {
if (!$(this).hasClass('action')){
$(this).remove();
}
});
}
function gammeCalcLeKbVal(key) {
let input_le_qte = $('#edit_prog_kanban_fs_lignes_'+key+'_nombreLEQuantite'),
input_le_kb = $('#edit_prog_kanban_fs_lignes_'+key+'_nombreLEKanban'),
input_le_dcd = $('#edit_prog_kanban_fs_lignes_'+key+'_nombreLEDecide'),
vk = parseFloat($(input_valeur_kaban).val())||1;
if($(input_le_qte).val()){
let le_kb_value = Math.round10(parseFloat($(input_le_qte).val()) / vk, 0);
$(input_le_kb).val(le_kb_value);
if(!$(input_le_dcd).val()) $(input_le_dcd).val(le_kb_value);
}
$(input_le_qte).unbind('change');
$(input_le_qte).bind('change', function(){
gammeCalcLeKbVal(key);
});
}
//gammeCalcLeKbVal(counter);
//TODO Modify bc don't work
function checkLineForm(div_container_id, callback){
let error = 0;
const reg = /[\d+\.\,]/;
$('#'+div_container_id+' input').each(function () {
let attempted_type = $(this).data('parsleyType'),
value = $(this).val();
if (attempted_type && attempted_type === "number" && value){
if (!value.match(reg)) {
error++;
$(this).addClass('is-invalid-input');
} else {
$(this).removeClass('is-invalid-input');
}
}
if ($(this).prop('required'))
{
if (!value){
error++;
$(this).addClass('is-invalid-input');
} else if (!$(this).hasClass('is-invalid-input')) {
$(this).removeClass('is-invalid-input');
}
}
})
$('#'+div_container_id+' select').each(function () {
let value = $(this).val();
if ($(this).prop('required'))
{
if (!value){
error++;
$(this).addClass('is-invalid-input');
} else {
$(this).removeClass('is-invalid-input');
}
}
})
return callback((error === 0));
}