diff --git a/pkg/assets/notifications/templates/move_counseled_template.html b/pkg/assets/notifications/templates/move_counseled_template.html index e1b01755e8d..0af5621ff79 100644 --- a/pkg/assets/notifications/templates/move_counseled_template.html +++ b/pkg/assets/notifications/templates/move_counseled_template.html @@ -7,7 +7,16 @@

Next steps for a PPM:

diff --git a/pkg/assets/notifications/templates/move_counseled_template.txt b/pkg/assets/notifications/templates/move_counseled_template.txt index 315f7931990..86bad0c36a3 100644 --- a/pkg/assets/notifications/templates/move_counseled_template.txt +++ b/pkg/assets/notifications/templates/move_counseled_template.txt @@ -6,7 +6,14 @@ What this means to you: If you are doing a Personally Procured Move (PPM), you can start moving your personal property. Next steps for a PPM: - * Remember to get legible certified weight tickets for both the empty and full weights for every trip you perform. If you do not upload legible certified weight tickets, your PPM incentive could be affected. + {{if .ActualExpenseReimbursement}} + * Please Note: Your PPM has been designated as Actual Expense Reimbursement. This is the standard entitlement for Civilian employees. For uniformed Service Members, your PPM may have been designated as Actual Expense Reimbursement due to failure to receive authorization prior to movement or failure to obtain certified weight tickets. Actual Expense Reimbursement means reimbursement for expenses not to exceed the Government Constructed Cost (GCC). + {{end}} + * Remember to get legible certified weight tickets for both the empty and full weights for every trip you perform. If you do not upload legible certified weight tickets, your PPM incentive(or Actual Expense Reimbursement for Civilians) could be affected. Failure to obtain weight tickets will result in losing eligibility to receive your incentive. +Note: To receive allowance for Pro-Gear, you must identify allowable items and provide weight tickets separately for Pro-Gear. + * For authorized storage: + * You will need to get weight ticket(s) for the items you store. + * Storage costs cannot be paid in advance. * If your counselor approved an Advance Operating Allowance (AOA, or cash advance) for a PPM, log into MilMove <{{.MyMoveLink}}> to download your AOA Packet, and submit it to finance according to the instructions provided by your counselor. If you have been directed to use your government travel charge card (GTCC) for expenses no further action is required. * Once you complete your PPM, log into MilMove <{{.MyMoveLink}}>, upload your receipts and weight tickets, and submit your PPM for review. diff --git a/pkg/factory/address_factory_test.go b/pkg/factory/address_factory_test.go index ac8e8851533..b63a5a7ec6f 100644 --- a/pkg/factory/address_factory_test.go +++ b/pkg/factory/address_factory_test.go @@ -55,8 +55,8 @@ func (suite *FactorySuite) TestBuildAddress() { City: customCity, State: customState, PostalCode: customPostalCode, - IsOconus: models.BoolPointer(false), County: customCounty, + IsOconus: models.BoolPointer(false), }, }, { diff --git a/pkg/notifications/move_counseled.go b/pkg/notifications/move_counseled.go index 0edd50b2dea..9742b59fc32 100644 --- a/pkg/notifications/move_counseled.go +++ b/pkg/notifications/move_counseled.go @@ -80,15 +80,23 @@ func (m MoveCounseled) emails(appCtx appcontext.AppContext) ([]emailContent, err destinationAddress = fmt.Sprintf("%s%s%s, %s, %s %s", mtoShipDestinationAddress.StreetAddress1, streetAddr2, streetAddr3, mtoShipDestinationAddress.City, mtoShipDestinationAddress.State, mtoShipDestinationAddress.PostalCode) } + actualExpenseReimbursement := false + for i := 0; i < len(move.MTOShipments); i++ { + if move.MTOShipments[i].PPMShipment.IsActualExpenseReimbursement != nil && *move.MTOShipments[i].PPMShipment.IsActualExpenseReimbursement { + actualExpenseReimbursement = true + } + } + if serviceMember.PersonalEmail == nil { return emails, fmt.Errorf("no email found for service member") } htmlBody, textBody, err := m.renderTemplates(appCtx, MoveCounseledEmailData{ - OriginDutyLocation: originDutyLocationName, - DestinationLocation: destinationAddress, - Locator: move.Locator, - MyMoveLink: MyMoveLink, + OriginDutyLocation: originDutyLocationName, + DestinationLocation: destinationAddress, + Locator: move.Locator, + MyMoveLink: MyMoveLink, + ActualExpenseReimbursement: actualExpenseReimbursement, }) if err != nil { @@ -122,10 +130,11 @@ func (m MoveCounseled) renderTemplates(appCtx appcontext.AppContext, data MoveCo } type MoveCounseledEmailData struct { - OriginDutyLocation *string - DestinationLocation string - Locator string - MyMoveLink string + OriginDutyLocation *string + DestinationLocation string + Locator string + MyMoveLink string + ActualExpenseReimbursement bool } // RenderHTML renders the html for the email diff --git a/pkg/notifications/move_counseled_test.go b/pkg/notifications/move_counseled_test.go index c7cd4cd4149..9c5343d65cd 100644 --- a/pkg/notifications/move_counseled_test.go +++ b/pkg/notifications/move_counseled_test.go @@ -39,13 +39,44 @@ func (suite *NotificationSuite) TestMoveCounseledHTMLTemplateRender() { originDutyLocation := "origDutyLocation" s := MoveCounseledEmailData{ - OriginDutyLocation: &originDutyLocation, - DestinationLocation: "destDutyLocation", - Locator: "abc123", - MyMoveLink: MyMoveLink, + OriginDutyLocation: &originDutyLocation, + DestinationLocation: "destDutyLocation", + Locator: "abc123", + MyMoveLink: MyMoveLink, + ActualExpenseReimbursement: true, } - expectedHTMLContent := `

*** DO NOT REPLY directly to this email ***

This is a confirmation that your counselor has approved move details for the assigned move code abc123 from origDutyLocation to destDutyLocation in the MilMove system.

What this means to you:
If you are doing a Personally Procured Move (PPM), you can start moving your personal property.

Next steps for a PPM:

Next steps for government arranged shipments:

Thank you,
USTRANSCOM MilMove Team

The information contained in this email may contain Privacy Act information and is therefore protected under the Privacy Act of 1974. Failure to protect Privacy Act information could result in a $5,000 fine.

` + expectedHTMLContent := `

*** DO NOT REPLY directly to this email ***

+ +

This is a confirmation that your counselor has approved move details for the assigned move code abc123 from origDutyLocation to destDutyLocation in the MilMove system.

+ +

What this means to you:
+If you are doing a Personally Procured Move (PPM), you can start moving your personal property.

+ +

Next steps for a PPM: +

+ +

Next steps for government arranged shipments:
+

+

Thank you,
+USTRANSCOM MilMove Team

+ +

The information contained in this email may contain Privacy Act information and is therefore protected under the Privacy Act of 1974. Failure to protect Privacy Act information could result in a $5,000 fine.

` htmlContent, err := notification.RenderHTML(suite.AppContextWithSessionForTest(&auth.Session{ UserID: approver.ID, @@ -65,13 +96,38 @@ func (suite *NotificationSuite) TestMoveCounseledTextTemplateRender() { originDutyLocation := "origDutyLocation" s := MoveCounseledEmailData{ - OriginDutyLocation: &originDutyLocation, - DestinationLocation: "destDutyLocation", - Locator: "abc123", - MyMoveLink: MyMoveLink, + OriginDutyLocation: &originDutyLocation, + DestinationLocation: "destDutyLocation", + Locator: "abc123", + MyMoveLink: MyMoveLink, + ActualExpenseReimbursement: false, } - expectedTextContent := `*** DO NOT REPLY directly to this email *** This is a confirmation that your counselor has approved move details for the assigned move code abc123 from origDutyLocation to destDutyLocation in the MilMove system. What this means to you: If you are doing a Personally Procured Move (PPM), you can start moving your personal property. Next steps for a PPM: * Remember to get legible certified weight tickets for both the empty and full weights for every trip you perform. If you do not upload legible certified weight tickets, your PPM incentive could be affected. * If your counselor approved an Advance Operating Allowance (AOA, or cash advance) for a PPM, log into MilMove to download your AOA Packet, and submit it to finance according to the instructions provided by your counselor. If you have been directed to use your government travel charge card (GTCC) for expenses no further action is required. * Once you complete your PPM, log into MilMove , upload your receipts and weight tickets, and submit your PPM for review. Next steps for government arranged shipments: * Your move request will be reviewed by the responsible personal property shipping office and a move task order for services will be placed with HomeSafe Alliance. * Once this order is placed, you will receive an e-mail invitation to create an account in HomeSafe Connect (check your spam or junk folder). This is the system you will use to schedule your pre-move survey. * HomeSafe is required to contact you within one Government Business Day. Once contact has been established, HomeSafe is your primary point of contact. If any information about your move changes at any point during the move, immediately notify your HomeSafe Customer Care Representative of the changes. Remember to keep your contact information updated in MilMove. Thank you, USTRANSCOM MilMove Team The information contained in this email may contain Privacy Act information and is therefore protected under the Privacy Act of 1974. Failure to protect Privacy Act information could result in a $5,000 fine.` + expectedTextContent := `*** DO NOT REPLY directly to this email *** + +This is a confirmation that your counselor has approved move details for the assigned move code abc123 from origDutyLocation to destDutyLocation in the MilMove system. + +What this means to you: +If you are doing a Personally Procured Move (PPM), you can start moving your personal property. + +Next steps for a PPM: + * Remember to get legible certified weight tickets for both the empty and full weights for every trip you perform. If you do not upload legible certified weight tickets, your PPM incentive(or Actual Expense Reimbursement for Civilians) could be affected. Failure to obtain weight tickets will result in losing eligibility to receive your incentive. +Note: To receive allowance for Pro-Gear, you must identify allowable items and provide weight tickets separately for Pro-Gear. + * For authorized storage: + * You will need to get weight ticket(s) for the items you store. + * Storage costs cannot be paid in advance. + * If your counselor approved an Advance Operating Allowance (AOA, or cash advance) for a PPM, log into MilMove to download your AOA Packet, and submit it to finance according to the instructions provided by your counselor. If you have been directed to use your government travel charge card (GTCC) for expenses no further action is required. + * Once you complete your PPM, log into MilMove , upload your receipts and weight tickets, and submit your PPM for review. + +Next steps for government arranged shipments: + * Your move request will be reviewed by the responsible personal property shipping office and a move task order for services will be placed with HomeSafe Alliance. + * Once this order is placed, you will receive an e-mail invitation to create an account in HomeSafe Connect (check your spam or junk folder). This is the system you will use to schedule your pre-move survey. + * HomeSafe is required to contact you within one Government Business Day. Once contact has been established, HomeSafe is your primary point of contact. If any information about your move changes at any point during the move, immediately notify your HomeSafe Customer Care Representative of the changes. Remember to keep your contact information updated in MilMove. + +Thank you, +USTRANSCOM MilMove Team + +The information contained in this email may contain Privacy Act information and is therefore protected under the Privacy Act of 1974. Failure to protect Privacy Act information could result in a $5,000 fine.` textContent, err := notification.RenderText(suite.AppContextWithSessionForTest(&auth.Session{ UserID: approver.ID,