Files
MES_Core/shiftflow/templates/shiftflow/writeoffs.html
2026-04-16 08:34:16 +03:00

150 lines
8.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends 'base.html' %}
{% block content %}
<div class="card border-secondary mb-3 shadow-sm">
<div class="card-body py-2">
<form method="get" class="row g-2 align-items-end">
<div class="col-md-auto">
<label class="small text-muted mb-1 fw-bold">Выгрузка 1С:</label>
<div class="d-flex flex-wrap gap-1">
<div>
<input type="radio" class="btn-check" name="is_synced" id="ws_all" value="" {% if is_synced != '0' and is_synced != '1' %}checked{% endif %} onchange="this.form.submit()">
<label class="btn btn-outline-accent btn-sm" for="ws_all">Все</label>
</div>
<div>
<input type="radio" class="btn-check" name="is_synced" id="ws_no" value="0" {% if is_synced == '0' %}checked{% endif %} onchange="this.form.submit()">
<label class="btn btn-outline-secondary btn-sm" for="ws_no">Не выгружено</label>
</div>
<div>
<input type="radio" class="btn-check" name="is_synced" id="ws_yes" value="1" {% if is_synced == '1' %}checked{% endif %} onchange="this.form.submit()">
<label class="btn btn-outline-success btn-sm" for="ws_yes">Выгружено</label>
</div>
</div>
</div>
<div class="col-md-auto ms-md-auto">
<label class="small text-muted mb-1 fw-bold">Период (с):</label>
<input type="date" name="start_date" class="form-control form-control-sm bg-body text-body border-secondary" value="{{ start_date }}" onchange="this.form.submit()">
</div>
<div class="col-md-auto">
<label class="small text-muted mb-1 fw-bold">Период (по):</label>
<input type="date" name="end_date" class="form-control form-control-sm bg-body text-body border-secondary" value="{{ end_date }}" onchange="this.form.submit()">
</div>
<div class="col-md-auto">
<a href="{% url 'writeoffs' %}?reset=1" class="btn btn-outline-secondary btn-sm">
<i class="bi bi-arrow-counterclockwise me-1"></i>Сброс
</a>
</div>
</form>
</div>
</div>
<div class="card shadow border-secondary mb-3">
<div class="card-header border-secondary py-3 d-flex justify-content-between align-items-center">
<h3 class="text-accent mb-0"><i class="bi bi-journal-text me-2"></i>Списание / Производство</h3>
<div class="small text-muted">По производственным отчетам</div>
</div>
<form method="post" class="mb-0">
{% csrf_token %}
<input type="hidden" name="start_date" value="{{ start_date }}">
<input type="hidden" name="end_date" value="{{ end_date }}">
<input type="hidden" name="is_synced" value="{{ is_synced }}">
<div class="card-body">
{% for card in report_cards %}
<div class="border border-secondary rounded p-3 mb-3">
<div class="d-flex flex-wrap justify-content-between gap-2 align-items-center">
<div class="fw-bold">
{{ card.report.date|date:"d.m.Y" }} — {{ card.report.machine }} — {{ card.report.operator }}
<span class="text-muted small ms-2">#{{ card.report.id }}</span>
</div>
<div class="d-flex align-items-center gap-2">
{% if card.report.is_synced_1c %}
<span class="badge bg-success">Выгружено в 1С</span>
{% else %}
<span class="badge bg-secondary">Не выгружено</span>
{% if can_edit %}
<input class="form-check-input" type="checkbox" name="report_ids" value="{{ card.report.id }}" title="Отметить выгружено в 1С">
{% endif %}
{% endif %}
</div>
</div>
<div class="row g-3 mt-1">
<div class="col-lg-4">
<div class="small text-muted fw-bold mb-1">Списано</div>
{% if card.report.consumptions.all %}
<ul class="mb-0">
{% for c in card.report.consumptions.all %}
{% if c.stock_item_id and c.stock_item.material_id %}
<li>
{{ c.stock_item.material.full_name|default:c.stock_item.material.name }}
({% if c.stock_item.current_length and c.stock_item.current_width %}{{ c.stock_item.current_length|floatformat:"-g" }}×{{ c.stock_item.current_width|floatformat:"-g" }}{% elif c.stock_item.current_length %}{{ c.stock_item.current_length|floatformat:"-g" }}{% else %}—{% endif %})
{% if c.stock_item.deal_id %}<span class="text-muted">(сделка № {{ c.stock_item.deal.number }})</span>{% endif %}
{{ c.quantity|floatformat:"-g" }} шт
</li>
{% elif c.stock_item_id and c.stock_item.entity_id %}
<li>
{{ c.stock_item.entity }}
{% if c.stock_item.deal_id %}<span class="text-muted">(сделка № {{ c.stock_item.deal.number }})</span>{% endif %}
{{ c.quantity|floatformat:"-g" }} шт
</li>
{% elif c.material_id %}
<li>{{ c.material }} {{ c.quantity|floatformat:"-g" }} шт</li>
{% else %}
<li>— {{ c.quantity|floatformat:"-g" }} шт</li>
{% endif %}
{% endfor %}
</ul>
{% else %}
<div class="text-muted small"></div>
{% endif %}
</div>
<div class="col-lg-4">
<div class="small text-muted fw-bold mb-1">Произведено</div>
{% if card.produced %}
<ul class="mb-0">
{% for k,v in card.produced.items %}
<li>{{ k }}: {{ v }} шт</li>
{% endfor %}
</ul>
{% else %}
<div class="text-muted small"></div>
{% endif %}
</div>
<div class="col-lg-4">
<div class="small text-muted fw-bold mb-1">Остаток ДО</div>
{% if card.report.remnants.all %}
<ul class="mb-0">
{% for r in card.report.remnants.all %}
<li>
{{ r.material.full_name|default:r.material.name|default:r.material }}
({% if r.current_length and r.current_width %}{{ r.current_length|floatformat:"-g" }}×{{ r.current_width|floatformat:"-g" }}{% elif r.current_length %}{{ r.current_length|floatformat:"-g" }}{% else %}—{% endif %})
{{ r.quantity|floatformat:"-g" }} шт
</li>
{% endfor %}
</ul>
{% else %}
<div class="text-muted small"></div>
{% endif %}
</div>
</div>
</div>
{% empty %}
<div class="text-muted">За выбранный период отчётов нет.</div>
{% endfor %}
</div>
{% if can_edit %}
<div class="card-footer border-secondary d-flex justify-content-end">
<button type="submit" class="btn btn-outline-accent">Отметить выбранные как «Выгружено в 1С»</button>
</div>
{% endif %}
</form>
</div>
{% endblock %}