diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 1e7e93fa..5c9a9f4a 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -115,7 +115,7 @@ def add_clins(task_order_id): @user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") def update_clins(task_order_id): form_data = {**http_request.form} - next_page = "task_orders.review_task_order" + next_page = "task_orders.review" current_template = "task_orders/step_3.html" return update_task_order( @@ -123,6 +123,14 @@ def update_clins(task_order_id): ) +@task_orders_bp.route("/task_orders//step_4") +@user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") +def review(task_order_id): + return render_task_orders_edit( + "task_orders/step_4.html", task_order_id=task_order_id + ) + + @task_orders_bp.route("/portfolios//task_orders/new") @task_orders_bp.route("/task_orders//edit") @user_can(Permissions.CREATE_TASK_ORDER, message="view new task order form") diff --git a/templates/task_orders/step_3.html b/templates/task_orders/step_3.html index af912b73..a893c110 100644 --- a/templates/task_orders/step_3.html +++ b/templates/task_orders/step_3.html @@ -2,6 +2,7 @@ {% from 'components/date_picker.html' import DatePicker %} {% from 'components/icon.html' import Icon %} +{% from 'components/options_input.html' import OptionsInput %} {% from "components/sticky_cta.html" import StickyCTA %} {% from 'components/text_input.html' import TextInput %} diff --git a/templates/task_orders/step_4.html b/templates/task_orders/step_4.html new file mode 100644 index 00000000..1c06804c --- /dev/null +++ b/templates/task_orders/step_4.html @@ -0,0 +1,119 @@ +{% extends "portfolios/base.html" %} + +{% from "components/icon.html" import Icon %} +{% from "components/semi_collapsible_text.html" import SemiCollapsibleText %} +{% from "components/sticky_cta.html" import StickyCTA %} +{% from "components/totals_box.html" import TotalsBox %} + +{% block portfolio_content %} + {% set action = url_for("task_orders.update_number", task_order_id=task_order_id) %} + +
+ {{ form.csrf_token }} + + {% call StickyCTA(text=('task_orders.form.sticky_header_text' | translate )) %} + + + Next: Submit Task Order + + + + {{ "common.cancel" | translate }} + + + {% endcall %} + + {% include "fragments/flash.html" %} + +
+ + {{ SemiCollapsibleText() }} + +
+ +
+ {{ "task_orders.review.review_your_task_order" | translate }} +
+

+ {{ "task_orders.review.check_paragraph" | translate }} +

+
+
+
+ {{ "task_orders.review.task_order_number" | translate }} +
+
{{task_order.number}}
+ +
+ +
+ {{ "task_orders.review.funding_summary" | translate }} +
+ + {% for clin in task_order.clins %} +
+ {{ "{}".format(clin.jedi_clin_type) | translate}} +
+ + + + + + + + + + + + + + + + + + + + +
{{ "task_orders.review.clins.amount" | translate }}{{ "task_orders.review.clins.obligated" | translate }}{{ "task_orders.review.clins.pop_start" | translate }}{{ "task_orders.review.clins.pop_end" | translate }}{{ "task_orders.review.clins.loa" | translate }}
{{ clin.obligated_amount | dollars }} + {% if clin.is_obligated() %} + {{ "common.yes" | translate }} + {% else %} + {{ "common.no" | translate }} + {% endif %} + {{ clin.start_date | formattedDate }}{{ clin.end_date | formattedDate }} + {% for loa in clin.loas %} + + {{ loa }} + +
+ {% endfor %} +
+ {% endfor %} + +
+ +
+ {{ "task_orders.review.supporting_document.title" | translate }} +
+ +
+ {{ TotalsBox(task_order=task_order) }} + +
+
+
+{% endblock %} diff --git a/tests/routes/task_orders/test_new.py b/tests/routes/task_orders/test_new.py index a6e77f75..3b3abfc6 100644 --- a/tests/routes/task_orders/test_new.py +++ b/tests/routes/task_orders/test_new.py @@ -101,6 +101,12 @@ def test_task_orders_update_clins(client, user_session, task_order): assert len(task_order.clins) == 2 +def test_task_orders_review(client, user_session, task_order): + user_session(task_order.creator) + response = client.get(url_for("task_orders.review", task_order_id=task_order.id)) + assert response.status_code == 200 + + def test_task_orders_new_flow(): pass