All checks were successful
Deploy MES Core / deploy (push) Successful in 13s
173 lines
8.8 KiB
HTML
173 lines
8.8 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">Период (с):</label>
|
||
<input type="date" name="start_date" class="form-control form-control-sm bg-body text-body border-secondary" value="{{ start_date }}">
|
||
</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 }}">
|
||
</div>
|
||
<div class="col-md-auto">
|
||
<button type="submit" class="btn btn-outline-secondary btn-sm">
|
||
<i class="bi bi-funnel me-1"></i>Показать
|
||
</button>
|
||
</div>
|
||
<div class="col-md-auto">
|
||
<a href="{% url 'legacy_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">
|
||
<div>
|
||
<h3 class="text-accent mb-0"><i class="bi bi-archive me-2"></i>Архив / Списание / Производство</h3>
|
||
<div class="small text-muted">По производственным отчетам</div>
|
||
</div>
|
||
</div>
|
||
|
||
<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">
|
||
<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>
|
||
|
||
<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 %})
|
||
{{ 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>
|
||
</div>
|
||
|
||
<div class="card shadow border-secondary">
|
||
<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-check2-square me-2"></i>Сменные задания (1С)</h3>
|
||
<div class="small text-muted">Отметка «Списано в 1С»</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 }}">
|
||
|
||
<div class="table-responsive">
|
||
<table class="table table-hover mb-0 align-middle">
|
||
<thead>
|
||
<tr class="table-custom-header">
|
||
<th data-sort="false"></th>
|
||
<th>Дата</th>
|
||
<th>Сделка</th>
|
||
<th>Станок</th>
|
||
<th>Позиция</th>
|
||
<th>План / Факт</th>
|
||
<th data-sort="false" class="text-center">1С</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for it in items %}
|
||
<tr>
|
||
<td style="width:40px;">
|
||
{% if can_edit %}
|
||
<input type="checkbox" class="form-check-input" name="item_ids" value="{{ it.id }}">
|
||
{% endif %}
|
||
</td>
|
||
<td class="small">{{ it.date|date:"d.m.Y" }}</td>
|
||
<td><span class="text-accent fw-bold">{{ it.task.deal.number|default:"-" }}</span></td>
|
||
<td><span class="badge bg-dark border border-secondary">{{ it.machine.name }}</span></td>
|
||
<td class="fw-bold">{{ it.task.drawing_name|default:"—" }}</td>
|
||
<td>
|
||
<span class="text-info fw-bold">{{ it.quantity_plan }}</span> /
|
||
<span class="text-success">{{ it.quantity_fact }}</span>
|
||
</td>
|
||
<td class="text-center">
|
||
{% if it.is_synced_1c %}
|
||
<i class="bi bi-check-circle-fill text-success" title="Учтено"></i>
|
||
{% else %}
|
||
<i class="bi bi-clock-history text-muted" title="Ожидает"></i>
|
||
{% endif %}
|
||
</td>
|
||
</tr>
|
||
{% empty %}
|
||
<tr><td colspan="7" class="text-center text-muted py-4">Нет сменных заданий за период</td></tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
{% if can_edit %}
|
||
<div class="card-body border-top border-secondary d-flex justify-content-end">
|
||
<button type="submit" class="btn btn-outline-accent">
|
||
<i class="bi bi-save me-2"></i>Сохранить
|
||
</button>
|
||
</div>
|
||
{% endif %}
|
||
</form>
|
||
</div>
|
||
|
||
{% endblock %} |