$PBExportHeader$uo_cusamt_other.sru forward global type uo_cusamt_other from nonvisualobject end type end forward global type uo_cusamt_other from nonvisualobject end type global uo_cusamt_other uo_cusamt_other type variables PUBLIC PROTECTEDWRITE Long Baid //自动增量id PUBLIC PROTECTEDWRITE String BaCode //罚款单的唯一编号 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 confirmflag = 0 //确认标志 PUBLIC PROTECTEDWRITE DateTime confirmdate //确认时间 PUBLIC PROTECTEDWRITE String confirmemp //确认人 PUBLIC PROTECTEDWRITE Int secflag = 0 //审核标志 PUBLIC PROTECTEDWRITE DateTime secdate //审核时间 PUBLIC PROTECTEDWRITE String secemp //审核操作员 Long banktypeid Long scid Long cusid Long accountid DateTime BaDate Decimal Bmstamt, Bmstamt_mxsum decimal Zqamt, Zqamt_mxsum String dscrp Int billtype //0-收客户款; 1-付供应商款; 2-退客户款; 3-供应商退款 Long itemid Long relid //记录主表的应收帐相关takeid Long reldateint //收入支出账id long relrapid //出纳账id String BaRep Long moneyid Decimal mrate DateTime viewdate string relcode string fpcode Int cwauditingflag = 0 //总账审核标记 DateTime cwauditingdate //总账审核时间 String cwauditingrep //总账审核操作员 PRIVATE: Boolean it_newbegin = FALSE //新建标志 Boolean it_updatebegin = FALSE//修改标志 S_BmstamtMX BmstamtMX[] Long it_MXBT = 0 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 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_Baid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer secauditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer c_secauditing (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 acceptmx (s_bmstamtmx s_mx, ref string arg_msg) public function integer p_clearmx () public function integer uof_acceptmx_chk (s_bmstamtmx s_mx, ref string arg_msg) public function integer auditing_cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_auditing_end (ref string arg_msg) public function integer uof_auditing_cancel_end (ref string arg_msg) public function integer uof_secauditing_end (ref string arg_msg) public function integer uof_secauditing_cancel_end (ref string arg_msg) public function integer audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg) public function integer c_audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg) public function integer p_getinfo (long arg_billid, ref string arg_msg) public function long getinfo (long arg_billid, ref string arg_msg) end prototypes public function integer p_reset ();//INT p_RESET() //清除对象及其明细 banktypeid = 0 Baid = 0 BaCode = '' opemp = '' auditingrep = '' flag = 0 cusid = 0 Bmstamt = 0 Zqamt = 0 Bmstamt_mxsum = 0 Zqamt_mxsum = 0 dscrp = '' itemid = 0 billtype = 0 BaRep = '' moneyid = 0 accountid = 0 scid = 0 p_clearmx() 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,if_auto=0 DateTime server_dt Long ls_newid String ls_sccode Long ll_moneyid_account IF IsNull(cusid) THEN cusid = 0 IF IsNull(accountid) THEN accountid = 0 IF IsNull(dscrp) THEN dscrp = '' IF IsNull(Bmstamt) THEN Bmstamt = 0 IF IsNull(Zqamt) THEN Zqamt = 0 IF IsNull(scid) THEN scid = 0 IF IsNull(billtype) THEN billtype = 0 IF IsNull(itemid) THEN itemid = 0 IF IsNull(BaRep) THEN BaRep = '' IF IsNull(moneyid) THEN moneyid = 0 IF IsNull(mrate) THEN mrate = 0 IF IsNull(relcode) THEN relcode = '' IF IsNull(fpcode) THEN fpcode = '' IF Not ( it_updatebegin Or it_newbegin) THEN rslt = 0 arG_MSG = "非编辑状态下不可用" 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_auto=integer(f_ProfileString (sys_empid, 'w_cusamt_other', "if_auto", '1')) //if if_auto = 1 then // IF MessageBox ("询问","主表金额不等于明细金额汇总,是否继续按明细汇总保存?(是按明细汇总,否按主表金额",Question!,YesNo! ) = 2 THEN // else // Bmstamt = Bmstamt_mxsum // end if //else //end if IF billtype = 2 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 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 mrate <> 1 THEN arG_MSG = '收款币种与帐号币种相同,汇率要设为1' rslt = 0 GOTO ext END IF IF f_check_inoutdate(0,BaDate,False,arG_MSG) = 0 THEN rslt = 0 arG_MSG = "该单据超出指定日期范围(单据限制录入天数)" 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 //20100426 Long ll_itemflag SELECT itemflag INTO :ll_itemflag FROM u_itemdef Where itemid = :itemid; IF sqlca.SQLCode <> 0 THEN arG_MSG = '查询项目资料核算方向失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF billtype = 2 And ll_itemflag = -1 THEN arG_MSG = '其他收款单,不能选择核算支出方向的收支项目' rslt = 0 GOTO ext END IF IF banktypeid = 0 THEN arG_MSG = '没有结算方式' rslt = 0 GOTO ext END IF IF Bmstamt = 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(BaDate)) < 2000 Or IsNull(BaDate) THEN rslt = 0 arG_MSG = "时间不合理" GOTO ext END IF ////////////////////////////////////////////// //开始区分:新建/更新 处理 IF it_newbegin THEN //新建 ls_newid = f_sys_scidentity(0,"u_Bmstamt","Baid",arG_MSG,True,sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF //取分部代号 IF f_get_sccode(0,sqlca,ls_sccode,arG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF billtype = 2 THEN //其他收款单 BaCode = getid(0,ls_sccode + "MO",Date(server_dt),True,sqlca) //取得新单据编号 END IF IF BaCode = "err" THEN BaCode = '' rslt = 0 arG_MSG = "无法获取单据编号" GOTO ext END IF INSERT INTO u_Bmstamt ( scid, Baid, BaCode, BaDate, cusid, Bmstamt, dscrp, opdate, opemp, accountid, banktypeid, billtype, itemid, BaRep, moneyid, mrate, viewdate, relcode, fpcode, Zqamt) VALUES ( :scid, :ls_newid, :BaCode, :BaDate, :cusid, :Bmstamt, :dscrp, getdate(), :publ_operator, :accountid, :banktypeid, :billtype, :itemid, :BaRep, :moneyid, :mrate, :viewdate, :relcode, :fpcode, :Zqamt); IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "插入单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF Baid = ls_newid ELSE //////////////////////////////////////////////// //更新 UPDATE u_Bmstamt SET BaDate = :BaDate, cusid = :cusid, Bmstamt = :Bmstamt, Zqamt = :Zqamt, dscrp = :dscrp, opdate = getdate(), opemp = :publ_operator, BaCode = :BaCode, scid = :scid, accountid = :accountid, banktypeid = :banktypeid, itemid = :itemid, BaRep = :BaRep, moneyid = :moneyid, mrate = :mrate, viewdate = :viewdate, relcode = :relcode, fpcode = :fpcode, modemp = :publ_operator, moddate = getdate() Where Baid = :Baid; IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN rslt = 0 arG_MSG = "更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF //删除原有明细 DELETE FROM u_Bmstamtmx Where u_Bmstamtmx.Baid = :Baid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF END IF FOR i = 1 To it_mxbt INSERT INTO u_Bmstamtmx (Baid, printid, scid, takeid, takedate, msttakeamt, takeamt, Zqamt, Ttakeamt, TZqamt, billid, billcode, relid, relcode, relprintid, mxdscrp) VALUES (:Baid, :BmstamtMX[i].printid, :scid, :BmstamtMX[i].takeid, :BmstamtMX[i].takedate, :BmstamtMX[i].msttakeamt, :BmstamtMX[i].takeamt, :BmstamtMX[i].Zqamt, :BmstamtMX[i].Ttakeamt, :BmstamtMX[i].TZqamt, :BmstamtMX[i].billid, :BmstamtMX[i].billcode, :BmstamtMX[i].relid, :BmstamtMX[i].relcode, :BmstamtMX[i].relprintid, :BmstamtMX[i].mxdscrp); IF sqlca.SQLCode <> 0 THEN IF it_newbegin THEN Baid = 0 rslt = 0 IF Pos(sqlca.SQLErrText, 'IX_u_Bmstamtmx') > 0 THEN arG_MSG = "插入明细操作失败,存在重复的凭证"+"~n"+sqlca.SQLErrText ELSE arG_MSG = "插入明细操作失败"+"~n"+sqlca.SQLErrText END IF GOTO ext END IF NEXT it_newbegin = False it_updatebegin = False ext: IF rslt = 0 THEN p_clearmx() 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);//==================================================================== // Function: updatebegin(arg_billid,arg_msg) //-------------------------------------------------------------------- // Description: //-------------------------------------------------------------------- // Arguments: // value long arg_billid // reference string arg_msg //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.21 //-------------------------------------------------------------------- // Modify History: // //==================================================================== Int rslt = 1 IF arg_billid <= 0 THEN Baid = 0 arg_msg = '错误的单据ID' GOTO ext END IF SELECT u_Bmstamt.Baid, u_Bmstamt.BaCode, u_Bmstamt.cusid, u_Bmstamt.Bmstamt, u_Bmstamt.dscrp , u_Bmstamt.BaDate, u_Bmstamt.scid, u_Bmstamt.accountid, u_Bmstamt.flag Into :Baid, :BaCode, :cusid, :Bmstamt, :dscrp, :BaDate, :scid, :accountid, :flag From u_Bmstamt Where Baid = :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 Baid = arg_billid 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 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);//==================================================================== // Function: del(arg_billid,arg_msg) //-------------------------------------------------------------------- // Description: //-------------------------------------------------------------------- // Arguments: // value long arg_billid // reference string arg_msg //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.21 //-------------------------------------------------------------------- // Modify History: // //==================================================================== 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_Bmstamt.flag, confirmflag INTO :flag, :confirmflag FROM u_Bmstamt Where u_Bmstamt.Baid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询收款单操作失败' GOTO ext END IF IF confirmflag = 1 THEN rslt = 0 arg_msg = "单据已经确认,不可以删除" GOTO ext END IF IF flag = 1 THEN rslt = 0 arg_msg = "单据已经审核,不可以删除" GOTO ext END IF DELETE FROM u_Bmstamt Where u_Bmstamt.Baid = :arg_billid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_Bmstamtmx Where u_Bmstamtmx.Baid = :arg_billid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF it_newbegin = False it_updatebegin = False ext: IF rslt = 0 THEN ROLLBACK; p_reset() ELSE COMMIT; END IF Return (rslt) end function public function integer auditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit); Long cnt = 0 Long i Int rslt = 1 Long ref_rapid Long ref_dateint String ls_name String ls_dscrp 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 IF billtype = 2 THEN If sys_option_msttake_takeamt_secaudit = 0 Then Update u_Bmstamt Set auditemp = :publ_operator, auditdate = getdate(), flag = 1, secemp = :publ_operator, secdate = getdate(), secflag = 1 Where u_Bmstamt.Baid = :arg_billid And flag = 0; Else Update u_Bmstamt Set auditemp = :publ_operator, auditdate = getdate(), flag = 1 Where u_Bmstamt.Baid = :arg_billid And flag = 0; End If END IF 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 uof_auditing_end(arg_msg) = 0 Then // rslt = 0 // Goto ext //End If // //兼容二级审模式 . 使用二级审时,本审核只更新标记。使用一级审,本审核同时生成相关出纳。 //uof_auditing_end。出纳代码在 uof_secauditing_end If sys_option_msttake_takeamt_secaudit = 0 Then If uof_secauditing_end(arg_msg) = 0 Then rslt = 0 Goto ext End If 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 confirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0 Int rslt = 1 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 confirmflag = 1 THEN rslt = 0 arg_msg = '单据已确认,不可以确认' GOTO ext END IF UPDATE u_Bmstamt SET confirmemp = :publ_operator, confirmdate = getdate(), confirmflag = 1 WHERE u_Bmstamt.Baid = :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_Bmstamt SET confirmemp = '', confirmdate = :null_dt, confirmflag = 0 WHERE u_Bmstamt.Baid = :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_Baid, 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_Baid,arG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arG_MSG = "非审核状态下不可用" GOTO ext END IF UPDATE u_Bmstamt SET DSCRP = ltrim(rtrim(DSCRP))+' '+:arg_newdescppart Where u_Bmstamt.Baid = :arg_Baid; 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 secauditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1 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 UPDATE u_Bmstamt SET secemp = :publ_operator, secdate = getdate(), secflag = 1 WHERE u_Bmstamt.Baid = :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 uof_secauditing_end(arg_msg) = 0 THEN rslt = 0 GOTO ext END IF flag = 1 secflag = 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_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1 DateTime null_dt SetNull(null_dt) 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 UPDATE u_Bmstamt SET secemp = '', secdate = :null_dt, secflag = 0 WHERE u_Bmstamt.Baid = :arg_billid And secflag = 1 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 uof_secauditing_cancel_end(arg_msg) = 0 THEN rslt = 0 GOTO ext END IF flag = 1 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 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 UPDATE u_Bmstamt SET cusid = :arg_cusid WHERE u_Bmstamt.Baid = :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 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 acceptmx (s_bmstamtmx s_mx, ref string arg_msg); Long rslt = 1 DateTime ldt_takedate String ls_billcode, ls_relcode IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF //清除空值 IF IsNull(s_mx.printid) THEN s_mx.printid = 0 IF IsNull(s_mx.takeid) THEN s_mx.takeid = 0 IF IsNull(s_mx.billcode) THEN s_mx.billcode = '' IF IsNull(s_mx.relcode) THEN s_mx.relcode = '' IF IsNull(s_mx.msttakeamt) THEN s_mx.msttakeamt = 0 IF IsNull(s_mx.takeamt) THEN s_mx.takeamt = 0 IF IsNull(s_mx.zqamt) THEN s_mx.zqamt = 0 IF IsNull(s_mx.ttakeamt) THEN s_mx.ttakeamt = 0 IF IsNull(s_mx.tzqamt) THEN s_mx.tzqamt = 0 IF IsNull(s_mx.mxdscrp) THEN s_mx.mxdscrp = '' IF IsNull(s_mx.relid) THEN s_mx.relid = 0 IF IsNull(s_mx.relprintid) THEN s_mx.relprintid = 0 IF s_mx.takeid = 0 Or (s_mx.ttakeamt = 0 And s_mx.tzqamt = 0) THEN rslt = 1 GOTO ext END IF //IF billtype = 0 THEN // IF s_mx.ttakeamt + s_mx.tzqamt > s_mx.msttakeamt - s_mx.takeamt THEN // arg_msg = "行:"+String(s_mx.printid)+",本次收款金额+本次折扣金额>未收金额" // rslt = 0 // GOTO ext // END IF // // SELECT takedate, billcode, relcode // INTO :ldt_takedate, :ls_billcode, :ls_relcode // FROM U_Bmsttake // Where takeid = :s_mx.takeid; // IF sqlca.SQLCode <> 0 THEN // arg_msg = "查询明细对应的应收帐信息失败,"+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF //ELSE // IF s_mx.ttakeamt + s_mx.tzqamt > s_mx.msttakeamt - s_mx.takeamt THEN // arg_msg = "行:"+String(s_mx.printid)+",本次付款金额+本次折扣金额>未付金额" // rslt = 0 // GOTO ext // END IF // // SELECT paydate, billcode, relcode // INTO :ldt_takedate, :ls_billcode, :ls_relcode // FROM U_Bmstpay // Where payid = :s_mx.takeid; // IF sqlca.SQLCode <> 0 THEN // arg_msg = "查询明细对应的应付帐信息失败,"+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // //ls_relcode = "" //END IF IF uof_acceptmx_chk(s_mx, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF //写入内容 it_mxbt++ BmstamtMX[it_mxbt].printid = it_mxbt BmstamtMX[it_mxbt].takeid = s_mx.takeid BmstamtMX[it_mxbt].billcode = s_mx.billcode BmstamtMX[it_mxbt].relcode = s_mx.relcode BmstamtMX[it_mxbt].takedate =s_mx.takedate BmstamtMX[it_mxbt].msttakeamt = s_mx.msttakeamt BmstamtMX[it_mxbt].takeamt = s_mx.takeamt BmstamtMX[it_mxbt].zqamt = s_mx.zqamt BmstamtMX[it_mxbt].ttakeamt = s_mx.ttakeamt BmstamtMX[it_mxbt].tzqamt = s_mx.tzqamt BmstamtMX[it_mxbt].relid = s_mx.relid BmstamtMX[it_mxbt].relprintid = s_mx.relprintid BmstamtMX[it_mxbt].mxdscrp = s_mx.mxdscrp Bmstamt_mxsum += s_mx.ttakeamt Zqamt_mxsum += s_mx.tzqamt ext: IF rslt = 0 THEN p_clearmx() END IF Return(rslt) end function public function integer p_clearmx ();//int p_clearmx() //清除明细 it_mxbt=0 Bmstamt_mxsum = 0 Zqamt_mxsum = 0 return 1 end function public function integer uof_acceptmx_chk (s_bmstamtmx s_mx, ref string arg_msg);Int rslt = 1 GOTO ext ext: RETURN rslt end function public function integer auditing_cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0 Long i Int rslt = 1 Long ref_rapid DateTime null_dt SetNull(null_dt) 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 =2 THEN If sys_option_msttake_takeamt_secaudit = 0 Then Update u_Bmstamt Set auditemp = '', auditdate = :null_dt, flag = 0, secemp = '', secdate = :null_dt, secflag = 0 Where u_Bmstamt.Baid = :arg_billid And flag = 1; Else Update u_Bmstamt Set auditemp = '', auditdate = :null_dt, flag = 0 Where Baid = :arg_billid And flag = 1 And secflag = 0; End If END IF 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 //兼容二级审模式 . 使用二级审时,本撤审只更新标记。使用一级审,本撤审同时删除相关出纳。 //uof_auditing_cancel_end中没有代码。出纳代码在 uof_secauditing_cancel_end If sys_option_msttake_takeamt_secaudit = 0 Then If uof_secauditing_cancel_end(arg_msg) = 0 Then rslt = 0 Goto ext End If End If //If uof_auditing_cancel_end(arg_msg) = 0 Then // rslt = 0 // 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 uof_auditing_end (ref string arg_msg);return 1 //Long rslt = 1 //Long ll_relid_ref //Long i //Long ll_itemid //Long ref_dateint //Decimal lde_oriamt, lde_msttakeamt, lde_takeamt //String ls_about //DateTime ldt_zqdate //String ls_dscrp // //uo_musttake uo_take //uo_take = Create uo_musttake // //uo_salebill uo_bill_s //uo_bill_s = Create uo_salebill // //uo_mustpay uo_pay //uo_pay = Create uo_mustpay // //uo_buybill uo_bill_b //uo_bill_b = Create uo_buybill // //uo_iteminput uo_item //uo_item = Create uo_iteminput // //DateTime ld_viewdate //SetNull(ld_viewdate) // //Int li_item_dfttype,li_itemflag //Decimal ld_takeamt //Long ll_moneyid_account // // //ls_dscrp = dscrp // //IF Trim(fpcode) <> '' THEN // ls_dscrp = ls_dscrp + ' 发票号:'+fpcode //END IF // //IF billtype = 0 THEN //生成客户收款, 对单 // IF sys_option_msttake_takeamt_secaudit = 0 THEN //两审一起进行,生成应收,出纳, 对单 // //1.生成已收帐 // s_bmsttake s_take // // s_take.scid = scid // s_take.cusid = cusid // s_take.takedate = BaDate // s_take.inrep = BaRep // s_take.oriamt = 0 - Bmstamt // s_take.msttakeamt = 0 // s_take.takeamt = Bmstamt // s_take.dscrp = ls_dscrp // s_take.billcode = BaCode // s_take.banktypeid = banktypeid // s_take.buildtype = 4 // s_take.opemp = publ_operator // s_take.outwareid = 0 // s_take.salebillid = 0 // s_take.viewdate = viewdate // s_take.accountsid = accountid // s_take.itemid = itemid // s_take.moneyid = moneyid // s_take.relcode = relcode // // 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 uo_take.add_takerec(s_take,arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // ll_relid_ref = uo_take.ref_takeid // // IF ll_relid_ref = 0 THEN // arg_msg = '错误的应收应付帐ID!' // rslt = 0 // GOTO ext // END IF // // UPDATE u_Bmstamt // SET relid = :ll_relid_ref // WHERE Baid = :Baid // And flag = 1; // IF sqlca.SQLCode <> 0 THEN // arg_msg = '更新单据资料失败,'+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // // IF it_mxbt > 0 THEN // //2.明细生成折扣金额(优惠款) // IF f_get_itemid(3, ll_itemid, arg_msg) = 0 THEN //查询默认销售优惠款项目 // rslt = 0 // GOTO ext // END IF // // // Bmstamt_mxsum = 0 // FOR i = 1 To it_mxbt // IF BmstamtMX[i].tzqamt <> 0 THEN // ls_about = BaCode + "折扣金额" // // IF sys_option_bmstamt_zqamt_date = 0 THEN // ldt_zqdate = BaDate // ELSE // // SELECT takedate INTO :ldt_zqdate FROM u_Bmsttake // Where scid = :scid And takeid = :BmstamtMX[i].takeid; // IF sqlca.SQLCode <> 0 THEN // arg_msg = '查询应收帐发生日期信息失败,'+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // END IF // // IF uo_take.add_takerecmx(scid,BmstamtMX[i].takeid,BaCode,ldt_zqdate,banktypeid,0 - BmstamtMX[i].tzqamt,0,& // publ_operator,ls_about,BaRep,3,0,ll_itemid,cusid, moneyid,arg_msg,False,relcode) = 0 THEN // rslt = 0 // GOTO ext // END IF // END IF // // IF BmstamtMX[i].ttakeamt <> 0 THEN // Bmstamt_mxsum += BmstamtMX[i].ttakeamt // END IF // // NEXT // // //3.明细(扣除折扣金额)与当前已收帐对单 // IF uo_bill_s.newbegin() = 0 THEN // arg_msg = '初始化对单失败' // rslt = 0 // GOTO ext // END IF // // uo_bill_s.opemp = publ_operator // uo_bill_s.takedate = BaDate // uo_bill_s.relcode = BaCode // uo_bill_s.inrep = publ_operator // uo_bill_s.banktypeid = banktypeid // uo_bill_s.dscrp = '客户收款结算单自动生成' // uo_bill_s.cusid = cusid // uo_bill_s.msttakeamt = 0 // uo_bill_s.takeamt = 0 // uo_bill_s.accountsid = accountid // uo_bill_s.itemid = itemid // uo_bill_s.buildtype = 1 // uo_bill_s.moneyid = moneyid // // // // //插入收款明细 // IF uo_bill_s.acceptmx(ll_relid_ref,& // BaCode,& // 0,& // 0 - Bmstamt_mxsum,& // 0 - Bmstamt,& // 0,& // Bmstamt,& // BaCode,& // arg_msg) = 0 THEN // arg_msg = '对数单插入已收明细失败,'+arg_msg // rslt = 0 // GOTO ext // END IF // // //插入应收明细 // FOR i = 1 To it_mxbt // // IF BmstamtMX[i].ttakeamt <> 0 THEN // SELECT oriamt, msttakeamt, takeamt // INTO :lde_oriamt, :lde_msttakeamt, :lde_takeamt // FROM U_Bmsttake // Where takeid = :BmstamtMX[i].takeid; // IF sqlca.SQLCode <> 0 THEN // arg_msg = '行:'+String(i)+'查询应收帐信息失败,'+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // // IF uo_bill_s.acceptmx(BmstamtMX[i].takeid,& // BmstamtMX[i].billcode,& // 0,& // BmstamtMX[i].ttakeamt,& // lde_oriamt,& // lde_msttakeamt,& // lde_takeamt,& // BmstamtMX[i].relcode,& // arg_msg) = 0 THEN // arg_msg = '对数单插入应收明细失败,'+arg_msg // rslt = 0 // GOTO ext // END IF // END IF // NEXT // // IF uo_bill_s.save_ds(arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // END IF // ELSE //IF sys_option_msttake_takeamt_secaudit = 0 THEN //初审出纳; 终审应收 // 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 // // CHOOSE CASE li_item_dfttype // CASE 1,3,4 // ld_takeamt = Bmstamt * li_itemflag // CASE ELSE // ld_takeamt = Bmstamt // END CHOOSE // // // IF sys_option_cusamt_dftdate = 0 THEN // ld_viewdate = BaDate // ELSE // ld_viewdate = viewdate // END IF // // s_iteminput s_input // // s_input.itemid = itemid // s_input.dateint = 0 // s_input.outdate = ld_viewdate // s_input.dscrp = dscrp // s_input.outamt = ld_takeamt // s_input.accountsid = accountid // s_input.banktypeid = banktypeid // s_input.billcode = BaCode // s_input.relcode = relcode // s_input.buildtype = 1 // s_input.opemp = publ_operator // s_input.relrep = '' // s_input.scid = scid // s_input.moneyid = moneyid // // IF uo_item.add_iteminput(s_input,arg_msg,False) = 0 THEN // arg_msg = '增加收支明细帐失败!~n' + arg_msg // rslt = 0 // GOTO ext // END IF // // ref_dateint = uo_item.ref_dateint // // IF ref_dateint = 0 THEN // arg_msg = '增加收支出纳明细帐失败!' // rslt = 0 // GOTO ext // END IF // // UPDATE u_Bmstamt // SET reldateint = :ref_dateint // WHERE Baid = :Baid // And flag = 1; // IF sqlca.SQLCode <> 0 THEN // arg_msg = '更新单据收支帐ID资料失败,'+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // END IF //ELSEIF billtype = 1 THEN //生成供应商付款, 对单 // // SELECT sptcode, name INTO :ls_code,:ls_name // // FROM u_spt // // Where sptid = :cusid; // // IF sqlca.SQLCode <> 0 THEN // // arg_msg = '查询供应商名称失败,可能供应商资料不存在' // // rslt = 0 // // GOTO ext // // END IF // // // ls_dscrp = dscrp // // //1.生成已付帐 // // s_bmstpay s_pay // s_pay.scid = scid // s_pay.sptid = cusid // s_pay.paydate = BaDate // s_pay.inrep = BaRep // s_pay.oriamt = 0 - Bmstamt // s_pay.mstpayamt = 0 // s_pay.payamt = Bmstamt // s_pay.dscrp = ls_dscrp // s_pay.billcode = BaCode // s_pay.banktypeid = banktypeid // s_pay.buildtype = 4 // s_pay.opemp = publ_operator // s_pay.inwareid = 0 // s_pay.buybillid = 0 // s_pay.accountsid = accountid // s_pay.itemid = itemid // s_pay.moneyid = moneyid // s_pay.relcode = relcode // s_pay.viewdate = viewdate // // IF uo_pay.add_payrec(s_pay,arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // // ll_relid_ref = uo_pay.ref_payid // // IF ll_relid_ref = 0 THEN // arg_msg = '错误的应收应付帐ID!' // rslt = 0 // GOTO ext // END IF // // UPDATE u_Bmstamt // SET relid = :ll_relid_ref // WHERE Baid = :Baid // And flag = 1; // IF sqlca.SQLCode <> 0 THEN // arg_msg = '更新单据资料失败,'+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // // IF it_mxbt > 0 THEN // //2.明细生成折扣金额(优惠款) // IF f_get_itemid(8, ll_itemid, arg_msg) = 0 THEN //查询默认采购优惠款项目 // rslt = 0 // GOTO ext // END IF // // // Bmstamt_mxsum = 0 // FOR i = 1 To it_mxbt // IF BmstamtMX[i].tzqamt <> 0 THEN // ls_about = BaCode + "折扣金额" // // IF sys_option_bmstamt_zqamt_date = 0 THEN // ldt_zqdate = BaDate // ELSE // // SELECT paydate INTO :ldt_zqdate FROM u_Bmstpay // Where scid = :scid And payid = :BmstamtMX[i].takeid; // IF sqlca.SQLCode <> 0 THEN // arg_msg = '查询应付帐发生日期信息失败,'+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // END IF // // IF uo_pay.add_payrecmx(scid,BmstamtMX[i].takeid,BaCode,BaDate,banktypeid,0 - BmstamtMX[i].tzqamt,0,& // publ_operator,ls_about,BaRep,3,0,ll_itemid,cusid, arg_msg,False,moneyid,relcode) = 0 THEN // rslt = 0 // GOTO ext // END IF // END IF // // IF BmstamtMX[i].ttakeamt <> 0 THEN // Bmstamt_mxsum += BmstamtMX[i].ttakeamt // END IF // // NEXT // // //3.明细(扣除折扣金额)与当前已付帐对单 // IF uo_bill_b.newbegin() = 0 THEN // arg_msg = '初始化对单失败' // rslt = 0 // GOTO ext // END IF // // uo_bill_b.opemp = publ_operator // uo_bill_b.paydate = BaDate // uo_bill_b.relcode = BaCode // uo_bill_b.inrep = publ_operator // uo_bill_b.banktypeid = banktypeid // uo_bill_b.dscrp = '供应商付款结算单自动生成' // uo_bill_b.sptid = cusid // uo_bill_b.mstpayamt = 0 // uo_bill_b.payamt = 0 // uo_bill_b.accountsid = accountid // uo_bill_b.itemid = itemid // uo_bill_b.buildtype = 1 // uo_bill_b.moneyid = moneyid // // // // //插入付款明细 // IF uo_bill_b.acceptmx(ll_relid_ref,& // BaCode,& // 0,& // 0 - Bmstamt_mxsum,& // 0 - Bmstamt,& // 0,& // Bmstamt,& // BaCode,& // arg_msg) = 0 THEN // arg_msg = '对数单插入已付明细失败,'+arg_msg // rslt = 0 // GOTO ext // END IF // // //插入应付明细 // FOR i = 1 To it_mxbt // // IF BmstamtMX[i].ttakeamt <> 0 THEN // SELECT oriamt, mstpayamt, payamt // INTO :lde_oriamt, :lde_msttakeamt, :lde_takeamt // FROM U_Bmstpay // Where payid = :BmstamtMX[i].takeid; // IF sqlca.SQLCode <> 0 THEN // arg_msg = '行:'+String(i)+'查询应付帐信息失败,'+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // // IF uo_bill_b.acceptmx(BmstamtMX[i].takeid,& // BmstamtMX[i].billcode,& // 0,& // BmstamtMX[i].ttakeamt,& // lde_oriamt,& // lde_msttakeamt,& // lde_takeamt,& // BmstamtMX[i].relcode,& // arg_msg) = 0 THEN // arg_msg = '对数单插入应付明细失败,'+arg_msg // rslt = 0 // GOTO ext // END IF // END IF // NEXT // // IF uo_bill_b.save_ds(arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // END IF //END IF //ext: //Destroy uo_take //Destroy uo_bill_s //Destroy uo_pay //Destroy uo_item //RETURN rslt // // // // // // // // // // // // end function public function integer uof_auditing_cancel_end (ref string arg_msg);return 1 //Long rslt = 1 //Long ll_relid_ref //Long i //Long ll_itemid //Decimal lde_oriamt, lde_msttakeamt, lde_takeamt // Long ll_listno // String ls_about // //uo_musttake uo_take //uo_take = Create uo_musttake // //uo_salebill uo_bill_s //uo_bill_s = Create uo_salebill // //uo_mustpay uo_pay //uo_pay = Create uo_mustpay // //uo_buybill uo_bill_b //uo_bill_b = Create uo_buybill // //uo_iteminput uo_item //uo_item = Create uo_iteminput // ////DateTime ld_viewdate ////SetNull(ld_viewdate) // ////Int li_item_dfttype,li_itemflag ////Decimal ld_takeamt //Long ll_moneyid_account // //Long ll_salebillid //IF billtype = 0 THEN //生成客户收款, 对单 // IF sys_option_msttake_takeamt_secaudit = 0 THEN // IF it_mxbt > 0 THEN // //1.删除对数单 // SELECT salebillid // INTO :ll_salebillid // FROM u_salebill // WHERE relcode = :BaCode // And dscrp = '客户收款结算单自动生成'; // IF sqlca.SQLCode <> 0 THEN // arg_msg = "查询对应对数单失败,"+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // // // IF uo_bill_s.del(ll_salebillid, arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // // // //2.删除明细优惠 // FOR i = 1 To it_mxbt // IF BmstamtMX[i].tzqamt <> 0 THEN // ls_about = BaCode + "折扣金额" // // SELECT listno // INTO :ll_listno // FROM U_BmsttakeMX // WHERE takeid = :BmstamtMX[i].takeid // AND dscrp = :ls_about // And billcode = :BaCode; // IF sqlca.SQLCode <> 0 THEN // arg_msg = "查询应收明细对应的折扣金额应收帐失败,"+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // // IF uo_take.del_takerecmx (2,BmstamtMX[i].takeid, ll_listno,arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // END IF // // NEXT // END IF // // //3.删除已收帐 // IF uo_take.del_takerec (scid,1,relid, cusid, arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // ELSE //IF sys_option_msttake_takeamt_secaudit = 0 THEN // IF secflag = 1 THEN // arg_msg = '客户收款结算单已终审,不能操作' // rslt = 0 // GOTO ext // END IF // // IF uo_item.del_iteminput(itemid,reldateint,1,arg_msg,False) = 0 THEN // arg_msg = '删除收支明细帐失败!~n' + arg_msg // rslt = 0 // GOTO ext // END IF // END IF //ELSEIF billtype = 1 THEN //生成供应商付款, 对单 // IF secflag = 1 THEN // arg_msg = '供应商付款结算单已终审,不能操作' // rslt = 0 // GOTO ext // END IF // // IF it_mxbt > 0 THEN // //1.删除对数单 // SELECT buybillid // INTO :ll_salebillid // FROM u_buybill // WHERE relcode = :BaCode // And dscrp = '供应商付款结算单自动生成'; // IF sqlca.SQLCode <> 0 THEN // arg_msg = "查询对应对数单失败,"+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // // // IF uo_bill_b.del(ll_salebillid, arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // // // //2.删除明细优惠 // FOR i = 1 To it_mxbt // IF BmstamtMX[i].tzqamt <> 0 THEN // ls_about = BaCode + "折扣金额" // // SELECT listno // INTO :ll_listno // FROM U_BmstpayMX // WHERE payid = :BmstamtMX[i].takeid // AND dscrp = :ls_about // And billcode = :BaCode; // IF sqlca.SQLCode <> 0 THEN // arg_msg = "查询应付明细对应的折扣金额应付帐失败,"+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // // IF uo_pay.del_payrecmx (2,BmstamtMX[i].takeid, ll_listno,arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // END IF // // NEXT // END IF // // //3.删除已付帐 // IF uo_pay.del_payrec (scid,1,relid, cusid, arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF // //END IF //ext: //Destroy uo_take //Destroy uo_pay //Destroy uo_item //destroy uo_bill_s //destroy uo_bill_b //RETURN rslt // // // // // // // // // end function public function integer uof_secauditing_end (ref string arg_msg);Long rslt = 1 Long ll_relid_ref Long i ,ll_i Long ll_itemid Long ref_dateint uo_iteminput uo_item uo_item = Create uo_iteminput uo_item.ib_CreateRapmoneyid = False uo_rapmoney uo_money uo_money = Create uo_rapmoney uo_money.commit_transaction = sqlca IF Baid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF getinfo(Baid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF //更新其他应收单 已收金额 Decimal lde_msttaskamt,lde_msttask_finishamt FOR ll_i = 1 To it_mxbt lde_msttaskamt = 0 lde_msttask_finishamt = 0 SELECT u_income_expenses.amt,u_income_expenses.finish_amt INTO :lde_msttaskamt,:lde_msttask_finishamt From u_income_expenses Where scid = :BmstamtMX[ll_i].scid And billid = :BmstamtMX[ll_i].takeid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询其他应收单据相关信息失败 ~n"+sqlca.SQLErrText GOTO ext END IF IF IsNull(lde_msttaskamt) THEN lde_msttaskamt = 0 IF IsNull(lde_msttask_finishamt) THEN lde_msttask_finishamt = 0 IF lde_msttask_finishamt + BmstamtMX[ll_i].Ttakeamt > lde_msttaskamt THEN rslt = 0 arg_msg = '第' + String(ll_i) + '行,其他应收单据金额:' + String(lde_msttaskamt,'#,##0.00') + ' < ' + '已收金额:' + String(lde_msttask_finishamt,'#,##0.00') + ' + 本次收款金额:' + String( BmstamtMX[ll_i].Ttakeamt,'#,##0.00') GOTO ext END IF UPDATE u_income_expenses SET finish_amt = finish_amt + :BmstamtMX[ll_i].Ttakeamt From u_income_expenses Where scid = :BmstamtMX[ll_i].scid And billid = :BmstamtMX[ll_i].takeid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询其他应收单据相关信息失败 ~n"+sqlca.SQLErrText GOTO ext END IF NEXT //生成收入支出账 s_iteminput s_input s_input.itemid = itemid s_input.dateint = 0 s_input.outdate = BaDate s_input.dscrp = dscrp s_input.outamt = Bmstamt s_input.accountsid = accountid s_input.banktypeid = banktypeid s_input.billcode = BaCode s_input.relcode = relcode s_input.buildtype = 1 s_input.opemp = publ_operator s_input.relrep = BaRep s_input.scid = scid s_input.moneyid = moneyid IF uo_item.add_iteminput(s_input,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF ref_dateint = uo_item.ref_dateint UPDATE u_Bmstamt SET reldateint = :ref_dateint WHERE Baid = :Baid And scid = :scid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新单据收入支出账标记相关信息失败 ~n"+sqlca.SQLErrText GOTO ext END IF //生成出纳帐 Decimal ld_msttakeamt,ld_takeamt Long ref_rapid ld_msttakeamt = Bmstamt ld_takeamt = 0 s_rap_money s_rap s_rap.accountsid = accountid s_rap.takedate = BaDate s_rap.inrep = BaRep s_rap.dscrp = dscrp s_rap.msttakeamt = ld_msttakeamt s_rap.takeamt = ld_takeamt s_rap.billcode = BaCode s_rap.relcode = relcode s_rap.buildtype = 1 s_rap.dcflag = 0 s_rap.relid = 0 s_rap.opemp = publ_operator 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 ref_rapid = uo_money.ref_rapid IF ref_rapid = 0 THEN arg_msg = '增加出纳明细帐失败!' rslt = 0 GOTO ext END IF UPDATE u_Bmstamt SET relrapid = :ref_rapid WHERE Baid = :Baid And scid = :scid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新单据出纳账标记审核操作失败 ~n"+sqlca.SQLErrText GOTO ext END IF ext: Destroy uo_item Destroy uo_money // RETURN rslt end function public function integer uof_secauditing_cancel_end (ref string arg_msg);Long rslt = 1 Long ll_relid_ref Long i,ll_i Long ll_itemid Long ref_dateint uo_iteminput uo_item uo_item = Create uo_iteminput uo_item.ib_CreateRapmoneyid = False uo_rapmoney uo_money uo_money = Create uo_rapmoney uo_money.commit_transaction = sqlca IF Baid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF getinfo(Baid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF //更新其他应收单 已收金额 Decimal lde_msttaskamt,lde_msttask_finishamt FOR ll_i = 1 To it_mxbt lde_msttaskamt = 0 lde_msttask_finishamt = 0 SELECT u_income_expenses.amt,u_income_expenses.finish_amt INTO :lde_msttaskamt,:lde_msttask_finishamt From u_income_expenses Where scid = :BmstamtMX[ll_i].scid And billid = :BmstamtMX[ll_i].takeid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询其他应收单据相关信息失败 ~n"+sqlca.SQLErrText GOTO ext END IF IF IsNull(lde_msttaskamt) THEN lde_msttaskamt = 0 IF IsNull(lde_msttask_finishamt) THEN lde_msttask_finishamt = 0 IF lde_msttask_finishamt - BmstamtMX[ll_i].Ttakeamt < 0 THEN rslt = 0 arg_msg = '第' + String(ll_i) + '行,已收金额:' + String(lde_msttask_finishamt,'#,##0.00') + ' - 本次收款金额:' + String( BmstamtMX[ll_i].Ttakeamt,'#,##0.00') + ' < 0' GOTO ext END IF UPDATE u_income_expenses SET finish_amt = finish_amt - :BmstamtMX[ll_i].Ttakeamt From u_income_expenses Where scid = :BmstamtMX[ll_i].scid And billid = :BmstamtMX[ll_i].takeid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询其他应收单据相关信息失败 ~n"+sqlca.SQLErrText GOTO ext END IF NEXT IF uo_item.del_iteminput(itemid,reldateint,1,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF UPDATE u_Bmstamt SET reldateint = 0 WHERE Baid = :Baid And scid = :scid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新单据收入支出账标记相关信息失败 ~n"+sqlca.SQLErrText GOTO ext END IF IF uo_money.del_raprec(relrapid,accountid,1,arg_msg,False) = 0 THEN arg_msg = '删除出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF UPDATE u_Bmstamt SET relrapid = 0 WHERE Baid = :Baid And scid = :scid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新单据出纳账标记审核操作失败 ~n"+sqlca.SQLErrText GOTO ext END IF ext: Destroy uo_item Destroy uo_money // RETURN rslt end function public function integer audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg); Int rslt = 1,cnt = 0 IF arg_billid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF p_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 cwauditingflag = 1 THEN rslt = 0 arg_msg = "单据已经总账审核" GOTO ext END IF UPDATE u_bmstamt SET cwauditingflag = 1, cwauditingdate = getdate(), cwauditingrep = :publ_operator WHERE ( u_bmstamt.Baid = :arg_billid ) Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致总账审核操作失败"+"~n"+sqlca.SQLErrText ROLLBACK Using sqlca; GOTO ext END IF ext: IF arg_ifcommit And rslt = 1 THEN COMMIT Using sqlca; END IF Return (rslt) end function public function integer c_audit_subject (long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg); Int rslt = 1,cnt = 0 IF arg_billid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF p_getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF cwauditingflag = 0 THEN rslt = 0 arg_msg = "单据没有总账审核" GOTO ext END IF UPDATE u_bmstamt SET cwauditingflag = 0, cwauditingdate =null, cwauditingrep = '' WHERE ( u_bmstamt.Baid = :arg_billid ) Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致总账撤审操作失败"+"~n"+sqlca.SQLErrText ROLLBACK Using sqlca; GOTO ext END IF ext: IF arg_ifcommit And rslt = 1 THEN COMMIT Using sqlca; END IF Return (rslt) end function public function integer p_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_Bmstamt.scid, u_Bmstamt.cusid, u_Bmstamt.banktypeid, u_Bmstamt.accountid, u_Bmstamt.BaDate, u_Bmstamt.Bmstamt, u_Bmstamt.dscrp, u_Bmstamt.flag, u_Bmstamt.BaCode, u_Bmstamt.billtype, u_Bmstamt.relid, u_Bmstamt.itemid, u_Bmstamt.BaRep, u_Bmstamt.moneyid, u_Bmstamt.mrate, u_Bmstamt.confirmflag, u_Bmstamt.relcode, u_Bmstamt.secflag, u_Bmstamt.secemp, u_Bmstamt.secdate, u_Bmstamt.fpcode, reldateint, relrapid, viewdate, zqamt, u_Bmstamt.cwauditingflag, u_Bmstamt.cwauditingrep, u_Bmstamt.cwauditingdate INTO :scid, :cusid, :banktypeid, :accountid, :BaDate, :Bmstamt, :dscrp, :flag, :BaCode, :billtype, :relid, :itemid, :BaRep, :moneyid, :mrate, :confirmflag, :relcode, :secflag, :secemp, :secdate, :fpcode, :reldateint, :relrapid, :viewdate, :zqamt, :cwauditingflag, :cwauditingrep, :cwauditingdate FROM u_Bmstamt Where u_Bmstamt.Baid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询数据操作失败,收据'+sqlca.SQLErrText GOTO ext END IF Baid = arg_billid ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function long getinfo (long arg_billid, ref string arg_msg);Int rslt = 1 long i = 1, no_mxcheck IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误的单据id' GOTO ext END IF IF p_getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF //用游标读取明细 DECLARE cur_bamx CURSOR FOR SELECT printid, scid, takeid, takedate, msttakeamt, takeamt, Zqamt, Ttakeamt, TZqamt, billid, billcode, relid, relcode, relprintid, mxdscrp FROM u_Bmstamtmx Where Baid = :arg_billid; OPEN cur_bamx; FETCH cur_bamx INTO :BmstamtMX[i].printid, :BmstamtMX[i].scid, :BmstamtMX[i].takeid, :BmstamtMX[i].takedate, :BmstamtMX[i].msttakeamt, :BmstamtMX[i].takeamt, :BmstamtMX[i].Zqamt, :BmstamtMX[i].Ttakeamt, :BmstamtMX[i].TZqamt, :BmstamtMX[i].billid, :BmstamtMX[i].billcode, :BmstamtMX[i].relid, :BmstamtMX[i].relcode, :BmstamtMX[i].relprintid, :BmstamtMX[i].mxdscrp; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_bamx INTO :BmstamtMX[i].printid, :BmstamtMX[i].scid, :BmstamtMX[i].takeid, :BmstamtMX[i].takedate, :BmstamtMX[i].msttakeamt, :BmstamtMX[i].takeamt, :BmstamtMX[i].Zqamt, :BmstamtMX[i].Ttakeamt, :BmstamtMX[i].TZqamt, :BmstamtMX[i].billid, :BmstamtMX[i].billcode, :BmstamtMX[i].relid, :BmstamtMX[i].relcode, :BmstamtMX[i].relprintid, :BmstamtMX[i].mxdscrp; LOOP CLOSE cur_bamx; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck FROM u_Bmstamtmx Where Baid = :arg_billid; 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 Baid = arg_billid it_MXBT = i - 1 it_newbegin=FALSE it_updatebegin=FALSE ext: IF rslt = 0 THEN p_reset() RETURN rslt end function on uo_cusamt_other.create call super::create TriggerEvent( this, "constructor" ) end on on uo_cusamt_other.destroy TriggerEvent( this, "destructor" ) call super::destroy end on