-- 装箱单：按 排产号 + 箱号 取箱内明细，并双表 LEFT JOIN 取产品信息。
-- 参数：paichan_no (str, 排产号) / box_no (int, 箱号)
-- 注：load_sql 会剥离整行 -- 注释，故注释里可自由书写中文。
--
-- 数据来源：
--   CargoTrace.finished_goods_box       箱头（排产号 + 箱号 + 装箱时间）
--   CargoTrace.finished_goods_box_item  箱内明细（总排号 + 装入数量）
--   productionContractData.26年压力表合同数据 / 26年温度计合同数据  产品信息
--
-- 产品信息双表取值：同一总排号只命中压力表或温度计其中一张表。
-- 用双 LEFT JOIN + COALESCE 取产品字段，避免前缀路由出错（26BW 不会被 26B% 误匹配）。
--
-- 字段说明（注意历史遗留命名）：
--   product_name：取自合同表 [客户名称] 字段，但实际存的是产品名称（历史笔误，系统已用，不改字段名）
--   weihao：位号，多数订单为空，有则显示、无则留白
--   remark：备注
SELECT b.paichan_no,
       b.box_no,
       b.created_at,
       i.zongpai_no,
       i.quantity AS box_qty,
       COALESCE(p.[客户名称], t.[客户名称]) AS product_name,
       COALESCE(p.[产品型号], t.[产品型号]) AS model,
       COALESCE(p.[量程],     t.[量程])     AS range_,
       COALESCE(p.[位号],     t.[位号])     AS weihao,
       COALESCE(p.[备注],     t.[备注])     AS remark,
       COALESCE(p.[订单号],   t.[订单号])   AS order_no
FROM CargoTrace.finished_goods_box b
JOIN CargoTrace.finished_goods_box_item i
    ON i.box_id = b.id
LEFT JOIN [productionContractData].[26年压力表合同数据] p
    ON p.[总排号] = i.zongpai_no
LEFT JOIN [productionContractData].[26年温度计合同数据] t
    ON t.[总排号] = i.zongpai_no
WHERE b.paichan_no = :paichan_no
  AND b.box_no = :box_no
ORDER BY i.id;
