s4_global_uat_seed_20260608.sql 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  1. -- S4 global UAT seed for tenant 797403760988229.
  2. -- Idempotent: uses fixed UAT document numbers and NOT EXISTS guards.
  3. SET @tenant_id := 797403760988229;
  4. -- 1) Existing SH-UAT shipments were imported without tenant_id.
  5. UPDATE scm_shd
  6. SET tenant_id = @tenant_id,
  7. sh_purchase_name = COALESCE(NULLIF(sh_purchase_name, ''), sh_purchase_num),
  8. state = 1,
  9. shzt = COALESCE(NULLIF(shzt, ''), '待收'),
  10. tjrxm = COALESCE(NULLIF(tjrxm, ''), 'UAT数据导入'),
  11. tjrq = COALESCE(NULLIF(tjrq, ''), '2026-06-04')
  12. WHERE shddh LIKE 'SH-UAT-%'
  13. AND (tenant_id IS NULL OR tenant_id <> @tenant_id);
  14. UPDATE scm_shdzb
  15. SET tenant_id = @tenant_id
  16. WHERE (
  17. po_bill IN ('PO-UAT-20260604-01', 'PO-UAT-20260604-02', 'PO-UAT-20260604-03', 'PO-UAT-20260604-04', 'PO-UAT-20260604-05')
  18. OR po_billno IN ('PO-UAT-20260604-01', 'PO-UAT-20260604-02', 'PO-UAT-20260604-03', 'PO-UAT-20260604-04', 'PO-UAT-20260604-05')
  19. )
  20. AND (tenant_id IS NULL OR tenant_id <> @tenant_id);
  21. -- 2) Source receipt documents (rc) for return creation and traceability.
  22. INSERT INTO PurOrdRctMaster
  23. (
  24. RecID, Domain, RctType, Receiver, RctDate, OrdNbr, Site, BusinessID,
  25. CreateUser, UpdateUser, CreateTime, UpdateTime,
  26. IsActive, IsConfirm, Typed, Department, Supp, Print, IsChanged,
  27. TaxClass, TaxIn, Remark, Curr, IsExport, Terms, IsPlan,
  28. TermsofTrade, IsBackwash, tenant_id
  29. )
  30. SELECT
  31. 60604000 + p.idx AS RecID,
  32. COALESCE(m.Domain, '100') AS Domain,
  33. 'rc' AS RctType,
  34. p.rc_receiver AS Receiver,
  35. DATE_ADD('2026-06-04', INTERVAL p.idx - 1 DAY) AS RctDate,
  36. p.po AS OrdNbr,
  37. COALESCE(m.Site, 'AIDOP') AS Site,
  38. 0 AS BusinessID,
  39. 'S1S4_UAT_20260604_RQ_V1' AS CreateUser,
  40. 'S1S4_UAT_20260604_RQ_V1' AS UpdateUser,
  41. NOW() AS CreateTime,
  42. NOW() AS UpdateTime,
  43. 1 AS IsActive,
  44. 0 AS IsConfirm,
  45. 'C' AS Typed,
  46. COALESCE(m.Department, 'D-PROD') AS Department,
  47. COALESCE(m.Supp, 'VEN00060') AS Supp,
  48. 0 AS Print,
  49. 0 AS IsChanged,
  50. COALESCE(m.TaxClass, '') AS TaxClass,
  51. COALESCE(m.TaxIn, 0) AS TaxIn,
  52. CONCAT('S4 global UAT receipt for ', p.po) AS Remark,
  53. COALESCE(m.Curr, 'CNY') AS Curr,
  54. 0 AS IsExport,
  55. COALESCE(m.CreditTerms, '') AS Terms,
  56. 0 AS IsPlan,
  57. 'S1S4_UAT' AS TermsofTrade,
  58. 0 AS IsBackwash,
  59. @tenant_id AS tenant_id
  60. FROM (
  61. SELECT 1 idx, 'PO-UAT-20260604-01' po, 'RC-UAT-20260604-01' rc_receiver UNION ALL
  62. SELECT 2, 'PO-UAT-20260604-02', 'RC-UAT-20260604-02' UNION ALL
  63. SELECT 3, 'PO-UAT-20260604-03', 'RC-UAT-20260604-03' UNION ALL
  64. SELECT 4, 'PO-UAT-20260604-04', 'RC-UAT-20260604-04' UNION ALL
  65. SELECT 5, 'PO-UAT-20260604-05', 'RC-UAT-20260604-05'
  66. ) p
  67. LEFT JOIN PurOrdMaster m ON m.PurOrd = p.po AND m.tenant_id = @tenant_id
  68. WHERE NOT EXISTS (
  69. SELECT 1 FROM PurOrdRctMaster x
  70. WHERE x.RctType = 'rc' AND x.Receiver = p.rc_receiver AND x.tenant_id = @tenant_id
  71. );
  72. -- 3) Purchase return documents (pt) visible in the S4 return page.
  73. INSERT INTO PurOrdRctMaster
  74. (
  75. RecID, Domain, RctType, Receiver, RctDate, OrdNbr, Site, BusinessID,
  76. CreateUser, UpdateUser, CreateTime, UpdateTime,
  77. IsActive, IsConfirm, Typed, Department, Supp, Print, IsChanged,
  78. TaxClass, TaxIn, Remark, Curr, IsExport, Terms, IsPlan,
  79. TermsofTrade, IsBackwash, tenant_id
  80. )
  81. SELECT
  82. 60604050 + p.idx AS RecID,
  83. COALESCE(m.Domain, '100') AS Domain,
  84. 'pt' AS RctType,
  85. p.pt_receiver AS Receiver,
  86. DATE_ADD('2026-06-09', INTERVAL p.idx - 1 DAY) AS RctDate,
  87. p.po AS OrdNbr,
  88. COALESCE(m.Site, 'AIDOP') AS Site,
  89. 0 AS BusinessID,
  90. 'S1S4_UAT_20260604_RQ_V1' AS CreateUser,
  91. 'S1S4_UAT_20260604_RQ_V1' AS UpdateUser,
  92. NOW() AS CreateTime,
  93. NOW() AS UpdateTime,
  94. 1 AS IsActive,
  95. 0 AS IsConfirm,
  96. 'C' AS Typed,
  97. COALESCE(m.Department, 'D-PROD') AS Department,
  98. COALESCE(m.Supp, 'VEN00060') AS Supp,
  99. 0 AS Print,
  100. 0 AS IsChanged,
  101. COALESCE(m.TaxClass, '') AS TaxClass,
  102. COALESCE(m.TaxIn, 0) AS TaxIn,
  103. CONCAT('S4 global UAT purchase return for ', p.po) AS Remark,
  104. COALESCE(m.Curr, 'CNY') AS Curr,
  105. 0 AS IsExport,
  106. COALESCE(m.CreditTerms, '') AS Terms,
  107. 1 AS IsPlan,
  108. 'S1S4_UAT' AS TermsofTrade,
  109. 0 AS IsBackwash,
  110. @tenant_id AS tenant_id
  111. FROM (
  112. SELECT 1 idx, 'PO-UAT-20260604-01' po, 'PT-UAT-20260604-01' pt_receiver UNION ALL
  113. SELECT 2, 'PO-UAT-20260604-02', 'PT-UAT-20260604-02' UNION ALL
  114. SELECT 3, 'PO-UAT-20260604-03', 'PT-UAT-20260604-03' UNION ALL
  115. SELECT 4, 'PO-UAT-20260604-04', 'PT-UAT-20260604-04' UNION ALL
  116. SELECT 5, 'PO-UAT-20260604-05', 'PT-UAT-20260604-05'
  117. ) p
  118. LEFT JOIN PurOrdMaster m ON m.PurOrd = p.po AND m.tenant_id = @tenant_id
  119. WHERE NOT EXISTS (
  120. SELECT 1 FROM PurOrdRctMaster x
  121. WHERE x.RctType = 'pt' AND x.Receiver = p.pt_receiver AND x.tenant_id = @tenant_id
  122. );
  123. -- 4) Receipt details.
  124. INSERT INTO PurOrdRctDetail
  125. (
  126. RecID, Domain, RctType, Receiver, Line, ItemNum, Dimension1, Dimension2,
  127. OrdNbr, RctDate, POCost, UM, QtyOrded, RctQty, Site, Supp, Location,
  128. QtyReceived, Potype, BusinessID, CreateUser, UpdateUser, CreateTime, UpdateTime,
  129. IsActive, IsConfirm, Typed, IsChanged, TaxClass, TaxIn, UMConversion,
  130. Curr, IsClosed, OrdLine, IsRounding, BlanketLine, ProjectLine,
  131. RctLine, QtyReturn, PurOrdRctRecID, QcQty, RctNbr, Remark, tenant_id
  132. )
  133. SELECT
  134. 606041000 + p.idx * 10 + d.Line AS RecID,
  135. COALESCE(m.Domain, '100') AS Domain,
  136. 'rc' AS RctType,
  137. p.rc_receiver AS Receiver,
  138. d.Line AS Line,
  139. d.ItemNum,
  140. COALESCE(d.Dimension1, '') AS Dimension1,
  141. COALESCE(d.Dimension2, '') AS Dimension2,
  142. p.po AS OrdNbr,
  143. DATE_ADD('2026-06-04', INTERVAL p.idx - 1 DAY) AS RctDate,
  144. COALESCE(d.PurCost, 0) AS POCost,
  145. COALESCE(d.UM, 'EA') AS UM,
  146. COALESCE(d.QtyOrded, 0) AS QtyOrded,
  147. ROUND(COALESCE(d.QtyOrded, 0) * 0.90, 5) AS RctQty,
  148. COALESCE(m.Site, 'AIDOP') AS Site,
  149. COALESCE(m.Supp, 'VEN00060') AS Supp,
  150. COALESCE(d.Location, 'QA') AS Location,
  151. ROUND(COALESCE(d.QtyOrded, 0) * 0.90, 5) AS QtyReceived,
  152. COALESCE(d.Potype, 'PT') AS Potype,
  153. 0 AS BusinessID,
  154. 'S1S4_UAT_20260604_RQ_V1' AS CreateUser,
  155. 'S1S4_UAT_20260604_RQ_V1' AS UpdateUser,
  156. NOW() AS CreateTime,
  157. NOW() AS UpdateTime,
  158. 1 AS IsActive,
  159. 0 AS IsConfirm,
  160. 'C' AS Typed,
  161. 0 AS IsChanged,
  162. COALESCE(m.TaxClass, '') AS TaxClass,
  163. COALESCE(m.TaxIn, 0) AS TaxIn,
  164. 1 AS UMConversion,
  165. COALESCE(m.Curr, 'CNY') AS Curr,
  166. 0 AS IsClosed,
  167. d.Line AS OrdLine,
  168. 0 AS IsRounding,
  169. 0 AS BlanketLine,
  170. 0 AS ProjectLine,
  171. d.Line AS RctLine,
  172. 0 AS QtyReturn,
  173. 60604000 + p.idx AS PurOrdRctRecID,
  174. ROUND(COALESCE(d.QtyOrded, 0) * 0.90, 5) AS QcQty,
  175. p.rc_receiver AS RctNbr,
  176. CONCAT('S4 global UAT receipt detail for ', p.po) AS Remark,
  177. @tenant_id AS tenant_id
  178. FROM (
  179. SELECT 1 idx, 'PO-UAT-20260604-01' po, 'RC-UAT-20260604-01' rc_receiver UNION ALL
  180. SELECT 2, 'PO-UAT-20260604-02', 'RC-UAT-20260604-02' UNION ALL
  181. SELECT 3, 'PO-UAT-20260604-03', 'RC-UAT-20260604-03' UNION ALL
  182. SELECT 4, 'PO-UAT-20260604-04', 'RC-UAT-20260604-04' UNION ALL
  183. SELECT 5, 'PO-UAT-20260604-05', 'RC-UAT-20260604-05'
  184. ) p
  185. LEFT JOIN PurOrdMaster m ON m.PurOrd = p.po AND m.tenant_id = @tenant_id
  186. JOIN (
  187. SELECT PurOrd, Line, MIN(ItemNum) ItemNum, MIN(Dimension1) Dimension1, MIN(Dimension2) Dimension2,
  188. MAX(QtyOrded) QtyOrded, MIN(UM) UM, MIN(Location) Location, MAX(PurCost) PurCost, MIN(Potype) Potype
  189. FROM PurOrdDetail
  190. WHERE tenant_id = @tenant_id AND PurOrd LIKE 'PO-UAT-20260604-%' AND Line IN (1, 2)
  191. GROUP BY PurOrd, Line
  192. ) d ON d.PurOrd = p.po
  193. WHERE NOT EXISTS (
  194. SELECT 1 FROM PurOrdRctDetail x
  195. WHERE x.RctType = 'rc' AND x.Receiver = p.rc_receiver AND x.Line = d.Line AND x.tenant_id = @tenant_id
  196. );
  197. -- 5) Return details: line 1 quality issue, line 2 quantity discrepancy.
  198. INSERT INTO PurOrdRctDetail
  199. (
  200. RecID, Domain, RctType, Receiver, Line, ItemNum, Dimension1, Dimension2,
  201. OrdNbr, RctDate, POCost, UM, QtyOrded, RctQty, Site, Supp, Location,
  202. QtyReceived, Potype, BusinessID, CreateUser, UpdateUser, CreateTime, UpdateTime,
  203. IsActive, IsConfirm, Typed, QC, QCDescr, IsChanged, TaxClass, TaxIn, UMConversion,
  204. Curr, IsClosed, OrdLine, IsRounding, BlanketLine, ProjectLine,
  205. RctNbr, RctLine, QtyReturn, PurOrdRctRecID, QcQty, Remark, tenant_id
  206. )
  207. SELECT
  208. 606042000 + p.idx * 10 + d.Line AS RecID,
  209. COALESCE(m.Domain, '100') AS Domain,
  210. 'pt' AS RctType,
  211. p.pt_receiver AS Receiver,
  212. d.Line AS Line,
  213. d.ItemNum,
  214. COALESCE(d.Dimension1, '') AS Dimension1,
  215. COALESCE(d.Dimension2, '') AS Dimension2,
  216. p.po AS OrdNbr,
  217. DATE_ADD('2026-06-09', INTERVAL p.idx - 1 DAY) AS RctDate,
  218. COALESCE(d.PurCost, 0) AS POCost,
  219. COALESCE(d.UM, 'EA') AS UM,
  220. COALESCE(d.QtyOrded, 0) AS QtyOrded,
  221. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * CASE WHEN d.Line = 1 THEN 0.03 ELSE 0.02 END, 5)) AS RctQty,
  222. COALESCE(m.Site, 'AIDOP') AS Site,
  223. COALESCE(m.Supp, 'VEN00060') AS Supp,
  224. COALESCE(d.Location, 'QA') AS Location,
  225. 0 AS QtyReceived,
  226. COALESCE(d.Potype, 'PT') AS Potype,
  227. 0 AS BusinessID,
  228. 'S1S4_UAT_20260604_RQ_V1' AS CreateUser,
  229. 'S1S4_UAT_20260604_RQ_V1' AS UpdateUser,
  230. NOW() AS CreateTime,
  231. NOW() AS UpdateTime,
  232. 1 AS IsActive,
  233. 0 AS IsConfirm,
  234. 'C' AS Typed,
  235. CASE WHEN d.Line = 1 THEN 'QUALITY' ELSE 'QTY' END AS QC,
  236. CASE WHEN d.Line = 1 THEN 'Quality nonconformance' ELSE 'Quantity discrepancy' END AS QCDescr,
  237. 0 AS IsChanged,
  238. COALESCE(m.TaxClass, '') AS TaxClass,
  239. COALESCE(m.TaxIn, 0) AS TaxIn,
  240. 1 AS UMConversion,
  241. COALESCE(m.Curr, 'CNY') AS Curr,
  242. 0 AS IsClosed,
  243. d.Line AS OrdLine,
  244. 0 AS IsRounding,
  245. 0 AS BlanketLine,
  246. 0 AS ProjectLine,
  247. p.rc_receiver AS RctNbr,
  248. d.Line AS RctLine,
  249. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * CASE WHEN d.Line = 1 THEN 0.03 ELSE 0.02 END, 5)) AS QtyReturn,
  250. 60604050 + p.idx AS PurOrdRctRecID,
  251. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * CASE WHEN d.Line = 1 THEN 0.03 ELSE 0.02 END, 5)) AS QcQty,
  252. CONCAT(CASE WHEN d.Line = 1 THEN 'Quality nonconformance for ' ELSE 'Quantity discrepancy for ' END, p.po) AS Remark,
  253. @tenant_id AS tenant_id
  254. FROM (
  255. SELECT 1 idx, 'PO-UAT-20260604-01' po, 'RC-UAT-20260604-01' rc_receiver, 'PT-UAT-20260604-01' pt_receiver UNION ALL
  256. SELECT 2, 'PO-UAT-20260604-02', 'RC-UAT-20260604-02', 'PT-UAT-20260604-02' UNION ALL
  257. SELECT 3, 'PO-UAT-20260604-03', 'RC-UAT-20260604-03', 'PT-UAT-20260604-03' UNION ALL
  258. SELECT 4, 'PO-UAT-20260604-04', 'RC-UAT-20260604-04', 'PT-UAT-20260604-04' UNION ALL
  259. SELECT 5, 'PO-UAT-20260604-05', 'RC-UAT-20260604-05', 'PT-UAT-20260604-05'
  260. ) p
  261. LEFT JOIN PurOrdMaster m ON m.PurOrd = p.po AND m.tenant_id = @tenant_id
  262. JOIN (
  263. SELECT PurOrd, Line, MIN(ItemNum) ItemNum, MIN(Dimension1) Dimension1, MIN(Dimension2) Dimension2,
  264. MAX(QtyOrded) QtyOrded, MIN(UM) UM, MIN(Location) Location, MAX(PurCost) PurCost, MIN(Potype) Potype
  265. FROM PurOrdDetail
  266. WHERE tenant_id = @tenant_id AND PurOrd LIKE 'PO-UAT-20260604-%' AND Line IN (1, 2)
  267. GROUP BY PurOrd, Line
  268. ) d ON d.PurOrd = p.po
  269. WHERE NOT EXISTS (
  270. SELECT 1 FROM PurOrdRctDetail x
  271. WHERE x.RctType = 'pt' AND x.Receiver = p.pt_receiver AND x.Line = d.Line AND x.tenant_id = @tenant_id
  272. );
  273. -- 6) IQC return samples.
  274. INSERT INTO qms_qcp_inspecapplyn
  275. (
  276. id, FBILLNO, FBILLSTATUS, FCREATETIME, FMODIFYTIME, FAUDITDATE,
  277. FAPPLYUSER, FAPPLYTIME, FBILLTYPE, FCOMMENT, FINTERFACEID
  278. )
  279. SELECT
  280. 910606040100 + p.idx AS id,
  281. p.iqc_bill AS FBILLNO,
  282. 'C' AS FBILLSTATUS,
  283. NOW() AS FCREATETIME,
  284. NOW() AS FMODIFYTIME,
  285. NOW() AS FAUDITDATE,
  286. 'S1S4_UAT_20260604_RQ_V1' AS FAPPLYUSER,
  287. DATE_ADD('2026-06-09 09:00:00', INTERVAL p.idx - 1 DAY) AS FAPPLYTIME,
  288. 'IQC_RETURN' AS FBILLTYPE,
  289. CONCAT('S4 global UAT IQC return for ', p.po) AS FCOMMENT,
  290. 'S1S4_UAT_20260604_RQ_V1' AS FINTERFACEID
  291. FROM (
  292. SELECT 1 idx, 'PO-UAT-20260604-01' po, 'IQC-UAT-20260604-01' iqc_bill UNION ALL
  293. SELECT 2, 'PO-UAT-20260604-02', 'IQC-UAT-20260604-02' UNION ALL
  294. SELECT 3, 'PO-UAT-20260604-03', 'IQC-UAT-20260604-03' UNION ALL
  295. SELECT 4, 'PO-UAT-20260604-04', 'IQC-UAT-20260604-04' UNION ALL
  296. SELECT 5, 'PO-UAT-20260604-05', 'IQC-UAT-20260604-05'
  297. ) p
  298. WHERE NOT EXISTS (SELECT 1 FROM qms_qcp_inspecapplyn x WHERE x.FBILLNO = p.iqc_bill);
  299. INSERT INTO qms_qcp_insappnentry
  300. (
  301. id, glid, FSEQ, FUNIT, FLOTNUMBER, FSRCORDERTYPE, FSRCORDERNUM,
  302. FAPPLYQTY, FJOINQTY, FINSPECTSTATUS, FBASEQTY, FMATERIALCFG,
  303. wlmc, ggxh, FSCSYSTEM, FORDERNUM, FSUPPLIER, FORDERTYPE,
  304. FRESULTSTATUS, shdh, gysbm, gysmc, wllb
  305. )
  306. SELECT
  307. 910606040200 + p.idx AS id,
  308. 910606040100 + p.idx AS glid,
  309. 1 AS FSEQ,
  310. COALESCE(d.UM, 'EA') AS FUNIT,
  311. CONCAT('LOT-UAT-', LPAD(p.idx, 2, '0')) AS FLOTNUMBER,
  312. 'PO' AS FSRCORDERTYPE,
  313. p.po AS FSRCORDERNUM,
  314. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.90, 5)) AS FAPPLYQTY,
  315. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.90, 5)) AS FJOINQTY,
  316. '退货' AS FINSPECTSTATUS,
  317. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.90, 5)) AS FBASEQTY,
  318. d.ItemNum AS FMATERIALCFG,
  319. COALESCE(i.Descr, d.ItemNum) AS wlmc,
  320. COALESCE(i.Descr1, '') AS ggxh,
  321. 'AIDOP' AS FSCSYSTEM,
  322. COALESCE(m.SalesOrd, '') AS FORDERNUM,
  323. COALESCE(m.Supp, 'VEN00060') AS FSUPPLIER,
  324. 'PO' AS FORDERTYPE,
  325. 'NG' AS FRESULTSTATUS,
  326. p.shddh AS shdh,
  327. COALESCE(m.Supp, 'VEN00060') AS gysbm,
  328. COALESCE(NULLIF(ds.supplier, ''), COALESCE(m.Supp, 'VEN00060')) AS gysmc,
  329. 'UAT' AS wllb
  330. FROM (
  331. SELECT 1 idx, 'PO-UAT-20260604-01' po, 'SH-UAT-20260604-01' shddh UNION ALL
  332. SELECT 2, 'PO-UAT-20260604-02', 'SH-UAT-20260604-02' UNION ALL
  333. SELECT 3, 'PO-UAT-20260604-03', 'SH-UAT-20260604-03' UNION ALL
  334. SELECT 4, 'PO-UAT-20260604-04', 'SH-UAT-20260604-04' UNION ALL
  335. SELECT 5, 'PO-UAT-20260604-05', 'SH-UAT-20260604-05'
  336. ) p
  337. LEFT JOIN PurOrdMaster m ON m.PurOrd = p.po AND m.tenant_id = @tenant_id
  338. JOIN (
  339. SELECT PurOrd, MIN(ItemNum) ItemNum, MAX(QtyOrded) QtyOrded, MIN(UM) UM
  340. FROM PurOrdDetail
  341. WHERE tenant_id = @tenant_id AND PurOrd LIKE 'PO-UAT-20260604-%' AND Line = 1
  342. GROUP BY PurOrd
  343. ) d ON d.PurOrd = p.po
  344. LEFT JOIN (
  345. SELECT ItemNum, MIN(Descr) AS Descr, MIN(Descr1) AS Descr1
  346. FROM ItemMaster
  347. GROUP BY ItemNum
  348. ) i ON i.ItemNum = d.ItemNum
  349. LEFT JOIN srm_polist_ds ds ON ds.ponumber = p.po AND ds.poline = 1 AND ds.tenant_id = @tenant_id
  350. WHERE NOT EXISTS (
  351. SELECT 1 FROM qms_qcp_insappnentry x
  352. WHERE x.FSRCORDERNUM = p.po AND x.shdh = p.shddh
  353. );
  354. INSERT INTO qms_qcp_inspbill
  355. (
  356. id, lydjbh, FBILLNO, FBILLSTATUS, FCREATETIME, FMODIFYTIME, FAUDITDATE,
  357. FINSPESTARTDATE, FINSPEENDDATE, FINSPECTORID, FBILLTYPE, FCOMMENT,
  358. FMATERIALCFG, wlmc, ggxh, FRINSQTY, dhsl, lysl, bhgsl,
  359. clfs, pch, gysmc, thyy, UnqualifiedDescription, SampleQty, TestQty
  360. )
  361. SELECT
  362. 910606040300 + p.idx AS id,
  363. p.iqc_bill AS lydjbh,
  364. CONCAT('INSP-UAT-20260604-', LPAD(p.idx, 2, '0')) AS FBILLNO,
  365. 'C' AS FBILLSTATUS,
  366. NOW() AS FCREATETIME,
  367. NOW() AS FMODIFYTIME,
  368. NOW() AS FAUDITDATE,
  369. DATE_ADD('2026-06-09 10:00:00', INTERVAL p.idx - 1 DAY) AS FINSPESTARTDATE,
  370. DATE_ADD('2026-06-09 11:00:00', INTERVAL p.idx - 1 DAY) AS FINSPEENDDATE,
  371. 'AIDOP-UAT' AS FINSPECTORID,
  372. 'IQC_RETURN' AS FBILLTYPE,
  373. CONCAT('S4 global UAT IQC result for ', p.po) AS FCOMMENT,
  374. d.ItemNum AS FMATERIALCFG,
  375. COALESCE(i.Descr, d.ItemNum) AS wlmc,
  376. COALESCE(i.Descr1, '') AS ggxh,
  377. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.90, 5)) AS FRINSQTY,
  378. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.90, 5)) AS dhsl,
  379. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.90, 5)) AS lysl,
  380. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * CASE WHEN p.idx <= 3 THEN 0.03 ELSE 0.02 END, 5)) AS bhgsl,
  381. 3 AS clfs,
  382. CONCAT('LOT-UAT-', LPAD(p.idx, 2, '0')) AS pch,
  383. COALESCE(NULLIF(ds.supplier, ''), COALESCE(m.Supp, 'VEN00060')) AS gysmc,
  384. CASE WHEN p.idx <= 3 THEN 'Quality nonconformance' ELSE 'Quantity discrepancy' END AS thyy,
  385. CASE WHEN p.idx <= 3 THEN 'Quality nonconformance' ELSE 'Quantity discrepancy' END AS UnqualifiedDescription,
  386. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.10, 5)) AS SampleQty,
  387. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.90, 5)) AS TestQty
  388. FROM (
  389. SELECT 1 idx, 'PO-UAT-20260604-01' po, 'IQC-UAT-20260604-01' iqc_bill UNION ALL
  390. SELECT 2, 'PO-UAT-20260604-02', 'IQC-UAT-20260604-02' UNION ALL
  391. SELECT 3, 'PO-UAT-20260604-03', 'IQC-UAT-20260604-03' UNION ALL
  392. SELECT 4, 'PO-UAT-20260604-04', 'IQC-UAT-20260604-04' UNION ALL
  393. SELECT 5, 'PO-UAT-20260604-05', 'IQC-UAT-20260604-05'
  394. ) p
  395. LEFT JOIN PurOrdMaster m ON m.PurOrd = p.po AND m.tenant_id = @tenant_id
  396. JOIN (
  397. SELECT PurOrd, MIN(ItemNum) ItemNum, MAX(QtyOrded) QtyOrded
  398. FROM PurOrdDetail
  399. WHERE tenant_id = @tenant_id AND PurOrd LIKE 'PO-UAT-20260604-%' AND Line = 1
  400. GROUP BY PurOrd
  401. ) d ON d.PurOrd = p.po
  402. LEFT JOIN (
  403. SELECT ItemNum, MIN(Descr) AS Descr, MIN(Descr1) AS Descr1
  404. FROM ItemMaster
  405. GROUP BY ItemNum
  406. ) i ON i.ItemNum = d.ItemNum
  407. LEFT JOIN srm_polist_ds ds ON ds.ponumber = p.po AND ds.poline = 1 AND ds.tenant_id = @tenant_id
  408. WHERE NOT EXISTS (SELECT 1 FROM qms_qcp_inspbill x WHERE x.lydjbh = p.iqc_bill);
  409. -- 7) Supplier shortage kanban samples.
  410. INSERT INTO WorkOrdDetailTotalKB
  411. (
  412. RowNum, Descr, Descr1, ItemNum, supplier_number, supplier_name,
  413. D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14
  414. )
  415. SELECT
  416. CAST(2026060400 + p.idx AS CHAR) AS RowNum,
  417. COALESCE(i.Descr, d.ItemNum) AS Descr,
  418. COALESCE(i.Descr1, CONCAT('WO ', COALESCE(m.WorkOrd, ''))) AS Descr1,
  419. d.ItemNum,
  420. COALESCE(m.Supp, 'VEN00060') AS supplier_number,
  421. COALESCE(NULLIF(ds.supplier, ''), COALESCE(m.Supp, 'VEN00060')) AS supplier_name,
  422. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.10, 5)) AS D0,
  423. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.08, 5)) AS D1,
  424. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.06, 5)) AS D2,
  425. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.04, 5)) AS D3,
  426. GREATEST(1, ROUND(COALESCE(d.QtyOrded, 0) * 0.02, 5)) AS D4,
  427. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  428. FROM (
  429. SELECT 1 idx, 'PO-UAT-20260604-01' po UNION ALL
  430. SELECT 2, 'PO-UAT-20260604-02' UNION ALL
  431. SELECT 3, 'PO-UAT-20260604-03' UNION ALL
  432. SELECT 4, 'PO-UAT-20260604-04' UNION ALL
  433. SELECT 5, 'PO-UAT-20260604-05'
  434. ) p
  435. LEFT JOIN PurOrdMaster m ON m.PurOrd = p.po AND m.tenant_id = @tenant_id
  436. JOIN (
  437. SELECT PurOrd, MIN(ItemNum) ItemNum, MAX(QtyOrded) QtyOrded
  438. FROM PurOrdDetail
  439. WHERE tenant_id = @tenant_id AND PurOrd LIKE 'PO-UAT-20260604-%' AND Line = 1
  440. GROUP BY PurOrd
  441. ) d ON d.PurOrd = p.po
  442. LEFT JOIN (
  443. SELECT ItemNum, MIN(Descr) AS Descr, MIN(Descr1) AS Descr1
  444. FROM ItemMaster
  445. GROUP BY ItemNum
  446. ) i ON i.ItemNum = d.ItemNum
  447. LEFT JOIN srm_polist_ds ds ON ds.ponumber = p.po AND ds.poline = 1 AND ds.tenant_id = @tenant_id
  448. WHERE NOT EXISTS (
  449. SELECT 1 FROM WorkOrdDetailTotalKB x WHERE x.RowNum = CAST(2026060400 + p.idx AS CHAR)
  450. );