{% extends "base.html" %} {% from "components/ui.html" import page_header %} {% block title %}{{ quote.title }} - {{ app_name }}{% endblock %} {% block content %} {% set breadcrumbs = [ {'text': 'Quotes', 'url': url_for('quotes.list_quotes')}, {'text': quote.quote_number} ] %} {% set actions_html %}
{{ quote.description }}
{% if quote.status == 'draft' %} {{ _('Draft') }} {% elif quote.status == 'sent' %} {{ _('Sent') }} {% elif quote.status == 'accepted' %} {{ _('Accepted') }} {% elif quote.status == 'rejected' %} {{ _('Rejected') }} {% elif quote.status == 'expired' %} {{ _('Expired') }} {% endif %}
{{ quote.client.name }}
{{ quote.payment_terms }}
| {{ _('Description') }} | {{ _('Quantity') }} | {{ _('Unit Price') }} | {{ _('Total') }} |
|---|---|---|---|
| {{ item.description }} | {{ "%.2f"|format(item.quantity) }} {% if item.unit %}{{ item.unit }}{% endif %} | {{ "%.2f"|format(item.unit_price) }} {{ quote.currency_code }} | {{ "%.2f"|format(item.total_amount) }} {{ quote.currency_code }} |
| {{ _('Subtotal') }}: | {{ "%.2f"|format(quote.subtotal) }} {{ quote.currency_code }} | ||
|
{{ _('Discount') }}
{% if quote.discount_type == 'percentage' %}
({{ "%.2f"|format(quote.discount_amount) }}%)
{% endif %}
{% if quote.coupon_code %}
- {{ quote.coupon_code }}
{% endif %}
{% if quote.discount_reason %}
({{ quote.discount_reason }}) {% endif %} |
-{{ "%.2f"|format(quote.discount_value) }} {{ quote.currency_code }} | ||
| {{ _('Subtotal After Discount') }}: | {{ "%.2f"|format(quote.subtotal_after_discount) }} {{ quote.currency_code }} | ||
| {{ _('Tax') }} ({{ "%.2f"|format(quote.tax_rate) }}%): | {{ "%.2f"|format(quote.tax_amount) }} {{ quote.currency_code }} | ||
| {{ _('Total') }}: | {{ "%.2f"|format(quote.total_amount) }} {{ quote.currency_code }} | ||
{{ quote.terms }}
{{ _('Approval not yet requested') }}
{% if quote.status == 'draft' and (current_user.is_admin or has_permission('edit_quotes')) %} {% endif %} {% elif quote.approval_status == 'pending' %}{{ _('Pending approval') }}
{% if current_user.is_admin or has_permission('approve_quotes') %}{{ _('Approved by') }} {{ quote.approver.full_name or quote.approver.username if quote.approver else 'N/A' }} {% if quote.approved_at %} {{ _('on') }} {{ quote.approved_at|user_datetime('%Y-%m-%d %H:%M') }} {% endif %}
{% elif quote.approval_status == 'rejected' %}{{ _('Rejected by') }} {{ quote.rejecter.full_name or quote.rejecter.username if quote.rejecter else 'N/A' }} {% if quote.rejected_at %} {{ _('on') }} {{ quote.rejected_at|user_datetime('%Y-%m-%d %H:%M') }} {% endif %}
{% if quote.rejection_reason %}{{ quote.rejection_reason }}
{% endif %} {% if quote.status == 'draft' and (current_user.is_admin or has_permission('edit_quotes')) %} {% endif %} {% endif %}{{ _('No comments yet. Start the conversation by adding the first comment.') }}
{{ _('Are you sure you want to delete this quote? This action cannot be undone.') }}