![見出し画像](https://assets.st-note.com/production/uploads/images/133804858/rectangle_large_type_2_8c48e4d709abf960a2b8e983218b64ba.jpeg?width=1200)
「取り寄せ品」休日を除外した、入荷までの平均日数を出す
「取り寄せ品」の納期確認に関するお問い合わせが多く、これまではお客様からのメールを受け取り次第、メーカーに通知し、その返答をお待ちいただいてからご連絡しておりました。
しかし、お問い合わせの件数が増えたことで、メールを担当するスタッフとメーカーの双方に負担が大きくなってしまい、結果としてお客様にも長時間お待ちいただく状況が生じておりました。
この問題を解決するために、当社では過去2週間の販売データを基に、土日及び祝日を除外した発注から入荷までの平均所要日数を、お知らせするツールを開発しました。
このツールを使用することで、従来のように複数の工程を経ることなく、お客様には数分で返答が可能となり、大幅な時間短縮を実現しました。
ただし、このツールを適切に機能させるためには、「休日_テーブル」と「納期確認テーブル」の準備が必要です。
これは、企業ごとに異なる祝日を考慮に入れる必要があるためです。
休日_テーブルには、例えば「2024/03/04」のように、休日を列挙していただく必要があります。
納期を確認したい製品番号については、過去2週間の「発注日」と「入荷日」を「納期確認テーブル」にクエリで追加し
下記のコードを用いることで、土日及び祝日を除外した「入荷までの日数」を算出できます。
これにより、より迅速かつ正確に納期の情報を提供できるようになりました。
これがうまくいけば、さらに進化した自動応答もしくは、直接確認に切り替えたいと思います。
実際の通知内容
トヨタ 7555268020
商品の納期について、お伝えいたします。
こちらの、商品は平均して約(1)日間で入荷しております。
※土日・祝祭日は除きます。
こちらの日数は過去2週間のデータに基づく推定であり
突発的なメーカーの在庫切れなど、予期せぬ事態には対応が
難しい場合がありますので、その点はご理解お願いします。
Microsoft Accessで使用しております。
・納期確認テーブル (過去2週間分のデータ)
![](https://assets.st-note.com/img/1710314690187-orjkGMCYD4.jpg?width=1200)
・休日_テーブル
![](https://assets.st-note.com/img/1710314719151-JXmiFE50bK.jpg)
Public Function CalculateWorkingDays() As Integer
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String
Dim startDate As Date
Dim endDate As Date
Dim totalDays As Integer
Dim nonWorkingDays As Integer
Dim currentDay As Date
Dim i As Integer ' この行を追加
Set db = CurrentDb()
' 納期確認テーブルを開く
sql = "SELECT * FROM [納期確認テーブル]"
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
If Not rs.EOF Then
rs.MoveFirst
Do Until rs.EOF
startDate = rs!発注日
endDate = rs!入荷日
totalDays = DateDiff("d", startDate, endDate)
nonWorkingDays = 0
' 開始日と終了日の間の土日と祝祭日をカウント
For i = 0 To totalDays
currentDay = DateAdd("d", i, startDate)
' 土曜日または日曜日の場合
If Weekday(currentDay) = vbSaturday Or Weekday(currentDay) = vbSunday Then
nonWorkingDays = nonWorkingDays + 1
Else
' 祝祭日の場合
If Not IsNull(DLookup("休日", "休日_テーブル", "休日 = #" & Format(currentDay, "mm/dd/yyyy") & "#")) Then
nonWorkingDays = nonWorkingDays + 1
End If
End If
Next i
' 実労働日数を計算して入荷までの日数に保存
rs.Edit
rs!入荷までの日数 = totalDays - nonWorkingDays
rs.Update
rs.MoveNext
Loop
End If
rs.Close
Set rs = Nothing
Set db = Nothing
End Function
この記事が気に入ったらサポートをしてみませんか?