[#44237] Float を利用するRubyプログラム — SASADA Koichi <ko1@...>

 ささだです.

16 messages 2007/11/17
[#44241] Re: Float を利用するRubyプログラム — SASADA Koichi <ko1@...> 2007/11/19

 ささだです.

[ruby-list:44248] 共通で使う営業日ベースの日付計算

From: "Yutaka Suzuki" <yu-suzuki@...>
Date: 2007-11-19 06:16:42 UTC
List: ruby-list #44248
こんにちは。

すずき と申します。ruby、Rails の初心者ですが、下記のようなことを考えております。

このような場合、何に留意して作成すれば、良いのか、お教え下さい。
(初歩的な質問ですいません)

また、このような仕様の公開モジュールが存在していればお教え下さい。

当面は、自分だけのモジュールで使うつもりですが、完成しても、どなたかが公開すれば、
いずれ、公開されたものに変更したいと考えてます。(保守性から共用としたいため) 


-------- やりたい事 --------
営業日(稼働日)ベースで、日付の加減計算を実施したい。

1.rubyのクラスで使う場合

 ①仮称のクラス名:WorkDay
   Date クラス を 継承した形を想定しています。

   このインスタンスに対し +1 は、1営業日経過後の日付にする
               +0 は、当日が非営業日であれば、次の営業日の日付にする
                    (加減算のシフトはデフォルトの「翌日シフト」の場合です)
               −1 は、、1営業日前の日付にする

 初期処理で、下記の3つの指定が可能とします。
  ・休日曜日指定(デフォルトは日曜日だが、指定は土日のように2つの指定が出来る)
            (曜日のvalueは、Dateクラス、Timeクラスのwday(ex.0:日曜日)に合わせる)
  ・休日配列(rubyのスクリプトで、直接記述したもので考えたい)
         (背景:祝日が休みとは限らない、夏休み、年末年始や創業記念日などの
              特別休日があるため、一般的な祝日判定を使いたくないためです)
         (仕様を簡素化するため、休日曜日指定日と重複しないように休日配列に記述されている前提)
  ・加減算の結果の当日が、休日の場合に、翌日にシフトするか、前日にシフトするかのシフトフラグ
         (デフォルトは翌日シフト)


 ②営業日クラス(integerを継承?)
  上記①のインスタンスの差分値で、Workdayオブジェクトの差分で計算する
  (引算の計算で求め難ければ、メソッド定義でも良い)


2.railsのActiverクラスを使う場合

  上記の休日配列を、DataBaseの職場カレンダーで管理することを想定。

  職場カレンダーは、職場コード(職場テーブルのid)の外部キーで休日が
  findできるものとします。
   (職場カレンダーのmodelありの前提で考える)
  (休日曜日指定日と重複しないように配慮すみとします)

  背景:土曜日が原則休日だが、数週間前に稼動に変更される場合があるためテーブルで管理したい
      (テーブルで持つ情報が休日だが、モデルで設定するのは営業日なのが若干抵抗あるが...)

 機能は、上記「1.のrubyのクラスで使う場合」機能で、職場毎のWorkdayでの加減計算、差分計算です。


【上記の使い方】
 使い方としては、注文(Order)や指示の項目で、下記の用途を考えてます。
  ・受注日を画面から入力(またはTime.nowから編集(入力時間帯より翌営業日受付とする判断あり)
  ・受注日から標準日数を当該職場の営業日ベースで加算し出荷日を計算
  ・出荷日から配送標準日数を、物流職場の営業日ベースで加算し到着予定日を計算 

  ・シフトフラグを前日で定義し、銀行営業休止日を登録したインスタンスで、締め日から支払日を計算
    (締め日から計算して30日後の銀行営業日だが、その日が休日ならば前営業日を支払日とする。
     一旦暦日で計算した後、この関数で”0"を減算して、銀行営業日を求める) 



 
 (もっと上手いやり方があればご教示願います)


-------------------------------------- 

In This Thread

Prev Next