Skip to content

Commit f3cce36

Browse files
committed
NERC Prepay Credits file is now exported through PrepaymentProcessor
An optional argument, `export_NERC_credits` is added for testing purposes, to prevent the credits files from being written while running test cases
1 parent 5ab6185 commit f3cce36

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed

process_report/processors/prepayment_processor.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def PREPAY_DEBITS_S3_BACKUP_FILEPATH(self):
2727
prepay_contacts: pandas.DataFrame
2828
prepay_debits_filepath: str
2929
upload_to_s3: bool
30+
export_NERC_credits: bool = True # For testing purposes
3031

3132
@staticmethod
3233
def _load_prepay_debits(prepay_debits_filepath):
@@ -53,6 +54,9 @@ def _process(self):
5354
self._add_prepay_info()
5455
self._apply_prepayments()
5556

57+
if self.export_NERC_credits:
58+
credits_snapshot = self._get_prepay_credits_snapshot()
59+
self._export_prepay_credits_snapshot(credits_snapshot)
5660
self._export_prepay_debits()
5761
if self.upload_to_s3:
5862
self._export_s3_prepay_debits()
@@ -200,13 +204,33 @@ def _apply_prepayments(self):
200204
self.prepay_debits.loc[
201205
debit_entry_mask, invoice.PREPAY_DEBIT_FIELD
202206
] = prepay_amount_used
207+
208+
def _get_prepay_credits_snapshot(self):
209+
managed_groups_list = list()
210+
for group_name, group_dict in self.group_info_dict.items():
211+
if group_dict[invoice.PREPAY_MANAGED_FIELD]:
212+
managed_groups_list.append(group_name)
213+
214+
credits_mask = (
215+
self.prepay_credits[invoice.PREPAY_MONTH_FIELD] == self.invoice_month
216+
) & (
217+
self.prepay_credits[invoice.PREPAY_GROUP_NAME_FIELD].isin(
218+
managed_groups_list
219+
)
220+
)
221+
return self.prepay_credits[credits_mask]
203222

204223
def _backup_s3_prepay_debits(self):
205224
invoice_bucket = util.get_invoice_bucket()
206225
invoice_bucket.upload_file(
207226
self.prepay_debits_filepath, self.PREPAY_DEBITS_S3_BACKUP_FILEPATH
208227
)
209228

229+
def _export_prepay_credits_snapshot(self, credits_snapshot):
230+
credits_snapshot.to_csv(
231+
f"NERC_Prepaid_Group-Credits-{self.invoice_month}.csv", index=False
232+
)
233+
210234
def _export_prepay_debits(self):
211235
self.prepay_debits.to_csv(self.prepay_debits_filepath, index=False)
212236

process_report/tests/unit/processors/test_prepayment_processor.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,3 +429,26 @@ def test_two_group_one_project(self):
429429
answer_prepay_debits,
430430
invoice_month,
431431
)
432+
433+
def test_get_credit_snapshot(self):
434+
invoice_month = "2024-10"
435+
test_prepay_credits = self._get_test_prepay_credits(
436+
["2024-10", "2024-10", "2024-10", "2024-09", "2024-09"],
437+
["G1", "G2", "G3", "G1", "G2"],
438+
[0] * 5,
439+
)
440+
test_group_info_dict = {
441+
"G1": {"MGHPCC Managed": True},
442+
"G2": {"MGHPCC Managed": False},
443+
"G3": {"MGHPCC Managed": True},
444+
}
445+
answer_credits_snapshot = test_prepay_credits.iloc[[0, 2]]
446+
447+
new_prepayment_proc = test_utils.new_prepayment_processor(
448+
invoice_month=invoice_month
449+
)
450+
new_prepayment_proc.prepay_credits = test_prepay_credits
451+
new_prepayment_proc.group_info_dict = test_group_info_dict
452+
output_snapshot = new_prepayment_proc._get_prepay_credits_snapshot()
453+
454+
self.assertTrue(answer_credits_snapshot.equals(output_snapshot))

process_report/tests/util.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,5 @@ def new_prepayment_processor(
168168
prepay_contacts,
169169
prepay_debits_filepath,
170170
upload_to_s3,
171+
False,
171172
)

0 commit comments

Comments
 (0)