$PBExportHeader$uo_credence_mode.sru forward global type uo_credence_mode from nonvisualobject end type type s_credencemx_mode from structure within uo_credence_mode end type end forward type s_credencemx_mode from structure string subid string brief integer dcflag integer modetype integer ifnopost decimal {4} autorate string expressions decimal {4} debit decimal {4} credit decimal {4} amount decimal {4} price long deptid long itemid long billid string billno integer printid end type global type uo_credence_mode from nonvisualobject end type global uo_credence_mode uo_credence_mode type variables public protectedwrite LONG credid //凭证自动增量ID public protectedwrite int Credkind //凭证类型 public protectedwrite int modetype_1_cnt = 0 string Credname //凭证名称 string monthdscrp //转帐期间 int billnumber //附件 string credtype //凭证字 int ifalways=0 //常用标记 private: S_credencemx_mode credencemx[] //明细结构数组 long it_MXBT=0 //明细结构数组末指针 BOOLEAN IT_NEWBEGIN=FALSE //新建标志 BOOLEAN IT_UPDATEBEGIN=FALSE//修改标志 end variables forward prototypes public function integer p_reset () public function integer p_clearmx () public function integer newbegin (integer arg_Credkind, ref string arg_msg) public function integer updatebegin (long arg_credid, ref string arg_msg) public function integer getinfo (long arg_credid, ref string arg_msg) public function integer del (long arg_credid, ref string arg_msg, boolean arg_ifcommit) public function integer save (ref string arg_msg, boolean arg_ifcommit) public function integer acceptmx (string arg_subid, string arg_brief, integer arg_dcflag, integer arg_modetype, integer arg_ifnopost, decimal arg_autorate, string arg_expressions, decimal arg_debit, decimal arg_credit, decimal arg_amount, decimal arg_price, long arg_deptid, long arg_itemid, long arg_billid, string arg_billno, ref string arg_msg, integer arg_printid) public function integer auto_createcred (long arg_credid, ref string arg_msg) end prototypes public function integer p_reset ();//INT p_RESET() //清除对象及其明细 credid=0 Credkind=0 modetype_1_cnt=0 it_newbegin=FALSE it_updatebegin=FALSE //清除明细 P_CLEARMX() RETURN 1 end function public function integer p_clearmx ();//INT p_clearmx() //清除明细 it_mxbt=0 modetype_1_cnt = 0 RETURN 1 end function public function integer newbegin (integer arg_Credkind, ref string arg_msg);//newbegin() //从置对象,准备建立新凭证 //0 fail 1 success long rslt=1 p_reset() if arg_credkind <> 0 and arg_credkind <> 1 then arg_msg='错误的凭证类型:[0:模式凭证,1:自动转帐凭证]' rslt=0 goto ext end if credkind=arg_credkind it_newbegin=true it_updatebegin=false ext: if rslt=0 then p_reset() return rslt end function public function integer updatebegin (long arg_credid, ref string arg_msg);//UPDATEbegin(long arg_subaccsetid,long arg_credid,ref string arg_msg) //从置对象,准备更新凭证 //0 fail 1 success int rslt=1 modetype_1_cnt = 0 if getinfo(arg_credid,arg_msg)=0 then rslt=0 goto ext end if credid=arg_credid it_newbegin=FALSE it_updatebegin=TRUE p_clearmx() //清除明细 ext: IF rslt=0 THEN p_RESET() return rslt end function public function integer getinfo (long arg_credid, ref string arg_msg);//取凭证信息 int rslt=1 long i=1,no_mxcheck IF arg_credid<=0 THEN rslt=0 credid=0 arg_msg='凭证ID错误' goto ext end if SELECT cw_credence_auto.Credname, cw_credence_auto.Credkind, cw_credence_auto.monthdscrp, cw_credence_auto.billnumber, cw_credence_auto.credtype, cw_credence_auto.billnumber, cw_credence_auto.ifalways INTO :Credname, :Credkind, :monthdscrp, :billnumber, :credtype, :billnumber, :ifalways FROM cw_credence_auto WHERE cw_credence_auto.credid = :arg_credid and cw_credence_auto.accsetid=:sys_accsetid; if sqlca.sqlcode<>0 then rslt=0 ARG_MSG='查询数据操作失败,凭证' goto ext end if //用游标读取明细 declare cur_credencemx_auto cursor for select cw_credencemx_auto.subid, cw_credencemx_auto.brief, cw_credencemx_auto.Dcflag, cw_credencemx_auto.modeType, cw_credencemx_auto.ifnopost, cw_credencemx_auto.autorate, cw_credencemx_auto.Expressions, cw_credencemx_auto.debit, cw_credencemx_auto.credit, cw_credencemx_auto.amount, cw_credencemx_auto.price, cw_credencemx_auto.deptid, cw_credencemx_auto.itemid, cw_credencemx_auto.billid, cw_credencemx_auto.billno, cw_credencemx_auto.printid from cw_credencemx_auto where cw_credencemx_auto.accsetid = :sys_accsetid and cw_credencemx_auto.credid = :arg_credid order by cw_credencemx_auto.modeType desc; open cur_credencemx_auto; fetch cur_credencemx_auto into :credencemx[i].subid,:credencemx[i].brief,:credencemx[i].Dcflag, :credencemx[i].modeType,:credencemx[i].ifnopost,:credencemx[i].autorate, :credencemx[i].Expressions,:credencemx[i].debit,:credencemx[i].credit, :credencemx[i].amount,:credencemx[i].price,:credencemx[i].deptid, :credencemx[i].itemid,:credencemx[i].billid,:credencemx[i].billno, :credencemx[i].printid; do while sqlca.sqlcode = 0 i++ fetch cur_credencemx_auto into :credencemx[i].subid,:credencemx[i].brief,:credencemx[i].Dcflag, :credencemx[i].modeType,:credencemx[i].ifnopost,:credencemx[i].autorate, :credencemx[i].Expressions,:credencemx[i].debit,:credencemx[i].credit, :credencemx[i].amount,:credencemx[i].price,:credencemx[i].deptid, :credencemx[i].itemid,:credencemx[i].billid,:credencemx[i].billno, :credencemx[i].printid; loop close cur_credencemx_auto; //检验明细是否读入完整 select count(*) into :no_mxcheck from cw_credencemx_auto where cw_credencemx_auto.accsetid = :sys_accsetid and cw_credencemx_auto.credid = :arg_credid; if sqlca.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 it_newbegin=false it_updatebegin=false it_mxbt = i - 1 ext: return rslt end function public function integer del (long arg_credid, ref string arg_msg, boolean arg_ifcommit);//del(arg_subaccsetid,arg_credid,ref arg_msg,arg_ifcommit) //如果单据还没有审核删除凭证极其明细 //0 FAIL, 1 SUCCESS //arg_delmode 0:手动1:自动 int rslt=1 boolean if_del=false if getinfo(arg_credid,arg_msg)=0 then rslt=0 goto ext end if DELETE FROM cw_credence_auto WHERE cw_credence_auto.credid = :arg_credid and cw_credence_auto.accsetid = :sys_accsetid; if sqlca.sqlcode<>0 then rslt=0 arG_MSG="删除凭证操作失败"+"~n"+SQLCA.SQLErrText goto ext end if DELETE FROM cw_credencemx_auto WHERE cw_credencemx_auto.credid = :arg_credid and cw_credencemx_auto.accsetid = :sys_accsetid; if sqlca.sqlcode<>0 then rslt=0 arG_MSG="删除凭证明细操作失败"+"~n"+SQLCA.SQLErrText 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: return (rslt) end function public function integer save (ref string arg_msg, boolean arg_ifcommit);//save(ref string arg_msg,boolean arg_ifcommit) // 新建(credid=0)\更新(credid>0) //0 fail 1 success // // 函数执行凭证操作 // 函数在表 cw_credence、cw_credencemx 记帐 // 1 检查单据信息合法性 // 2 新建-取得单据编号\新建凭证\读取凭证唯一码\插入明细 // 2 修改-更新凭证\删除旧明细\插入明细 // 3 提交,修改状态标志 Integer rslt = 1,cnt = 0,i DateTime server_datetime Long ls_newid IF IsNull(credname) THEN credname = '' IF IsNull(credkind) THEN credkind = 0 IF IsNull(monthdscrp) THEN monthdscrp = '' IF IsNull(billnumber) THEN billnumber = 0 IF IsNull(credtype) THEN credtype = '' IF IsNull(ifalways) THEN ifalways = 0 IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arg_msg = "非编辑状态不可以提交" GOTO ext END IF IF credkind <> 0 AND credkind <> 1 THEN arg_msg = '错误的凭证类型:[0:模式凭证,1:自动转帐凭证]' rslt = 0 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 credname = '' THEN rslt = 0 arg_msg = '凭证名称错误,请检查' GOTO ext END IF IF it_mxbt = 0 THEN rslt = 0 arg_msg = "没有正确凭证明细内容" GOTO ext END IF IF credkind = 1 AND modetype_1_cnt <> 1 THEN rslt = 0 arg_msg = '凭证明细科目缺少[转入]科目或[转入]科目多于一个' GOTO ext END IF //////////////////////////////////////////////开始区分:新建/更新 处理 IF credid = 0 THEN //新建 ls_newid = f_sys_scidentity(sys_accsetid,"cw_credence_auto","credid",arg_msg,TRUE,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF INSERT INTO cw_credence_auto ( accsetid, credid, Credname, Credkind, monthdscrp, credtype, billnumber, ifalways, opemp, opdate) VALUES ( :sys_accsetid, :ls_newid, :Credname, :Credkind, :monthdscrp, :credtype, :billnumber, :ifalways, :publ_operator, getdate()); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致新建凭证操作失败"+"~n"+sqlca.SQLErrText ROLLBACK ; GOTO ext END IF FOR i = 1 TO it_mxbt INSERT INTO cw_credencemx_auto ( accsetid, credid, subid, brief, Dcflag, modeType, ifnopost, autorate, Expressions, debit, credit, amount, price, deptid, itemid, billid, billno, printid) VALUES (:sys_accsetid, :ls_newid, :credencemx[i].subid, :credencemx[i].brief, :credencemx[i].Dcflag, :credencemx[i].modeType, :credencemx[i].ifnopost, :credencemx[i].autorate, :credencemx[i].Expressions, :credencemx[i].debit, :credencemx[i].credit, :credencemx[i].amount, :credencemx[i].price, :credencemx[i].deptid, :credencemx[i].itemid, :credencemx[i].billid, :credencemx[i].billno, :credencemx[i].printid); IF sqlca.SQLCode <> 0 THEN credid = 0 //还原outwareid rslt = 0 arg_msg = "因网络或其它原因导致新建凭证明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT credid = ls_newid ELSE //////////////////////////////////////////////////更新 UPDATE cw_credence_auto SET Credname = :Credname, Credkind = :Credkind, monthdscrp = :monthdscrp, credtype = :credtype, billnumber = :billnumber, ifalways = :ifalways, moddate = getdate(), modemp = :publ_operator WHERE cw_credence_auto.accsetid = :sys_accsetid AND cw_credence_auto.credid = :credid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新凭证操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF //删除原有明细 DELETE FROM cw_credencemx_auto Where cw_credencemx_auto.accsetid = :sys_accsetid AND credid = :credid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有凭证明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR i = 1 TO it_mxbt INSERT INTO cw_credencemx_auto ( accsetid, credid, subid, brief, Dcflag, modeType, ifnopost, autorate, Expressions, debit, credit, amount, price, deptid, itemid, billid, billno, printid) VALUES (:sys_accsetid, :credid, :credencemx[i].subid, :credencemx[i].brief, :credencemx[i].Dcflag, :credencemx[i].modeType, :credencemx[i].ifnopost, :credencemx[i].autorate, :credencemx[i].Expressions, :credencemx[i].debit, :credencemx[i].credit, :credencemx[i].amount, :credencemx[i].price, :credencemx[i].deptid, :credencemx[i].itemid, :credencemx[i].billid, :credencemx[i].billno, :credencemx[i].printid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因新建凭证明细操作失败"+"~n"+sqlca.SQLErrText ROLLBACK ; GOTO ext END IF NEXT END IF it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN ROLLBACK; credid = 0 p_clearmx() ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN(rslt) end function public function integer acceptmx (string arg_subid, string arg_brief, integer arg_dcflag, integer arg_modetype, integer arg_ifnopost, decimal arg_autorate, string arg_expressions, decimal arg_debit, decimal arg_credit, decimal arg_amount, decimal arg_price, long arg_deptid, long arg_itemid, long arg_billid, string arg_billno, ref string arg_msg, integer arg_printid);//==================================================================== // Function: uo_credence_mode::acceptmx() //-------------------------------------------------------------------- // Description: //-------------------------------------------------------------------- // Arguments: // string arg_subid // string arg_brief // integer arg_dcflag // integer arg_modetype // integer arg_ifnopost // decimal arg_autorate // string arg_expressions // decimal arg_debit // decimal arg_credit // decimal arg_amount // decimal arg_price // long arg_deptid // long arg_itemid // long arg_billid // string arg_billno // string arg_msg // integer arg_printid //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2004.02.26 //-------------------------------------------------------------------- // Modify History: // //==================================================================== //RETURN 0 fail 1 success // 函数增加凭证明细项 Long rslt = 1,cnt = 0,LS_i IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arG_MSG = "非编辑状态不可以使用,操作取消" GOTO ext END IF //清除空值 IF IsNull(arg_subid) THEN arg_subid = '' IF IsNull(arg_brief) THEN arg_brief = '' IF IsNull(arg_Dcflag) THEN arg_Dcflag = 0 IF IsNull(arg_modeType)THEN arg_modeType = 0 IF IsNull(arg_ifnopost)THEN arg_ifnopost = 0 IF IsNull(arg_autorate)THEN arg_autorate = 0 IF IsNull(arg_Expressions)THEN arg_Expressions = '' IF IsNull(arg_debit)THEN arg_debit = 0 IF IsNull(arg_credit)THEN arg_credit = 0 IF IsNull(arg_amount)THEN arg_amount = 0 IF IsNull(arg_price)THEN arg_price = 0 IF IsNull(arg_deptid) THEN arg_deptid = 0 IF IsNull(arg_itemid) THEN arg_itemid = 0 IF IsNull(arg_billid) THEN arg_billid = 0 IF IsNull(arg_billno) THEN arg_billno = '' IF IsNull(arg_printid) THEN arg_printid = 0 IF Credkind = 0 THEN IF arg_subid = '' AND arg_debit = 0 AND arg_credit = 0 THEN // 如果借贷金额为 0 且摘要和科目为空,则不作任何处理 rslt = 1 GOTO ext END IF ELSE IF arg_subid = '' THEN // 如果摘要和科目为空,则不作任何处理 rslt = 1 GOTO ext END IF IF arg_autorate <= 0 OR arg_autorate > 100 THEN arG_MSG = '转帐比例必须在0 到 100之间,不包括0' rslt = 0 GOTO ext END IF END IF SELECT count(*) INTO :cnt FROM cw_subject WHERE accsetid = :sys_accsetid AND subid = :arg_subid AND detailflag = 1; IF sqlca.SQLCode <> 0 THEN arG_MSG = '查询科目代码失败' rslt = 0 GOTO ext END IF IF cnt = 0 THEN arG_MSG = '此帐套中不存在明细科目{'+arg_subid+'},请检查输入是否正确' rslt = 0 GOTO ext END IF IF cnt > 1 THEN arG_MSG = '此帐套中存在两个相同科目{'+arg_subid+'}' rslt = 0 GOTO ext END IF IF Credkind = 1 AND arg_modeType = 1 THEN modetype_1_cnt++ //写入内容 it_mxbt++ credencemx[it_mxbt].subid = arg_subid credencemx[it_mxbt].brief = arg_brief credencemx[it_mxbt].Dcflag = arg_Dcflag credencemx[it_mxbt].modeType = arg_modeType credencemx[it_mxbt].ifnopost = arg_ifnopost credencemx[it_mxbt].autorate = arg_autorate credencemx[it_mxbt].Expressions = arg_Expressions credencemx[it_mxbt].debit = arg_debit credencemx[it_mxbt].credit = arg_credit credencemx[it_mxbt].amount = arg_amount credencemx[it_mxbt].price = arg_price credencemx[it_mxbt].deptid = arg_deptid credencemx[it_mxbt].itemid = arg_itemid credencemx[it_mxbt].billid = arg_billid credencemx[it_mxbt].billno = arg_billno credencemx[it_mxbt].printid = arg_printid ext: IF rslt = 0 THEN p_clearmx() RETURN(rslt) end function public function integer auto_createcred (long arg_credid, ref string arg_msg);Int rslt = 1 Long i,ll_ref_credid,ll_ref_credno DateTime end_date,null_datetime s_credence arg_s_cred Long no_mxt = 0 SetNull(null_datetime) IF getinfo(arg_credid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF Credkind <> 1 THEN rslt = 0 arg_msg = '错误的凭证类型' GOTO ext END IF SELECT cw_calendar.edate INTO :end_date FROM cw_calendar WHERE cw_calendar.accsetid = :sys_accsetid AND cmonth = :sys_curyearmon; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询本期间期末日期间失败' rslt = 0 GOTO ext END IF //accepttext String ls_subid,ls_brief Int ls_Dcflag,ls_modetype,ls_ifnopost Decimal ls_autorate String ls_Expressions Decimal ls_debit,ls_credit,ls_balcamt Long ls_itemid Int ls_rawrate Decimal ls_rawdebit,ls_rawcredit,ls_rawbalcamt Decimal sum_debit,sum_credit,sum_rawdebit,sum_rawcredit Int ls_subdcflag Decimal cnt FOR i = 1 TO it_mxbt ls_subid = credencemx[i].subid ls_brief = credencemx[i].brief ls_Dcflag = credencemx[i].Dcflag ls_modetype = credencemx[i].modetype ls_ifnopost = credencemx[i].ifnopost ls_autorate = credencemx[i].autorate ls_Expressions = credencemx[i].Expressions ls_itemid = credencemx[i].itemid //检查 SELECT dcflag INTO :ls_subdcflag FROM cw_subject Where accsetid = :sys_accsetid AND subid = :ls_subid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询会计科目:'+ls_subid+'余额方向失败' rslt = 0 GOTO ext END IF SELECT cw_currency.rate INTO :ls_rawrate FROM cw_subject,cw_currency WHERE cw_subject.accsetid = cw_currency.accsetid AND cw_subject.moneyid = cw_currency.moneyid AND cw_subject.accsetid = :sys_accsetid AND cw_subject.subid = :ls_subid; IF sqlca.SQLCode = -1 THEN arg_msg = '查询会计科目:'+ls_subid+'外币汇率失败' rslt = 0 GOTO ext END IF IF IsNull(ls_rawrate) THEN ls_rawrate = 0 // IF ls_modetype = 1 THEN GOTO auto_in CHOOSE CASE ls_modetype CASE 2 SELECT sum(debit),sum(credit) INTO :ls_debit,:ls_credit FROM cw_credence,cw_credencemx WHERE cw_credence.accsetid = cw_credencemx.accsetid AND cw_credence.credid = cw_credencemx.credid AND cw_credence.accsetid = :sys_accsetid AND cw_credence.cmonth = :sys_curyearmon AND (cw_credence.postflag = :ls_ifnopost OR :ls_ifnopost = 0 ) AND cw_credencemx.subid = :ls_subid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询会计科目:'+ls_subid+'本期余额失败' rslt = 0 GOTO ext END IF IF IsNull(ls_debit) THEN ls_debit = 0 IF IsNull(ls_credit) THEN ls_credit = 0 IF ls_subdcflag = 1 THEN ls_balcamt = ls_debit - ls_credit ELSE ls_balcamt = ls_credit - ls_debit END IF ls_balcamt = ls_balcamt * ls_autorate / 100 ls_rawbalcamt = ls_rawrate * ls_balcamt IF ls_Dcflag = 1 THEN ls_debit = ls_balcamt ls_credit = 0 ls_rawdebit = ls_rawbalcamt ls_rawcredit = 0 ELSE ls_debit = 0 ls_credit = ls_balcamt ls_rawdebit = 0 ls_rawcredit = ls_rawbalcamt END IF sum_debit = sum_debit + ls_debit sum_credit = sum_credit + ls_credit sum_rawdebit = sum_rawdebit + ls_rawdebit sum_rawcredit = sum_rawcredit + ls_rawcredit CASE 3 SELECT sum(debit),sum(credit) INTO :ls_debit,:ls_credit FROM cw_credence,cw_credencemx WHERE cw_credence.accsetid = cw_credencemx.accsetid AND cw_credence.credid = cw_credencemx.credid AND cw_credence.accsetid = :sys_accsetid AND cw_credence.cmonth = :sys_curyearmon AND (cw_credence.postflag = :ls_ifnopost OR :ls_ifnopost = 0 ) AND cw_credencemx.subid = :ls_subid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询会计科目:'+ls_subid+'本期余额失败' rslt = 0 GOTO ext END IF IF IsNull(ls_debit) THEN ls_debit = 0 IF IsNull(ls_credit) THEN ls_credit = 0 IF ls_subdcflag = 1 THEN ls_balcamt = ls_debit ELSE ls_balcamt = ls_credit END IF ls_balcamt = ls_balcamt * ls_autorate / 100 ls_rawbalcamt = ls_rawrate * ls_balcamt IF ls_Dcflag = 1 THEN ls_debit = ls_balcamt ls_credit = 0 ls_rawdebit = ls_rawbalcamt ls_rawcredit = 0 ELSE ls_debit = 0 ls_credit = ls_balcamt ls_rawdebit = 0 ls_rawcredit = ls_rawbalcamt END IF sum_debit = sum_debit + ls_debit sum_credit = sum_credit + ls_credit sum_rawdebit = sum_rawdebit + ls_rawdebit sum_rawcredit = sum_rawcredit + ls_rawcredit CASE 4 END CHOOSE IF ls_debit <> 0 OR ls_credit <> 0 THEN no_mxt++ arg_s_cred.arg_s_credmx[no_mxt].fuluno = no_mxt arg_s_cred.arg_s_credmx[no_mxt].subid = ls_subid arg_s_cred.arg_s_credmx[no_mxt].brief = ls_brief arg_s_cred.arg_s_credmx[no_mxt].rate = ls_rawrate arg_s_cred.arg_s_credmx[no_mxt].rawdebit = ls_rawdebit arg_s_cred.arg_s_credmx[no_mxt].rawcredit = ls_rawcredit arg_s_cred.arg_s_credmx[no_mxt].debit = ls_debit arg_s_cred.arg_s_credmx[no_mxt].credit = ls_credit arg_s_cred.arg_s_credmx[no_mxt].amount = 0 arg_s_cred.arg_s_credmx[no_mxt].price = 0 arg_s_cred.arg_s_credmx[no_mxt].deptid = 0 arg_s_cred.arg_s_credmx[no_mxt].itemid = ls_itemid arg_s_cred.arg_s_credmx[no_mxt].billdate = null_datetime arg_s_cred.arg_s_credmx[no_mxt].billid = 0 arg_s_cred.arg_s_credmx[no_mxt].billno = '' arg_s_cred.arg_s_credmx[no_mxt].cropbillid = 0 arg_s_cred.arg_s_credmx[no_mxt].ifreadonly = 1 END IF NEXT // //转入 auto_in: IF sum_debit <> 0 OR sum_credit <> 0 THEN no_mxt++ IF ls_Dcflag = 1 THEN sum_debit = sum_credit - sum_debit sum_credit = 0 sum_rawdebit = sum_rawcredit - sum_rawdebit sum_rawdebit = 0 ELSE sum_debit = 0 sum_credit = sum_debit - sum_credit sum_rawdebit = 0 sum_rawdebit = sum_rawdebit - sum_rawcredit END IF arg_s_cred.arg_s_credmx[no_mxt].fuluno = no_mxt arg_s_cred.arg_s_credmx[no_mxt].subid = ls_subid arg_s_cred.arg_s_credmx[no_mxt].brief = ls_brief arg_s_cred.arg_s_credmx[no_mxt].rate = ls_rawrate arg_s_cred.arg_s_credmx[no_mxt].rawdebit = sum_rawdebit arg_s_cred.arg_s_credmx[no_mxt].rawcredit = sum_rawcredit arg_s_cred.arg_s_credmx[no_mxt].debit = sum_debit arg_s_cred.arg_s_credmx[no_mxt].credit = sum_credit arg_s_cred.arg_s_credmx[no_mxt].amount = 0 arg_s_cred.arg_s_credmx[no_mxt].price = 0 arg_s_cred.arg_s_credmx[no_mxt].deptid = 0 arg_s_cred.arg_s_credmx[no_mxt].itemid = ls_itemid arg_s_cred.arg_s_credmx[no_mxt].billdate = null_datetime arg_s_cred.arg_s_credmx[no_mxt].billid = 0 arg_s_cred.arg_s_credmx[no_mxt].billno = '' arg_s_cred.arg_s_credmx[no_mxt].cropbillid = 0 arg_s_cred.arg_s_credmx[no_mxt].ifreadonly = 1 END IF arg_s_cred.credtype = credtype arg_s_cred.readtype = 300 arg_s_cred.creddate = end_date arg_s_cred.ifauto = 0 IF f_create_cred(arg_s_cred,TRUE,arg_msg,ll_ref_credid,ll_ref_credno) = 0 THEN rslt = 0 GOTO ext END IF ext: RETURN rslt end function on uo_credence_mode.create call super::create TriggerEvent( this, "constructor" ) end on on uo_credence_mode.destroy TriggerEvent( this, "destructor" ) call super::destroy end on