From 78d97885d6a583f9527bfa1bb12f5e74309cb524 Mon Sep 17 00:00:00 2001 From: Quan Pham Date: Thu, 25 Jul 2024 10:54:07 -0400 Subject: [PATCH 1/2] Added flowchart in README to illustrate exported invoices and their dependencies --- README.md | 4 ++++ invoice_flowchart.jpg | Bin 0 -> 55055 bytes 2 files changed, 4 insertions(+) create mode 100644 invoice_flowchart.jpg diff --git a/README.md b/README.md index c4ebc66..96a9953 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,10 @@ The processing script `process_report.py` takes in the monthly invoices and goes 4. Apply the New PI credit (more info below) 5. Exports the billable projects as one csv, by PI, for HU PIs only, for HU and BU PIs, and for projects with Lenovo SU Types +The flowchart below summarizes the invoices being created and their dependencies: + +![invoice flowchart](invoice_flowchart.jpg) + The CSV invoices must at least contain the following headers: - Invoice Month - Project - Allocation diff --git a/invoice_flowchart.jpg b/invoice_flowchart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8a88d7263fb858df4d014cad10911f5530bd3fa4 GIT binary patch literal 55055 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 Date: Thu, 25 Jul 2024 11:03:53 -0400 Subject: [PATCH 2/2] Update README --- README.md | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 96a9953..d0e86c0 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,12 @@ The processing script `process_report.py` takes in the monthly invoices and goes through several processing and exporting steps: 1. Combines all provided invoices (more info below) -2. Obtain each PI's institution name -3. Exports the list of non-billable projects (more info below) -4. Apply the New PI credit (more info below) -5. Exports the billable projects as one csv, by PI, for HU PIs only, for HU and BU PIs, and for projects with Lenovo SU Types +2. Check for PI aliases in invoices +3. Obtain each PI's institution name +4. Exports the non-billable invoice (more info below) and Lenovo invoice +5. Apply the New PI credit (more info below) +6. Exports the billable invoice +7. Export the HU-BU invoice, PI-specific invoice, and the BU Internal invoice which applies the BU subsidy The flowchart below summarizes the invoices being created and their dependencies: @@ -21,12 +23,14 @@ The CSV invoices must at least contain the following headers: - Cost ``` -usage: process_report.py [-h] --pi-file PI_FILE --projects-file PROJECTS_FILE --timed-projects-file TIMED_PROJECTS_FILE [--output-file OUTPUT_FILE] - [--output-folder OUTPUT_FOLDER] [--HU-invoice-file HU_INVOICE_FILE] [--HU-BU-invoice-file HU_BU_INVOICE_FILE] [--old-pi-file OLD_PI_FILE] - csv_files [csv_files ...] -process_report.py: error: the following arguments are required: csv_files, --pi-file, --projects-file, --timed-projects-file - -E.g. python process_report.py test1.csv test2.csv --pi-file pi.txt --projects-file projects.txt --timed-projects-file timed_projects.txt --output-file myfile.csv +usage: process_report.py [-h] [--fetch-from-s3] [--upload-to-s3] --invoice-month INVOICE_MONTH --pi-file PI_FILE --projects-file PROJECTS_FILE --timed-projects-file + TIMED_PROJECTS_FILE [--nonbillable-file NONBILLABLE_FILE] [--output-file OUTPUT_FILE] [--output-folder OUTPUT_FOLDER] + [--BU-invoice-file BU_INVOICE_FILE] [--HU-BU-invoice-file HU_BU_INVOICE_FILE] [--Lenovo-file LENOVO_FILE] [--old-pi-file OLD_PI_FILE] + [--alias-file ALIAS_FILE] --BU-subsidy-amount BU_SUBSIDY_AMOUNT + [csv_files ...] +process_report.py: error: the following arguments are required: --invoice-month, --pi-file, --projects-file, --timed-projects-file, --BU-subsidy-amount + +E.g. python process_report.py test1.csv test2.csv --invoice-month 2024-02 --pi-file pi.txt --projects-file projects.txt --timed-projects-file timed_projects.txt --BU-subsidy-amount 100 ``` ## New PI Credit