# `Sp_Quotation_CopyToQuotationData` (procedure) - **Type:** PROCEDURE - **Deterministic:** NO - **SQL data access:** CONTAINS SQL ## Parameters | # | Mode | Name | Type | |---|---|---|---| | 1 | IN | `sGuid` | `varchar(100)` | | 2 | IN | `sConfigId` | `varchar(100)` | | 3 | IN | `sControlName` | `varchar(100)` | | 4 | IN | `sLoginId` | `varchar(100)` | | 5 | IN | `sBrId` | `varchar(100)` | | 6 | IN | `sSuId` | `varchar(100)` | ## Body _Body is not pre-cached. To inspect: `mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE PROCEDURE `Sp_Quotation_CopyToQuotationData`'`._ ## Narrative **Business context:** 销售管理 → 销售单据 → 报价单 — "copy product technology/process card data into the quotation" helper. When the user picks a customer+product pair on a quote line, this proc finds the latest matching `mftproduct` 工艺卡 (process card) and copies its material/process/control hierarchy into the quote's `QuoQuotationslave_tmp` staging tree so the cost calculator can run against it. **What it does:** For each row in `QuoQuotationslave_tmp` (filtered by `sParentId=sGuid, sMakePerson=sLoginId, sBrandsId, sSubsidiaryId`), runs windowed prepared SQL over `viw_mftproduct` (`bCheck=1`) to pick the most recent process card per `(sCustomerId, sProductId)`, and writes its `sId` into `QuoQuotationslave_tmp.sProductTechnologyId`. Then iterates `mftproductmaterials` for those cards and inserts/copies materials, parts, processes, and controls into the corresponding `QuoQuotation{Materials,Process,Control}_Tmp` rows. **Invocation:** Java caller: `BusinessBaseServiceImpl` builds the `call Sp_Quotation_CopyToQuotationData(sGuid, sConfigId, sControlName, sMakePerson, sBrandsId, sSubsidiaryId)` SQL string when the quote form's CopyTo (复制) action fires — a generic-dispatch entry tied to the form's `sControlName`. Install: `script/标版/30100101/Sp_Quotation_CopyToQuotationData.sql`.