$PBExportHeader$uo_salebill.sru forward global type uo_salebill from nonvisualobject end type type s_bmsttakemx_bill from structure within uo_salebill end type end forward type s_bmsttakemx_bill from structure long scid long takeid string billcode datetime takedate string taketype decimal { 2 } msttakeamt decimal { 2 } takeamt decimal { 2 } oriamt decimal { 2 } mainmsttakeamt decimal { 2 } maintakeamt decimal { 2 } msttakeamt_rmb decimal { 2 } takeamt_rmb decimal { 2 } oriamt_rmb decimal { 2 } mainmsttakeamt_rmb decimal { 2 } maintakeamt_rmb string opemp string dscrp string inrep integer buildtype long banktypeid string relbillcode long moneyid decimal { 10 } mrate end type global type uo_salebill from nonvisualobject end type global uo_salebill uo_salebill type variables PUBLIC PROTECTEDWRITE Long salebillid //销售收入单表自动增量ID PUBLIC PROTECTEDWRITE String salebillcode //所有单据的唯一编号 PUBLIC PROTECTEDWRITE DateTime opdate //建立时间,自动 PUBLIC PROTECTEDWRITE Int flag = 0 //审核标志 PUBLIC PROTECTEDWRITE DateTime Auditdate //审核时间 PUBLIC PROTECTEDWRITE String auditREP //审核操作员 String relcode = '' //交易单号 String opemp //建立操作员 DateTime takedate //发生时间 String taketype = '' //付款方式 String dscrp = '' //备注 Long cusid = 0 //客户id Decimal msttakeamt //收入金额 Decimal takeamt //收入金额 String inrep Long ywrepid //业务员ID Long banktypeid //结算方式 Long rapmoneyid //出纳帐ID Long accountsid //帐号ID Long itemid //收支项目ID PRIVATE: s_bmsttakemx_bill mx[] //明细结构数组 Long it_MXBT = 0 //明细结构数组末指针 Boolean IT_NEWBEGIN = FALSE //新建标志 Boolean IT_UPDATEBEGIN = FALSE//修改标志 end variables forward prototypes public function integer p_clearmx () public function integer p_reset () public function integer newbegin () public function integer updatebegin (long arg_salebillid, ref string arg_msg) public function integer save (ref string arg_msg, boolean arg_ifcommt) public function integer del (long arg_salebillid, ref string arg_msg, boolean arg_ifcommit) public function integer getinfo (long arg_salebillid, ref string arg_msg) public function integer add_dscrp (long arg_salebillid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer auditing (long arg_salebillid, string arg_auditrep, ref string arg_msg, boolean arg_ifcommit) public function integer c_auditing (long arg_salebillid, string arg_auditrep, ref string arg_msg, boolean arg_ifcommit) public function integer acceptmx (long arg_takeid, string arg_billcode, decimal arg_msttakeamt, decimal arg_takeamt, decimal arg_oriamt, decimal arg_mainmsttakeamt, decimal arg_maintakeamt, string arg_relbillcode, long arg_moneyid, decimal arg_mrate, string arg_mxdscrp, ref string arg_msg) end prototypes public function integer p_clearmx ();//INT p_clearmx() //清除明细 it_mxbt=0 RETURN 1 end function public function integer p_reset ();//INT p_RESET() //清除对象及其明细 salebillid=0 salebillcode='' opemp='' flag=0 it_newbegin=FALSE it_updatebegin=FALSE //清除明细 P_CLEARMX() RETURN 1 end function public function integer newbegin ();//newbegin() //从置对象,设定业务类型,准备建立新单 //0 fail 1 success LONG RSLT=1 p_reset() it_newbegin=TRUE it_updatebegin=FALSE return RSLT end function public function integer updatebegin (long arg_salebillid, ref string arg_msg);//UPDATEbegin(arg_salebillid,arg_msg) //从置对象,设定业务类型,准备更新单 //0 fail 1 success int rslt=1,CNT=0 IF arg_salebillid<=0 THEN rslt=0 salebillid=0 goto ext end if if getinfo(arg_salebillid,arg_msg)=0 then rslt=0 goto ext end if if flag=1 then rslt=0 ARG_MSG='单据已经审核,不可以修改' goto ext end if salebillid=arg_salebillid if flag=0 then p_CLEARMX() it_newbegin=FALSE it_updatebegin=TRUE ext: IF rslt=0 THEN p_RESET() return rslt end function public function integer save (ref string arg_msg, boolean arg_ifcommt);Integer rslt = 1,cnt = 0,i Decimal LS_KTSL Long LS_NEWoutWAREID DateTime server_datetime Long ls_newid Long ref_dateint String ls_cusname Decimal ls_msttakeamt Decimal ls_takeamt Long ll_itemid Long ll_dateint DateTime ld_takedate s_bmsttakemx s_takemx uo_musttake uo_take uo_take = CREATE uo_musttake uo_iteminput uo_item uo_item = CREATE uo_iteminput IF IsNull(dscrp) THEN dscrp = '' IF IsNull(relcode) THEN relcode = '' IF IsNull(inrep) THEN inrep = '' IF IsNull(taketype) THEN taketype = '' IF IsNull(accountsid) THEN accountsid = 0 IF IsNull(itemid) THEN itemid = 0 IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arG_MSG = "非编辑状态不可以提交" GOTO ext END IF SELECT Top 1 getdate() INTO :server_datetime FROM u_user ; //取得系统时间,借用操作员表 IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "查询操作失败,日期 " GOTO ext END IF IF it_mxbt = 0 THEN //如果输入库存物料资料错则已经清空 rslt = 0 arG_MSG = "没有正确单据内容" GOTO ext END IF IF Year(Date(takedate)) < 2000 OR IsNull(takedate) THEN rslt = 0 arG_MSG = "缺少出仓发生时间或不合理" GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_cust Where cusid = :cusid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "查询操作失败,客户资料" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arG_MSG = "客户未定义或错误" GOTO ext END IF SELECT name INTO :ls_cusname FROM u_cust Where u_cust.cusid = :cusid ; IF sqlca.SQLCode <> 0 THEN arG_MSG = '查询操作失败,客户唯一码' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_user Where username = :opemp ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "查询操作失败,操作员" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arG_MSG = "操作员姓名未登记或已取消" GOTO ext END IF opdate = server_datetime //填写单据建立时间(最近修改时间) ////////////////////////////////////////////////开始区分:新建/更新 处理 IF salebillid = 0 THEN //新建 ls_newid = f_sys_scidentity(0,"U_salebill","salebillid",arG_MSG,TRUE,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF salebillcode = getid(0,"SB",Date(server_datetime),false,sqlca) //取得新单据编号 IF salebillcode = "err" THEN salebillcode = '' rslt = 0 arG_MSG = "无法获取收入单编号" GOTO ext END IF INSERT INTO U_salebill ( salebillid, salebillcode, takedate, Relcode, Msttakeamt, takeamt, cusid, dscrp, taketype, inrep, opdate, opemp, YwrepID, banktypeid, rapmoneyid , accountsid, itemid) VALUES ( :ls_newid, :salebillcode, :takedate, :Relcode, :Msttakeamt, :takeamt, :cusid, :dscrp, :taketype, :inrep, :opdate, :opemp, :YwrepID, :banktypeid, :ref_dateint , :accountsid, :itemid) ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "因网络或其它原因导致插入操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR i = 1 TO it_mxbt s_takemx.scid = mx[i].scid s_takemx.takeid = mx[i].takeid s_takemx.cusid = cusid s_takemx.takedate = mx[i].takedate s_takemx.inrep = mx[i].inrep s_takemx.msttakeamt = mx[i].Msttakeamt s_takemx.takeamt = mx[i].takeamt s_takemx.dscrp = mx[i].dscrp s_takemx.billcode = mx[i].relbillcode s_takemx.banktypeid = mx[i].banktypeid s_takemx.moneyid = mx[i].moneyid s_takemx.opemp = mx[i].opemp s_takemx.buildtype = 2 s_takemx.outwareid = 0 s_takemx.salebillid = ls_newid s_takemx.itemid = 0 s_takemx.mrate = mx[i].mrate IF uo_take.add_takerecmx(s_takemx,arG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT salebillid = ls_newid FOR i = 1 TO it_mxbt mx[i].relbillcode = lefta(mx[i].relbillcode,250) INSERT INTO u_salebillmx (scid, salebillid, takeid, takedate, msttakeamt, takeamt, billcode, relbillcode, oriamt, mainmsttakeamt, maintakeamt, moneyid, mrate, msttakeamt_rmb, takeamt_rmb, oriamt_rmb, mainmsttakeamt_rmb, maintakeamt_rmb) VALUES (:mx[i].scid, :ls_newid, :mx[i].takeid, :mx[i].takedate, :mx[i].msttakeamt, :mx[i].takeamt, :mx[i].billcode, :mx[i].relbillcode, :mx[i].oriamt, :mx[i].mainmsttakeamt, :mx[i].maintakeamt, :mx[i].moneyid, :mx[i].mrate, :mx[i].msttakeamt_rmb, :mx[i].takeamt_rmb, :mx[i].oriamt_rmb, :mx[i].mainmsttakeamt_rmb, :mx[i].maintakeamt_rmb); IF sqlca.SQLCode <> 0 THEN salebillid = 0 rslt = 0 arG_MSG = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText ROLLBACK USING sqlca; GOTO ext END IF NEXT ELSE //////////////////////////////////////////////////更新 SELECT msttakeamt, takeamt, itemid, rapmoneyid, takedate INTO :ls_msttakeamt, :ls_takeamt, :ll_itemid, :ll_dateint, :ld_takedate FROM u_salebill Where U_salebill.salebillid = :salebillid; IF sqlca.SQLCode <> 0 THEN arG_MSG = "查询应收帐建立类型失败,请重试!"+'~n'+sqlca.SQLErrText rslt = 0 GOTO ext END IF UPDATE U_salebill SET takedate = :takedate, Relcode = :Relcode, Msttakeamt = :Msttakeamt, takeamt = :takeamt, cusid = :cusid, dscrp = :dscrp, taketype = :taketype, inrep = :inrep, opdate = :opdate, opemp = :opemp, YwrepID = :YwrepID, banktypeid = :banktypeid, rapmoneyid = :ref_dateint, accountsid = :accountsid, itemid = :itemid Where U_salebill.salebillid = :salebillid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF //删除原有明细 DELETE FROM U_salebillmx Where u_salebillmx.salebillid = :salebillid USING sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText ROLLBACK USING sqlca; GOTO ext END IF FOR i = 1 TO it_mxbt mx[i].relbillcode = lefta(mx[i].relbillcode,250) INSERT INTO u_salebillmx (scid, salebillid, takeid, takedate, msttakeamt, takeamt, billcode, relbillcode, oriamt, mainmsttakeamt, maintakeamt, moneyid, mrate, msttakeamt_rmb, takeamt_rmb, oriamt_rmb, mainmsttakeamt_rmb, maintakeamt_rmb) VALUES (:mx[i].scid, :ls_newid, :mx[i].takeid, :mx[i].takedate, :mx[i].msttakeamt, :mx[i].takeamt, :mx[i].billcode, :mx[i].relbillcode, :mx[i].oriamt, :mx[i].mainmsttakeamt, :mx[i].maintakeamt, :mx[i].moneyid, :mx[i].mrate, :mx[i].msttakeamt_rmb, :mx[i].takeamt_rmb, :mx[i].oriamt_rmb, :mx[i].mainmsttakeamt_rmb, :mx[i].maintakeamt_rmb); IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText ROLLBACK USING sqlca; GOTO ext END IF NEXT IF uo_take.salebill_del_mx(salebillid,arG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF FOR i = 1 TO it_mxbt s_takemx.scid = mx[i].scid s_takemx.takeid = mx[i].takeid s_takemx.cusid = cusid s_takemx.takedate = mx[i].takedate s_takemx.inrep = mx[i].inrep s_takemx.msttakeamt = mx[i].Msttakeamt s_takemx.takeamt = mx[i].takeamt s_takemx.dscrp = mx[i].dscrp s_takemx.billcode = mx[i].relbillcode s_takemx.banktypeid = mx[i].banktypeid s_takemx.moneyid = mx[i].moneyid s_takemx.opemp = mx[i].opemp s_takemx.buildtype = 2 s_takemx.outwareid = 0 s_takemx.salebillid = salebillid s_takemx.itemid = 0 s_takemx.mrate = mx[i].mrate IF uo_take.add_takerecmx(s_takemx,arG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT END IF it_newbegin = FALSE it_updatebegin = FALSE salebillid = ls_newid ext: IF rslt = 0 THEN ROLLBACK; p_clearmx() ELSEIF rslt = 1 AND arg_ifcommt THEN COMMIT; END IF RETURN rslt end function public function integer del (long arg_salebillid, ref string arg_msg, boolean arg_ifcommit);//cancel() //如果单据还没有审核删除单据极其明细 //0 FAIL, 1 SUCCESS Int rslt = 1 Decimal ls_msttakeamt Decimal ls_takeamt Long ll_itemid Long ll_dateint DateTime ld_takedate uo_musttake uo_take uo_take = CREATE uo_musttake uo_iteminput uo_item uo_item = CREATE uo_iteminput uo_taskdamt uo_ware uo_ware = CREATE uo_taskdamt IF arg_salebillid <= 0 THEN rslt = 0 arG_MSG = "没有删除对象,操作取消" GOTO ext END IF IF getinfo(arg_salebillid,arG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 1 THEN rslt = 0 arG_MSG = "单据已经审核,不可以删除" GOTO ext END IF //********删除出纳帐 SELECT msttakeamt, takeamt, itemid, rapmoneyid, takedate INTO :ls_msttakeamt, :ls_takeamt, :ll_itemid, :ll_dateint, :ld_takedate FROM u_salebill Where u_salebill.salebillid = :arg_salebillid; IF sqlca.SQLCode <> 0 THEN arG_MSG = "查询应收帐建立类型失败,请重试!"+'~n'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ls_takeamt <> 0 THEN IF uo_item.del_iteminput(ll_itemid,ll_dateint,1,arG_MSG,FALSE) = 0 THEN arG_MSG = '删除出纳明细帐失败!~n' + arG_MSG rslt = 0 GOTO ext END IF END IF IF uo_take.salebill_del_mx(arg_salebillid,arG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF //**************删除订单收款单 Int cnt SELECT COUNT(*) INTO :cnt FROM u_taskdamt Where salebillid = :arg_salebillid; IF sqlca.SQLCode <> 0 OR cnt > 1 THEN arG_MSG = "查询订单收款单失败,请重试!"+'~n'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cnt = 1 THEN Long ll_billid SELECT billid INTO :ll_billid FROM u_taskdamt Where salebillid = :arg_salebillid; IF sqlca.SQLCode <> 0 OR cnt > 1 THEN arG_MSG = "查询订单收款单失败,请重试!"+'~n'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF uo_ware.c_secauditing(1,ll_billid,arg_msg,FALSE) = 0 THEN RETURN 0 END IF IF uo_ware.caudit(1,ll_billid,arG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF IF uo_ware.Cancel(ll_billid,arG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF END IF DELETE FROM u_salebill Where u_salebill.salebillid = :arg_salebillid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "删除销售收入单操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_salebillmx Where u_salebillmx.salebillid = :arg_salebillid USING sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "删除销售收入单明细操作失败"+"~n"+sqlca.SQLErrText ROLLBACK USING sqlca; GOTO ext END IF it_newbegin = FALSE it_updatebegin = FALSE IF rslt = 0 THEN ROLLBACK; p_reset() ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF ext: DESTROY uo_take DESTROY uo_item DESTROY uo_ware Return (rslt) end function public function integer getinfo (long arg_salebillid, ref string arg_msg);Int rslt = 1 SELECT U_salebill.salebillcode, U_salebill.takedate, U_salebill.Relcode, U_salebill.Msttakeamt, U_salebill.takeamt, U_salebill.cusid, U_salebill.dscrp, U_salebill.taketype, U_salebill.inrep, U_salebill.opdate, U_salebill.opemp, U_salebill.auditdate, U_salebill.auditrep, U_salebill.flag, u_salebill.YwrepID, u_salebill.banktypeid, u_salebill.rapmoneyid, u_salebill.accountsid, u_salebill.itemid INTO :salebillcode, :takedate, :Relcode, :Msttakeamt, :takeamt, :cusid, :dscrp, :taketype, :inrep, :opdate, :opemp, :auditdate, :auditrep, :flag, :ywrepid, :banktypeid , :rapmoneyid, :accountsid, :itemid FROM U_salebill Where U_salebill.salebillid = :arg_salebillid; 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_salebillid, 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_salebillid,arg_msg)=0 then rslt=0 goto ext end if IF flag=0 THEN rslt=0 arG_MSG="非审核状态下不可用" goto ext END IF UPDATE u_salebill SET DSCRP = DSCRP+' '+:arg_newdescppart WHERE u_salebill.salebillid = :arg_salebillid; if SQLCA.SQLCode<>0 then rslt=0 arG_MSG="因网络或其它原因导致添加单据备注操作失败"+"~n"+SQLCA.SQLErrText 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 auditing (long arg_salebillid, string arg_auditrep, ref string arg_msg, boolean arg_ifcommit);//auditing() //0 fail 1 success //仓库审核 Long rslt = 1,cnt = 0 IF arg_salebillid = 0 THEN rslt = 0 arG_MSG = "没有审核对象" GOTO ext END IF IF getinfo(arg_salebillid,arG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 1 THEN rslt = 0 arG_MSG = "单据已经过审核" GOTO ext END IF SELECT count(*) INTO :cnt FROM u_user Where username = :arg_auditrep; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "查询操作失败,操作员" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arG_MSG = "操作员姓名未登记或已取消" GOTO ext END IF UPDATE u_salebill SET Auditrep = :arg_auditrep, Auditdate = getdate(), flag = 1 Where u_salebill.salebillid = :arg_salebillid 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 flag = 1 ext: IF rslt = 0 THEN ROLLBACK ; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer c_auditing (long arg_salebillid, string arg_auditrep, ref string arg_msg, boolean arg_ifcommit);//c_auditing() //0 fail 1 success //仓库审核 long rslt=1,cnt=0 IF arg_salebillid=0 THEN rslt=0 arG_MSG="没有撤审对象" goto ext END IF if getinfo(arg_salebillid,arg_msg)=0 then rslt=0 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=:arg_auditrep; if sqlca.sqlcode<>0 then rslt=0 arG_MSG="查询操作失败,操作员" goto ext end if if cnt=0 then rslt=0 arG_MSG="操作员姓名未登记或已取消" goto ext end if datetime null_datetime setnull(null_datetime) UPDATE u_salebill SET Auditrep = '', Auditdate = :null_datetime, flag = 0 WHERE u_salebill.salebillid = :arg_salebillid 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 flag=0 ext: if rslt=0 then ROLLBACK ; elseif rslt=1 and arg_ifcommit then commit; end if return rslt end function public function integer acceptmx (long arg_takeid, string arg_billcode, decimal arg_msttakeamt, decimal arg_takeamt, decimal arg_oriamt, decimal arg_mainmsttakeamt, decimal arg_maintakeamt, string arg_relbillcode, long arg_moneyid, decimal arg_mrate, string arg_mxdscrp, ref string arg_msg);Long rslt = 1 Long ll_scid Decimal ld_mrate IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arG_MSG = "非编辑状态不可以使用,操作取消" GOTO ext END IF //清除空值 IF IsNull(arg_takeid) THEN arg_takeid = 0 IF IsNull(arg_billcode) THEN arg_billcode = '' IF IsNull(arg_relbillcode) THEN arg_relbillcode = '' IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = '' IF IsNull(arg_msttakeamt) THEN arg_msttakeamt = 0 IF IsNull(arg_takeamt) THEN arg_takeamt = 0 IF IsNull(arg_oriamt) THEN arg_oriamt = 0 IF IsNull(arg_mainmsttakeamt) THEN arg_mainmsttakeamt = 0 IF IsNull(arg_maintakeamt) THEN arg_maintakeamt = 0 IF IsNull(arg_moneyid) THEN arg_moneyid = 0 IF IsNull(arg_mrate) THEN arg_mrate = 0 SELECT scid,mrate INTO :ll_scid,:ld_mrate FROM u_bmsttake Where takeid = :arg_takeid; IF sqlca.SQLCode <> 0 THEN arG_MSG = '查询单据所属分部失败:'+arg_billcode+' '+sqlca.SQLErrText rslt = 0 GOTO ext END IF //写入内容 it_mxbt++ mx[it_mxbt].scid = ll_scid mx[it_mxbt].takeid = arg_takeid mx[it_mxbt].billcode = arg_billcode mx[it_mxbt].relbillcode = arg_relbillcode mx[it_mxbt].takedate = takedate mx[it_mxbt].taketype = taketype mx[it_mxbt].msttakeamt = arg_msttakeamt mx[it_mxbt].takeamt = arg_takeamt mx[it_mxbt].oriamt = arg_oriamt mx[it_mxbt].mainmsttakeamt = arg_mainmsttakeamt mx[it_mxbt].maintakeamt = arg_maintakeamt mx[it_mxbt].msttakeamt_rmb = Round(arg_msttakeamt * arg_mrate,2) mx[it_mxbt].takeamt_rmb = Round(arg_takeamt * arg_mrate,2) mx[it_mxbt].oriamt_rmb = Round(arg_oriamt * ld_mrate,2) mx[it_mxbt].mainmsttakeamt_rmb = Round(arg_mainmsttakeamt * ld_mrate,2) mx[it_mxbt].maintakeamt_rmb = Round(arg_maintakeamt * ld_mrate,2) mx[it_mxbt].opemp = publ_operator mx[it_mxbt].dscrp = arg_mxdscrp mx[it_mxbt].inrep = inrep mx[it_mxbt].buildtype = 2 mx[it_mxbt].banktypeid = banktypeid mx[it_mxbt].moneyid = arg_moneyid mx[it_mxbt].mrate = arg_mrate ext: IF rslt = 0 THEN p_clearmx() Return(rslt) end function on uo_salebill.create call super::create TriggerEvent( this, "constructor" ) end on on uo_salebill.destroy TriggerEvent( this, "destructor" ) call super::destroy end on