diff --git a/app.py b/app.py index 74ec930..3b440d5 100644 --- a/app.py +++ b/app.py @@ -1499,11 +1499,12 @@ def order_new(): factory_id = int(fid_raw) if fid_raw.isdigit() else None if not pairs: flash("请至少选择一个 BOM 并填写大于 0 的生产数量", "error") - elif _bom_qty_invalid(pairs): - flash("每个 BOM 的生产数量需为 1–9 的个位正整数", "error") - return render_template("order_form.html", boms=boms_all, factories=factories, - o=None, initial_lines=[[bid, qv] for bid, qv in pairs]) else: + msg = _bom_qty_invalid(pairs) + if msg: + flash(msg, "error") + return render_template("order_form.html", boms=boms_all, factories=factories, + o=None, initial_lines=[[bid, qv] for bid, qv in pairs]) order_no = request.form.get("order_no", "").strip() or _gen_order_no() if db.session.scalar(db.select(ProdOrder).where(ProdOrder.order_no == order_no)): order_no = _gen_order_no() @@ -1650,8 +1651,9 @@ def order_edit(oid): flash("请至少选择一个 BOM 并填写大于 0 的生产数量", "error") return render_template("order_form.html", boms=boms_all, factories=factories, o=o, initial_lines=[[b.id, q] for b, q in order_bom_lines(o)]) - if _bom_qty_invalid(pairs): - flash("每个 BOM 的生产数量需为 1–9 的个位正整数", "error") + msg = _bom_qty_invalid(pairs) + if msg: + flash(msg, "error") return render_template("order_form.html", boms=boms_all, factories=factories, o=o, initial_lines=[[bid, qv] for bid, qv in pairs]) old_no = o.order_no @@ -1788,15 +1790,16 @@ def _parse_bom_pairs(form): def _bom_qty_invalid(pairs): - """返回 pairs 中不符合『1–9 个位正整数』的 qty 列表; 空列表表示全部合法。 + """校验生产订单每个 BOM 的生产数量:必须为 >=1 的正整数(不含小数点, 不限位数)。 - 生产订单每个 BOM 的生产数量限定为个位正整数(1~9), 不允许 0、小数或超过个位。 + 返回错误描述字符串; 全部合法时返回 None。 """ - bad = [] - for _, q in pairs: - if not (1 <= q <= 9 and float(q).is_integer()): - bad.append(q) - return bad + for bid, q in pairs: + if q is None or q < 1: + return f"BOM#{bid} 的生产数量需为不小于 1 的整数" + if abs(q - round(q)) > 1e-9: + return f"BOM#{bid} 的生产数量不可含小数点(需为整数)" + return None def _find_posted_flows(order_no, material_id): diff --git a/templates/order_form.html b/templates/order_form.html index e1e308f..554acf9 100644 --- a/templates/order_form.html +++ b/templates/order_form.html @@ -9,7 +9,7 @@ -
可在同一订单中加入多个 BOM,每个 BOM 独立填写生产数量(限 1–9 的个位正整数);点击「+ 添加 BOM」增加一行,不需要的行可删除。
+可在同一订单中加入多个 BOM,每个 BOM 独立填写生产数量(限正整数,不含小数点,如 1、12、100);点击「+ 添加 BOM」增加一行,不需要的行可删除。
@@ -36,18 +36,16 @@ {% for b in boms %}{% endfor %} - +