$PBExportHeader$uo_rap_money_import.sru forward global type uo_rap_money_import from nonvisualobject end type end forward global type uo_rap_money_import from nonvisualobject end type global uo_rap_money_import uo_rap_money_import type variables Long uo_pkid end variables forward prototypes public function integer save (s_rap_money_import arg_s_import, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer p_getinfo (long arg_pkid, ref s_rap_money_import arg_s_import, ref string arg_msg) public function integer add_dscrp (long arg_pkid, string arg_newdescppart, ref string arg_msg) public function integer del (long arg_pkid, ref string arg_msg, boolean arg_ifcommit) public function integer updatebegin (long arg_pkid, ref string arg_msg) public function integer audit (long arg_pkid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer caudit (long arg_pkid, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer save (s_rap_money_import arg_s_import, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1 DateTime server_dt Long ll_pkid Long cnt IF IsNull(arg_s_import.scid) THEN arg_s_import.scid = 0 IF IsNull(arg_s_import.pkid) THEN arg_s_import.pkid = 0 IF IsNull(arg_s_import.relcode) THEN arg_s_import.relcode = '' IF IsNull(arg_s_import.banktypeid) THEN arg_s_import.banktypeid = 0 IF IsNull(arg_s_import.accountsid) THEN arg_s_import.accountsid = 0 IF IsNull(arg_s_import.moneyid) THEN arg_s_import.moneyid = 0 IF IsNull(arg_s_import.mrate) THEN arg_s_import.mrate = 1 IF IsNull(arg_s_import.importdscrp) THEN arg_s_import.importdscrp = '' IF IsNull(arg_s_import.dscrp) THEN arg_s_import.dscrp = '' IF IsNull(arg_s_import.debit) THEN arg_s_import.debit = 0 IF IsNull(arg_s_import.credit) THEN arg_s_import.credit = 0 IF IsNull(arg_s_import.billtype) THEN arg_s_import.billtype = 0 IF IsNull(arg_s_import.cusid_sptid) THEN arg_s_import.cusid_sptid = 0 IF IsNull(arg_s_import.itemid) THEN arg_s_import.itemid = 0 SELECT Top 1 getdate() INTO :server_dt FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF arg_s_import.pkid = 0 THEN ll_pkid = f_sys_scidentity(0,"u_rap_money_import","pkid",arg_msg,TRUE,id_sqlca) IF ll_pkid <= 0 THEN rslt = 0 GOTO ext END IF INSERT INTO u_rap_money_import (scid, pkid, accountsid, moneyid, mrate, importdscrp, dscrp, debit, credit, billtype, billdate, cusid_sptid, itemid, opemp, opdate, relcode, banktypeid) VALUES (:arg_s_import.scid, :ll_pkid, :arg_s_import.accountsid, :arg_s_import.moneyid, :arg_s_import.mrate, :arg_s_import.importdscrp, :arg_s_import.dscrp, :arg_s_import.debit, :arg_s_import.credit, :arg_s_import.billtype, :arg_s_import.billdate, :arg_s_import.cusid_sptid, :arg_s_import.itemid, :arg_opemp, getdate(), :arg_s_import.relcode, :arg_s_import.banktypeid) ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF uo_pkid = ll_pkid ELSE UPDATE u_rap_money_import SET accountsid = :arg_s_import.accountsid, moneyid = :arg_s_import.moneyid, mrate = :arg_s_import.mrate, importdscrp = :arg_s_import.importdscrp, dscrp = :arg_s_import.dscrp, debit = :arg_s_import.debit, credit = :arg_s_import.credit, billtype = :arg_s_import.billtype, billdate = :arg_s_import.billdate, cusid_sptid = :arg_s_import.cusid_sptid, itemid = :arg_s_import.itemid, relcode = :arg_s_import.relcode, banktypeid = :arg_s_import.banktypeid, moddate = getdate(), modemp = :arg_opemp WHERE pkid = :arg_s_import.pkid AND flag = 0; IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF uo_pkid = arg_s_import.pkid END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT; END IF RETURN rslt end function public function integer p_getinfo (long arg_pkid, ref s_rap_money_import arg_s_import, ref string arg_msg);Int rslt = 1 IF arg_pkid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF SELECT scid, pkid, accountsid, moneyid, mrate, importdscrp, dscrp, debit, credit, billtype, billdate, cusid_sptid, itemid, opemp, opdate, relcode, banktypeid,flag,relbillid INTO :arg_s_import.scid, :arg_s_import.pkid, :arg_s_import.accountsid, :arg_s_import.moneyid, :arg_s_import.mrate, :arg_s_import.importdscrp, :arg_s_import.dscrp, :arg_s_import.debit, :arg_s_import.credit, :arg_s_import.billtype, :arg_s_import.billdate, :arg_s_import.cusid_sptid, :arg_s_import.itemid, :arg_s_import.opemp, :arg_s_import.opdate, :arg_s_import.relcode, :arg_s_import.banktypeid, :arg_s_import.flag, :arg_s_import.relbillid FROM u_rap_money_import Where u_rap_money_import.pkid = :arg_pkid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询单据内容失败(错误单据唯一码)' GOTO ext END IF ext: RETURN rslt end function public function integer add_dscrp (long arg_pkid, string arg_newdescppart, ref string arg_msg);Int rslt = 1 s_rap_money_import arg_s_import IF arg_pkid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF arg_newdescppart = '' THEN rslt = 0 arg_msg = "要添加内容为空,操作取消" GOTO ext END IF IF p_getinfo(arg_pkid,arg_s_import,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_import.flag = 0 THEN rslt = 0 arg_msg = '单据未审核,不可以增加备注' GOTO ext END IF UPDATE u_rap_money_import SET DSCRP = DSCRP+' '+:arg_newdescppart WHERE u_rap_money_import.pkid = :arg_pkid AND flag = 1; IF SQLCA.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText GOTO ext END IF ext: IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF Return (rslt) end function public function integer del (long arg_pkid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 s_rap_money_import arg_s_import IF arg_pkid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_pkid,arg_s_import,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_import.flag = 1 THEN rslt = 0 ARG_MSG = '单据已经审核,不可以删除' GOTO ext END IF DELETE FROM u_rap_money_import Where pkid = :arg_pkid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer updatebegin (long arg_pkid, ref string arg_msg);Int rslt = 1 s_rap_money_import arg_s_import IF arg_pkid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_pkid,arg_s_import,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_import.flag = 1 THEN rslt = 0 ARG_MSG = '单据已经审核,不可以修改,要修改请先撤销审核' GOTO ext END IF ext: RETURN rslt end function public function integer audit (long arg_pkid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long it_mxbt uo_cusamt uo_take uo_income_expenses uo_ie uo_take = Create uo_cusamt uo_ie = Create uo_income_expenses uo_ie.commit_transaction = sqlca s_rap_money_import arg_s_import Long ll_relbillid IF arg_pkid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_pkid,arg_s_import,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_import.flag = 1 THEN rslt = 0 ARG_MSG = '单据已经审核,不可以再审' GOTO ext END IF //更新审核标记 UPDATE u_rap_money_import SET auditemp = :arg_opemp, auditdate = getdate(), flag = 1 WHERE pkid = :arg_pkid And flag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF IF arg_s_import.billtype = 0 THEN ARG_MSG = "请选择单据类型" rslt = 0 GOTO ext END IF IF arg_s_import.scid < 0 THEN ARG_MSG = "请设置分部" rslt = 0 GOTO ext END IF IF arg_s_import.accountsid = 0 THEN ARG_MSG = "请设置账号" rslt = 0 GOTO ext END IF IF arg_s_import.banktypeid = 0 THEN ARG_MSG = "请选择结算方式" rslt = 0 GOTO ext END IF IF arg_s_import.itemid = 0 THEN ARG_MSG = "请选择费用项目" rslt = 0 GOTO ext END IF IF arg_s_import.moneyid = 0 THEN ARG_MSG = "请选择币种" rslt = 0 GOTO ext END IF IF arg_s_import.billtype = 1 Or arg_s_import.billtype = 2 THEN //客户收款单 //供应商付款单 IF arg_s_import.cusid_sptid < 0 THEN ARG_MSG = "请选择客户或供应商" rslt = 0 GOTO ext END IF uo_take.scid = arg_s_import.scid uo_take.accountid = arg_s_import.accountsid uo_take.cusid = arg_s_import.cusid_sptid uo_take.dscrp = arg_s_import.dscrp uo_take.cusdate = DateTime(Today()) uo_take.banktypeid = arg_s_import.banktypeid uo_take.itemid = arg_s_import.itemid uo_take.moneyid = arg_s_import.moneyid uo_take.mrate = arg_s_import.mrate uo_take.cusrep = publ_operator uo_take.viewdate = arg_s_import.billdate uo_take.relcode = arg_s_import.relcode IF arg_s_import.billtype = 1 THEN uo_take.billtype = 0 uo_take.cusamt = arg_s_import.debit ELSEIF arg_s_import.billtype = 2 THEN uo_take.billtype = 1 uo_take.cusamt = arg_s_import.credit END IF IF uo_take.Save(ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF ll_relbillid = uo_take.cusmonid ELSEIF arg_s_import.billtype = 3 THEN IF uo_ie.newbegin(ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF uo_ie.credencecode = arg_s_import.relcode uo_ie.banktypeid = arg_s_import.banktypeid IF arg_s_import.debit <> 0 And arg_s_import.credit = 0 THEN uo_ie.amt = arg_s_import.debit ELSEIF arg_s_import.debit = 0 And arg_s_import.credit <> 0 THEN uo_ie.amt = arg_s_import.credit END IF uo_ie.accountsid = arg_s_import.accountsid uo_ie.outdate = arg_s_import.billdate uo_ie.Descrp = arg_s_import.dscrp uo_ie.rep = publ_operator uo_ie.itemid = arg_s_import.itemid uo_ie.billtype = 0 IF uo_ie.Save(publ_operator,ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF ll_relbillid = uo_ie.billid END IF UPDATE u_rap_money_import SET relbillid = :ll_relbillid Where pkid = :arg_pkid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致更新单据相关资料失败操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Destroy uo_take Destroy uo_ie RETURN rslt end function public function integer caudit (long arg_pkid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 DateTime null_dt uo_cusamt uo_take uo_income_expenses uo_ie uo_take = Create uo_cusamt uo_ie = Create uo_income_expenses uo_ie.commit_transaction = sqlca s_rap_money_import arg_s_import SetNull(null_dt) IF arg_pkid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_pkid,arg_s_import,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_import.flag = 0 THEN rslt = 0 arg_msg = '单据未审核,不可以撤审' GOTO ext END IF UPDATE u_rap_money_import SET flag = 0, auditemp = '', auditdate = :null_dt WHERE pkid = :arg_pkid And flag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致单据撤消审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF IF arg_s_import.billtype = 1 Or arg_s_import.billtype = 2 THEN // //客户收款单 IF uo_take.del(arg_s_import.scid, arg_s_import.relbillid,arg_msg) = 0 THEN IF arg_s_import.billtype = 0 THEN arg_msg = '删除客户收款单失败!~n' + arg_msg ELSE arg_msg = '删除供应商付款单失败!~n' + arg_msg END IF rslt = 0 GOTO ext END IF ELSEIF arg_s_import.billtype = 3 THEN // //其他收入支出单 IF uo_ie.Cancel(arg_s_import.relbillid,arg_msg,False) = 0 THEN arg_msg = '删除相关其他收入支出单失败!~n' + arg_msg rslt = 0 GOTO ext END IF END IF UPDATE u_rap_money_import SET relbillid = 0 Where pkid = :arg_pkid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新单据相关资料失败操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Destroy uo_take Destroy uo_ie RETURN rslt end function on uo_rap_money_import.create call super::create TriggerEvent( this, "constructor" ) end on on uo_rap_money_import.destroy TriggerEvent( this, "destructor" ) call super::destroy end on global type uo_incase from nonvisualobject end type