$PBExportHeader$uo_cusamt.sru forward global type uo_cusamt from nonvisualobject end type end forward global type uo_cusamt from nonvisualobject end type global uo_cusamt uo_cusamt type variables PUBLIC PROTECTEDWRITE Long cusmonid //自动增量id PUBLIC PROTECTEDWRITE String cusmoncode //罚款单的唯一编号 PUBLIC PROTECTEDWRITE DateTime opdate //建立时间,自动 PUBLIC PROTECTEDWRITE String opemp //建立人 PUBLIC PROTECTEDWRITE DateTime moddate //修改时间,自动 PUBLIC PROTECTEDWRITE String modemp //修改人 PUBLIC PROTECTEDWRITE Int flag = 0 //审核标志 PUBLIC PROTECTEDWRITE DateTime auditingdate //审核时间 PUBLIC PROTECTEDWRITE String auditingrep //审核操作员 PUBLIC PROTECTEDWRITE Int 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 cusdate Decimal cusamt String dscrp Int billtype Long itemid Long refrapid Long reldateint String cusrep 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//修改标志 end variables forward prototypes public function integer p_reset () public function integer save (ref string arg_msg, boolean arg_ifcommit) public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg) public function integer newbegin (long arg_scid, ref string arg_msg) public function integer del (long arg_scid, long arg_billid, ref string arg_msg) public function integer auditing (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer confirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer cconfirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer add_dscrp (long arg_cusmonid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer 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 getinfo (long arg_billid, 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) end prototypes public function integer p_reset ();//INT p_RESET() //清除对象及其明细 banktypeid = 0 cusmonid = 0 cusmoncode = '' opemp = '' auditingrep = '' flag = 0 cusid = 0 cusamt = 0 dscrp = '' itemid = 0 billtype = 0 cusrep = '' moneyid = 0 accountid = 0 scid = 0 it_newbegin = FALSE it_updatebegin = FALSE RETURN 1 end function public function integer save (ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i DateTime server_dt Long ls_newid String ls_sccode Long ll_moneyid_account IF IsNull(cusid) THEN cusid = 0 IF IsNull(accountid) THEN accountid = 0 IF IsNull(dscrp) THEN dscrp = '' IF IsNull(cusamt) THEN cusamt = 0 IF IsNull(scid) THEN scid = 0 IF IsNull(billtype) THEN billtype = 0 IF IsNull(itemid) THEN itemid = 0 IF IsNull(cusrep) THEN cusrep = '' IF IsNull(moneyid) THEN moneyid = 0 IF IsNull(mrate) THEN mrate = 0 IF IsNull(relcode) THEN relcode = '' IF IsNull(fpcode) THEN fpcode = '' IF accountid = 0 THEN arg_msg = '请选择帐号' rslt = 0 GOTO ext END IF SELECT moneyid INTO :ll_moneyid_account FROM u_accounts Where accountsid = :accountid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询帐号币种失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0 IF ll_moneyid_account = 0 THEN arg_msg = '帐号币种未指定,请检查' rslt = 0 GOTO ext END IF IF billtype = 0 THEN if sys_option_msttake_takeamt_secaudit = 0 then // IF cusid = 0 THEN arg_msg = '请先选择客户' rslt = 0 GOTO ext END IF SELECT count(*) INTO :cnt FROM u_cust Where cusid = :cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询客户资料失败' rslt = 0 GOTO ext END IF IF cnt > 1 THEN arg_msg = '客户资料重复' rslt = 0 GOTO ext END IF END IF ELSE IF cusid = 0 THEN arg_msg = '请先选择供应商' rslt = 0 GOTO ext END IF SELECT count(*) INTO :cnt FROM u_spt Where sptid = :cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询供应商资料失败' rslt = 0 GOTO ext END IF IF cnt > 1 THEN arg_msg = '供应商资料重复' rslt = 0 GOTO ext END IF END IF IF moneyid = 0 THEN arg_msg = '请选择币种' rslt = 0 GOTO ext END IF IF mrate <= 0 THEN arg_msg = '请输入币种汇率' rslt = 0 GOTO ext END IF IF moneyid <> ll_moneyid_account AND mrate = 1 THEN arg_msg = '收款币种与帐号币种不相同,汇率不能设为1' rslt = 0 GOTO ext END IF IF moneyid = ll_moneyid_account AND mrate <> 1 THEN arg_msg = '收款币种与帐号币种相同,汇率要设为1' rslt = 0 GOTO ext END IF IF f_check_inoutdate(0,cusdate,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 = 0 AND ll_itemflag = -1 THEN arg_msg = '客户收款单,不能选择核算支出方向的收支项目' rslt = 0 GOTO ext END IF IF billtype = 1 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 cusamt = 0 THEN arg_msg = '请输入正确的金额' rslt = 0 GOTO ext END IF SELECT Top 1 getdate() INTO :server_dt FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF Year(Date(cusdate)) < 2000 OR IsNull(cusdate) THEN rslt = 0 arg_msg = "时间不合理" GOTO ext END IF ////////////////////////////////////////////////开始区分:新建/更新 处理 IF cusmonid = 0 THEN //新建 ls_newid = f_sys_scidentity(0,"u_cusamt","cusmonid",arg_msg,TRUE,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 = 0 THEN//客户收款单 cusmoncode = getid(0,ls_sccode + "SK",Date(server_dt),TRUE,sqlca) //取得新单据编号 ELSE//供应商付款单 cusmoncode = getid(0,ls_sccode + "FK",Date(server_dt),TRUE,sqlca) //取得新单据编号 END IF IF cusmoncode = "err" THEN cusmoncode = '' rslt = 0 arg_msg = "无法获取单据编号" GOTO ext END IF INSERT INTO u_cusamt ( scid, cusmonid, cusmoncode, cusdate, cusid, cusamt, dscrp, opdate, opemp, accountid, banktypeid, billtype, itemid, cusrep, moneyid, mrate, viewdate, relcode, fpcode) VALUES ( :scid, :ls_newid, :cusmoncode, :cusdate, :cusid, :cusamt, :dscrp, getdate(), :publ_operator, :accountid, :banktypeid, :billtype, :itemid, :cusrep, :moneyid, :mrate, :viewdate, :relcode, :fpcode); IF sqlca.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(sqlca.SQLErrText),'PK_u_cusamt') > 0 THEN arg_msg = '插入操作失败,关键字单据ID重复' ELSE arg_msg = "插入操作失败"+"~n"+sqlca.SQLErrText END IF GOTO ext END IF cusmonid = ls_newid ELSE //////////////////////////////////////////////////更新 UPDATE u_cusamt SET cusdate = :cusdate, cusid = :cusid, cusamt = :cusamt, dscrp = :dscrp, moddate = getdate(), modemp = :publ_operator, cusmoncode = :cusmoncode, scid = :scid, accountid = :accountid, banktypeid = :banktypeid, itemid = :itemid, cusrep = :cusrep, moneyid = :moneyid, mrate = :mrate, viewdate = :viewdate, relcode = :relcode, fpcode = :fpcode Where cusmonid = :cusmonid; IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN rslt = 0 arg_msg = "更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF END IF it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF Return(rslt) end function public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg);//==================================================================== // 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 cusmonid = 0 arg_msg = '错误的单据ID' goto ext end if select u_cusamt.cusmonid, u_cusamt.cusmoncode, u_cusamt.cusid, u_cusamt.cusamt, u_cusamt.dscrp , u_cusamt.cusdate, u_cusamt.scid, u_cusamt.accountid, u_cusamt.flag into :cusmonid, :cusmoncode, :cusid, :cusamt, :dscrp, :cusdate, :scid, :accountid, :flag from u_cusamt where cusmonid = :arg_billid; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '查询数据操作失败,单据'+sqlca.sqlerrtext goto ext end if if flag = 1 then rslt = 0 arg_msg = '单据已经审核,不可以修改' goto ext end if cusmonid = arg_billid scid = arg_scid it_newbegin = false it_updatebegin = true ext: if rslt = 0 then p_reset() return rslt end function public function integer newbegin (long arg_scid, ref string arg_msg);int rslt = 1 if arg_scid < 0 then arg_msg = '请选择分部' rslt = 0 goto ext end if p_reset() scid=arg_scid it_newbegin=TRUE it_updatebegin=FALSE ext: if rslt = 0 then p_reset() return rslt end function public function integer del (long arg_scid, long arg_billid, ref string arg_msg);//==================================================================== // 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_cusamt.flag INTO :flag FROM u_cusamt Where u_cusamt.cusmonid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询收款单操作失败' GOTO ext END IF IF flag = 1 THEN rslt = 0 arg_msg = "单据已经审核,不可以删除" GOTO ext END IF DELETE FROM u_cusamt Where u_cusamt.cusmonid = :arg_billid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF 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_code, ls_name, ls_custype String ls_dscrp Long ll_moneyid_account uo_musttake uo_take uo_mustpay uo_pay uo_take = Create uo_musttake uo_pay = Create uo_mustpay uo_iteminput uo_item uo_item = Create uo_iteminput 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 = 0 And sys_option_msttake_takeamt_secaudit = 0 THEN UPDATE u_cusamt SET audopemp = :publ_operator, audopdate = getdate(), flag = 1, secemp = :publ_operator, secdate = getdate(), secflag = 1 WHERE u_cusamt.cusmonid = :arg_billid And flag = 0; ELSE UPDATE u_cusamt SET audopemp = :publ_operator, audopdate = getdate(), flag = 1 WHERE u_cusamt.cusmonid = :arg_billid And flag = 0; 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 DateTime ld_viewdate //SetNull(ld_viewdate) Int li_item_dfttype,li_itemflag Decimal ld_takeamt IF billtype = 0 THEN //客户收款单 IF cusid > 0 THEN SELECT cuscode, name, custype INTO :ls_code, :ls_name, :ls_custype FROM u_cust Where cusid = :cusid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询客户名称失败,可能客户资料不存在' rslt = 0 GOTO ext END IF ELSE ls_code = '' ls_name = '' END IF ls_dscrp = dscrp if trim(fpcode) <> '' then ls_dscrp = ls_dscrp + ' 发票号:'+fpcode end if s_bmsttake s_take s_take.scid = scid s_take.cusid = cusid s_take.takedate = cusdate s_take.inrep = cusrep s_take.oriamt = 0 - cusamt s_take.msttakeamt = 0 s_take.takeamt_cn = cusamt s_take.takeamt = cusamt * mrate s_take.dscrp = ls_dscrp s_take.billcode = cusmoncode s_take.banktypeid = banktypeid s_take.buildtype = 4 s_take.opemp = arg_opemp 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.moneyid_cn = ll_moneyid_account s_take.relcode = relcode IF sys_option_msttake_takeamt_secaudit = 0 THEN //两审一起进行,生成应收,出纳 IF cusid = 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 uo_take.add_takerec(s_take,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF ref_rapid = uo_take.ref_takeid IF ref_rapid = 0 THEN arg_msg = '错误的应收应付帐ID!' rslt = 0 GOTO ext END IF UPDATE u_cusamt SET refrapid = :ref_rapid WHERE cusmonid = :arg_billid And flag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新单据资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE //IF sys_option_msttake_takeamt_secaudit = 0 THEN //初审出纳; 终审应收 IF ls_code <> '' THEN ls_dscrp = ls_code+ ' ' + ls_name + ' ' + ls_custype + ' '+dscrp if trim(fpcode) <> '' then ls_dscrp = ls_dscrp + ' 发票号:'+fpcode end if END IF SELECT dfttype,itemflag INTO :li_item_dfttype,:li_itemflag FROM u_itemdef Where u_itemdef.itemid = :s_take.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 = s_take.takeamt * li_itemflag CASE ELSE ld_takeamt = s_take.takeamt END CHOOSE IF sys_option_cusamt_dftdate = 0 THEN ld_viewdate = s_take.takedate ELSE ld_viewdate = s_take.viewdate END IF s_iteminput s_input s_input.itemid = s_take.itemid s_input.dateint = 0 s_input.outdate = ld_viewdate s_input.dscrp = ls_dscrp s_input.outamt = ld_takeamt s_input.accountsid = s_take.accountsid s_input.banktypeid = s_take.banktypeid s_input.billcode = s_take.billcode s_input.relcode = s_take.relcode s_input.buildtype = 1 s_input.opemp = publ_operator s_input.relrep = '' s_input.scid = s_take.scid s_input.moneyid = s_take.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_cusamt SET reldateint = :ref_dateint WHERE cusmonid = :arg_billid And flag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新单据收支帐ID资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ELSE //供应商付款单 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 // if ls_code <> '' then // ls_dscrp = ls_code + ' '+ls_name + ' '+dscrp // else ls_dscrp = dscrp // end if // DateTime null_plandate // SetNull(null_plandate) if trim(fpcode) <> '' then ls_dscrp = ls_dscrp + ' 发票号:'+fpcode end if s_bmstpay s_pay s_pay.scid = scid s_pay.sptid = cusid s_pay.paydate = cusdate s_pay.inrep = cusrep s_pay.oriamt = 0 - cusamt s_pay.mstpayamt = 0 s_pay.payamt = cusamt * mrate s_pay.dscrp = ls_dscrp s_pay.billcode = cusmoncode s_pay.banktypeid = banktypeid s_pay.buildtype = 4 s_pay.opemp = arg_opemp 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 ref_rapid = uo_pay.ref_payid IF ref_rapid = 0 THEN arg_msg = '错误的应收应付帐ID!' rslt = 0 GOTO ext END IF UPDATE u_cusamt SET refrapid = :ref_rapid WHERE cusmonid = :arg_billid And flag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新单据资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF flag = 1 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Destroy uo_take Destroy uo_pay Destroy uo_item RETURN rslt end function public function integer c_auditing (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) uo_musttake uo_take uo_mustpay uo_pay uo_take = CREATE uo_musttake uo_pay = CREATE uo_mustpay uo_iteminput uo_item uo_item = CREATE uo_iteminput IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF cwauditingflag = 1 THEN rslt = 0 arG_MSG = "该单据已经总账审核,不能撤审" GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = '单据未审核,不可以再撤审' GOTO ext END IF IF billtype = 0 AND sys_option_msttake_takeamt_secaudit = 0 THEN UPDATE u_cusamt SET audopemp = '', audopdate = :null_dt, flag = 0, secemp = '', secdate = :null_dt, secflag = 0 WHERE cusmonid = :arg_billid AND flag = 1; //AND secflag = 1; //为了兼容之前的单 111130 lhd ELSE UPDATE u_cusamt SET audopemp = '', audopdate = :null_dt, flag = 0 WHERE u_cusamt.cusmonid = :arg_billid AND flag = 1 AND secflag = 0; 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 billtype = 0 THEN //客户收款 IF sys_option_msttake_takeamt_secaudit = 0 THEN IF uo_take.del_takerec(scid,1,refrapid,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 ELSE //供应商付款 IF secflag = 1 THEN arg_msg = '供应商付款已终审,不能操作' rslt = 0 GOTO ext END IF IF uo_pay.del_payrec(scid,1,refrapid,cusid,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF END IF flag = 0 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF DESTROY uo_take DESTROY uo_pay DESTROY uo_item 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_cusamt SET confirmemp = :publ_operator, confirmdate = getdate(), confirmflag = 1 WHERE u_cusamt.cusmonid = :arg_billid AND confirmflag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致确认单据操作失败,"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在确认,请稍后查询,"+"~n"+sqlca.SQLErrText GOTO ext END IF confirmflag = 1 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer cconfirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0 Int rslt = 1 datetime null_dt setnull(null_dt) IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF confirmflag = 0 THEN rslt = 0 arg_msg = '单据未确认,不可以反确认' GOTO ext END IF UPDATE u_cusamt SET confirmemp = '', confirmdate = :null_dt, confirmflag = 0 WHERE u_cusamt.cusmonid = :arg_billid AND confirmflag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致反确认单据操作失败,"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在反确认,请稍后查询,"+"~n"+sqlca.SQLErrText GOTO ext END IF confirmflag = 0 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer add_dscrp (long arg_cusmonid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart) //0 fail 1 SUCCESS Int rslt = 1 arg_newdescppart = Trim(arg_newdescppart) IF it_updatebegin OR it_newbegin THEN rslt = 0 arG_MSG = "编辑状态下不可用" GOTO ext END IF IF getinfo(arg_cusmonid,arG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arG_MSG = "非审核状态下不可用" GOTO ext END IF UPDATE u_cusamt SET DSCRP = ltrim(rtrim(DSCRP))+' '+:arg_newdescppart Where u_cusamt.cusmonid = :arg_cusmonid; IF SQLCA.SQLCode <> 0 THEN rslt = 0 arG_MSG = "因网络或其它原因导致添加单据备注操作失败"+"~n"+SQLCA.SQLErrText GOTO ext END IF 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 uo_musttake uo_take uo_take = Create uo_musttake If getinfo(arg_billid,arg_msg) = 0 Then rslt = 0 Goto ext End If If flag = 0 Then rslt = 0 arg_msg = '单据未初审,不可以终审' Goto ext End If If secflag = 1 Then rslt = 0 arg_msg = '单据已经审核,不可以再审核' Goto ext End If Update u_cusamt Set secemp = :publ_operator, secdate = getdate(), secflag = 1 Where u_cusamt.cusmonid = :arg_billid And flag = 1 And secflag = 0 ; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = "因网络或其它原因导致最终审核单据操作失败,"+"~n"+sqlca.SQLErrText Goto ext ElseIf sqlca.SQLNRows = 0 Then rslt = 0 arg_msg = "单据正在审核,请稍后查询,"+"~n"+sqlca.SQLErrText Goto ext End If If billtype = 0 Then If sys_option_msttake_takeamt_secaudit = 1 Then String ls_dscrp,ls_code,ls_name,ls_custype DateTime ld_viewdate Long ll_moneyid_account Long ref_rapid,ll_rapmoneyid Select cuscode, name,custype Into :ls_code,:ls_name, :ls_custype From u_cust Where cusid = :cusid; If sqlca.SQLCode <> 0 Then arg_msg = '查询客户名称失败,可能客户资料不存在' rslt = 0 Goto ext End If If ls_code <> '' Then ls_dscrp = ls_code+ ' ' + ls_name + ' ' + ls_custype + ' '+dscrp If Trim(fpcode) <> '' Then ls_dscrp = ls_dscrp + ' 发票号:'+fpcode End If Else ls_dscrp = dscrp End If Update u_iteminput Set dscrp = :ls_dscrp Where dateint = :reldateint; If sqlca.SQLCode <> 0 Then arg_msg = '更新摘要失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If Select rapmoneyid Into :ll_rapmoneyid From u_iteminput Where dateint = :reldateint; If sqlca.SQLCode <> 0 Then arg_msg = '查找出纳账ID失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If Update u_rap_money Set dscrp = :ls_dscrp Where rapmoneyid = :ll_rapmoneyid; If sqlca.SQLCode <> 0 Then arg_msg = '更新出纳账摘要失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If s_bmsttake s_take s_take.scid = scid s_take.cusid = cusid s_take.takedate = cusdate s_take.inrep = cusrep s_take.oriamt = 0 - Round(cusamt,sys_saleamt_round) s_take.msttakeamt = 0 // s_take.takeamt_cn = round(cusamt,sys_saleamt_round) s_take.takeamt = Round(cusamt ,sys_saleamt_round) //* mrate s_take.dscrp = ls_dscrp s_take.billcode = cusmoncode s_take.banktypeid = banktypeid s_take.buildtype = 4 s_take.opemp = arg_opemp s_take.outwareid = 0 s_take.salebillid = 0 s_take.viewdate = ld_viewdate s_take.accountsid = accountid s_take.itemid = itemid s_take.moneyid = moneyid // s_take.moneyid_cn = ll_moneyid_account 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 ref_rapid = uo_take.ref_takeid If ref_rapid = 0 Then arg_msg = '错误的应收应付帐ID!' rslt = 0 Goto ext End If Update u_cusamt Set refrapid = :ref_rapid Where cusmonid = :arg_billid And flag = 1 And secflag = 1; If sqlca.SQLCode <> 0 Then arg_msg = '更新单据资料失败,'+sqlca.SQLErrText rslt = 0 Goto ext End If End If End If flag = 1 secflag = 1 ext: If rslt = 0 Then Rollback; ElseIf rslt = 1 And arg_ifcommit Then Commit; End If Destroy uo_take Return rslt end function public function integer c_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1 DateTime null_dt SetNull(null_dt) uo_musttake uo_take uo_take = Create uo_musttake IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF cwauditingflag = 1 THEN rslt = 0 arG_MSG = "该单据已经总账审核,不能撤审" GOTO ext END IF IF secflag = 0 THEN rslt = 0 arg_msg = '单据未审核,不可以再撤审' GOTO ext END IF UPDATE u_cusamt SET secemp = '', secdate = :null_dt, secflag = 0 WHERE u_cusamt.cusmonid = :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 billtype = 0 THEN IF sys_option_msttake_takeamt_secaudit = 1 THEN IF uo_take.del_takerec(scid,1,refrapid,cusid,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF 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_cusamt SET cusid = :arg_cusid WHERE u_cusamt.cusmonid = :arg_billid AND flag = 1 AND secflag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致单据客户资料操作失败,"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在更新单据客户资料,请稍后查询,"+"~n"+sqlca.SQLErrText GOTO ext END IF cusid = arg_cusid ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer getinfo (long arg_billid, ref string arg_msg);Int rslt = 1 IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误的单据id' GOTO ext END IF SELECT u_cusamt.scid, u_cusamt.cusid, u_cusamt.banktypeid, u_cusamt.accountid, u_cusamt.cusdate, u_cusamt.cusamt, u_cusamt.dscrp, u_cusamt.flag, u_cusamt.cusmoncode, u_cusamt.billtype, u_cusamt.refrapid, u_cusamt.itemid, u_cusamt.cusrep, u_cusamt.moneyid, u_cusamt.mrate, u_cusamt.confirmflag, u_cusamt.relcode, u_cusamt.secflag, u_cusamt.secemp, u_cusamt.secdate, reldateint, viewdate, u_cusamt.fpcode, u_cusamt.cwauditingflag, u_cusamt.cwauditingrep, u_cusamt.cwauditingdate INTO :scid, :cusid, :banktypeid, :accountid, :cusdate, :cusamt, :dscrp, :flag, :cusmoncode, :billtype, :refrapid, :itemid, :cusrep, :moneyid, :mrate, :confirmflag, :relcode, :secflag, :secemp, :secdate, :reldateint, :viewdate, :fpcode, :cwauditingflag, :cwauditingrep, :cwauditingdate FROM u_cusamt Where u_cusamt.cusmonid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询数据操作失败,收据'+sqlca.SQLErrText GOTO ext END IF cusmonid = arg_billid ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer 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 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_cusamt SET cwauditingflag = 1, cwauditingdate = getdate(), cwauditingrep = :publ_operator WHERE ( u_cusamt.cusmonid = :arg_billid ) AND ( u_cusamt.scid = :arg_scid) 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 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_cusamt SET cwauditingflag = 0, cwauditingdate =null, cwauditingrep = '' WHERE ( u_cusamt.cusmonid = :arg_billid ) AND ( u_cusamt.scid = :arg_scid) 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 on uo_cusamt.create call super::create TriggerEvent( this, "constructor" ) end on on uo_cusamt.destroy TriggerEvent( this, "destructor" ) call super::destroy end on