From d69cd854dd498da2c425d674c94c33bc8c9f2336 Mon Sep 17 00:00:00 2001 From: Quan Pham Date: Wed, 4 Dec 2024 11:15:15 -0500 Subject: [PATCH] Added MOCA Prepaid Invoice This invoice has custom output filepaths for S3, and only lists projects belonging to prepay groups not managed by MGHPCC --- .../invoices/MOCA_prepaid_invoice.py | 41 +++++++++++++++++++ process_report/process_report.py | 6 +++ 2 files changed, 47 insertions(+) create mode 100644 process_report/invoices/MOCA_prepaid_invoice.py diff --git a/process_report/invoices/MOCA_prepaid_invoice.py b/process_report/invoices/MOCA_prepaid_invoice.py new file mode 100644 index 0000000..560f5bf --- /dev/null +++ b/process_report/invoices/MOCA_prepaid_invoice.py @@ -0,0 +1,41 @@ +from process_report.invoices import invoice +import process_report.util as util + + +class MOCAPrepaidInvoice(invoice.Invoice): + export_columns_list = [ + invoice.INVOICE_DATE_FIELD, + invoice.PROJECT_FIELD, + invoice.PROJECT_ID_FIELD, + invoice.PI_FIELD, + invoice.INVOICE_EMAIL_FIELD, + invoice.INVOICE_ADDRESS_FIELD, + invoice.INSTITUTION_FIELD, + invoice.INSTITUTION_ID_FIELD, + invoice.SU_HOURS_FIELD, + invoice.SU_TYPE_FIELD, + invoice.RATE_FIELD, + invoice.GROUP_NAME_FIELD, + invoice.GROUP_INSTITUTION_FIELD, + invoice.GROUP_BALANCE_FIELD, + invoice.COST_FIELD, + invoice.GROUP_BALANCE_USED_FIELD, + invoice.CREDIT_FIELD, + invoice.CREDIT_CODE_FIELD, + invoice.BALANCE_FIELD, + ] + + @property + def output_path(self) -> str: + return f"MOCA-A_Prepaid_Groups-{self.invoice_month}-Invoice.csv" + + @property + def output_s3_key(self) -> str: + return f"Invoices/{self.invoice_month}/MOCA-A_Prepaid_Groups-{self.invoice_month}-Invoice.csv" + + @property + def output_s3_archive_key(self): + return f"Invoices/{self.invoice_month}/Archive/MOCA-A_Prepaid_Groups-{self.invoice_month}-Invoice {util.get_iso8601_time()}.csv" + + def _prepare_export(self): + self.data = self.data[self.data[invoice.GROUP_MANAGED_FIELD] == False] # noqa: E712 diff --git a/process_report/process_report.py b/process_report/process_report.py index afcad8d..11e5f0e 100644 --- a/process_report/process_report.py +++ b/process_report/process_report.py @@ -14,6 +14,7 @@ NERC_total_invoice, bu_internal_invoice, pi_specific_invoice, + MOCA_prepaid_invoice, ) from process_report.processors import ( validate_pi_alias_processor, @@ -344,6 +345,10 @@ def main(): name=args.output_folder, invoice_month=invoice_month, data=processed_data.copy() ) + moca_prepaid_inv = MOCA_prepaid_invoice.MOCAPrepaidInvoice( + name="", invoice_month=invoice_month, data=processed_data.copy() + ) + util.process_and_export_invoices( [ lenovo_inv, @@ -352,6 +357,7 @@ def main(): nerc_total_inv, bu_internal_inv, pi_inv, + moca_prepaid_inv, ], args.upload_to_s3, )