-- 签收单：按序列号 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;
