ステータスが「承認済」の場合のみプリントクリエイターの帳票出力ボタンを表示したい

プログラミング素人です。基本的な質問ですみません。

見積書アプリで、プロセス管理機能を用いておりますが、
ステータスが「承認済」の場合のみ、
プリントクリエイターの帳票の出力ボタンを表示するようにしたいですが
可能でしょうか?

どうぞよろしくお願いいたします。

Shibayama様
cstapの落合です。

ご要望の機能は、下記のようにプリントクリエイターからダウンロードしたJavaScriptを変更することで実現できます。
appCodeはダウンロードしたJavaScriptに記載されているものに変更して、下記のJavaScriptをアプリに登録してみてください。

var _pcreatorConfig;

_pcreatorConfig = _pcreatorConfig || {};

_pcreatorConfig = {
appCode: "appCode", // ダウンロードしたJavaScriptのアプリコードに書き換えてください
baseUrl: "//print.kintoneapp.com"
};

(function() {
  "use strict"

  // 詳細画面
  kintone.events.on('app.record.detail.show', function (event) {
    if (event.record['ステータス'].value == '承認済') {
      var l, s, scr, styl;
      _pcreatorConfig.event = event;
      styl = document.createElement("link");
      styl.rel = "stylesheet";
      styl.type = "text/css";
      styl.href = "//print.kintoneapp.com/build/kintone-lib.css";
      l = document.getElementsByTagName("link")[0];
      l.parentNode.insertBefore(styl, l);
      scr = document.createElement("script");
      scr.type = "text/javascript";
      scr.async = true;
      scr.src = "//print.kintoneapp.com/build/kintone-lib.js";
      s = document.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(scr, s);
    }

    return event;
  });

  // 一覧画面(プレミアムプランのみ動作します)
  kintone.events.on('app.record.index.show', function (event) {
    var l, s, scr, styl;
    _pcreatorConfig.event = event;
    styl = document.createElement("link");
    styl.rel = "stylesheet";
    styl.type = "text/css";
    styl.href = "//print.kintoneapp.com/build/kintone-lib.css";
    l = document.getElementsByTagName("link")[0];
    l.parentNode.insertBefore(styl, l);
    scr = document.createElement("script");
    scr.type = "text/javascript";
    scr.async = true;
    scr.src = "//print.kintoneapp.com/build/kintone-lib.js";
    s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(scr, s);

    return event;
  });
})();

以上、参考になりますでしょうか?

落合様

素晴らしいスピードでの対応ありがとうございました。
試してみます。まずはお礼まで

Shibayama様
試してみてわからない点があれば、またご質問ください!

落合様

試してみました。
1点追加で質問させてください。

詳細画面のほうはうまく動きましたが、
一覧画面のほうも、承認された見積書だけ表示ということは可能でしょうか?

詳細画面のほうは承認後しか印刷できないので問題ないですが、
一覧画面からPDFを一括ダウンロードしてしまうと、
承認前でも見積を提出できてしまう気がしました。

承認済みの見積のみ、リスト表示する(一覧リストで条件絞り込み)ようにして、
そのリストの場合のみ、帳票の出力画面を表示する、
ということができればありがたいです。

素人すぎて恐縮ですが、よろしくお願いします。

Shibayama様
以下、回答させていただきます。

一覧画面のほうも、承認された見積書だけ表示ということは可能でしょうか?

kintoneの検索を利用した一括出力が可能です。

承認済みの見積のみ、リスト表示する(一覧リストで条件絞り込み)ようにして、
そのリストの場合のみ、帳票の出力画面を表示する、
ということができればありがたいです。

おっしゃる通りのことができます。
もう少し詳しく説明いたしますと、一覧画面では、検索条件にマッチするレコードを500件まで1度に帳票出力できます。
そのため、一覧画面についてはJavaScriptの変更は必要ないかと思います。

以上、よろしくお願い致します。

落合様

質問がわかりにくくてすみません。

検索条件にマッチするレコードのみを表示することができて、
それを印刷することができることはいいのですが、
承認されていない見積書も、別の一覧リストでは表示したいです。

その際、承認されていない一覧リストで表示した見積もりの帳票PDFを出力できてしまうことが問題です。

そのため、やりたいことは、
一覧リストでは、未承認のものも表示して管理は可能とし、
そのリストの時には、帳票出力ボタンは表示せず、
承認済みリストを選択した場合のみ、
帳票出力ボタンを表示したいです。

そういったことは可能でしょうか?

よろしくお願いします。

Shibayama様
勘違いしてしまい、申し訳ありません。

ご要望の機能は、JavaScriptを変更することで実現できるかと思います。

  • 実現方法

1.承認済みリストの一覧を作成する
2.承認済みリストの一覧のビューIDとevent.viewIdが一致する時のみ動作するようにJavaScriptを変更する

承認済みリストの一覧を選択した時のみ、帳票出力ボタンが表示されます。

ビューIDは、少しわかりにくいかと思いますが、一覧を選択した時にURLの後ろのに出てくる/k/123/?view=1233456という数字の部分です。

  • JavaScript

    var _pcreatorConfig;

    _pcreatorConfig = _pcreatorConfig || {};

    _pcreatorConfig = {
    appCode: “appCode”, // ダウンロードしたJavaScriptのアプリコードに書き換えてください
    baseUrl: “//print.kintoneapp.com
    };

    (function() {
    “use strict”

    // 詳細画面
    kintone.events.on('app.record.detail.show', function (event) {
      if (event.record['ステータス'].value == '承認済') {
        var l, s, scr, styl;
        _pcreatorConfig.event = event;
        styl = document.createElement("link");
        styl.rel = "stylesheet";
        styl.type = "text/css";
        styl.href = "//print.kintoneapp.com/build/kintone-lib.css";
        l = document.getElementsByTagName("link")[0];
        l.parentNode.insertBefore(styl, l);
        scr = document.createElement("script");
        scr.type = "text/javascript";
        scr.async = true;
        scr.src = "//print.kintoneapp.com/build/kintone-lib.js";
        s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(scr, s);
      }
    
      return event;
    });
    
    // 一覧画面(プレミアムプランのみ動作します)
    kintone.events.on('app.record.index.show', function (event) {
      if (event.viewId == 5095895) { // 承認済みリストの一覧のビューIDに書き換えてください
        var l, s, scr, styl;
        _pcreatorConfig.event = event;
        styl = document.createElement("link");
        styl.rel = "stylesheet";
        styl.type = "text/css";
        styl.href = "//print.kintoneapp.com/build/kintone-lib.css";
        l = document.getElementsByTagName("link")[0];
        l.parentNode.insertBefore(styl, l);
        scr = document.createElement("script");
        scr.type = "text/javascript";
        scr.async = true;
        scr.src = "//print.kintoneapp.com/build/kintone-lib.js";
        s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(scr, s);
      }
    
      return event;
    });
    

    })();

このJavaScriptのappCodeとビューIDを書き換えることで、ご要望の機能は実現できるかと思います。

以上、参考になりますでしょうか?

落合様

早速ありがとうございました。
やってみました。できました。

cstapさんの対応は本当に素晴らしいです!

どうもありがとうございました。

Shibayama様
実現できたようで良かったです!
また何かありましたら、お気軽にご質問ください。