-- 1.0.387: 从 AIDOP 租户复制 3 条客户主数据到 UATTEST_CHL 租户，充实 S0 客户信息维护页演示数据。
--
-- 源：AIDOP 租户（org code = 'AIDOP'）CustMaster 中 Cust = 10000000 / 10000002 / 10000004
--     （瑞贝德 / 通广 / 岛包，Class 分别为 1 / 2 / 3，覆盖三种客户分类）
-- 目标：UATTEST_CHL 租户（org code = 'UATTEST_CHL'）
--
-- 作用域列改写（必须）：
--   唯一键 uk_CustMaster_factory_cust = UNIQUE(factory_ref_id, Cust)，**不含 tenant_id**。
--   若沿用源租户的 factory_ref_id 会与源行撞唯一键，故 company_ref_id / factory_ref_id / Domain
--   一律取目标租户既有行的口径（当前为 838257186320453 / 838257186320453 / '2410'），
--   而不是照搬源租户的 1000 / 1000 / '8010'。
--
-- 只复制源库确实有值的列（Cust / SortName / Class / TaxClass / TaxIn）。
--   币种 Curr、销售员 Salesperson1/Slspsn2、发至 ShipTo、全称 CustFullName 在**所有租户**
--   的 CustMaster 中均为空，属全局数据现状，本脚本不臆造填充，页面对应列仍为空白。
--
-- 幂等：目标租户已存在同 Cust 则跳过；源租户或目标租户不存在的库上为空操作。

SET @uat_cust_src_tenant := (
  SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
  WHERE o.Code = 'AIDOP' AND t.Status = 1 LIMIT 1);

SET @uat_cust_dst_tenant := (
  SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
  WHERE o.Code = 'UATTEST_CHL' AND t.Status = 1 LIMIT 1);

-- 目标租户既有作用域口径（取现存行，保持与该租户其它客户一致）
SET @uat_cust_company := (SELECT company_ref_id FROM CustMaster WHERE tenant_id = @uat_cust_dst_tenant LIMIT 1);
SET @uat_cust_factory := (SELECT factory_ref_id FROM CustMaster WHERE tenant_id = @uat_cust_dst_tenant LIMIT 1);
SET @uat_cust_domain  := (SELECT Domain         FROM CustMaster WHERE tenant_id = @uat_cust_dst_tenant LIMIT 1);

INSERT INTO CustMaster
  (company_ref_id, factory_ref_id, tenant_id, Domain, Cust, SortName,
   Class, TaxClass, TaxIn, IsActive, IsConfirm, CreateUser, CreateTime)
SELECT @uat_cust_company, @uat_cust_factory, @uat_cust_dst_tenant, @uat_cust_domain,
       src.Cust, src.SortName, src.Class, src.TaxClass, src.TaxIn,
       1, 1, 'UAT-CUST-SEED', NOW()
FROM CustMaster src
WHERE src.tenant_id = @uat_cust_src_tenant
  AND src.Cust IN ('10000000', '10000002', '10000004')
  AND @uat_cust_src_tenant IS NOT NULL
  AND @uat_cust_dst_tenant IS NOT NULL
  AND @uat_cust_factory   IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM CustMaster x
    WHERE x.tenant_id = @uat_cust_dst_tenant
      AND x.factory_ref_id = @uat_cust_factory
      AND x.Cust = src.Cust
  );
