All checks were successful
Deploy MES Core / deploy (push) Successful in 12s
150 lines
8.6 KiB
HTML
150 lines
8.6 KiB
HTML
{% 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 %} |