{% extends "base.html" %} {% block title %}Campaigns - HM QC Platform{% endblock %} {% block content %}
Upload Campaign Presentation
The campaign number from the filename
Check if this PDF includes actual price values for validation
Campaign presentation (PDF) or media plan / price sheet (Excel)
Upload Pricing Reference

Upload a PDF (format reference) or Excel Mastersheet (actual prices per locale). Each reference is independent — pick one at configure time when running QC.

Campaign Presentations
{{ presentations|length }}
{% if presentations %}
{% for p in presentations %} {% endfor %}
Campaign Name File Status Pricing Uploaded
{{ p.campaign_id }} {{ p.campaign_name or '-' }} {{ p.pdf_filename[:40] }}{% if p.pdf_filename|length > 40 %}...{% endif %} {% if p.status == 'ready' %} Ready {% elif p.status == 'parsing' %} Parsing {% elif p.status == 'error' %} Error {% else %} Pending {% endif %} {% if p.has_pricing %} {% else %} {% endif %} {{ p.created_at.strftime('%Y-%m-%d %H:%M') if p.created_at else '-' }}
{% if p.status == 'ready' %} {% endif %}
{% else %}

No campaign presentations uploaded yet.

Upload a PDF to get started.

{% endif %}
Pricing References
{{ pricing_references|length }}
{% if pricing_references %}
{% for r in pricing_references %} {% endfor %}
Name File Status Entries Uploaded
{{ r.name }} {{ r.pdf_filename[:30] }}{% if r.pdf_filename|length > 30 %}...{% endif %} {% if r.status == 'ready' %} Ready {% elif r.status == 'parsing' %} Parsing {% elif r.status == 'error' %} Error {% else %} Pending {% endif %} {{ r.to_dict().entry_count if r.status == 'ready' else '-' }} {{ r.created_at.strftime('%Y-%m-%d %H:%M') if r.created_at else '-' }}
{% else %}

No pricing references uploaded yet.

Upload a pricing PDF to enable currency validation.

{% endif %}
{% endblock %} {% block extra_scripts %} {% endblock %}