・「新設」の場合、店舗での販売開始年月日は届出日の翌日かそれ以降である必要
・「増設」「変更」「廃止」の場合、事由発生日から2週間以内に届け出をする必要
・・・という制限を下記のコードで実装できました。
ご教示いただきたいのは、その後のさらなる制御でして、仮に、フィールドコードが「遅延理由」という複数行文字列のフィールドを作成したとして、そこに何らかの文字が入力がされれば、制限が外れて届出送信ができる、という実装をしたいのですが、どのようにコードを追加すればよろしいでしょうか?
ご教示いただけると大変助かります。よろしくお願いいたします。
(function () {
'use strict';
fb.events.form.created.push(function (state) {
// 増設テーブルの設定
const expansionTableField = state.fields.find(field => field.code === '増設テーブル');
const expansionDateField = expansionTableField.fields.find(item => item.code === '増設販売所の販売開始年月日');
expansionDateField.validations.push({
params: [],
rule: 'expansion_err_event'
});
// 変更テーブルむりやりの設定
const forcedChangeTableField = state.fields.find(field => field.code === '変更テーブルむりやり');
const forcedChangeDateField = forcedChangeTableField.fields.find(item => item.code === '変更年月日_届出者変更後');
forcedChangeDateField.validations.push({
params: [],
rule: 'forced_change_err_event'
});
// 変更テーブルの設定
const changeTableField = state.fields.find(field => field.code === '変更テーブル');
const changeDateField = changeTableField.fields.find(item => item.code === '変更年月日_販売所変更後');
changeDateField.validations.push({
params: [],
rule: 'change_err_event'
});
// 廃止テーブルの設定
const abolishTableField = state.fields.find(field => field.code === '廃止テーブル');
const abolishDateField = abolishTableField.fields.find(item => item.code === '廃止年月日');
abolishDateField.validations.push({
params: [],
rule: 'abolish_err_event'
});
// 新設テーブルの設定
const newTableField = state.fields.find(field => field.code === '新設テーブル');
const startDateField = newTableField.fields.find(item => item.code === '販売開始年月日');
startDateField.validations.push({
params: [],
rule: 'start_err_event'
});
return state;
});
fb.addValidators = function (state) {
return {
expansion_err_event: {
getMessage: function (fieldCode, params) {
return '増設という事由発生日から2週間以内に届け出をする必要があります';
},
validate: function (value, params) {
const min = new Date();
min.setDate(min.getDate() - 15);
return value > min;
}
},
forced_change_err_event: {
getMessage: function (fieldCode, params) {
return '変更という事由発生日から2週間以内に届け出をする必要があります';
},
validate: function (value, params) {
const min = new Date();
min.setDate(min.getDate() - 15);
return value > min;
}
},
change_err_event: {
getMessage: function (fieldCode, params) {
return '変更という事由発生日から2週間以内に届け出をする必要があります';
},
validate: function (value, params) {
const min = new Date();
min.setDate(min.getDate() - 15);
return value > min;
}
},
abolish_err_event: {
getMessage: function (fieldCode, params) {
return '廃止という事由発生日から2週間以内に届け出をする必要があります';
},
validate: function (value, params) {
const min = new Date();
min.setDate(min.getDate() - 15);
return value > min;
}
},
start_err_event: {
getMessage: function (fieldCode, params) {
return '販売開始年月日は届出日の翌日かそれ以降である必要があります';
},
validate: function (value, params) {
const min = new Date();
min.setDate(min.getDate() + 0);
return value > min;
}
}
};
};
})();