$PBExportHeader$uo_cusamt.sru forward global type uo_cusamt from nonvisualobject end type end forward global type uo_cusamt from nonvisualobject end type global uo_cusamt uo_cusamt type variables Public ProtectedWrite Long cusmonid //罚款单自动增量id Public ProtectedWrite String cusmoncode //罚款单的唯一编号 Public ProtectedWrite DateTime opdate //建立时间,自动 Public ProtectedWrite String opemp //建立人 Public ProtectedWrite DateTime moddate //修改时间,自动 Public ProtectedWrite String modemp //修改人 Public ProtectedWrite Int flag = 0 //审核标志 Public ProtectedWrite DateTime auditingdate //审核时间 Public ProtectedWrite String auditingrep //审核操作员 Public ProtectedWrite Int secflag = 0 //审核标志 Public ProtectedWrite DateTime secauditingdate //审核时间 Public ProtectedWrite String secauditingrep //审核操作员 Public ProtectedWrite Int confirmflag = 0 //确认标志 Public ProtectedWrite DateTime confirmdate //确认时间 Public ProtectedWrite String confirmemp //确认人 Long banktypeid Long scid Long cusid Long accountid DateTime cusdate Decimal cusamt String dscrp Int billtype Long itemid Long refrapid Long reldateint String cusrep Long moneyid Decimal mrate DateTime viewdate String relcode Long rapmoneyid int kind Int uo_option_msttake_takeamt_secaudit Int uo_option_outrep Private: Boolean it_newbegin = False //新建标志 Boolean it_updatebegin = False //修改标志 end variables forward prototypes public function integer p_reset () public function integer save (ref string arg_msg, boolean arg_ifcommit) public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg) public function integer newbegin (long arg_scid, ref string arg_msg) public function integer del (long arg_scid, long arg_billid, ref string arg_msg) public function integer auditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer confirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer cconfirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer add_dscrp (long arg_cusmonid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer auditing2 (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer c_auditing2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_update_cust (long arg_billid, long arg_cusid, ref string arg_msg, boolean arg_ifcommit) public function integer getinfo (long arg_billid, ref string arg_msg) public function integer uof_update_cust_cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_add_relcode (long arg_cusmonid, string arg_relcode, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer p_reset ();//INT p_RESET() //清除对象及其明细 banktypeid = 0 cusmonid = 0 cusmoncode = '' opemp = '' auditingrep = '' flag = 0 cusid = 0 cusamt = 0 dscrp = '' itemid = 0 billtype = 0 cusrep = '' moneyid = 0 kind = 0 accountid = 0 scid = 0 it_newbegin = FALSE it_updatebegin = FALSE RETURN 1 end function public function integer save (ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i DateTime server_dt Long ls_newid String ls_sccode Long ll_moneyid_account,ll_moneyid_native IF uo_option_msttake_takeamt_secaudit = -1000 THEN rslt = 0 arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!' GOTO ext END IF IF IsNull(cusid) THEN cusid = 0 IF IsNull(accountid) THEN accountid = 0 IF IsNull(dscrp) THEN dscrp = '' IF IsNull(cusamt) THEN cusamt = 0 IF IsNull(scid) THEN scid = 0 IF IsNull(billtype) THEN billtype = 0 IF IsNull(itemid) THEN itemid = 0 IF IsNull(cusrep) THEN cusrep = '' IF IsNull(moneyid) THEN moneyid = 0 IF IsNull(mrate) THEN mrate = 0 IF IsNull(relcode) THEN relcode = '' if isnull(kind) then kind = 0 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 IF accountid = 0 THEN arg_msg = '请选择帐号' rslt = 0 GOTO ext END IF SELECT moneyid INTO :ll_moneyid_account FROM u_accounts Where accountsid = :accountid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询帐号币种失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0 IF ll_moneyid_account = 0 THEN arg_msg = '帐号币种未指定,请检查' rslt = 0 GOTO ext END IF IF billtype = 0 THEN IF uo_option_msttake_takeamt_secaudit = 0 THEN IF cusid = 0 THEN arg_msg = '没有选择客户资料,请检查' rslt = 0 GOTO ext END IF SELECT count(*) INTO :cnt FROM u_cust Where cusid = :cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询客户资料失败' rslt = 0 GOTO ext END IF IF cnt > 1 THEN arg_msg = '客户资料重复' rslt = 0 GOTO ext END IF ELSE IF uo_option_outrep = 1 THEN IF cusid = 0 THEN arg_msg = '系统选项:使用业务员权限,单据没有选择客户资料,请检查' rslt = 0 GOTO ext END IF END IF END IF ELSE IF cusid = 0 THEN arg_msg = '没有选择供应商资料,请检查' rslt = 0 GOTO ext END IF SELECT count(*) INTO :cnt FROM u_spt Where sptid = :cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询供应商资料失败' rslt = 0 GOTO ext END IF IF cnt > 1 THEN arg_msg = '供应商资料重复' rslt = 0 GOTO ext END IF END IF IF moneyid = 0 THEN arg_msg = '请选择币种' rslt = 0 GOTO ext END IF IF mrate <= 0 THEN arg_msg = '请输入币种汇率' rslt = 0 GOTO ext END IF IF moneyid <> ll_moneyid_account And mrate = 1 THEN arg_msg = '收款币种与帐号币种不相同,汇率不能设为1' rslt = 0 GOTO ext END IF IF moneyid = ll_moneyid_account And moneyid = ll_moneyid_native And mrate <> 1 THEN arg_msg = '收款币种与帐号币种相同且为本位币,汇率要设为1' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_itemdef Where itemid = :itemid; 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 IF banktypeid = 0 THEN arg_msg = '没有结算方式' rslt = 0 GOTO ext END IF IF cusamt = 0 THEN arg_msg = '请输入正确的金额' rslt = 0 GOTO ext END IF SELECT Top 1 getdate() Into :server_dt From u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF Year(Date(cusdate)) < 2000 Or IsNull(cusdate) THEN rslt = 0 arg_msg = "时间不合理" GOTO ext END IF ////////////////////////////////////////////// //开始区分:新建/更新 处理 IF cusmonid = 0 THEN //新建 ls_newid = f_sys_scidentity(0,"u_cusamt","cusmonid",arg_msg,True,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF //取分部代号 IF f_get_sccode(scid,sqlca,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF billtype = 0 THEN cusmoncode = getid(0,ls_sccode + "SK",Date(server_dt),True,sqlca) //取得新单据编号 ELSE cusmoncode = getid(0,ls_sccode + "FK",Date(server_dt),True,sqlca) //取得新单据编号 END IF IF cusmoncode = "err" THEN cusmoncode = '' rslt = 0 arg_msg = "无法获取单据编号" GOTO ext END IF INSERT INTO u_cusamt ( scid, cusmonid, cusmoncode, cusdate, cusid, cusamt, dscrp, opdate, opemp, accountid, banktypeid, billtype, itemid, cusrep, moneyid, mrate, viewdate, relcode, kind) VALUES ( :scid, :ls_newid, :cusmoncode, :cusdate, :cusid, :cusamt, :dscrp, getdate(), :publ_operator, :accountid, :banktypeid, :billtype, :itemid, :cusrep, :moneyid, :mrate, :viewdate, :relcode, :kind); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText GOTO ext END IF cusmonid = ls_newid ELSE //////////////////////////////////////////////// //更新 UPDATE u_cusamt SET cusdate = :cusdate, cusid = :cusid, cusamt = :cusamt, dscrp = :dscrp, opdate = getdate(), opemp = :publ_operator, cusmoncode = :cusmoncode, scid = :scid, accountid = :accountid, banktypeid = :banktypeid, itemid = :itemid, cusrep = :cusrep, moneyid = :moneyid, mrate = :mrate, viewdate = :viewdate, relcode = :relcode, kind = :kind Where cusmonid = :cusmonid; IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF END IF it_newbegin = False it_updatebegin = False ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Return(rslt) end function public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg); Int rslt = 1 If arg_billid <= 0 Then cusmonid = 0 arg_msg = '错误的单据ID' Goto ext End If Select u_cusamt.cusmonid, u_cusamt.cusmoncode, u_cusamt.cusid, u_cusamt.cusamt, u_cusamt.dscrp , u_cusamt.cusdate, u_cusamt.scid, u_cusamt.accountid, u_cusamt.flag, u_cusamt.confirmflag Into :cusmonid, :cusmoncode, :cusid, :cusamt, :dscrp, :cusdate, :scid, :accountid, :flag, :confirmflag From u_cusamt Where cusmonid = :arg_billid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询数据操作失败,单据'+sqlca.SQLErrText Goto ext End If If flag = 1 Then rslt = 0 arg_msg = '单据已经审核,不可以修改' Goto ext End If If confirmflag = 1 Then rslt = 0 arg_msg = '单据已经确认,不可以修改' Goto ext End If cusmonid = arg_billid scid = arg_scid it_newbegin = False it_updatebegin = True ext: If rslt = 0 Then p_reset() Return rslt end function public function integer newbegin (long arg_scid, ref string arg_msg);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 del (long arg_scid, long arg_billid, ref string arg_msg);Int rslt = 1 IF arg_billid <= 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 SELECT u_cusamt.flag, u_cusamt.confirmflag INTO :flag, :confirmflag FROM u_cusamt Where u_cusamt.cusmonid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询收款单操作失败' GOTO ext END IF IF flag = 1 THEN rslt = 0 arg_msg = "单据已经审核,不可以删除" GOTO ext END IF if confirmflag = 1 then rslt = 0 arg_msg = "单据已经确认,不可以删除" GOTO ext END IF DELETE FROM u_cusamt Where u_cusamt.cusmonid = :arg_billid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除罚款单操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF COMMIT; it_newbegin = FALSE it_updatebegin = FALSE IF rslt = 0 THEN ROLLBACK; p_reset() END IF ext: RETURN (rslt) end function public function integer auditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ref_rapid Long ref_dateint String ls_name String ls_dscrp Decimal ld_mrate IF uo_option_msttake_takeamt_secaudit = -1000 THEN rslt = 0 arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!' GOTO ext END IF uo_musttake uo_take uo_mustpay uo_pay uo_iteminput uo_item uo_take = Create uo_musttake uo_pay = Create uo_mustpay uo_item = Create uo_iteminput uo_rapmoney uo_money uo_money = Create uo_rapmoney IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 1 THEN rslt = 0 arg_msg = '单据已经审核,不可以再审核' GOTO ext END IF Long ll_moneyid_account Long ll_moneyid_native Decimal ld_takeamt Int li_item_dfttype,li_itemflag Decimal ld_msttakeamt Long ll_ref_rapmoneyid s_rap_money s_rap SELECT dfttype,itemflag INTO :li_item_dfttype,:li_itemflag FROM u_itemdef Where u_itemdef.itemid = :itemid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询当前收支项目核算类型和核算方向失败!' rslt = 0 GOTO ext 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 moneyid INTO :ll_moneyid_account FROM u_accounts Where accountsid = :accountid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询帐号币种资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0 IF ll_moneyid_account = 0 THEN arg_msg = '帐号币种未指定,请检查' rslt = 0 GOTO ext END IF IF ll_moneyid_account = ll_moneyid_native THEN //收款帐号为人民币 IF moneyid <> ll_moneyid_native THEN //应收帐币种不是人民币 ld_takeamt = Round(cusamt/mrate,2) ELSE ld_takeamt = Round(cusamt * mrate,2) END IF ELSE IF ll_moneyid_account = moneyid THEN ld_takeamt = Round(cusamt,2) ELSE ld_takeamt = Round(cusamt * mrate,2) END IF END IF //IF moneyid = ll_moneyid_account THEN // ld_mrate = f_get_mrate(moneyid) // IF ld_mrate = 0 THEN // rslt = 0 // arg_msg = '错误的币种汇率' // GOTO ext // END IF //ELSE IF moneyid = ll_moneyid_native THEN ld_mrate = 1 ELSE ld_mrate = mrate END IF //END IF IF billtype = 0 THEN IF uo_option_msttake_takeamt_secaudit = 0 THEN UPDATE u_cusamt SET audopemp = :arg_opemp, audopdate = getdate(), secauditemp = :arg_opemp, secauditdate = getdate(), flag = 1, secflag = 1 WHERE u_cusamt.cusmonid = :arg_billid AND flag = 0 And secflag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致客户收款单审核单据操作失败,"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "客户收款单正在审核,请稍后查询,"+"~n"+sqlca.SQLErrText GOTO ext END IF ls_dscrp = '客户收款单:' + cusmoncode + ' 相关号:'+relcode+' ' +dscrp s_bmsttake s_take s_take.scid = scid s_take.cusid = cusid s_take.takedate = cusdate s_take.inrep = cusrep s_take.oriamt = 0 s_take.msttakeamt = 0 s_take.takeamt_cn = cusamt s_take.takeamt = ld_takeamt s_take.dscrp = ls_dscrp s_take.billcode = cusmoncode s_take.relcode = relcode s_take.banktypeid = banktypeid s_take.opemp = arg_opemp s_take.buildtype = 4 s_take.outwareid = cusmonid s_take.accountsid = accountid s_take.itemid = itemid s_take.moneyid = moneyid s_take.moneyid_cn = ll_moneyid_account s_take.mrate = ld_mrate IF uo_take.add_takerec(s_take,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF ref_rapid = uo_take.ref_takeid IF ref_rapid = 0 THEN arg_msg = '错误的应收帐ID!' rslt = 0 GOTO ext END IF IF li_itemflag = 1 THEN ld_msttakeamt = cusamt ld_takeamt = 0 ELSE ld_msttakeamt = 0 ld_takeamt = cusamt * li_itemflag END IF //加出纳帐加上客户名称 IF cusid > 0 THEN SELECT name INTO :ls_name FROM u_cust Where cusid = :cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询客户名称失败,可能客户资料不存在' rslt = 0 GOTO ext END IF IF Trim(ls_name) = '' THEN ls_dscrp = dscrp ELSE IF Trim(dscrp) <> '' THEN ls_dscrp = ls_name + '|'+dscrp ELSE ls_dscrp = ls_name END IF END IF END IF s_rap.accountsid = accountid s_rap.takedate = cusdate s_rap.inrep = cusrep s_rap.dscrp = ls_dscrp s_rap.msttakeamt = ld_msttakeamt s_rap.takeamt = ld_takeamt s_rap.billcode = cusmoncode s_rap.relcode = relcode s_rap.buildtype = 1 s_rap.dcflag = 0 s_rap.relid = 0 s_rap.opemp = arg_opemp s_rap.banktypeid = banktypeid s_rap.scid = scid IF uo_money.add_raprec(s_rap,arg_msg,False) = 0 THEN arg_msg = '增加出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF ll_ref_rapmoneyid = uo_money.ref_rapid IF ll_ref_rapmoneyid = 0 THEN arg_msg = '增加出纳明细帐失败!' rslt = 0 GOTO ext END IF UPDATE u_cusamt SET refrapid = :ref_rapid, rapmoneyid = :ll_ref_rapmoneyid WHERE cusmonid = :arg_billid AND flag = 1 And secflag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新单据应收帐ID资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF // ELSE UPDATE u_cusamt SET audopemp = :arg_opemp, audopdate = getdate(), flag = 1 WHERE u_cusamt.cusmonid = :arg_billid And flag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致客户收款单初审单据操作失败,"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "客户收款单正在初审,请稍后查询,"+"~n"+sqlca.SQLErrText GOTO ext END IF ls_dscrp = dscrp IF li_itemflag = 1 THEN ld_msttakeamt = cusamt ld_takeamt = 0 ELSE ld_msttakeamt = 0 ld_takeamt = cusamt * li_itemflag END IF //加出纳帐加上客户名称 IF cusid > 0 THEN SELECT name INTO :ls_name FROM u_cust Where cusid = :cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询客户名称失败,可能客户资料不存在' rslt = 0 GOTO ext END IF IF Trim(ls_name) = '' THEN ls_dscrp = dscrp ELSE IF Trim(dscrp) <> '' THEN ls_dscrp = ls_name + '|'+dscrp ELSE ls_dscrp = ls_name END IF END IF END IF s_rap.accountsid = accountid s_rap.takedate = cusdate s_rap.inrep = cusrep s_rap.dscrp = ls_dscrp s_rap.msttakeamt = ld_msttakeamt s_rap.takeamt = ld_takeamt s_rap.billcode = cusmoncode s_rap.relcode = relcode s_rap.buildtype = 1 s_rap.dcflag = 0 s_rap.relid = 0 s_rap.opemp = arg_opemp s_rap.banktypeid = banktypeid s_rap.scid = scid IF uo_money.add_raprec(s_rap,arg_msg,False) = 0 THEN arg_msg = '增加出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF ll_ref_rapmoneyid = uo_money.ref_rapid IF ll_ref_rapmoneyid = 0 THEN arg_msg = '增加出纳明细帐失败!' rslt = 0 GOTO ext END IF UPDATE u_cusamt SET rapmoneyid = :ll_ref_rapmoneyid WHERE cusmonid = :arg_billid And flag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新单据收支帐ID资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ELSE UPDATE u_cusamt SET audopemp = :arg_opemp, audopdate = getdate(), flag = 1 WHERE u_cusamt.cusmonid = :arg_billid And flag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致供应商付款单审核单据操作失败,"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "供应商付款单正在审核,请稍后查询,"+"~n"+sqlca.SQLErrText GOTO ext END IF // SELECT name INTO :ls_name // FROM u_spt // Where sptid = :cusid; // IF sqlca.SQLCode <> 0 THEN // arg_msg = '查询供应商名称失败,可能供应商资料不存在' // rslt = 0 // GOTO ext // END IF ls_dscrp = dscrp // IF Trim(ls_name) = '' THEN // ls_dscrp = dscrp // ELSE // IF Trim(dscrp) <> '' THEN // ls_dscrp = ls_name + '/'+dscrp // ELSE // ls_dscrp = ls_name // END IF // END IF DateTime null_plandate SetNull(null_plandate) s_bmstpay s_pay s_pay.scid = scid s_pay.sptid = cusid s_pay.paydate = cusdate s_pay.inrep = cusrep s_pay.oriamt = 0 s_pay.mstpayamt = 0 s_pay.payamt = ld_takeamt s_pay.payamt_cn = cusamt s_pay.dscrp = ls_dscrp s_pay.billcode = cusmoncode s_pay.relcode = relcode s_pay.banktypeid = banktypeid s_pay.viewdate = null_plandate s_pay.opemp = arg_opemp s_pay.buildtype = 4 s_pay.inwareid = cusmonid s_pay.accountsid = accountid s_pay.itemid = itemid s_pay.moneyid = moneyid s_pay.moneyid_cn = ll_moneyid_account IF uo_pay.add_payrec(s_pay,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF ref_rapid = uo_pay.ref_payid IF ref_rapid = 0 THEN arg_msg = '错误的应付帐ID!' rslt = 0 GOTO ext END IF ll_ref_rapmoneyid = uo_pay.ref_relrapid UPDATE u_cusamt SET refrapid = :ref_rapid, rapmoneyid = :ll_ref_rapmoneyid WHERE cusmonid = :arg_billid And flag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新单据应付帐ID资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF flag = 1 END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Destroy uo_take Destroy uo_pay Destroy uo_item Destroy uo_money RETURN rslt end function public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ref_rapid DateTime null_dt Long cnt IF uo_option_msttake_takeamt_secaudit = -1000 THEN rslt = 0 arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!' GOTO ext END IF SetNull(null_dt) uo_musttake uo_take uo_mustpay uo_pay uo_iteminput uo_item uo_take = Create uo_musttake uo_pay = Create uo_mustpay uo_item = Create uo_iteminput uo_rapmoney uo_money uo_money = Create uo_rapmoney IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = '单据未审核,不可以再撤审' GOTO ext END IF IF billtype = 0 THEN IF uo_option_msttake_takeamt_secaudit = 0 THEN UPDATE u_cusamt SET audopemp = '', audopdate = :null_dt, secauditemp = '', secauditdate = :null_dt, flag = 0, secflag = 0, refrapid = 0, rapmoneyid = 0 WHERE u_cusamt.cusmonid = :arg_billid AND flag = 1 And secflag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致撤审客户收款单操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "客户收款单正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText GOTO ext END IF IF rapmoneyid > 0 THEN IF uo_money.del_raprec(rapmoneyid,accountid,1,arg_msg,False) = 0 THEN arg_msg = '删除出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF END IF IF refrapid > 0 THEN SELECT count(*) INTO :cnt FROM u_bmsttake_fpmx Where u_bmsttake_fpmx.takeid = :refrapid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询相关应收帐金额是否已分配订单失败"+"~n"+sqlca.SQLErrText GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = "相关应收帐金额是否已分配订单,不能撤审收款单" GOTO ext END IF IF uo_take.del_takerec(scid,1,refrapid,cusid,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF ELSE IF secflag = 1 THEN arg_msg = '客户收款单已终审,不能操作' rslt = 0 GOTO ext END IF UPDATE u_cusamt SET audopemp = '', audopdate = :null_dt, flag = 0, rapmoneyid = 0 WHERE u_cusamt.cusmonid = :arg_billid AND flag = 1 And secflag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致客户收款单初审撤审单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "客户收款单正在初审撤审,请稍后查询。"+"~n"+sqlca.SQLErrText GOTO ext END IF IF rapmoneyid > 0 THEN IF uo_money.del_raprec(rapmoneyid,accountid,1,arg_msg,False) = 0 THEN arg_msg = '删除出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF END IF END IF ELSE UPDATE u_cusamt SET audopemp = '', audopdate = :null_dt, flag = 0 WHERE u_cusamt.cusmonid = :arg_billid And flag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致撤审供应商付款单操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "供应商付款单正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText GOTO ext END IF IF refrapid > 0 THEN IF uo_pay.del_payrec(scid,1,refrapid,cusid,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF END IF flag = 0 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Destroy uo_take Destroy uo_pay Destroy uo_item Destroy uo_money RETURN rslt end function public function integer confirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0 Int rslt = 1 If uo_option_msttake_takeamt_secaudit = -1000 Then rslt = 0 arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!' Goto ext End If If getinfo(arg_billid,arg_msg) = 0 Then rslt = 0 Goto ext End If If billtype = 0 Then If uo_option_msttake_takeamt_secaudit = 0 Then If flag = 0 Then rslt = 0 arg_msg = '单据未审核,不可以确认' Goto ext End If Else If secflag = 0 Then rslt = 0 arg_msg = '单据未终审,不可以确认' Goto ext End If End If End If If confirmflag = 1 Then rslt = 0 arg_msg = '单据已确认,不可以确认' Goto ext End If Update u_cusamt Set confirmemp = :publ_operator, confirmdate = getdate(), confirmflag = 1 Where u_cusamt.cusmonid = :arg_billid And confirmflag = 0; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = "因网络或其它原因导致确认单据操作失败,"+"~n"+sqlca.SQLErrText Goto ext ElseIf sqlca.SQLNRows = 0 Then rslt = 0 arg_msg = "单据正在确认,请稍后查询,"+"~n"+sqlca.SQLErrText Goto ext End If confirmflag = 1 ext: If rslt = 0 Then Rollback; ElseIf rslt = 1 And arg_ifcommit Then Commit; End If Return rslt end function public function integer cconfirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0 Int rslt = 1 datetime null_dt setnull(null_dt) IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF confirmflag = 0 THEN rslt = 0 arg_msg = '单据未确认,不可以反确认' GOTO ext END IF UPDATE u_cusamt SET confirmemp = '', confirmdate = :null_dt, confirmflag = 0 WHERE u_cusamt.cusmonid = :arg_billid AND confirmflag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致反确认单据操作失败,"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在反确认,请稍后查询,"+"~n"+sqlca.SQLErrText GOTO ext END IF confirmflag = 0 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer add_dscrp (long arg_cusmonid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//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 getinfo(arg_cusmonid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = "非审核状态下不可用" GOTO ext END IF UPDATE u_cusamt SET dscrp = ltrim(rtrim(dscrp))+' '+:arg_newdescppart Where u_cusamt.cusmonid = :arg_cusmonid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF UPDATE u_rap_money SET dscrp = ltrim(rtrim(dscrp))+' '+:arg_newdescppart Where rapmoneyid = :rapmoneyid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新相关出纳帐摘要资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF dscrp = dscrp+' '+arg_newdescppart ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Return (rslt) end function public function integer auditing2 (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ref_rapid String ls_name String ls_dscrp uo_musttake uo_take uo_take = Create uo_musttake IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = '单据未初审,不可以终审' GOTO ext END IF IF secflag = 1 THEN rslt = 0 arg_msg = '单据已终审,不可以再终审' GOTO ext END IF IF billtype <> 0 THEN arg_msg = '不是客户收款单,不能操作' rslt = 0 GOTO ext END IF IF cusid = 0 THEN arg_msg = '未指定客户,请检查' rslt = 0 GOTO ext END IF UPDATE u_cusamt SET secauditemp = :arg_opemp, secauditdate = getdate(), secflag = 1 WHERE u_cusamt.cusmonid = :arg_billid AND flag = 1 And secflag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致终审单据操作失败,"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在终审,请稍后查询,"+"~n"+sqlca.SQLErrText GOTO ext END IF SELECT name INTO :ls_name FROM u_cust Where cusid = :cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询客户名称失败,可能客户资料不存在' rslt = 0 GOTO ext END IF IF Trim(ls_name) = '' THEN ls_dscrp = dscrp ELSE IF Trim(dscrp) <> '' THEN ls_dscrp = ls_name + '/'+dscrp ELSE ls_dscrp = ls_name END IF END IF Long ll_moneyid_account Long ll_moneyid_native Decimal ld_takeamt,ld_mrate 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 moneyid INTO :ll_moneyid_account FROM u_accounts Where accountsid = :accountid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询帐号币种资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0 IF ll_moneyid_account = 0 THEN arg_msg = '帐号币种未指定,请检查' rslt = 0 GOTO ext END IF IF ll_moneyid_account = ll_moneyid_native THEN //收款帐号为人民币 IF moneyid <> ll_moneyid_native THEN //应收帐币种不是人民币 ld_takeamt = Round(cusamt/mrate,2) ELSE ld_takeamt = Round(cusamt * mrate,2) END IF ELSE IF ll_moneyid_account = moneyid THEN ld_takeamt = Round(cusamt,2) ELSE ld_takeamt = Round(cusamt * mrate,2) END IF END IF IF moneyid = ll_moneyid_native THEN ld_mrate = 1 ELSE ld_mrate = mrate END IF //IF ll_moneyid_account = ll_moneyid_native THEN // IF moneyid <> ll_moneyid_native THEN // ld_takeamt = Round(cusamt/mrate,2) // ELSE // ld_takeamt = Round(cusamt * mrate,2) // END IF //ELSE // ld_takeamt = Round(cusamt * mrate,2) //END IF // //IF moneyid = ll_moneyid_account THEN // ld_mrate = f_get_mrate(moneyid) // IF ld_mrate = 0 THEN // rslt = 0 // arg_msg = '错误的币种汇率' // GOTO ext // END IF //ELSE // IF moneyid = ll_moneyid_native THEN // ld_mrate = 1 // ELSE // ld_mrate = mrate // END IF //END IF s_bmsttake s_take s_take.scid = scid s_take.cusid = cusid s_take.takedate = cusdate s_take.inrep = cusrep s_take.oriamt = 0 s_take.msttakeamt = 0 s_take.takeamt_cn = cusamt s_take.takeamt = ld_takeamt s_take.dscrp = ls_dscrp s_take.billcode = cusmoncode s_take.relcode = relcode s_take.banktypeid = banktypeid s_take.opemp = arg_opemp s_take.buildtype = 4 s_take.outwareid = cusmonid s_take.accountsid = accountid s_take.itemid = itemid s_take.moneyid = moneyid s_take.moneyid_cn = ll_moneyid_account s_take.mrate = ld_mrate IF uo_take.add_takerec(s_take,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF ref_rapid = uo_take.ref_takeid IF ref_rapid = 0 THEN arg_msg = '错误的应收应付帐ID!' rslt = 0 GOTO ext END IF UPDATE u_cusamt SET refrapid = :ref_rapid WHERE cusmonid = :arg_billid And flag = 1; 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 uo_take RETURN rslt end function public function integer c_auditing2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ref_rapid DateTime null_dt long cnt SetNull(null_dt) uo_musttake uo_take uo_take = Create uo_musttake IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF secflag = 0 THEN rslt = 0 arg_msg = '单据未终审,不可以撤审' GOTO ext END IF IF billtype <> 0 THEN arg_msg = '单据不是客户收款单,不能操作' rslt = 0 GOTO ext END IF UPDATE u_cusamt SET secauditemp = '', secauditdate = :null_dt, secflag = 0 WHERE u_cusamt.cusmonid = :arg_billid And secflag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致撤审单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText GOTO ext END IF IF refrapid > 0 THEN SELECT count(*) INTO :cnt FROM u_bmsttake_fpmx Where u_bmsttake_fpmx.takeid = :refrapid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询相关应收帐金额是否已分配订单失败"+"~n"+sqlca.SQLErrText GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = "相关应收帐金额已分配订单,不能撤审收款单" GOTO ext END IF IF uo_take.del_takerec(scid,1,refrapid,cusid,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF secflag = 0 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Destroy uo_take RETURN rslt end function public function integer uof_update_cust (long arg_billid, long arg_cusid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 String ls_name_old,ls_name_new IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF billtype <> 0 THEN arg_msg = '不是客户收款单,不能操作' rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = '单据未初审,不可以操作' GOTO ext END IF IF secflag = 1 THEN rslt = 0 arg_msg = '单据已终审,不可以再操作' GOTO ext END IF IF cusid = arg_cusid THEN arg_msg = '客户资料无改变,操作取消' rslt = 0 GOTO ext END IF IF cusid > 0 THEN SELECT name INTO :ls_name_old FROM u_cust Where cusid = :cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询原客户名称失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF SELECT name INTO :ls_name_new FROM u_cust Where cusid = :arg_cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询新客户名称失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF UPDATE u_cusamt SET cusid = :arg_cusid WHERE u_cusamt.cusmonid = :arg_billid AND flag = 1 And secflag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致单据客户资料操作失败,"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在更新单据客户资料,请稍后查询,"+"~n"+sqlca.SQLErrText GOTO ext END IF IF cusid > 0 THEN UPDATE u_rap_money SET dscrp = REPLACE(dscrp,:ls_name_old,:ls_name_new) Where rapmoneyid = :rapmoneyid; ELSE UPDATE u_rap_money SET dscrp = :ls_name_new + '|' +dscrp Where rapmoneyid = :rapmoneyid; END IF IF sqlca.SQLCode <> 0 THEN arg_msg = '更新相关出纳帐摘要客户资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF cusid = arg_cusid ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer getinfo (long arg_billid, ref string arg_msg);Int rslt = 1 IF arg_billid <= 0 THEN arg_msg = '错误的单据id' GOTO ext END IF SELECT u_cusamt.scid, u_cusamt.cusid, u_cusamt.banktypeid, u_cusamt.accountid, u_cusamt.cusdate, u_cusamt.cusamt, u_cusamt.dscrp, u_cusamt.flag, u_cusamt.secflag, u_cusamt.cusmoncode, u_cusamt.billtype, u_cusamt.refrapid, u_cusamt.reldateint, u_cusamt.itemid, u_cusamt.cusrep, u_cusamt.moneyid, u_cusamt.mrate, u_cusamt.confirmflag, u_cusamt.relcode, u_cusamt.rapmoneyid, u_cusamt.kind INTO :scid, :cusid, :banktypeid, :accountid, :cusdate, :cusamt, :dscrp, :flag, :secflag, :cusmoncode, :billtype, :refrapid, :reldateint, :itemid, :cusrep, :moneyid, :mrate, :confirmflag, :relcode, :rapmoneyid, :kind FROM u_cusamt Where u_cusamt.cusmonid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询数据操作失败,收据'+sqlca.SQLErrText GOTO ext END IF cusmonid = arg_billid ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer uof_update_cust_cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 String ls_name_old IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF billtype <> 0 THEN arg_msg = '不是客户收款单,不能操作' rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = '单据未初审,不可以操作' GOTO ext END IF IF secflag = 1 THEN rslt = 0 arg_msg = '单据已终审,不可以再操作' GOTO ext END IF IF cusid > 0 THEN SELECT name INTO :ls_name_old FROM u_cust Where cusid = :cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询原客户名称失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF UPDATE u_cusamt SET cusid = 0 WHERE u_cusamt.cusmonid = :arg_billid AND flag = 1 AND secflag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致取消单据客户资料操作失败,"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在取消单据客户资料,请稍后查询,"+"~n"+sqlca.SQLErrText GOTO ext END IF UPDATE u_rap_money SET dscrp = REPLACE(dscrp,:ls_name_old,'') Where rapmoneyid = :rapmoneyid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新相关出纳帐摘要客户资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF cusid = 0 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_add_relcode (long arg_cusmonid, string arg_relcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 arg_relcode = Trim(arg_relcode) IF it_updatebegin Or it_newbegin THEN rslt = 0 arg_msg = "编辑状态下不可用" GOTO ext END IF IF getinfo(arg_cusmonid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = "非审核状态下不可用" GOTO ext END IF UPDATE u_cusamt SET relcode = :arg_relcode Where u_cusamt.cusmonid = :arg_cusmonid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致添加相关号操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF relcode = arg_relcode ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Return (rslt) end function on uo_cusamt.create call super::create TriggerEvent( this, "constructor" ) end on on uo_cusamt.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;String str_optionvalue,arg_msg f_get_sys_option_value('139',str_optionvalue,arg_msg) uo_option_msttake_takeamt_secaudit = Long(str_optionvalue) f_get_sys_option_value('178',str_optionvalue,arg_msg) uo_option_outrep = Long(str_optionvalue) end event