こんにちは。
前回(その1)の続きです。
今回は、初回なのでさわりだけ実際に作ってみましょう。
データベースの管理で、テーブルとフィールドの設定を行います。
外食産業、一般小売両方使えるようにしましょう。
実際の仕事の場合はお客様との打合せ資料、開発設計書やフローを元に作りますが、
今回は、目的が違うのでそういうのは省きます。
ざっくり!テーブル名称の前にDとかMとかありますが、データベースとかマスターの略ですので、好きに付けてください。
完成までには、まだまだテーブル、フィールドは増えてきます。
ちなみに、ファイルも売上データ用に別に作りますが、それは後日。
今の段階では「こうしたほうがいい」「ああしたほうがいい」までは考えると進まなくなるので、注意するところだけ書いておきますね。
受注
受注テーブルのフィールド
ということは、受注と計上した後、売上に振り分けるのかな・・・??
ダイレクトに売上でもいいのですが、今回は受注と売上を分けます。
POSレジというのは、基本が現金商売です。
同じフロアに10台~100台ある事もありますし、拠点や支店間で一斉に受注が発生します。秒間隔ではなく、0.01秒間隔で売上が上がってきます。
注意すべき事は、
受注idなどのkeyには、なるべく計算式は持たせない事です。
このサイトでもシリアルの事は書いてますが、請求などの売掛業務なら問題はありませんが、拠点がある現金商売の場合は間違いなく衝突しますし、僕のユーザーでは、衝突後データが消えましたので、
これに変えました。↑これがいいです。最高!です(笑)
これに変えてからなんにも問題ありません。
新宿店が001で渋谷店が002でも構わないんです。
そこに「分けなきゃ駄目」、「普通、分けるでしょ」と
言い続けている間は、話が前に進みません。
自己リレのシリアルフィールドのオプション計算
SerialIncrement ( "001" ; Max ( D受注_シリアル::シリアル))
これは現金商売には向きません、駄目、衝突します。
売掛系には、ほぼ全て使ってますが・・・。
また、
ExecuteSQL ( "SELECT
MAX ( \"受注id\" )
FROM \"D受注\"
";"";"") + 1
idのオプション計算でSQL。
こういうのも駄目ですねー、POSは衝突します。
MAXというのは何をどうしてもMAX値を探すわけですから、その計算が
クラウド環境下で複数拠点間で0.01秒以下で計算してくれる、そんな約束があったとしてもネット環境や、回線の影響を考えたら駄目ですよねー。
FileMakerがそうなのではなく、どの開発ソフトも一緒です。
Oracleだから大丈夫なんてことはありません。
それか、
UUIDで繋げるのもいいと思います。
受注のフィールドは、初回なのでこのくらいにしましょう。(後で増えます)
次に
受注明細
受注明細
あー、なんだかフィールド多くて嫌ですよねー。
ゲ・ゲーです。
でも実際の1/5程度しか載せていません。
明細に負荷かけるなよー!みたいな・・・
ほんとそうですよね、国や国税に言ってください。
軽減税率は、商品マスタと受注明細、この2つに負荷がかかります。
軽減税率
今年の10月からの軽減税率は明細までの税率表示規制はありません。明細には※マークをつけて、あくまでも小計後の税率を分けて表示するだけです。
2023年からはインボイス形式(めっちゃ適当な名称ですよねw)という表示義務が課せられます。ですので、今は合計に8%と10%を分ければいいのですが、「そもそも明細上で分けないと、その計算ができないでしょ?」、「一緒やんけ!」、
「今回が大変だす」、「なに作戦?」
税制改革を2回に分ける意味が分かりませんし、誰が「そういうことにしよう!」と言ったのか笑い話にしかなりません。
中身はきっちりガッツリ作って、表面上は今年と2023年で分けましょう!みたいな感じになってます(笑)
今年、何処も値引きに対応できないんじゃないでしょうか、
困ったらこれ使ってください(笑)
POSレジのような売上よりも、実は仕入や会計の方が大変かもですよ!?
菓子屋の砂糖の仕入とか小麦粉、寒梅粉なんか、入出庫と仕入が別ならいいですけど
一緒の会社ならレスポンス悪くなって在庫管理止まっちゃうでしょ(笑)
事務的な思考を現場に持ち込むと大変な事になりますよねー。
会社で会議などで出前とった場合、8%ですし、
新聞なんかも8%でしょ?
仕入管理やめて会計ソフトに頑張ってもらいますか!(笑)
話を戻します。
明細テーブルですが、
消費税マスタと繋ぎません!え?え?
理由は後程。
次、
商品マスタ
商品マスタは
商品id あまり意味を持たせずに、今の時代は単純に1+1でいいかと思います。
同時に商品を登録し合って衝突する事は、あまりないと考えますから、
分類や支店で結び
自己リレのシリアルフィールドのオプション計算
SerialIncrement ( "001" ; Max ( M商品_シリアル::シリアル))
でもいいですよね。
(支店間で商品が違うのなら、支店ごとNoにシリアル+1つけないといけないですね)
バーコードとか使う方はJANコードや独自のコードがあればいいかと思います。
消費税の税率
軽減税率の設定は受注明細ではなく、商品マスタで行います。
だって、そうなんだもん。
明細側に税率を設定すると、都度摘要を調べるので、お客様を待たせてしまいます。
ですから、あらかじめ商品側で設定しておけば、受注時に調べる必要はありません。
商品の分類別に税率を設定すると考える方もいますが、税率がこれで決定したわけではないのです!今後も、何の商品に対して、どういう行為に対して税金が変化するのか分からないのですから、今は商品に対して設定するしかありません。
ひとつひとつフィールドの意味を説明するより、
|
商品マスタ(裏画面UI) |
デモソフトを開いて、新規ウィンドウかなにかで
商品マスタと
消費税マスタ、
受注明細マスタを同時に開いて、いじくりまわし動きを見てみましょう。
税率マスタです。
実際のユーザーインターフェイス(UI)とは別の裏で動かす画面です。
(僕が作るシステムはけっこうトリガなどレイアウトとかも記憶させちゃうので、それを動かすと、パフォーマンスが悪くなっちゃうんです。それで裏画面で動かすように仕込み、キッチリ整理して、後でシステム追加するときなどにも、必要以上に説明書きとか載せて何時見ても分かるようにしちゃいます)
税率マスタと商品マスタと結びます。
外食産業のように、イートインやテイクアウェイで税率が違う場合や、スーパーや小売、一般の業種・業態と分けられるようにしています。
受注明細(まだまだ、少ないです)
受注を飛ばしてダイレクトに受注明細を触っているのですが、商品idを入れて
税区分で一般、イートイン、テイクアウェイを選ぶだけなんですねー。
端数処理や内税か外税かは自社マスタで設定します。
データベースの親子を作る前に、ある程度
データベースと、マスタを設定してしまいます。
今回はここまで。
(FileMakerPro17)
ダウンロード
(win)