Add sign-off receipt report and refine packing list: single-line info bar, real-glyph row height, auto-paginated detail table
- Packing list: info bar changed to a single-line three-column layout (schedule no. | order no. | box no.); packing date moved to bottom-right on the same row as the total; date separator changed to slash - Packing list: range column widened 20->30mm; quantity/position-no./remark start shifted right 10mm; remark column narrowed to compensate; total width unchanged - Packing list: detail cells now use line_spacing=1.0 + valign=top; separators changed to thin solid lines at row bottom (+1mm line spacing); placeholder empty rows no longer step y - Packing list: row height estimation now uses fpdf2's same simhei glyph measured width (replacing rough character-count estimate); _clean adds control-character cleanup - New sign-off receipt report reports/sign_receipt: master+detail linked query, ReportBro auto-paginated table, PyMuPDF stamped footer (document no. / page no. / sign-off column) - run.py: required params now read from each report's config.yaml; default output path auto-generated; added transform.stamp_footer post-processing hook - .gitignore: ignore .workbuddy/
This commit is contained in:
72
reports/sign_receipt/query.sql
Normal file
72
reports/sign_receipt/query.sql
Normal file
@@ -0,0 +1,72 @@
|
||||
-- 签收单:按序列号 receipt_no 取主表头 + 聚合多排产号多箱的明细。
|
||||
-- 参数:receipt_no (str, 11 位序列号)
|
||||
-- 注:load_sql 会剥离整行 -- 注释,故注释里可自由书写中文。
|
||||
--
|
||||
-- 数据来源:
|
||||
-- warehouseOutbound.delivery_receipt 签收单主表(收发方/客户总排行号/运输/日期)
|
||||
-- warehouseOutbound.delivery_receipt_item 签收单明细(仅 receipt_no + paichan_no + box_no)
|
||||
-- CargoTrace.finished_goods_box 箱头(按 paichan_no + box_no 定位)
|
||||
-- CargoTrace.finished_goods_box_item 箱内明细(总排号 + 数量)
|
||||
-- productionContractData.26年压力表/温度计合同数据 产品信息
|
||||
--
|
||||
-- 设计要点:
|
||||
-- * 主表 LEFT JOIN 进明细链路,使每一行都冗余主表头字段;
|
||||
-- transform 取首行作为单头,其余行作为明细预展开。
|
||||
-- * 明细粒度:一个 (箱号, 产品) 一行;同一箱同一产品数量 SUM 聚合。
|
||||
-- * 排产号/订单号:由「箱内排产号 paichan_no + 合同表[订单号]」组合而成,
|
||||
-- 对应示例"排产号/订单号"列(不再单独取合同号)。
|
||||
-- * 客户总排行号 customer_total_no 已在主表,直接带出,与内部 paichan_no 无关。
|
||||
SELECT
|
||||
h.receipt_no,
|
||||
h.receipt_date,
|
||||
h.seq,
|
||||
h.shipper_name,
|
||||
h.shipper_address,
|
||||
h.shipper_phone,
|
||||
h.receiver_name,
|
||||
h.receiver_address,
|
||||
h.receiver_phone,
|
||||
h.customer_order_no,
|
||||
h.customer_total_no,
|
||||
h.transport_mode,
|
||||
h.ship_date,
|
||||
h.sign_date,
|
||||
h.signed_by,
|
||||
h.maker,
|
||||
h.remark AS receipt_remark,
|
||||
|
||||
b.box_no,
|
||||
di.paichan_no AS paichan_no,
|
||||
COALESCE(p.[客户名称], t.[客户名称]) AS product_name,
|
||||
COALESCE(p.[产品型号], t.[产品型号]) AS model,
|
||||
COALESCE(p.[量程], t.[量程]) AS range_,
|
||||
COALESCE(p.[位号], t.[位号]) AS weihao,
|
||||
SUM(bi.quantity) AS qty,
|
||||
COALESCE(p.[订单号], t.[订单号]) AS order_no
|
||||
FROM warehouseOutbound.delivery_receipt h
|
||||
JOIN warehouseOutbound.delivery_receipt_item di
|
||||
ON di.receipt_no = h.receipt_no
|
||||
JOIN CargoTrace.finished_goods_box b
|
||||
ON b.paichan_no = di.paichan_no AND b.box_no = di.box_no
|
||||
JOIN CargoTrace.finished_goods_box_item bi
|
||||
ON bi.box_id = b.id
|
||||
LEFT JOIN [productionContractData].[26年压力表合同数据] p
|
||||
ON p.[总排号] = bi.zongpai_no
|
||||
LEFT JOIN [productionContractData].[26年温度计合同数据] t
|
||||
ON t.[总排号] = bi.zongpai_no
|
||||
WHERE h.receipt_no = :receipt_no
|
||||
GROUP BY
|
||||
h.receipt_no, h.receipt_date, h.seq,
|
||||
h.shipper_name, h.shipper_address, h.shipper_phone,
|
||||
h.receiver_name, h.receiver_address, h.receiver_phone,
|
||||
h.customer_order_no, h.customer_total_no,
|
||||
h.transport_mode, h.ship_date, h.sign_date, h.signed_by,
|
||||
h.maker, h.remark,
|
||||
b.box_no,
|
||||
di.paichan_no,
|
||||
COALESCE(p.[客户名称], t.[客户名称]),
|
||||
COALESCE(p.[产品型号], t.[产品型号]),
|
||||
COALESCE(p.[量程], t.[量程]),
|
||||
COALESCE(p.[位号], t.[位号]),
|
||||
COALESCE(p.[订单号], t.[订单号])
|
||||
ORDER BY b.box_no;
|
||||
Reference in New Issue
Block a user