$PBExportHeader$uo_reissue.sru forward global type uo_reissue from nonvisualobject end type end forward global type uo_reissue from nonvisualobject end type global uo_reissue uo_reissue type variables Public ProtectedWrite Long scid Public ProtectedWrite Long reissueid Public ProtectedWrite String reissuecode Public ProtectedWrite DateTime opdate Public ProtectedWrite String opemp Public ProtectedWrite DateTime moddate Public ProtectedWrite String modemp Public ProtectedWrite Int flag Public ProtectedWrite DateTime auditingdate Public ProtectedWrite String auditingrep Public ProtectedWrite Decimal sumamt = 0 Public ProtectedWrite Decimal sumfamt = 0 Public ProtectedWrite Int pflag Public ProtectedWrite DateTime pauditingdate Public ProtectedWrite String pauditingrep Public ProtectedWrite Int priceflag Public ProtectedWrite DateTime pricedate Public ProtectedWrite String pricerep Long relid String relcode DateTime reissuedate String dscrp Long cusid String cuscode String reissueemp String cusname Long r_type Long relint_3 Long moneyid Decimal mrate //汇率 Long itemid long exchangeid //汇率方案 long deptid string freight, freight_tele, freight_address Transaction commit_transaction Boolean if_getid_ture = True s_reissuemx reissuemx[] Long it_mxbt Boolean it_newbegin = False Boolean it_updatebegin = False Int uo_option_reissue_secaudit Int uo_option_reissue_spt_secaudit Int uo_option_m_msttake end variables forward prototypes public function integer p_clearmx () public function integer p_reset () public function integer p_getinfo (long arg_scid, long arg_reissueid, ref string arg_msg) public function integer getinfo (long arg_scid, long arg_reissueid, ref string arg_msg) public function integer newbegin (long arg_scid, ref string arg_msg) public function integer updatebegin (long arg_scid, long arg_reissueid, ref string arg_msg) public function integer add_dscrp (long arg_scid, long arg_reissueid, string arg_newdescppart, ref string arg_msg) public function integer save (boolean arg_ifcommit, ref string arg_msg) public function integer del (long arg_scid, long arg_reissueid, ref string arg_msg, boolean arg_ifcommit) public function integer auditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg) public function integer c_auditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg) public function integer pauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg) public function integer c_pauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg) public function integer acceptmx (decimal arg_qty, double arg_price, decimal arg_amt, decimal arg_toamt, string arg_mxdscrp, long arg_printid, ref string arg_msg, long arg_mtrlid, string arg_mtrlname, decimal arg_tax) public function integer uof_uc_moditem (long arg_scid, long arg_reissueid, long arg_itemid, boolean arg_ifcommit, ref string arg_msg) public function integer priceauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg) public function integer c_priceauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg) public function integer acceptmx (s_reissuemx s_mx, ref string arg_msg) end prototypes public function integer p_clearmx ();//int p_clearmx() //清除明细 it_mxbt=0 sumamt = 0 return 1 end function public function integer p_reset ();//int p_reset() //清除对象及其明细 scid = 0 reissueid = 0 reissuecode = '' opemp = '' modemp = '' auditingrep = '' flag = 0 relid = 0 relcode = '' dscrp = '' cusid = 0 moneyid = 0 mrate = 1 cuscode = '' cusname = '' freight = '' freight_tele = '' freight_address = '' it_newbegin = FALSE it_updatebegin = FALSE //清除明细 p_clearmx() RETURN 1 end function public function integer p_getinfo (long arg_scid, long arg_reissueid, ref string arg_msg);//p_getinfo(arg_scid,arg_outwareid,arg_msg) //0 失败 1成功 Int rslt = 1 IF arg_reissueid <= 0 THEN rslt = 0 arG_MSG = "非法补件单唯一码" GOTO ext END IF SELECT u_reissue.reissuecode, u_reissue.cusid, u_reissue.cuscode, u_reissue.cusname, u_reissue.reissuedate, u_reissue.relid, u_reissue.relcode, u_reissue.dscrp, u_reissue.flag, u_reissue.reissueemp, u_reissue.type, u_reissue.moneyid, u_reissue.relint_3, u_reissue.itemid, u_reissue.pflag, u_reissue.mrate, u_reissue.priceflag, u_reissue.exchangeid INTO :reissuecode, :cusid, :cuscode, :cusname, :reissuedate, :relid, :relcode, :dscrp, :flag, :reissueemp, :r_type, :moneyid, :relint_3, :itemid, :pflag, :mrate, :priceflag, :exchangeid FROM u_reissue WHERE u_reissue.reissueid = :arg_reissueid AND scid = :arg_scid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arG_MSG = "查询操作失败(错误补件单唯一码),补件单"+commit_transaction.SQLErrText GOTO ext END IF reissueid = arg_reissueid scid = arg_scid ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer getinfo (long arg_scid, long arg_reissueid, ref string arg_msg);//getinfo(arg_scid,arg_reissueid,arg_msg) //0 失败 1成功 Int rslt = 1,i = 1,no_mxcheck = 0 IF arg_reissueid <= 0 THEN rslt = 0 arg_msg = "非法补件单唯一码" GOTO ext END IF sumamt = 0 sumfamt = 0 rslt = p_getinfo(arg_scid,arg_reissueid,arg_msg) IF rslt = 0 THEN GOTO ext //用游标读取明细 IF r_type = 0 THEN DECLARE cur_inwaermx_0 CURSOR FOR SELECT u_reissuemx.printid, u_reissuemx.mtrlid, u_mtrldef.mtrlcode, u_mtrldef.mtrlname, u_reissuemx.qty, u_reissuemx.price, u_reissuemx.dscrp, u_reissuemx.amt, u_reissuemx.toamt, u_reissuemx.relid, u_reissuemx.tax, u_reissuemx.fprice, u_reissuemx.famt, u_reissuemx.tofamt FROM u_reissuemx left OUTER join u_mtrldef on u_reissuemx.mtrlid = u_mtrldef.mtrlid WHERE u_reissuemx.reissueid = :arg_reissueid AND u_reissuemx.scid = :arg_scid USING commit_transaction; OPEN cur_inwaermx_0; FETCH cur_inwaermx_0 INTO :reissuemx[i].printid, :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode, :reissuemx[i].mtrlname,:reissuemx[i].qty, :reissuemx[i].price, :reissuemx[i].mxdscrp, :reissuemx[i].amt, :reissuemx[i].toamt, :reissuemx[i].relid, :reissuemx[i].tax, :reissuemx[i].fprice, :reissuemx[i].famt, :reissuemx[i].tofamt; DO WHILE commit_transaction.SQLCode = 0 sumamt += reissuemx[i].toamt sumfamt += reissuemx[i].tofamt i++ FETCH cur_inwaermx_0 INTO :reissuemx[i].printid, :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode, :reissuemx[i].mtrlname,:reissuemx[i].qty, :reissuemx[i].price, :reissuemx[i].mxdscrp, :reissuemx[i].amt, :reissuemx[i].toamt, :reissuemx[i].relid, :reissuemx[i].tax, :reissuemx[i].fprice, :reissuemx[i].famt, :reissuemx[i].tofamt; LOOP CLOSE cur_inwaermx_0; ELSEIF r_type = 1 THEN DECLARE cur_inwaermx_1 CURSOR FOR SELECT u_reissuemx.printid, u_reissuemx.mtrlid, U_Expenses.Expensescode, U_Expenses.Expensesname, u_reissuemx.qty, u_reissuemx.price, u_reissuemx.dscrp, u_reissuemx.amt, u_reissuemx.toamt, u_reissuemx.relid, u_reissuemx.tax, u_reissuemx.fprice, u_reissuemx.famt, u_reissuemx.tofamt FROM u_reissuemx left OUTER join U_Expenses on u_reissuemx.mtrlid = U_Expenses.Expensesid WHERE u_reissuemx.reissueid = :arg_reissueid AND u_reissuemx.scid = :arg_scid USING commit_transaction; OPEN cur_inwaermx_1; FETCH cur_inwaermx_1 INTO :reissuemx[i].printid, :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode, :reissuemx[i].mtrlname,:reissuemx[i].qty, :reissuemx[i].price, :reissuemx[i].mxdscrp, :reissuemx[i].amt, :reissuemx[i].toamt, :reissuemx[i].relid, :reissuemx[i].tax, :reissuemx[i].fprice, :reissuemx[i].famt, :reissuemx[i].tofamt; DO WHILE commit_transaction.SQLCode = 0 sumamt += reissuemx[i].amt sumfamt += reissuemx[i].famt i++ FETCH cur_inwaermx_1 INTO :reissuemx[i].printid, :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode, :reissuemx[i].mtrlname,:reissuemx[i].qty, :reissuemx[i].price, :reissuemx[i].mxdscrp, :reissuemx[i].amt, :reissuemx[i].toamt, :reissuemx[i].relid, :reissuemx[i].tax, :reissuemx[i].fprice, :reissuemx[i].famt, :reissuemx[i].tofamt; LOOP CLOSE cur_inwaermx_1; ELSEIF r_type = 2 THEN DECLARE cur_inwaermx_2 CURSOR FOR SELECT u_reissuemx.printid, u_reissuemx.mtrlid, U_Expenses.Expensescode, u_reissuemx.mtrlname, u_reissuemx.qty, u_reissuemx.price, u_reissuemx.dscrp, u_reissuemx.amt, u_reissuemx.toamt, u_reissuemx.relid, u_reissuemx.tax, u_reissuemx.fprice, u_reissuemx.famt, u_reissuemx.tofamt FROM u_reissuemx left OUTER join U_Expenses on u_reissuemx.mtrlid = U_Expenses.Expensesid WHERE u_reissuemx.reissueid = :arg_reissueid AND u_reissuemx.scid = :arg_scid USING commit_transaction; OPEN cur_inwaermx_2; FETCH cur_inwaermx_2 INTO :reissuemx[i].printid, :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode, :reissuemx[i].mtrlname,:reissuemx[i].qty, :reissuemx[i].price, :reissuemx[i].mxdscrp, :reissuemx[i].amt, :reissuemx[i].toamt, :reissuemx[i].relid, :reissuemx[i].tax, :reissuemx[i].fprice, :reissuemx[i].famt, :reissuemx[i].tofamt; DO WHILE commit_transaction.SQLCode = 0 sumamt += reissuemx[i].amt sumfamt += reissuemx[i].famt i++ FETCH cur_inwaermx_2 INTO :reissuemx[i].printid, :reissuemx[i].mtrlid,:reissuemx[i].mtrlcode, :reissuemx[i].mtrlname,:reissuemx[i].qty, :reissuemx[i].price, :reissuemx[i].mxdscrp, :reissuemx[i].amt, :reissuemx[i].toamt, :reissuemx[i].relid, :reissuemx[i].tax, :reissuemx[i].fprice, :reissuemx[i].famt, :reissuemx[i].tofamt; LOOP CLOSE cur_inwaermx_2; END IF //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck FROM u_reissuemx WHERE u_reissuemx.reissueid = :arg_reissueid AND scid = :arg_scid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,补件单明细数量" GOTO ext END IF IF i <> (no_mxcheck+1) THEN rslt = 0 arg_msg = "查询操作失败,补件单明细" GOTO ext END IF reissueid = arg_reissueid scid = arg_scid it_mxbt = i - 1 it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer newbegin (long arg_scid, ref string arg_msg);//==================================================================== // Function: newbegin(long arg_scid,int arg_billtype,ref string arg_msg) //-------------------------------------------------------------------- // Description: 从置对象,设定业务类型,准备建立新进仓单 //-------------------------------------------------------------------- // Arguments: // value long arg_scid // value integer arg_billtype // reference string arg_msg //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.12 //-------------------------------------------------------------------- // Modify History: // //==================================================================== int rslt=1 if arg_scid < 0 then arg_msg = '请选择分部' rslt = 0 goto ext end if p_reset() scid=arg_scid it_newbegin=true it_updatebegin=false ext: if rslt=0 then p_reset() return rslt end function public function integer updatebegin (long arg_scid, long arg_reissueid, ref string arg_msg);//==================================================================== // Function: updatebegin(arg_scid,arg_inwareid,arg_billtype,arg_msg) //-------------------------------------------------------------------- // Description: 从置对象,设定业务类型与关联ID,准备更新进仓单 //-------------------------------------------------------------------- // Arguments: // value long arg_scid // value long arg_inwareid // value integer arg_billtype // reference string arg_msg //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.12 //-------------------------------------------------------------------- // Modify History: // //==================================================================== Long rslt = 1 IF arg_scid < 0 THEN arg_msg = '请选择分部' rslt = 0 GOTO ext END IF IF arg_reissueid <= 0 THEN rslt = 0 GOTO ext END IF rslt = p_getinfo(arg_scid,arg_reissueid,arg_msg) IF rslt = 0 THEN GOTO ext IF flag = 1 or pflag = 1 THEN rslt = 0 arg_msg = '单据已经审核,不可以修改' GOTO ext END IF reissueid = arg_reissueid scid = arg_scid it_newbegin = FALSE it_updatebegin = TRUE p_clearmx() //清除明细 ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer add_dscrp (long arg_scid, long arg_reissueid, string arg_newdescppart, ref string arg_msg);//add_dscrp(string arg_newdescppart) //0 fail 1 success int rslt=1 arg_newdescppart=trim(arg_newdescppart) if it_updatebegin or it_newbegin then rslt=0 arg_msg="编辑状态下不可用" goto ext end if if arg_newdescppart='' then rslt=0 arg_msg="要添加内容为空,操作取消" goto ext end if rslt=p_getinfo(arg_scid,arg_reissueid,arg_msg) if rslt=0 then goto ext if flag=0 then rslt=0 arg_msg="非审核状态下不可用" goto ext end if update u_reissue set dscrp = dscrp+' '+:arg_newdescppart where u_reissue.reissueid = :reissueid and scid=:scid using commit_transaction; if commit_transaction.sqlcode<>0 then rollback ; rslt=0 arg_msg="因网络或其它原因导致添加单据备注操作失败"+"~n"+commit_transaction.sqlerrtext goto ext end if commit using commit_transaction; dscrp = dscrp+' '+arg_newdescppart ext: return (rslt) end function public function integer save (boolean arg_ifcommit, ref string arg_msg);Integer rslt = 1,cnt = 0,i DateTime server_dt Long ls_newid String ls_sccode IF uo_option_m_msttake = -1000 THEN rslt = 0 arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!' GOTO ext END IF IF IsNull(relid) THEN relid = 0 IF IsNull(cusid) THEN cusid = 0 IF IsNull(moneyid) THEN moneyid = 0 IF IsNull(mrate) THEN mrate = 0 IF IsNull(relcode) THEN relcode = '' IF IsNull(reissueemp) THEN reissueemp = '' IF IsNull(dscrp) THEN dscrp = '' IF IsNull(itemid) THEN itemid = 0 IF IsNull(freight) THEN freight = '' IF IsNull(freight_tele) THEN freight_tele = '' IF IsNull(freight_address) THEN freight_address = '' IF IsNull(exchangeid) THEN exchangeid = 0 IF IsNull(deptid) THEN deptid = 0 IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以提交" GOTO ext END IF SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF cusid = 0 THEN IF r_type = 2 THEN arg_msg = '请选择供应商' ELSE arg_msg = '请选择客户' END IF rslt = 0 GOTO ext END IF IF r_type = 2 THEN SELECT count(*) INTO :cnt FROM u_spt WHERE sptid = :cusid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询供应商资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '错误的供应商资料' GOTO ext END IF ELSE SELECT count(*) INTO :cnt FROM u_cust WHERE cusid = :cusid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询客户资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '错误的客户资料' GOTO ext END IF END IF IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空 rslt = 0 arg_msg = "没有正确明细内容" GOTO ext END IF IF itemid = 0 THEN rslt = 0 arg_msg = '请选择项目' GOTO ext END IF SELECT count(*) INTO :cnt FROM u_itemdef WHERE itemid = :itemid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询项目资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '错误的项目资料' GOTO ext END IF /////////检查币种//////////////////// // cnt = 0 SELECT count(*) INTO :cnt FROM cw_currency Where moneyid = :moneyid; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询币种失败' rslt = 0 GOTO ext END IF IF cnt = 0 THEN arg_msg = '币种资料不存在' rslt = 0 GOTO ext END IF IF Not ( uo_option_m_msttake = 1 And r_type = 1 ) THEN IF mrate = 0 THEN arg_msg = '币种汇率错误' rslt = 0 GOTO ext END IF END IF IF f_moneyid_rate_check(moneyid,mrate,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ///////////////////// // IF f_check_inoutdate(0,reissuedate,False,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ////////////////////////////////////////////// //开始区分:新建/更新 处理 IF reissueid = 0 THEN //新建 ls_newid = f_sys_scidentity(scid,"u_reissue","reissueid",arg_msg,True,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF //取分部代号 IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF //取得新单据编号 IF r_type = 0 THEN //补件单 reissuecode = getid(scid,ls_sccode + 'FJ',Date(server_dt),if_getid_ture,commit_transaction) ELSEIF r_type = 1 THEN //费用单 reissuecode = getid(scid,ls_sccode + 'FP',Date(server_dt),if_getid_ture,commit_transaction) ELSE reissuecode = getid(scid,ls_sccode + 'FS',Date(server_dt),if_getid_ture,commit_transaction) END IF IF reissuecode = "err" THEN reissuecode = '' rslt = 0 arg_msg = "无法获取单据编号"+"~n"+commit_transaction.SQLErrText GOTO ext END IF INSERT INTO u_reissue ( scid, reissueid, reissuecode, cusid, reissuedate, relid, relcode, dscrp, opdate, opemp, flag, reissueemp, type, moneyid, mrate, itemid, freight, freight_tele, freight_address, exchangeid, deptid) VALUES ( :scid, :ls_newid, :reissuecode, :cusid, :reissuedate, :relid, :relcode, :dscrp, :server_dt, :publ_operator, :flag, :reissueemp, :r_type, :moneyid, :mrate, :itemid, :freight, :freight_tele, :freight_address, :exchangeid, :deptid) Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF //读取新reissueid reissueid = ls_newid ELSE //////////////////////////////////////////////// //更新 UPDATE u_reissue SET cusid = :cusid, reissuedate = :reissuedate, relid = :relid, relcode = :relcode, dscrp = :dscrp, moddate = : server_dt, modemp = :publ_operator, reissueemp = :reissueemp, type = :r_type, moneyid = :moneyid, mrate = :mrate, itemid = :itemid, freight = :freight, freight_tele = :freight_tele, freight_address = :freight_address, exchangeid = :exchangeid, deptid = :deptid WHERE u_reissue.reissueid = :reissueid AND u_reissue.scid = :scid And flag = 0 Using commit_transaction; IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF //删除原有明细 DELETE FROM u_reissuemx WHERE u_reissuemx.reissueid = :reissueid And u_reissuemx.scid = :scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF END IF FOR i = 1 To it_mxbt INSERT INTO u_reissuemx (scid, reissueid, mtrlid, printid, qty, price, amt, toamt, dscrp, tax, mtrlcode, mtrlname, mtrlmode, unit, configcode, configname, mtrlcolor, simplename, fprice, famt, tofamt, reltaskid) VALUES ( :scid, :reissueid, :reissuemx[i].mtrlid, :reissuemx[i].printid, :reissuemx[i].qty, :reissuemx[i].price, :reissuemx[i].amt, :reissuemx[i].toamt, :reissuemx[i].mxdscrp, :reissuemx[i].tax, :reissuemx[i].mtrlcode, :reissuemx[i].mtrlname, :reissuemx[i].mtrlmode, :reissuemx[i].unit, :reissuemx[i].configcode, :reissuemx[i].configname, :reissuemx[i].mtrlcolor, :reissuemx[i].simplename, :reissuemx[i].fprice, :reissuemx[i].famt, :reissuemx[i].tofamt, :reissuemx[i].reltaskid) Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN IF it_newbegin THEN reissueid = 0 //还原reissueid rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF NEXT it_newbegin = False it_updatebegin = False ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; p_clearmx() ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF RETURN rslt end function public function integer del (long arg_scid, long arg_reissueid, ref string arg_msg, boolean arg_ifcommit);//如果单据还没有审核删除单据极其明细 //0 FAIL, 1 SUCCESS Int rslt = 1 IF arg_reissueid <= 0 THEN rslt = 0 arG_MSG = "没有删除对象,操作取消" GOTO ext END IF IF p_getinfo(arg_scid,arg_reissueid,arG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 1 or pflag = 1 THEN rslt = 0 arG_MSG = "单据已经审核,不可以删除" GOTO ext END IF DELETE FROM u_reissue WHERE u_reissue.reissueid = :arg_reissueid AND u_reissue.scid = :arg_scid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arG_MSG = "删除补件单操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF DELETE FROM u_reissuemx WHERE u_reissuemx.reissueid = :arg_reissueid AND u_reissuemx.scid = :arg_scid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arG_MSG = "删除补件单明细操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; p_reset() ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT USING commit_transaction; END IF RETURN (rslt) end function public function integer auditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 Long cnt = 0,ll_i Long ll_moneyid_native,ll_moneyid Decimal ld_mrate If uo_option_reissue_secaudit = -1000 Then rslt = 0 arg_msg = '选项:[212]客户费用单使用二级审核,读取初始默认值失败,操作取消!' Goto ext End If If uo_option_reissue_spt_secaudit = -1000 Then rslt = 0 arg_msg = '选项:[213]供应商费用单使用二级审核,读取初始默认值失败,操作取消!' Goto ext End If If uo_option_m_msttake = -1000 Then rslt = 0 arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!' Goto ext End If uo_musttake uo_take uo_mustpay uo_pay uo_take = Create uo_musttake uo_pay = Create uo_mustpay String ls_about,ls_dscrp Decimal ld_takeamt = 0,ld_msttakeamt = 0 Decimal ld_payamt = 0,ld_mstpayamt = 0 Decimal ld_taxamt = 0 Int li_btype Long ll_accountsid Long ll_dft_itemid_tax s_bmstpaymx s_paymx_tax s_bmsttakemx s_takemx_tax If getinfo(arg_scid,arg_reissueid,arg_msg) = 0 Then rslt = 0 Goto ext End If If reissueid = 0 Then rslt = 0 arg_msg = "没有审核对象" Goto ext End If If it_newbegin Or it_updatebegin Then rslt = 0 arg_msg = "编辑状态下不可以执行审核" Goto ext End If If flag = 1 Then rslt = 0 arg_msg = "单据已经审核" Goto ext End If If r_type = 1 And uo_option_reissue_secaudit = 1 Then If pflag = 0 Then rslt = 0 arg_msg = "单据还没有执行初审,不能终审" Goto ext End If End If If r_type = 2 And uo_option_reissue_spt_secaudit = 1 Then If pflag = 0 Then rslt = 0 arg_msg = "单据还没有执行初审,不能终审" Goto ext End If End If Select moneyid Into :ll_moneyid_native From cw_currency Where native = 1; If sqlca.SQLCode <> 0 Then arg_msg = '查询本位币资料失败' rslt = 0 Goto ext End If Select btype,accountsid Into :li_btype,:ll_accountsid From cw_banktype Where banktypeid = :relid Using commit_transaction; If commit_transaction.SQLCode <> 0 Then rslt = 0 arg_msg = '查询结算方式类型失败,'+ commit_transaction.SQLErrText Goto ext End If Select count(*) Into :cnt From u_user Where username = :publ_operator Using commit_transaction ; If commit_transaction.SQLCode <> 0 Then rslt = 0 arg_msg = "查询操作失败,操作员" Goto ext End If If cnt = 0 Then rslt = 0 arg_msg = "操作员姓名未登记或已取消" Goto ext End If Update u_reissue Set auditingrep = :publ_operator, auditingdate = getdate(), flag = 1 Where u_reissue.reissueid = :reissueid 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 If r_type = 0 Then If sumamt <> 0 Then ls_about = reissuecode + "补件款" ls_dscrp = ls_about +','+dscrp If uo_option_m_msttake = 0 Then ld_msttakeamt = sumfamt Else ld_msttakeamt = sumamt End If If li_btype = 1 Then ld_takeamt = ld_msttakeamt Else ld_takeamt = 0 End If If uo_option_m_msttake = 0 Then ld_msttakeamt = ld_msttakeamt //Round(ld_msttakeamt * mrate,2) ld_takeamt = ld_takeamt //Round(ld_takeamt * mrate,2) ll_moneyid = ll_moneyid_native ld_mrate = 1 Else ld_msttakeamt = ld_msttakeamt ld_takeamt = ld_takeamt ll_moneyid = moneyid If sumamt <> 0 Then ld_mrate = sumfamt / sumamt Else ld_mrate = mrate End If End If s_bmsttake s_take s_take.scid = scid s_take.cusid = cusid s_take.takedate = reissuedate s_take.inrep = reissueemp s_take.oriamt = ld_msttakeamt s_take.msttakeamt = ld_msttakeamt s_take.takeamt = ld_takeamt s_take.dscrp = ls_dscrp s_take.billcode = reissuecode s_take.relcode = relcode s_take.banktypeid = relid s_take.opemp = publ_operator s_take.buildtype = 1 s_take.outwareid = reissueid If li_btype = 0 Then s_take.accountsid = 0 Else s_take.accountsid = ll_accountsid End If s_take.itemid = itemid s_take.moneyid = ll_moneyid s_take.mrate = ld_mrate s_take.exchangeid = exchangeid If uo_take.add_takerec (s_take,arg_msg,False) = 0 Then rslt = 0 Goto ext End If Update u_reissue Set relint_3 = :uo_take.ref_takeid Where u_reissue.reissueid = :reissueid And scid = :scid And flag = 1 Using commit_transaction; If commit_transaction.SQLCode <> 0 Then arg_msg = '更新补件单相关应收帐ID失败' rslt = 0 Goto ext End If End If ElseIf r_type = 1 Then For ll_i = 1 To it_mxbt If reissuemx[ll_i].amt <> 0 Then If Trim(reissuemx[ll_i].mxdscrp) = '' Then ls_about = reissuecode + ',' + reissuemx[ll_i].mtrlname Else ls_about = reissuecode + ',' + reissuemx[ll_i].mtrlname + ',' + reissuemx[ll_i].mxdscrp End If // ls_dscrp = ls_about ls_dscrp = ls_about +','+dscrp ld_msttakeamt = 0 - Round(reissuemx[ll_i].amt / (1 + reissuemx[ll_i].tax),2) ld_taxamt = 0 - Round(reissuemx[ll_i].amt / (1 + reissuemx[ll_i].tax) * reissuemx[ll_i].tax ,2) If li_btype = 1 Then ld_takeamt = ld_msttakeamt Else ld_takeamt = 0 End If If uo_option_m_msttake = 0 Then ld_msttakeamt = Round(ld_msttakeamt * mrate,2) ld_takeamt = Round(ld_takeamt * mrate,2) ll_moneyid = ll_moneyid_native ld_mrate = 1 Else ld_msttakeamt = ld_msttakeamt ld_takeamt = ld_takeamt ll_moneyid = moneyid ld_mrate = mrate End If s_bmsttake s_take2 s_take2.scid = scid s_take2.cusid = cusid s_take2.takedate = reissuedate s_take2.inrep = reissueemp s_take2.oriamt = ld_msttakeamt s_take2.msttakeamt = ld_msttakeamt s_take2.takeamt = ld_takeamt s_take2.dscrp = ls_dscrp s_take2.billcode = reissuecode s_take2.relcode = relcode s_take2.banktypeid = relid s_take2.opemp = publ_operator s_take2.buildtype = 1 s_take2.outwareid = reissueid If li_btype = 0 Then s_take2.accountsid = 0 Else s_take2.accountsid = ll_accountsid End If s_take2.itemid = itemid s_take2.moneyid = ll_moneyid s_take2.mrate = ld_mrate s_take2.exchangeid = exchangeid If uo_take.add_takerec (s_take2,arg_msg,False) = 0 Then rslt = 0 Goto ext End If If ld_taxamt <> 0 Then ls_about = reissuecode + "税金,相关号:"+relcode Select itemid Into :ll_dft_itemid_tax From u_itemdef Where dfttype = 12 Using commit_transaction; If commit_transaction.SQLCode <> 0 Then arg_msg = '查询默认销售税金项目资料失败,'+commit_transaction.SQLErrText rslt = 0 Goto ext End If If uo_option_m_msttake = 0 Then ld_taxamt = Round(ld_taxamt * mrate,2) ll_moneyid = ll_moneyid_native ld_mrate = 1 Else ld_taxamt = ld_taxamt ll_moneyid = moneyid ld_mrate = mrate End If s_takemx_tax.scid = scid s_takemx_tax.takeid = uo_take.ref_takeid s_takemx_tax.cusid = cusid s_takemx_tax.takedate = reissuedate s_takemx_tax.inrep = reissueemp s_takemx_tax.msttakeamt = ld_taxamt s_takemx_tax.takeamt = 0 s_takemx_tax.dscrp = ls_about s_takemx_tax.billcode = reissuecode s_takemx_tax.relcode = relcode s_takemx_tax.banktypeid = relid s_takemx_tax.opemp = publ_operator s_takemx_tax.buildtype = 3 s_takemx_tax.outwareid = reissueid s_takemx_tax.salebillid = 0 s_takemx_tax.itemid = ll_dft_itemid_tax s_takemx_tax.moneyid = ll_moneyid s_takemx_tax.mrate = ld_mrate If uo_take.add_takerecmx(s_takemx_tax,arg_msg,False) = 0 Then rslt = 0 Goto ext End If End If Update u_reissuemx Set relid = :uo_take.ref_takeid From u_reissuemx,u_reissue Where u_reissuemx.reissueid = :reissueid And u_reissuemx.printid = :reissuemx[ll_i].printid And u_reissuemx.scid = :scid And u_reissuemx.scid = u_reissue.scid And u_reissuemx.reissueid = u_reissue.reissueid And u_reissue.flag = 1 Using commit_transaction; If commit_transaction.SQLCode <> 0 Then arg_msg = '更新费用单相关应收帐ID失败' rslt = 0 Goto ext End If End If Next ElseIf r_type = 2 Then For ll_i = 1 To it_mxbt If Trim(reissuemx[ll_i].mxdscrp) = '' Then ls_about = reissuecode + ',' + reissuemx[ll_i].mtrlname Else ls_about = reissuecode + ',' + reissuemx[ll_i].mtrlname + ',' + reissuemx[ll_i].mxdscrp End If ls_dscrp = ls_about ld_mstpayamt = Round(reissuemx[ll_i].amt / (1 + reissuemx[ll_i].tax),2) ld_taxamt = Round(reissuemx[ll_i].amt / (1 + reissuemx[ll_i].tax) * reissuemx[ll_i].tax ,2) If li_btype = 1 Then ld_payamt = ld_mstpayamt Else ld_payamt = 0 End If s_bmstpay s_pay s_pay.scid = scid s_pay.sptid = cusid s_pay.paydate = reissuedate s_pay.inrep = reissueemp s_pay.oriamt = ld_mstpayamt s_pay.mstpayamt = ld_mstpayamt s_pay.payamt = ld_payamt s_pay.payamt_cn = ld_payamt s_pay.dscrp = ls_dscrp s_pay.billcode = reissuecode s_pay.relcode = relcode s_pay.banktypeid = relid //s_pay.viewdate s_pay.opemp = publ_operator s_pay.buildtype = 1 s_pay.inwareid = reissueid If li_btype = 0 Then s_pay.accountsid = 0 Else s_pay.accountsid = ll_accountsid End If s_pay.itemid = itemid s_pay.moneyid = moneyid s_pay.moneyid_cn = moneyid If uo_pay.add_payrec (s_pay,arg_msg,False) = 0 Then rslt = 0 Goto ext End If If ld_taxamt <> 0 Then ls_about = reissuecode + "税金,相关号:"+relcode Select itemid Into :ll_dft_itemid_tax From u_itemdef Where dfttype = 13 Using commit_transaction; If commit_transaction.SQLCode <> 0 Then arg_msg = '查询默认采购外协税金项目资料失败,'+commit_transaction.SQLErrText rslt = 0 Goto ext End If s_paymx_tax.scid = scid s_paymx_tax.payid = uo_pay.ref_payid s_paymx_tax.sptid = cusid s_paymx_tax.paydate = reissuedate s_paymx_tax.inrep = reissueemp s_paymx_tax.mstpayamt = ld_taxamt s_paymx_tax.payamt = 0 s_paymx_tax.dscrp = ls_about s_paymx_tax.billcode = reissuecode s_paymx_tax.relcode = relcode s_paymx_tax.banktypeid = relid s_paymx_tax.opemp = publ_operator s_paymx_tax.buildtype = 3 s_paymx_tax.inwareid = reissueid s_paymx_tax.itemid = ll_dft_itemid_tax s_paymx_tax.moneyid = moneyid If uo_pay.add_payrecmx (s_paymx_tax,arg_msg,False) = 0 Then rslt = 0 Goto ext End If End If Update u_reissuemx Set relid = :uo_pay.ref_payid From u_reissuemx,u_reissue Where u_reissuemx.reissueid = :reissueid And u_reissuemx.printid = :reissuemx[ll_i].printid And u_reissuemx.scid = :scid And u_reissuemx.scid = u_reissue.scid And u_reissuemx.reissueid = u_reissue.reissueid And u_reissue.flag = 1 Using commit_transaction; If commit_transaction.SQLCode <> 0 Then arg_msg = '更新销售单相关应收帐ID失败' rslt = 0 Goto ext End If Next End If flag = 1 ext: Destroy uo_take Destroy uo_pay If rslt = 0 Then Rollback Using commit_transaction; ElseIf rslt = 1 And arg_ifcommit Then Commit Using commit_transaction; End If Return rslt end function public function integer c_auditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,ll_i uo_musttake uo_take uo_mustpay uo_pay uo_take = CREATE uo_musttake uo_pay = create uo_mustpay Long ll_takeid DateTime null_dt SetNull(null_dt) IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF reissueid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF it_newbegin OR it_updatebegin THEN rslt = 0 arg_msg = "编辑状态下不可以执行审核" GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = "单据还未审核" GOTO ext END IF SELECT count(*) INTO :cnt FROM u_user Where username = :publ_operator USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,操作员" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "操作员姓名未登记或已取消" GOTO ext END IF UPDATE u_reissue SET Auditingrep = '', Auditingdate = :null_dt, flag = 0, relint_3 = 0 WHERE u_reissue.reissueid = :reissueid 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 IF r_type = 0 THEN IF sumamt <> 0 THEN IF uo_take.del_takerec(scid,1,relint_3,cusid,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF END IF ELSEIF r_type = 1 THEN FOR ll_i = 1 TO it_mxbt IF reissuemx[ll_i].amt <> 0 THEN IF uo_take.del_takerec(scid,1,reissuemx[ll_i].relid,cusid,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF UPDATE u_reissuemx SET relid = 0 WHERE u_reissuemx.reissueid = :reissueid AND u_reissuemx.printid = :reissuemx[ll_i].printid AND u_reissuemx.scid = :scid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF END IF NEXT ELSEIF r_type = 2 THEN FOR ll_i = 1 TO it_mxbt IF reissuemx[ll_i].amt <> 0 THEN IF uo_pay.del_payrec(scid,1,reissuemx[ll_i].relid,cusid,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF UPDATE u_reissuemx SET relid = 0 WHERE u_reissuemx.reissueid = :reissueid AND u_reissuemx.printid = :reissuemx[ll_i].printid AND u_reissuemx.scid = :scid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF END IF NEXT END IF flag = 0 ext: DESTROY uo_take DESTROY uo_pay IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT USING commit_transaction; END IF RETURN rslt end function public function integer pauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,ll_i IF uo_option_reissue_secaudit = -1000 THEN rslt = 0 arg_msg = '选项:[212]客户费用单使用二级审核,读取初始默认值失败,操作取消!' GOTO ext END IF IF uo_option_reissue_spt_secaudit = -1000 THEN rslt = 0 arg_msg = '选项:[213]供应商费用单使用二级审核,读取初始默认值失败,操作取消!' GOTO ext END IF IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF reissueid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF it_newbegin OR it_updatebegin THEN rslt = 0 arg_msg = "编辑状态下不可以执行审核" GOTO ext END IF IF flag = 1 THEN rslt = 0 arg_msg = "单据已经审核" GOTO ext END IF IF r_type = 1 AND uo_option_reissue_secaudit = 1 THEN IF pflag = 1 THEN rslt = 0 arg_msg = "单据已执行初审,不能重复执行" GOTO ext END IF END IF IF r_type = 2 AND uo_option_reissue_spt_secaudit = 1 THEN IF pflag = 1 THEN rslt = 0 arg_msg = "单据已执行初审,不能重复执行" GOTO ext END IF END IF Int li_btype Long ll_accountsid SELECT btype,accountsid INTO :li_btype,:ll_accountsid FROM cw_banktype Where banktypeid = :relid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询结算方式类型失败,'+ commit_transaction.SQLErrText GOTO ext END IF SELECT count(*) INTO :cnt FROM u_user Where username = :publ_operator USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,操作员" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "操作员姓名未登记或已取消" GOTO ext END IF UPDATE u_reissue SET pauditingrep = :publ_operator, pauditingdate = getdate(), pflag = 1 WHERE u_reissue.reissueid = :reissueid AND pflag = 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 pflag = 1 ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT USING commit_transaction; END IF RETURN rslt end function public function integer c_pauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,ll_i Long ll_takeid DateTime null_dt SetNull(null_dt) IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF reissueid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF it_newbegin OR it_updatebegin THEN rslt = 0 arg_msg = "编辑状态下不可以执行审核" GOTO ext END IF IF pflag = 0 THEN rslt = 0 arg_msg = "单据还未审核" GOTO ext END IF SELECT count(*) INTO :cnt FROM u_user Where username = :publ_operator USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,操作员" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "操作员姓名未登记或已取消" GOTO ext END IF UPDATE u_reissue SET pauditingrep = '', pauditingdate = :null_dt, pflag = 0 WHERE u_reissue.reissueid = :reissueid AND pflag = 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 pflag = 0 ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT USING commit_transaction; END IF RETURN rslt end function public function integer acceptmx (decimal arg_qty, double arg_price, decimal arg_amt, decimal arg_toamt, string arg_mxdscrp, long arg_printid, ref string arg_msg, long arg_mtrlid, string arg_mtrlname, decimal arg_tax);s_reissuemx s_mx s_mx.qty = arg_qty s_mx.price = arg_price s_mx.amt = arg_amt s_mx.toamt = arg_toamt s_mx.mxdscrp = arg_mxdscrp s_mx.printid= arg_printid s_mx.mtrlid = arg_mtrlid s_mx.mtrlname = arg_mtrlname s_mx.tax = arg_tax return acceptmx(s_mx, arg_msg) /* Int rslt = 1 Long cnt = 0 IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF //清除空值 IF IsNull(arg_qty) THEN arg_qty = 0 IF IsNull(arg_price) THEN arg_price = 0 IF IsNull(arg_printid) THEN arg_printid = 0 IF IsNull(arg_amt) THEN arg_amt = 0 IF IsNull(arg_toamt) THEN arg_toamt = 0 IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = '' IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0 IF IsNull(arg_mtrlname) THEN arg_mtrlname = '' IF IsNull(arg_tax) THEN arg_tax = 0 // 如果出仓数量为 0,或物料编号为空,则不作任何处理 IF arg_tax < 0 THEN rslt = 0 arg_msg = '第'+String(arg_printid)+'行,不合理的税率' GOTO ext END IF IF r_type = 0 THEN //允许系统没有编码的物料, 20121215 lhd // SELECT count(*) INTO :cnt // FROM u_mtrldef // Where mtrlid = :arg_mtrlid Using commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // arg_msg = '查询物料资料失败,'+commit_transaction.SQLErrText // rslt = 0 // GOTO ext // END IF // IF arg_mtrlid = 0 THEN // rslt = 1 // GOTO ext // END IF ELSEIF r_type = 1 THEN SELECT count(*) INTO :cnt FROM U_Expenses Where Expensesid = :arg_mtrlid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询项目资料失败,'+commit_transaction.SQLErrText rslt = 0 GOTO ext END IF IF arg_mtrlid = 0 THEN rslt = 1 GOTO ext END IF if arg_tax > 0 and arg_price > 0 then rslt = 0 arg_msg = '有税率的明细单价必须为负数,请检查' goto ext end if ELSEIF r_type = 2 And arg_mtrlid > 0 THEN SELECT count(*) INTO :cnt FROM U_Expenses Where Expensesid = :arg_mtrlid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询项目资料失败,'+commit_transaction.SQLErrText rslt = 0 GOTO ext END IF END IF IF arg_qty = 0 THEN rslt = 1 GOTO ext END IF //写入内容 it_mxbt++ reissuemx[it_mxbt].mtrlid = arg_mtrlid reissuemx[it_mxbt].qty = arg_qty reissuemx[it_mxbt].amt = Round(arg_amt,2) reissuemx[it_mxbt].toamt = Round(arg_toamt,2) reissuemx[it_mxbt].price = arg_price reissuemx[it_mxbt].mxdscrp = arg_mxdscrp reissuemx[it_mxbt].printid = arg_printid reissuemx[it_mxbt].mtrlname = arg_mtrlname reissuemx[it_mxbt].tax = arg_tax ext: IF rslt = 0 THEN p_clearmx() RETURN rslt */ end function public function integer uof_uc_moditem (long arg_scid, long arg_reissueid, long arg_itemid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,ll_i Long ll_takeid IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF reissueid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = "单据还未终审,请检查" GOTO ext END IF IF r_type = 1 THEN FOR ll_i = 1 To it_mxbt UPDATE u_Bmsttake SET u_Bmsttake.itemid = :arg_itemid WHERE u_Bmsttake.scid = :arg_scid And u_Bmsttake.takeid = :reissuemx[ll_i].relid; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "单据明细:"+String(ll_i)+"更新相关应收帐项目失败,~n"+commit_transaction.SQLErrText GOTO ext END IF UPDATE u_Bmsttakemx SET u_Bmsttakemx.itemid = :arg_itemid WHERE u_Bmsttakemx.scid = :arg_scid AND u_Bmsttakemx.takeid = :reissuemx[ll_i].relid And u_Bmsttakemx.listno = 0; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "单据明细:"+String(ll_i)+"更新相关应收帐明细项目失败,~n"+commit_transaction.SQLErrText GOTO ext ELSE IF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据明细:"+String(ll_i)+"更新相关应收帐明细项目失败,没有对应应收帐明细" GOTO ext END IF END IF NEXT END IF ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF RETURN rslt end function public function integer priceauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,ll_i IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF reissueid = 0 THEN rslt = 0 arg_msg = "没有确认对象" GOTO ext END IF IF it_newbegin OR it_updatebegin THEN rslt = 0 arg_msg = "编辑状态下不可以执行确认" GOTO ext END IF Int li_btype Long ll_accountsid SELECT btype,accountsid INTO :li_btype,:ll_accountsid FROM cw_banktype Where banktypeid = :relid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询结算方式类型失败,'+ commit_transaction.SQLErrText GOTO ext END IF SELECT count(*) INTO :cnt FROM u_user Where username = :publ_operator USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,操作员" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "操作员姓名未登记或已取消" GOTO ext END IF UPDATE u_reissue SET pricerep = :publ_operator, pricedate = getdate(), priceflag = 1 WHERE u_reissue.reissueid = :reissueid AND priceflag = 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 priceflag = 1 ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT USING commit_transaction; END IF RETURN rslt end function public function integer c_priceauditing (long arg_scid, long arg_reissueid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,ll_i Long ll_takeid DateTime null_dt SetNull(null_dt) IF getinfo(arg_scid,arg_reissueid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF reissueid = 0 THEN rslt = 0 arg_msg = "没有反确认对象" GOTO ext END IF IF it_newbegin OR it_updatebegin THEN rslt = 0 arg_msg = "编辑状态下不可以执行反确认" GOTO ext END IF IF priceflag = 0 THEN rslt = 0 arg_msg = "单据还未确认" GOTO ext END IF IF pflag = 1 THEN rslt = 0 arg_msg = "单据已仓审" GOTO ext END IF SELECT count(*) INTO :cnt FROM u_user Where username = :publ_operator USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,操作员" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "操作员姓名未登记或已取消" GOTO ext END IF UPDATE u_reissue SET pricerep = '', pricedate = :null_dt, priceflag = 0 WHERE u_reissue.reissueid = :reissueid AND priceflag = 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 priceflag = 0 ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT USING commit_transaction; END IF RETURN rslt end function public function integer acceptmx (s_reissuemx s_mx, ref string arg_msg);Int rslt = 1 Long cnt = 0 IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF //清除空值 IF IsNull(s_mx.qty) THEN s_mx.qty = 0 IF IsNull(s_mx.price) THEN s_mx.price = 0 IF IsNull(s_mx.printid) THEN s_mx.printid = 0 IF IsNull(s_mx.amt) THEN s_mx.amt = 0 IF IsNull(s_mx.toamt) THEN s_mx.toamt = 0 IF IsNull(s_mx.mxdscrp) THEN s_mx.mxdscrp = '' IF IsNull(s_mx.tax) THEN s_mx.tax = 0 IF IsNull(s_mx.mtrlid) THEN s_mx.mtrlid = 0 IF IsNull(s_mx.mtrlcode) THEN s_mx.mtrlcode = '' IF IsNull(s_mx.mtrlname) THEN s_mx.mtrlname = '' IF IsNull(s_mx.mtrlmode) THEN s_mx.mtrlmode = '' IF IsNull(s_mx.unit) THEN s_mx.unit = '' IF IsNull(s_mx.configcode) THEN s_mx.configcode = '' IF IsNull(s_mx.configname) THEN s_mx.configname = '' IF IsNull(s_mx.mtrlcolor) THEN s_mx.mtrlcolor = '' IF IsNull(s_mx.simplename) THEN s_mx.simplename = '' IF IsNull(s_mx.reltaskid) THEN s_mx.reltaskid = 0 // 如果出仓数量为 0,或物料编号为空,则不作任何处理 IF s_mx.tax < 0 THEN rslt = 0 arg_msg = '第'+String(s_mx.printid)+'行,不合理的税率' GOTO ext END IF IF r_type = 0 THEN //补件单 //允许系统没有编码的物料, 20121215 lhd IF s_mx.mtrlid > 0 THEN s_mx.mtrlcode = '' s_mx.mtrlname = '' s_mx.mtrlmode = '' s_mx.unit = '' s_mx.configcode = '' s_mx.configname = '' s_mx.mtrlcolor = '' s_mx.simplename = '' ELSE END IF ELSEIF r_type = 1 THEN // SELECT count(*) INTO :cnt // FROM U_Expenses // Where Expensesid = :s_mx.mtrlid Using commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // arg_msg = '查询项目资料失败,'+commit_transaction.SQLErrText // rslt = 0 // GOTO ext // END IF // IF s_mx.mtrlid = 0 THEN // rslt = 1 // GOTO ext // END IF IF s_mx.tax > 0 And s_mx.price > 0 THEN rslt = 0 arg_msg = '有税率的明细单价必须为负数,请检查' GOTO ext END IF ELSEIF r_type = 2 And s_mx.mtrlid > 0 THEN SELECT count(*) INTO :cnt FROM U_Expenses Where Expensesid = :s_mx.mtrlid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询项目资料失败,'+commit_transaction.SQLErrText rslt = 0 GOTO ext END IF END IF IF s_mx.qty = 0 THEN rslt = 1 GOTO ext END IF //写入内容 it_mxbt++ reissuemx[it_mxbt].qty = s_mx.qty reissuemx[it_mxbt].tax = s_mx.tax reissuemx[it_mxbt].amt = Round(s_mx.amt,2) reissuemx[it_mxbt].toamt = Round(s_mx.toamt,2) reissuemx[it_mxbt].price = s_mx.price //原币单价 IF sys_option_price_rmb = 0 THEN reissuemx[it_mxbt].fprice = s_mx.price * mrate //人民币单价 ELSE reissuemx[it_mxbt].fprice = Round(s_mx.price * mrate, 2) //人民币单价 END IF //reissuemx[it_mxbt].famt = round(reissuemx[it_mxbt].fprice * s_mx.qty, 2) reissuemx[it_mxbt].famt = round(reissuemx[it_mxbt].amt * mrate, 2) reissuemx[it_mxbt].tofamt = round(reissuemx[it_mxbt].toamt * mrate, 2) reissuemx[it_mxbt].mxdscrp = s_mx.mxdscrp reissuemx[it_mxbt].printid = s_mx.printid reissuemx[it_mxbt].mtrlid = s_mx.mtrlid reissuemx[it_mxbt].mtrlcode = s_mx.mtrlcode reissuemx[it_mxbt].mtrlname = s_mx.mtrlname reissuemx[it_mxbt].mtrlmode = s_mx.mtrlmode reissuemx[it_mxbt].unit = s_mx.unit reissuemx[it_mxbt].configcode = s_mx.configcode reissuemx[it_mxbt].configname = s_mx.configname reissuemx[it_mxbt].mtrlcolor = s_mx.mtrlcolor reissuemx[it_mxbt].simplename = s_mx.simplename reissuemx[it_mxbt].reltaskid = s_mx.reltaskid ext: IF rslt = 0 THEN p_clearmx() RETURN rslt end function on uo_reissue.create call super::create TriggerEvent( this, "constructor" ) end on on uo_reissue.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;String str_optionvalue,arg_msg f_get_sys_option_value('212',str_optionvalue,arg_msg) uo_option_reissue_secaudit = Long(str_optionvalue) f_get_sys_option_value('213',str_optionvalue,arg_msg) uo_option_reissue_spt_secaudit = Long(str_optionvalue) f_get_sys_option_value('045',str_optionvalue,arg_msg) uo_option_m_msttake = Long(str_optionvalue) end event