$PBExportHeader$uo_inware_gh.sru forward global type uo_inware_gh from uo_inware end type end forward global type uo_inware_gh from uo_inware end type global uo_inware_gh uo_inware_gh forward prototypes public function integer auditing (boolean arg_ifcommit, ref string arg_msg) public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg) public function integer uof_add_empmtrl_ly (integer arg_flag, boolean arg_ifcommit, ref string arg_msg) public function integer sec_auditing (boolean arg_ifcommit, ref string arg_msg) public function integer c_sec_auditing (boolean arg_ifcommit, ref string arg_msg) end prototypes public function integer auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 Long cnt = 0,i,j,mx_barcode_cnt Long ll_sptid,ll_mtrlwareid_ref String ls_mtrlcuscode String ls_storagename Int li_outtype,li_storagetype s_inwaremx_assign_plan arg_s_ap,arg_s_ap_null s_inwaremx_barcode_fp arg_s_mxbarcode_fp uo_sqlpro uo_pro uo_pro = Create uo_sqlpro uo_pro.commit_transaction = commit_transaction IF uo_option_inout_type = -1000 THEN rslt = 0 arg_msg = '选项:[142]进出仓高级选项,读取初始默认值失败,操作取消!' GOTO ext END IF IF uo_option_barcode_inwareother_paudit = -1000 THEN rslt = 0 arg_msg = '选项:[206]仓库使用条码流程,读取初始默认值失败,操作取消!' GOTO ext END IF IF uo_option_barcode_inwarebuy_paudit = -1000 THEN rslt = 0 arg_msg = '选项:[208]仓库使用条码流程,读取初始默认值失败,操作取消!' GOTO ext END IF IF uo_option_barcode_inwarecp_paudit = -1000 THEN rslt = 0 arg_msg = '选项:[207]仓库使用条码流程,读取初始默认值失败,操作取消!' GOTO ext END IF uo_mtrlware_assign uo_ma uo_ma = Create uo_mtrlware_assign uo_ma.commit_transaction = commit_transaction IF inwareid = 0 THEN rslt = 0 arg_msg = "没有进仓审核对象" GOTO ext END IF IF storageid = 0 THEN rslt = 0 arg_msg = '没有正确的仓库' GOTO ext END IF IF billtype <> 9 THEN IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF SELECT storagename,outtype,storagetype INTO :ls_storagename,:li_outtype,:li_storagetype FROM u_storage Where storageid = :storageid Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,仓库" GOTO ext END IF //检查是否有该仓库的建立权限 IF sys_user_storagestr_audit <> '0' THEN IF Pos(sys_user_storagestr_audit,','+String(storageid)+',') <= 0 THEN rslt = 0 arg_msg = '没有仓库: '+ls_storagename+' 的审核权限,不允许审核该仓库的单据' GOTO ext END IF END IF // IF uo_option_inout_type = 2 And & ( uo_option_barcode_inwareother_paudit = 1 And billtype = 8 Or & uo_option_barcode_inwarebuy_paudit = 1 And billtype = 1 Or & uo_option_barcode_inwarecp_paudit = 1 And billtype = 3 ) THEN IF priceflag = 0 THEN arg_msg = '单据未确认,不能审核' rslt = 0 GOTO ext END IF END IF IF flag = 1 THEN rslt = 0 arg_msg = "单据已经审核" GOTO ext END IF //检查条码数量是否匹配 IF li_outtype = 2 THEN IF uof_check_barcodeqty(arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF UPDATE u_inware SET auditingrep = :publ_operator, auditingdate = getdate(), flag = 1 WHERE u_inware.inwareid = :inwareid AND flag = 0 And scid = :scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText GOTO ext END IF FOR i = 1 To it_mxbt IF f_power_ind(2203,sys_msg_pow) And Not sys_power_issuper And billtype <> 23 THEN IF inwaremx[i].uprice = 0 THEN rslt = 0 arg_msg = '行:'+String(i)+',没有单价,请检查' GOTO ext END IF END IF //yyx20100814 IF li_storagetype = 1 THEN ll_sptid = 0 ls_mtrlcuscode = '' ELSE IF billtype = 4 THEN ll_sptid = 0 ELSE ll_sptid = inwaremx[i].sptid END IF ls_mtrlcuscode = inwaremx[i].mtrlcuscode END IF //yyx20100814_end IF sys_option_inout_procedure = 0 THEN IF billtype <> 20 And billtype <> 21 THEN IF p_update_mtrlware(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,& storageid,inwaremx[i].plancode,inwaremx[i].status,& inwaremx[i].qty,inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,& ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,& inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,inwaremx[i].ifvqty,arg_msg) = 0 THEN arg_msg = '更新行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF ELSE IF p_update_mtrlware_ws(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,& storageid,inwaremx[i].plancode,inwaremx[i].status,& inwaremx[i].qty,inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,& ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,& inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,arg_msg) = 0 THEN arg_msg = '更新行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF END IF ELSE IF uo_pro.p_inware_update_mtrlware(scid,inwareid,inwaremx[i].printid,inwaremx[i].mtrlid,& inwaremx[i].mtrlcode,storageid,inwaremx[i].plancode,inwaremx[i].status,inwaremx[i].qty,& inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,ll_sptid,inwaremx[i].dxflag,& inwaremx[i].woodcode,inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,arg_msg) = 0 THEN arg_msg = '更新行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF END IF //yyx20100814 //库存分配 IF li_storagetype = 1 And billtype <> 23 THEN //取库存信息 ll_mtrlwareid_ref = 0 IF uof_ref_mtrlwareid(scid,storageid,inwaremx[i].mtrlid,& inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,inwaremx[i].plancode,& inwaremx[i].Location,ll_sptid,ls_mtrlcuscode,ll_mtrlwareid_ref,arg_msg) = 0 THEN arg_msg = '行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF //取分配计划 arg_s_ap = arg_s_ap_null IF uof_ref_assign_plan(scid,ll_mtrlwareid_ref,inwaremx[i].qty,arg_s_ap,arg_msg) = 0 THEN arg_msg = '行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF FOR j = 1 To UpperBound(arg_s_ap.planid) IF uo_ma.uof_assign_add(arg_s_ap.scid[j],arg_s_ap.mtrlwareid[j],& arg_s_ap.assigntype[j],arg_s_ap.relbillid[j],arg_s_ap.relprintid[j],& arg_s_ap.notassignqty[j],inwaremx[i].cost,ls_mtrlcuscode,inwaremx[i].mtrlwaredscrp,& inwarecode,inwaremx[i].printid,arg_s_ap.fpgrade[j],publ_operator,arg_msg,False) = 0 THEN arg_msg = '行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF IF arg_s_ap.planid[j] > 0 THEN IF uo_ma.uof_plan_addassignqty(arg_s_ap.planid[j],arg_s_ap.notassignqty[j],& inwarecode,inwaremx[i].printid,arg_msg,False) = 0 THEN arg_msg = '行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF END IF NEXT END IF //yyx20100814_end IF li_outtype = 2 And inwaremx[i].outtype = 2 THEN mx_barcode_cnt++ NEXT //更新条码 IF li_outtype = 2 And mx_barcode_cnt > 0 THEN IF uof_p_barcode(1,arg_msg,arg_s_mxbarcode_fp) = 0 THEN rslt = 0 GOTO ext END IF END IF //更新人员 领用物料信息 IF uof_add_empmtrl_ly(0, False, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF flag = 1 ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF Destroy uo_ma Destroy uo_pro RETURN rslt end function public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 Long cnt = 0,i,j,mx_barcode_cnt Long ll_sptid String ls_mtrlcuscode String ls_storagename Int li_outtype,li_storagetype s_inwaremx_assign_plan arg_s_ap,arg_s_ap_null s_inwaremx_assign arg_s_a,arg_s_a_null s_inwaremx_barcode_fp arg_s_mxbarcode_fp uo_sqlpro uo_pro uo_pro = Create uo_sqlpro uo_pro.commit_transaction = commit_transaction uo_mtrlware_assign uo_ma uo_ma = Create uo_mtrlware_assign uo_ma.commit_transaction = commit_transaction DateTime null_dt SetNull(null_dt) IF storageid = 0 THEN rslt = 0 arg_msg = '没有正确的仓库' GOTO ext END IF IF billtype <> 9 THEN IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF SELECT storagename,outtype,storagetype INTO :ls_storagename,:li_outtype,:li_storagetype FROM u_storage Where storageid = :storageid Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,仓库" GOTO ext END IF //检查是否有该仓库的建立权限 IF sys_user_storagestr_audit <> '0' THEN IF Pos(sys_user_storagestr_audit,','+String(storageid)+',') <= 0 THEN rslt = 0 arg_msg = '没有仓库: '+ls_storagename+' 的审核权限,不允许撤审该仓库的单据' GOTO ext END IF END IF // IF inwareid = 0 THEN rslt = 0 arg_msg = "没有出仓撤审对象" GOTO ext END IF IF ctmint > 0 THEN arg_msg = '单据已截数,不能操作' rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = "单据还未审核" GOTO ext END IF IF balcflag = 1 THEN rslt = 0 arg_msg = "单据已经结存,不能撤审" GOTO ext END IF IF billtype = 26 THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_inwaremx_mx,u_inware WHERE u_inware.scid = u_inwaremx_mx.scid AND u_inware.inwareid = u_inwaremx_mx.inwareid AND u_inware.billtype = 27 And u_inwaremx_mx.ptinwareid = :inwareid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询单据是否已开配套结算单失败,'+commit_transaction.SQLErrText rslt = 0 GOTO ext END IF IF cnt > 0 THEN arg_msg = '单据已开配套结算单,不能撤审' rslt = 0 GOTO ext END IF END IF UPDATE u_inware SET auditingrep = '', auditingdate = :null_dt, flag = 0 WHERE u_inware.inwareid = :inwareid And flag = 1 And scid = :scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText GOTO ext END IF FOR i = 1 To it_mxbt //yyx20100814 IF li_storagetype = 1 THEN ll_sptid = 0 ls_mtrlcuscode = '' ELSE IF billtype = 4 THEN ll_sptid = 0 ELSE ll_sptid = inwaremx[i].sptid END IF ls_mtrlcuscode = inwaremx[i].mtrlcuscode END IF //yyx20100814_end IF sys_option_inout_procedure = 0 THEN IF billtype <> 20 And billtype <> 21 THEN IF p_update_mtrlware(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,& storageid,inwaremx[i].plancode,inwaremx[i].status,& 0 - inwaremx[i].qty,0 - inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,& ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,& inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,inwaremx[i].ifvqty,arg_msg) = 0 THEN arg_msg = '更新行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF ELSE IF p_update_mtrlware_ws(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,& storageid,inwaremx[i].plancode,inwaremx[i].status,& 0 - inwaremx[i].qty,0 - inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,& ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,& inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,arg_msg) = 0 THEN arg_msg = '更新行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF END IF ELSE IF uo_pro.p_inware_update_mtrlware(scid,inwareid,inwaremx[i].printid,inwaremx[i].mtrlid,& inwaremx[i].mtrlcode,storageid,inwaremx[i].plancode,inwaremx[i].status,0 - inwaremx[i].qty,& 0 - inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,ll_sptid,inwaremx[i].dxflag,& inwaremx[i].woodcode,inwaremx[i].pcode,ls_mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,arg_msg) = 0 THEN arg_msg = '更新行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF END IF //yyx20100814 //库存分配 IF li_storagetype = 1 And billtype <> 23 THEN //取消分配 arg_s_a = arg_s_a_null IF uof_ref_assign_cancel(inwarecode,inwaremx[i].printid,arg_s_a,arg_msg) = 0 THEN arg_msg = '行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF FOR j = 1 To UpperBound(arg_s_a.assignid) IF uo_ma.uof_assign_del(arg_s_a.assignid[j],arg_s_a.assignqty[j],& arg_msg,False) = 0 THEN arg_msg = '行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF NEXT //取消分配计划 arg_s_ap = arg_s_ap_null IF uof_ref_assign_plan_cancel(inwarecode,inwaremx[i].printid,arg_s_ap,arg_msg) = 0 THEN arg_msg = '行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF FOR j = 1 To UpperBound(arg_s_ap.planid) IF uo_ma.uof_plan_addassignqty(arg_s_ap.planid[j],0 - arg_s_ap.notassignqty[j],& inwarecode,inwaremx[i].printid,arg_msg,False) = 0 THEN arg_msg = '行:'+String(i)+','+arg_msg rslt = 0 GOTO ext END IF NEXT END IF //yyx20100814_end IF li_outtype = 2 And inwaremx[i].outtype = 2 THEN mx_barcode_cnt++ NEXT IF li_outtype = 2 And mx_barcode_cnt > 0 THEN IF uof_p_barcode(0,arg_msg,arg_s_mxbarcode_fp) = 0 THEN rslt = 0 GOTO ext END IF END IF //更新人员 领用物料信息 IF uof_add_empmtrl_ly(1, False, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF flag = 0 ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF Destroy uo_ma Destroy uo_pro RETURN rslt end function public function integer uof_add_empmtrl_ly (integer arg_flag, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 Long i uo_empinfo uo_emp uo_emp = Create uo_empinfo IF arg_flag = 0 THEN //审核 FOR i = 1 To it_mxbt IF uo_emp.uof_add_empmtrl_gh(sptid, inwaremx[i].mtrlid, inwaremx[i].status, inwaremx[i].woodcode, inwaremx[i].pcode, inwaremx[i].qty,inwaremx[i].cost, False, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF NEXT ELSE FOR i = 1 To it_mxbt IF uo_emp.uof_add_empmtrl_gh(sptid, inwaremx[i].mtrlid, inwaremx[i].status, inwaremx[i].woodcode, inwaremx[i].pcode, 0 - inwaremx[i].qty,inwaremx[i].cost, False, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF NEXT END IF ext: Destroy uo_emp RETURN rslt end function public function integer sec_auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 Long cnt = 0,i Decimal ls_emp_sumwage uo_wage u_wage u_wage = CREATE uo_wage Long ll_wagemth //IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN // rslt = 0 // GOTO ext //END IF IF secflag = 1 THEN rslt = 0 arg_msg = '单据还已经财审,操作取消' GOTO ext END IF UPDATE u_inware SET secflag = 1, secauditingrep = :publ_operator, secAuditingdate = getdate() WHERE scid = :scid AND inwareid = :inwareid AND flag = 1 AND secflag = 0; IF sqlca.SQLCode <> 0 THEN arg_msg = '财审员工归还单失败,原因>>'+sqlca.SQLErrText rslt = 0 GOTO ext END IF secflag = 1 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF DESTROY u_wage RETURN rslt end function public function integer c_sec_auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 Long cnt = 0,i Decimal ls_emp_sumwage DateTime null_server_dt SetNull(null_server_dt) //IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN // rslt = 0 // GOTO ext //END IF IF secflag = 0 THEN rslt = 0 arg_msg = '单据还没有财审,操作取消' GOTO ext END IF UPDATE u_inware SET secflag = 0, secauditingrep = '', secAuditingdate = :null_server_dt WHERE scid = :scid and inwareid = :inwareid AND flag = 1 AND secflag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '财审员工归还单失败,原因>>'+sqlca.SQLErrText rslt = 0 GOTO ext END IF secflag = 0 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function on uo_inware_gh.create call super::create end on on uo_inware_gh.destroy call super::destroy end on