みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
win8.1
FM12 advance
以前にもPOSレジの作成の段階でいろいろ質問させていただいておりますが、なかなか現時点より進むことができなく困っております。質問の仕方もずむかしいですがもう一度質問させてください。
現在メインテーブル・セルテーブル・割勘テーブルとあり、メインテーブルを主にセルテーブルの内容をポータル表示しておりますす。下記のような感じです。
伝票コード(メインテーブルからのフィールド) 1番(仮定) 5人
ーーーーーーーーーーーーーーーー
商品名 数量 単価 金額
Aランチ 3個 500 1500 セルテーブルのポータル
Bランチ 2個 100 200
ーーーーーーーーーーーーーーー
これを5人の代金をそれぞれ会計するために
伝票コード(メインテーブルからのフィールド) 1番(仮定) 5人
ーーーーーーーーーーーーーーーー ---------------
商品名 数量 単価 金額
Aランチ 1個 500 500
Aランチ 1個 500 500
Aランチ 1個 500 500 ←セルテーブルのポータル ←セルテーブル2
Bランチ 1個 100 100
Bランチ 1個 100 100
ーーーーーーーーーーーーーーー ---------------
としました。ここで左のポータルから計算したい商品名を押すと右に移動し計算できるようにしています。ここから質問させていただきたいですが、今の時点ですと個別で計算できても後で訂正があった場合に伝票コード1番のすべてを訂正するようになってしまいます。(個別勘定する前の状態)。個別勘定するときに左のポータルから計算したいものだけを右に移し”小計”(仮定)を押した時点で新たに別のテーブルを作成したところにインポートというのは可能でしょうか?いろいろ試したのですが、うまくできないのでアドバイスいただければと思います。説明がわかりにくいですがよろしくお願いします。
Offline
「個別勘定する」で全部数量1になるようにレコードを作成
会計中・会計済のフラグを立てて会計中の合計を表示する
ぐらいでいいのでは。
数量を1にするスクリプト
関連レコードへ移動
Loop
ExitLoopIf[Get(対象レコード数)=0]
If[数量=1]
レコードを対象外に
Else
フィールド設定[数量;数量-1]
レコードを複製
フィールド設定[数量;1]
レコードを対象外に
EndIf
EndLoop
逆にまとめる処理は作らないで、「残りを全部会計中に」ボタンで兼用。
訂正は、最後に移動させた行を下に戻したい、ということでしょうね。
左のポータルの各レコードに、支払者番号を振るフィールドを作っておきます。伝票番号と支払者番号のリレーションで右のポータルで表示させます。訂正の際には、右のポータルの各行の支払者番号をクリアすればいいです。
Offline
mice 様 shin 様
ご連絡ありがとうございます。 shin様いつも困った時にご回答ありがとうございます。只今検証する時間がないため後ほど検証してみたいと思います。お礼まで。
Offline
mice様
数量を1にするやり方ありがとうございます。!すごいシンプルですごく勉強になりました。この後の処理(個別に計算し後で訂正もできるような処理)を考えてみようと思います。できるかどうかの自身があまりないのですが試してみます。!仕事の合間で試しているところなので完全に最後までやり切れていませんがお礼まで。
Offline
shin様
勉強不足の中いただいたアドバイスで整理してみているのですが、セルテーブルの中のフィールドで支払者番号を振るフィールドを作り、リレーションを作った後で実際に個別勘定するときは先に作成した支払者番号に1回目だったら手入力で1と入力して右のポータルにフィルタをかけて表示し計算し次に計算するということでしょうか?
Offline
適当な数字でいいでしょう。
後からの参照するために、個別集計するためのテーブルを作ると楽かも。そのテーブルは、オーダー番号を通してレコードを作り、シリアル番号を利用すれば簡単。(フィールドは、シリアル値と関連レコードの金額合計のみで十分、必要ならば預かり金額とお釣り計算フィールドも)
そのシリアル値を元のテーブルに渡して、リレーションします。その状態で左の行をクリックすれば、その番号をセットし、右に表示させます。左は色を変えるなどで判別します。
修正は、該当レコードの個別番号を消せばいいです。
Offline
Shin様
ご連絡ありがとうございます。適当な数字でよいということでしたらセルテーブルには明細番号を作ってあるのでそれを利用してみたいと思います。イメージはわかるのですが、実際に知識不足の中からできるかどうかやってみたいと思います。
Offline
shin様
お世話になります。今の状況ですが、
ーーーーーーー ------- ---------
メインテーブル セルテーブル 商品テーブル
ーーーーーーー -------- ---------
伝票コード ーーーーーー 伝票コード
商品ID --------商品ID
明細番号
ーーーーーーー ------- ---------
メインテーブル レジセルテーブル 商品テーブル2
ーーーーーーー -------- ---------
伝票コード ーーーーーー 伝票コード
商品ID --------商品ID
伝票コード ーーーーーーー明細番号
という形にしてレジセルテーブルにはレコードの作成を許可にチェックしております。
左(セルテーブル)から右(レジセルテーブル)に移動するときに移動するときに1行目はうまく移動してくれるのですが2行目以降移動してくれなく最初に移動したものが消えてしまいます。移動するときのスクリプトが
変数を設定[$LINE;値:Get(アクティブポータル行番号)]
ポータル内の行へ移動[選択;ダイアログナシ;$LINE]
フィールド設定[セル:割勘数値;1]
フィールド設定[レジセル::明細番号;Get(スクリプト引数)]
フィールド設定[レジセル;:数量;1]
レコード確定
ですが、どのようにすればよいのでしょうか?
Offline
フィールド設定[レジセル::明細番号;Get(スクリプト引数)]
が怪しいかも。
Offline
セル::のポータルで作業してる時にレジセル::の値を変えると、メインから見たレジセルの関連レコードの1行目を変更するはずですよね。
今やってるのは、Shinさんが#7で書いてる方法とも違いますよね...
私が口出すとややこしくなるかもしれないけど、明細のテーブルを2つにして転記する必要あるんでしょうか。個別勘定にしたフラグを設定するだけじゃだめなのかな。
フラグでポータルフィルタすれば、フィルタ設定が違うだけの全く同じポータル2個でいいわけだし。
ご連絡いただきありがとうございます。Shin様よりいつもお世話になっているところでせっかくアドバイスいただいているのにうまくできなくすいません。知識不足で残念なところです。いろいろ考えながらやってみているうちに一つ気になることがありまして、質問する際にもう少し詳細に書くべきでしたが、
伝票コード 1つ作りその中に注文内容が入っている。
これを数量を分解しそれぞれの内容を表示する
個別勘定する際にたとえば5人いて
Aランチ1
Aランチ1
Aランチ1
Bランチ1
Bランチ1
となっていた場合
1人目がAランチ2
2人目がAランチ1・Bランチ1
3人目がBランチ1
という支払の場合でそれぞれに会計時にレシートを渡してそのあとに2人目に支払した人に対して修正が出た場合を考えると伝票コードの全体を修正することになるのかと考え、別のテーブルにレコードを作った方がよいかと思ったのですが、この会計後の訂正が生じた場合の処理方法を考えると実際はどのように組み立てた方がよいのでしょうか?
Offline
レシート発行済みのフラグを消去するだけでいいと思いますけど...
ところで、スタンドアロンの動作でいいんでしょうか。レジが複数あって同時に1つの伝票(の個別勘定のレシート)を処理するという想定は不要?
ご連絡ありがとうございます。今の現状レジは一台のみで使用しておりますが、どちらかというと注文するときにいくつかipad miniを複数台で使用したいと考えております。”レジが複数あって同時に1つの伝票(の個別勘定のレシート)を処理するという想定は不要?”というところでほかに何かアドバイスいただけましたら教えていただけませんでしょうか?今回のアドバイスもいただいて方向性としたら余計なテーブルを作らないで作成ということでやってみたいと思います。そこで改めていただいたアドバイスを元に作ってみます。
Offline
明細のテーブルを2つにして転記する必要あるんでしょうか。個別勘定にしたフラグを設定するだけじゃだめなのかな。
フラグでポータルフィルタすれば、フィルタ設定が違うだけの全く同じポータル2個でいいわけだし。
以前のスレッドで、割勘側の記録も残しておきたい、レシートも必要、ということで、中間テーブルを提案した覚えがあります。オーダーで3個だったものを、1個かける3オーダーにしていいのかもわからなかったし。その構造が残っているのでしょうね。
フィルター使う方法も考えたのですが、その時点での合計金額を出すためには、別に実リレーションが必要になります。
ちょっと面白い動きが作れましたので、また公開します。
Offline
想定は不要?”というところでほかに何かアドバイス
伝票コードのポータルでやってますから、どこか1か所で作業中はその伝票がロックされますよね。すぐ終わるだろうけど...
レシートも必要
確かに、普通のレジなら訂正した場合でも元のレシートを打った記録自体は残るはずですね...
あんまりレシート打ち直してもらったという記憶がないし、どう処理しているのかも知りません...
Shin様
ご連絡いただきありがとうございます。以前いただいたファイルを元に何とか自分でできないかといろいろ試行錯誤していましたが達成できなく質問してばかりだと申し訳ないと思いずっと考えておりましたがよろしくお願いします。
Offline
前と少し構造を変更し、いい動きになったと思います。
https://www.dropbox.com/s/uqmoed44hnie5 … 7.zip?dl=0
確かに、レシートを訂正、というのは見たことがないですね。
Last edited by Shin (2019-09-14 17:03:03)
Offline
さっそくファイルを作っていただきありがとうございます。これから拝見してみようと思います。ありがとうございます。
Offline
ファイル拝見させていただきましたが感動です!スクリプトの内容も見ましたがどれも想像もできない内容と同時に思いつくこともできない自分にガッカリです。今回の件で新たに勉強になれたのでうれしいです。ありがとうございました。じっくりと検証しながら見ると時間がかかると思いますので一度解決ということでさせていただきたいと思います。
Last edited by たき (2014-01-21 16:48:47)
Offline
超面倒な処理を、簡単な処理に変更しています。こちらをお使いください。(サンプルファイルを更新しています)
Offline
了解しました。ありがとうございます!
Offline
現在携帯から見ているので後ほど拝見させていただきます。ありがとうございます!
Offline
ファイル拝見させていただきました。今回のファイルの更新の目的はコードを短くして条件付き書式もつけることができるというところなのでしょうか?前回のコードも理想的に動いていたためコードを変えたポイントなど今後の自分の勉強のためにも教えていただけませんでしょうか?いろいろ勉強も少しづつしているつもりですが、おそらくもっと勉強しても思いつくこともできないことを教えていただけたような気がします。あくまでも参考まででいいのですがshin様からみて今回教えていただいた事は難易度としたらどれくらいのものなのでしょうか?
Offline
動きとしては、前のものとほぼ同じですね。
古いものは、レコード単位での動きでしたので、作った時から気に入らなかったのですが、とりあえず動きだけ作った、というものです。
新しいものは、レコードの動きを最小に抑えたほぼ理想的なものでしょう。
難易度ですか、5段階の4辺りかな、と思います。
Offline
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 579.72 KiB (Peak: 616.63 KiB) ]