$PBExportHeader$f_mtrl_storageid.srf global type f_mtrl_storageid from function_object end type forward prototypes global function long f_mtrl_storageid (long arg_scid, long arg_mtrlid) end prototypes global function long f_mtrl_storageid (long arg_scid, long arg_mtrlid);Long rst_storageid Long cnt rst_storageid = 0 //1.先取默认存放仓库 SELECT top 1 u_mtrl_storage.storageid INTO :rst_storageid FROM u_mtrl_storage INNER JOIN u_storage ON u_mtrl_storage.storageid = u_storage.storageid WHERE (u_storage.inuse = 1) AND (u_storage.ifmrp = 1) AND (u_mtrl_storage.dft = 1) AND (u_storage.scid = :arg_scid) And (u_mtrl_storage.mtrlid = :arg_mtrlid); IF sqlca.SQLCode <> 0 THEN rst_storageid = 0 END IF IF IsNull(rst_storageid) THEN rst_storageid = 0 //2.没有默认存放,选存放仓库 IF rst_storageid = 0 THEN SELECT top 1 u_mtrl_storage.storageid INTO :rst_storageid FROM u_mtrl_storage INNER JOIN u_storage ON u_mtrl_storage.storageid = u_storage.storageid WHERE (u_storage.inuse = 1) AND (u_storage.ifmrp = 1) AND (u_storage.scid = :arg_scid) And (u_mtrl_storage.mtrlid = :arg_mtrlid); IF sqlca.SQLCode <> 0 THEN rst_storageid = 0 END IF IF IsNull(rst_storageid) THEN rst_storageid = 0 END IF //3.没有存放,选最后一次进仓 IF rst_storageid = 0 THEN SELECT top 1 u_inware.storageid INTO :rst_storageid FROM u_inware,u_inwaremx,u_storage WHERE u_inware.scid = u_inwaremx.scid AND u_inware.inwareid = u_inwaremx.inwareid AND u_inware.storageid = u_storage.storageid AND u_inware.flag = 1 AND u_inwaremx.mtrlid = :arg_mtrlid AND u_inware.scid = :arg_scid AND u_storage.ifmrp = 1 AND u_storage.ifscll = 1 Order By u_inware.inwareid Desc; IF sqlca.SQLCode <> 0 THEN rst_storageid = 0 IF IsNull(rst_storageid) THEN rst_storageid = 0 END IF /* SELECT top 1 u_inware.storageid INTO :rst_storageid FROM u_inware,u_inwaremx,u_storage WHERE u_inware.scid = u_inwaremx.scid AND u_inware.inwareid = u_inwaremx.inwareid AND u_inware.storageid = u_storage.storageid // AND u_inware.billtype = 1 AND u_inware.flag = 1 AND u_inwaremx.mtrlid = :arg_mtrlid AND u_inware.scid = :arg_scid and u_storage.ifmrp = 1 and u_storage.ifscll = 1 Order By u_inware.inwareid Desc; IF sqlca.SQLCode <> 0 THEN rst_storageid = 0 IF IsNull(rst_storageid) THEN rst_storageid = 0 IF rst_storageid = 0 THEN SELECT count(*) INTO :cnt FROM u_mtrl_storage,u_storage WHERE u_mtrl_storage.storageid = u_storage.storageid AND u_mtrl_storage.mtrlid = :arg_mtrlid AND u_storage.scid = :arg_scid; IF sqlca.SQLCode <> 0 THEN cnt = 0 IF IsNull(cnt) THEN cnt = 0 // IF cnt <> 1 THEN // rst_storageid = 0 // ELSE SELECT top 1 u_mtrl_storage.storageid INTO :rst_storageid FROM u_mtrl_storage,u_storage WHERE u_mtrl_storage.storageid = u_storage.storageid AND u_mtrl_storage.mtrlid = :arg_mtrlid AND u_storage.scid = :arg_scid; IF sqlca.SQLCode <> 0 THEN rst_storageid = 0 // END IF END IF */ RETURN rst_storageid end function