123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503 |
- $PBExportHeader$uo_musttake.sru
- forward
- global type uo_musttake from nonvisualobject
- end type
- type delmx from structure within uo_musttake
- end type
- end forward
- type delmx from structure
- long takeid
- long listno
- end type
- global type uo_musttake from nonvisualobject
- end type
- global uo_musttake uo_musttake
- type variables
- Long ref_takeid = 0
- Int uo_option_msttake_takeamt_secaudit
- Int uo_option_m_msttake
- int uo_option_msttake_balc
- end variables
- forward prototypes
- public function integer del_takerecmx (integer arg_del, long arg_takeid, long arg_listno, ref string arg_msg, boolean arg_ifcommit)
- public function integer salebill_del_mx (long arg_salebillid, ref string arg_msg, boolean arg_ifcommit)
- public function integer del_takerec (long arg_scid, integer arg_del, long arg_takeid, long arg_cusid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_takerec (s_bmsttake arg_s_take, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_takerecmx (s_bmsttakemx arg_s_takemx, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_mod_dscrp (long arg_takeid, string arg_dscrp, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_mod_viewdate (long arg_takeid, datetime arg_viewdate, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_fpamt (long arg_takeid, s_bmsttake_fpmx arg_s_mx[], ref string arg_msg, boolean arg_ifcommit)
- public function integer del_fpamt (long arg_takeid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer del_takerecmx (integer arg_del, long arg_takeid, long arg_listno, ref string arg_msg, boolean arg_ifcommit);//删除应收帐
- //del_TAKErecmx(arg_del,arg_takeid,arg_listno,arg_msg,arg_ifcommit)
- //arg_del 0:手动删除,1:应收帐删除,2:收入单删除
- Int rslt = 1 ,cnt = 0
- Long buildtype = 0
- Decimal msttakeamt,takeamt,msttakeamt_rmb,takeamt_rmb
- DateTime null_datetime
- SELECT count(*)
- INTO :cnt
- FROM u_bmstTAKEmx
- WHERE u_bmstTAKEmx.takeid = :arg_takeid
- AND u_bmstTAKEmx.listno = :arg_listno;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询操作失败,应收明细帐唯一码'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '错误应收明细帐唯一码'
- rslt = 0
- GOTO ext
- END IF
- SELECT buildtype,msttakeamt,takeamt,msttakeamt_rmb,takeamt_rmb
- INTO :buildtype,:msttakeamt,:takeamt,:msttakeamt_rmb,:takeamt_rmb
- FROM u_bmstTAKEmx
- WHERE u_bmstTAKEmx.takeid = :arg_takeid
- AND u_bmstTAKEmx.listno = :arg_listno;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "查询应收明细帐失败,请重试!"+'~n'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_del = 0 THEN
- IF buildtype <> 0 THEN
- arg_msg = '系统自动建立的应收明细帐不可以删除'
- rslt = 0
- GOTO ext
- END IF
- END IF
- SetNull(null_datetime)
- UPDATE U_bmstTAKE
- SET msttakeamt = msttakeamt - :msttakeamt,
- takeamt = takeamt - :takeamt,
- msttakeamt_rmb = msttakeamt_rmb - :msttakeamt_rmb,
- takeamt_rmb = takeamt_rmb - :takeamt_rmb,
- finishflag = 0,
- finishdate = :null_datetime,
- finishflag_rmb = 0,
- finishdate_rmb = :null_datetime
- Where U_bmstTAKE.takeid = :arg_takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应收帐金额失败,请重试>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- DELETE U_bmstTAKEmx
- WHERE u_bmstTAKEmx.takeid = :arg_takeid
- AND u_bmstTAKEmx.listno = :arg_listno;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "删除应收明细帐操作失败,请重试!"+'~n'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer salebill_del_mx (long arg_salebillid, ref string arg_msg, boolean arg_ifcommit);//根据收入单删除应收帐明细
- //salebill_del_mx(arg_salebillid,arg_msg,arg_ifcommit)
- delmx del_mx[]
- long it_mxt
- long ls_takeid,ls_listno,i
- int rslt=1
- DECLARE listno_cur CURSOR FOR
- SELECT U_BmsttakeMX.Takeid,
- U_BmsttakeMX.listno
- FROM U_BmsttakeMX
- WHERE salebillid=:arg_salebillid;
- open listno_cur;
- fetch listno_cur into :ls_takeid,:ls_listno;
- do while sqlca.sqlcode=0
- it_mxt++
- del_mx[it_mxt].takeid=ls_takeid
- del_mx[it_mxt].listno=ls_listno
- fetch listno_cur into :ls_takeid,:ls_listno;
- loop
- close listno_cur;
- if it_mxt=0 then
- rslt=1
- goto ext
- else
- for i=1 to it_mxt
- if del_takerecmx (2,del_mx[i].takeid, del_mx[i].listno,arg_msg,false)=0 then
- rslt=0
- goto ext
- end if
- next
- end if
- ext:
- if rslt=0 then
- rollback;
- elseif rslt=1 and arg_ifcommit then
- commit;
- end if
- return rslt
- end function
- public function integer del_takerec (long arg_scid, integer arg_del, long arg_takeid, long arg_cusid, ref string arg_msg, boolean arg_ifcommit);//删除应收帐
- //del_TAKErec(arg_takeid,arg_cusid,arg_msg,arg_ifcommit)
- //1 判断是否有当前客户
- //2 判断这个ID是否当前客户的最后一个明细记录。
- //3 删除最后一行的记录行,失败回滚,成功提交。
- Int rslt = 1 ,cnt = 0,li_finishflag
- Long maxid = 0
- Long buildtype = 0
- Long ls_buildtype
- Long ll_ctmint
- Decimal ls_msttakeamt,ls_takeamt
- Long ll_itemid,ll_dateint
- Long ll_printid_fp[]
- Long ll_mxbt,ll_i
- Long ll_relrapid,ll_accountsid
- datetime ldt_lastdate
- ll_mxbt = 1
- If uo_option_msttake_takeamt_secaudit = -1000 Then
- rslt = 0
- arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- If uo_option_msttake_balc = -1000 Then
- rslt = 0
- arg_msg = '选项:[391]应收帐使用结帐功能,读取初始默认值失败,操作取消!'
- Goto ext
- End If
- DateTime ld_ctdatetime,ld_takedate
- uo_iteminput uo_item
- uo_item = Create uo_iteminput
- uo_rapmoney uo_money
- uo_money = Create uo_rapmoney
- Select count(*)
- Into :cnt
- From u_CUST
- Where u_CUST.CUSid = :arg_CUSid ;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询操作失败,客户唯一码'
- rslt = 0
- Goto ext
- End If
- If cnt = 0 Then
- arg_msg = '错误客户唯一码'
- rslt = 0
- Goto ext
- End If
- Select buildtype,
- msttakeamt,
- takeamt,
- itemid,
- rapmoneyid,
- takedate,
- ctmint,
- finishflag,
- relrapid,
- accountsid
- Into :ls_buildtype,
- :ls_msttakeamt,
- :ls_takeamt,
- :ll_itemid,
- :ll_dateint,
- :ld_takedate,
- :ll_ctmint,
- :li_finishflag,
- :ll_relrapid,
- :ll_accountsid
- From u_bmsttake
- Where u_bmsttake.takeid = :arg_takeid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = "查询应收帐建立类型失败,请重试!"+'~n'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If ll_ctmint > 0 Then
- arg_msg = '该记录资料已被截数,不能处理'
- rslt = 0
- Goto ext
- End If
- If (ls_buildtype = 1 Or ls_buildtype = 4) And arg_del = 0 Then
- arg_msg = '系统自动建立的应收帐不可以删除'
- rslt = 0
- Goto ext
- End If
- //检查结帐日期
- If uo_option_msttake_balc = 1 Then
- Select top 1 balcdate
- Into :ldt_lastdate
- From u_money_balc
- Where billtype = 0
- Order By balcdate Desc;
- If sqlca.SQLCode = 0 Then
- If ld_takedate < ldt_lastdate Then
- rslt = 0
- arg_msg = '最近应收结帐日为:'+String(ldt_lastdate,'yyyy-mm-dd')+',不能删除发生日期为 '+String(ld_takedate,'yyyy-mm-dd')+' 的数据'
- Goto ext
- End If
- End If
- End If
- cnt = 0
- Select count(*) Into :cnt From u_bmsttakemx
- Where takeid = :arg_takeid
- And buildtype = 2;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询应收帐明细帐失败'
- rslt = 0
- Goto ext
- End If
- If cnt > 0 Then
- arg_msg = '该应帐记录已存在明细帐记录,不能删除>>如果要删除,请先删除明细帐'
- rslt = 0
- Goto ext
- End If
- If ls_buildtype <> 5 Then
- //********删除收支帐
- If ls_takeamt <> 0 Then
- If uo_item.del_iteminput(ll_itemid,ll_dateint,1,arg_msg,False) = 0 Then
- arg_msg = '删除收支明细帐失败!~n' + arg_msg
- rslt = 0
- Goto ext
- End If
- End If
-
- //删除出纳帐
- If ll_relrapid > 0 And ls_buildtype <> 4 Then
- If uo_money.del_raprec(ll_relrapid,ll_accountsid,1,arg_msg,False) = 0 Then
- arg_msg = '删除出纳明细帐失败!~n' + arg_msg
- rslt = 0
- Goto ext
- End If
- End If
- End If
- If ls_buildtype = 0 Then
- Declare cur_fpmx Cursor For
- Select printid
- From u_bmsttake_fpmx
- Where takeid = :arg_takeid;
-
-
- Open cur_fpmx;
- Fetch cur_fpmx Into :ll_printid_fp[ll_mxbt];
- Do While sqlca.SQLCode = 0
- ll_mxbt++
- Fetch cur_fpmx Into :ll_printid_fp[ll_mxbt];
- Loop
-
- Close cur_fpmx;
-
- For ll_i = 1 To ll_mxbt - 1
- If del_fpamt(arg_takeid,ll_printid_fp[ll_i],arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
- Next
-
- End If
- Delete U_bmstTAKEmx
- Where u_bmsttakemx.takeid = :arg_takeid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = "删除应收明细帐操作失败,请重试!"+'~n'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- Delete U_bmstTAKE
- Where u_bmsttake.takeid = :arg_takeid;
- If sqlca.SQLCode <> 0 Then
- arg_msg = "删除应收帐操作失败,请重试!"+'~n'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit;
- End If
- Destroy uo_money
- Return rslt
- end function
- public function integer add_takerec (s_bmsttake arg_s_take, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- DateTime server_datetime
- Long ls_newtakeid
- Long ref_dateint
- String ls_cusname
- Int li_item_dfttype,li_itemflag
- Decimal ld_msttakeamt,ld_takeamt
- Long relrapid
- DateTime ldt_lastdate
- uo_rapmoney uo_money
- uo_money = Create uo_rapmoney
- IF uo_option_msttake_takeamt_secaudit = -1000 THEN
- rslt = 0
- arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_m_msttake = -1000 THEN
- rslt = 0
- arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_msttake_balc = -1000 THEN
- rslt = 0
- arg_msg = '选项:[391]应收帐使用结帐功能,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF IsNull(arg_s_take.dscrp) THEN arg_s_take.dscrp = ''
- IF IsNull(arg_s_take.inrep) THEN arg_s_take.inrep = ''
- IF IsNull(arg_s_take.banktypeid) THEN arg_s_take.banktypeid = 0
- IF IsNull(arg_s_take.billcode) THEN arg_s_take.billcode = ''
- IF IsNull(arg_s_take.relcode) THEN arg_s_take.relcode = ''
- IF IsNull(arg_s_take.opemp) THEN arg_s_take.opemp = ''
- IF IsNull(arg_s_take.scid) THEN arg_s_take.scid = 0
- IF IsNull(arg_s_take.takeid) THEN arg_s_take.takeid = 0
- IF IsNull(arg_s_take.accountsid) THEN arg_s_take.accountsid = 0
- IF IsNull(arg_s_take.itemid) THEN arg_s_take.itemid = 0
- IF IsNull(arg_s_take.moneyid) THEN arg_s_take.moneyid = 0
- IF IsNull(arg_s_take.msttakeamt) THEN arg_s_take.msttakeamt = 0
- IF IsNull(arg_s_take.takeamt) THEN arg_s_take.takeamt = 0
- IF IsNull(arg_s_take.taskdscrp) THEN arg_s_take.taskdscrp = ''
- IF IsNull(arg_s_take.fpamt) THEN arg_s_take.fpamt = 0
- IF IsNull(arg_s_take.mrate) THEN arg_s_take.mrate = 1
- IF IsNull(arg_s_take.exchangeid) THEN arg_s_take.exchangeid = 0
- IF lena(arg_s_take.billcode) > 30 THEN arg_s_take.billcode = LeftA(arg_s_take.billcode,30)
- IF lena(arg_s_take.relcode) > 50 THEN arg_s_take.relcode = LeftA(arg_s_take.relcode,50)
- IF lena(arg_s_take.dscrp) > 255 THEN arg_s_take.dscrp = LeftA(arg_s_take.dscrp,255)
- uo_iteminput uo_item
- uo_item = Create uo_iteminput
- //检查结帐日期
- IF uo_option_msttake_balc = 1 THEN
- SELECT top 1 balcdate
- INTO :ldt_lastdate
- FROM u_money_balc
- WHERE billtype = 0
- Order By balcdate Desc;
- IF sqlca.SQLCode = 0 THEN
- IF arg_s_take.takedate < ldt_lastdate THEN
- rslt = 0
- arg_msg = '最近应收结帐日为:'+String(ldt_lastdate,'yyyy-mm-dd')+',不能再录入发生日期为 '+String(arg_s_take.takedate,'yyyy-mm-dd')+' 的数据'
- GOTO ext
- END IF
- END IF
- END IF
- cnt = 0
- SELECT count(*) Into :cnt From u_scdef Where scid = :arg_s_take.scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询分部资料失败!'
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '无效的分部,不存在该分部!'
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_datetime From u_user ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,系统时间"
- GOTO ext
- END IF
- IF Not (arg_s_take.buildtype = 0 Or &
- arg_s_take.buildtype = 1 Or &
- arg_s_take.buildtype = 4 Or &
- arg_s_take.buildtype = 5) THEN
- arg_msg = '错误建立类型,必须为:0-手工记帐;1-单据记帐;4-收款单记帐;5-冲帐'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_take.billcode = '' THEN
- arg_msg = '请输入凭证号码'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_take.takeamt <> 0 THEN
- IF uo_option_msttake_takeamt_secaudit = 1 And &
- arg_s_take.buildtype = 4 THEN
- ELSE
- IF f_check_inoutdate(-100,arg_s_take.takedate,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF f_check_inoutdate(0,arg_s_take.takedate,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF Trim(arg_s_take.inrep) = '' THEN
- arg_msg = '请输入经手人'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_take.buildtype <> 5 THEN
- IF arg_s_take.banktypeid = 0 THEN
- arg_msg = '没有结算方式'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_s_take.moneyid = 0 THEN
- arg_msg = '没有币种'
- rslt = 0
- GOTO ext
- END IF
- IF uo_option_m_msttake = 0 THEN
- IF arg_s_take.mrate = 0 THEN
- arg_msg = '不合理的汇率'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_s_take.msttakeamt = 0 And arg_s_take.takeamt = 0 THEN
- arg_msg = "应收金额与已收金额不能同时为0!"
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_take.oriamt <> arg_s_take.msttakeamt - arg_s_take.takeamt THEN
- arg_s_take.oriamt = arg_s_take.msttakeamt - arg_s_take.takeamt
- END IF
- SELECT name
- INTO :ls_cusname
- FROM u_cust
- Where u_cust.cusid = :arg_s_take.cusid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询操作失败,客户唯一码'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_s_take.opemp ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_currency
- Where moneyid = :arg_s_take.moneyid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,币种!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "币种资料未登记或已取消!"
- GOTO ext
- END IF
- IF arg_s_take.buildtype <> 5 THEN
- IF arg_s_take.accountsid > 0 THEN
- Long ll_moneyid
- SELECT moneyid INTO :ll_moneyid
- FROM u_accounts
- Where accountsid = :arg_s_take.accountsid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询出纳帐号对应币种资料失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_moneyid = 0 THEN
- arg_msg = '出纳帐号对应币种资料未设定'
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_moneyid <> arg_s_take.moneyid_cn THEN
- arg_msg = '币种资料与出纳帐号币种资料不相符,不能保存'
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- SELECT dfttype,itemflag
- INTO :li_item_dfttype,:li_itemflag
- FROM u_itemdef
- Where u_itemdef.itemid = :arg_s_take.itemid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询当前收支项目核算类型和核算方向失败!'
- rslt = 0
- GOTO ext
- END IF
-
- //加收支帐****************
- IF arg_s_take.takeamt_cn <> 0 THEN
-
- s_iteminput s_input
-
- s_input.itemid = arg_s_take.itemid
- s_input.dateint = 0
- s_input.outdate = arg_s_take.takedate
- s_input.dscrp = ls_cusname + ','+arg_s_take.dscrp
-
- //yyx20120427原
- // CHOOSE CASE li_item_dfttype
- // CASE 1,3,4
- // s_input.outamt = arg_s_take.takeamt_cn * li_itemflag
- // CASE ELSE
- // s_input.outamt = arg_s_take.takeamt_cn
- // END CHOOSE
- // If li_itemflag = 1 Then
- // s_input.outamt = arg_s_take.takeamt_cn
- // Else
- // s_input.outamt = arg_s_take.takeamt_cn * li_itemflag
- // End If
- // //
- s_input.inamt = arg_s_take.takeamt_cn
- s_input.outamt = 0
-
- s_input.accountsid = arg_s_take.accountsid
- s_input.banktypeid = arg_s_take.banktypeid
- s_input.billcode = arg_s_take.billcode
- s_input.relcode = arg_s_take.relcode
- s_input.opemp = arg_s_take.opemp
- s_input.relrep = arg_s_take.inrep
- s_input.scid = arg_s_take.scid
- s_input.buildtype = 1
-
-
- 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
- ELSE
- IF uo_option_msttake_takeamt_secaudit = 0 THEN
- arg_s_take.accountsid = 0
- END IF
- END IF
- //-----------------------------------------------------------------------
-
-
- //加出纳帐-------------------------- //
- IF arg_s_take.takeamt_cn <> 0 And arg_s_take.buildtype <> 4 THEN
-
- // If li_itemflag = 1 Then
- // ld_msttakeamt = arg_s_take.takeamt_cn
- // ld_takeamt = 0
- // Else
- // ld_msttakeamt = 0
- // //yyx20120427原ld_takeamt = arg_s_take.takeamt_cn
- // ld_takeamt = arg_s_take.takeamt_cn * li_itemflag
- // End If
-
- ld_msttakeamt = arg_s_take.takeamt_cn
- ld_takeamt = 0
-
- s_rap_money s_rap
-
- s_rap.accountsid = arg_s_take.accountsid
- s_rap.takedate = arg_s_take.takedate
- s_rap.inrep = arg_s_take.inrep
- s_rap.dscrp = ls_cusname + ','+arg_s_take.dscrp
- s_rap.msttakeamt = ld_msttakeamt
- s_rap.takeamt = ld_takeamt
- s_rap.billcode = arg_s_take.billcode
- s_rap.relcode = arg_s_take.relcode
- s_rap.buildtype = 1
- s_rap.dcflag = 0
- s_rap.relid = 0
- s_rap.opemp = arg_s_take.opemp
- s_rap.banktypeid = arg_s_take.banktypeid
- s_rap.scid = arg_s_take.scid
-
-
- IF uo_money.add_raprec(s_rap,arg_msg,False) = 0 THEN
- arg_msg = '增加出纳明细帐失败!~n' + arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- relrapid = uo_money.ref_rapid
- IF relrapid = 0 THEN
- arg_msg = '增加出纳明细帐失败!'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- ls_newtakeid = f_sys_scidentity(0,"u_bmsttake","takeid",arg_msg,True,id_sqlca)
- IF ls_newtakeid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
- INSERT INTO u_bmsttake
- ( scid,
- takeid,
- cusid,
- takedate,
- inrep,
- oriamt,
- msttakeamt,
- takeamt,
- oriamt_rmb,
- msttakeamt_rmb,
- takeamt_rmb,
- dscrp,
- billcode,
- relcode,
- banktypeid,
- buildtype,
- opdate,
- opemp,
- outwareid,
- viewdate,
- accountsid,
- rapmoneyid,
- itemid,
- moneyid,
- taskdscrp,
- fpamt,
- relrapid,
- mrate,
- exchangeid)
- VALUES (
- :arg_s_take.scid,
- :ls_newtakeid,
- :arg_s_take.cusid,
- :arg_s_take.takedate,
- :arg_s_take.inrep,
- :arg_s_take.oriamt,
- :arg_s_take.msttakeamt,
- :arg_s_take.takeamt,
- round(:arg_s_take.oriamt * :arg_s_take.mrate,2),
- round(:arg_s_take.msttakeamt * :arg_s_take.mrate,2),
- round(:arg_s_take.takeamt * :arg_s_take.mrate,2),
- :arg_s_take.dscrp,
- :arg_s_take.billcode,
- :arg_s_take.relcode,
- :arg_s_take.banktypeid,
- :arg_s_take.buildtype,
- :server_datetime,
- :arg_s_take.opemp,
- :arg_s_take.outwareid,
- :arg_s_take.viewdate,
- :arg_s_take.accountsid,
- :ref_dateint,
- :arg_s_take.itemid,
- :arg_s_take.moneyid,
- :arg_s_take.taskdscrp,
- :arg_s_take.fpamt,
- :relrapid,
- :arg_s_take.mrate,
- :arg_s_take.exchangeid) ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "向应收帐表插入应收记录失败,请重试!"+'~n'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- s_bmsttakemx s_takemx
- s_takemx.scid = arg_s_take.scid
- s_takemx.takeid = ls_newtakeid
- s_takemx.billcode = arg_s_take.billcode
- s_takemx.relcode = arg_s_take.relcode
- s_takemx.takedate = arg_s_take.takedate
- s_takemx.banktypeid = arg_s_take.banktypeid
- s_takemx.msttakeamt = arg_s_take.msttakeamt
- s_takemx.takeamt = arg_s_take.takeamt
- s_takemx.opemp = arg_s_take.opemp
- s_takemx.dscrp = arg_s_take.dscrp
- s_takemx.inrep = arg_s_take.inrep
- s_takemx.buildtype = 1
- s_takemx.salebillid = 0
- s_takemx.itemid = arg_s_take.itemid
- s_takemx.cusid = arg_s_take.cusid
- s_takemx.moneyid = arg_s_take.moneyid
- s_takemx.mrate = arg_s_take.mrate
- s_takemx.exchangeid = arg_s_take.exchangeid
- IF add_takerecmx(s_takemx,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ref_takeid = ls_newtakeid
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_money
- RETURN rslt
- end function
- public function integer add_takerecmx (s_bmsttakemx arg_s_takemx, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0,list_no
- DateTime server_datetime,null_datetime
- Decimal balcamt,balcamt_rmb
- IF IsNull(arg_s_takemx.dscrp) THEN arg_s_takemx.dscrp = ''
- IF IsNull(arg_s_takemx.inrep) THEN arg_s_takemx.inrep = ''
- IF IsNull(arg_s_takemx.banktypeid) THEN arg_s_takemx.banktypeid = 0
- IF IsNull(arg_s_takemx.billcode) THEN arg_s_takemx.billcode = ''
- IF IsNull(arg_s_takemx.relcode) THEN arg_s_takemx.relcode = ''
- IF IsNull(arg_s_takemx.opemp) THEN arg_s_takemx.opemp = ''
- IF IsNull(arg_s_takemx.scid) THEN arg_s_takemx.scid = 0
- IF IsNull(arg_s_takemx.itemid) THEN arg_s_takemx.itemid = 0
- IF IsNull(arg_s_takemx.cusid) THEN arg_s_takemx.cusid = 0
- IF IsNull(arg_s_takemx.msttakeamt) THEN arg_s_takemx.msttakeamt = 0
- IF IsNull(arg_s_takemx.takeamt) THEN arg_s_takemx.takeamt = 0
- IF IsNull(arg_s_takemx.moneyid) THEN arg_s_takemx.moneyid = 0
- IF IsNull(arg_s_takemx.mrate) THEN arg_s_takemx.mrate = 1
- IF IsNull(arg_s_takemx.exchangeid) THEN arg_s_takemx.exchangeid = 0
- arg_s_takemx.msttakeamt_rmb = round(arg_s_takemx.msttakeamt * arg_s_takemx.mrate,2)
- arg_s_takemx.takeamt_rmb = round(arg_s_takemx.takeamt * arg_s_takemx.mrate,2)
- cnt = 0
- SELECT count(*) Into :cnt From u_scdef Where scid = :arg_s_takemx.scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询分部资料失败!'
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '无效的分部,不存在该分部!'
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_datetime From u_user ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,系统时间"
- GOTO ext
- END IF
- IF Not (arg_s_takemx.buildtype = 0 Or &
- arg_s_takemx.buildtype = 1 Or &
- arg_s_takemx.buildtype = 2 Or &
- arg_s_takemx.buildtype = 3 Or &
- arg_s_takemx.buildtype = 4) THEN
- arg_msg = '错误建立类型,必须为:0-手工记帐;1-单据记帐;2-对数记帐;3-项目记帐;4-收款单记帐'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_takemx.billcode = '' THEN
- arg_msg = '请输入凭证号码'
- rslt = 0
- GOTO ext
- END IF
- IF Date(arg_s_takemx.takedate) <= 1990-01-01 THEN
- arg_msg = '错误发生日期'
- rslt = 0
- GOTO ext
- END IF
- IF Trim(arg_s_takemx.inrep) = '' THEN
- arg_s_takemx.inrep = '无'
- END IF
- IF arg_s_takemx.banktypeid = 0 THEN
- arg_msg = '没有结算方式(明细)'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_takemx.moneyid = 0 THEN
- arg_msg = '没有币种'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_currency
- Where moneyid = :arg_s_takemx.moneyid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,币种!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "币种资料未登记或已取消!"
- GOTO ext
- END IF
- IF arg_s_takemx.msttakeamt = 0 And arg_s_takemx.takeamt = 0 THEN
- arg_msg = "应收金额与已收金额不能同时为0!"
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_cust
- Where u_cust.cusid = :arg_s_takemx.cusid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '加应收帐明细时查询操作失败,客户唯一码'
- rslt = 0
- GOTO ext
- END IF
- //2 判断是否已经选择当前操作员
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_s_takemx.opemp ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,操作员!"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "操作员姓名未登记或已取消!"
- GOTO ext
- END IF
- IF arg_s_takemx.buildtype = 0 Or arg_s_takemx.buildtype = 2 Or arg_s_takemx.buildtype = 3 THEN
- SELECT max(listno) INTO :list_no FROM u_bmsttakemx
- Where takeid = :arg_s_takemx.takeid;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询应收明细帐最大编号失败>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 Or IsNull(list_no) THEN
- list_no = 0
- END IF
- list_no = list_no + 1
- ELSE
- list_no = 0
- END IF
- //3 向应收帐明细表插入新记录,失败则回滚
- INSERT INTO u_bmsttakemx
- (scid,
- takeid,
- listno,
- billcode,
- relcode,
- takedate,
- banktypeid,
- msttakeamt,
- takeamt,
- msttakeamt_rmb,
- takeamt_rmb,
- opdate,
- opemp,
- dscrp,
- inrep,
- buildtype,
- salebillid,
- itemid,
- cusid,
- moneyid,
- mrate,
- exchangeid)
- VALUES (
- :arg_s_takemx.scid,
- :arg_s_takemx.takeid,
- :list_no,
- :arg_s_takemx.billcode,
- :arg_s_takemx.relcode,
- :arg_s_takemx.takedate,
- :arg_s_takemx.banktypeid,
- :arg_s_takemx.msttakeamt,
- :arg_s_takemx.takeamt,
- :arg_s_takemx.msttakeamt_rmb,
- :arg_s_takemx.takeamt_rmb,
- :server_datetime,
- :arg_s_takemx.opemp,
- :arg_s_takemx.dscrp,
- :arg_s_takemx.inrep,
- :arg_s_takemx.buildtype,
- :arg_s_takemx.salebillid,
- :arg_s_takemx.itemid,
- :arg_s_takemx.cusid,
- :arg_s_takemx.moneyid,
- :arg_s_takemx.mrate,
- :arg_s_takemx.exchangeid) ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "向应收帐表插入应收明细帐记录失败,请重试!"+'~n'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_takemx.buildtype <> 1 THEN
- SELECT msttakeamt - takeamt,
- msttakeamt_rmb - takeamt_rmb
- INTO :balcamt,
- :balcamt_rmb
- FROM u_bmsttake
- Where takeid = :arg_s_takemx.takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询当前单据结余金额失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF balcamt <= 0 THEN
- IF arg_s_takemx.buildtype <> 3 And ( arg_s_takemx.takeamt - arg_s_takemx.msttakeamt) > 0 THEN
- arg_msg = '当前处理金额大于单据结余金额,请检查'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- If (arg_s_takemx.takeamt - arg_s_takemx.msttakeamt) > balcamt THEN
- arg_msg = '当前处理金额大于单据结余金额,请检查'
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- UPDATE u_bmsttake
- SET msttakeamt = msttakeamt + :arg_s_takemx.msttakeamt,
- takeamt = takeamt + :arg_s_takemx.takeamt,
- msttakeamt_rmb = msttakeamt_rmb + :arg_s_takemx.msttakeamt_rmb,
- takeamt_rmb = takeamt_rmb + :arg_s_takemx.takeamt_rmb
- Where takeid = :arg_s_takemx.takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应收帐应收已收款失败,请重试!'
- rslt = 0
- GOTO ext
- END IF
-
- IF balcamt = arg_s_takemx.takeamt - arg_s_takemx.msttakeamt THEN
- UPDATE u_bmsttake
- SET finishflag = 1,
- finishdate = :arg_s_takemx.takedate
- Where takeid = :arg_s_takemx.takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新原币应收帐结清标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- SetNull(null_datetime)
- UPDATE u_bmsttake
- SET finishflag = 0,
- finishdate = :null_datetime
- Where takeid = :arg_s_takemx.takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新原币应收帐结清标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF balcamt_rmb = arg_s_takemx.takeamt_rmb - arg_s_takemx.msttakeamt_rmb THEN
- UPDATE u_bmsttake
- SET finishflag_rmb = 1,
- finishdate_rmb = :arg_s_takemx.takedate
- Where takeid = :arg_s_takemx.takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新人民币应收帐结清标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE
- SetNull(null_datetime)
- UPDATE u_bmsttake
- SET finishflag_rmb = 0,
- finishdate_rmb = :null_datetime
- Where takeid = :arg_s_takemx.takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新人民币应收帐结清标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF arg_s_takemx.msttakeamt = arg_s_takemx.takeamt THEN
- UPDATE u_bmsttake
- SET finishflag = 1,
- finishdate = :arg_s_takemx.takedate
- Where takeid = :arg_s_takemx.takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新原币应收帐结清标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF arg_s_takemx.msttakeamt_rmb = arg_s_takemx.takeamt_rmb THEN
- UPDATE u_bmsttake
- SET finishflag_rmb = 1,
- finishdate_rmb = :arg_s_takemx.takedate
- Where takeid = :arg_s_takemx.takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新人民币应收帐结清标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_mod_dscrp (long arg_takeid, string arg_dscrp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_buildtype
- Long ll_rapmoneyid,ll_dateint
- Long ll_scid,ll_cusid
- String ls_dscrp_update
- String ls_billcode
- String ls_cusname
- SELECT rapmoneyid,buildtype,scid,cusid,billcode
- INTO :ll_dateint,:li_buildtype,:ll_scid,:ll_cusid,:ls_billcode
- FROM u_bmsttake
- Where takeid = :arg_takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询应收帐资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_buildtype <> 0 THEN
- arg_msg = '不是手动建立的资料,不能修改摘要'
- rslt = 0
- GOTO ext
- END IF
- SELECT name INTO :ls_cusname
- FROM u_cust
- Where cusid = :ll_cusid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询客户名称失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_bmsttake SET
- dscrp = :arg_dscrp
- Where takeid = :arg_takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应收帐摘要失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_bmsttakemx SET
- dscrp = :arg_dscrp
- WHERE takeid = :arg_takeid
- AND scid = :ll_scid
- AND buildtype = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应收明细帐摘要失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ll_dateint > 0 THEN
-
- ls_dscrp_update = ls_cusname + ','+ls_billcode+','+arg_dscrp
-
-
- SELECT rapmoneyid INTO :ll_rapmoneyid
- FROM u_iteminput
- Where dateint = :ll_dateint;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询费用帐资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_iteminput
- SET dscrp = :ls_dscrp_update
- Where dateint = :ll_dateint;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新费用帐摘要失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_rap_money
- SET dscrp = :ls_dscrp_update
- Where rapmoneyid = :ll_rapmoneyid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新出纳帐摘要失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_mod_viewdate (long arg_takeid, datetime arg_viewdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- UPDATE u_bmsttake SET
- viewdate = :arg_viewdate
- Where takeid = :arg_takeid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应收帐摘要失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer add_fpamt (long arg_takeid, s_bmsttake_fpmx arg_s_mx[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i
- Long ll_printid_max,ll_printid
- Select max(printid) Into :ll_printid_max
- From u_bmsttake_fpmx
- Where takeid = :arg_takeid;
- If sqlca.SQLCode <> 0 Then
- ll_printid_max = 0
- End If
- If IsNull(ll_printid_max) Then ll_printid_max = 0
- ll_printid = ll_printid_max
- For ll_i = 1 To UpperBound(arg_s_mx)
- If arg_s_mx[ll_i].Kind = 1 Then
- //订金
- Update u_saletask
- Set takedamt = takedamt + :arg_s_mx[ll_i].fpamt
- Where scid = :arg_s_mx[ll_i].scid
- And taskid = :arg_s_mx[ll_i].relid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新订单:'+arg_s_mx[ll_i].relbillcode+' 已收订金失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Else
- //余额
- Update u_saletask
- Set takeamt = takeamt + :arg_s_mx[ll_i].fpamt
- Where scid = :arg_s_mx[ll_i].scid
- And taskid = :arg_s_mx[ll_i].relid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新订单:'+arg_s_mx[ll_i].relbillcode+' 已收金额失败,'+sqlca.SQLErrText
- Goto ext
- End If
- End If
-
- ll_printid++
-
- Insert Into u_bmsttake_fpmx
- (takeid,
- printid,
- relid,
- relbillcode,
- fpamt,
- fpdate,
- fpemp,
- scid,
- kind)
- Values (:arg_takeid,
- :ll_printid,
- :arg_s_mx[ll_i].relid,
- :arg_s_mx[ll_i].relbillcode,
- :arg_s_mx[ll_i].fpamt,
- getdate(),
- :publ_operator,
- :arg_s_mx[ll_i].scid,
- :arg_s_mx[ll_i].Kind);
- If sqlca.SQLCode <> 0 Then
- arg_msg = '插入应收帐分配明细失败,'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Update U_Bmsttake
- Set fpamt = fpamt + :arg_s_mx[ll_i].fpamt
- Where takeid = :arg_takeid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新应收帐已分配金额失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Next
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit;
- End If
- Return rslt
- end function
- public function integer del_fpamt (long arg_takeid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_fpamt
- Long ll_scid,ll_relid
- Int li_kind
- String ls_relbillcode
- Select fpamt,scid,relid,relbillcode,kind
- Into :ld_fpamt,:ll_scid,:ll_relid,:ls_relbillcode,:li_kind
- From u_bmsttake_fpmx
- Where takeid = :arg_takeid
- And printid = :arg_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询明细分配信息失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If li_kind = 1 Then
- Update u_saletask
- Set takedamt = takedamt - :ld_fpamt
- Where scid = :ll_scid
- And taskid = :ll_relid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新订单:'+ls_relbillcode+' 已收订金失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Else
- Update u_saletask
- Set takeamt = takeamt - :ld_fpamt
- Where scid = :ll_scid
- And taskid = :ll_relid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新订单:'+ls_relbillcode+' 已收金额失败,'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Update U_Bmsttake
- Set fpamt = fpamt - :ld_fpamt
- Where takeid = :arg_takeid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新应收帐已分配金额失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Delete From u_bmsttake_fpmx
- Where takeid = :arg_takeid
- And printid = :arg_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除订单金额分配记录失败,'+sqlca.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit;
- End If
- Return rslt
- end function
- on uo_musttake.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_musttake.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;
- String str_optionvalue,arg_msg
- f_get_sys_option_value('139',str_optionvalue,arg_msg)
- uo_option_msttake_takeamt_secaudit = Long(str_optionvalue)
- f_get_sys_option_value('045',str_optionvalue,arg_msg)
- uo_option_m_msttake = Long(str_optionvalue)
- f_get_sys_option_value('391',str_optionvalue,arg_msg)
- uo_option_msttake_balc = Long(str_optionvalue)
- end event
|