チェックボックスで表示非常時について

>①以下のコードで「xコース仕分」の追加・編集をなさっていると思いますが、解読ができなくて、ご説明して頂けたら幸いです。

これだけ説明します。作るより説明のほうが時間がかかります。

設定内容

...
courseInfo: {
'aコース': 'aコース料金', 'bコース': 'bコース料金', 'cコース': 'cコース料金',
'xコース': { 'xコース仕分': { '法人': '法人料金', '個人': '個人料金' } }
}
...

courseInfo: {
'dコース': 'dコース料金', 'eコース': 'eコース料金', 'fコース': 'fコース料金',
'その他': ['その他aa', 'その他bb']
}

courseInfo に、設定している内容に、下記の3種類があります。

・ シンプルな表示制御
‘aコース’: ‘aコース料金’
コース項目の値(兼フィールドコード) : コース料金のフィールドコード

・ 複数のコース項目を表示制御
‘その他’: [‘その他aa’, ‘その他bb’]
コース項目の値(兼フィールドコード) : コース料金のフィールドコードの配列構造

・ 階層がある表示制御
‘xコース’: { ‘xコース仕分’: { ‘法人’: ‘法人料金’, ‘個人’: ‘個人料金’ } }
コース項目の値(兼フィールドコード) : コース仕分けの情報

コース仕分けの情報(courseInfoと同じ構造)
‘xコース仕分’: { ‘法人’: ‘法人料金’, ‘個人’: ‘個人料金’ }
コース仕分のフィールドコード: コース仕分けについての情報(オブジェクト)

3種類なので、JSON の設定方法で識別出来るようにしています。
表示制御の種類が4種類以上ある場合は、構造を見直して種類が識別できる情報を付加することになります。

上記のcourseInfoを使って、変更イベントに必要なフィールドを抽出します。
この処理での、対象項目は、階層構造になっているコース仕分けの情報です。

Object.keys(planData.courseInfo).forEach(function(courseDetailObject) {
var detailObject = planData.courseInfo[courseDetailObject];
if (typeof detailObject === 'object' && !Array.isArray(detailObject)) {
Object.keys(detailObject).forEach(function(courseDetailFieldCode) {
events.push('app.record.create.change.' + courseDetailFieldCode);
events.push('app.record.edit.change.' + courseDetailFieldCode);
})
}
});

たぶん、分かりにくいところは、ここだと思います。

if (typeof detailObject === ‘object’ && !Array.isArray(detailObject)) {

{ ‘法人’: ‘法人料金’, ‘個人’: ‘個人料金’ } を抽出するために、オブジェクトで、かつ配列で無いものという判定です。
配列は、オブジェクトの1種類ですので、除外しています。

typeof と Array.isArray については、検索して調べてください。

 

rex0220 様

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

お忙しいところ、いつもご丁寧に対応していただき、本当にありがとうございます。

教わった内容を実務に取り込めるように頑張ります。

rex0220さんのおっしゃる通り、初心者の自分ができる範囲(区分はとりあえず置いといて、基本契約プラン・基本外契約プラン)で今回の実務のアプリを作成することにしました。それで、また以下の不具合が発生しております。

入力画面では、チェック入れた項目だけが見えているようですが、例えば間違って、料金まで入れた項目はそのまま裏で残っている。

コース料金の表示制御で、リセットする必要があるとことでしょうか?以下のソースではうまく動かないですが、考え方としてはあってますでしょうか?

if (!courceState) {
 // 非選択プランのコース選択をリセット
 record[courseDropFieldCode][‘value’] = ‘’;

// 非選択プランのコース料金入力をリセット
 record[courseDropInfo.coursepriceName][‘value’] = ‘’;
 }

何度も何度も申し訳ございませんが、ご指導よろしくお願い致します。

 

 

 

ようやく、コース料金にたどり着きましたね。

区分の前に、コース料金の話があるのかと思っていました。

まず、仕様の確認と調整が必要だと思われます。

アプリの目的としては、顧客が選択したプランとその合計金額の管理でしょうか?

コース料金は、マニュアル入力のようですが、コース毎に固定の料金体系が決まっているのではないでしょうか?

いちいちユーザが、コース料金を調べて入力するのでしょうか?

料金のリセット以前に、使いにくい気がします。

その辺を、リセット処理を開発する前に検討されたほうがいいと思います。

 

 

 

rex0220 様のおっしゃる通りでございます。・・・本当にただただ感動するばかりです。

作成中のアプリはこうなっております。

こんな感じで「基本契約」と「基本外契約」の合計だったり、また、「基本契約」のプラン別の合計を集計する目的でございます。

今までの流れでAプラン合計(計算フィールド)計算式:すべての料金を足す ※すべての料金に関する項目の初期値を0にすれば、

プログラム組まなくても行けるかなと単純に考えておりました。

それで、例えば:Aプランを選択してaコースとxコースを選択して、さらにaコースを外す場合は、裏のデータでもaコースはリセットされます。

でもaコースを選んでからaコース料金に入力してしまった場合は、その料金がリセットされないので、チェックを外した場合、料金がリセットされたらいいのかなと思った次第です・・

 

 

なるほど、 コース料金はルックアップから設定されるようですね。

この画面構成を見ると、あまり細かく表示制御してもしょうがないと思います。
Aプランを選択した場合は、グループ内の項目は、すべて表示でいいと思います。
細かくパタパタと表示するよりも、はじめからグループ内の項目がすべて見渡せたほうがいいのではないでしょうか?

この図だけではわかりにくいのですが、仕分け数判断のルックアップ取得で、‘aコース’,‘bコース’,‘cコース’ のコース料金値が決まるのでしょうか?
そういう仕様であれば、仕分け数判断の入力チェックだけ行えばいいことになります。
ルックアップで取得されるコピー項目については、JavaScript で値の設定が出来ません。

その辺を整理しては、いかがでしょうか?

rex0220 様

お世話になっております。早速のご返答ありがとうございます。

顧客別の契約情報を管理するアプリを想定しておりますので、お客様によっては、Aプランでも「‘aコース’,‘bコース’,‘cコース’ ,‘dコース’,‘その他’,‘値引’ 」の項目が多くなったり、少なかったりするので、細かくパタパタしようかなと思いました。

仕分け数判断のルックアップ取得で、‘aコース’,‘bコース’,‘cコース’ のコース料金値が決まりますが、同時存在するバタンと’aコース’だけが存在するバタンと組み合わせが発生しますので、Aプランでチェックいれて、それからルックアップで選んだほうがいいのかなと思いました。

その他のBプラン、Cプランとかはまだこれと違って、手動で入力だけのプランもあります。プランによって規定額がないのもありまして。

また、ルックアップ以外の項目についてですが、例えばdコース仕分でdコース料金①と②を間違って登録した場合、入力を消さない限り、チェックを外すだけでは裏で間違ったデータが残ることになるかなと思いました。

ルックアップで取得した場合、表示の有無に関係なくコピー対象はすべて更新されます。

'aコース’を非表示にしても、ルックアップ取得で値が設定されることになります。

コース選択よりも、ルックアップ取得のほうが優先順位が高いということです。

また ‘aコース’ を選択後、ルックアップ取得を行っても、‘aコース’ のデータだけ選択できる標準機能はありません。

かえって混乱する可能性があります。

 

ルックアップ取得が無いプランは、パタパタ表示でもいいかもしれません。

ケースによって使い分けてはいかがでしょう?

 

あとは、コース料金のクリアですが、

courseInfo に、設定している内容に応じて、処理する必要があります。

>courseInfo に、設定している内容に、下記の3種類があります。

これも、階層に応じて処理しましょう。

 

 

 

 

 

いつもご指導ありがとうございます。

courseInfoの①シンプルな表示制御を試してみてます。一番簡単なバタンと思いますが、なかなか消えてくれません・・がんばります。

 

rex0220 様

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

ちょっと訪ねたいですが、rex0220 さんは開発者と思われますが、案件とかは受注受けたりしますか?

例えば、kintoneでアプリは自社で作成するが、カスタマイズでプログラムを依頼する場合は対応可能でしょうか?

システム開発および kintone プラグイン開発を行っています。

既存アプリへの JavaScript カスタマイズなども承っていますので、対応は可能です。

よろしければ、下記のクラウドソーシングでご連絡ください。

ランサーズ A2013

クラウドワークス rex0220

ID は、異なりますがどちらでもOKです。

開発内容をご相談の上、お見積りさせていただきます。