$PBExportHeader$uf_warebalc_check_inoutflag.srf global type uf_warebalc_check_inoutflag from function_object end type forward prototypes global function integer uf_warebalc_check_inoutflag (long arg_storageid, datetime arg_balcdate, ref string arg_msg) end prototypes global function integer uf_warebalc_check_inoutflag (long arg_storageid, datetime arg_balcdate, ref string arg_msg);Long rslt = 1 Long cnt = 0 String ls_storagename SELECT storagename INTO :ls_storagename FROM u_storage Where storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询操作失败,仓库名称' GOTO ext END IF //检查日期前 cnt = 0 SELECT count(*) INTO :cnt FROM u_inware WHERE flag = 0 AND storageid = :arg_storageid AND indate <= :arg_balcdate ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询操作失败,结存日期前是否有进仓单未审' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库['+ls_storagename+'],结存日期前有进仓单未审' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_outware WHERE flag = 0 AND storageid = :arg_storageid AND outdate <= :arg_balcdate ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询操作失败,结存日期前是否有出仓单未审' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库['+ls_storagename+'],结存日期前有出仓单未审' GOTO ext END IF //检查日期后 cnt = 0 SELECT count(*) INTO :cnt FROM u_inware WHERE flag = 1 AND storageid = :arg_storageid AND indate > :arg_balcdate ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询操作失败,结存日期后是否有进仓单已审' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库['+ls_storagename+'],结存日期后有进仓单已审' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_outware WHERE flag = 1 AND storageid = :arg_storageid AND outdate > :arg_balcdate ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询操作失败,结存日期后是否有出仓单已审' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库['+ls_storagename+'],结存日期后有出仓单已审' GOTO ext END IF //1.3检查调仓单 cnt = 0 SELECT count(*) INTO :cnt FROM u_outware_move WHERE ( flag = 0 OR d_auditflag = 0 ) AND ( sstorageid = :arg_storageid OR dstorageid = :arg_storageid ) And ( outdate <= :arg_balcdate ); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有调仓单未审' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')调仓单未审' GOTO ext END IF //1.4 检查仓库外协进仓单(含返工单) cnt = 0 SELECT count(*) INTO :cnt FROM ow_wfjg_in INNER JOIN ow_wfjgmx_in_aft ON ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid AND ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid WHERE (ow_wfjg_in.flag = 0 ) AND (ow_wfjg_in.indate <= :arg_balcdate) AND (ow_wfjgmx_in_aft.storageid = :arg_storageid) And (ow_wfjg_in.billtype = 4); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有仓库外协进仓单或仓库外协返工单未审' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')仓库外协进仓单或仓库外协返工单未审' GOTO ext END IF //1.5 检查仓库外协发出单(含退回单) cnt = 0 SELECT count(*) INTO :cnt FROM ow_wfjg_out INNER JOIN ow_wfjgmx_out ON ow_wfjg_out.scid = ow_wfjgmx_out.scid AND ow_wfjg_out.outwareid = ow_wfjgmx_out.outwareid WHERE (ow_wfjg_out.flag = 0 ) AND (ow_wfjg_out.outdate <= :arg_balcdate) AND (ow_wfjgmx_out.storageid = :arg_storageid) And (ow_wfjg_out.billtype = 4); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有仓库外协发出单或仓库外协退回单未审' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')仓库外协发出单或仓库外协退回单未审' GOTO ext END IF ext: RETURN rslt end function