Githubに、全コード(Phase1~Phase3)をアップしております。
Github → https://github.com/Revolution2021/Auto_Calc_program
(尚、pz31.pyの19行目のメールアドレス部分だけを本物に差し替えれば動作します。)
下記に、本プロジェクトの全体像を記載します。
営業情報を元に、顧客別に請求金額を確定した上で(Phase1)、報告書を記載し(Phase2)、その報告書をメール送信する(Phase3)と言う一連の処理を完全自動化するプログラム開発に成功した。
必要なスキルは、主に、Python OpenpyxlとWin32com。
■処理の説明
あなたは、本作業を行う担当者とする。
1)あなたには、各月の製品ごとの顧客別販売記録が、下記の様な.csvファイルで、営業担当者から送付されてくる。(この例では、9社の購入情報データがあったと仮定)
=====================================
XXA12345612_monthly_20210601.csv
XXA34567821_monthly_20210601.csv
XXB23456734_monthly_20210601.csv
XXC36754355_monthly_20210601.csv
XXE56789030_monthly_20210601.csv
XXF12345622_monthly_20210601.csv
XXF12345855_monthly_20210601.csv
XXH34567877_monthly_20210601.csv
XXX12678910_monthly_20210601.csv
各.csvファイルは下記の様に記載されている。(それぞれのファイルでは、数百行から数千行の販売データが記録されている。尚、この例では、製品AとBの価格は同一とする。)
3)
下記の様な集計表を、一瞬で作成したい。(プログラム開発前は、20人日程度は掛かっていた。実際には、.csvファイルの数はもっと多かった為。)
尚、同じ製品でも、O社に販売する時と、P社に販売する時は価格が異なる。
また、Q社には、何個販売しても、弊品1個当たりの価格は不変であるが(つまり、Volume Discountは効かない。)、R社では、例えば、1000個までは単価500円だが、1001個以上は単価480円となり、5000個以上は単価400円となる様な、変則的な価格が適用される。
(それをLadder Priceとここでは呼ぶ。)
顧客リストとLadder Pirce適用状況、及び顧客別単価は、添付の”client list.xlsx”に記載している。
<Phase2>
上記Phase1の3)で作成したエクセルシートを元に、下記の様な報告書を自動作成する。
尚、報告書に記載する顧客は、4)で述べた、Ladder Priceを適用している顧客だけとする。
==============================
Mr. Tomas、
Hi, This is Jane.
Billing charge to each client of previous month(2021/05)is as below.
XXA12345612 : Tokyo co. unit number 28187 x price/unit 400 USD = Total_price 11,274,800 USD
XXA34567821 : Hong Kong Co. (Contract A) unit number 28187 x price/unit 320 USD = Total_price 9,019,840 USD
XXB23456734 : Oosaka co. unit number 32511 x price/unit 200 USD = Total_price 6,502,200 USD
XXE56789030 : Guam Co. unit number 68995 x price/unit 500 USD = Total_price 34,497,500 USD
Regards
=======================
<Phase3>
上記Phase2で作成した報告書を、メールで自動送信する。
今回は、メーラーはOutlookを使用したが、GmailやYahooメールでも、コードはほぼ同じである事を確認済。
■ プログラム説明
処理手順Phase1の3)に記載したSummary Sheetを自動作成するプログラム構成
処理手順Phase2に記載したメール本文を自動作成するプログラム構成
処理手順Phase3に記載したメール(Outlook)を自動送信するプログラム構成
■ 実行ファイル記載例
=======================
@rem .csvファイルのあるフォルダに移動
cd C:\Users\user_xxx\Documents\Auto_Calc_program
@rem 存在しているprocess.pyをrun
python process_final.py
@rem 存在しているprocess2.pyをrun
python process_final2.py
python pz31.py
@REM (for text copy to outlook)
start Outlook
@REM (Outlook Active)
python pz32.py
@REM (Click F9 key for sending email)
============================
以上です。