123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563 |
- $PBExportHeader$uo_mustpay.sru
- forward
- global type uo_mustpay from nonvisualobject
- end type
- type delmx from structure within uo_mustpay
- end type
- end forward
- type delmx from structure
- long payid
- long listno
- end type
- global type uo_mustpay from nonvisualobject
- end type
- global uo_mustpay uo_mustpay
- type variables
- long ref_payid = 0
- end variables
- forward prototypes
- public function integer del_payrecmx (integer arg_del, long arg_payid, long arg_listno, ref string arg_msg, boolean arg_ifcommit)
- public function integer buybill_del_mx (long arg_buybillid, ref string arg_msg, boolean arg_ifcommit)
- public function integer del_payrec (long arg_scid, integer arg_del, long arg_payid, long arg_sptid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_payrec (long arg_scid, long arg_sptid, datetime arg_paydate, string arg_inrep, decimal arg_oriamt, decimal arg_mstpayamt, decimal arg_payamt, string arg_dscrp, string arg_billcode, long arg_banktypeid, integer arg_buildtype, string arg_opemp, long arg_inwareid, long arg_buybillid, ref string arg_msg, boolean arg_ifcommit, datetime arg_viewdate, long arg_accountsid, long arg_itemid, long arg_moneyid, string arg_relcode)
- public function integer add_payrecmx (long arg_scid, long arg_payid, string arg_billcode, datetime arg_paydate, long arg_banktypeid, decimal arg_mstpayamt, decimal arg_payamt, string arg_opemp, string arg_dscrp, string arg_inrep, integer arg_buildtype, long arg_buybillid, long arg_itemid, long arg_sptid, ref string arg_msg, boolean arg_ifcommit, long arg_moneyid, string arg_relcode)
- public function integer add_payrecmx (ref s_bmstpay arg_s_mx, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_payrec (ref s_bmstpay arg_s_mx, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer del_payrecmx (integer arg_del, long arg_payid, long arg_listno, ref string arg_msg, boolean arg_ifcommit);//删除应收帐
- //del_payrecmx(arg_del,arg_payid,arg_listno,arg_msg,arg_ifcommit)
- //arg_del 0:手动删除,1:应付帐删除,2:支出单删除;3:采购单删除
- Int rslt = 1
- long cnt = 0
- Long buildtype = 0
- Decimal mstpayamt,payamt
- DateTime null_datetime
- SELECT count(*)
- INTO :cnt
- FROM u_bmstpaymx
- WHERE u_bmstpaymx.payid = :arg_payid
- AND u_bmstpaymx.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,mstpayamt,payamt
- INTO :buildtype,:mstpayamt,:payamt
- FROM u_bmstpaymx
- WHERE u_bmstpaymx.payid = :arg_payid
- AND u_bmstpaymx.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_bmstpay
- SET mstpayamt = mstpayamt - :mstpayamt,
- payamt = payamt - :payamt,
- finishflag = 0,
- finishdate = :null_datetime
- Where U_bmstpay.payid = :arg_payid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应付帐金额失败,请重试>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- DELETE U_bmstpaymx
- WHERE u_bmstpaymx.payid = :arg_payid
- AND u_bmstpaymx.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 buybill_del_mx (long arg_buybillid, ref string arg_msg, boolean arg_ifcommit);delmx del_mx[]
- Long it_mxt
- Long ls_payid,ls_listno,i
- Int rslt = 1
- DECLARE listno_cur CURSOR FOR
- SELECT U_BmstpayMX.payid,
- U_BmstpayMX.listno
- FROM U_BmstpayMX
- Where buybillid = :arg_buybillid;
- OPEN listno_cur;
- FETCH listno_cur Into :ls_payid,:ls_listno;
- DO WHILE sqlca.SQLCode = 0
- it_mxt++
- del_mx[it_mxt].payid = ls_payid
- del_mx[it_mxt].listno = ls_listno
- FETCH listno_cur Into :ls_payid,:ls_listno;
- LOOP
- CLOSE listno_cur;
- FOR i = 1 To it_mxt
- IF del_payrecmx (2,del_mx[i].payid, del_mx[i].listno,arg_msg,False) = 0 THEN
- rslt = 0
- 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_payrec (long arg_scid, integer arg_del, long arg_payid, long arg_sptid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- long cnt = 0
- Long maxid = 0
- Long buildtype = 0
- Decimal ls_mstpayamt,ls_payamt
- Long ll_itemid,ll_dateint
- Int ll_buildtype
- Long ll_ctmint
- DateTime ld_paydate
- uo_iteminput uo_item
- uo_item = Create uo_iteminput
- SELECT count(*)
- INTO :cnt
- FROM u_spt
- Where u_spt.sptid = :arg_sptid ;
- 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,
- mstpayamt,
- payamt,
- itemid,
- rapmoneyid,
- paydate,
- ctmint
- INTO :ll_buildtype,
- :ls_mstpayamt,
- :ls_payamt,
- :ll_itemid,
- :ll_dateint,
- :ld_paydate,
- :ll_ctmint
- FROM u_bmstpay
- Where u_bmstpay.payid = :arg_payid;
- 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 (ll_buildtype = 1 Or ll_buildtype = 4) And arg_del = 0 THEN
- arg_msg = '系统自动建立的应付帐不可以删除'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- IF ll_buildtype = 0 THEN //手动建立的,
- SELECT count(*) INTO :cnt FROM u_bmstpaymx
- WHERE payid = :arg_payid
- And (buildtype <> 0);
- ELSEIF ll_buildtype = 1 THEN //销售单据建立
- SELECT count(*) INTO :cnt FROM u_bmstpaymx
- WHERE payid = :arg_payid
- And (buildtype <> 1 And buildtype <> 3);
- ELSEIF ll_buildtype = 4 THEN //收款单据建立
- SELECT count(*) INTO :cnt FROM u_bmstpaymx
- WHERE payid = :arg_payid
- And (buildtype <> 4);
- ELSE
- SELECT count(*) INTO :cnt FROM u_bmstpaymx
- WHERE payid = :arg_payid
- And buildtype = 2;
- END IF
- 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_payamt <> 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
- DELETE U_bmstpaymx
- Where u_bmstpaymx.payid = :arg_payid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "删除应付明细帐操作失败,请重试!"+'~n'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- DELETE U_bmstpay
- Where u_bmstpay.payid = :arg_payid;
- 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 add_payrec (long arg_scid, long arg_sptid, datetime arg_paydate, string arg_inrep, decimal arg_oriamt, decimal arg_mstpayamt, decimal arg_payamt, string arg_dscrp, string arg_billcode, long arg_banktypeid, integer arg_buildtype, string arg_opemp, long arg_inwareid, long arg_buybillid, ref string arg_msg, boolean arg_ifcommit, datetime arg_viewdate, long arg_accountsid, long arg_itemid, long arg_moneyid, string arg_relcode);
- s_bmstpay s_pay
- s_pay.scid = arg_scid
- s_pay.sptid = arg_sptid
- s_pay.paydate = arg_paydate
- s_pay.inrep = arg_inrep
- s_pay.oriamt = arg_oriamt
- s_pay.mstpayamt = arg_mstpayamt
- s_pay.payamt = arg_payamt
- s_pay.dscrp = arg_dscrp
- s_pay.billcode = arg_billcode
- s_pay.banktypeid = arg_banktypeid
- s_pay.buildtype = arg_buildtype
- s_pay.opemp = arg_opemp
- s_pay.inwareid = arg_inwareid
- s_pay.buybillid = arg_buybillid
- s_pay.viewdate = arg_viewdate
- s_pay.accountsid = arg_accountsid
- s_pay.itemid = arg_itemid
- s_pay.moneyid = arg_moneyid
- s_pay.relcode = arg_relcode
- return add_payrec(s_pay,arg_msg,arg_ifcommit)
- //Int rslt = 1,cnt = 0
- //DateTime server_datetime
- //Long ls_newpayid
- //Long ref_dateint,li_native
- //String ls_sptname
- //Int li_item_dfttype,li_itemflag
- //Decimal ld_payamt
- //
- //uo_iteminput uo_item
- //uo_item = CREATE uo_iteminput
- //
- //IF IsNull(arg_dscrp) THEN arg_dscrp = ''
- //IF IsNull(arg_inrep) THEN arg_inrep = ''
- //IF IsNull(arg_banktypeid) THEN arg_banktypeid = 0
- //IF IsNull(arg_billcode) THEN arg_billcode = ''
- //IF IsNull(arg_opemp) THEN arg_opemp = ''
- //IF IsNull(arg_scid) THEN arg_scid = 0
- //IF IsNull(arg_accountsid) THEN arg_accountsid = 0
- //IF IsNull(arg_itemid) THEN arg_itemid = 0
- //IF IsNull(arg_moneyid) THEN arg_moneyid = 0
- //IF IsNull(arg_relcode) THEN arg_relcode = ''
- //
- ////未注册限制
- //IF sys_if_register = 0 THEN
- // Long ll_bill_count
- // SELECT count(*)
- // INTO :ll_bill_count
- // FROM U_Bmstpay;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "查询操作失败,应付帐数量 "
- // GOTO ext
- // END IF
- //
- // IF ll_bill_count > 80 THEN
- // rslt = 0
- // arg_msg = "未注册版本,应付帐只能保存30条记录!"
- // GOTO ext
- // END IF
- //END IF
- //
- //IF arg_moneyid <= 0 THEN
- // rslt = 0
- // arg_msg = '请选择币种.'
- // GOTO ext
- //END IF
- //
- //IF arg_itemid <= 0 THEN
- // rslt = 0
- // arg_msg = '请选择收支项目.'
- // GOTO ext
- //END IF
- ////1 判断新内容的合法性
- //IF Not (arg_buildtype = 0 OR arg_buildtype = 1 OR arg_buildtype = 4) THEN
- // arg_msg = '错误建立类型,必须为:0-手工记帐;1-单据记帐;4-付款单记账'
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF arg_billcode = '' THEN
- // arg_msg = '请输入凭证号码'
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF Date(arg_paydate) <= 1990-01-01 THEN
- // arg_msg = '错误发生日期'
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF Trim(arg_inrep) = '' THEN
- // arg_msg = '请输入经手人'
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //cnt = 0
- //SELECT count(*) INTO :cnt
- // FROM cw_banktype
- // Where banktypeid = :arg_banktypeid;
- //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_moneyid = 0 THEN
- //// arg_msg = '没有币种'
- //// rslt = 0
- //// GOTO ext
- ////END IF
- //
- //////币种
- ////cnt = 0
- ////SELECT count(*) INTO :cnt FROM cw_currency Where moneyid = :arg_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
- //
- //SELECT native INTO :li_native FROM cw_currency Where moneyid = :arg_moneyid;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询币种失败!'
- // GOTO ext
- //END IF
- //
- //////////
- //
- //
- //cnt = 0
- //SELECT count(*) INTO :cnt FROM u_scdef Where scid = :arg_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 arg_oriamt = 0 THEN
- // arg_msg = '请输入单据金额'
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //
- //IF arg_mstpayamt = 0 AND arg_payamt = 0 THEN
- // arg_msg = "应付金额与已付金额不能同时为0!"
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF arg_oriamt <> arg_mstpayamt - arg_payamt THEN
- // arg_oriamt = arg_mstpayamt - arg_payamt
- //END IF
- //
- ////2 判断是否已经选择当前客户和操作员
- //SELECT name
- // INTO :ls_sptname
- // FROM u_spt
- // Where u_spt.sptid = :arg_sptid ;
- //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_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
- //
- //Long ll_moneyid
- //
- ////****************加出纳帐
- //IF arg_payamt <> 0 THEN
- //
- // SELECT dfttype,itemflag
- // INTO :li_item_dfttype,:li_itemflag
- // FROM u_itemdef
- // Where u_itemdef.itemid = :arg_itemid;
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询当前付支项目核算类型和核算方向失败!'
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // CHOOSE CASE li_item_dfttype
- // CASE 2,5
- // ld_payamt = -1 * arg_payamt * li_itemflag
- // CASE ELSE
- // ld_payamt = arg_payamt
- // END CHOOSE
- //
- // IF uo_item.add_iteminput(arg_scid,arg_itemid,0,arg_paydate,ls_sptname +' '+arg_dscrp,ld_payamt,arg_accountsid,&
- // arg_msg,FALSE,arg_banktypeid,1,arg_billcode,arg_moneyid,arg_relcode) = 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
- // arg_accountsid = 0
- //END IF
- ////3 向应付帐表插入新记录,失败则回滚
- //ls_newpayid = f_sys_scidentity(0,"U_Bmstpay","payid",arg_msg,FALSE,sqlca)
- //IF ls_newpayid <= 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //INSERT INTO U_Bmstpay
- // ( scid,
- // payid,
- // sptid,
- // paydate,
- // inrep,
- // oriamt,
- // mstpayamt,
- // payamt,
- // Dscrp,
- // billcode,
- // banktypeid,
- // buildtype,
- // opdate,
- // opemp,
- // inwareid,
- // viewdate,
- // rapmoneyid,
- // accountsid,
- // itemid,
- // buybillid,
- // moneyid,
- // relcode)
- // VALUES ( :arg_scid,
- // :ls_newpayid,
- // :arg_sptid,
- // :arg_paydate,
- // :arg_inrep,
- // :arg_oriamt,
- // :arg_mstpayamt,
- // :arg_payamt,
- // :arg_dscrp,
- // :arg_billcode,
- // :arg_banktypeid,
- // :arg_buildtype,
- // :server_datetime,
- // :arg_opemp,
- // :arg_inwareid,
- // :arg_viewdate,
- // :ref_dateint,
- // :arg_accountsid,
- // :arg_itemid,
- // :arg_buybillid,
- // :arg_moneyid,
- // :arg_relcode) ;
- //IF sqlca.SQLCode <> 0 THEN
- //
- // IF Pos(Lower(sqlca.SQLErrText),'pk_U_Bmstpay') > 0 THEN
- // arg_msg = '插入应付帐表操作失败,关键字单据ID重复'
- // ELSE
- // arg_msg = "插入应付帐表操作失败"+"~n"+sqlca.SQLErrText
- // END IF
- // rslt = 0
- // GOTO ext
- //END IF
- //
- ////4 向应付帐明细表插入新记录,失败则回滚
- //IF add_payrecmx(arg_scid,ls_newpayid,arg_billcode,arg_paydate,arg_banktypeid,arg_mstpayamt,&
- // arg_payamt,arg_opemp,arg_dscrp,arg_inrep,1,0,arg_itemid,arg_sptid,arg_msg,FALSE,arg_moneyid,arg_relcode) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //ref_payid = ls_newpayid
- //
- //ext:
- //IF rslt = 0 THEN
- // ROLLBACK;
- //ELSEIF rslt = 1 AND arg_ifcommit THEN
- // COMMIT;
- //END IF
- //RETURN rslt
- end function
- public function integer add_payrecmx (long arg_scid, long arg_payid, string arg_billcode, datetime arg_paydate, long arg_banktypeid, decimal arg_mstpayamt, decimal arg_payamt, string arg_opemp, string arg_dscrp, string arg_inrep, integer arg_buildtype, long arg_buybillid, long arg_itemid, long arg_sptid, ref string arg_msg, boolean arg_ifcommit, long arg_moneyid, string arg_relcode);//====================================================================
- // 事件: uo_mustpay.Script - add_payrecmx ( long arg_scid, long arg_payid, string arg_billcode, datetime arg_paydate, long arg_banktypeid, decimal arg_mstpayamt, decimal arg_payamt, string arg_opemp, string arg_dscrp, string arg_inrep, integer arg_buildtype, long arg_buybill()
- //--------------------------------------------------------------------
- // 描述:
- //--------------------------------------------------------------------
- // 参数:
- // value long arg_scid
- // value long arg_payid
- // value string arg_billcode
- // value datetime arg_paydate
- // value long arg_banktypeid
- // value decimal arg_mstpayamt
- // value decimal arg_payamt
- // value string arg_opemp
- // value string arg_dscrp
- // value string arg_inrep
- // value integer arg_buildtype
- // value long arg_buybillid
- // value long arg_itemid
- // value long arg_sptid
- // reference string arg_msg
- // value boolean arg_ifcommit
- // value long arg_moneyid
- // value string arg_relcode
- //--------------------------------------------------------------------
- // 返回: (none)
- //--------------------------------------------------------------------
- // 作者: LHD 日期: 2013年06月27日
- //--------------------------------------------------------------------
- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved.
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- s_bmstpay s_pay
- s_pay.scid = arg_scid
- s_pay.payid = arg_payid
- s_pay.billcode = arg_billcode
- s_pay.paydate = arg_paydate
- s_pay.banktypeid = arg_banktypeid
- s_pay.mstpayamt = arg_mstpayamt
- s_pay.payamt = arg_payamt
- s_pay.opemp = arg_opemp
- s_pay.dscrp = arg_dscrp
- s_pay.inrep = arg_inrep
- s_pay.buildtype = arg_buildtype
- s_pay.buybillid = arg_buybillid
- s_pay.itemid = arg_itemid
- s_pay.sptid = arg_sptid
- s_pay.moneyid = arg_moneyid
- s_pay.relcode = arg_relcode
- return add_payrecmx(s_pay,arg_msg,arg_ifcommit)
- /*
- Int rslt = 1
- Long cnt = 0,list_no
- DateTime server_datetime,null_datetime
- Decimal balcamt
- IF IsNull(arg_dscrp) THEN arg_dscrp = ''
- IF IsNull(arg_inrep) THEN arg_inrep = ''
- IF IsNull(arg_banktypeid) THEN arg_banktypeid = 0
- IF IsNull(arg_billcode) THEN arg_billcode = ''
- IF IsNull(arg_opemp) THEN arg_opemp = ''
- IF IsNull(arg_scid) THEN arg_scid = 0
- IF IsNull(arg_itemid) THEN arg_itemid = 0
- IF IsNull(arg_sptid) THEN arg_sptid = 0
- IF IsNull(arg_moneyid) THEN arg_moneyid = 0
- IF IsNull(arg_relcode) THEN arg_relcode = ''
- //防止超长
- arg_billcode = lefta(arg_billcode, 30)
- cnt = 0
- SELECT count(*) INTO :cnt FROM u_scdef Where scid = :arg_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
- //1 判断新内容的合法性
- IF Not (arg_buildtype = 0 OR &
- arg_buildtype = 1 OR &
- arg_buildtype = 2 OR &
- arg_buildtype = 3 OR &
- arg_buildtype = 4) THEN
- arg_msg = '错误建立类型,必须为:0-手工记帐;1-单据记帐;2-对数记帐;3-项目记帐;4-付款单记帐'
- rslt = 0
- GOTO ext
- END IF
- IF arg_billcode = '' THEN
- arg_msg = '请输入凭证号码'
- rslt = 0
- GOTO ext
- END IF
- IF Date(arg_paydate) <= 1990-01-01 THEN
- arg_msg = '错误发生日期'
- rslt = 0
- GOTO ext
- END IF
- IF Trim(arg_inrep) = '' THEN
- arg_msg = '请输入经手人'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_banktype
- Where banktypeid = :arg_banktypeid;
- 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_mstpayamt = 0 AND arg_payamt = 0 THEN
- arg_msg = "应付金额与已付金额不能同时为0!"
- rslt = 0
- GOTO ext
- END IF
- //2 判断是否已经选择当前操作员
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_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_buildtype = 0 OR arg_buildtype = 2 OR arg_buildtype = 3 OR arg_buildtype = 4 THEN
- SELECT max(listno) INTO :List_no FROM u_bmstpaymx
- Where payid = :arg_payid;
- 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_Bmstpaymx
- (scid,
- payid,
- Listno,
- billcode,
- paydate,
- banktypeid,
- mstpayamt,
- payamt,
- opdate,
- opemp,
- Dscrp,
- inrep,
- buildtype,
- buybillid,
- itemid,
- sptid,
- moneyid,
- relcode)
- VALUES (:arg_scid,
- :arg_payid,
- :list_no,
- :arg_billcode,
- :arg_paydate,
- :arg_banktypeid,
- :arg_mstpayamt,
- :arg_payamt,
- :server_datetime,
- :arg_opemp,
- :arg_dscrp,
- :arg_inrep,
- :arg_buildtype,
- :arg_buybillid,
- :arg_itemid,
- :arg_sptid,
- :arg_moneyid,
- :arg_relcode
- ) ;
- IF sqlca.SQLCode <> 0 THEN
-
- IF Pos(Lower(sqlca.SQLErrText),'pk_u_buyTask') > 0 THEN
- arg_msg = '向应付帐表插入应付明细帐记录失败,关键字ID重复'
- ELSE
- arg_msg = "向应付帐表插入应付明细帐记录失败"+"~n"+sqlca.SQLErrText
- END IF
-
- rslt = 0
- GOTO ext
- END IF
- //IF arg_buildtype <> 1 THEN
- SELECT mstpayamt - payamt INTO :balcamt FROM u_bmstpay Where payid = :arg_payid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询当前单据结余金额失败'
- rslt = 0
- GOTO ext
- END IF
- // if balcamt<=0 then
- // IF ( arg_payamt - arg_mstpayamt)>0 THEN
- // arG_MSG = '当前处理金额大于单据结余金额,请检查'
- // rslt = 0
- // GOTO ext
- // END IF
- // else
- // if ( arg_payamt - arg_mstpayamt)>balcamt then
- // arG_MSG = '当前处理金额大于单据结余金额,请检查'
- // rslt = 0
- // GOTO ext
- // END IF
- // end if
- IF arg_buildtype <> 1 THEN
- UPDATE u_bmstpay
- SET mstpayamt = mstpayamt + :arg_mstpayamt,
- payamt = payamt + :arg_payamt
- Where payid = :arg_payid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应付帐应付已付款失败,请重试!'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF balcamt = arg_payamt - arg_mstpayamt THEN
- UPDATE u_bmstpay
- SET finishflag = 1,
- finishdate = :server_datetime
- Where payid = :arg_payid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应付帐完成标记失败'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- SetNull(null_datetime)
- UPDATE u_bmstpay
- SET finishflag = 0,
- finishdate = :null_datetime
- Where payid = :arg_payid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应付帐完成标记失败'
- 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 add_payrecmx (ref s_bmstpay arg_s_mx, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Long cnt = 0,list_no
- DateTime server_datetime,null_datetime
- Decimal balcamt
- IF IsNull(arg_s_mx.dscrp) THEN arg_s_mx.dscrp = ''
- IF IsNull(arg_s_mx.inrep) THEN arg_s_mx.inrep = ''
- IF IsNull(arg_s_mx.banktypeid) THEN arg_s_mx.banktypeid = 0
- IF IsNull(arg_s_mx.billcode) THEN arg_s_mx.billcode = ''
- IF IsNull(arg_s_mx.opemp) THEN arg_s_mx.opemp = ''
- IF IsNull(arg_s_mx.scid) THEN arg_s_mx.scid = 0
- IF IsNull(arg_s_mx.itemid) THEN arg_s_mx.itemid = 0
- IF IsNull(arg_s_mx.sptid) THEN arg_s_mx.sptid = 0
- IF IsNull(arg_s_mx.moneyid) THEN arg_s_mx.moneyid = 0
- IF IsNull(arg_s_mx.relcode) THEN arg_s_mx.relcode = ''
- //防止超长
- arg_s_mx.billcode = lefta(arg_s_mx.billcode, 30)
- cnt = 0
- SELECT count(*) INTO :cnt FROM u_scdef Where scid = :arg_s_mx.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
- //1 判断新内容的合法性
- IF Not (arg_s_mx.buildtype = 0 OR &
- arg_s_mx.buildtype = 1 OR &
- arg_s_mx.buildtype = 2 OR &
- arg_s_mx.buildtype = 3 OR &
- arg_s_mx.buildtype = 4) THEN
- arg_msg = '错误建立类型,必须为:0-手工记帐;1-单据记帐;2-对数记帐;3-项目记帐;4-付款单记帐'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_mx.billcode = '' THEN
- arg_msg = '请输入凭证号码'
- rslt = 0
- GOTO ext
- END IF
- IF Date(arg_s_mx.paydate) <= 1990-01-01 THEN
- arg_msg = '错误发生日期'
- rslt = 0
- GOTO ext
- END IF
- IF Trim(arg_s_mx.inrep) = '' THEN
- arg_msg = '请输入经手人'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_banktype
- Where banktypeid = :arg_s_mx.banktypeid;
- 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_mx.mstpayamt = 0 AND arg_s_mx.payamt = 0 THEN
- // arg_msg = "应付金额与已付金额不能同时为0!"
- // rslt = 0
- // GOTO ext
- //END IF
- //2 判断是否已经选择当前操作员
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where username = :arg_s_mx.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_mx.mstpayamt<>0 or arg_s_mx.payamt<>0 then
- IF arg_s_mx.buildtype = 0 OR arg_s_mx.buildtype = 2 OR arg_s_mx.buildtype = 3 OR arg_s_mx.buildtype = 4 THEN
- SELECT max(listno) + 1 INTO :List_no FROM u_bmstpaymx
- Where payid = :arg_s_mx.payid;
- 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
- ELSE
- list_no = 0
- END IF
-
-
- //3 向应付帐明细表插入新记录,失败则回滚
- INSERT INTO U_Bmstpaymx
- (scid,
- payid,
- Listno,
- billcode,
- paydate,
- banktypeid,
- mstpayamt,
- payamt,
- opdate,
- opemp,
- Dscrp,
- inrep,
- buildtype,
- buybillid,
- itemid,
- sptid,
- moneyid,
- relcode)
- VALUES (:arg_s_mx.scid,
- :arg_s_mx.payid,
- :list_no,
- :arg_s_mx.billcode,
- :arg_s_mx.paydate,
- :arg_s_mx.banktypeid,
- :arg_s_mx.mstpayamt,
- :arg_s_mx.payamt,
- :server_datetime,
- :arg_s_mx.opemp,
- :arg_s_mx.dscrp,
- :arg_s_mx.inrep,
- :arg_s_mx.buildtype,
- :arg_s_mx.buybillid,
- :arg_s_mx.itemid,
- :arg_s_mx.sptid,
- :arg_s_mx.moneyid,
- :arg_s_mx.relcode
- ) ;
- IF sqlca.SQLCode <> 0 THEN
-
- IF Pos(Lower(sqlca.SQLErrText),'pk_u_buyTask') > 0 THEN
- arg_msg = '向应付帐表插入应付明细帐记录失败,关键字ID重复'
- ELSE
- arg_msg = "向应付帐表插入应付明细帐记录失败"+"~n"+sqlca.SQLErrText
- END IF
-
- rslt = 0
- GOTO ext
- END IF
- end if
- SELECT mstpayamt - payamt INTO :balcamt FROM u_bmstpay Where payid = :arg_s_mx.payid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询当前单据结余金额失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_mx.buildtype = 3 THEN //采购单据, 增加税率应用
- IF arg_s_mx.dscrp = arg_s_mx.billcode + '税金' THEN
- UPDATE u_bmstpay
- SET oriamt = oriamt + :arg_s_mx.mstpayamt
- Where payid = :arg_s_mx.payid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应付帐单据金额失败,请重试!'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- IF list_no <> 0 and (arg_s_mx.mstpayamt<>0 or arg_s_mx.payamt<>0)THEN
- UPDATE u_bmstpay
- SET mstpayamt = mstpayamt + :arg_s_mx.mstpayamt,
- payamt = payamt + :arg_s_mx.payamt
- Where payid = :arg_s_mx.payid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应付帐应付已付款失败,请重试!'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF balcamt = arg_s_mx.payamt - arg_s_mx.mstpayamt THEN
- UPDATE u_bmstpay
- SET finishflag = 1,
- finishdate = :arg_s_mx.paydate
- Where payid = :arg_s_mx.payid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应付帐完成标记失败'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- SetNull(null_datetime)
- UPDATE u_bmstpay
- SET finishflag = 0,
- finishdate = :null_datetime
- Where payid = :arg_s_mx.payid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新应付帐完成标记失败'
- 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 add_payrec (ref s_bmstpay arg_s_mx, ref string arg_msg, boolean arg_ifcommit);//====================================================================
- // 事件: uo_mustpay.add_payrec()
- //--------------------------------------------------------------------
- // 描述:
- //--------------------------------------------------------------------
- // 参数:
- // reference s_bmstpay arg_s_mx
- // reference string arg_msg
- // value boolean arg_ifcommit
- //--------------------------------------------------------------------
- // 返回: integer
- //--------------------------------------------------------------------
- // 作者: LHD 日期: 2013年06月27日
- //--------------------------------------------------------------------
- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved.
- //--------------------------------------------------------------------
- // 修改历史:
- ////arg_s_mx.buildtype = 0 - 手动;1 -自动;2-对单; 3-项目;4-收付款单; (2,3只用在明细中)
- //====================================================================
- Int rslt = 1
- long cnt = 0
- DateTime server_datetime
- Long ls_newpayid
- Long ref_dateint
- String ls_sptname, ls_dscrp,ls_sptcode
- String ls_relcode
- Int li_item_dfttype,li_itemflag
- Decimal ld_payamt
- IF IsNull(arg_s_mx.dscrp) THEN arg_s_mx.dscrp = ''
- IF IsNull(arg_s_mx.inrep) THEN arg_s_mx.inrep = ''
- IF IsNull(arg_s_mx.banktypeid) THEN arg_s_mx.banktypeid = 0
- IF IsNull(arg_s_mx.billcode) THEN arg_s_mx.billcode = ''
- IF IsNull(arg_s_mx.opemp) THEN arg_s_mx.opemp = ''
- IF IsNull(arg_s_mx.scid) THEN arg_s_mx.scid = 0
- IF IsNull(arg_s_mx.accountsid) THEN arg_s_mx.accountsid = 0
- IF IsNull(arg_s_mx.itemid) THEN arg_s_mx.itemid = 0
- IF IsNull(arg_s_mx.moneyid) THEN arg_s_mx.moneyid = 0
- IF IsNull(arg_s_mx.relcode) THEN arg_s_mx.relcode = ''
- uo_iteminput uo_item
- uo_item = Create uo_iteminput
- //未注册限制
- IF sys_if_register = 0 THEN
- Long ll_bill_count
- SELECT count(*)
- INTO :ll_bill_count
- From U_Bmstpay;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,应付帐数量 "
- GOTO ext
- END IF
-
- IF ll_bill_count > 80 THEN
- rslt = 0
- arg_msg = "未注册版本,应付帐只能保存80条记录!"
- GOTO ext
- END IF
- END IF
- IF Not (arg_s_mx.buildtype = 0 Or arg_s_mx.buildtype = 1 Or arg_s_mx.buildtype = 4) THEN
- arg_msg = '错误建立类型,必须为:0-手工记帐;1-单据记帐;4-付款单记账'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_mx.moneyid <= 0 THEN
- rslt = 0
- arg_msg = '请选择币种.'
- GOTO ext
- END IF
- IF arg_s_mx.banktypeid = 0 THEN
- arg_msg = '没有结算方式'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_mx.itemid <= 0 THEN
- rslt = 0
- arg_msg = '请选择收支项目.'
- GOTO ext
- END IF
- IF arg_s_mx.billcode = '' THEN
- arg_msg = '请输入凭证号码'
- rslt = 0
- GOTO ext
- END IF
- IF Date(arg_s_mx.paydate) <= 1990-01-01 THEN
- arg_msg = '错误发生日期'
- rslt = 0
- GOTO ext
- END IF
- IF Trim(arg_s_mx.inrep) = '' THEN
- arg_msg = '请输入经手人'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) Into :cnt From u_scdef Where scid = :arg_s_mx.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
- Int li_btype,li_native
- SELECT btype Into :li_btype From cw_banktype Where banktypeid = :arg_s_mx.banktypeid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询结算方式失败!'
- GOTO ext
- END IF
- SELECT native Into :li_native From cw_currency Where moneyid = :arg_s_mx.moneyid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询币种失败!'
- GOTO ext
- END IF
- ////// //
- IF arg_s_mx.inwareid > 0 And arg_s_mx.buildtype = 1 THEN
- SELECT part Into :ls_relcode From u_inware Where inwareid = :arg_s_mx.inwareid;
- IF sqlca.SQLCode <> 0 THEN
- ls_relcode = ''
- END IF
- 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 arg_s_mx.mstpayamt = 0 And arg_s_mx.payamt = 0 THEN
- arg_msg = "应付金额与已付金额不能同时为0!"
- rslt = 0
- GOTO ext
- END IF
- arg_s_mx.oriamt = arg_s_mx.mstpayamt - arg_s_mx.payamt
- //2 判断是否已经选择当前供应商和操作员
- SELECT sptcode,name
- INTO :ls_sptcode,:ls_sptname
- FROM u_spt
- Where u_spt.sptid = :arg_s_mx.sptid ;
- 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_mx.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
- //Long ll_moneyid
- //****************加出纳帐
- DateTime ldt_viewdate
- IF arg_s_mx.payamt <> 0 THEN
-
- IF arg_s_mx.accountsid = 0 THEN
- arg_msg = '请选择账号'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT dfttype,itemflag
- INTO :li_item_dfttype,:li_itemflag
- FROM u_itemdef
- Where u_itemdef.itemid = :arg_s_mx.itemid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询当前付支项目核算类型和核算方向失败!'
- rslt = 0
- GOTO ext
- END IF
-
- CHOOSE CASE li_item_dfttype
- CASE 2,5
- ld_payamt = -1 * arg_s_mx.payamt * li_itemflag
- CASE ELSE
- ld_payamt = arg_s_mx.payamt
- END CHOOSE
-
- //客户收款/供应商付款单的选项, 暂时无法区别是否供应商付款单?
- //不过其他单据,默认paydate = viewdate
- IF sys_option_cusamt_dftdate = 0 THEN
- ldt_viewdate = arg_s_mx.paydate
- ELSE
- ldt_viewdate = arg_s_mx.viewdate
- END IF
-
- //Int sys_option_rap_money_dscrp_mode= 0 // 281 出纳帐摘要生成模式
- IF sys_option_rap_money_dscrp_mode = 0 THEN
- ls_dscrp = ls_sptcode + ' ' + ls_sptname + ' ' +arg_s_mx.dscrp
- ELSEIF sys_option_rap_money_dscrp_mode = 1 THEN
- ls_dscrp = ls_sptname + ' ' +arg_s_mx.dscrp
- ELSE
- ls_dscrp = ls_sptcode + ' ' + ls_sptname + ' ' +arg_s_mx.dscrp
- END IF
-
- s_iteminput s_input
-
- s_input.itemid = arg_s_mx.itemid
- s_input.dateint = 0
- s_input.outdate = ldt_viewdate
- s_input.dscrp = ls_dscrp
- s_input.outamt = ld_payamt
- s_input.accountsid = arg_s_mx.accountsid
- s_input.banktypeid = arg_s_mx.banktypeid
- s_input.billcode = arg_s_mx.billcode
- s_input.relcode = arg_s_mx.relcode
- s_input.buildtype = 1
- s_input.opemp = publ_operator
- s_input.relrep = ''
- s_input.scid = arg_s_mx.scid
- s_input.moneyid = arg_s_mx.moneyid
-
- IF uo_item.add_iteminput(s_input,arg_msg,False) = 0 THEN
- arg_msg = '增加收支明细帐失败!~n' + arg_msg
- rslt = 0
- GOTO ext
- END IF
- // IF uo_item.add_iteminput(arg_s_mx.scid,arg_s_mx.itemid,0,ldt_viewdate,ls_dscrp,ld_payamt,arg_s_mx.accountsid,&
- // arg_msg,False,arg_s_mx.banktypeid,1,arg_s_mx.billcode,arg_s_mx.moneyid,arg_s_mx.relcode) = 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
- arg_s_mx.accountsid = 0
- END IF
- //3 向应付帐表插入新记录,失败则回滚
- ls_newpayid = f_sys_scidentity(0,"U_Bmstpay","payid",arg_msg,False,sqlca)
- IF ls_newpayid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
- INSERT INTO U_Bmstpay
- ( scid,
- payid,
- sptid,
- paydate,
- inrep,
- oriamt,
- mstpayamt,
- payamt,
- Dscrp,
- billcode,
- banktypeid,
- buildtype,
- opdate,
- opemp,
- inwareid,
- viewdate,
- rapmoneyid,
- accountsid,
- itemid,
- buybillid,
- moneyid,
- relcode)
- VALUES ( :arg_s_mx.scid,
- :ls_newpayid,
- :arg_s_mx.sptid,
- :arg_s_mx.paydate,
- :arg_s_mx.inrep,
- :arg_s_mx.oriamt,
- :arg_s_mx.mstpayamt,
- :arg_s_mx.payamt,
- :arg_s_mx.dscrp,
- :arg_s_mx.billcode,
- :arg_s_mx.banktypeid,
- :arg_s_mx.buildtype,
- :server_datetime,
- :arg_s_mx.opemp,
- :arg_s_mx.inwareid,
- :arg_s_mx.viewdate,
- :ref_dateint,
- :arg_s_mx.accountsid,
- :arg_s_mx.itemid,
- :arg_s_mx.buybillid,
- :arg_s_mx.moneyid,
- :arg_s_mx.relcode) ;
- IF sqlca.SQLCode <> 0 THEN
-
- IF Pos(Lower(sqlca.SQLErrText),'pk_U_Bmstpay') > 0 THEN
- arg_msg = '插入应付帐表操作失败,关键字单据ID重复'
- ELSE
- arg_msg = "插入应付帐表操作失败"+"~n"+sqlca.SQLErrText
- END IF
- rslt = 0
- GOTO ext
- END IF
- //4 向应付帐明细表插入新记录,失败则回滚
- arg_s_mx.payid = ls_newpayid
- s_bmstpay s_paymx
- s_paymx = arg_s_mx
- IF arg_s_mx.buildtype = 0 Or arg_s_mx.buildtype = 4 THEN
- s_paymx.buildtype = arg_s_mx.buildtype
- ELSE
- s_paymx.buildtype = 1
- END IF
- s_paymx.buybillid = 0
- IF add_payrecmx(s_paymx,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //IF add_payrecmx(arg_s_mx.scid,ls_newpayid,arg_s_mx.billcode,arg_s_mx.paydate,arg_s_mx.banktypeid,arg_s_mx.mstpayamt,&
- // arg_s_mx.payamt,arg_s_mx.opemp,arg_s_mx.dscrp,arg_s_mx.inrep,1,0,arg_s_mx.itemid,arg_s_mx.sptid,arg_msg,False,arg_s_mx.moneyid,arg_s_mx.relcode) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- ref_payid = ls_newpayid
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- on uo_mustpay.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_mustpay.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|