# 報價單>編輯>暫存 * 檢查 ``` 2.3.2 增加檢查ebl_quote.quote_status = 'APPROVED' 時該張報價單不可修改儲存、不送出,則顯示警示訊息: msg.061。 2.4.1 增加檢查若ebl_quote.is_lock = 'Y',則顯示警示訊息: msg.462。 2.5.7 詢價單號”<>NULL時,檢查更新前當下的ebl_rfq2.lst_upd_date WHERE company_id = ? AND rfq_id = ? AND negotiation_times = ? 和進入報價頁面時的ebl_rfq2.lst_upd_date必須相同才可更新table,否則顯示警示訊息: msg.064。 2.5.8 檢查更新前當下的ebl_quote.lst_upd_date和進入報價頁面時的ebl_quote.lst_upd_date必須相同才可更新table,否則顯示警示訊息: msg.064。 ``` * Insert/Update Table 2.5.1 UPDATE ebl_quote,見附表八。 2.5.2 UPDATE ebl_quote_location,見附表九。 2.5.3 INSERT/UPDATE/DELETE ebl_quote_fee_part, 新增計價代碼,執行INSERT,見附表十。 修改計價代碼,執行UPDATE,見附表十。 刪除計價代碼,執行DELETE WHERE company_id = ? AND quote_id = ? AND item = ?。 2.5.4 先DELETE ebl_quote_fee_part_range再INSERT,見附表十一。 2.5.5 INSERT/UPDATE file_archive 新增的檔案INSERT,見附表十二 刪除的檔案UPDATE file_archive WHERE company_id = ? AND file_num = ?,見附表十六 2.5.6 若(ebl_quote.quote_type = 'SPE' AND module = 'EXP') AND (exp_shipment WHERE company_id = ? AND shipment_id = $ebl_quote.shipment_id資料存在),則INSERT/UPDATE exp_ship_instruction_plan,見附表十四 檢查exp_ship_instruction_plan WHERE company_id = ? AND shipment_id = ? AND flight_no = $ebl_quote.NVL(flight_no, voyage_no) AND lsp_id = $ebl_quote.lsp_id,若資料不存在,則INSERT,否則UPDATE。 若”運次編號”有變更,則舊資料需刪除,DELETE exp_ship_instruction_plan WHERE company_id = ? AND shipment_id = $舊.運次編號 AND quote_id = $ebl_quote.quote_id 若”航班號碼”、”航次”有變更,則舊資料需清空,UPDATE exp_ship_instruction_plan.quote_id = NULL WHERE company_id = ? AND shipment_id = ? AND flight_no = $舊.航班號碼、舊.航次 AND lsp_id = $ebl_quote.lsp_id * Input ``` // 不包含費用項目、路線、路線.費用 { // 基本資料 basicData: { companyId, quoteId, module shipBy, seaType, area, site, lspQuoteId, oaDays, fscSscCharges, rfqId, quoteType, quoteStatus, quoteEffectiveDate, quoteExpireDate, quoteDate, quoteWho, quoteWhoPhone, quoteWhoEmail, remark, attachment: [ // 新insert檔案格式長這樣 { "id": 0, "fileName": "測試大小.js", "key": null, "path": "/tmp/WresZsu6nj.js", "percent": 100, "type": "text/javascript", "trackingNo1": null, "attType": null, "companyId": null, "createWho": null, "createDate": null, "fileNum": null }, // 已經存在的檔案長這樣 { "fileName": "測試大小-61718.js", "key": 81068, "path": "/opt/toplogis_app/ebilling_file/C0107/ebilling/20230417/測試大小-61718.js", "trackingNo1": null, "attType": "OTH", "companyId": "C0107", "createWho": "sourcer", "createDate": "2023-04-17T17:16:03Z", "fileNum": 81068 } ] } // 新航線與包機才有 // 運送資訊 transportInfo: { invId, poId, trackingNo, preshipmentId, shipmentId, shipToId, shipToCompany, supplierId, supplierName, carrier, flightNo, vesselCompany, vesselName, voyageNo, etd, eta, fromPort, toPort, hawbId, urgentId, charter_fee, currency, } // 年季度跟其他可以一起儲存 location: { fromLocation, fromLocationType, toLocation, toLocationType, fromCountry, toCountry, fromArea, toArea, fromCountryPort: ebl_port_group.country_id+port_id, toCountryPort: ebl_port_group.country_id+port_id, containerYard, containerYardType, transMode, loadingPort, dischargePort, incoterms, forecastWeight, forecastWeightUnit, forecastWeightRange, forecastCtr, forecastCtrUnit, forecastCtrRange, forecastShipments, forecastShipmentsRange, quoteProcess, feeQty, feeCodeQty, carrier, vesselCompany, routeType, guaranteedSpace, boeClosingDate, etd, eta, p2pDays, p2dDays, remark1, remark2, remark3, quoteId, quoteStatus, } feePart: [ { item, isConfirm, reject_reason, feePartId, feeId, price_range: {報價級距>級距、收費單位}, freeTime, highSeasonFrom, highSeasonTo, forecastQtyTot, forecastQtyMin, forecastQtyMax, weightType, chargeType, remark1, remark2, remark, } ] } ``` * Output ``` // 使用 APIResult { success: 0, // 可不用塞 successMsg: [ { msg: 'msg.017', // 更新成功! params: {} }, ], fail: 0, // 可不用塞 failMsg: [] } ```