お世話になります。
レコードの詳細画面を表示した際に、ラジオボタンの値に応じて任意のフィールドへ、日付を入力したいと考えています。
ex)ランクが「売上」の時は「売上日」を「基準日」へ入力。
ランクが「A」の時は「受注予定日」を「基準日」へ入力。
REST APIの更新などを使ってみたのですがなかなかうまく行きません。
初歩的な質問で申し訳ありませんが、ご教授頂けますと幸いです。
よろしくお願いします。
お世話になります。
レコードの詳細画面を表示した際に、ラジオボタンの値に応じて任意のフィールドへ、日付を入力したいと考えています。
ex)ランクが「売上」の時は「売上日」を「基準日」へ入力。
ランクが「A」の時は「受注予定日」を「基準日」へ入力。
REST APIの更新などを使ってみたのですがなかなかうまく行きません。
初歩的な質問で申し訳ありませんが、ご教授頂けますと幸いです。
よろしくお願いします。
そのままイベントの中身のValueをいじってあげれば大丈夫ですよ。
REST APIの更新は保存されているレコードを更新するので、画面上では変化がないはずです。
/**
* レコード編集時
*/
kintone.events.on('app.record.edit.show', function(event) {
var record = event.record;
if(record.ランク.value == '売上'){
record.基準日.value = record.売上日.value;
} else if(record.ランク.value == 'A'){
record.基準日.value = record.受注予定日.value;
}
return event;
});
w.yさん
コメントありがとうございます。
またこちらの説明不足で申し訳ありません。
行いたい事の条件としましては、保存されているレコードの詳細画面を表示したときに「基準日」にラジオボタンの値で
任意の日付フィールドの日付の入力を行いたいと考えていました。
「ランク」「各日付(基準日以外の日付フィールド)」は他のアプリと連動して自動で変更されるように設定を行っています。
またラジオボタンの値は「売上」「A」のほかにもあり全ての条件を表すと以下のようになります。
ランクが「売上」の場合は「売上日」を「基準日」へ入力。
ランクが「受注」の場合は「受注日」を「基準日」へ入力。
ランクが「A」の場合は「受注予定日」を「基準日」へ入力。
ランクが「B」の場合は「受注予定日」を「基準日」へ入力。
ランクが「C」の場合は「受注予定日」を「基準日」へ入力。
ランクが「D」の場合は「受注予定日」を「基準日」へ入力。
といった条件になります。
お手数ですが、ご教授いただけますと幸いです。
よろしくお願いします。
>レコードの詳細画面を表示したとき
なので、
‘app.record.detail.show’
イベントですね、すみません。
この場合は、REST APIによる「レコード更新」+「画面リロード」という形で対応できると思います。
で詳しく説明されていますので、参考にしてみてください。
書いてみるとこんな感じになるのではないかと思います。
/**
* レコード編集画面表示時
*/
kintone.events.on('app.record.detail.show', function(event) {
var record = event.record;
var editvalue;
if(record.ランク.value == '売上'){
editvalue = record.売上日.value;
} else if(record.ランク.value == 'A'){
editvalue = record.受注予定日.value;
} else {
editvalue = record.基準日.value
}
// 連続リロード防止
// 同じ値になっていたら更新処理を行わない
if (record.基準日.value !== editvalue){
var params = {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
基準日: {
value: editvalue
}
}
};
return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params).then (function(resp) {
location.reload();
return event;
}).catch(function(err){
// エラーの場合はメッセージを表示する
console.log(err);
event.error = "更新に失敗しました。";
return event;
});
} else {
return event;
}
});
w.yさん
再度コメントありがとうございます!!
無事こちらの環境でも実装することができました!!
ありがとうございました!!