みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
はじめまして。
お客様からの電話で何日から何日までレンタカー使ったらいくらになるの?との問い合わせがあるのですが
スタッフからiPadで確認できたらうれしいよね〜って言われ
ファイルメーカーならできるかと思い取り組み始めたのですが・・・先に進みません。お力を貸していただけると助かります。
料金は
最初の12時間までは5,170円 24時間までは6,600円
以降24時間ごとに5,500円
以降1時間ごとに1,100円と増えていきます。
車のクラスが5つ「Kクラス」「Sクラス」「Aクラス」「WAクラス」「WBクラス」に分かれていて料金が違います
フィールドは
「出発月日」
「出発時間」
「帰着月日」
「帰着時間」
「タイムスタンプ(経過時間)」
「基本料金」
「超過料金」
「合計」
を作ってみました。
どんな関数やリレーショナルを使えばよいのか、質問が失礼かもしれませんが申し訳ありません。
Offline
ルールが明確になればあとは数式化するだけですが、ルールがよく分かりません。
レンタル時間をtとした時
0<t≦12 →5170
12<t≦24 →6600
24<t →6600+5500×(日数-1)
なのだと思いますが、1時間単位の料金はどのような場合に発生しますか?
例えば2日と6時間(計54間)の時はどういう計算式になりますか?(3日目の6時間はどのような扱い?)
6600+5500+1100*6=18700?
6600+5500+5500=17600?
この例だと54時間よりも3日(72時間)で借りた方が安そうです。
あと車のクラスに応じて料金がかわるとのことなので、入力フィールドに車のクラスも必要では?
Last edited by koeda (2020-01-15 18:01:31)
Offline
早速の回答ありがとうございます
フィールドに 各クラス(Kクラス)なども作ってあります。記載漏れでしたすみません。
クラスをチェック入れることで設定料金も変わるようにしたいと思っています
53時間で17600円になると、72時間までは同じ料金17600円になります。
スタートから12時間 5170円
24時間まで 6600円
それを超えると1時間1100円なんですが、29時間(一日と5時間)で 12100円になると
48時間(2日)料金と同じになるので料金が上がりません。12100円のままです。
次の1時間49時間になると1100円ずつ超過料金になります。
53時間で17600円になるので、今度は72時間(3日)まで同じ料金、
次の1時間から1100円がプラスになるということなんです。
一日分の基本料金を「基本料金」に
時間の超過分を「超過料金」にいれるように考えたほうがいいのかな?って考えて
四苦八苦しています。
Offline
クラスマスターという料金テーブルを作り、クラスでリレーションします。
Let (
[
t = TS1 - TS0 - 1 ;
d = Div ( t ; 24 * 60 * 60 ) ;
h = Div ( Mod ( t ; 24 * 60 * 60 ) ; 60 * 60 ) ;
base12 = クラスマスター::base12 ; //最初の12時間
base24 = クラスマスター::base24 ; //24時間まで
overD = クラスマスター::overD ; //以降24時間ごと
overH = クラスマスター::overH //以降1時間ごと
] ;
Case (
d = 0 ; Choose ( Div ( h ; 12 ) ; base12 ; base24 ) ;
base24 + Min ( d * overD ; ( d - 1 ) * overD + ( h + 1 ) * overH )
)
)
Last edited by Shin (2020-01-16 16:04:28)
Offline
ありがとうございます。
・・・Letの関数が初めてで、手間取っています。
ちょっと調べながら進めてみます。
クラスごとのテーブルが必要なんでしょうか?
クラスマスターの中でクラスのフィールドを作れば良いのでしょうか。
Offline
クラスごとの料金を管理するマスターテーブルを作っておくと、後々便利ですよ。
クラス、最初の12時間、24時間まで、以降24時間ごと、以降1時間ごと のフィールドを作り、計算するフィールドとリレーションしておきます。
料金が改定される日付を入れておくと、貸出日付と比較リレーションを張っておけば、自動的に料金も変わります。
ちょっとバグがあったので、修正しています。
Offline
難しいのでしたらステップを踏んで行けば分かりやすいですよ。
> 「タイムスタンプ(経過時間)」
これは
TimeStamp ( 帰着月日 ; 帰着時間 ) - TimeStamp ( 出発月日 ; 出発時間 )
で求められますが、
返り値をタイムスタンプにすると、日付の部分が変な感じになりますよね。
これを、分以下を切り上げた時間にするには、
Ceiling ( タイムスタンプ(経過時間)/ 3600 )
↑
フィールド名に()カッコはダメですね
返り値は数字にします。
でいいでしょう。
この値がどの条件になるかみて、料金を計算すればいいでしょう。
Offline
Shinさんの示された計算式を踏襲してサンプルを作成してみました。
グレードは選択せずに、全グレードの料金を全て計算して比較するようにしました。
Offline
わっ!もうほとんど出来ているじゃないですか!!
ありがとうございます。
まだ内部を見ても理解できていないので、じっくりと研究させていただきます。
理想はこのレイアウトから「新規予約」の入力に行けたり、帰着の処理まで
持っていけたらと思っています。
Offline
新規予約のレコードを作り、日時を設定します。そのまま確定するか、保留にする、確定すれば、貸し出し、帰着 というチェックをする、という動きを作れば、そのままでいいです。
ただし、料金計算フィールドは、予約側のテーブルに作ります。
Offline
ありがとうございます。
時間の表示も30分単位に修正できましたし、現場に合った形に少しずつ使いやすくしています。
オプションの追加やクラス分けなどやらないといけないことが山積み。
またわからないことでお聞きすると思いますが、よろしくお願いいたします。
Offline
Pages: 1
[ Generated in 0.024 seconds, 7 queries executed - Memory usage: 528.08 KiB (Peak: 548.98 KiB) ]