From a37aca60ff9914b0abb710f04118b22420f4f398 Mon Sep 17 00:00:00 2001 From: fy36 <1046342473@qq.com> Date: 星期三, 14 五月 2025 17:48:23 +0800 Subject: [PATCH] 1. 新增小货信息同步接口 --- lua_code/Lua/GK-API-04 GK-WMS-Receipt_Sync.lua | 213 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 213 insertions(+), 0 deletions(-) diff --git a/lua_code/Lua/GK-API-04 GK-WMS-Receipt_Sync.lua b/lua_code/Lua/GK-API-04 GK-WMS-Receipt_Sync.lua new file mode 100644 index 0000000..702ed7a --- /dev/null +++ b/lua_code/Lua/GK-API-04 GK-WMS-Receipt_Sync.lua @@ -0,0 +1,213 @@ +--[[ + 缂栫爜: + 鍚嶇О: Receipt_Sync + 浣滆�: 琚佸嘲 + 鍏ュ彛鍑芥暟锛歊eceipt_Sync + 鍔熻兘璇存槑: 鎺ユ敹鏉ヨ嚜涓婃父绯荤粺鐨�XML 鏍煎紡鏁版嵁锛屽苟瑙f瀽璇ユ暟鎹� 鍒涘缓鏀惰揣鍗曚富琛�Record_Order 鍜�鏀惰揣鍗曟槑缁嗘暟鎹�Receipt_Detail + + 鍙樻洿鍘嗗彶: + + XML 鏂囦欢浜や簰妗堜緥锛�+ +<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + </soap:Header> + <soapenv:Body> + <v1:InSmallPieceReq xmlns:v1="http://www.gkht.com/InReceive/INV/Ebs/Schemas/InSmallPiece/V1.0"> + <v1:SmallPiece_Input> + <v1:RESTHeader> + <v1:Responsibility/> + <v1:RespApplication/> + <v1:SecurityGroup/> + <v1:NLSLanguage>SIMPLIFIED CHINESE</v1:NLSLanguage> + <v1:Org_Id>0</v1:Org_Id> + </v1:RESTHeader> + <v1:InputParameters> + <!-- 绗竴涓敹璐у崟 --> + <v1:SmallPiece_TB> + <v1:orderNo>SO2025050701</v1:orderNo> + <v1:asnNo>KPD00002</v1:asnNo> + <v1:storerId>CGKHTY</v1:storerId> + <v1:ownerId>CGKHTY</v1:ownerId> + <v1:orderDate>2025-05-07</v1:orderDate> + <v1:priority>0</v1:priority> + <v1:memo>鏀惰揣鍗�澶囨敞</v1:memo> + <v1:SmallPiece_TB_ITEM> + <v1:orderItemId>1</v1:orderItemId> + <v1:skuId>100118100</v1:skuId> + <v1:skuStatus>AVL</v1:skuStatus> + <v1:qty>3</v1:qty> + <v1:batchNo>PHI00000000000001310</v1:batchNo> + <v1:produceCode>YL201126</v1:produceCode> + <v1:productDate>2016-05-23</v1:productDate> + <v1:expiryDate>2099-12-31</v1:expiryDate> + <v1:registerNo>鍥介鑽洃姊帮紙鍑�瀛�013</v1:registerNo> + </v1:SmallPiece_TB_ITEM> + <v1:SmallPiece_TB_ITEM> + <v1:orderItemId>2</v1:orderItemId> + <v1:skuId>100117231</v1:skuId> + <v1:skuStatus>AVL</v1:skuStatus> + <v1:qty>4</v1:qty> + <v1:batchNo>PHI00000000000001311</v1:batchNo> + <v1:produceCode>YL201127</v1:produceCode> + <v1:productDate>2023-05-23</v1:productDate> + <v1:expiryDate>2099-12-31</v1:expiryDate> + <v1:registerNo></v1:registerNo> + </v1:SmallPiece_TB_ITEM> + </v1:SmallPiece_TB> + <!-- 绗簩涓敹璐у崟 --> + <v1:SmallPiece_TB> + <v1:orderNo>SO2025050702</v1:orderNo> + <v1:asnNo>KPD00003</v1:asnNo> + <v1:storerId>CGKHTY</v1:storerId> + <v1:ownerId>CGKHTY</v1:ownerId> + <v1:orderDate>2025-05-07</v1:orderDate> + <v1:priority>1</v1:priority> + <v1:memo>鏀惰揣鍗�澶囨敞</v1:memo> + <v1:SmallPiece_TB_ITEM> + <v1:orderItemId>1</v1:orderItemId> + <v1:skuId>200000002</v1:skuId> + <v1:skuStatus>AVL</v1:skuStatus> + <v1:qty>2</v1:qty> + <v1:batchNo>PHI00000000000001312</v1:batchNo> + <v1:produceCode>YL201128</v1:produceCode> + <v1:productDate>2016-06-23</v1:productDate> + <v1:expiryDate>2099-12-31</v1:expiryDate> + <v1:registerNo>鍥介鑽洃姊帮紙鍑�瀛�014</v1:registerNo> + </v1:SmallPiece_TB_ITEM> + <v1:SmallPiece_TB_ITEM> + <v1:orderItemId>2</v1:orderItemId> + <v1:skuId>100117238</v1:skuId> + <v1:skuStatus>AVL</v1:skuStatus> + <v1:qty>5</v1:qty> + <v1:batchNo>PHI00000000000001313</v1:batchNo> + <v1:produceCode>YL201129</v1:produceCode> + <v1:productDate>2023-06-23</v1:productDate> + <v1:expiryDate>2099-12-31</v1:expiryDate> + <v1:registerNo></v1:registerNo> + </v1:SmallPiece_TB_ITEM> + </v1:SmallPiece_TB> + </v1:InputParameters> + </v1:SmallPiece_Input> + </v1:InSmallPieceReq> + </soapenv:Body> +</soapenv:Envelope> + +--]] + + +wms_base = require("wms_base") +xml = require("oi_base_xml") +mobox = require("OILua_JavelinExt") + +-- 鍒涘缓鏀惰揣鍗曟槑缁嗗璞★紙瀹屽叏淇濇寔鍘熸湁閫昏緫涓嶅彉锛�+local function create_receipt_detail(strLuaDEID, detail_item, no, header) + local receipt_detail = m3.AllocObject(strLuaDEID, "Receipt_Detail") + + -- 鍩烘湰鍏宠仈淇℃伅 + receipt_detail.row_no = detail_item.orderItemId + receipt_detail.receipt_no = no + + -- 鐗╂枡淇℃伅鏌ヨ + local material_info; + if detail_item.skuId ~= nil then + local nRet, mat_info = m3.GetDataObjByCondition(strLuaDEID, "Material", + "S_ITEM_CODE='" .. detail_item.skuId .. "'") + if nRet ~= 0 then + lua.Stop(strLuaDEID, "鐗╂枡鏁版嵁鑾峰彇澶辫触锛�, mat_info) + else + material_info = mat_info + end + end + + -- 鏁伴噺鐩稿叧瀛楁 + receipt_detail.qty = lua.Get_NumAttrValue(detail_item.qty) + receipt_detail.acc_put_qty = lua.Get_NumAttrValue("0") + receipt_detail.acc_unq_qty = lua.Get_NumAttrValue("0") + receipt_detail.acc_c_qty = lua.Get_NumAttrValue("0") + + receipt_detail.item_code = detail_item.skuId + receipt_detail.item_state = detail_item.skuStatus + receipt_detail.wu = "kg" + + -- 浠庣墿鏂欎俊鎭幏鍙栫殑瀛楁 + receipt_detail.item_name = material_info and material_info.item_name or "" + receipt_detail.net_weight = material_info and material_info.weight or 0 + receipt_detail.gross_weight = material_info and material_info.weight or 0 + receipt_detail.uom = material_info and material_info.uom or "" + + -- 鎵规鍙婃棩鏈熶俊鎭�+ receipt_detail.batch_no = detail_item.produceCode + receipt_detail.prd_date = detail_item.productDate + receipt_detail.exp_date = detail_item.expiryDate + + -- 鍏朵粬涓氬姟瀛楁 + receipt_detail.udf01 = detail_item.registerNo + receipt_detail.storer = header.storerId -- 淇瀛楁鍚嶏細storeId -> storerId锛堟牴鎹甔ML鏍蜂緥锛�+ receipt_detail.owner = header.ownerId + + local nRet, result = m3.CreateDataObj(strLuaDEID, receipt_detail) + if nRet ~= 0 then + lua.Stop(strLuaDEID, "鍒涘缓鏀惰揣鏄庣粏璁板綍澶辫触", "杩斿洖鍊� .. nRet .. " 杩斿洖鏁版嵁:" .. result) + end + + return nRet, result +end + +function Receipt_Sync(strLuaDEID) + -- 鑾峰彇骞惰В鏋怷ML + local nRet, soap_xml = mobox.getCurEditDataPacket(strLuaDEID) + if nRet ~= 0 then lua.Stop(strLuaDEID, "鏃犳硶鑾峰彇鏁版嵁鍖�" .. soap_xml) return end + + local nRet, parsed_data = xml.parse(soap_xml) + if nRet ~= 0 then lua.Stop(strLuaDEID, "XML鏍煎紡闈炴硶!") return end + + -- 瑙f瀽XML鏁版嵁缁撴瀯锛堜慨鏀逛负鏀寔澶氫釜鏀惰揣鍗曪級 + local receipt_data = parsed_data.Envelope.Body.InSmallPieceReq.SmallPiece_Input + local input_params = receipt_data.InputParameters + + -- 鍒ゆ柇鏄崟涓敹璐у崟杩樻槸澶氫釜鏀惰揣鍗�+ local receipt_headers = input_params.SmallPiece_TB + if receipt_headers.orderNo then -- 濡傛灉鏄崟涓敹璐у崟 + receipt_headers = {receipt_headers} -- 杞负鍗曞厓绱犳暟缁�+ end + + -- 鑾峰彇甯搁噺 + local nRet1, CONST_FACTORY = wms_base.Get_sConst2(strLuaDEID, "GK_Default_Factory") + local nRet2, CONST_WH = wms_base.Get_sConst2(strLuaDEID, "GK_Default_Warehouse") + if nRet1 ~= 0 then lua.Stop(strLuaDEID, "鑾峰彇榛樿宸ュ巶鏍囪瘑澶辫触" .. CONST_FACTORY) end + if nRet2 ~= 0 then lua.Stop(strLuaDEID, "鑾峰彇榛樿浠撳簱缂栧彿澶辫触" .. CONST_WH) end + + -- 澶勭悊姣忎釜鏀惰揣鍗曪紙鏂板寰幆锛�+ for _, header in ipairs(receipt_headers) do + -- 鍒涘缓涓昏〃璁板綍 + local receipt = m3.AllocObject(strLuaDEID, "Receipt_Order") + receipt.no = header.orderNo + receipt.asn_no = header.asnNo + receipt.op_date = header.orderDate + receipt.priority = header.priority + receipt.note = header.memo + receipt.bs_type = "SMALL_PIECE" + receipt.factory = CONST_FACTORY + receipt.wh_code = CONST_WH + + local nRet, result = m3.CreateDataObj(strLuaDEID, receipt) + if nRet ~= 0 then lua.Stop(strLuaDEID, "鍒涘缓鏀惰揣鍗曚富琛ㄥけ璐�" .. result) end + + -- 澶勭悊鏄庣粏 + local detail_items = header.SmallPiece_TB_ITEM + if not detail_items then lua.Stop(strLuaDEID, "缂哄皯鏀惰揣鍗曟槑缁嗘暟鎹�") end + + -- 鍒ゆ柇鏄崟涓槑缁嗚繕鏄涓槑缁�+ if detail_items.orderItemId then -- 濡傛灉鏄崟涓槑缁�+ detail_items = {detail_items} -- 杞负鍗曞厓绱犳暟缁�+ end + + for _, detail_item in ipairs(detail_items) do + nRet = create_receipt_detail(strLuaDEID, detail_item, receipt.no, header) + if nRet ~= 0 then + lua.Stop(strLuaDEID, "鍒涘缓鏀惰揣鏄庣粏澶辫触: skuId=" .. detail_item.skuId .. ", batchNo=" .. detail_item.batchNo) + end + end + end +end \ No newline at end of file -- Gitblit v1.9.1