diff --git a/atst/models/clin.py b/atst/models/clin.py index dd4bdd76..2bba6a3c 100644 --- a/atst/models/clin.py +++ b/atst/models/clin.py @@ -28,6 +28,15 @@ class CLIN(Base, mixins.TimestampsMixin): obligated_amount = Column(Numeric(scale=2), nullable=False) jedi_clin_type = Column(SQLAEnum(JEDICLINType, native_enum=False), nullable=False) + # + # NOTE: For now obligated CLINS are CLIN 1 + CLIN 3 + # + def is_obligated(self): + return self.jedi_clin_type in [ + JEDICLINType.JEDI_CLIN_1, + JEDICLINType.JEDI_CLIN_3, + ] + def to_dictionary(self): return { c.name: getattr(self, c.name) diff --git a/styles/elements/_icon_link.scss b/styles/elements/_icon_link.scss index 645e0112..f7d1b69e 100644 --- a/styles/elements/_icon_link.scss +++ b/styles/elements/_icon_link.scss @@ -82,6 +82,12 @@ @include icon-link-color($color-black-light, $color-gray-lightest); } + &.icon-link--download { + @include icon-link-color($color-black) .icon { + @include icon-color($color-green); + } + } + &.icon-link--disabled { opacity: 0.3; text-decoration: none; diff --git a/templates/portfolios/task_orders/review.html b/templates/portfolios/task_orders/review.html index e52d1704..51f9bec9 100644 --- a/templates/portfolios/task_orders/review.html +++ b/templates/portfolios/task_orders/review.html @@ -34,66 +34,74 @@
-
Review your task order
-

Check to make sure the information you entered is correct. After submission, you will confirm this task order was signed by a contracting officer. Thereafter, you will be informed as soon as CCPO completes their review.

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

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

-
Task order number - 10 digit found in your system of record
+
+ {{ "task_orders.review.task_order_number" | translate }} +
{{task_order.number}}

-
Funding summary
-
CLIN 1: Unclassified Cloud Services 001
+
+ {{ "task_orders.review.funding_summary" | translate }} +
+ + {% for clin in task_order.clins %} +
+ {{ "{}".format(clin.jedi_clin_type) | translate}} +
- - - - - + + + + + - - - - - - - -
AmountObligatedPoP StartPoP EndLOA{{ "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 }}
$500,000Yes9/07/199/07/2034820394
- -
CLIN 2: Unclassified Cloud Services 002
- - - - - - - - - - - - - - - - - - + + + + +
AmountObligatedPoP StartPoP EndLOA
$300,000No9/08/209/08/21q9384751934{{ 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 %}
-
Supporting document
-
{{ Icon('ok',classes="icon-validation") }}document
+
+ {{ "task_orders.review.supporting_document.title" | translate }} +
+
{{ TotalsBox(task_order=task_order) }} diff --git a/tests/models/test_clin.py b/tests/models/test_clin.py new file mode 100644 index 00000000..b3687b77 --- /dev/null +++ b/tests/models/test_clin.py @@ -0,0 +1,18 @@ +from atst.models import CLIN +from atst.models.clin import JEDICLINType + +from tests.factories import * + + +def test_is_obligated(): + clin_1 = CLINFactory.create(jedi_clin_type=JEDICLINType.JEDI_CLIN_1) + assert clin_1.is_obligated() + + clin_2 = CLINFactory.create(jedi_clin_type=JEDICLINType.JEDI_CLIN_2) + assert not clin_2.is_obligated() + + clin_3 = CLINFactory.create(jedi_clin_type=JEDICLINType.JEDI_CLIN_3) + assert clin_3.is_obligated() + + clin_4 = CLINFactory.create(jedi_clin_type=JEDICLINType.JEDI_CLIN_4) + assert not clin_4.is_obligated() diff --git a/translations.yaml b/translations.yaml index 84e42d25..9d824bb2 100644 --- a/translations.yaml +++ b/translations.yaml @@ -41,6 +41,8 @@ common: hide: Hide manage: manage members: Members + 'yes': 'Yes' + 'no': 'No' officer_helpers: underscore_to_friendly: contracting_officer: Contracting Officer @@ -606,6 +608,19 @@ requests: questions_title_text: Questions related to JEDI Cloud migration rationalization_software_systems_tooltip: Rationalization is the DoD process to determine whether the application should move to the cloud. task_orders: + review: + review_your_task_order: Review your task order + funding_summary: Funding summary + task_order_number: Task order number - 10 digit found in your system of record + check_paragraph: Check to make sure the information you entered is correct. After submission, you will confirm this task order was signed by a contracting officer. Thereafter, you will be informed as soon as CCPO completes their review. + supporting_document: + title: Supporting document + clins: + amount: Amount + obligated: Obligated + pop_start: PoP Start + pop_end: PoP End + loa: LOA form: draft_alert_title: Your information has been saved draft_alert_message: You can return to the Task Order Builder to enter missing information. Once you are finished, you’ll be ready to submit this request. @@ -731,6 +746,11 @@ task_orders: security: 'Security Officer ({security_officer}) completes a Security Requirements Document. Send a reminder' sign: 'Contracting Officer ({contracting_officer}) verifies funding to unlock cloud services.' whats_next: Here are the remaining steps to get your task order approved. +JEDICLINType: + JEDI_CLIN_1: 'CLIN 1:' + JEDI_CLIN_2: 'CLIN 2: Classified Cloud Services - 0002' + JEDI_CLIN_3: 'CLIN 3:' + JEDI_CLIN_4: 'CLIN 4:' testing: example_string: Hello World example_with_variables: 'Hello, {name}!'