123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100 |
- $PBExportHeader$uo_credence.sru
- $PBExportComments$凭证
- forward
- global type uo_credence from nonvisualobject
- end type
- end forward
- global type uo_credence from nonvisualobject
- end type
- global uo_credence uo_credence
- type variables
- public protectedwrite LONG credid //凭证自动增量ID
- public protectedwrite DATETIME billmakerdate //制单时间
- public protectedwrite string billmaker //制单
- public protectedwrite string billmakerid //制单ID
- public protectedwrite datetime billcheckdate //审核时间
- public protectedwrite string billcheck //审核
- public protectedwrite string billcheckid //审核ID
- public protectedwrite datetime billpostdate //登帐时间
- public protectedwrite string billpost //登帐
- public protectedwrite int checkflag=0 //审核标记
- public protectedwrite int postflag =0 //登帐标记
- LONG subaccsetid=0 //子帐ID
- LONG credno //编号
- DATETIME creddate //日期
- INT billnumber //附件
- STRING credtype //凭证字
- long readtype=0 //凭证读类型
- long relevantbillid //相关ID[固定资产]
- LONG cmonth //期间
- datetime reldate
- string reldcode
- int ifauto
- private:
- S_credencemx credencemx[] //明细结构数组
- long it_MXBT=0 //明细结构数组末指针
- BOOLEAN IT_NEWBEGIN=FALSE //新建标志
- BOOLEAN IT_UPDATEBEGIN=FALSE//修改标志
- end variables
- forward prototypes
- public function integer newbegin ()
- public function integer p_reset ()
- public function integer p_clearmx ()
- public function integer updatebegin (long arg_subaccsetid, long arg_credid, ref string arg_msg)
- public function integer check (long arg_subaccsetid, long arg_credid, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_subaccsetid, long arg_credid, ref string arg_msg)
- public function integer post_begin (integer arg_posttype, long arg_subaccsetid, ref string arg_msg)
- public function integer post (long arg_subaccsetid, ref string arg_msg, boolean arg_ifcommit)
- public function integer balance (boolean if_begin_accset, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancel_post (long arg_subaccsetid, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancel_balance (boolean if_del_porfit_loss, ref string arg_msg, boolean arg_ifcommit)
- public function integer cancel_check (long arg_subaccsetid, long arg_cmonth, long arg_firstcredno, long arg_endcredno, ref string arg_msg, boolean arg_ifcommit)
- public function integer save (string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function long get_new_credno (long arg_subaccsetid, string arg_credtype, long arg_cmonth, ref string arg_msg)
- public function integer p_check_cmonth (long arg_accsetid, long arg_cmonth, ref string arg_msg)
- public function integer p_check_month_date (long arg_accsetid, long arg_cmonth, datetime arg_creddate, ref string arg_msg)
- public function integer get_asset_credinfo (long arg_findtype, long arg_relid, long arg_credid, ref long arg_ref_credid, ref integer arg_ref_postflag, ref string arg_msg)
- public function integer uof_mod_mxdscrp (long arg_accsetid, long arg_credid, long arg_fuluno, string arg_mxdscrp, ref string arg_msg)
- public function integer cancel_check_1 (long arg_subaccsetid, long arg_credid, integer arg_ifauto_check, ref string arg_msg, boolean arg_ifcommit)
- public function integer del (integer arg_delmode, long arg_subaccsetid, long arg_credid, ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (long arg_fuluno, string arg_subid, string arg_brief, double arg_rate, decimal arg_rawdebit, decimal arg_rawcredit, decimal arg_debit, decimal arg_credit, decimal arg_amount, decimal arg_price, long arg_deptid, long arg_itemid, datetime arg_billdate, long arg_billid, string arg_billno, long arg_cropbillid, integer arg_readonly, long arg_cusid, long arg_sptid, long arg_empid, ref string arg_msg)
- end prototypes
- public function integer newbegin ();//newbegin()
- //从置对象,准备建立新凭证
- //0 fail 1 success
- LONG RSLT=1,CNT=0
- p_reset()
- it_newbegin=TRUE
- it_updatebegin=FALSE
- IF RSLT=0 THEN p_reset()
- return RSLT
- end function
- public function integer p_reset ();//INT p_RESET()
- //清除对象及其明细
- datetime null_dt
- setnull(null_dt)
- credid=0
- billmakerdate=null_dt
- billmaker=''
- billcheckdate=null_dt
- billcheck =''
- billpostdate=null_dt
- billpost=''
- checkflag=0
- postflag =0
- readtype =0
- it_newbegin=FALSE
- it_updatebegin=FALSE
- //清除明细
- P_CLEARMX()
- RETURN 1
- end function
- public function integer p_clearmx ();//INT p_clearmx()
- //清除明细
- it_mxbt=0
- RETURN 1
- end function
- public function integer updatebegin (long arg_subaccsetid, long arg_credid, ref string arg_msg);//UPDATEbegin(long arg_subaccsetid,long arg_credid,ref string arg_msg)
- //从置对象,准备更新凭证
- //0 fail 1 success
- Int rslt = 1
- IF getinfo(arg_subaccsetid,arg_credid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF checkflag = 1 THEN
- rslt = 0
- arg_msg = '凭证已经过审核,不可以修改'
- GOTO ext
- END IF
- IF readtype = 888 THEN
- arg_msg = '出纳审核生成的单据,不能修改'
- rslt = 0
- GOTO ext
- END IF
- credid = arg_credid
- subaccsetid = arg_subaccsetid
- IF checkflag = 0 THEN p_CLEARMX()
- it_newbegin = FALSE
- it_updatebegin = TRUE
- ext:
- IF rslt = 0 THEN p_RESET()
- RETURN rslt
- end function
- public function integer check (long arg_subaccsetid, long arg_credid, ref string arg_msg, boolean arg_ifcommit);//check(arg_subaccsetid,arg_credid,ref arg_msg,arg_ifcommit)
- //0 fail 1 success
- //凭证审核
- Long rslt = 1,cnt = 0
- IF s_sys_accset.sameuser = 0 THEN
- IF publ_userid = billmakerid THEN
- arg_msg = '制单和审核不可以是同一个人'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF getinfo(arg_subaccsetid,arg_credid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF it_newbegin OR it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF checkflag = 1 THEN
- rslt = 0
- arg_msg = "凭证已经过审核"
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_user
- Where u_user.username = : publ_operator;
- 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
- UPDATE cw_credence
- SET billcheckid = :publ_userid,
- billcheck = :publ_operator,
- billcheckdate = getdate(),
- checkflag = 1
- WHERE cw_credence.credid = :arg_credid
- AND cw_credence.checkflag = 0
- AND cw_credence.accsetid = :sys_accsetid
- AND cw_credence.subaccsetid = :arg_subaccsetid;
-
- 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
- checkflag = 1
- 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_subaccsetid, long arg_credid, ref string arg_msg);//取凭证信息
- Int rslt = 1
- IF arg_credid <= 0 THEN
- rslt = 0
- credid = 0
- arg_msg = '凭证ID错误'
- GOTO ext
- END IF
- IF arg_subaccsetid <> 0 THEN
- rslt = 0
- subaccsetid = 0
- arg_msg = '子帐ID错误'
- GOTO ext
- END IF
- SELECT cw_credence.credno,
- cw_credence.cmonth,
- cw_credence.creddate,
- cw_credence.billnumber,
- cw_credence.billmaker,
- cw_credence.billmakerdate,
- cw_credence.billcheck,
- cw_credence.billcheckdate,
- cw_credence.billpost,
- cw_credence.billpostdate,
- cw_credence.checkflag,
- cw_credence.postflag,
- cw_credence.credtype,
- cw_credence.readtype,
- cw_credence.relevantbillid,
- cw_credence.reldcode,
- cw_credence.reldate,
- cw_credence.ifauto
- INTO :credno,
- :cmonth,
- :creddate,
- :billnumber,
- :billmaker,
- :billmakerdate,
- :billcheck,
- :billcheckdate,
- :billpost,
- :billpostdate,
- :checkflag,
- :postflag,
- :credtype,
- :readtype,
- :relevantbillid,
- :reldcode,
- :reldate,
- :ifauto
- FROM cw_credence
- WHERE cw_credence.credid = :arg_credid
- AND cw_credence.accsetid = :sys_accsetid
- AND cw_credence.subaccsetid = :arg_subaccsetid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询数据操作失败,凭证'
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- RETURN rslt
- end function
- public function integer post_begin (integer arg_posttype, long arg_subaccsetid, ref string arg_msg);//检查凭证号是否连续
- //p_post_begin(arg_posttype,arg_subaccsetid,ref arg_msg)
- //arg_posttype
- //查凭证字
- //1:不连续时终止登帐 2:不连续时可以登帐
- //1:yes 0:no
- int rslt = 1
- long cnt,i
- long piror_credno,next_credno
- string arr_credtype[],ls_credtype
- int cnt_credtype
- if arg_subaccsetid <> 0 then
- arg_msg = '非法帐套,不能登帐'
- rslt = 0
- goto ext
- end if
- select count(credid) into :cnt
- from cw_credence
- where cw_credence.postflag = 0
- and cw_credence.checkflag = 1
- and cw_credence.accsetid = :sys_accsetid
- and (cw_credence.subaccsetid = :arg_subaccsetid)
- and cw_credence.cmonth = :sys_curyearmon;
- if sqlca.sqlcode <> 0 then
- arg_msg = '查询凭证数失败'
- rslt = 0
- goto ext
- end if
- if cnt = 0 then
- rslt = 1
- goto ext
- end if
- if arg_posttype = 2 then
- rslt = 1
- goto ext
- end if
- //*******************查凭证字
- DECLARE cur_credtype CURSOR FOR
- SELECT cw_Credenceword.Credenceword
- FROM cw_Credenceword
- where cw_Credenceword.accsetid = :sys_accsetid;
- open cur_credtype;
- fetch cur_credtype into :ls_credtype;
- do while sqlca.sqlcode = 0
- cnt_credtype++
- arr_credtype[cnt_credtype] = trim(ls_credtype)
- fetch cur_credtype into :ls_credtype;
- loop
- close cur_credtype;
- if cnt_credtype = 0 then
- cnt_credtype++
- arr_credtype[cnt_credtype]=''
- end if
- //********************
- for i = 1 to cnt_credtype
- declare credno_cur cursor for
- select cw_credence.credno
- from cw_credence
- where cw_credence.accsetid = :sys_accsetid
- and cw_credence.subaccsetid = :arg_subaccsetid
- and cw_credence.cmonth = :sys_curyearmon
- and cw_credence.credtype = :arr_credtype[i]
- order by cw_credence.credno;
-
- open credno_cur;
- fetch credno_cur into :next_credno;
- piror_credno = next_credno - 1
- do while sqlca.sqlcode = 0
- if piror_credno + 1 <> next_credno then
- arg_msg = '帐套凭证号不连续,不能登帐.凭证字:'+arr_credtype[i]+'凭证号:'+string(piror_credno)+'→'+string(next_credno)
- rslt = 0
- goto ext
- end if
- piror_credno = next_credno
- fetch credno_cur into :next_credno;
- loop
- close credno_cur;
- next
- ext:
- return rslt
- end function
- public function integer post (long arg_subaccsetid, ref string arg_msg, boolean arg_ifcommit);//post(arg_subaccsetid,ref arg_msg,arg_ifcommit)
- //0 fail 1 success
- //登帐
- //1.更新登帐标记
- //2.写入balance表[先更新,再插入]
- //2.2 更新父科目
- //2.3 更新0子帐 //暂不处理
- //2.4 更新父科目 //暂不处理
- Long rslt = 1,cnt = 0,ds_cnt,i,credence_cnt = 0
- datastore ds_update_balance
- Decimal ls_rawdebit,ls_rawcredit,ls_debit,ls_credit,ls_damount,ls_camount
- Decimal ls_erawdebit,ls_erawcredit,ls_edebit,ls_ecredit
- String ls_subid
- uo_subject uo_sub
- String p_subid
- Int ls_dcflag,li_hswb
- IF arg_subaccsetid <> 0 THEN
- arg_msg = '非法帐套,不能登帐'
- rslt = 0
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_user
- WHERE u_user.username = :publ_operator;
- 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
- credence_cnt = 0
- SELECT count(credid) INTO :credence_cnt
- FROM cw_credence
- WHERE cw_credence.postflag = 0
- AND cw_credence.checkflag = 1
- AND cw_credence.accsetid = :sys_accsetid
- AND ( cw_credence.subaccsetid = :arg_subaccsetid)
- AND ( cw_credence.cmonth = :sys_curyearmon );
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询期间要登帐凭证数失败'
- rslt = 0
- GOTO ext
- END IF
- IF credence_cnt = 0 THEN
- rslt = 1
- GOTO zero
- END IF
- ds_update_balance = CREATE datastore
- ds_update_balance.DataObject = "ds_update_balance"
- ds_update_balance.SetTransObject(sqlca)
- uo_sub = CREATE uo_subject
- ds_cnt = 0
- ds_update_balance.Retrieve(sys_accsetid,0,sys_curyearmon)
- ds_cnt = ds_update_balance.RowCount()
- IF ds_cnt = 0 THEN
- rslt = 1
- GOTO update_credence
- END IF
- FOR i = 1 TO ds_cnt
- ls_subid = ds_update_balance.Object.subid[i]
-
- //***查询余额方向
- ls_dcflag = f_get_dcflag(ls_subid,arg_msg)
- IF ls_dcflag = -1 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ls_rawdebit = ds_update_balance.Object.rawdebit[i]
- ls_rawcredit = ds_update_balance.Object.rawcredit[i]
- ls_debit = ds_update_balance.Object.debit[i]
- ls_credit = ds_update_balance.Object.credit[i]
- ls_damount = ds_update_balance.Object.damount[i]
- ls_camount = ds_update_balance.Object.camount[i]
- li_hswb = ds_update_balance.Object.cw_subject_hswb[i]
-
-
- IF ls_dcflag = 1 THEN
- IF li_hswb = 1 THEN
- ls_erawdebit = ls_rawdebit - ls_rawcredit
- ls_erawcredit = 0
- ELSE
- ls_erawdebit = 0
- ls_erawcredit = 0
- END IF
- ls_edebit = ls_debit - ls_credit
- ls_ecredit = 0
- ELSE
- IF li_hswb = 1 THEN
- ls_erawdebit = 0
- ls_erawcredit = ls_rawcredit - ls_rawdebit
- ELSE
- ls_erawdebit = 0
- ls_erawcredit = 0
- END IF
- ls_edebit = 0
- ls_ecredit = ls_credit - ls_debit
- END IF
-
- UPDATE cw_balance
- SET rawdebit = rawdebit + :ls_rawdebit,
- rawcredit = rawcredit + :ls_rawcredit,
- yrawdebit = yrawdebit + :ls_rawdebit,
- yrawcredit = yrawcredit + :ls_rawcredit,
- erawdebit = erawdebit + :ls_erawdebit,
- erawcredit = erawcredit + :ls_erawcredit,
-
- debit = debit + :ls_debit,
- credit = credit + :ls_credit,
- edebit = edebit + :ls_edebit,
- ecredit = ecredit + :ls_ecredit,
- ydebit = ydebit + :ls_debit,
- ycredit = ycredit + :ls_credit,
-
- damt = damt + :ls_damount,
- camt = camt + :ls_camount,
- ydamt = ydamt + :ls_damount,
- ycamt = ycamt + :ls_camount
- WHERE accsetid = :sys_accsetid
- AND subaccsetid = 0
- AND subid = :ls_subid
- AND yearmon = :sys_curyearmon;
-
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT cw_balance(accsetid,subaccsetid,subid,yearmon,rawdebit,rawcredit,
- erawdebit,erawcredit,yrawdebit,yrawcredit,debit,credit,
- edebit,ecredit,ydebit,ycredit,
- damt,camt,ydamt,ycamt)
- VALUES(:sys_accsetid, 0,:ls_subid,:sys_curyearmon,:ls_rawdebit,:ls_rawcredit,
- :ls_erawdebit,:ls_erawcredit,:ls_rawdebit,:ls_rawcredit,:ls_debit,:ls_credit,
- :ls_edebit,:ls_ecredit,:ls_debit,:ls_credit,
- :ls_damount,:ls_camount,:ls_damount,:ls_camount);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '0子帐登帐失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- arg_msg = '0子帐登帐失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //更新父科目
- p_subid = ''
-
- zero_update_p:
- p_subid = uo_sub.p_parent_subid(ls_subid)
- IF p_subid = '' THEN
- ELSE
- UPDATE cw_balance
- SET rawdebit = rawdebit + :ls_rawdebit,
- rawcredit = rawcredit + :ls_rawcredit,
- yrawdebit = yrawdebit + :ls_rawdebit,
- yrawcredit = yrawcredit + :ls_rawcredit,
- erawdebit = erawdebit + :ls_erawdebit ,
- erawcredit = erawcredit + :ls_erawcredit,
- debit = debit + :ls_debit,
- credit = credit + :ls_credit,
- edebit = edebit + :ls_edebit,
- ecredit = ecredit + :ls_ecredit,
- ydebit = ydebit + :ls_debit,
- ycredit = ycredit + :ls_credit,
-
- damt = damt + :ls_damount,
- camt = camt + :ls_camount,
- ydamt = ydamt + :ls_damount,
- ycamt = ycamt + :ls_camount
- WHERE accsetid = :sys_accsetid
- AND subaccsetid = 0
- AND subid = :p_subid
- AND yearmon = :sys_curyearmon;
-
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT cw_balance(accsetid,subaccsetid,subid,yearmon,rawdebit,rawcredit,
- erawdebit,erawcredit,yrawdebit,yrawcredit,debit,credit,
- edebit,ecredit,ydebit,ycredit,
- damt,camt,ydamt,ycamt)
- VALUES(:sys_accsetid, 0,:p_subid,:sys_curyearmon,:ls_rawdebit,:ls_rawcredit,
- :ls_erawdebit,:ls_erawcredit,:ls_rawdebit,:ls_rawcredit,:ls_debit,:ls_credit,
- :ls_edebit,:ls_ecredit,:ls_debit,:ls_credit,
- :ls_damount,:ls_camount,:ls_damount,:ls_camount);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '0子帐登帐失败[更新父科目金额],'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- arg_msg = '0子帐登帐失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ls_subid = p_subid
- GOTO zero_update_p
- END IF
- NEXT
- update_credence:
- UPDATE cw_credence
- SET billpost = :publ_operator,
- billpostdate = getdate(),
- postflag = 1
- WHERE cw_credence.postflag = 0
- AND cw_credence.checkflag = 1
- AND cw_credence.accsetid = :sys_accsetid
- AND ( cw_credence.subaccsetid = :arg_subaccsetid)
- AND ( cw_credence.cmonth = :sys_curyearmon );
- 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 f_balc_astbalance(1,sys_curyearmon,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- zero:
- arg_msg = '共有 '+String(credence_cnt) +' 张登帐'
- ext:
- IF rslt = 0 THEN
- ROLLBACK ;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer balance (boolean if_begin_accset, ref string arg_msg, boolean arg_ifcommit);//期末结帐
- //balance(if_begin_accset,ref arg_msg,arg_ifcommit)
- //if_begin_accset:
- //true:启动帐套 false:一般结帐
- //1:success 0:fail
- //1.查询当前期间有无凭证未过帐[未审核]
- //2.将每个科目 年初/期初/本年累计/期末数 复制一份到下一期间
- //2.1固定资产自动加入下月
- //3.更新帐套当前期间
- Int rslt = 1
- Long cred_nocheck_cnt,cred_nopost_cnt,cnt
- Long next_yearmon
- IF if_begin_accset THEN //启动帐套
- //////加入0子帐
- INSERT cw_balance(accsetid,subaccsetid,SubID,YearMon,YBRawDebit,YBRawCredit,
- BrawDebit,BrawCredit,ErawDebit,ErawCredit,YrawDebit,YrawCredit,
- YBDebit,YBCredit,Bdebit,Bcredit,Edebit,Ecredit,Ydebit,Ycredit,
- ybamt,ydamt,ycamt,bamt)
- SELECT :sys_accsetid,0,SubID,:sys_curyearmon,YBRawDebit,YBRawCredit,
- BrawDebit,BrawCredit,ErawDebit,ErawCredit,YrawDebit,YrawCredit,
- YBDebit,YBCredit,Bdebit,Bcredit,Edebit,Ecredit,Ydebit,Ycredit,
- bamount + camount - damount,damount,camount,bamount
- FROM uv_yminitbala
- Where accsetid = :sys_accsetid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '0子帐结帐失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //初始化固定资产累计折旧表
- IF f_init_astbalance(1,sys_startyearmon,sys_startyearmon,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE // //一般结帐
- SELECT sum(num1+num2) INTO :cnt
- FROM uv_cwauditingflag_num
- Where cmonth = :sys_curyearmon;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询本期是否有未会计审核的业务单据失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- arg_msg = '本期尚有'+String(cnt)+'张业务单据未会计审核,请先将这些单据会计审核或调整日期'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT count(credid) INTO :cred_nopost_cnt
- FROM cw_credence
- WHERE cw_credence.postflag = 0
- AND cw_credence.accsetid = :sys_accsetid
- And cw_credence.cmonth = :sys_curyearmon;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询未登帐凭证数失败'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT count(credid) INTO :cred_nocheck_cnt
- FROM cw_credence
- WHERE cw_credence.checkflag = 0
- AND cw_credence.accsetid = :sys_accsetid
- And cw_credence.cmonth = :sys_curyearmon;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询未审核凭证数失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF IsNull(cred_nopost_cnt) THEN cred_nopost_cnt = 0
- IF IsNull(cred_nocheck_cnt) THEN cred_nocheck_cnt = 0
-
- IF cred_nopost_cnt <> 0 And cred_nocheck_cnt = 0 THEN
- arg_msg = '本期尚有'+String(cred_nopost_cnt)+'张凭证未登帐,不能进行结帐'
- rslt = 0
- GOTO ext
- ELSEIF cred_nocheck_cnt <> 0 And cred_nocheck_cnt <> 0 THEN
- arg_msg = '本期尚有'+String(cred_nopost_cnt)+'张凭证未登帐,其中'+String(cred_nocheck_cnt)+'张是未审核过的,不能进行结帐'
- rslt = 0
- GOTO ext
- END IF
-
-
-
- //2.将每个科目 年初/期初/本年累计/期末数 复制一份到下一期间
-
- IF Right(String(sys_curyearmon),2) = '12' THEN
- next_yearmon = Long(String(Long(Left(String(sys_curyearmon),4)) + 1) + '01')
-
- DELETE FROM cw_balance
- WHERE accsetid = :sys_accsetid
- And YearMon = :next_yearmon;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除帐套月份:'+String(next_yearmon)+',结帐数据失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
-
- INSERT cw_balance(accsetid,subaccsetid,SubID,YearMon,
- YBRawDebit,YBRawCredit,BrawDebit,BrawCredit,
- ErawDebit,ErawCredit,YrawDebit,YrawCredit,
- YBDebit,YBCredit,Bdebit,Bcredit,
- Edebit,Ecredit,Ydebit,Ycredit,
- ybamt,ydamt,ycamt,bamt)
- SELECT :sys_accsetid,subaccsetid,SubID,:next_yearmon,
- eRawDebit,eRawCredit,BrawDebit,BrawCredit,
- ErawDebit,ErawCredit,0,0,
- Edebit,Ecredit,Bdebit,Bcredit,
- Edebit,Ecredit,0,0,
- bamt,0,0,bamt
- FROM uv_ymbala
- Where accsetid = :sys_accsetid;
- ELSE
- next_yearmon = sys_curyearmon + 1
-
- DELETE FROM cw_balance
- WHERE accsetid = :sys_accsetid
- And YearMon = :next_yearmon;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '删除帐套月份:'+String(next_yearmon)+',结帐数据失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- INSERT cw_balance(accsetid,subaccsetid,SubID,YearMon,YBRawDebit,YBRawCredit,
- BrawDebit,BrawCredit,ErawDebit,ErawCredit,YrawDebit,YrawCredit,
- YBDebit,YBCredit,Bdebit,Bcredit,Edebit,Ecredit,Ydebit,Ycredit,
- ybamt,ydamt,ycamt,bamt)
- SELECT :sys_accsetid,subaccsetid,SubID,:next_yearmon,YBRawDebit,YBRawCredit,
- BrawDebit,BrawCredit,ErawDebit,ErawCredit,YrawDebit,YrawCredit,
- YBDebit,YBCredit,Bdebit,Bcredit,Edebit,Ecredit,Ydebit,Ycredit,
- ybamt,ydamt,ycamt,bamt
- FROM uv_ymbala
- Where accsetid = :sys_accsetid;
- END IF
-
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '结帐失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //初始化下月固定资产累计折旧表
- IF f_init_astbalance(1,sys_curyearmon,next_yearmon,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //3.更新当前会计期间
- IF Right(String(sys_curyearmon),2) = '12' THEN
- UPDATE cw_accset
- SET curryear = :s_sys_accset.curryear + 1,
- currmon = 1,
- curyearmon = (:s_sys_accset.curryear + 1) * 100 + 1
- Where accsetid = :sys_accsetid;
- ELSE
- UPDATE cw_accset SET currmon = currmon + 1 ,curyearmon = curyearmon + 1
- Where accsetid = :sys_accsetid;
- END IF
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新当前帐套的当前期间失败'
- GOTO ext
- END IF
-
- //4.更新月历
- IF Right(String(sys_curyearmon),2) = '12' THEN
- Long next_y,ll_cnt_next_y
- s_calendar s_calendar_array[]
- next_y = Long(Left(String(sys_curyearmon),4)) + 1
-
- SELECT count(*) INTO :ll_cnt_next_y
- FROM cw_calendar
- WHERE Year(sdate) = :next_y
- And accsetid = :sys_accsetid;
- IF sqlca.SQLCode <> 0 THEN ll_cnt_next_y = 0
-
-
- IF ll_cnt_next_y = 0 THEN
- f_init_calendar_array(next_y,s_calendar_array[])
- Long k
- FOR k = 1 To UpperBound(s_calendar_array)
- INSERT INTO cw_calendar(accsetid,cmonth,sdate,edate)
- Values(:sys_accsetid,:s_calendar_array[k].cmonth,:s_calendar_array[k].sdate,:s_calendar_array[k].edate);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '加入新月历失败'
- rslt = 0
- GOTO ext
- END IF
- NEXT
- 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 cancel_post (long arg_subaccsetid, ref string arg_msg, boolean arg_ifcommit);//反登帐
- //cancel_post(arg_subaccsetid,ref arg_msg,arg_ifcommit)
- //0 fail 1 success
-
- //1.更新凭证登帐标记
- //2.写入balance表[先更新,再插入]
- //2.1 更新0子帐
- //2.2 更新总帐
- Long rslt = 1,cnt = 0,ds_cnt,i
- datastore ds_update_balance
- Dec ls_rawdebit,ls_rawcredit,ls_debit,ls_credit,ls_amount
- String ls_subid
- DateTime null_date
- IF arg_subaccsetid <> 0 THEN
- arg_msg = '非法帐套,不能反登帐'
- rslt = 0
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_user
- Where u_user.username = :publ_operator;
- 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(credid) INTO :cnt
- FROM cw_credence
- WHERE cw_credence.postflag = 1
- AND cw_credence.checkflag = 1
- AND cw_credence.accsetid = :sys_accsetid
- AND ( cw_credence.subaccsetid = :arg_subaccsetid)
- AND ( cw_credence.cmonth = :sys_curyearmon );
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询期间要反登帐凭证数失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- //1.更新凭证登帐标记
- SetNull(null_date)
- UPDATE cw_credence
- SET billpost = '',
- billpostdate = :null_date,
- postflag = 0
- WHERE cw_credence.postflag = 1
- AND cw_credence.checkflag = 1
- AND cw_credence.accsetid = :sys_accsetid
- AND ( cw_credence.subaccsetid = :arg_subaccsetid)
- AND ( cw_credence.cmonth = :sys_curyearmon );
- 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
- UPDATE cw_balance
- SET
- yrawdebit = yrawdebit - rawdebit,
- yrawcredit = yrawcredit - rawcredit,
- erawdebit = brawdebit ,
- erawcredit = brawcredit,
- rawdebit = 0,
- rawcredit = 0,
-
- ydebit = ydebit - debit,
- ycredit = ycredit - credit,
- edebit = bdebit,
- ecredit = bcredit,
- debit = 0,
- credit = 0,
-
- damt = 0,
- camt = 0,
- ydamt = ydamt - damt,
- ycamt = ycamt - camt
- WHERE accsetid = :sys_accsetid
- AND subaccsetid = :arg_subaccsetid
- AND yearmon = :sys_curyearmon;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '0子帐反登帐失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //更新累计折旧
- IF f_balc_astbalance(0,sys_curyearmon,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- arg_msg = '共有 '+String(cnt) +' 张反登帐'
- ext:
- IF rslt = 0 THEN
- ROLLBACK ;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer cancel_balance (boolean if_del_porfit_loss, ref string arg_msg, boolean arg_ifcommit);//反期末结帐
- //cancel_balance(if_begin_accset,ref arg_msg,arg_ifcommit)
- //1:success 0:fail
- //1.删除当前期间balance
- //2.更新当前期间凭证的登帐标记
- //3.是否将结转本期损益产生的记帐凭证删除
- //4.更新帐套当前期间
- int rslt = 1
- datetime null_datetime
- setnull(null_datetime)
- if s_sys_accset.startyear = s_sys_accset.curryear and s_sys_accset.startyearmon = s_sys_accset.currmon then
- rslt = 0
- arg_msg = '反结帐失败,不能反结帐到启用会计期间之前'
- goto ext
- end if
- //删除累计折旧
- if f_init_astbalance(0,sys_curyearmon,sys_curyearmon,arg_msg,false) = 0 then
- rslt = 0
- goto ext
- end if
- //1.删除结帐[0子帐和总帐]
- delete from cw_balance where accsetid = :sys_accsetid and yearmon = :sys_curyearmon;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = '反结帐失败,'+sqlca.sqlerrtext
- goto ext
- end if
- //2.更新当前期间凭证的登帐标记
- update cw_credence
- set postflag = 0,
- billpost = '',
- billpostdate = :null_datetime
- where cw_credence.accsetid = :sys_accsetid
- and cw_credence.cmonth = :sys_curyearmon;
- if sqlca.sqlcode <> 0 then
- arg_msg = '反结帐失败,更新当前期间凭证登帐标记失败'
- rslt = 0
- goto ext
- end if
- //3.是否将结转本期损益产生的记帐凭证删除
- if if_del_porfit_loss then
- delete from cw_credence
- where cw_credence.accsetid = :sys_accsetid
- and cw_credence.cmonth = :sys_curyearmon
- and cw_credence.readtype = 100;
- if sqlca.sqlcode <> 0 then
- arg_msg = '反结帐失败>>将结转本期损益产生的记帐凭证删除失败'
- rslt = 0
- goto ext
- end if
- end if
- //4.更新帐套当前期间
- if right(string(sys_curyearmon),2) = '01' then
- update cw_accset
- set curryear = :s_sys_accset.curryear - 1,
- currmon = 12,
- curyearmon = (:s_sys_accset.curryear - 1) * 100 + 12
- where accsetid = :sys_accsetid;
- else
- update cw_accset set currmon = currmon - 1 ,curyearmon = curyearmon - 1
- where accsetid = :sys_accsetid;
- end if
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = '更新当前帐套的当前期间失败'
- goto ext
- end if
- //5.删除月历
- if right(string(sys_curyearmon),2) = '01' then
- long cur_year
- cur_year = s_sys_accset.curryear
- delete from cw_calendar
- where accsetid = :sys_accsetid
- and cmonth > :cur_year * 100
- and cmonth < :cur_year * 100 + 13 ;
- if sqlca.sqlcode <> 0 then
- rslt = 0
- arg_msg = '删除月历失败'
- 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 cancel_check (long arg_subaccsetid, long arg_cmonth, long arg_firstcredno, long arg_endcredno, ref string arg_msg, boolean arg_ifcommit);//反审核
- //cancel_check(arg_subaccsetid,arg_credid,ref arg_msg,arg_ifcommit)
- //0 fail 1 success
- Long rslt = 1,cnt = 0,cred_cnt = 0
- DateTime null_date
- SetNull(null_date)
- SELECT count(credid) INTO :cred_cnt FROM cw_credence
- WHERE cw_credence.checkflag = 1
- AND cw_credence.postflag = 0
- AND cw_credence.cmonth = :arg_cmonth
- AND cw_credence.credno >= :arg_firstcredno
- AND cw_credence.credno <= :arg_endcredno
- AND cw_credence.accsetid = :sys_accsetid
- AND cw_credence.ifauto = 0
- AND ( cw_credence.subaccsetid = :arg_subaccsetid OR :arg_subaccsetid = -1 ) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询已审核未登帐凭证数失败"
- GOTO ext
- END IF
- IF IsNull(cred_cnt) THEN
- cred_cnt = 0
- END IF
- IF cred_cnt = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_user
- Where u_user.username = :publ_operator;
-
- 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
- UPDATE cw_credence
- SET billcheckid = '',
- billcheck = '',
- billcheckdate = :null_date,
- checkflag = 0
- WHERE cw_credence.checkflag = 1
- AND cw_credence.postflag = 0
- AND cw_credence.cmonth = :arg_cmonth
- AND cw_credence.credno >= :arg_firstcredno
- AND cw_credence.credno <= :arg_endcredno
- AND cw_credence.accsetid = :sys_accsetid
- AND ( cw_credence.subaccsetid = :arg_subaccsetid OR :arg_subaccsetid = -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
- ext:
- IF rslt = 1 THEN
- arG_MSG = "反审核凭证成功,共反审"+String(cred_cnt)+"张凭证"
- END IF
- IF rslt = 0 THEN
- ROLLBACK ;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer save (string arg_opemp, ref string arg_msg, boolean arg_ifcommit);//save(ref string arg_msg,boolean arg_ifcommit)
- // 新建(credid=0)\更新(credid>0)
- //0 fail 1 success
- //
- // 函数执行凭证操作
- // 函数在表 cw_credence、cw_credencemx 记帐
- // 1 检查单据信息合法性
- // 2 新建-取得单据编号\新建凭证\读取凭证唯一码\插入明细
- // 2 修改-更新凭证\删除旧明细\插入明细
- // 3 提交,修改状态标志
- Integer rslt = 1,cnt = 0,i
- DateTime server_datetime
- Long ls_newid
- String errmsg = ''
- uo_rapmoney uo_corpbill
- uo_corpbill = Create uo_rapmoney
- IF IsNull(subaccsetid) THEN subaccsetid = 0
- IF IsNull(credno) THEN credno = 0
- IF IsNull(billnumber) THEN billnumber = 0
- IF IsNull(credtype) THEN credtype = ''
- IF IsNull(reldcode) THEN reldcode = ''
- IF IsNull(cmonth) THEN cmonth = 0
- IF IsNull(ifauto) THEN ifauto = 0
- IF it_newbegin = False And it_updatebegin = False 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 subaccsetid <> 0 THEN
- rslt = 0
- arG_MSG = '子帐ID错误,请检查'
- GOTO ext
- END IF
- IF p_check_cmonth(sys_accsetid,cmonth,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF p_check_month_date(sys_accsetid,cmonth,creddate,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- If (sys_option_credno_save = 1 ) And it_newbegin THEN
- credno = get_new_credno(0,credtype,cmonth,arG_MSG)
- IF Trim(arG_MSG) <> '' THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF credno = 0 THEN
- rslt = 0
- arG_MSG = '凭证编号错误,请检查'
- GOTO ext
- END IF
- END IF
- IF it_newbegin THEN
- cnt = 0
- SELECT count(credno) INTO :cnt FROM cw_credence
- WHERE cw_credence.accsetid = :sys_accsetid
- AND cw_credence.cmonth = :cmonth
- AND cw_credence.subaccsetid = :subaccsetid
- AND cw_credence.credno = :credno
- And cw_credence.credtype = :credtype;
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arG_MSG = '查询凭证编号失败'
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arG_MSG = '该帐套已经存在该凭证编号:'+credtype+string(credno)+',请检查'
- GOTO ext
- END IF
- END IF
- IF it_mxbt = 0 THEN
- rslt = 0
- arG_MSG = "没有正确凭证明细内容"
- GOTO ext
- END IF
- IF Year(Date(creddate)) < 1900 Or IsNull(creddate) THEN
- rslt = 0
- arG_MSG = "缺少日期或日期不合理"
- GOTO ext
- END IF
- IF arg_opemp <> '机制' THEN
- 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
- END IF
- ////////////////////////////////////////////// //开始区分:新建/更新 处理
- IF credid = 0 THEN //新建
- billmaker = arg_opemp
- billmakerdate = server_datetime //填写凭证建立时间(最近修改时间)
-
- ls_newid = f_sys_scidentity(sys_accsetid,"cw_credence","credid",errmsg,True,id_sqlca)
- IF ls_newid <= 0 THEN
- arG_MSG = errmsg
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO cw_credence (
- accsetid,
- subaccsetid,
- credid,
- credno,
- cmonth,
- creddate,
- billnumber,
- billmaker,
- billmakerid,
- billmakerdate,
- checkflag,
- postflag,
- credtype,
- Readtype,
- relevantbillid,
- reldcode,
- reldate,
- ifauto)
- VALUES ( :sys_accsetid,
- :subaccsetid,
- :ls_newid,
- :credno,
- :cmonth,
- :creddate,
- :billnumber,
- :billmaker,
- :billmakerid,
- :billmakerdate,
- :checkflag,
- :postflag,
- :credtype,
- :Readtype,
- :relevantbillid,
- :reldcode,
- :reldate,
- :ifauto) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致新建凭证操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- FOR i = 1 To it_mxbt
- INSERT INTO cw_credencemx
- ( accsetid,
- subaccsetid,
- credid,
- fuluno,
- subid,
- brief,
- rate,
- rawdebit,
- rawcredit,
- debit,
- credit,
- amount,
- price,
- deptid,
- itemid,
- billdate,
- billid,
- billno,
- cropbillid,
- cusid,
- sptid,
- empid)
- VALUES (:sys_accsetid,
- :subaccsetid,
- :ls_newid,
- :credencemx[i].fuluno,
- :credencemx[i].subid,
- :credencemx[i].brief,
- :credencemx[i].rate,
- :credencemx[i].rawdebit,
- :credencemx[i].rawcredit,
- :credencemx[i].debit,
- :credencemx[I].credit,
- :credencemx[I].amount,
- :credencemx[I].price,
- :credencemx[i].deptid,
- :credencemx[i].itemid,
- :credencemx[i].billdate,
- :credencemx[i].billid,
- :credencemx[i].billno,
- :credencemx[i].cropbillid,
- :credencemx[i].cusid,
- :credencemx[i].sptid,
- :credencemx[i].empid);
- IF sqlca.SQLCode <> 0 THEN
- credid = 0 //还原outWAREID
- rslt = 0
- arG_MSG = "因网络或其它原因导致新建凭证明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- credid = ls_newid
-
- ELSE //////////////////////////////////////////////// //更新
- UPDATE cw_credence
- SET credno = :credno,
- creddate = :creddate,
- billnumber = :billnumber,
- modemp = :arg_opemp,
- moddate = getdate(),
- checkflag = :checkflag,
- postflag = :postflag,
- credtype = :credtype,
- readtype = :readtype,
- reldcode = :reldcode,
- reldate = :reldate,
- ifauto = :ifauto
- WHERE cw_credence.accsetid = :sys_accsetid
- AND cw_credence.credid = :credid
- And cw_credence.subaccsetid = :subaccsetid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致更新凭证操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //删除原有明细
- DELETE FROM cw_credencemx
- Where cw_credencemx.accsetid = :sys_accsetid And credid = :credid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "删除旧有凭证明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- FOR i = 1 To it_mxbt
- INSERT INTO cw_credencemx
- ( accsetid,
- subaccsetid,
- credid,
- fuluno,
- subid,
- brief,
- rate,
- rawdebit,
- rawcredit,
- debit,
- credit,
- amount,
- price,
- deptid,
- itemid,
- billdate,
- billid,
- billno,
- cropbillid,
- cusid,
- sptid,
- empid)
- VALUES (:sys_accsetid,
- :subaccsetid,
- :credid,
- :credencemx[i].fuluno,
- :credencemx[i].subid,
- :credencemx[i].brief,
- :credencemx[i].rate,
- :credencemx[i].rawdebit,
- :credencemx[i].rawcredit,
- :credencemx[i].debit,
- :credencemx[I].credit,
- :credencemx[I].amount,
- :credencemx[I].price,
- :credencemx[i].deptid,
- :credencemx[i].itemid,
- :credencemx[i].billdate,
- :credencemx[i].billid,
- :credencemx[I].billno,
- :credencemx[i].cropbillid,
- :credencemx[i].cusid,
- :credencemx[i].sptid,
- :credencemx[i].empid);
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因新建凭证明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
- END IF
- it_newbegin = False
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- credid = 0
- p_clearmx()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_corpbill
- Return(rslt)
- end function
- public function long get_new_credno (long arg_subaccsetid, string arg_credtype, long arg_cmonth, ref string arg_msg);//取凭证编号
- Long max_credno,rslt_credno,cnt_credno
- Long piror_credno,next_credno
- datastore ds_credno
- ds_credno = Create datastore
- ds_credno.DataObject = 'ds_credno'
- ds_credno.SetTransObject(sqlca)
- Long i
- p_check_cmonth(sys_accsetid,arg_cmonth,arg_msg)
- SELECT max(credno) INTO :max_credno FROM cw_credence with (nolock)
- WHERE accsetid = :sys_accsetid
- AND subaccsetid = :arg_subaccsetid
- AND cmonth = :arg_cmonth
- And credtype = :arg_credtype;
- IF sqlca.SQLCode <> 0 THEN
- rslt_credno = 1
- GOTO ext
- END IF
- IF IsNull(max_credno) THEN max_credno = 0
- SELECT count(*) INTO :cnt_credno FROM cw_credence with (nolock)
- WHERE accsetid = :sys_accsetid
- AND subaccsetid = :arg_subaccsetid
- AND cmonth = :arg_cmonth
- And credtype = :arg_credtype;
- IF sqlca.SQLCode <> 0 THEN
- rslt_credno = 1
- GOTO ext
- END IF
- IF IsNull(cnt_credno) THEN cnt_credno = 0
- IF max_credno = cnt_credno THEN
- rslt_credno = max_credno + 1
- ELSE
- ds_credno.Retrieve(sys_accsetid,arg_subaccsetid,arg_cmonth,arg_credtype)
-
- FOR i = 1 To ds_credno.RowCount()
- next_credno = ds_credno.Object.credno[i]
- IF i = 1 THEN
- IF next_credno <> 1 THEN
- rslt_credno = 1
- GOTO ext
- END IF
- ELSE
- IF piror_credno + 1 <> next_credno THEN
- rslt_credno = piror_credno + 1
- GOTO ext
- END IF
- END IF
- piror_credno = next_credno
- NEXT
- END IF
- ext:
- Destroy ds_credno
- RETURN rslt_credno
- end function
- public function integer p_check_cmonth (long arg_accsetid, long arg_cmonth, ref string arg_msg);//检查月份有效性
- Int rslt = 1
- Long cnt,ls_year
- ls_year = Long(Left(String(arg_cmonth),4))
- IF s_sys_accset.curryear <> ls_year THEN
- arg_msg = '凭证年份:'+String(ls_year)+'不是当前年份:'+String(s_sys_accset.curryear)
- rslt = 0
- GOTO ext
- END IF
- IF arg_cmonth < sys_curyearmon THEN
- arg_msg = '凭证会计期间'+String(arg_cmonth)+'小于当前会计期间'+String(sys_curyearmon)
- rslt = 0
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM cw_credence
- WHERE accsetid = :arg_accsetid
- AND cmonth > :arg_cmonth
- AND postflag = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询大于月份:'+String(arg_cmonth)+'的月份是否已有凭证登帐失败,不能再录入'
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '大于月份:'+String(arg_cmonth)+'的月份已有凭证登帐,不能再录入'
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer p_check_month_date (long arg_accsetid, long arg_cmonth, datetime arg_creddate, ref string arg_msg);//检查凭证日期是否在相应的会计期间
- int rslt = 1
- long ls_year
- datetime b_date,e_date
- ls_year = long(left(string(arg_cmonth),4))
- if s_sys_accset.curryear <> ls_year then
- arg_msg = '凭证年份:'+string(ls_year)+'不是当前年份:'+string(s_sys_accset.curryear)
- rslt = 0
- goto ext
- end if
- select sdate,edate into :b_date,:e_date
- from cw_calendar
- where accsetid = :arg_accsetid
- and cmonth = :arg_cmonth;
- if sqlca.sqlcode <> 0 then
- arg_msg = '查询会计期间:'+string(arg_cmonth)+'会计月历失败'
- rslt = 0
- goto ext
- end if
- e_date = datetime(RelativeDate(date(string(e_date,'yyyy-mm-dd')),1),time(0))
- if arg_creddate < b_date or arg_creddate >= e_date then
- arg_msg = '日期:'+string(arg_creddate,'yyyy-mm-dd')+'不在会计期间内:'+string(arg_cmonth)
- rslt = 0
- goto ext
- end if
- ext:
- return rslt
- end function
- public function integer get_asset_credinfo (long arg_findtype, long arg_relid, long arg_credid, ref long arg_ref_credid, ref integer arg_ref_postflag, ref string arg_msg);Int rslt = 1
- IF arg_credid = 0 THEN
- SELECT postflag,credid
- INTO :arg_ref_postflag,:arg_ref_credid
- FROM cw_credence
- WHERE relevantbillid = :arg_relid
- AND readtype = :arg_findtype
- AND accsetid = :sys_accsetid;
- ELSE
- SELECT postflag,credid
- INTO :arg_ref_postflag,:arg_ref_credid
- FROM cw_credence
- WHERE relevantbillid = :arg_relid
- AND credid <> :arg_credid
- AND readtype = :arg_findtype
- AND accsetid = :sys_accsetid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关凭证失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF IsNull(arg_ref_postflag) THEN arg_ref_postflag = 0
- IF IsNull(arg_ref_credid) THEN arg_ref_credid = 0
- ext:
- RETURN rslt
- end function
- public function integer uof_mod_mxdscrp (long arg_accsetid, long arg_credid, long arg_fuluno, string arg_mxdscrp, ref string arg_msg);Int rslt = 1
- UPDATE cw_credencemx
- SET mxdscrp = :arg_mxdscrp
- WHERE accsetid = :arg_accsetid
- AND credid = :arg_credid
- AND fuluno = :arg_fuluno;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新分录补充备注失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSE
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer cancel_check_1 (long arg_subaccsetid, long arg_credid, integer arg_ifauto_check, ref string arg_msg, boolean arg_ifcommit);//check(arg_subaccsetid,arg_credid,ref arg_msg,arg_ifcommit)
- //0 fail 1 success
- //凭证审核
- Long rslt = 1,cnt = 0
- DateTime null_dt
- SetNull(null_dt)
- IF s_sys_accset.sameuser = 0 THEN
- IF publ_userid = billmakerid THEN
- arg_msg = '制单和审核不可以是同一个人'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF getinfo(arg_subaccsetid,arg_credid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF it_newbegin OR it_updatebegin THEN
- rslt = 0
- arg_msg = "编辑状态下不可以执行审核"
- GOTO ext
- END IF
- IF checkflag = 0 THEN
- rslt = 0
- arg_msg = "凭证还未审核"
- GOTO ext
- END IF
- IF postflag = 1 THEN
- rslt = 0
- arg_msg = '凭证已经登帐'
- GOTO ext
- END IF
- IF arg_ifauto_check = 1 AND ifauto = 1 THEN
- rslt = 0
- arg_msg = '自动凭证不能撤审'
- rslt = 0
- GOTO ext
- END IF
- UPDATE cw_credence
- SET billcheckid = '',
- billcheck = '',
- billcheckdate = :null_dt,
- checkflag = 0
- WHERE cw_credence.credid = :arg_credid
- AND cw_credence.checkflag = 1
- AND cw_credence.accsetid = :sys_accsetid
- AND cw_credence.subaccsetid = :arg_subaccsetid;
-
- 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
- checkflag = 0
- ext:
- IF rslt = 0 THEN
- ROLLBACK ;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer del (integer arg_delmode, long arg_subaccsetid, long arg_credid, ref string arg_msg, boolean arg_ifcommit);//del(arg_subaccsetid,arg_credid,ref arg_msg,arg_ifcommit)
- //如果单据还没有审核删除凭证极其明细
- //0 FAIL, 1 SUCCESS
- //arg_delmode 0:手动1:自动
- Int rslt = 1
- Boolean if_del = FALSE
- IF getinfo(arg_subaccsetid,arg_credid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF checkflag = 1 THEN
- arg_msg = '凭证已经审核,不可以删除'
- if_del = TRUE
- END IF
- IF arg_delmode = 0 THEN
- CHOOSE CASE readtype
- CASE 200
- arg_msg = '该张凭证为固定资产业务对应的凭证,不可以删除'
- if_del = TRUE
- CASE 201
- arg_msg = '该张凭证为固定资产业务折旧对应的凭证,不可以删除'
- if_del = TRUE
- CASE 202
- arg_msg = '该张凭证为固定资产清理业务对应的凭证,不可以删除'
- if_del = TRUE
- CASE 888
- arg_msg = '该张凭证为出纳业务对应的凭证,不可以删除'
- if_del = TRUE
- END CHOOSE
-
- IF ifauto = 1 THEN
- arg_msg = '业务单据自动建立的凭证,不能删除'
- rslt = 0
- GOTO ext
- END IF
-
- IF checkflag = 0 AND sys_power_issuper AND sys_option_super_del_assetcred = 1 THEN
- if_del = FALSE
- END IF
- END IF
- IF if_del THEN
- rslt = 0
- GOTO ext
- END IF
- DELETE FROM cw_CashItem
- WHERE cw_CashItem.credid = :arg_credid
- AND cw_CashItem.accsetid = :sys_accsetid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除凭证现金流量操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM cw_credence
- WHERE cw_credence.credid = :arg_credid
- AND cw_credence.accsetid = :sys_accsetid
- AND cw_credence.subaccsetid = :arg_subaccsetid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除凭证操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM cw_credencemx
- WHERE cw_credencemx.credid = :arg_credid
- AND cw_credencemx.accsetid = :sys_accsetid
- AND cw_credencemx.subaccsetid = :arg_subaccsetid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除凭证明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- ext:
- RETURN (rslt)
- end function
- public function integer acceptmx (long arg_fuluno, string arg_subid, string arg_brief, double arg_rate, decimal arg_rawdebit, decimal arg_rawcredit, decimal arg_debit, decimal arg_credit, decimal arg_amount, decimal arg_price, long arg_deptid, long arg_itemid, datetime arg_billdate, long arg_billid, string arg_billno, long arg_cropbillid, integer arg_readonly, long arg_cusid, long arg_sptid, long arg_empid, ref string arg_msg);//acceptmx(arg_fuluno,arg_subid,arg_brief,arg_rate,arg_rawdebit,arg_rawcredit,arg_debit,
- // arg_credit,arg_amount,arg_price,arg_deptid,arg_itemid,arg_billdate,arg_billid,
- // arg_billno,arg_cropbillid,arg_msg)
- //
- //RETURN 0 fail 1 success
- // 函数增加凭证明细项
- Long rslt = 1,cnt = 0,LS_i
- Int li_hswb,li_detailflag
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arG_MSG = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- //清除空值
- IF IsNull(arg_fuluno) THEN arg_fuluno = 0
- IF IsNull(arg_subid) THEN arg_subid = ''
- IF IsNull(arg_brief) THEN arg_brief = ''
- IF IsNull(arg_rate) THEN arg_rate = 0
- IF IsNull(arg_rawdebit)THEN arg_rawdebit = 0
- IF IsNull(arg_rawcredit)THEN arg_rawcredit = 0
- IF IsNull(arg_debit)THEN arg_debit = 0
- IF IsNull(arg_credit)THEN arg_credit = 0
- IF IsNull(arg_amount)THEN arg_amount = 0
- IF IsNull(arg_price)THEN arg_price = 0
- IF IsNull(arg_deptid) THEN arg_deptid = 0
- IF IsNull(arg_itemid) THEN arg_itemid = 0
- IF IsNull(arg_billid) THEN arg_billid = 0
- IF IsNull(arg_billno) THEN arg_billno = ''
- IF IsNull(arg_cusid) THEN arg_cusid = 0
- IF IsNull(arg_sptid) THEN arg_sptid = 0
- IF IsNull(arg_empid) THEN arg_empid = 0
- IF arg_subid = '' AND arg_debit = 0 AND arg_credit = 0 THEN // 如果借贷金额为 0 且摘要和科目为空,则不作任何处理
- rslt = 1
- GOTO ext
- END IF
- //IF Len(Trim(arg_brief)) > 20 AND Left(arg_brief,1) <> ' ' THEN
- // arg_brief = ' ' +arg_brief
- //END IF
- IF arg_subid = '' AND (arg_debit <> 0 OR arg_credit <> 0) THEN
- rslt = 0
- arG_MSG = '分录:'+String(arg_fuluno)+',请选择会计科目'
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt FROM cw_subject
- WHERE accsetid = :sys_accsetid
- AND subid = :arg_subid
- AND detailflag = 1;
- IF sqlca.SQLCode <> 0 THEN
- arG_MSG = '分录:'+String(arg_fuluno)+',查询科目代码失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arG_MSG = '分录:'+String(arg_fuluno)+',此帐套中不存在明细科目{'+arg_subid+'},请检查输入是否正确'
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 1 THEN
- arG_MSG = '分录:'+String(arg_fuluno)+',此帐套中存在两个相同科目{'+arg_subid+'}'
- rslt = 0
- GOTO ext
- END IF
- SELECT hswb,detailflag INTO :li_hswb,:li_detailflag
- FROM cw_subject
- WHERE accsetid = :sys_accsetid
- AND subid = :arg_subid
- AND detailflag = 1;
- IF sqlca.SQLCode <> 0 THEN
- arG_MSG = '分录:'+String(arg_fuluno)+',查询科目代码失败'
- rslt = 0
- GOTO ext
- END IF
- IF li_detailflag = 0 THEN
- arG_MSG = '分录:'+String(arg_fuluno)+','+arg_subid + '不是明细科目,不能做会计分录'
- rslt = 0
- GOTO ext
- END IF
- IF li_hswb = 1 AND arg_rate = 0 THEN
- arG_MSG = '分录:'+String(arg_fuluno)+',科目:'+arg_subid+'核算外币,会计分录没有输入汇率'
- rslt = 0
- GOTO ext
- END IF
- IF Left(arg_subid,3) <> '102' AND ( arg_billid > 0 OR arg_billno <> '' ) THEN
- arG_MSG = '分录:'+String(arg_fuluno)+',不是不银行存款科目不能输入结算方式'
- rslt = 0
- GOTO ext
- END IF
- IF arg_debit = 0 AND arg_credit = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF arg_debit <> 0 AND arg_credit <> 0 THEN
- rslt = 0
- arG_MSG = '分录:'+String(arg_fuluno)+',借方金额和贷方金额不能同时输入金额'
- GOTO ext
- END IF
- //写入内容
- it_mxbt++
- credencemx[it_mxbt].fuluno = it_mxbt //arg_fuluno
- credencemx[it_mxbt].subid = arg_subid
- credencemx[it_mxbt].brief = arg_brief
- credencemx[it_mxbt].rate = arg_rate
- credencemx[it_mxbt].rawdebit = arg_rawdebit
- credencemx[it_mxbt].rawcredit = arg_rawcredit
- credencemx[it_mxbt].debit = arg_debit
- credencemx[it_mxbt].credit = arg_credit
- credencemx[it_mxbt].amount = arg_amount
- credencemx[it_mxbt].price = arg_price
- credencemx[it_mxbt].deptid = arg_deptid
- credencemx[it_mxbt].itemid = arg_itemid
- credencemx[it_mxbt].billdate = arg_billdate
- credencemx[it_mxbt].billid = arg_billid
- credencemx[it_mxbt].billno = arg_billno
- credencemx[it_mxbt].ifreadonly = arg_readonly
- credencemx[it_mxbt].cusid = arg_cusid
- credencemx[it_mxbt].sptid = arg_sptid
- credencemx[it_mxbt].empid = arg_empid
- ext:
- IF rslt = 0 THEN p_clearmx()
- RETURN(rslt)
- end function
- on uo_credence.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_credence.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|