Files
Inventory-Management-System/templates/material_detail.html
T
star 639d7f1545 feat: BOM型号可编辑 + 生产订单BOM去括号 + 物料明细各工厂实时库存
- BOM编辑页「型号」输入框取消 readonly,可修改;bom_edit 增加非空与唯一校验(重复提示「BOM 型号已存在」、空值提示「BOM 型号必填」),改名不影响关联生产订单与流水
- 生产订单列表/详情/表单中 BOM 显示由 CODE (NAME) 改为 CODE · NAME,去掉括号
- 物料明细页新增「各工厂实时库存」表(工厂编号/名称/实时库存),显示每个工厂的实时聚合库存(入−出),不受顶栏工厂过滤影响
2026-10-15 14:03:16 +08:00

89 lines
3.4 KiB
HTML

{% extends "base.html" %}
{% block title %}物料明细 {{ m.part_number }}{% endblock %}
{% block content %}
<div class="toolbar">
<h3 style="margin:0">物料明细 · {{ m.part_number }}</h3>
<div>
<a class="btn" href="{{ url_for('materials') }}">← 返回物料列表</a>
<a class="btn" href="{{ url_for('material_edit', mid=m.id) }}">编辑</a>
</div>
</div>
<div class="card" style="margin-bottom:16px">
<table class="tbl" style="box-shadow:none">
<tbody>
<tr><th style="width:120px">物料编号</th><td>{{ m.part_number }}</td>
<th style="width:120px">型号 / 规格</th><td>{{ m.manufacturer or '-' }}</td></tr>
<tr><th>单位</th><td>{{ m.unit }}</td>
<th>安全库存</th><td class="num">{{ '%.2f'|format(m.safety_stock or 0) }}</td></tr>
<tr><th>备注</th><td colspan="3">{{ m.note or '-' }}</td></tr>
</tbody>
</table>
</div>
<div class="stats">
<div class="stat"><div class="num">{{ '%.2f'|format(stock) }}</div><div class="lbl">当前在库</div></div>
<div class="stat"><div class="num">{{ '%.2f'|format(inb_total) }}</div><div class="lbl">入库总数量</div></div>
<div class="stat"><div class="num">{{ '%.2f'|format(out_total) }}</div><div class="lbl">消耗总数量</div></div>
</div>
<h3>各工厂实时库存(实时聚合)</h3>
<table class="tbl">
<thead><tr><th>工厂编号</th><th>工厂名称</th><th>实时库存</th></tr></thead>
<tbody>
{% for pf in per_factory %}
<tr>
<td>{{ pf.f.code }}</td>
<td>{{ pf.f.name or '-' }}</td>
<td class="num">{{ '%.2f'|format(pf.stock) }}</td>
</tr>
{% else %}
<tr><td colspan="3" class="muted">暂无工厂</td></tr>
{% endfor %}
</tbody>
</table>
<h3>入库流水(每次入库时间 / 数量)</h3>
<table class="tbl">
<thead><tr><th>入库日期</th><th>工厂</th><th>送货日期</th><th>录入时间</th><th>数量</th><th>批次号</th><th>来源 / 供应商</th><th>经手人</th><th>备注</th></tr></thead>
<tbody>
{% for r in inbounds %}
<tr>
<td>{{ r.occur_date }}</td>
<td>{{ fmap.get(r.factory_id, '-') }}</td>
<td>{{ r.delivery_date or '-' }}</td>
<td class="small muted">{{ r.created_at.strftime('%Y-%m-%d %H:%M') if r.created_at else '-' }}</td>
<td class="num">{{ '%.2f'|format(r.qty) }}</td>
<td>{{ r.batch_no or '-' }}</td>
<td>{{ r.source or '-' }}</td>
<td>{{ r.operator or '-' }}</td>
<td>{{ r.remark or '-' }}</td>
</tr>
{% else %}
<tr><td colspan="9" class="muted">暂无入库记录</td></tr>
{% endfor %}
</tbody>
</table>
<h3>出库 / 消耗流水</h3>
<table class="tbl">
<thead><tr><th>出库日期</th><th>工厂</th><th>录入时间</th><th>数量</th><th>用途</th><th>关联单号</th><th>经手人</th><th>备注</th></tr></thead>
<tbody>
{% for r in outbounds %}
<tr>
<td>{{ r.occur_date }}</td>
<td>{{ fmap.get(r.factory_id, '-') }}</td>
<td class="small muted">{{ r.created_at.strftime('%Y-%m-%d %H:%M') if r.created_at else '-' }}</td>
<td class="num">{{ '%.2f'|format(r.qty) }}</td>
<td>{{ r.purpose or '-' }}</td>
<td>{{ r.order_ref or '-' }}</td>
<td>{{ r.operator or '-' }}</td>
<td>{{ r.remark or '-' }}</td>
</tr>
{% else %}
<tr><td colspan="8" class="muted">暂无出库记录</td></tr>
{% endfor %}
</tbody>
</table>
{% endblock %}