Skip to content

Commit

Permalink
Merge pull request #14735 from transcom/b-22289-fix-aoa-main
Browse files Browse the repository at this point in the history
B-22289 remove gtcc disbursement calculation from aoa
  • Loading branch information
cameroncaci authored Feb 5, 2025
2 parents 513491e + 73339c6 commit f6072a8
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,11 @@ func (SSWPPMComputer *SSWPPMComputer) FormatValuesShipmentSummaryWorksheet(shipm
A. the difference between the GTCC paid expenses and the GCC OR
B. the total member-paid expenses plus the member paid SIT
**/
if shipmentSummaryFormData.IsActualExpenseReimbursement {
if shipmentSummaryFormData.IsActualExpenseReimbursement && isPaymentPacket {
if shipmentSummaryFormData.PPMShipment.FinalIncentive == nil {
return services.Page1Values{}, services.Page2Values{}, services.Page3Values{}, fmt.Errorf("missing FinalIncentive: required for actual expense reimbursement (Order ID: %s)", shipmentSummaryFormData.Order.ID)
}

floatFinalIncentive := shipmentSummaryFormData.PPMShipment.FinalIncentive.ToDollarFloatNoRound() // FinalIncentive == ActualGCC

if sumGTCC < floatFinalIncentive { // There are funds left over after GTCC to pay out member expenses
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1452,7 +1452,7 @@ func (suite *ShipmentSummaryWorksheetServiceSuite) TestActualExpenseReimbursemen
// Also test for AOA instead of payment packet
page1Data, page2Data, Page3Data, err = sswPPMComputer.FormatValuesShipmentSummaryWorksheet(ssd, false)
suite.NoError(err)
suite.Equal(expectedDisbursementString(20000, 0), page2Data.Disbursement)
suite.Equal("N/A", page2Data.Disbursement)
suite.Equal("$0.00", page2Data.PPMRemainingEntitlement)

// Check PDF generation again
Expand Down Expand Up @@ -1485,7 +1485,7 @@ func (suite *ShipmentSummaryWorksheetServiceSuite) TestActualExpenseReimbursemen

page1Data, page2Data, Page3Data, err = sswPPMComputer.FormatValuesShipmentSummaryWorksheet(ssd, false)
suite.NoError(err)
suite.Equal(expectedDisbursementString(11500, 8500), page2Data.Disbursement)
suite.Equal("N/A", page2Data.Disbursement)
suite.Equal("$0.00", page2Data.PPMRemainingEntitlement)

test, info, err = ppmGenerator.FillSSWPDFForm(page1Data, page2Data, Page3Data)
Expand Down Expand Up @@ -1517,7 +1517,7 @@ func (suite *ShipmentSummaryWorksheetServiceSuite) TestActualExpenseReimbursemen

page1Data, page2Data, Page3Data, err = sswPPMComputer.FormatValuesShipmentSummaryWorksheet(ssd, false)
suite.NoError(err)
suite.Equal(expectedDisbursementString(11500, 3000), page2Data.Disbursement)
suite.Equal("N/A", page2Data.Disbursement)
suite.Equal("$0.00", page2Data.PPMRemainingEntitlement)

test, info, err = ppmGenerator.FillSSWPDFForm(page1Data, page2Data, Page3Data)
Expand Down Expand Up @@ -1992,3 +1992,70 @@ func (suite *ShipmentSummaryWorksheetServiceSuite) TestFormatDisbursement() {
result = formatDisbursement(expensesMap, ppmRemainingEntitlement)
suite.Equal(expectedResult, result)
}

func (suite *ShipmentSummaryWorksheetServiceSuite) TestAOAPaymentPacketWithNilFinalIncentive() {
mockPPMCloseoutFetcher := &mocks.PPMCloseoutFetcher{}
sswPPMComputer := NewSSWPPMComputer(mockPPMCloseoutFetcher)
fortGordon := factory.FetchOrBuildOrdersDutyLocation(suite.DB())
orderIssueDate := time.Date(2018, time.December, 21, 0, 0, 0, 0, time.UTC)
locator := "ABCDEF-01"

shipment := models.PPMShipment{
Shipment: models.MTOShipment{
ShipmentLocator: &locator,
},
IsActualExpenseReimbursement: models.BoolPointer(true),
}

order := models.Order{
IssueDate: orderIssueDate,
OrdersType: internalmessages.OrdersTypePERMANENTCHANGEOFSTATION,
OrdersNumber: models.StringPointer("012345"),
NewDutyLocationID: fortGordon.ID,
TAC: models.StringPointer("NTA4"),
SAC: models.StringPointer("SAC"),
HasDependents: true,
SpouseHasProGear: true,
}
storageExpense := models.MovingExpenseReceiptTypeStorage
contractedExpense := models.MovingExpenseReceiptTypeContractedExpense
movingExpenses := models.MovingExpenses{
{
MovingExpenseType: &contractedExpense,
PaidWithGTCC: models.BoolPointer(false),
},
{
MovingExpenseType: &contractedExpense,
PaidWithGTCC: models.BoolPointer(true),
},
{
MovingExpenseType: &storageExpense,
PaidWithGTCC: models.BoolPointer(false),
},
{
MovingExpenseType: &storageExpense,
PaidWithGTCC: models.BoolPointer(true),
},
}
signedCertType := models.SignedCertificationTypeCloseoutReviewedPPMPAYMENT
cert := models.SignedCertification{
CertificationType: &signedCertType,
CertificationText: "APPROVED",
Signature: "Firstname Lastname",
UpdatedAt: time.Now(),
PpmID: models.UUIDPointer(shipment.ID),
}
var certs []*models.SignedCertification
certs = append(certs, &cert)

ssd := models.ShipmentSummaryFormData{
Order: order,
MovingExpenses: movingExpenses,
PPMShipment: shipment,
SignedCertifications: certs,
IsActualExpenseReimbursement: true,
}
_, _, _, err := sswPPMComputer.FormatValuesShipmentSummaryWorksheet(ssd, true)
suite.Error(err)
suite.Contains(err.Error(), "missing FinalIncentive: required for actual expense reimbursement")
}

0 comments on commit f6072a8

Please sign in to comment.