スマレジ・デベロッパーズ・コミュニティはアーカイブされました。


これまでに投稿いただいた内容は引き続きご覧いただけます。

今後のお問い合わせはこちら

totalPersonnelExpensesの計算式について

タイムカードAPIで返答されるtotalPersonnelExpensesについてですが、こちらは交通費を含まず給与のみの計算結果、という形でよろしいでしょうか?

また、totalPersonnelExpensesの計算方法は、各給与形態の場合以下の認識ですが、齟齬はありますでしょうか?

  1. 時給の場合:時給*Working Hoursの値
  2. 日給の場合:時間関係なく働いた場合は日給の値
  3. 月給の場合:月給をその月の平日日数で割った値

さらに、1の時給の場合、Working Hours × 時給としても少し値にずれがあるのですが、これは切り捨てられたWorking Hoursの分が換算されているのでしょうか?例えば以下の場合、従業員の時給は1000円で、24.2h働いているのですが、その場合,1000*24.2=24200円となるはずが24100円となっており、100円ほどずれる形です。

 ('division', 'result'),
 ('shiftStoreDaily[20210110][dailyTotalStaff]', '2'),
 ('shiftStoreDaily[20210110][dailyTotalHour]', '24.2'),
 ('shiftStoreDaily[20210110][dailyTotalMinute]', '1452'),
 ('shiftStoreDaily[20210110][staffs][0][staffId]', '5'),
 ('shiftStoreDaily[20210110][staffs][0][workingMinute]', '1452'),
 ('shiftStoreDaily[20210110][staffs][0][workingHour]', '24.2'),
 ('shiftStoreDaily[20210110][staffs][0][personnelExpenses]', '24100'),
 ('shiftStoreDaily[20210110][staffs][0][shifts][0][shiftResultId]', '5'),
 ('shiftStoreDaily[20210110][staffs][0][shifts][0][staffId]', '5'),
 ('shiftStoreDaily[20210110][staffs][0][shifts][0][staffName]', '会社2-従業員1'),
 ('shiftStoreDaily[20210110][staffs][0][shifts][0][attendance]', '2021-01-10 17:51:00'),
 ('shiftStoreDaily[20210110][staffs][0][shifts][0][leaving]', '2021-01-10 17:58:00'),
 ('shiftStoreDaily[20210110][staffs][0][shifts][1][shiftResultId]', '9'),
 ('shiftStoreDaily[20210110][staffs][0][shifts][1][staffId]', '5'),
 ('shiftStoreDaily[20210110][staffs][0][shifts][1][staffName]', '会社2-従業員1'),
 ('shiftStoreDaily[20210110][staffs][0][shifts][1][attendance]', '2021-01-10 18:41:00'),
 ('shiftStoreDaily[20210110][staffs][0][shifts][1][leaving]', '2021-01-11 18:40:00'),
 ('shiftStoreDaily[20210110][totalPersonnelExpenses]', '24100'),

ベストアンサー

  • @Naoto

    ご連絡が遅くなり大変申し訳ございません。

    また、ご連絡いただきましてありがとうございます。


    申し訳ございません。こちら調査を進めてみましたところ、

    ご指摘通り、こちらもバグであることが判明しました。


    原因ですが、現状`20210110``202010113`ともに以下の現象が発生しております。


    * {日付}->staffs内の`workingMinute`, `workingHour`の値が

    その日勤務した従業員全ての合計値が返されているバグが発生しております。


    補足として、


    `20210110`のデータですが、

    `dailyTotalStaff`には正しい値が返ってきておりますので、

    20210110に2名出勤されているようです。

    別件のバグにより、表示がされていないためわかりづらい状況ですが、もう1名の勤務時間が計測されているものかと考えられます。


    `20210113`のデータですが、こちらにつきましては先述の通り、

    `workingHour`,`workingMinute`にその日勤務した従業員全ての合計値が返されていることが原因となっております。


    本件も併せて1/27のリリースにて修正させていただきます。


    ご迷惑をお掛けし申し訳ございません。

    よろしくお願い致します。


    補足:修正後staffs内イメージとなります。

          "staffs": [
    
            {
    
              "staffId": 66,
    
              "workingMinute": 1446,
    
              "workingHour": 24.1,
    
              "personnelExpenses": "0",
    
              "shifts": [
    
                {
    
                  "shiftResultId": "215",
    
                  "staffId": "66",
    
                  "staffName": "xxx",
    
                  "attendance": "2021-01-04 17:51:00",
    
                  "leaving": "2021-01-04 17:58:00"
    
                },
    
                {
    
                  "shiftResultId": "224",
    
                  "staffId": "66",
    
                  "staffName": "xxx",
    
                  "attendance": "2021-01-04 18:41:00",
    
                  "leaving": "2021-01-05 18:40:00"
    
                }
    
              ]
    
            },
    
            {
    
              "staffId": 68,
    
              "workingMinute": 192,
    
              "workingHour": 3.2,
    
              "personnelExpenses": "3200",
    
              "shifts": [
    
                {
    
                  "shiftResultId": "219",
    
                  "staffId": "68",
    
                  "staffName": "zzz",
    
                  "attendance": "2021-01-04 11:00:00",
    
                  "leaving": "2021-01-04 14:12:00"
    
                }
    
              ]
    
            },
    

答え

  • January 2021 編集されました

    @Naoto

    返答が遅くなり、申し訳ございません。

    totalPersonnelExpensesですが、以下の計算で算出しております。

    月給:
    
        1ヶ月の労働賃金 / 1ヶ月の平均所定労働日数
    
    日給:
    
        その日の労働賃金
    
    時給:
    
        時給 × 労働時間
    
    

    月給・日給・時給すべてにおいて、時間外労働賃金が計算される仕組みとなっております。

    また、社会保険や手当等は含まれておりませんので、人件費概算として捉えていただけますと幸いです。


    計算結果につきましては基本的にタイムカード上の人件費と同様の結果の想定ですが、

    計算が合わないようでしたら、一度合わない時点でデータを変更せず、お問い合わせいただけますと幸いです。

  • @スマレジ 早川

    各計算式を説明下さりありがとうございます!交通費等の手当含まずの値とのこと、承知致しました。こちらタイムカードの登録データと突き合わせたところ、totalPersonnelExpensesの値の方は合っているようです。しかしながら、日別勤怠(事業所別合計)取得APIで返されるWorkingMinute, WorkingHourの方にデータの不整合があるようです。

    どの条件下で起きるのかは不明ですが、以下のサンプルデータのスクリーンショットと、APIで返されたデータの20210113と20210110のデータをご覧下さい。この従業員は時給1000円、時間外労働手当無しとしています。

    • 20210110のデータにおいて、dailyTotalMinuteは7+60*24-1で1446分 (24.1hour) が正しい値ですが、1452(24.2hour)と微妙なズレがございます。totalPersonnelExpensesの方の計算は実時間で計算されており、1446minで計算1000*1446/60=24100円となっています。
    • 20210113のデータにおいて、実労働時間は22.62hourですが、APIの返答では"workingMinute": "2695","workingHour": "44.9167"となっており、非常に大きな乖離がございます。こちらにおいても、totalPersonnelExpensesの方の計算は実時間で計算されており、1000*22.62=22617円として正しいようです。

    どちらのケースでも日をまたぐシフトにしているため、それが原因で計算がおかしいのでは、と推察しております。ご確認いただければ幸いです。

    {
      ...
      "shiftStoreDaily": {
       "20210110": {
        "dailyTotalStaff": "2",
        "dailyTotalHour": "24.2",
        "totalPersonnelExpenses": "24100",
        "dailyTotalMinute": "1452",
        "staffs": [
         {
          "workingMinute": "1452",
          "staffId": "5",
          "shifts": [
           {
            "staffName": "会社2-従業員1",
            "leaving": "2021-01-10 17:58:00",
            "staffId": "5",
            "attendance": "2021-01-10 17:51:00",
            "shiftResultId": "5"
           },
           {
            "staffName": "会社2-従業員1",
            "attendance": "2021-01-10 18:41:00",
            "staffId": "5",
            "shiftResultId": "9",
            "leaving": "2021-01-11 18:40:00"
           }
          ],
          "workingHour": "24.2",
          "personnelExpenses": "24100"
         }
        ]
       },
       "20210113": {
        "dailyTotalStaff": "2",
        "dailyTotalHour": "44.9167",
        "totalPersonnelExpenses": "22617",
        "dailyTotalMinute": "2695",
        "staffs": [
         {
          "staffId": "5",
          "workingMinute": "2695",
          "workingHour": "44.9167",
          "personnelExpenses": "22617",
          "shifts": [
           {
            "staffId": "5",
            "attendance": "2021-01-13 08:39:00",
            "staffName": "会社2-従業員1",
            "shiftResultId": "12",
            "leaving": "2021-01-14 07:16:00"
           }
          ]
         }
        ]
       }
      }
     }
    
  • @スマレジ 早川

    現象について、ご確認いただきまことにありがとうございます。また、迅速に原因を突き止めて下さり、ありがとうございました!😀

    現挙動と修正のリリース日の件、承知致しました。1/27のリリースでテストできるのを楽しみにしております。引き続きどうぞよろしくお願いいたします。

  • @スマレジ 早川

    お世話になっております。今日のリリースにて、workingMinute・workingHourの両値が従業員すべての値でなく、各従業員の値で返されることを確認いたしました。迅速なご対応ありがとうございました!

  • @Naoto 様

    ご連絡が遅くなり申し訳ございません。

    こちらご確認いただきましたとのこと、ご連絡ありがとうございます。