Исправил закрытие сделки. добавил черновик страницы для списания в 1С
All checks were successful
Deploy MES Core / deploy (push) Successful in 13s
All checks were successful
Deploy MES Core / deploy (push) Successful in 13s
This commit is contained in:
@@ -89,6 +89,7 @@
|
||||
<thead>
|
||||
<tr class="table-custom-header">
|
||||
<th>Поступление</th>
|
||||
<th>Сделка</th>
|
||||
<th>Единица</th>
|
||||
<th>Доступно</th>
|
||||
<th data-sort="false">Использовано</th>
|
||||
@@ -98,6 +99,13 @@
|
||||
{% for s in stock_items %}
|
||||
<tr>
|
||||
<td class="small">{% if s.created_at %}{{ s.created_at|date:"d.m.Y H:i" }}{% endif %}</td>
|
||||
<td>
|
||||
{% if s.deal_id %}
|
||||
<span class="text-accent fw-bold">{{ s.deal.number }}</span>
|
||||
{% else %}
|
||||
—
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ s }}</td>
|
||||
<td>{{ s.quantity }}</td>
|
||||
<td style="max-width:140px;">
|
||||
@@ -105,7 +113,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
<tr><td colspan="4" class="text-center text-muted py-4">Нет единиц на складе для выбранного материала</td></tr>
|
||||
<tr><td colspan="5" class="text-center text-muted py-4">Нет единиц на складе для выбранного материала</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -198,14 +198,6 @@
|
||||
<a href="{{ back_url }}" class="btn btn-outline-secondary">Назад</a>
|
||||
<div class="d-flex gap-2">
|
||||
<input type="hidden" name="action" id="actionField" value="save">
|
||||
{% if item.status == 'work' and user_role == 'admin' %}
|
||||
<button type="submit" class="btn btn-success px-4" onclick="document.getElementById('actionField').value='close_done'">
|
||||
<i class="bi bi-check-all me-2"></i>Выполнено
|
||||
</button>
|
||||
<button type="submit" class="btn btn-outline-warning px-4" onclick="document.getElementById('actionField').value='close_partial'">
|
||||
Частично
|
||||
</button>
|
||||
{% endif %}
|
||||
<button type="submit" class="btn btn-outline-accent px-4 fw-bold" onclick="document.getElementById('actionField').value='save'">
|
||||
<i class="bi bi-save me-2"></i>Сохранить
|
||||
</button>
|
||||
|
||||
161
shiftflow/templates/shiftflow/writeoffs.html
Normal file
161
shiftflow/templates/shiftflow/writeoffs.html
Normal file
@@ -0,0 +1,161 @@
|
||||
{% 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 '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>
|
||||
|
||||
<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.consumed %}
|
||||
<ul class="mb-0">
|
||||
{% for k,v in card.consumed.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.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.remnants %}
|
||||
<ul class="mb-0">
|
||||
{% for k,v in card.remnants.items %}
|
||||
<li>{{ k }}: {{ v }}</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>Факт</th>
|
||||
<th>1С</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for it in items %}
|
||||
<tr>
|
||||
<td style="width:40px;">
|
||||
{% if can_edit and not it.is_synced_1c %}
|
||||
<input class="form-check-input" type="checkbox" name="item_ids" value="{{ it.id }}">
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="small">{{ it.date|date:"d.m.Y" }}</td>
|
||||
<td>
|
||||
{% if it.task.deal_id %}
|
||||
<span class="text-accent fw-bold">{{ it.task.deal.number }}</span>
|
||||
{% else %}
|
||||
—
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ it.machine }}</td>
|
||||
<td>
|
||||
<a href="{% url 'item_detail' it.id %}" class="text-decoration-none">{{ it.task.drawing_name }}</a>
|
||||
</td>
|
||||
<td>{{ it.get_status_display }}</td>
|
||||
<td>{{ it.quantity_fact }}</td>
|
||||
<td>
|
||||
{% if it.is_synced_1c %}
|
||||
<span class="badge bg-success">Да</span>
|
||||
{% else %}
|
||||
<span class="badge bg-secondary">Нет</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
<tr><td colspan="8" class="text-center text-muted py-4">Нет закрытых заданий за период</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="card-footer border-secondary d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-outline-accent" {% if not can_edit %}disabled{% endif %}>
|
||||
Отметить выбранные как «Списано в 1С»
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user