name: sign_receipt title: 签收单 description: 按签收单序列号生成 PDF(一次发货的集合视图,含多排产号多箱明细 + 收发方签收信息) renderer: reportbro-lib params: receipt_no: description: 签收单序列号(11位,YYYYMMDD + 3位当日序号,如 20260803001) required: true files: query.sql: 参数化查询(:receipt_no),主表头 LEFT JOIN 明细链路,按 (箱号,产品) 聚合 transform.py: build_context(rows) → 单头标量 + 明细预展开(r0_*..r19_*) + 行高估算 _build_template.py: 样式定义 + 运行时按数据动态布局的文档元素生成(无边框列表式) fields: receipt_no: 签收单序列号(主键) seq: "当日顺序号;receipt_date: 序列号日期部分" shipper_name/address/phone: 发货单位/地址/电话 receiver_name/address/phone: 收货人/地址/电话 customer_order_no: 客户订单编号 customer_total_no: 客户提供的外部总排行号(与内部排产号无关) transport_mode: 运输方式 ship_date: "发货日期;sign_date/signed_by: 签收日期/签收人(回写)" maker: "制单人;receipt_remark: 备注" r{i}_product_name: 产品名称(合同表[客户名称]) r{i}_model: 产品型号 r{i}_range_: 量程 r{i}_qty: 数量 r{i}_contract_order_no: 合同号/订单号(合同表[订单号]) r{i}_box_no: 箱号 total_boxes: "合计箱数(按 paichan_no+box_no 去重);total_qty: 合计件数" notes: - 单位:一个序列号一份 PDF(一次发货的集合视图) - 纸张:A4 纵向(默认)。内容多时同 A4 纵向,本期统一 A4 纵向 - 排版:无边框、单色、字体驱动的列表式(复用装箱单方案,ReportBro 表格行高不自适应故弃用) - 明细行预展开为标量参数 r0_*..r19_*;模板按 row_heights 累加 y 坐标定位 - 产品信息按总排号双表 LEFT JOIN(压力表/温度计合同表)取 COALESCE - 合计箱数 = 去重 (paichan_no, box_no);合计件数 = SUM(qty) - 中文通过 additional_fonts 注册 simhei.ttf 渲染(见 core/fonts.py) - 预留最多 20 行明细;超过可在 _build_template.MAX_ROWS 与 transform.MAX_ROWS 同步调大