「昨日までのレコードの値の中で重複している値があったら、エラーでsubmitをキャンセルする」
という処理を実装したいのですが、
var events05 = [
‘app.record.create.change.伝票番号’,
‘app.record.edit.change.伝票番号’,
];
kintone.events.on(events05, function(event) {
var record = event.record;
console.log(record);
var body = {
‘app’: kintone.app.getId(),
‘query’: ‘作成日時 >= YESTERDAY()’,
};
var records = ‘’;
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, body).then(function(resp) {
// success
console.log(resp);
records =resp.records;
// 伝票番号の加工
var result02 = ‘’;
var result03 = ‘’;
var result04 = ‘’;
var result05 = ‘’;
var result06 = ‘’;
const regexp = new RegExp(/^\w\d{12}\w$/);
for(var i = 0;i < record.伝票一覧.value.length;i++){
var denpyoNo = record.伝票一覧.value[i].value.伝票番号.value;
const result = regexp.test(denpyoNo);
if(result){
result02 = denpyoNo.substring( 1, 13 );
result03 = result02.substring( 0, 4 );
result04 = result02.substring( 4, 8 );
result05 = result02.substring( 8, 12 );
result06 = result03 + ‘-’ + result04 + ‘-’ + result05;
record.伝票一覧.value[i].value.伝票番号.value = result06;
}
for(var j = 0; j< records.length;j++){
for(var k = 0; k< records[j].伝票一覧.value.length;k++){
console.log(records[j].伝票一覧.value[k].value.伝票番号.value+’ & '+record.伝票一覧.value[i].value.伝票番号.value);
if(records[j].伝票一覧.value[k].value.伝票番号.value == record.伝票一覧.value[i].value.伝票番号.value){
window.alert(‘すでに登録している伝票登録があります。→’+record.伝票一覧.value[i].value.伝票番号.value);
record.伝票一覧.value[i].value.伝票番号.error = ‘すでに登録している伝票登録があります’;
event.error = ‘すでに登録している伝票登録があります’;
kintone.app.record.set({record: record});
}
}
}
}
return event;
});
まず、これで重複した値を入れた場合はエラーメッセージが表示されるように実装しました。
このまま保存してもエラーのまま保存ができてしまうので、
そしてsubmitイベントで「エラーメッセージがある場合はキャンセル」を実装しました。
var events04 = [
‘app.record.create.submit’,
‘app.record.edit.submit’,
];
kintone.events.on(events04, function(event) {
var record = event.record;
for(var i = 0;i < record.伝票一覧.value.length;i++){
if(record.伝票一覧.value[i].value.伝票番号.error == ‘すでに登録している伝票登録があります’){
return false;
}
}
});
しかしこれでもエラーメッセージが表示された状態でもキャンセルせずに保存が実行されてしまいます。
「エラーを判別するロジック自体をsubmitイベントに入れてたらキャンセルされるか?」
も試してみましたが、保存されてしまいました。
「昨日までのレコードの値の中で重複している値があったら、エラーでsubmitをキャンセルする」
はどうすれば実現可能でしょうか?
よろしくお願いします。