みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
使用環境FM19 win10です。
企業データベースにリレーションされている各契約労働者ごとの管理手数料リスト(ポータル)が下記のようにあるのですが、
Aさん 10000円
Bさん 10000円
Cさん 10000円
Dさん 10000円
Eさん 15000円
Fさん 15000円
Gさん 15000円
Hさん 20000円
Iさん 20000円
Jさん 20000円
Kさん 20000円
Lさん 20000円
これをもとに請求書を作成するときに、
管理手数料 10000円 × 4名 = 40000円
管理手数料 15000円 × 3名 = 45000円
管理手数料 10000円 × 5名 = 100000円
とスクリプトで自動で請求書の明細行を作成したいです。請求書は企業データにリレーションされています。
過去記事に自己リレーションを使うと計算できるという記事は見つけたのですが、そのデータを請求書データベースに転記させるような方法がわかりません。
ご教示お願い致します。
Offline
スクリプトは要りません。
10000, 15000, 20000 というデータを設定したグローバルフィールド(繰り返し)を作っておきます。区分が増えればその区分で、変動するのでしたら、動的な値一覧を設定してその要素で計算フィールドを作ります。
Case ( グローバルフィールド = 管理費[1] ; 管理費[1] )
という計算フィールド(繰り返し)をつくり、それを個別にカウントする集計フィールドと、個別に合計する集計フィールドを作ります。
そのグローバルフィールドと、2個の集計フィールドを、ポータルの外に配置すれば計算できています。
Last edited by Shin (2022-07-24 10:45:58)
Offline
計算結果行を作りたい請求書は、この明細とは関係ない別の請求にも使う可能性がありまして、
管理手数料 10000円 × 4名 = 40000円
管理手数料 15000円 × 3名 = 45000円
管理手数料 10000円 × 5名 = 100000円
今月経費実費 160000円 × 1式 = 160000円
みたいな使い方をします。なので今回のような説明をしました。わかりにくくて申し訳ないです。
明細書の集計だけを書き出すのは無理があるでしょうか?
Shin様の方法に、普通の請求書を別につける方法もアリだとはございますが、請求書明細行だけ追加できると、通常請求書を変更する必要がないなと思いまして
Offline
Case ( グローバルフィールド = 管理費[1] ; 管理費[1] )
という計算フィールド(繰り返し)をつくり、
これはポータル内に設置しますか?
それを個別にカウントする集計フィールドと、個別に合計する集計フィールドを作ります。
それとは、上記の計算フィールドですか?
Offline
サンプルをみてみてください。
https://www.dropbox.com/s/4i3yxir87y2hd … 2.zip?dl=0
この集計フィールドは、その元オカレンスの中や、リレーション先で利用できます。ですから、会社名でリレーションされていれば、ポータルに関係なく、常にリレーション先のレコードを集計します。しかも、会社ごとに別に集計してくれますので、便利ですよ。
また、請求明細のテーブルで流用するのでしたら、会社テーブルに、項目名と集計結果をそのまま参照する計算フィールド(繰り返し)を作り、その結果を明細テーブルへインポートします。オプションで、繰り返しフィールドを複数のレコードへ分解しておけばいいでしょう。
Last edited by Shin (2022-07-26 08:47:00)
Offline
丁寧なサンプルをありがとうございました。理解できました。
>区分が増えればその区分で、変動するのでしたら、動的な値一覧を設定してその要素で計算フィールドを作ります。
これはグローバルフィールドに現在のポータルで出現している値が取り込めるのでしょうか?金額はだいたいは決まっているのですが、マスターがあるわけではないので、都度、照合用のグローバルフィールドに値が取り込めると完璧なのですが。
ご教授お願いします。
Last edited by nyoro (2022-07-25 21:02:11)
Offline
会社名でのリレーション先の手数料フィールドを動的な値一覧にすればいいでしょう。それを ValueListItems() で取り出し、GetValue() で振り分ければいいです
Offline
Shin様の言われたことですべて実現できそうです。
繰り返しのグローバルフィールドに、フィールド設定で、動的値一覧の数値を入れることまではできました。
しかし、手入力でグローバルフィールドに数値の入力すると計算フィールドは計算されるのですが、フィールド設定だと計算されません。
レコード確定スクリプトも入れてみたのですが同じです。
これはどのようにすると自動で計算されるようになるのでしょうか?
詳細まで聞いて申し訳ございません。
Offline
グローバルフィールドでは、実質計算できませんので、会社テーブル側にグローバルでない計算フィールドを作るといいでしょう。
サンプルを更新しています。
ただ、値一覧の特性で、50000 100000 があると、100000 50000 という風にテキストとしてソートされてしまいます。
Offline
最後に1つ。すべて出来たのですが、
値一覧でリストを作って、請求書明細のインポートしたときに、繰り返し全部がインポートされます。数量がゼロのデータを読み込まない、もしくはインポート後に、自動で削除する方法はないでしょうか?
Offline
スクリプトで削除するのが簡単でしょう。
または、明細テーブルで、数量が0またはnullがありえない、という条件でしたら、数量のフィールド制限で、計算式に、数量>0 を設定して、常時制限 にしておけばいいです。
Offline
ありがとうございました。完璧に解決できました!助かりました!
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 526.23 KiB (Peak: 547.14 KiB) ]