計算フィールドコピーによるタイミングについて

いつもお世話になります。

現在、キャプチャーの様に

合計金額が入ると計算フィールドでは税別になるように設定しています。

外部レコードをcsvで入れて月末月初に売り上げを確認するのですが、

Aというお客様が複数異なる商品を購入した場合の支払合計が各レコードに

反映されているので集計結果が2重にも3重にもなります。

そこで合計金額税別計算フィールドのコピーをして

Aさんの各商品のレコードの合計金額をアナログ的に一覧で削除していき

1レコードだけ合計金額が入るようにしてしまえばよいかと思いjsを組みました。

合計金額が変わることはないので、現状でもOKなのですが

順番として、合計金額→合計金額税別→合計金額税別集計用

となっている現在、

合計金額フィールドを編集することは通常ないのですが

編集してみたところ、

合計金額を編集してキャプチャーの3165を3000に変えても

合計金額税別が変わるのみで合計金額税別集計用はそのままで、

もう一度合計金額に値を入れると、3000だった時の合計金額税別の値が

合計金額税別集計用に入ります。

後手後手という感じでしょうか。。。

本当は単純に計算フィールドをfalse可できればよいのですが

(function(){
  ‘use strict’;
  kintone.events.on([‘app.record.edit.show’, ‘app.record.create.show’], function(event){
    event.record[“合計金額税別”].disabled = false;
    return event;
  });
})();

これだと出来ないみたいです。初心者ですみません。

 

下記に今回のjsを記載しますので

ご教授いただければ幸いです。

 

(function () {
‘use strict’;

kintone.events.on(
[‘app.record.index.edit.submit’,‘app.record.create.submit’, ‘app.record.edit.submit’,
‘app.record.create.show’, ‘app.record.edit.show’, ‘app.record.index.edit.show’,
‘app.record.create.change.合計金額’, ‘app.record.edit.change.合計金額’, ‘app.record.index.edit.change.合計金額’],
function (event) {
event.record.合計金額税別集計用.value = event.record.合計金額税別.value;
return event;
}
);
})();

 

 

 

(() => {
'use strict';

kintone.events.on([
  'app.record.create.change.合計金額', 'app.record.edit.change.合計金額'
], (event) => {
  setTimeout(() => {
    let recordData = kintone.app.record.get(), rec = recordData.record;

    rec['合計金額税別集計用'].value = rec['合計金額税別'].value;

    kintone.app.record.set(recordData);
  }, 0);

  return event;
});
})();

計算フィールドの値を参照する場合、その元になっているフィールドの変更イベントでは計算が完了していないため、2回目の変更時に1回目(1つ前)の計算結果が出ることになります。setTimeout等で計算が終わるのを待つ必要があります。

ただし、要件としては顧客毎の合計金額をまとめたいということでしょうか?csv取込時のデータ成形やAPI等でも解決できそうな気がします。

mls-hashimoto さま

いつもお世話になります。

ご連絡ありがとうございます。また、引き続きsetTimeoutでの時差を

考える必要があるとのことありがとうございます。

要件としてですが、creemaの受注データを読み込むのですが

月初に先月の合計金額を集計結果で出すのですが

creemaでの受注書き出しデータを取り込んでいる現在の方式ですと

こんな感じのデータになります。

同じお客様で色違いを複数個とかになるとご覧の通り1商品につき1レコードは良いのですが

Aさんの全部の合計金額が、合計金額列に入るので

片一方を消さないといけないのです。集計がダブるので。

10個受注した場合は9個のレコードの合計金額を消すことになります。

まだ受注量が少ないので、取り込む前に消してしまえばよいというのは一つありな方法だとおもいます。

やはりそれがシンプルでしょうか?

apiでいろいろできるようになりたいのですがまだまだ知識が足りずすみません。

Riorio さま

creemaから吐き出したcsvをそのまま取り込んでいる形ですね。csvデータの成形については、普段からExcel等で編集しているデータであれば取り込み用のワークシート等を作った方が早いと考えてのものです。
とはいえ、Excelでcsvファイルを開けるのであれば、Excelの機能を使用して重複を削除するのも良いかもしれません。

APIを組む場合、一覧画面上でレコードを取得し、同じ顧客、同じ月の重複するレコードのあった場合は レコードの一括更新 を使って1つのレコード以外金額を削除、といった手順になると思います。が、表の見方が分からないので何とも言えませんがcsvの合計金額をそのまま取り込むのではなく、単価と数量を取り込んで、それらを合計する計算フィールドを作る、といった手順ではいかがでしょうか。

横やり失礼します.
Excelで重複データを削除するのであれば,下記が参考になるかもしれません.
Excelで重複したデータを簡単に削除する方法

別法ですが,「集計時に合計金額の重複を防ぐ」だけであれば,
kitoneの「集計」をつかって疑似的に重複を削除したようにすることが可能です.

画像は,同じ注文IDの複数レコードについて,合計金額の「平均値」を集計しています.
「同じ注文IDの合計金額は同じ」であることを前提にしています.
添付されていたcsvデータから想定しています.
ちょっとトリッキーな使いかたかもしれませんが,
「ただ見る」だけなら現行からなにも変えずに済むので比較的やりやすいと思います.
参考になれば幸いです.

mls-hashimoto さま

ご連絡ありがとうございます!

すみません。表の合計値が間違えていました。

Aさんの2980×ブラック1の購入と2980×レッド2の合計値が合計金額に書き出されてくるので

合計3個分の合計値がAさんの合計金額にはすべて入ってくるので重複になるということです。

ご推察いただいている通りの解釈であっていると思います。

厳密にいうと送料を含めて計上したく、要はこれも一回の買い物ではまとめて送るので

複数いらないのです。Aさんの送料は185円のみです。

確かに、単価と数量で計算するというのは単純明解ですね。

そうすると、送料の重複を消せば、単価×数量+送料で完結する感じになるかもしれません。

ちょっとやってみます。ありがとうございます!

 

TO さま

ありがとうございます!

重複のレコードを平均値で見るということが

できるというのは確かにこのトリッキーな使い方は

思い浮かびませんでした。

今から動作の流れなど含めて

設計を若干変えてみるので、参考にさせていただきますね。

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