{% extends "contracts/base.html" %}{% load rr %}{% block title %}{{ contract.number }}{% endblock %} {% block content %}

{{ contract.number }} {{ contract.customer }} · {{ contract.customer.get_region_display }}

{{ contract.description }} · {{ contract.start|date:"Y-m-d" }} → {{ contract.end|date:"Y-m-d" }} · {{ contract.currency }}{% if contract.parent %} · separate contract from {{ contract.parent.number }}{% endif %}

Modify contract
Billed to date{{ billed|money }}
Recognised to date{{ recognized|money }}
{% if net >= 0 %}Contract asset{% else %}Contract liability{% endif %}{{ net_abs|money }}
As of{{ asof|date:"Y-m-d" }}
{% if chart %}

Cumulative billing vs revenue

{% for t in chart.yticks %}{{ t.label }}{% endfor %} {% for t in chart.xticks %}{{ t.label }}{% endfor %}

Billing Revenue — gap above the revenue line is deferred revenue, below it is a contract asset.

{% endif %}

Performance obligations & allocation

{% for po in obligations %}{% endfor %}
PODescriptionPatternTermStatedSSPSSP basisRecognised before prospective modAllocated (total)
{{ po.key }}{{ po.name }}{{ po.get_pattern_display }}{{ po.start|date:"Y-m-d" }} → {{ po.end|date:"Y-m-d" }} {{ po.allocation.stated_price|money }}{{ po.allocation.ssp|money }}{{ po.allocation.ssp_source }}{{ po.allocation.recognized_before_mod|money }}{{ po.allocation.allocated|money }}

Lines

{% for l in lines %}{% endfor %}
LineProductQtyUnit priceAmountTermPOAdded by
{{ l.key }}{{ l.product.name }}{{ l.quantity|floatformat:-2 }}{{ l.unit_price|money }}{{ l.amount|money }}{{ l.start|date:"Y-m-d" }} → {{ l.end|date:"Y-m-d" }}{{ l.po_group }}{% if l.modification %}mod {{ l.modification.effective_date|date:"Y-m-d" }}{% endif %}
{% if contract.discount %}

Contract discount: {{ contract.discount|money }}

{% endif %}

Revenue schedule

{% for year, ms in years.items %}

{{ year }}

{% for m in ms %}{% endfor %}{% for po, row in grid.items %}{% for m in ms %}{% endfor %}{% endfor %}{% for m in ms %}{% endfor %}
PO{{ m|date:"M" }}
{{ po }}{{ row|get:m|money }}
Total{{ totals|get:m|money }}
{% endfor %}
{% if mods %}

Modifications

{% for m in mods %}{% endfor %}
EffectiveDescriptionTreatmentSuggestedConsideration changeCatch-upReasoning
{{ m.effective_date|date:"Y-m-d" }}{{ m.description }}{% if m.new_contract %} → {{ m.new_contract.number }}{% endif %}{{ m.get_kind_display }}{{ m.get_suggested_kind_display }}{{ m.consideration_change|money }}{{ m.impact.catch_up|money }}{{ m.reasoning }}
{% endif %}

Invoices

{% for i in invoices %}{% empty %}{% endfor %}
NumberDateAmountMemo
{{ i.number }}{{ i.date|date:"Y-m-d" }}{{ i.amount|money }}{{ i.memo }}
No invoices
{% csrf_token %}{% for f in invoice_form %}{% endfor %}

Variable consideration

{% for v in vc %}{% empty %}{% endfor %}
NameAs ofMethodScenariosEstimateIncluded (constrained)PO
{{ v.name }}{{ v.as_of|date:"Y-m-d" }}{{ v.get_method_display }}{% for s in v.scenarios %}{{ s.0 }} @ {{ s.1 }}{% if not forloop.last %}, {% endif %}{% endfor %}{{ v.estimate|money }}{{ v.constrained|money }}{{ v.target_po|default:"all" }}
None
{% csrf_token %}{% for f in vc_form %}{% endfor %}
{% if has_usage %}

Usage

{% for u in usage %}{% endfor %}
LineDateQuantity
L{{ u.line_id }}{{ u.date|date:"Y-m-d" }}{{ u.quantity|floatformat:-2 }}
{% csrf_token %}{% for f in usage_form %}{% endfor %}
{% endif %} {% if has_milestone %}

Milestones / % complete

{% for m in milestones %}{% endfor %}
LineDateMilestone% completeCost to dateEst. total cost
L{{ m.line_id }}{{ m.date|date:"Y-m-d" }}{{ m.name }}{% widthratio m.progress 1 100 %}%{{ m.cost_to_date|money }}{{ m.estimated_total_cost|money }}
{% csrf_token %}{% for f in milestone_form %}{% endfor %}
{% endif %}
{% endblock %}