特許第6858087号(P6858087)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社富士通マーケティングの特許一覧

特許6858087給与データ計算装置、給与データ計算プログラム、給与データ計算方法
<>
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000002
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000003
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000004
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000005
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000006
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000007
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000008
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000009
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000010
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000011
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000012
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000013
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000014
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000015
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000016
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000017
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000018
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000019
  • 特許6858087-給与データ計算装置、給与データ計算プログラム、給与データ計算方法 図000020
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6858087
(24)【登録日】2021年3月25日
(45)【発行日】2021年4月14日
(54)【発明の名称】給与データ計算装置、給与データ計算プログラム、給与データ計算方法
(51)【国際特許分類】
   G06Q 40/00 20120101AFI20210405BHJP
【FI】
   G06Q40/00 420
【請求項の数】9
【全頁数】27
(21)【出願番号】特願2017-128074(P2017-128074)
(22)【出願日】2017年6月29日
(65)【公開番号】特開2019-12367(P2019-12367A)
(43)【公開日】2019年1月24日
【審査請求日】2020年4月10日
(73)【特許権者】
【識別番号】598097552
【氏名又は名称】富士通Japan株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】佐藤 紀之
(72)【発明者】
【氏名】飯谷 徹
【審査官】 塩田 徳彦
(56)【参考文献】
【文献】 特開2001−175524(JP,A)
【文献】 特開平04−237344(JP,A)
【文献】 特開平11−053232(JP,A)
【文献】 特開2011−065372(JP,A)
【文献】 米国特許出願公開第2006/0111990(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00 − 99/00
(57)【特許請求の範囲】
【請求項1】
給与データの算出値、および、該算出値の算出過程で算出される中間値を算出するための算出ルールを給与データごとに記憶する算出ルール記憶部と、
従業員ごとかつ年月ごとの各給与データの算出値および該算出値に対応する中間値を、横明細テーブルの1レコードの横方向のフィールドに記録する横明細記憶部と、
前記各給与データの算出値および該算出値に対応する中間値を、縦明細テーブルの縦方向の複数レコードに分けて記録する縦明細記憶部と、
前記算出ルールをもとに算出される給与データの算出値の数および該算出値に対応する中間値の数の少なくともいずれかに応じて、該算出値および該中間値を前記横明細記憶部および前記縦明細記憶部のいずれか一方または両方に記録すると決定する記録先決定部と
を備えたことを特徴とする給与データ計算装置。
【請求項2】
前記記録先決定部は、
前記横明細テーブルの1レコードにおいて値の記録先として未決定のフィールドの残数が前記算出値の数および前記中間値の数の合計以上である場合には、前記算出値および前記中間値の記録先を前記横明細記憶部と決定し、
前記フィールドの残数が0となった場合には、前記算出値および前記中間値の記録先を前記縦明細記憶部と決定する
ことを特徴とする請求項1に記載の給与データ計算装置。
【請求項3】
前記記録先決定部は、
前記フィールドの残数が前記算出値の数および前記中間値の数の合計未満となった場合には、前記算出値の記録先を前記横明細記憶部と決定し、前記中間値の記録先を前記縦明細記憶部と決定する
ことを特徴とする請求項2に記載の給与データ計算装置。
【請求項4】
前記記録先決定部は、
前記横明細テーブルの1レコードにおいて値の記録先として未決定のフィールドの残数が0より大である場合には、前記算出値の記録先を前記横明細記憶部と決定し、前記中間値の記録先を前記縦明細記憶部と決定し、
前記フィールドの残数が0となった場合には、前記算出値および前記中間値の記録先を前記縦明細記憶部と決定する
ことを特徴とする請求項1に記載の給与データ計算装置。
【請求項5】
前記記録先決定部は、
前記横明細テーブルの1レコードにおいて値の記録先として未決定のフィールドの残数が前記中間値の数以上である場合には、前記中間値の記録先を前記横明細記憶部と決定し、前記算出値の記録先を前記縦明細記憶部と決定し、
前記フィールドの残数が0となった場合には、前記算出値および前記中間値の記録先を前記縦明細記憶部と決定する
ことを特徴とする請求項1に記載の給与データ計算装置。
【請求項6】
前記記録先決定部は、
前記フィールドの残数が前記中間値の数未満となった場合には、前記中間値のうち該残数分の中間値の記録先を前記横明細記憶部と決定し、該残数の超過分の中間値および前記算出値の記録先を前記縦明細記憶部と決定する
ことを特徴とする請求項5に記載の給与データ計算装置。
【請求項7】
前記記録先決定部は、
前記横明細テーブルの1レコードにおいて値の記録先として未決定のフィールドの残数が前記算出値の数および前記中間値の数の合計以上である場合には、前記算出値および前記中間値の記録先を前記横明細記憶部と決定し、
前記フィールドの残数が0となった場合には、前記横明細記憶部に記録されている前記中間値の記録先を前記縦明細記憶部へ変更後、新たな前記算出値の記録先を前記横明細記憶部と決定する
ことを特徴とする請求項1に記載の給与データ計算装置。
【請求項8】
コンピュータに、
給与データの算出値、および、該算出値の算出過程で算出される中間値を算出するための算出ルールをもとに、従業員ごとかつ年月ごとの各給与データの算出値の数および該算出値に対応する中間値の数の少なくともいずれかを算出し、
算出した前記算出値の数および前記中間値の数の少なくともいずれかに応じて、従業員ごとかつ年月ごとの各給与データの算出値および該算出値に対応する中間値を横明細テーブルの1レコードの横方向のフィールドに記録する横明細記憶部、および、前記各給与データの算出値および中間値を縦明細テーブルの縦方向の複数レコードに分けて記録する縦明細記憶部のいずれか一方または両方に記録すると決定する
各処理を実行させるための給与データ計算プログラム。
【請求項9】
コンピュータが、
給与データの算出値、および、該算出値の算出過程で算出される中間値を算出するための算出ルールをもとに、従業員ごとかつ年月ごとの各給与データの算出値の数および該算出値に対応する中間値の数の少なくともいずれかを算出し、
算出した前記算出値の数および前記中間値の数の少なくともいずれかに応じて、従業員ごとかつ年月ごとの各給与データの算出値および該算出値に対応する中間値を横明細テーブルの1レコードの横方向のフィールドに記録する横明細記憶部、および、前記各給与データの算出値および中間値を縦明細テーブルの縦方向の複数レコードに分けて記録する縦明細記憶部のいずれか一方または両方に記録すると決定する
各処理を実行することを特徴とする給与データ計算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、給与データ計算装置、給与データ計算プログラム、給与データ計算方法に関する。
【背景技術】
【0002】
従来より、企業等では、給与アプリケーションを用いて、従業員に支給する給与の給与データを、算出基礎データに基づいて算出することが一般的である。給与データは、給与の各給与項目の金額であり、例えば、総支給額、基本給額、職能給額、諸手当額がある。また、算出基礎データは、例えば、職種、等級、各種手当、勤怠がある。一般的に、給与アプリケーションでは、企業ごとに異なる給与データの算出方法に柔軟に対応できるように、給与データや給与データの算出式を任意に定義することができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2016−071643号公報
【特許文献2】特開2014−153751号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述の従来技術では、給与アプリケーションにおいて、例えばリレーショナルデータベース(Relational Database、以下、RDBという)を用いてデータ管理が行われる。例えば、給与データは、従業員ごと月度ごとに算出される。また、例えば、月度を遡って等級変更等の算出基礎データの変更が行われた場合には、給与データも月度を遡って再計算される。そのため、給与データだけでなく、給与データの算出過程の中間データも記録しておく。さらに、給与支給日前の決められた締め日までに金融機関に対して給与の振込み依頼を行うため、決められた期日までに給与データの算出を完了しておく。そのために、給与データおよび中間データの算出および記録を効率的に行うことが求められる。
【0005】
例えば、従業員数が多く、給与データの算出式が複雑な場合であっても、RDBを効率的に用いて給与データおよび中間データの算出および記録を行うためには、給与データは、従業員ごと月度ごとにテーブルの1レコードに記録されることが望ましい。また、給与データだけでなく、中間データ、および給与データの算出式もテーブルの1レコードに記録することで、より効率的に給与データ等の算出および記録を行うことができる。
【0006】
しかし、給与アプリケーションの仕様やRDBの特性上、テーブルの1レコードに記録可能な項目数には上限がある。そのため、給与計算に関する記録対象データが多数あると、テーブルの1レコードに記録可能な項目数の上限を超過し、全ての記録対象データを記録し切れない場合がある。
【0007】
このような問題を解決するために、従業員ごと月度ごとに記録対象データをテーブルの1レコードに記録するのではなく、記録対象データごとにテーブルの複数レコードに分けて記録することが考えられる。しかし、RDBの特性上、記録対象データをテーブルの複数レコードに分けて記録すると、データベースの性能が劣化し、給与データ算出の処理が遅延するおそれがある。
【0008】
本願の一実施形態は、上記に鑑みてなされたものであって、データベースの性能を劣化させずに、給与データの計算を効率よく行うことができる給与データ計算装置、給与データ計算プログラム、給与データ計算方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
本願の一実施形態では、給与データ計算装置は、給与データの算出値、および、該算出値の算出過程で算出される中間値を算出するための算出ルールを給与データごとに記憶する算出ルール記憶部と、従業員ごとかつ年月ごとの各給与データの算出値および該算出値に対応する中間値を、横明細テーブルの1レコードの横方向のフィールドに記録する横明細記憶部と、前記各給与データの算出値および該算出値に対応する中間値を、縦明細テーブルの縦方向の複数レコードに分けて記録する縦明細記憶部と、前記算出ルールをもとに算出される給与データの算出値の数および該算出値に対応する中間値の数の少なくともいずれかに応じて、該算出値および該中間値を前記横明細記憶部および前記縦明細記憶部のいずれか一方または両方に記録すると決定する記録先決定部とを備えたことを特徴とする。
【発明の効果】
【0010】
本願の一実施形態によれば、データベースの性能を劣化させずに、給与データの計算を効率よく行うことができるという効果を奏する。
【図面の簡単な説明】
【0011】
図1図1は、給与データ計算装置の一例を示す図である。
図2図2は、月例給与項目マスタテーブルの一例を示す図である。
図3図3は、月例給与支給データテーブルの一例を示す図である。
図4図4は、従業員マスタテーブルの一例を示す図である。
図5図5は、従業員勤怠データテーブルの一例を示す図である。
図6図6は、給与体系マスタテーブルの一例を示す図である。
図7図7は、役職手当マスタテーブルの一例を示す図である。
図8図8は、家族手当マスタテーブルの一例を示す図である。
図9図9は、算出式マスタテーブルの一例を示す図である。
図10図10は、横明細データテーブルの一例を示す図である。
図11図11は、縦明細データテーブルの一例を示す図である。
図12図12は、縦横記録先データテーブルの一例を示す図である。
図13図13は、給与項目記録処理の一例を示すフローチャートである。
図14図14は、算出値(中間値)算出処理のサブルーチンの一例を示すフローチャートである。
図15図15は、実施例1にかかる縦横記録先決定処理の一例を示すフローチャートである。
図16図16は、実施例2にかかる縦横記録先決定処理の一例を示すフローチャートである。
図17図17は、実施例3にかかる縦横記録先決定処理の一例を示すフローチャートである。
図18図18は、実施例4にかかる縦横記録先決定処理の一例を示すフローチャートである。
図19図19は、給与データ計算プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【0012】
以下に、本願の開示技術にかかる給与データ計算装置、給与データ計算プログラム、給与データ計算方法の実施形態を図面に基づいて詳細に説明する。開示技術にかかる給与データ計算装置等は、企業等において、従業員に対して支給される給与の給与データおよび給与データの算出過程の中間データを、予め定められた算出式および計算順序に従って計算する。そして、給与データ計算装置等は、テーブルの1レコードに、もしくはテーブルのレコードごとに記録する。以下では、給与データは算出値であり、中間データは中間値である。
【0013】
なお、以下の実施形態により本発明が限定されるものではない。例えば、以下の実施形態では、月度単位の給与の計算例を示すが、月度に限られず、任意の所定期間を単位とする給与であってもよい。また、以下の実施形態における実施例および変形例は、処理内容が矛盾しない範囲で適宜組合せることができる。
【0014】
図1は、給与データ計算装置の一例を示す図である。給与データ計算装置100は、サーバ装置等のコンピュータである。なお、給与データ計算装置100は、オンプレミスのサーバに実装されてもよいし、データセンタに設置され、ネットワークを介してSaaS(Software as a Service)として給与データ計算サービスを提供するクラウドサーバに実装されてもよい。
【0015】
給与データ計算装置100は、記憶部10、制御部20を有する。記憶部10は、HDD(Hard Disk Drive)等の磁気記憶装置やSSD(Solid State Drive)等の半導体記憶装置を含む外部記憶装置である。記憶部10は、月例給与項目マスタテーブル10−1、月例給与支給データテーブル10−2、従業員マスタテーブル10−3、従業員勤怠データテーブル10−4、給与体系マスタテーブル10−5、役職手当マスタテーブル10−6を有する。また、記憶部10は、家族手当マスタテーブル10−7、算出式マスタテーブル10−8、横明細データテーブル10−9、縦明細データテーブル10−10、縦横記録先データテーブル10−11を有する。記憶部10は、月例給与項目マスタテーブル10−1〜縦横記録先データテーブル10−11を有するRDBである。給与データ計算装置100は、RDBを管理するRDB管理システムを含む。
【0016】
(記憶部に格納されるテーブル)
以下、記憶部10に記憶される月例給与項目マスタテーブル10−1〜縦横記録先データテーブル10−11について説明する。月例給与項目マスタテーブル10−1〜縦横記録先データテーブル10−11は、RDBのテーブルである。異なるテーブルに存在する同一名称のカラムは、RDBにおいて関連付けられるカラムである。
【0017】
(月例給与項目マスタテーブル)
図2は、月例給与項目マスタテーブルの一例を示す図である。月例給与項目マスタテーブル10−1は、「給与項目」「計算順序」のカラムを有する。「給与項目」は、企業が従業員に対して支給する給与の項目であり、算出値となる給与データの項目名を示す。「給与項目」は、予め定められた算出式を従業員の各マスタテーブルおよび各データテーブルに格納されているデータに適用した算出結果である。図2に示す例では、n個(nは2以上の自然数)の「給与項目」のうち、(n−1)個の「給与項目」“基本給”〜“残業手当”・・・は、「給与項目」“総支給額”の内訳である。
【0018】
また、「計算順序」は、対応する「給与項目」を、予め定められた算出式をもとに算出する算出順序である。例えば、図2において、1番目に“役職手当”、2番目に“資格手当”、3番目に“家族手当”、4番目に“残業手当”、5番目に“総手当額”、6番目に“基本給”、7番目に“職能給”・・・が算出される。そして、最後のn番目に“総支給額”が算出される。このように、「給与項目」ごとに「計算順序」が定められるのは、先に算出された「給与項目」が、後に他の「給与項目」の算出に用いられる場合があるためである。
【0019】
(月例給与支給データテーブル)
図3は、月例給与支給データテーブルの一例を示す図である。月例給与支給データテーブル10−2は、「月度」「従業員番号」「総支給額」「基本給」「職能給」「役職手当」「総手当額」「家族手当」「残業手当」・・・のカラムを有する。月例給与支給データテーブル10−2における「総支給額」「基本給」「職能給」「役職手当」「総手当額」「家族手当」「残業手当」・・・は、月例給与項目マスタテーブル10−1で定められている「計算順序」に従って算出された「給与項目」である。
【0020】
月例給与支給データテーブル10−2における1レコードが、「従業員番号」で識別される従業員に対して「月度」で識別される年月に支給される月例給与の「給与項目」を含む。例えば、月例給与支給データテーブル10−2に含まれるカラムの名称および対応する値は、その一部または全部が、給与明細書等に出力される「給与項目」およびその算出値である。
【0021】
(従業員マスタテーブル)
図4は、従業員マスタテーブルの一例を示す図である。従業員マスタテーブル10−3は、レコードごとに各従業員の属性情報が格納されているテーブルである。従業員マスタテーブル10−3は、「従業員番号」「従業員名」「入社年月日」「退社年月日」「日給月給区分」「役職」「職級」「基本給額」「時給額」「扶養家族数」「未就学扶養者数」「配偶者有無」・・・のカラムを有する。図4に示す例では、「従業員番号」“223043”で識別される従業員は、「従業員名」“○○○○”、「入社年月日」“1996/4/1”、「退社年月日」“−”(未退社)・・・である。
【0022】
(従業員勤怠データテーブル)
図5は、従業員勤怠データテーブルの一例を示す図である。従業員勤怠データテーブル10−4は、レコードごとに各従業員の勤怠情報が格納されているテーブルである。従業員勤怠データテーブル10−4は、「従業員番号」「月度」「所定日数」「労働日数」「休日出勤日数」「所定労働時間」「労働時間」「時間外時間」「深夜労働時間」「有給日数」・・・である。図5に示す例では、「従業員番号」“223043”で識別される従業員は、「月度」“2017年1月度”において、「所定日数」“20”の勤務日のうち「労働日数」“19”だけ勤務し、「所定労働時間」“160”であり、「労働時間」“172”だけ労働したことを示す。そして、「従業員番号」“223043”で識別される従業員は、「月度」“2017年1月度”において、「時間外時間」“12”、「深夜労働時間」“1”であり、「有給日数」“1”だけ有給を取得したことを示す。
【0023】
(給与体系マスタテーブル)
図6は、給与体系マスタテーブルの一例を示す図である。給与体系マスタテーブル10−5は、「職級」ごとの「職能給」を示すテーブルである。図6では、例えば、「職級」“IV”である場合には、「職能給」“160000”であることを示す。
【0024】
(役職手当マスタテーブル)
図7は、役職手当マスタテーブルの一例を示す図である。役職手当マスタテーブル10−6は、「役職」に応じた「役職給」を示すテーブルである。図7では、例えば、「役職」“本部長”である場合には、「役職給」“50000”であることを示す。
【0025】
(家族手当マスタテーブル)
図8は、家族手当マスタテーブルの一例を示す図である。家族手当マスタテーブル10−7は、「扶養家族数」に応じた「基準額」を示すテーブルである。図8では、例えば、「扶養家族数」“1人”である場合には、「基準額」“3000”であることを示す。
【0026】
(算出式マスタテーブル)
図9は、算出式マスタテーブルの一例を示す図である。算出式マスタテーブル10−8は、「給与項目」「条件」「算出値(中間値)」「算出式」のカラムを有する。以下、「算出値(中間値)」の表記は、「算出値」、および「算出値」の算出過程で発生する「中間値」をいう。また、「算出値」の表記は、算出値のみを指し、「中間値」の表記は、中間値のみを示す。
【0027】
また、「給与項目」の“総支給額”“基本給”“職能給”“総手当額”“役職手当”“家族手当”“残業手当”・・・の計算は、月例給与項目マスタテーブル10−1に格納されている順序に従う。また、「給与項目」および「条件」の組合せに対応する「算出値(中間値)」は、「算出値(中間値)」のカラムに格納されている格納行の順序で算出される。例えば、「給与項目」“総支給額”、「条件」“給与月度 IN (従業員マスタ->入社年月日) and 従業員マスタ->日給月給区分=月給”の組合せに対応する「算出値(中間値)」は、先ず“$総支給額_基本給”が算出された後に、“総支給額”が算出される。
【0028】
なお、図9において、例えば、「条件」“給与月度 IN (従業員マスタ->入社年月日) and 従業員マスタ->日給月給区分=月給”は、月給制の従業員が、給与月度の当月に入社し、給与の日割り計算を行う場合を示す。また、例えば、「条件」“給与月度 IN (従業員マスタ->退社年月日) and 従業員マスタ->日給月給区分=月給”は、月給制の従業員が、給与月度の当月に退社(退職)し、給与の日割り計算を行う場合を示す。
【0029】
算出式マスタテーブル10−8によれば、各「給与項目」について、「条件」が充足される場合に、対応する「算出式」に従って「算出値(中間値)」が順次算出される。なお、算出式マスタテーブル10−8において1つの「給与項目」および「条件」に対応する「算出値(中間値)」内の算出値および中間値の縦の並び順は、これら算出値および中間値の計算順序に等しい。また、算出式マスタテーブル10−8において、“$”をプレフィックスとして持つ「算出値(中間値)」は、中間値である。また、算出式マスタテーブル10−8において、「条件」“-”は、条件がないこと(無条件)を示す。また、算出式マスタテーブル10−8において、“T->I”は、マスタテーブルTの項目Iの値を参照することを示す。また、算出式マスタテーブル10−8において、“IF ‘C’ THEN ‘D’”は、条件Cが成立するならば値Dを返すことを示す。また、算出式マスタテーブル10−8において、“I==V”は、マスタテーブルTの項目Iの値がVに等しいことを示す。
【0030】
例えば、「総支給額」は、「条件」“給与月度 IN(従業員マスタ->入社年月日)and 従業員マスタ->日給月給区分=月給”の条件が満たされる場合に、中間値である“$総支給額_基本給”は、“基本給×(従業員勤怠データ->労働日数÷従業員勤怠データ->所定日数)”により算出される。また、“総支給額”は、“$総支給額_基本給+職能給”により算出される。すなわち、該当従業員の給与支給対象の年月が従業員マスタテーブル10−3の「入社年月日」に該当し、かつ、従業員マスタテーブル10−3の「日給月給区分」が“月給”である場合に、「中間値」である“$総支給額_基本給”を、従業員勤怠データテーブル10−4の「労働日数」を「所定日数」で割った結果に、先に算出済みの「基本給」を乗じることで算出される。そして、「総支給額」は、「$総支給額_基本給」に、既に算出済みの「職能給」を加算することで算出される。他の「基本給」「職能給」「総手当額」「役職手当」「家族手当」「残業手当」・・・も、月例給与項目マスタテーブル10−1に格納されている順序に従って、対応する「条件」が充足される場合に、対応する「算出式」を用いて「算出値(中間値)」が算出される。
【0031】
(横明細データテーブル)
図10は、横明細データテーブルの一例を示す図である。図10に示す例では、横明細データテーブル10−9は、「従業員番号」「月度」「項目1」〜「項目10」のカラムを有する。「項目1」〜「項目10」のレコードごとの各フィールドは、後述の実施例1〜4の縦横記録先決定処理で横明細データテーブル10−9に記録すると決定された「算出値(中間値)」を記録するためのフィールドである。横明細データテーブル10−9は、「従業員番号」および「月度」に対応する複数のデータを1レコードに格納することから、テーブルへのアクセス性能が良いが、フィールドの数の制限により、記録できるデータの数に制限がある。なお、図10では、「項目1」〜「項目10」の10個の「項目」のカラムを有する例を示すが、10個に限られず、所定上限の範囲内で適宜設計変更可能である。
【0032】
(縦明細データテーブル)
図11は、縦明細データテーブルの一例を示す図である。図11に示す例では、縦明細データテーブル10−10は、「従業員番号」「月度」「項目」「値」のカラムを有する。縦明細データテーブル10−10には、レコードに、「従業員番号」、「月度」および「項目」に対応する「値」が格納されている。「項目」は、後述の実施例1〜4の縦横記録先決定処理で縦明細データテーブル10−10に格納すると決定された「算出値」または「中間値」である。例えば、「従業員番号」“223043”の「月度」“2017年1月度”の「項目」は、「中間値」である“$家族手当_特別加算1”であり、その「値」は“0”である。縦明細データテーブル10−10は、「従業員番号」および「月度」に対応する複数のデータを複数レコードに分けて格納することから、記録できるデータの数に制限がないが、テーブルへのアクセス性能が劣る。
【0033】
なお、縦明細データテーブル10−10が有するカラムは、「従業員番号」「月度」「項目」「値」の4つであるとするが、「項目」および「値」の組は、2組以上であってもよい。
【0034】
(縦横記録先データテーブル)
図12は、縦横記録先データテーブルの一例を示す図である。図12に示す例では、縦横記録先データテーブル10−11は、「月度」「項目」「縦横」「横明細記録先」のカラムを有する。縦横記録先データテーブル10−11には、レコードごとに、「月度」および「項目」に対応する「縦横」および「横明細記録先」が記録される。「縦横」は、「月度」に対応する「項目」を横明細データテーブル10−9および縦明細データテーブル10−10のいずれか一方または両方に記録することを示す。「縦横」“横明細”かつ「横明細記録先」“項目1”である場合には、対応する「月度」の「項目」が、横明細データテーブル10−9の“項目1”に記録されることを示す。「縦横」が“縦明細”である場合には、対応する「月度」の「項目」が、縦明細データテーブル10−10に記録されることを示す。
【0035】
(制御部)
図1の説明に戻る。制御部20は、CPU(Central Processing Unit)等の処理装置である。制御部20は、縦横記録先決定部21、給与項目記録処理部22、給与項目算出処理部23を有する。
【0036】
縦横記録先決定部21は、後述の実施例1〜4のいずれかの縦横記録先決定処理により、算出値である「給与項目」と、「給与項目」の算出過程における「中間値」の記録先を、横明細データテーブル10−9および縦明細データテーブル10−10のいずれか一方または両方とすることを決定する。縦横記録先決定処理の詳細は、後述の実施例1〜4で詳述する。
【0037】
給与項目記録処理部22は、「給与項目」の一覧を月例給与項目マスタテーブル10−1から取得する。そして、給与項目記録処理部22は、月例給与項目マスタテーブル10−1から取得した「給与項目」について、給与項目算出処理部23により、対応する「計算順序」に従って、「算出値」である「給与項目」と、「算出値」の算出過程の「中間値」を算出する。そして、給与項目記録処理部22は、「算出値」および「中間値」を、縦横記録先決定処理により既に決定された記録先である横明細データテーブル10−9および縦明細データテーブル10−10のいずれか一方または両方に記録する。
【0038】
給与項目算出処理部23は、算出式マスタテーブル10−8から取得された「給与項目」および「条件」に該当する「算出値(中間値)」の「算出式」を計算し、「算出値(中間値)」を算出する。給与項目算出処理部23により算出された「算出値(中間値)」は、上述のように、既に決定された記録先である横明細データテーブル10−9および縦明細データテーブル10−10のいずれか一方または両方に記録される。
【0039】
(給与項目記録処理)
図13は、給与項目記録処理の一例を示すフローチャートである。給与項目記録処理は、給与データ計算装置100の制御部20の給与項目記録処理部22により実行される。給与項目記録処理は、後述の実施例1〜4のいずれかの縦横記録先決定処理により、算出値である「給与項目」および「給与項目」の算出過程における「中間値」が、横明細データテーブル10−9および縦明細データテーブル10−10のいずれか一方または両方に記録されることが決定され、縦横記録先データテーブル10−11に記録先が記録されていることを前提として実行される。縦横記録先データテーブル10−11に記録先が記録される縦横記録先決定処理については、実施例1〜4を参照して後述する。なお、給与項目記録処理は、月度単位に定期的に実行されるとするが、月度に限られず、任意の所定期間を単位とする周期で実行されてもよい。
【0040】
先ず、ステップS101では、給与項目記録処理部22は、月例給与項目マスタテーブル10−1から、給与項目一覧として、全ての「給与項目」および「計算順序」を取得する。
【0041】
次に、ステップS102〜S112では、給与項目記録処理部22は、ステップS101で取得した「給与項目」の算出を、ステップS101で同時に取得した「計算順序」に従って繰り返し実行する。ステップS102では、給与項目記録処理部22は、例えば1回目の実行の際には、月例給与項目マスタテーブル10−1から「計算順序」が“1”である「給与項目」“役職手当”を選択する。
【0042】
次に、ステップS103では、給与項目記録処理部22は、算出式マスタテーブル10−8から、直前のステップS102で選択された「給与項目」および「条件」に該当する「算出値(中間値)」および「算出式」を全て取得する。
【0043】
次に、ステップS104〜S110では、給与項目記録処理部22は、従業員マスタテーブル10−3に記録されている全従業員について、直前のステップS103で取得した「算出値(中間値)」ごとに、対応する「算出式」によりその計算結果を算出する。そして、給与項目記録処理部22は、縦横記録先データテーブル10−11に格納されている記録先に従って、算出した「算出値(中間値)」を横明細データテーブル10−9および縦明細データテーブル10−10のいずれか一方または両方に記録する。
【0044】
ステップS104では、給与項目記録処理部22は、例えば1回目の実行の際には、算出式マスタテーブル10−8において、該当する「給与項目」および「条件」の組合せに対応する「算出値(中間値)」のうち、1行目に格納されている「算出値(中間値)」“$総支給額_基本給”を選択する。
【0045】
次に、ステップS105では、給与項目記録処理部22は、ステップS104で選択した「算出値(中間値)」を入力とし、計算結果=Aを出力する算出値(中間値)算出処理を実行する。算出値(中間値)算出処理の詳細は、図14を参照して後述する。
【0046】
次に、ステップS106では、給与項目記録処理部22は、縦横記録先データテーブル10−11を参照し、ステップS105で算出した「算出値(中間値)」の記録先が、横明細データテーブル10−9および縦明細データテーブル10−10のいずれか一方または両方であるかの情報を取得する。
【0047】
次に、ステップS107では、給与項目記録処理部22は、ステップS106で取得した記録先が横明細データテーブル10−9であるか否かを判定する。給与項目記録処理部22は、ステップS106で取得した記録先が横明細データテーブル10−9である場合(ステップS107Yes)、ステップS108へ処理を移す。一方、給与項目記録処理部22は、ステップS106で取得した記録先が横明細データテーブル10−9でない場合(ステップS107No)、ステップS113へ処理を移す。
【0048】
ステップS108では、給与項目記録処理部22は、縦横記録先データテーブル10−11の「横明細記録先」から、横明細データテーブル10−9の「項目1」〜「項目10」のカラムのうち、ステップS105で算出した「算出値(中間値)」(計算結果=A)を記録する記録項目を取得する。次に、ステップS109では、給与項目記録処理部22は、ステップS105で算出した「算出値(中間値)」(計算結果=A)を、ステップS109で取得した横明細データテーブル10−9の記録項目(「項目1」〜「項目10」のいずれか)に、「従業員番号」および「月度」ごとに登録する。
【0049】
次に、ステップS110では、給与項目記録処理部22は、ステップS103で取得した「算出値(中間値)」を全て処理したか否かを判定する。給与項目記録処理部22は、ステップS103で取得した「算出値(中間値)」を全て処理した場合(ステップS110Yes)、ステップS111へ処理を移す。一方、給与項目記録処理部22は、ステップS103で取得した「算出値(中間値)」を全て処理していない場合(ステップS110No)、ステップS104へ処理を移す。給与項目記録処理部22は、ステップS110から処理を移したステップS104において、前回の実行の際に算出式マスタテーブル10−8から選択した「算出値(中間値)」の次の格納行の「算出値(中間値)」を選択する。
【0050】
次に、ステップS111では、給与項目記録処理部22は、ステップS105で算出した「算出値」を、月例給与支給データテーブル10−2の該当する「給与項目」のカラムに、「月度」および「従業員番号」ごとに記録する。次に、ステップS112では、給与項目記録処理部22は、ステップS104〜S111で、ステップS101で取得した「給与項目」を全て処理したか否かを判定する。給与項目記録処理部22は、ステップS104〜S111で、ステップS101で取得した「給与項目」を全て処理した場合(ステップS112Yes)、給与項目記録処理を終了する。一方、給与項目記録処理部22は、ステップS104〜S111で、ステップS101で取得した「給与項目」を全て処理していない場合(ステップS112No)、ステップS102へ処理を移す。給与項目記録処理部22は、ステップS112から処理を移したステップS102において、前回の実行の際に月例給与項目マスタテーブル10−1から選択した「給与項目」の次の「計算順序」の「給与項目」を選択する。
【0051】
他方、ステップS113では、給与項目記録処理部22は、ステップS105で算出した「算出値(中間値)」(計算結果=A)を、縦明細データテーブル10−10の「従業員番号」および「月度」ごとの「項目」に登録する。ステップS113が終了すると、給与項目記録処理部22は、ステップS111へ処理を移す。
【0052】
(算出値(中間値)算出処理)
図14は、算出値(中間値)算出処理のサブルーチンの一例を示すフローチャートである。算出値(中間値)算出処理のサブルーチンは、図13のステップS105に該当する。算出値(中間値)算出処理のサブルーチンは、給与データ計算装置100の制御部20の給与項目算出処理部23により実行される。
【0053】
先ず、ステップS105−1では、給与項目算出処理部23は、ステップS104で選択された「算出値(中間値)」に対応する「算出式」を、算出式マスタテーブル10−8から取得する。例えば、ステップS104で選択された「算出値(中間値)」が「給与項目」“総支給額”、「条件」“給与月度 IN (従業員マスタ->入社年月日) and 従業員マスタ->日給月給区分=月給”の組合せに対応する「算出値(中間値)」“総支給額”である場合、対応する「算出式」として“$総支給額_基本給+職能給”を選択する。
【0054】
次に、ステップS105−2では、給与項目算出処理部23は、ステップS105−1で取得した「算出式」に含まれる「算出値(中間値)項目」を取得する。「算出値(中間値)項目」とは、「算出式」に含まれる項および因子のうち、「算出値」または「中間値」に該当するものをいう。「算出式」が“$総支給額_基本給+職能給”である場合、「算出値(中間値)項目」は、“$総支給額_基本給”である。
【0055】
次に、ステップS105−3〜S105−8では、給与項目算出処理部23は、ステップS105−2で取得した「算出値(中間値)項目」ごとに、「算出値(中間値)項目」の格納先を取得し、取得した格納先から該当の「算出値(中間値)項目」の値を取得する。
【0056】
ステップS105−3では、給与項目算出処理部23は、ステップS105−2で取得した「算出値(中間値)項目」のうち、未選択の「算出値(中間値)項目」を選択する。次に、ステップS105−4では、給与項目算出処理部23は、縦横記録先データテーブル10−11を参照し、ステップS105−3で選択した「算出値(中間値)項目」の格納先が横明細データテーブル10−9および縦明細データテーブル10−10のいずれであるかを取得する。
【0057】
次に、ステップS105−5では、給与項目算出処理部23は、ステップS105−4で取得した「算出値(中間値)項目」の格納先が横明細データテーブル10−9であるか否かを判定する。給与項目算出処理部23は、ステップS105−4で取得した「算出値(中間値)項目」の格納先が横明細データテーブル10−9である場合(ステップS105−5Yes)、ステップS105−6へ処理を移す。一方、給与項目算出処理部23は、ステップS105−4で取得した「算出値(中間値)項目」の格納先が縦明細データテーブル10−10である場合(ステップS105−5No)、ステップS105−9へ処理を移す。
【0058】
ステップS105−6では、給与項目算出処理部23は、縦横記録先データテーブル10−11を参照し、ステップS105−4で取得した、格納先が横明細データテーブル10−9である「算出値(中間値)項目」の「横明細記録先」を取得する。次に、ステップS105−7では、給与項目算出処理部23は、ステップS105−6で取得した「横明細記録先」をもとに横明細データテーブル10−9を参照し、ステップS105−4で取得した「算出値(中間値)項目」に該当する値を取得する。
【0059】
次に、ステップS105−8では、給与項目算出処理部23は、ステップS105−3〜S105−7の処理で、ステップS105−2で取得した全ての「算出値(中間値)項目」に該当する「算出値(中間値)」の値を取得したか否かを判定する。給与項目算出処理部23は、ステップS105−3〜S105−7の処理で、ステップS105−2で取得した全ての「算出値(中間値)項目」に該当する「算出値(中間値)」の値を取得した場合(ステップS105−8Yes)、ステップS105−10へ処理を移す。
【0060】
一方、給与項目算出処理部23は、ステップS105−3〜S105−7の処理で、ステップS105−2で取得した全ての「算出値(中間値)項目」に該当する「算出値(中間値)」の値を取得していない場合(ステップS105−8No)、ステップS105−3へ処理を移す。給与項目算出処理部23は、ステップS105−8から処理を移したステップS105−3において、前回の実行までに未選択の「算出値(中間値)項目」を選択する。
【0061】
一方、ステップS105−9では、給与項目記録処理部22は、縦明細データテーブル10−10から、ステップS105−4で取得した「算出値(中間値)項目」に該当する値を取得する。給与項目記録処理部22は、ステップS105−9が終了すると、ステップS105−10へ処理を移す。
【0062】
次に、ステップS105−10では、給与項目算出処理部23は、ステップS105−1で取得した算出式に含まれる「マスタ参照値」を取得する。「マスタ参照値」とは、月例給与項目マスタテーブル10−1、従業員マスタテーブル10−3、給与体系マスタテーブル10−5、役職手当マスタテーブル10−6、家族手当マスタテーブル10−7の各カラムのフィールドに格納されている値をいう。
【0063】
次に、ステップS105−11では、給与項目算出処理部23は、ステップS105−7、S105−9、S105−10で取得した値を、ステップS105−1で取得した算出式にあてはめて計算を行い、計算結果=Aを算出する。給与項目算出処理部23は、ステップS105−11が終了すると、図13の給与項目記録処理のステップS106へ処理を移す。
【0064】
(縦横記録先決定処理)
以下、「給与項目」の「算出値」、および「算出値」の算出過程における「中間値」が、横明細データテーブル10−9および縦明細データテーブル10−10のいずれか一方または両方に記録されることが決定され、縦横記録先データテーブル10−11に記録先が記録される縦横記録先決定処理の実施例について説明する。
【0065】
縦横記録先決定処理は、給与データ計算装置100の制御部20の縦横記録先決定部21により実行される。縦横記録先決定処理は、例えば、図13および図14に示す、定例(月次もしくは所定期間を単位とする周期)の給与計算処理の前もしくは前段に実行される。もしくは、縦横記録先決定処理は、給与制度の変更等に伴う月例給与項目マスタテーブル10−1、月例給与支給データテーブル10−2、従業員マスタテーブル10−3、従業員勤怠データテーブル10−4、給与体系マスタテーブル10−5、役職手当マスタテーブル10−6、家族手当マスタテーブル10−7、算出式マスタテーブル10−8等の変更があった都度、実行されてもよい。給与制度の変更は、例えば、給与に関する項目の追加、給与の計算式の変更、給与の計算式の追加等を含む。
【実施例1】
【0066】
図15は、実施例1にかかる縦横記録先決定処理の一例を示すフローチャートである。実施例1にかかる縦横記録先決定処理では、「給与項目」の「算出値(中間値)」を横明細データテーブル10−9に優先して記録し、横明細データテーブル10−9の1レコードの全てのフィールドに「算出値(中間値)」を記録した後、残りの「算出値(中間値)」を縦明細データテーブル10−10に記録すると決定し、その情報を縦横記録先データテーブル10−11に登録する。
【0067】
先ず、ステップS11では、縦横記録先決定部21は、月例給与項目マスタテーブル10−1から給与項目一覧として、全ての「給与項目」および「計算順序」を取得する。
【0068】
次に、ステップS12〜S18では、縦横記録先決定部21は、ステップS11で取得した各「給与項目」に対応する「算出値」および「中間値」それぞれの数を、ステップS11で同時に取得した「計算順序」に従って算出する。そして、縦横記録先決定部21は、横明細データテーブル10−9にデータ記録先として未決定のフィールドが存在し、かつ、該当の「算出値」および「中間値」の合計数が横明細データテーブル10−9のデータ記録先として未決定のフィールドの数以下である場合に、該当の「給与項目」に対応する「算出値」および「中間値」の記録先を横明細データテーブル10−9とし、その情報を縦横記録先データテーブル10−11に登録する。
【0069】
また、縦横記録先決定部21は、横明細データテーブル10−9にデータ記録先として未決定のフィールドが存在しない場合に、該当の「給与項目」に対応する「算出値」および「中間値」の記録先を縦明細データテーブル10−10とし、その情報を縦横記録先データテーブル10−11に登録する。ステップS12では、縦横記録先決定部21は、例えば1回目の実行の際には、月例給与項目マスタテーブル10−1から「計算順序」が“1”である「給与項目」“役職手当”を選択する。
【0070】
次に、ステップS13では、縦横記録先決定部21は、算出式マスタテーブル10−8から、直前のステップS12で選択された「給与項目」に対応する「算出値」および「中間値」を全て取得する。次に、ステップS14では、縦横記録先決定部21は、ステップS13で取得した「算出値」の数=B1および「中間値」の数=B2を算出する。
【0071】
次に、ステップS15では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0より大であるか(存在するか)否かを判定する。縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0より大である(存在する)場合(ステップS15Yes)、ステップS16へ処理を移す。一方、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0である(存在しない)場合(ステップS15No)、ステップS19へ処理を移す。
【0072】
ステップS16では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が、ステップS14で算出した「算出値」および「中間値」の合計数=B1+B2以上か否かを判定する。縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が、ステップS14で算出した「算出値」および「中間値」の合計数=B1+B2以上である場合(ステップS16Yes)、ステップS17へ処理を移す。一方、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が、ステップS14で算出した「算出値」および「中間値」の合計数=B1+B2未満である場合(ステップS16No)、ステップS20へ処理を移す。
【0073】
なお、「横明細データテーブル10−9にデータ記録先として未決定のフィールドが存在」とは、「横明細データテーブル10−9にデータ記録先として決定されているフィールドが所定数未満」であることをいう。同様に、「横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が所定数以上」も、「横明細データテーブル10−9にデータ記録先として決定されているフィールドが所定数未満」であることをいう。
【0074】
ステップS17では、縦横記録先決定部21は、ステップS13で取得した「算出値」および「中間値」の記録先を横明細データテーブル10−9と決定して縦横記録先データテーブル10−11に登録する。
【0075】
次に、ステップS18では、縦横記録先決定部21は、ステップS11で取得した全ての「給与項目」について、ステップS12〜S22の処理を実行したか否かを判定する。縦横記録先決定部21は、ステップS11で取得した全ての「給与項目」について、ステップS12〜S22の処理を実行した場合(ステップS18Yes)、実施例1にかかる縦横記録先決定処理を終了する。一方、縦横記録先決定部21は、ステップS11で取得した全ての「給与項目」について、ステップS12〜S22の処理を実行していない場合(ステップS18No)、ステップS12へ処理を移す。縦横記録先決定部21は、ステップS18から処理を移したステップS12において、前回の実行の際に月例給与項目マスタテーブル10−1から選択した「給与項目」の次の「計算順序」の「給与項目」を選択する。
【0076】
他方、ステップS19では、縦横記録先決定部21は、「算出値」および「中間値」の記録先を縦明細データテーブル10−10と決定して縦横記録先データテーブル10−11に登録する。縦横記録先決定部21は、ステップS19が終了すると、ステップS18へ処理を移す。
【0077】
また、ステップS20では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数がB1以上であるか否かを判定する。縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数がB1以上である場合(ステップS20Yes)、ステップS21へ処理を移す。一方、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数がB1未満である場合(ステップS20No)、ステップS19へ処理を移す。
【0078】
ステップS21では、縦横記録先決定部21は、ステップS13で取得した「算出値」の記録先を横明細データテーブル10−9と決定して縦横記録先データテーブル10−11に登録する。次に、ステップS22では、縦横記録先決定部21は、ステップS13で取得した「中間値」の記録先を縦明細データテーブル10−10と決定して縦横記録先データテーブル10−11に登録する。縦横記録先決定部21は、ステップS22が終了すると、ステップS18へ処理を移す。
【0079】
実施例1にかかる縦横記録先決定処理では、「給与項目」に対応する「算出値」および「中間値」に関わらず、先ず、横明細データテーブル10−9に記録すると決定する。そして、実施例1にかかる縦横記録先決定処理では、横明細データテーブル10−9のデータ記録先として未決定のフィールドが不足した場合には、「算出値」を優先的に横明細データテーブル10−9に、「中間値」を縦明細データテーブル10−10に記録すると決定する。
【0080】
よって、実施例1によれば、膨大な数の「算出値」または「中間値」が算出される場合であっても、RDBの処理性能の劣化を抑制しつつ、「給与項目」の「算出値」および「中間値」の数を上限なく取り扱って給与データの算出を行うことができる。
【0081】
(実施例1の変形例)
実施例1にかかる縦横記録先決定処理において、ステップS21とステップS22とは、処理順序を入れ替えてもよい。
【0082】
また、上述のステップS20では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が「算出値」の数=B1以上である場合にのみ、「算出値」の記録先を横明細データテーブル10−9と決定する。しかし、これに限られず、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が「算出値」の数=B1未満の場合、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数の全てを「算出値」の記録先とし、横明細データテーブル10−9に記録し切れない残りの「算出値」の記録先を縦明細データテーブル10−10と決定してもよい。
【0083】
また、ステップS20では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数がB1以上であるか否かを判定し、ステップS21で「算出値」の記録先を横明細データテーブル10−9と決定し、ステップS22で「中間値」の記録先を縦明細データテーブル10−10と決定する。しかし、これに限られず、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数がB2以上であるか否かを判定し、「算出値」の記録先を縦明細データテーブル10−10と決定し、「中間値」の記録先を横明細データテーブル10−9と決定してもよい。
【実施例2】
【0084】
図16は、実施例2にかかる縦横記録先決定処理の一例を示すフローチャートである。実施例1にかかる縦横記録先決定処理では、「給与項目」の「算出値」を横明細データテーブル10−9に優先して記録し、「中間値」を縦明細データテーブル10−10に記録すると決定し、その情報を縦横記録先データテーブル10−11に登録する。そして、縦横記録先決定部21は、横明細データテーブル10−9にデータ記録先として未決定のフィールドが存在しなくなった場合には、「算出値」および「中間値」ともに縦明細データテーブル10−10に記録すると決定し、その情報を縦横記録先データテーブル10−11に登録する。
【0085】
実施例2にかかる縦横記録先決定処理におけるステップS31〜S33ぞれぞれは、実施例1にかかる縦横記録先決定処理のステップS11〜S13と同様である。ステップS32〜S38では、縦横記録先決定部21は、ステップS31で取得した各「給与項目」に対応する「算出値」および「中間値」のうち、「算出値」を横明細データテーブル10−9に記録し、「中間値」を縦明細データテーブル10−10に記録すると決定し、その情報を縦横記録先データテーブル10−11に登録する。そして、縦横記録先決定部21は、横明細データテーブル10−9にデータ記録先として未決定のフィールドが存在しなくなった場合には、「算出値」も縦明細データテーブル10−10に記録するとし、その情報を縦横記録先データテーブル10−11に登録する。
【0086】
ステップS34では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0より大であるか(存在するか)否かを判定する。縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0より大である(存在する)場合(ステップS34Yes)、ステップS35へ処理を移す。一方、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0である(存在しない)場合(ステップS34No)、ステップS38へ処理を移す。
【0087】
ステップS35では、縦横記録先決定部21は、ステップS33で取得した「算出値」の記録先を横明細データテーブル10−9と決定して縦横記録先データテーブル10−11に登録する。次に、ステップS36では、縦横記録先決定部21は、ステップS33で取得した「中間値」の記録先を縦明細データテーブル10−10と決定して縦横記録先データテーブル10−11に登録する。
【0088】
次に、ステップS37では、縦横記録先決定部21は、ステップS31で取得した全ての「給与項目」について、ステップS32〜S38の処理を実行したか否かを判定する。縦横記録先決定部21は、ステップS31で取得した全ての「給与項目」について、ステップS32〜S38の処理を実行した場合(ステップS37Yes)、実施例2にかかる縦横記録先決定処理を終了する。
【0089】
一方、縦横記録先決定部21は、ステップS31で取得した全ての「給与項目」について、ステップS32〜S38の処理を実行していない場合(ステップS37No)ステップS32へ処理を移す。縦横記録先決定部21は、ステップS37から処理を移したステップS32において、前回の実行の際に月例給与項目マスタテーブル10−1から選択した「給与項目」の次の「計算順序」の「給与項目」を選択する。
【0090】
他方、ステップS38では、縦横記録先決定部21は、「算出値」および「中間値」の記録先を縦明細データテーブル10−10と決定して縦横記録先データテーブル10−11に登録する。ステップS38が終了すると、縦横記録先決定部21は、ステップS37へ処理を移す。
【0091】
実施例2にかかる縦横記録先決定処理では、「給与項目」に対応する「算出値」を横明細データテーブル10−9に記録すると決定し、「中間値」を縦明細データテーブル10−10に記録すると決定する。そして、実施例2にかかる縦横記録先決定処理では、横明細データテーブル10−9のデータ記録先として未決定のフィールドが不足した場合には、「算出値」も縦明細データテーブル10−10に記録すると決定する。
【0092】
よって、実施例2によれば、膨大な数の「中間値」が算出される場合であっても、RDBの処理性能の劣化を抑制しつつ、「給与項目」の「算出値」および「中間値」の数を上限なく取り扱って給与データの算出を行うことができる。
【0093】
(実施例2の変形例)
実施例2にかかる縦横記録先決定処理において、ステップS35とステップS36とは、処理順序を入れ替えてもよい。
【実施例3】
【0094】
図17は、実施例3にかかる縦横記録先決定処理の一例を示すフローチャートである。実施例3にかかる縦横記録先決定処理では、「給与項目」の「中間値」を横明細データテーブル10−10に優先して記録し、「算出値」を縦明細データテーブル10−9に記録すると決定する。
【0095】
実施例3にかかる縦横記録先決定処理におけるステップS41〜S43のぞれぞれは、実施例1にかかる縦横記録先決定処理のステップS11〜S13と同様である。ステップS42〜S52では、縦横記録先決定部21は、ステップS41で取得した各「給与項目」に対応する「算出値」および「中間値」のうち、「算出値」を縦明細データテーブル10−10に記録し、「中間値」を横明細データテーブル10−9に記録すると決定し、その情報を縦横記録先データテーブル10−11に登録する。そして、縦横記録先決定部21は、横明細データテーブル10−9にデータ記録先として未決定のフィールドが存在しなくなった場合には、「算出値」および「中間値」ともに縦明細データテーブル10−10に記録すると決定し、その情報を縦横記録先データテーブル10−11に登録する。
【0096】
ステップS44では、縦横記録先決定部21は、ステップS43で取得した「中間値」の数=Cを算出する。次に、ステップS45では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0より大であるか(存在するか)否かを判定する。縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0より大である(存在する)場合(ステップS45Yes)、ステップS46へ処理を移す。一方、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0である(存在しない)場合(ステップS45No)、ステップS52へ処理を移す。
【0097】
次に、ステップS46では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が、ステップS44で算出した「中間値」の数=C以上か否かを判定する。縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が、ステップS44で算出した「中間値」の合計数=C以上である場合(ステップS46Yes)、ステップS47へ処理を移す。一方、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が、ステップS44で算出した「中間値」の数=C未満である場合(ステップS46No)、ステップS50へ処理を移す。
【0098】
ステップS47では、縦横記録先決定部21は、ステップS43で取得した「中間値」の記録先を横明細データテーブル10−9と決定して縦横記録先データテーブル10−11に登録する。次に、ステップS48では、縦横記録先決定部21は、ステップS43で取得した「算出値」の記録先を縦明細データテーブル10−10と決定して縦横記録先データテーブル10−11に登録する。縦横記録先決定部21は、ステップS48が終了すると、ステップS49へ処理を移す。
【0099】
次に、ステップS49では、縦横記録先決定部21は、ステップS41で取得した全ての「給与項目」について、ステップS42〜S48、S50〜S52の処理を実行したか否かを判定する。縦横記録先決定部21は、テップS41で取得した全ての「給与項目」について、ステップS42〜S48、S50〜S52の処理を実行した場合(ステップS49Yes)、実施例3にかかる縦横記録先決定処理を終了する。一方、縦横記録先決定部21は、ステップS41で取得した全ての「給与項目」について、ステップS42〜S48、S50〜S52の処理を実行していない場合(ステップS49No)、ステップS42へ処理を移す。縦横記録先決定部21は、ステップS49から処理を移したステップS42において、前回の実行の際に月例給与項目マスタテーブル10−1から選択した「給与項目」の次の「計算順序」の「給与項目」を選択する。
【0100】
一方、ステップS50では、縦横記録先決定部21は、ステップS43で取得した「中間値」の記録先を、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数分だけ横明細データテーブル10−9に記録すると決定して縦横記録先データテーブル10−11に登録する。次に、ステップS51では、縦横記録先決定部21は、ステップS43で取得した「中間値」のうち、ステップS50で記録先が登録されなかった「中間値」の記録先を、縦明細データテーブル10−10と決定して縦横記録先データテーブル10−11に登録する。縦横記録先決定部21は、ステップS51が終了すると、ステップS48へ処理を移す。
【0101】
他方、ステップS52では、縦横記録先決定部21は、「算出値」および「中間値」の記録先を縦明細データテーブル10−10と決定して縦横記録先データテーブル10−11に登録する。ステップS52が終了すると、縦横記録先決定部21は、ステップS49へ処理を移す。
【0102】
実施例3にかかる縦横記録先決定処理では、「給与項目」に対応する「中間値」を横明細データテーブル10−9に記録すると決定し、「算出値」を縦明細データテーブル10−10に記録すると決定する。そして、実施例3にかかる縦横記録先決定処理では、横明細データテーブル10−9のデータ記録先として未決定のフィールドが不足した場合には、「中間値」も縦明細データテーブル10−10に記録すると決定する。
【0103】
よって、実施例3によれば、膨大な数の「中間値」が算出される場合であっても、RDBの処理性能の劣化を抑制しつつ、「給与項目」の「算出値」および「中間値」の数を上限なく取り扱って給与データの算出を行うことができる。また、実施例3によれば、アクセス効率が比較的よい横明細データテーブル10−9に「中間値」を記録することから、例えば「算出値」の検算や「算出値」の算出基礎の変更等にかかる「算出値」の再計算の際に、効率的に処理を実行することができる。
【0104】
(実施例3の変形例)
上述のステップS50〜S51では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が「中間値」の数=C未満の場合、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数の全てを「中間値」の記録先とし、横明細データテーブル10−9に記録し切れない残りの「中間値」の記録先を縦明細データテーブル10−10と決定する。しかし、これに限られず、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が「中間値」の数=C以上である場合にのみ、「中間値」の記録先を横明細データテーブル10−9と決定してもよい。
【0105】
また、実施例3にかかる縦横記録先決定処理において、ステップS47とステップS48とは、処理順序を入れ替えてもよい。
【実施例4】
【0106】
図18は、実施例4にかかる縦横記録先決定処理の一例を示すフローチャートである。実施例4にかかる縦横記録先決定処理では、先ず、「給与項目」の「算出値」および「中間値」を横明細データテーブル10−9に優先して記録すると決定し、その情報を縦横記録先データテーブル10−11に登録する。そして、縦横記録先決定部21は、横明細データテーブル10−9にデータ記録先として未決定のフィールドが存在しなくなった際に記録対象の新たな「算出値」が算出された場合には、横明細データテーブル10−9に記録されている1以上の「中間値」を縦明細データテーブル10−10に移動させる。そして、縦横記録先決定部21は、移動させた「中間値」が記録されていた横明細データテーブル10−9のフィールドに新たな「算出値」を記録すると決定し、それらの情報を縦横記録先データテーブル10−11に登録する。
【0107】
実施例4にかかる縦横記録先決定処理におけるステップS61〜S63ぞれぞれは、実施例1にかかる縦横記録先決定処理のステップS11〜S13と同様である。ステップS62〜S68では、縦横記録先決定部21は、ステップS61で取得した各「給与項目」に対応する「算出値」および「中間値」の両方を横明細データテーブル10−9に優先して記録すると決定し、その情報を縦横記録先データテーブル10−11に登録する。そして、縦横記録先決定部21は、横明細データテーブル10−9にデータ記録先として未決定のフィールドが存在しなくなった場合には、「算出値」も縦明細データテーブル10−10に記録するとし、その情報を縦横記録先データテーブル10−11に登録する。
【0108】
ステップS64では、縦横記録先決定部21は、ステップS63で取得した「算出値」および「中間値」の合計数=Dを算出する。次に、ステップS65では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0より大であるか(存在するか)否かを判定する。縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0より大である(存在する)場合(ステップS65Yes)、ステップS66へ処理を移す。一方、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が0である(存在しない)場合(ステップS65No)、ステップS69へ処理を移す。
【0109】
次に、ステップS66では、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が、ステップS64で算出した「算出値」および「中間値」の合計数=D以上か否かを判定する。縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が、ステップS64で算出した「算出値」および「中間値」の合計数=D以上である場合(ステップS66Yes)、ステップS67へ処理を移す。一方、縦横記録先決定部21は、横明細データテーブル10−9のデータ記録先として未決定のフィールドの残数が、ステップS64で算出した「算出値」および「中間値」の合計数=D未満である場合(ステップS66No)、ステップS71へ処理を移す。
【0110】
次に、ステップS68では、縦横記録先決定部21は、ステップS61で取得した全ての「給与項目」について、ステップS62〜S67、S69〜S73の処理を実行したか否かを判定する。縦横記録先決定部21は、ステップS61で取得した全ての「給与項目」について、ステップS62〜S67、S69〜S73の処理を実行した場合(ステップS68Yes)、実施例4にかかる縦横記録先決定処理を終了する。
【0111】
一方、縦横記録先決定部21は、ステップS61で取得した全ての「給与項目」について、ステップS62〜S67、S69〜S73の処理を実行していない場合(ステップS68No)、ステップS62へ処理を移す。縦横記録先決定部21は、ステップS68から処理を移したステップS62において、前回の実行の際に月例給与項目マスタテーブル10−1から選択した「給与項目」の次の「計算順序」の「給与項目」を選択する。
【0112】
他方、ステップS69では、縦横記録先決定部21は、記録先が横明細データテーブル10−9として登録されている「中間値」が縦横記録先データテーブル10−11に存在するか否かを判定する。縦横記録先決定部21は、記録先が横明細データテーブル10−9として登録されている「中間値」が縦横記録先データテーブル10−11に存在する場合(ステップS69Yes)、ステップS70へ処理を移す。一方、縦横記録先決定部21は、記録先が横明細データテーブル10−9として登録されている「中間値」が縦横記録先データテーブル10−11に存在しない場合(ステップS69No)、ステップS73へ処理を移す。
【0113】
次に、ステップS70では、縦横記録先決定部21は、縦縦横記録先データテーブル10−11において、記録先が横明細データテーブル10−9として登録されている「中間値」のいずれか1つの記録先の登録を、縦明細データテーブル10−10へ変更する。この結果、縦横記録先データテーブル10−11において、記録先として登録可能な横明細データテーブル10−9のフィールドが1つ分だけ確保される。
【0114】
次に、ステップS71では、縦横記録先決定部21は、ステップS63で取得した「算出値」の記録先を横明細データテーブル10−9と決定して縦横記録先データテーブル10−11に登録する。ステップS71では、ステップS70の後の実行であれば、「中間値」の記録先が横明細データテーブル10−9から縦明細データテーブル10−10へ変更されて確保された横明細データテーブル10−9のフィールドが、新たな「算出値」の記録先として登録されることになる。
【0115】
次に、ステップS72では、縦横記録先決定部21は、ステップS63で取得した「中間値」の記録先を縦明細データテーブル10−10と決定して縦横記録先データテーブル10−11に登録する。縦横記録先決定部21は、ステップS72が終了すると、ステップS68へ処理を移す。
【0116】
他方、ステップS73では、縦横記録先決定部21は、ステップS63で取得した「算出値」および「中間値」の記録先を縦明細データテーブル10−10と決定して縦横記録先データテーブル10−11に登録する。縦横記録先決定部21は、ステップS73が終了すると、ステップS68へ処理を移す。
【0117】
実施例4にかかる縦横記録先決定処理では、「給与項目」に対応する「算出値」および「中間値」を横明細データテーブル10−9に記録すると決定する。そして、実施例4にかかる縦横記録先決定処理では、横明細データテーブル10−9のデータ記録先として未決定のフィールドが不足した場合には、既に記録先が横明細データテーブル10−9として決定済の「中間値」の記録先を、縦明細データテーブル10−10に変更すると決定し、新たな「算出値」を、確保された横明細データテーブル10−9のフィールドに記録する。
【0118】
よって、実施例4によれば、「算出値」を優先的に横明細データテーブル10−9に記録してもなお横明細データテーブル10−9に余裕がある場合に、一部または全部の「中間値」を横明細データテーブル10−9に記録することができる。よって、「算出値」および「中間値」の記録効率の両立を図ることができる。
【0119】
(実施例4の変形例)
上述のステップS70では、縦横記録先決定部21は、縦横記録先データテーブル10−11において、横明細データテーブル10−9から縦明細データテーブル10−10へ記録先を変更する対象の「中間値」は、予め付与されている優先度に応じて決定してもよい。すなわち、上述のステップS70では、縦横記録先決定部21は、縦横記録先データテーブル10−11において、横明細データテーブル10−9から縦明細データテーブル10−10へ、優先度が最も低い「中間値」を記録先を変更する対象として決定してもよい。
【0120】
また、上述のステップS70では、縦横記録先決定部21は、縦横記録先データテーブル10−11において、記録先が横明細データテーブル10−9として登録されている「中間値」のいずれか1つの記録先を、縦明細データテーブル10−10へ変更する。しかし、これに限られず、縦横記録先決定部21は、縦横記録先データテーブル10−11において、記録先が横明細データテーブル10−9として登録されている「中間値」の複数の記録先を、縦明細データテーブル10−10へ変更するとしてもよい。
【0121】
また、実施例4にかかる縦横記録先決定処理において、ステップS71とステップS72とは、処理順序を入れ替えてもよい。
【0122】
(その他の実施形態)
以上、実施例1〜4を含む実施形態について説明したが、開示技術は上述した実施例1〜4を含む実施形態以外にも、種々の異なる形態にて実施されてよい。そこで、以下にその他の実施形態を説明する。
【0123】
上述の実施例1〜4を含む実施形態では、「算出値」を横明細データテーブル10−9および縦明細データテーブル10−10のいずれか一方に記録する。しかし、これに限られず、「算出値」を横明細データテーブル10−9および縦明細データテーブル10−10の両方に記録してもよい。例えば、「給与項目」が“その他支給”や“その他控除”である場合、縦明細データテーブル10−10にその内訳として「中間値」を記録するが、内訳として重要度が高いとする「中間値」を、縦明細データテーブル10−10とともに、横明細データテーブル10−9にも記録してもよい。このようにすることで、「中間値」であっても、重要な「中間値」は、横明細データテーブル10−9を参照して迅速に取得することができる。
【0124】
(ハードウェアおよび給与データ計算プログラム)
図19は、給与データ計算プログラムを実行するコンピュータを示す図である。図19は、図1等に示す給与データ計算装置1のハードウェア構成を示す。図19に示すように、コンピュータ1は、CPU(Central Processing Unit)2、メモリ3、外部記憶装置4、通信インタフェース5を有する。また、図19に示した各部は、バス(不図示)等で相互に接続される。
【0125】
通信インタフェース5は、ネットワークインタフェースカード等である。外部記憶装置4は、HDD(Hard Disk Drive)等の磁気記憶装置やSSD(Solid State Drive)等の半導体記憶装置であり、図2図12に示す各テーブル、図13図18に示す処理をコンピュータ1に実行させるプログラムを記憶する。外部記録装置4は、ROM(Read Only Memory)、RAM、CD−ROM等の他のコンピュータが読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせる装置であってもよい。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをコンピュータ1の記憶装置に格納して用いてもよい。
【0126】
CPU2は、図1に示した制御部20の各部と同様の処理を実行するプログラムを外部記憶装置4等から読み出してメモリ3に展開することで、コンピュータ1に、図13図18に示す処理を実行するプロセスを動作させる。すなわち、CPU2は、縦横記録先決定部21、給与項目記録処理部22、給与項目算出処理部23と同様の機能を有するプログラムを外部記憶装置4等から読み出す。そして、CPU2は、制御部20の各部と同様の処理を実行するプロセスを実行する。
【0127】
このように、コンピュータ1は、プログラムを読み出して実行することで給与データ計算方法を実行する情報処理装置として動作する。また、コンピュータ1は、媒体読取装置によって記録媒体から上述のプログラムを読み出し、読み出されたプログラムを実行することで上述の実施例1〜4を含む実施形態と同様の機能を実現することができる。なお、このプログラムは、コンピュータ1によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、開示技術を同様に適用することができる。
【符号の説明】
【0128】
1 コンピュータ
2 CPU
3 メモリ
4 外部記憶装置
5 通信インタフェース
10 記憶部
10−1 月例給与項目マスタテーブル
10−2 月例給与支給データテーブル
10−3 従業員マスタテーブル
10−4 従業員勤怠データテーブル
10−5 給与体系マスタテーブル
10−6 役職手当マスタテーブル
10−7 家族手当マスタテーブル
10−8 算出式マスタテーブル
10−9 横明細データテーブル
10−10 縦明細データテーブル
10−11 縦横記録先データテーブル
20 制御部
21 縦横記録先決定部
22 給与項目記録処理部
23 給与項目算出処理部
100 給与データ計算装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19