S1S4_UAT_P0_execute_write.sql 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. -- S1-S4 P0 UAT write (AIDOP tenant 797403760988229)
  2. -- Batch: S1S4_UAT_20260604_RQ_V1
  3. SET @tenant_id := 797403760988229;
  4. SET @batch_no := 'S1S4_UAT_20260604_RQ_V1';
  5. SET @operator_id := 1300000000111;
  6. SET @operator_name := 'UAT数据导入';
  7. SET @now := NOW();
  8. SET @factory_id := 797403760988229;
  9. SET @id_base := 9106000400000001;
  10. DROP TEMPORARY TABLE IF EXISTS tmp_s1_uat_so;
  11. CREATE TEMPORARY TABLE tmp_s1_uat_so (
  12. bill_no VARCHAR(64) NOT NULL PRIMARY KEY,
  13. target_id BIGINT NOT NULL,
  14. custom_no VARCHAR(64) NULL,
  15. custom_name VARCHAR(128) NULL,
  16. order_date DATETIME NULL,
  17. delivery_date DATETIME NULL,
  18. urgent INT DEFAULT 0
  19. );
  20. INSERT INTO tmp_s1_uat_so VALUES
  21. ('MPO482024102300001',@id_base+1,'CUST0005','WKQXGFYXGE','2024-10-23','2024-10-23',1),
  22. ('MPO482025010900002',@id_base+2,'CUST0005','WKQXGFYXGE','2025-01-09','2025-01-09',1),
  23. ('MPO482024120200003',@id_base+3,'CUST0005','WKQXGFYXGE','2024-12-02','2024-12-02',1),
  24. ('MPO482025012100001',@id_base+4,'CUST0005','WKQXGFYXGE','2025-01-21','2025-01-21',1),
  25. ('MPO482025011300004',@id_base+5,'CUST0005','WKQXGFYXGE','2025-01-13','2025-01-13',1);
  26. DROP TEMPORARY TABLE IF EXISTS tmp_s1_uat_so_line;
  27. CREATE TEMPORARY TABLE tmp_s1_uat_so_line (
  28. target_id BIGINT NOT NULL PRIMARY KEY,
  29. source_entry VARCHAR(32) NOT NULL,
  30. bill_no VARCHAR(64) NOT NULL,
  31. entry_seq INT NOT NULL,
  32. item_number VARCHAR(64) NULL,
  33. qty DECIMAL(18,4) NULL,
  34. plan_date DATETIME NULL
  35. );
  36. INSERT INTO tmp_s1_uat_so_line VALUES
  37. (@id_base+101,'604078133665861','MPO482024102300001',1,'3121C0035',1500,'2024-10-29'),
  38. (@id_base+102,'604078133665862','MPO482024102300001',2,'1A0C885',3500,'2024-10-29'),
  39. (@id_base+103,'631771616395333','MPO482025010900002',1,'3121C0035',850,'2025-01-18'),
  40. (@id_base+104,'631771616399429','MPO482025010900002',2,'3124C0015',850,'2025-01-21'),
  41. (@id_base+105,'618329124159557','MPO482024120200003',1,'1AB9275',800,'2024-12-03'),
  42. (@id_base+106,'636029208526917','MPO482025012100001',1,'91C0D2C',600,'2025-02-13'),
  43. (@id_base+107,'636029208526918','MPO482025012100001',2,'91CC0231',100,'2025-02-13'),
  44. (@id_base+108,'633180644831301','MPO482025011300004',1,'322AD001',5500,'2025-02-11'),
  45. (@id_base+109,'633180644831302','MPO482025011300004',2,'3221C0031',5500,'2025-02-18');
  46. DROP TEMPORARY TABLE IF EXISTS tmp_s2_uat_morder;
  47. CREATE TEMPORARY TABLE tmp_s2_uat_morder (
  48. target_mo_id BIGINT NOT NULL PRIMARY KEY,
  49. target_me_id BIGINT NOT NULL,
  50. source_entry VARCHAR(32) NOT NULL,
  51. bill_no VARCHAR(64) NOT NULL,
  52. morder_no VARCHAR(128) NOT NULL,
  53. product_code VARCHAR(128) NULL,
  54. need_number DECIMAL(23,10) NULL
  55. );
  56. INSERT INTO tmp_s2_uat_morder VALUES
  57. (@id_base+201,@id_base+401,'604078133665861','MPO482024102300001','M500029406','32100035',1500),
  58. (@id_base+202,@id_base+402,'604078133665862','MPO482024102300001','M500029407','1000885',3500),
  59. (@id_base+203,@id_base+403,'631771616395333','MPO482025010900002','M500067189','32100035',850),
  60. (@id_base+204,@id_base+404,'631771616399429','MPO482025010900002','M500067190','32400015',850),
  61. (@id_base+205,@id_base+405,'618329124159557','MPO482024120200003','M500053856','1009275',800),
  62. (@id_base+206,@id_base+406,'636029208526917','MPO482025012100001','M500077552','93000230',600),
  63. (@id_base+207,@id_base+407,'636029208526918','MPO482025012100001','M500077553','93000231',100),
  64. (@id_base+208,@id_base+408,'633180644831301','MPO482025011300004','M500070779','32100001',5500),
  65. (@id_base+209,@id_base+409,'633180644831302','MPO482025011300004','M500070780','32100031',5500);
  66. DROP TEMPORARY TABLE IF EXISTS tmp_s3_uat_pr;
  67. CREATE TEMPORARY TABLE tmp_s3_uat_pr (
  68. voucher BIGINT NOT NULL PRIMARY KEY,
  69. pr_billno VARCHAR(64) NOT NULL,
  70. morder_no VARCHAR(128) NOT NULL,
  71. bill_no VARCHAR(64) NOT NULL,
  72. icitem_code VARCHAR(64) NULL,
  73. pr_rqty DECIMAL(18,4) NULL,
  74. mo_id BIGINT NOT NULL
  75. );
  76. INSERT INTO tmp_s3_uat_pr VALUES
  77. (@id_base+501,'PR-UAT-20260604-01','M500029406','MPO482024102300001','32100035',1500,@id_base+201),
  78. (@id_base+502,'PR-UAT-20260604-02','M500029407','MPO482024102300001','1000885',3500,@id_base+202),
  79. (@id_base+503,'PR-UAT-20260604-03','M500067189','MPO482025010900002','32100035',850,@id_base+203),
  80. (@id_base+504,'PR-UAT-20260604-04','M500067190','MPO482025010900002','32400015',850,@id_base+204),
  81. (@id_base+505,'PR-UAT-20260604-05','M500053856','MPO482024120200003','1009275',800,@id_base+205),
  82. (@id_base+506,'PR-UAT-20260604-06','M500077552','MPO482025012100001','93000230',600,@id_base+206),
  83. (@id_base+507,'PR-UAT-20260604-07','M500077553','MPO482025012100001','93000231',100,@id_base+207),
  84. (@id_base+508,'PR-UAT-20260604-08','M500070779','MPO482025011300004','32100001',5500,@id_base+208),
  85. (@id_base+509,'PR-UAT-20260604-09','M500070780','MPO482025011300004','32100031',5500,@id_base+209);
  86. DROP TEMPORARY TABLE IF EXISTS tmp_s3_uat_po_line;
  87. CREATE TEMPORARY TABLE tmp_s3_uat_po_line (
  88. pur_ord VARCHAR(48) NOT NULL,
  89. line_no INT NOT NULL,
  90. sales_ord VARCHAR(64) NOT NULL,
  91. work_ord VARCHAR(128) NULL,
  92. item_num VARCHAR(60) NOT NULL,
  93. qty DECIMAL(15,5) NOT NULL,
  94. PRIMARY KEY (pur_ord, line_no)
  95. );
  96. INSERT INTO tmp_s3_uat_po_line VALUES
  97. ('PO-UAT-20260604-01',1,'MPO482024102300001','M500029406','3121C0035',1500),
  98. ('PO-UAT-20260604-01',2,'MPO482024102300001','M500029407','1A0C885',3500),
  99. ('PO-UAT-20260604-02',1,'MPO482025010900002','M500067189','3121C0035',850),
  100. ('PO-UAT-20260604-02',2,'MPO482025010900002','M500067190','3124C0015',850),
  101. ('PO-UAT-20260604-03',1,'MPO482024120200003','M500053856','1AB9275',800),
  102. ('PO-UAT-20260604-03',2,'MPO482024120200003','M500053856','RAW-SUB-01',200),
  103. ('PO-UAT-20260604-04',1,'MPO482025012100001','M500077552','91C0D2C',600),
  104. ('PO-UAT-20260604-04',2,'MPO482025012100001','M500077553','91CC0231',100),
  105. ('PO-UAT-20260604-05',1,'MPO482025011300004','M500070779','322AD001',5500),
  106. ('PO-UAT-20260604-05',2,'MPO482025011300004','M500070780','3221C0031',5500);
  107. DROP TEMPORARY TABLE IF EXISTS tmp_s3_uat_po_hdr;
  108. CREATE TEMPORARY TABLE tmp_s3_uat_po_hdr (
  109. pur_ord VARCHAR(48) NOT NULL PRIMARY KEY,
  110. sales_ord VARCHAR(64) NOT NULL,
  111. work_ord VARCHAR(128) NULL
  112. );
  113. INSERT INTO tmp_s3_uat_po_hdr
  114. SELECT pur_ord, MIN(sales_ord), MIN(work_ord) FROM tmp_s3_uat_po_line GROUP BY pur_ord;
  115. DROP TEMPORARY TABLE IF EXISTS tmp_s4_uat_ship;
  116. CREATE TEMPORARY TABLE tmp_s4_uat_ship (
  117. ship_id BIGINT NOT NULL PRIMARY KEY,
  118. po_billno VARCHAR(48) NOT NULL,
  119. shddh VARCHAR(64) NOT NULL
  120. );
  121. INSERT INTO tmp_s4_uat_ship VALUES
  122. (@id_base+601,'PO-UAT-20260604-01','SH-UAT-20260604-01'),
  123. (@id_base+602,'PO-UAT-20260604-02','SH-UAT-20260604-02'),
  124. (@id_base+603,'PO-UAT-20260604-03','SH-UAT-20260604-03');
  125. START TRANSACTION;
  126. INSERT INTO crm_seorder (
  127. Id, bill_no, order_type, custom_no, custom_name,
  128. date, rdate, urgent, bill_from, closed, IsDeleted,
  129. create_by_name, create_time, update_by_name, update_time,
  130. tenant_id, factory_id
  131. )
  132. SELECT target_id, bill_no, 1, custom_no, custom_name,
  133. order_date, delivery_date, urgent,
  134. CONCAT('UAT导入:', @batch_no), 0, 0,
  135. @operator_name, @now, @operator_name, @now,
  136. @tenant_id, @factory_id
  137. FROM tmp_s1_uat_so;
  138. INSERT INTO crm_seorderentry (
  139. Id, seorder_id, bill_no, entry_seq, item_number,
  140. qty, plan_date, date, IsDeleted,
  141. create_by_name, create_time, update_by_name, update_time,
  142. tenant_id, factory_id, seorderentry_id
  143. )
  144. SELECT l.target_id, s.target_id, l.bill_no, l.entry_seq, l.item_number,
  145. l.qty, l.plan_date, s.order_date, 0,
  146. @operator_name, @now, @operator_name, @now,
  147. @tenant_id, @factory_id, l.target_id
  148. FROM tmp_s1_uat_so_line l
  149. JOIN tmp_s1_uat_so s ON s.bill_no = l.bill_no;
  150. INSERT INTO mes_morder (
  151. Id, morder_no, morder_date, morder_state, product_code, product_name,
  152. need_number, morder_production_number, IsDeleted,
  153. create_by_name, create_time, update_by_name, update_time,
  154. tenant_id, factory_id
  155. )
  156. SELECT target_mo_id, morder_no, @now, 'Released', product_code, product_code,
  157. need_number, need_number, 0,
  158. @operator_name, @now, @operator_name, @now,
  159. @tenant_id, @factory_id
  160. FROM tmp_s2_uat_morder;
  161. INSERT INTO mes_moentry (
  162. Id, moentry_moid, moentry_mono, soentry_id, fbill_no,
  163. need_number, morder_production_number, IsDeleted,
  164. create_by_name, create_time, tenant_id, factory_id
  165. )
  166. SELECT m.target_me_id, m.target_mo_id, m.morder_no, l.target_id, m.bill_no,
  167. m.need_number, m.need_number, 0,
  168. @operator_name, @now, @tenant_id, @factory_id
  169. FROM tmp_s2_uat_morder m
  170. JOIN tmp_s1_uat_so_line l ON l.source_entry = m.source_entry;
  171. INSERT INTO WorkOrdMaster (
  172. Domain, WorkOrd, ItemNum, Status, QtyOrded, QtyCompleted, LbrVar,
  173. OrdDate, DueDate, SalesJob, BusinessID, IsActive, IsConfirm, Priority, Urgent,
  174. tenant_id, CreateTime, UpdateTime
  175. )
  176. SELECT '8010', morder_no, product_code, 'R',
  177. need_number, 0, 0, @now, DATE_ADD(@now, INTERVAL 14 DAY), bill_no,
  178. 0, 1, 1, 0, 0, @tenant_id, @now, @now
  179. FROM tmp_s2_uat_morder;
  180. INSERT INTO srm_pr_main (
  181. Id, pr_billno, pr_purchaseid, pr_purchasenumber, pr_purchasename,
  182. pr_rqty, pr_aqty, pr_sqty, icitem_id, icitem_name,
  183. state, pr_type, currencytype,
  184. create_by, create_by_name, create_time, update_by, update_by_name, update_time,
  185. tenant_id, factory_id, IsDeleted, IsRequireGoods
  186. )
  187. SELECT p.voucher, p.pr_billno, p.mo_id, p.morder_no, p.morder_no,
  188. p.pr_rqty, 0, 0, 0, p.icitem_code,
  189. 1, 1, 0,
  190. @operator_id, @operator_name, @now, @operator_id, @operator_name, @now,
  191. @tenant_id, @factory_id, 0, 0
  192. FROM tmp_s3_uat_pr p;
  193. INSERT INTO PurOrdMaster (
  194. OwnerApplication, APAcct, CostCtr, APSubAcct, Bank, BillTo, BlanketOrd, Buyer, CloseDate,
  195. CommentIndex, Confirming, Consignment, Contact, Contract, CreditTermsInt, CreditTerms, Curr,
  196. CycleCode, DeliverTo, Disc, Domain, DueDate, DutyType, BlanketStart, BlanketEnd, ExchRate,
  197. ERSOption, EstVal, Sequence, ExchRate1, ExchRate2, RateType, FixedPrice, FixedRate, FOB, Frt,
  198. FSMType, FSTID, InvoicesVia, EMTPO, Language, MaxAgingDays, PurOrd, OrdDate, PartialOK,
  199. AmtPrepaid, LastPriceDt, PricingDate, PrintPO, Project, DiscTbl, PriceTbl, ERSPriceListOption,
  200. PST, PSTID, Recurr, `Release`, Rel, ReqBy, Revision, Remark, Scheduled, SchedulesVia,
  201. ServiceCharge, ShipTo, ShipVia, Site, SecondarySOCrHold, PrimarySO, SpecialCharge, Status,
  202. Taxable, TaxClass, TaxDate, TaxEnvironment, Tax1, Tax2, Tax3, TaxUsage, TermsofTrade,
  203. TransportDays, Typed, Ufld1, Ufld2, EnteredBy, Supp, Transm, BusinessID, CreateUser,
  204. UpdateUser, CreateTime, UpdateTime, EffTime, IsActive, IsConfirm, Potype, Department,
  205. IsChanged, TaxIn, Amt, `Usage`, CustAddress, CustContact, CustPhone, SalesOrd, CustPO,
  206. IsPriceChanged, CustName, Rev, RoleNo, InvoiceType, PricingMethod, ERPfld1, ERPWorkOrd,
  207. WorkOrd, tenant_id
  208. )
  209. SELECT
  210. m.OwnerApplication, m.APAcct, m.CostCtr, m.APSubAcct, m.Bank, m.BillTo, m.BlanketOrd, @operator_name, m.CloseDate,
  211. m.CommentIndex, m.Confirming, m.Consignment, m.Contact, m.Contract, m.CreditTermsInt, m.CreditTerms, m.Curr,
  212. m.CycleCode, m.DeliverTo, m.Disc, m.Domain, m.DueDate, m.DutyType, m.BlanketStart, m.BlanketEnd, m.ExchRate,
  213. m.ERSOption, m.EstVal, m.Sequence, m.ExchRate1, m.ExchRate2, m.RateType, m.FixedPrice, m.FixedRate, m.FOB, m.Frt,
  214. m.FSMType, m.FSTID, m.InvoicesVia, m.EMTPO, m.Language, m.MaxAgingDays, h.pur_ord, @now, m.PartialOK,
  215. m.AmtPrepaid, m.LastPriceDt, m.PricingDate, m.PrintPO, m.Project, m.DiscTbl, m.PriceTbl, m.ERSPriceListOption,
  216. m.PST, m.PSTID, m.Recurr, m.`Release`, m.Rel, m.ReqBy, m.Revision, CONCAT('UAT:', @batch_no), m.Scheduled, m.SchedulesVia,
  217. m.ServiceCharge, m.ShipTo, m.ShipVia, m.Site, m.SecondarySOCrHold, m.PrimarySO, m.SpecialCharge, m.Status,
  218. m.Taxable, m.TaxClass, m.TaxDate, m.TaxEnvironment, m.Tax1, m.Tax2, m.Tax3, m.TaxUsage, m.TermsofTrade,
  219. m.TransportDays, m.Typed, m.Ufld1, m.Ufld2, m.EnteredBy, 'VEN00060', m.Transm, m.BusinessID, @operator_name,
  220. @operator_name, @now, @now, m.EffTime, m.IsActive, m.IsConfirm, 'PT', m.Department,
  221. m.IsChanged, m.TaxIn, m.Amt, m.`Usage`, m.CustAddress, m.CustContact, m.CustPhone, h.sales_ord, m.CustPO,
  222. m.IsPriceChanged, m.CustName, m.Rev, m.RoleNo, m.InvoiceType, m.PricingMethod, m.ERPfld1, m.ERPWorkOrd,
  223. h.work_ord, @tenant_id
  224. FROM tmp_s3_uat_po_hdr h
  225. CROSS JOIN (SELECT * FROM PurOrdMaster WHERE PurOrd='PW202605100002' AND tenant_id=@tenant_id LIMIT 1) m;
  226. INSERT INTO PurOrdDetail (
  227. QtyBO, RctCost, CreditTermsInt, UpdateCurrentCost, CumReceived1, CumReceived2, CumReceived3, CumReceived4,
  228. Disc, FixedPrice, InspectReq, SingleLot, SupplyPer, PurOrd, PST, PackingSlipQty, PayUMConv, PurCost,
  229. RctQty, QtyOrded, QtyReceived, QtyReturned, Active, QtyReleased, RctUMConversion, Scheduled, ScheduledChanged,
  230. SchedMRPReq, SafetyDays, SafetyHours, StdCost, Taxable, TaxIn, MaxTaxableAmt, TransportHours, UMConversion, VAT,
  231. IsActive, IsConfirm, Potype, IsChanged, TaxRate, IsRounding, ReceiptQty, BarCodeQty, IsClosed, QtyReturnedRefund, CumQtyBO,
  232. Line, ItemNum, UM, DueDate, LotSerial, PurOrdRecID, Status, WorkOrd,
  233. CreateUser, CreateTime, UpdateUser, UpdateTime, tenant_id
  234. )
  235. SELECT
  236. 0,0,0,0,0,0,0,0,0,0,0,0,0,pl.pur_ord,0,0,1,0,0,pl.qty,0,0,1,0,1,0,0,0,0,0,0,1,1,0,0,1,0,
  237. 1,1,'PT',0,0,0,0,0,0,0,0,
  238. pl.line_no, pl.item_num, 'EA', DATE_ADD(@now, INTERVAL 14 DAY), '', 0, 'O', pl.work_ord,
  239. @operator_name, @now, @operator_name, @now, @tenant_id
  240. FROM tmp_s3_uat_po_line pl;
  241. SET @ds_seq := 800;
  242. INSERT INTO srm_polist_ds (
  243. Id, domain, icdsid, dsnum, status, itemnum, um, purgroup,
  244. suppliercode, supplier, ponumber, poline, schedqty, needdate, remarks, tenant_id
  245. )
  246. SELECT
  247. @id_base+(@ds_seq:=@ds_seq+1),
  248. '8010', @id_base+800, CONCAT('DS-', pl.pur_ord, '-', pl.line_no),
  249. 'P', pl.item_num, 'EA', 'PG01', 'VEN00060', 'VEN00060',
  250. pl.pur_ord, pl.line_no, pl.qty, DATE_ADD(@now, INTERVAL 14 DAY), '', @tenant_id
  251. FROM tmp_s3_uat_po_line pl
  252. CROSS JOIN (SELECT @ds_seq:=800) init;
  253. INSERT INTO scm_shd (id, po_billno, shddh, sh_purchase_num, estimated_delivery_date, tjrxm, tjrq, state)
  254. SELECT ship_id, po_billno, shddh, 'VEN00060', DATE_ADD(@now, INTERVAL 7 DAY), @operator_name, DATE_FORMAT(@now,'%Y-%m-%d'), 0
  255. FROM tmp_s4_uat_ship;
  256. SET @zb_seq := 700;
  257. INSERT INTO scm_shdzb (id, glid, sh_material_code, sh_delivery_quantity, po_bill, po_billline)
  258. SELECT @id_base+(@zb_seq:=@zb_seq+1), CAST(s.ship_id AS CHAR), pl.item_num, pl.qty, pl.pur_ord, CAST(pl.line_no AS CHAR)
  259. FROM tmp_s3_uat_po_line pl
  260. JOIN tmp_s4_uat_ship s ON s.po_billno = pl.pur_ord
  261. CROSS JOIN (SELECT @zb_seq:=700) init;
  262. COMMIT;
  263. SELECT 'crm_seorder' AS tbl, COUNT(*) cnt FROM crm_seorder WHERE tenant_id=@tenant_id AND bill_from LIKE CONCAT('UAT导入:',@batch_no,'%');
  264. SELECT 'crm_seorderentry' AS tbl, COUNT(*) cnt FROM crm_seorderentry WHERE tenant_id=@tenant_id AND bill_no IN (SELECT bill_no FROM tmp_s1_uat_so);
  265. SELECT 'mes_morder' AS tbl, COUNT(*) cnt FROM mes_morder WHERE tenant_id=@tenant_id AND morder_no LIKE 'M5000%';
  266. SELECT 'srm_pr_main' AS tbl, COUNT(*) cnt FROM srm_pr_main WHERE tenant_id=@tenant_id AND pr_billno LIKE 'PR-UAT-20260604-%';
  267. SELECT 'PurOrdMaster' AS tbl, COUNT(*) cnt FROM PurOrdMaster WHERE tenant_id=@tenant_id AND Remark LIKE CONCAT('%',@batch_no,'%');
  268. SELECT 'scm_shd' AS tbl, COUNT(*) cnt FROM scm_shd WHERE shddh LIKE 'SH-UAT-20260604-%';
  269. SELECT so.bill_no, COUNT(DISTINCT se.Id) line_cnt, COUNT(DISTINCT mo.Id) morder_cnt, COUNT(DISTINCT pom.PurOrd) po_cnt
  270. FROM crm_seorder so
  271. LEFT JOIN crm_seorderentry se ON se.seorder_id=so.Id AND se.tenant_id=@tenant_id
  272. LEFT JOIN mes_moentry me ON me.soentry_id=se.Id AND me.tenant_id=@tenant_id
  273. LEFT JOIN mes_morder mo ON mo.Id=me.moentry_moid AND mo.tenant_id=@tenant_id
  274. LEFT JOIN PurOrdMaster pom ON pom.SalesOrd=so.bill_no AND pom.tenant_id=@tenant_id
  275. LEFT JOIN PurOrdDetail pd ON pd.PurOrd=pom.PurOrd AND pd.tenant_id=@tenant_id
  276. WHERE so.tenant_id=@tenant_id AND so.bill_from LIKE CONCAT('UAT导入:',@batch_no,'%')
  277. GROUP BY so.bill_no;