ステータスに制限かけたい

お世話になっております。

初心者で恐れ入ります。

プロセス管理で、ステータス:処理中になっている場合

例えば期限が2020-08-31となっている場合、

今日の日付が、2020-08-31か、それ以降の日付になってないと「完了」ボタンを押せないようにしたいですが、可能でしょうか?

ぜひ、ご指導のほど、どうぞよろしくお願い致します。

 

こんにちは。

ボタンを消す事はできませんが、プロセス管理のアクションをキャンセルする事はできますので、そちらを使ってはどうでしょうか?

プロセス管理のアクションイベント
> false を return した場合アクションがキャンセルされます。
https://developer.cybozu.io/hc/ja/articles/201941974#step3

動きのイメージはこんな感じです。

ボタンをクリック

app.record.detail.process.proceed が動く

日付をチェックする

NGな日付だったらreturn falseする

asaga様

お世話になっております。

アドバイス頂き、誠にありがとうございます。

お忙しいところ大変恐れ入りますが、なにかアドバイス頂けたら幸いです。

 

以下のコードでエラーとなり、全然動かないですが、

コードのご指導いただけますでしょうか?

どこが間違っているのか色々調べておりますが、全然進まなくて混乱しております。

ライブラリーにMoment.js(2.15.1)を選択しております。

(function() {
"use strict";
kintone.events.on(["app.record.detail.process.proceed"], function(event){
var nStatus = event.nextStatus.value;

switch(nStatus){
 case "完了":
 
 var record = event.record;
var kigen = record['期限']['value'];
var date = new Date();
var today = moment(date).format('YYYY-MM-DD');

if (kigen > today){

event.error = "期限が本日よりはやい早いため、完了できません!";
return event;

}
}
});
})();

こんにちは。

 

today()はどこにも定義されていないので、そこでエラーになっているかと思います。

moment.jsはあまり使った事が無いのですが、today();をmoment();に変えたら、当日の日付が取れないでしょうか。

あと、record.期限.value は、正しくは event.record.期限.value になると思います。

 

ご存知かもしれませんが、デバッグのやり方を覚えるとこのような調査がスムーズに進むと思います。

今日、ちょうど良い記事が公開されていましたので、こちらもご覧になってはいかがでしょうか?

https://developer.cybozu.io/hc/ja/articles/360038920252

asaga様

お世話になっております。

さっそくお返事頂き、誠にありがとうございます。

コードは投稿後、ちょっと修正しております。

今のところ、デバッグのほうではなんのエラーも表示されず、普通に完了ボタンが押せます・・

わー、すいません、修正前の方を見てしまったようです。。。

期限後でないとボタンを押せないようにしたいとの事なので、

if (kigen > today){

は、

if (kigen < today){

でしょうか?

asaga様

お世話になっております。

再度お返事頂き、誠にありがとうございます。

例えば本日:2020-02-28

期限:2020-05-28の場合、本日「完了」ボタンが押せないという動きをしたいです。

今はエラーなにも表示されず、普通に完了ボタンが押せて、とても悩んでいるおります。

美佳さん

「期限が本日より早いため、完了できません!」というメッセージからすると、

上記のケースでは押せるのが正常動作の気がするのですが、いかがでしょうか?

(期限が未来なので)

asaga様

お世話になります。
説明不足で大変恐れ入ります。

社内のルールとして、期限の日になった時や期限を過ぎた時のみ、完了ボタンを押し、
期限前は担当のところで止めてもらうように制限したいです。
期限の際に他の項目もあって、その項目が期限の日になった時や過ぎた場合のみ
確実なデータを入力することができるためです。

そうなると、元のソースで動きそうな気がするのですが、完了ボタンを押した時に、エラーメッセージが出ないでしょうか?

手元の環境で試したところエラーが出て、完了には進めない状態でした。

 

あとは、前に貼ったデバッグ方法のページにある「A. ブレイクポイント機能を利用して、調査する方法」を使って、

ソースのどの処理を通過しているかを調べて頂くのが良いかと思います。

asaga様

お世話になります。

新しいアプリ一つ作って、試してみたら、ご提示通り動きました。

長々とご親切にアドバイス頂き、誠にありがとうございました。

ちょっと急いでいた件でもありまして、慌ててました・・

この度はとても勉強になりました。本当にありがとうございました。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。