create or replace procedure ModifyLadingItemPack ( ASoditemguid varchar2, --合同电子仓单明细GUID
ALadingitemGUID varchar2, --提单子项GUID ACDResID varchar2, --电子仓单号 APackageIDList varchar2, --仓单捆包具体GUID列表 Aladingnum float, Aladingpieces float, AReturnValue out integer --返回值: ) is ALadingItem_PackagesGUID varchar(32); ATempIDList varchar2(4000); AID varchar2(32); APackageWeight float; APackagePiece float; ATotalPackWeight float; begin AReturnValue := 1; ATempIDList := APackageIDList; APackageWeight :=0; APackagePiece :=0;
---------------------------------更新合同电子仓单明细---------------------------
while ( INSTR(ATempIDList,':' ) > 0 ) or ( LENGTH(ATempIDList ) > 0 ) loop if INSTR(ATempIDList,':' ) > 0 then
select sys_guid() into ALadingItem_PackagesGUID from dual; AID := SUBSTR(ATempIDList ,1,INSTR( ATempIDList,':') - 1 ); ATempIDList := SUBSTR(ATempIDList,INSTR( ATempIDList,':') + 1 , LENGTH(ATempIDList) - INSTR(ATempIDList,':'));
---------------------------------提单捆包明细---------------------------------- insert into HT_LadingItem_packages(sGUID, sLadingItemGUID, sCDResID, sPackageID) values(ALadingItem_PackagesGUID, ALadingitemGUID, ACDResID,AID);
---------------------------------更新仓单捆包明细状态--------------------------- UPDATE ZY_Packages SET state = 5 WHERE SGUID = AID;
select fWeight into ATotalPackWeight from ZY_Packages where sGUID=AID;
APackageWeight:=APackageWeight+ATotalPackWeight; APackagePiece:=APackagePiece+1;
else AID := ATempIDList; ATempIDList := ''; end if; end loop;
update HT_SODItem set fLadingNum=fLadingNum+APackageWeight,fLadingPieces=fLadingPieces+APackagePiece where sGUID=ASoditemguid;
COMMIT; EXCEPTION WHEN OTHERS THEN BEGIN AReturnValue := 99; ROLLBACK; END; end;
|