Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

B 21524 update counselor approved email int #14013

Merged
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion pkg/assets/notifications/templates/move_counseled_template.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,16 @@

<p><strong>Next steps for a PPM:</strong>
<ul>
<li>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.</li>
{{if .ActualExpenseReimbursement}}
<li>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).</li>
{{end}}
<li>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.</li>
<p>Note: To receive allowance for Pro-Gear, you must identify allowable items and provide weight tickets separately for Pro-Gear.</p>
<li>For authorized storage:</li>
<ul>
<li>You will need to get weight ticket(s) for the items you store.</li>
<li>Storage costs cannot be paid in advance.</li>
</ul>
<li>If your counselor approved an Advance Operating Allowance (AOA, or cash advance) for a PPM, log into <a href="{{.MyMoveLink}}">MilMove</a> 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.</li>
<li>Once you complete your PPM, log into <a href="{{.MyMoveLink}}">MilMove</a>, upload your receipts and weight tickets, and submit your PPM for review.</li>
</ul>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion pkg/factory/address_factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ func (suite *FactorySuite) TestBuildAddress() {
City: customCity,
State: customState,
PostalCode: customPostalCode,
IsOconus: models.BoolPointer(false),
County: customCounty,
IsOconus: models.BoolPointer(false),
},
},
{
Expand Down
25 changes: 17 additions & 8 deletions pkg/notifications/move_counseled.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}

taeJungCaci marked this conversation as resolved.
Show resolved Hide resolved
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 {
Expand Down Expand Up @@ -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
Expand Down
76 changes: 66 additions & 10 deletions pkg/notifications/move_counseled_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 := `<p>*** DO NOT REPLY directly to this email ***</p> <p>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.</p> <p>What this means to you:</br> If you are doing a Personally Procured Move (PPM), you can start moving your personal property.</p> <p><strong>Next steps for a PPM:</strong> <ul> <li>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.</li> <li>If your counselor approved an Advance Operating Allowance (AOA, or cash advance) for a PPM, log into <a href="https://my.move.mil/">MilMove</a> 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.</li> <li>Once you complete your PPM, log into <a href="https://my.move.mil/">MilMove</a>, upload your receipts and weight tickets, and submit your PPM for review.</li> </ul> <p><strong>Next steps for government arranged shipments:</strong></br> <ul> <li>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.</li> <li>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.</li> <li>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.</li> </ul> <p>Thank you,<br> USTRANSCOM MilMove Team</p> <p>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.</p>`
expectedHTMLContent := `<p>*** DO NOT REPLY directly to this email ***</p>

<p>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.</p>

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

<p><strong>Next steps for a PPM:</strong>
<ul>
<li>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).</li>
<li>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.</li>
<p>Note: To receive allowance for Pro-Gear, you must identify allowable items and provide weight tickets separately for Pro-Gear.</p>
<li>For authorized storage:</li>
<ul>
<li>You will need to get weight ticket(s) for the items you store.</li>
<li>Storage costs cannot be paid in advance.</li>
</ul>
<li>If your counselor approved an Advance Operating Allowance (AOA, or cash advance) for a PPM, log into <a href="https://my.move.mil/">MilMove</a> 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.</li>
<li>Once you complete your PPM, log into <a href="https://my.move.mil/">MilMove</a>, upload your receipts and weight tickets, and submit your PPM for review.</li>
</ul>

<p><strong>Next steps for government arranged shipments:</strong></br>
<ul>
<li>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.</li>
<li>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.</li>
<li>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.</li>
</ul>
<p>Thank you,<br>
USTRANSCOM MilMove Team</p>

<p>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.</p>`

htmlContent, err := notification.RenderHTML(suite.AppContextWithSessionForTest(&auth.Session{
UserID: approver.ID,
Expand All @@ -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 <https://my.move.mil/> 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 <https://my.move.mil/>, 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 <https://my.move.mil/> 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 <https://my.move.mil/>, 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,
Expand Down