$PBExportHeader$uo_ware_pdb_balc.sru forward global type uo_ware_pdb_balc from nonvisualobject end type end forward global type uo_ware_pdb_balc from nonvisualobject end type global uo_ware_pdb_balc uo_ware_pdb_balc forward prototypes public function integer uof_pdb_audit (long arg_storageid, string arg_pdbdate, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer uof_warebalc (long arg_storageid, datetime arg_balcdate, ref string arg_msg, boolean arg_ifcommit) public function integer uof_warebalc_cancel (long arg_balcdateint, long arg_storageid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_warebalc_check_inoutflag (long arg_storageid, datetime arg_balcdate, ref string arg_msg) public function integer uof_pdb_del (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit) public function integer uof_pdb_caudit (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit) public function integer uof_pdb_add (long arg_atid, long arg_storageid, datetime arg_pdbdt, ref string arg_msg, boolean arg_ifcommit) public function integer uof_pdb_update_scllflag (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer uof_pdb_audit (long arg_storageid, string arg_pdbdate, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt SELECT count(*) INTO :cnt FROM u_storage Where storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询仓库资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt <> 1 THEN arg_msg = '仓库资料不存在或重复,请检查' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_warepdb WHERE storageid = :arg_storageid AND pdbdate = :arg_pdbdate; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询盘点表失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt = 0 THEN arg_msg = '盘点表没有盘点内容,不能审核' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_warepdb WHERE storageid = :arg_storageid AND pdbdate = :arg_pdbdate AND flag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询盘点表是否已审核失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt > 0 THEN arg_msg = '盘点表已审核,不能审核' rslt = 0 GOTO ext END IF UPDATE u_warepdb SET flag = 1, auditemp = :arg_opemp, auditdate = getdate() WHERE storageid = :arg_storageid AND pdbdate = :arg_pdbdate; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新盘点表审核标记失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_warebalc (long arg_storageid, datetime arg_balcdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt DateTime balc_date Long ls_balcdateint IF arg_storageid <= 0 THEN arg_msg = '请选择仓库' rslt = 0 GOTO ext END IF ls_balcdateint = Year(Date(arg_balcdate)) * 10000 + Month(Date(arg_balcdate)) * 100 + Day(Date(arg_balcdate)) balc_date = DateTime(Date(arg_balcdate),Time('23:59:59')) SELECT count(*) INTO :cnt FROM u_warebalc WHERE balcdate = :balc_date AND storageid = :arg_storageid; IF cnt <> 0 THEN rslt = 0 arg_msg = "仓库指定日期已进行过结存操作" GOTO ext END IF //检查单据 IF uof_warebalc_check_inoutflag(arg_storageid,balc_date,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF UPDATE u_warebalc SET balcdateint = :ls_balcdateint, balcdate = :arg_balcdate WHERE balcdateint = 0 AND storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新仓库结存标记失败. ~n 原因:"+sqlca.SQLErrText GOTO ext END IF INSERT INTO u_warebalc (balcdateint, storageid, mtrlid, bgqty, bgamt, incqty, incamt, desqty, desamt, balcqty, balcamt, pypk, scid, status, woodcode, pcode, bgaddqty, balcaddqty) SELECT 0, u_warebalc.storageid, u_warebalc.mtrlid, u_warebalc.balcqty, case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcamt end, 0, 0, 0, 0, u_warebalc.balcqty, case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcamt end, 0, u_warebalc.scid, u_warebalc.status, u_warebalc.woodcode, u_warebalc.pcode, case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcaddqty end, case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcaddqty end FROM u_warebalc WHERE ( (abs(u_warebalc.bgqty)+abs(u_warebalc.desqty)+abs(u_warebalc.incqty)+abs(u_warebalc.balcqty) <> 0) OR (abs(u_warebalc.bgamt)+ abs(u_warebalc.incamt)+abs(u_warebalc.desamt)+abs(u_warebalc.balcamt) <> 0) ) AND ( u_warebalc.storageid = :arg_storageid ) And ( u_warebalc.balcdateint = :ls_balcdateint ); IF sqlca.SQLCode <> 0 THEN arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText rslt = 0 GOTO ext END IF // 写入日表 upartbalc UPDATE u_inware SET balcflag = 1 , u_inware.balcdateint = :ls_balcdateint WHERE ( u_inware.flag = 1 ) AND ( u_inware.balcflag = 0 ) AND ( u_inware.storageid = :arg_storageid ) AND ( u_inware.balcdateint = 0 ); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText GOTO ext END IF UPDATE u_outware SET balcflag = 1 , u_outware.balcdateint = :ls_balcdateint WHERE ( u_outware.flag = 1 ) AND ( u_outware.balcflag = 0 ) AND ( u_outware.storageid = :arg_storageid ) AND ( u_outware.balcdateint = 0 ); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_warebalc_cancel (long arg_balcdateint, long arg_storageid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1 long cnt DateTime null_dt,ld_balcdate string ls_balcdate SetNull(null_dt) ls_balcdate = left(string(arg_balcdateint),4) + '-' + left(right(string(arg_balcdateint),4),2) +'-'+ right(string(arg_balcdateint),2) ld_balcdate = datetime(date(ls_balcdate),time('23:59:59')) IF arg_storageid <= 0 THEN arg_msg = '请选择仓库' rslt = 0 GOTO ext END IF //检查进仓单 cnt = 0 SELECT count(*) INTO :cnt FROM u_inware WHERE flag = 1 AND ( balcdateint > :arg_balcdateint OR balcdateint = 0 ) AND storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '仓库反结存失败,查询进仓单结存日期后是否有单失败' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库反结存失败,进仓单结存日期后已经有单审核,如果要反结存请将进仓单反审核' GOTO ext END IF //检查出仓单 cnt = 0 SELECT count(*) INTO :cnt FROM u_outware WHERE flag = 1 AND ( balcdateint > :arg_balcdateint OR balcdateint = 0 ) AND storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '仓库反结存失败,查询出仓单结存日期后是否有单失败' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库反结存失败,出仓单结存日期后已经有单审核,如果要反结存请将出仓单反审核' GOTO ext END IF //检查仓库外协进仓单及返工单 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 = 1 ) AND ( ow_wfjg_in.indate > :ld_balcdate ) AND ( ow_wfjgmx_in_aft.storageid = :arg_storageid ) And ( ow_wfjg_in.billtype = 4); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '仓库反结存失败,查询仓库外协进仓单或返工单结存日期后是否有单失败' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库反结存失败,仓库外协进仓单或返工单结存日期后已经有单审核,如果要反结存请将仓库外协进仓单或返工单反审核' GOTO ext END IF //检查仓库外协发出单及退回单 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 = 1 ) AND ( ow_wfjg_out.outdate > :ld_balcdate) AND ( ow_wfjgmx_out.storageid = :arg_storageid ) And ( ow_wfjg_out.billtype = 4); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '仓库反结存失败,查询仓库外协出发单或退回单结存日期后是否有单失败' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '仓库反结存失败,仓库外协出发单或退回单结存日期后已经有单审核,如果要反结存请将仓库外协出发单或退回单反审核' GOTO ext END IF // 写入日表 upartbalc UPDATE u_inware SET balcflag = 0 , u_inware.balcdateint = 0 WHERE ( u_inware.flag = 1 ) AND ( u_inware.balcflag = 1 ) AND ( u_inware.storageid = :arg_storageid ) AND ( u_inware.balcdateint = :arg_balcdateint ); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "反结存操作失败 ~n原因:"+sqlca.SQLErrText GOTO ext END IF UPDATE u_outware SET balcflag = 0 , u_outware.balcdateint = 0 WHERE ( u_outware.flag = 1 ) AND ( u_outware.balcflag = 1 ) AND ( u_outware.storageid = :arg_storageid ) AND ( u_outware.balcdateint = :arg_balcdateint ); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "反结存操作失败 ~n原因:"+sqlca.SQLErrText GOTO ext END IF //----------------------------------------- DELETE FROM u_warebalc WHERE balcdateint = 0 AND storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN arg_msg = '反结存操作 ~n原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF UPDATE u_warebalc SET balcdateint = 0, balcdate = :null_dt WHERE balcdateint = :arg_balcdateint AND storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新仓库结存标记失败. ~n 原因:"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_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 //1.检查日期前 //1.1检查进仓单 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+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')进仓单未审' GOTO ext END IF //1.2不检查已开未审发货单,(占库存) cnt = 0 SELECT count(*) INTO :cnt FROM u_outware WHERE flag = 0 AND storageid = :arg_storageid AND billtype <> 1 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.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 //2.检查日期后 //2.1检查进仓单 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 = '查询操作失败,日期:'+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 //2.2检查出仓单 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 = '查询操作失败,日期:'+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 //2.3检查调仓单 cnt = 0 SELECT count(*) INTO :cnt FROM u_outware_move WHERE ( flag = 1 ) AND ( sstorageid = :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 cnt = 0 SELECT count(*) INTO :cnt FROM u_outware_move WHERE ( d_auditflag = 1 ) AND ( 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 //2.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 = 1 ) 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 //2.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 = 1 ) 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 //// // String ls_pdbdate ls_pdbdate = String(arg_balcdate,'yyyymmdd') cnt = 0 SELECT count(*) INTO :cnt FROM u_warepdb WHERE storageid = :arg_storageid AND pdbdate <= :ls_pdbdate AND flag = 0; 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')+',前有盘点表未审' GOTO ext END IF ext: RETURN rslt end function public function integer uof_pdb_del (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt = 0 IF arg_storageid <= 0 THEN arg_msg = '请选择要仓库' rslt = 0 GOTO ext END IF SELECT count(*) INTO :cnt FROM u_warepdb WHERE u_warepdb.storageid = :arg_storageid AND u_warepdb.pdbdate = :arg_pdbdate AND flag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询操作失败,在盘点日:'+arg_pdbdate+'数据资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt > 0 THEN arg_msg = '盘点日:'+arg_pdbdate+',盘点数据已经审核,不能删除' rslt = 0 GOTO ext END IF DELETE FROM u_warepdb WHERE pdbdate = :arg_pdbdate AND storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除当前期的盘点表失败!'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_pdb_caudit (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt Long ll_pdbdate DateTime null_dt SetNull(null_dt) SELECT count(*) INTO :cnt FROM u_storage Where storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询仓库资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt <> 1 THEN arg_msg = '仓库资料不存在或重复,请检查' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_warepdb WHERE storageid = :arg_storageid AND pdbdate = :arg_pdbdate; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询盘点表失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt = 0 THEN arg_msg = '盘点表没有盘点内容,不能撤审' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_warepdb WHERE storageid = :arg_storageid AND pdbdate = :arg_pdbdate AND flag = 0; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询盘点表是否未审核失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt > 0 THEN arg_msg = '盘点表未审核,不能撤审' rslt = 0 GOTO ext END IF //检查盘点日期后是否有结存 ll_pdbdate = Long(arg_pdbdate) cnt = 0 SELECT COUNT(*) INTO :cnt FROM u_warebalc WHERE (balcdateint >= :ll_pdbdate) And (storageid = :arg_storageid); IF sqlca.SQLCode <> 0 THEN arg_msg = '查询盘点日期后仓库是否有结存失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt > 0 THEN arg_msg = '盘点日期后仓库已结存,不能撤审' rslt = 0 GOTO ext END IF UPDATE u_warepdb SET flag = 0, auditemp = '', auditdate = :null_dt WHERE storageid = :arg_storageid AND pdbdate = :arg_pdbdate; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新盘点表审核标记失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_pdb_add (long arg_atid, long arg_storageid, datetime arg_pdbdt, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 String ls_waredate Long ls_scid DateTime st_date,ed_date,ls_serverdate Date ls_enddate IF arg_storageid <= 0 THEN arg_msg = "请选择仓库" rslt = 0 GOTO ext END IF IF arg_atid = 0 THEN IF uof_warebalc_check_inoutflag(arg_storageid,arg_pdbdt,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF ls_waredate = String(arg_pdbdt,'yyyymmdd') SELECT scid INTO :ls_scid FROM u_storage Where storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询仓库分部失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT Top 1 getdate() INTO :ls_serverdate FROM u_user ; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询当前日期操作失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ls_enddate = Date(String(arg_pdbdt,'yyyy-mm-dd')) st_date = DateTime(RelativeDate(Date(ls_enddate),1),Time('0:0')) ed_date = DateTime(RelativeDate(Date(ls_serverdate),1),Time('0:0')) IF st_date > ed_date THEN arg_msg = '盘点日期不能大过于当前日期' rslt = 0 GOTO ext END IF DELETE u_parm_balcdate ; IF sqlca.SQLCode <> 0 THEN arg_msg = "因网络或其它原因导致操作失败,请重试" rslt = 0 GOTO ext END IF INSERT INTO u_parm_balcdate (first_date,end_date) Values (:st_date,:ed_date) ; IF sqlca.SQLCode <> 0 THEN arg_msg = "因网络或其它原因导致建立开始日期,结束日期操作失败,请重试,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF COMMIT ; INSERT INTO u_warepdb ( atid, flag, pdbdate, scid, mtrlwareid, mtrlid, storageid, plancode, Status, planprice, Sptid, Dxflag, newprice, woodcode, pcode, cost, qty, factqty, wareamt, scllflag, pdbdt, pdbemp, waredscrp) SELECT :arg_atid, 0, :ls_waredate , u_mtrlware.scid, u_mtrlware.mtrlwareid, u_mtrlware.mtrlid, u_mtrlware.storageid, u_mtrlware.plancode, u_mtrlware.Status, u_mtrldef.planprice, u_mtrlware.Sptid, u_mtrlware.Dxflag, u_mtrlware.newprice, u_mtrlware.woodcode, u_mtrlware.pcode, u_mtrlware.cost, u_mtrlware.noallocqty + ISNULL(uv_pdb_outware.desqty, 0) - ISNULL(uv_pdb_inware.incqty, 0), 0, u_mtrlware.wareamt + ISNULL(uv_pdb_outware.desamt, 0) - ISNULL(uv_pdb_inware.incamt,0), u_mtrldef.scllflag, getdate(), :publ_operator, u_mtrlware.dscrp FROM uv_pdb_inware RIGHT OUTER JOIN u_mtrlware ON uv_pdb_inware.storageid = u_mtrlware.storageid AND uv_pdb_inware.mtrlid = u_mtrlware.mtrlid AND uv_pdb_inware.plancode = u_mtrlware.plancode AND uv_pdb_inware.status = u_mtrlware.Status AND uv_pdb_inware.cusid = u_mtrlware.Sptid AND uv_pdb_inware.Dxflag = u_mtrlware.Dxflag AND uv_pdb_inware.pcode = u_mtrlware.pcode AND uv_pdb_inware.woodcode = u_mtrlware.woodcode LEFT OUTER JOIN uv_pdb_outware ON u_mtrlware.storageid = uv_pdb_outware.StorageID AND u_mtrlware.mtrlid = uv_pdb_outware.mtrlid AND u_mtrlware.plancode = uv_pdb_outware.plancode AND u_mtrlware.Status = uv_pdb_outware.status AND u_mtrlware.Sptid = uv_pdb_outware.Sptid AND u_mtrlware.Dxflag = uv_pdb_outware.Dxflag AND u_mtrlware.woodcode = uv_pdb_outware.woodcode AND u_mtrlware.pcode = uv_pdb_outware.pcode, u_mtrldef WHERE u_mtrldef.mtrlid = u_mtrlware.mtrlid AND u_mtrlware.storageid = :arg_storageid AND u_mtrlware.scid = :ls_scid; IF sqlca.SQLCode <> 0 THEN IF Pos(sqlca.SQLErrText,'Cannot insert duplicate key in') > 0 THEN arg_msg = '该仓库当前日期的盘点表已经存在,不能建立!' ELSE arg_msg = '生成当前期的盘点表失败!~n原因是:'+sqlca.SQLErrText END IF rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_pdb_update_scllflag (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt SELECT count(*) INTO :cnt FROM u_storage Where storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询仓库资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt <> 1 THEN arg_msg = '仓库资料不存在或重复,请检查' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_warepdb WHERE storageid = :arg_storageid AND pdbdate = :arg_pdbdate; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询盘点表失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt = 0 THEN arg_msg = '盘点表没有盘点内容,不能操作' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_warepdb WHERE storageid = :arg_storageid AND pdbdate = :arg_pdbdate AND flag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询盘点表是否已审核失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt > 0 THEN arg_msg = '盘点表已审核,不能审核' rslt = 0 GOTO ext END IF UPDATE u_warepdb SET scllflag = u_mtrldef.scllflag from u_warepdb inner join u_mtrldef on u_warepdb.mtrlid = u_mtrldef.mtrlid WHERE u_warepdb.storageid = :arg_storageid AND u_warepdb.pdbdate = :arg_pdbdate; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新盘点表盘亏领料标记失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function on uo_ware_pdb_balc.create call super::create TriggerEvent( this, "constructor" ) end on on uo_ware_pdb_balc.destroy TriggerEvent( this, "destructor" ) call super::destroy end on