12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170 |
- $PBExportHeader$uo_oa_doc.sru
- forward
- global type uo_oa_doc from nonvisualobject
- end type
- end forward
- global type uo_oa_doc from nonvisualobject
- end type
- global uo_oa_doc uo_oa_doc
- type variables
- Transaction ins_tran
- long ins_docid
- Boolean it_newbegin = FALSE //新建标志
- Boolean it_updatebegin = FALSE //修改标志
- end variables
- forward prototypes
- public function long del_doc (long arg_docid, ref string arg_msg, boolean ifcommit)
- public function integer save_doc (s_oadoc arg_doc, ref string arg_msg, ref long arg_docid, boolean arg_ifcommit)
- public function integer opt_audit (long arg_powerid, long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg)
- public function integer p_reverse (long arg_docid, boolean arg_ifcommit, ref string arg_msg)
- public function integer p_init (long arg_docid, boolean arg_ifcommit, ref string arg_msg)
- public function integer p_stop (long arg_docid, boolean arg_ifcommit, ref string arg_msg)
- public function integer p_continue (long arg_docid, boolean arg_ifcommit, ref string arg_msg)
- public function integer p_check_if_oaflow (long arg_scid, long arg_billid, long arg_powerid, ref string arg_msg)
- public function integer p_create_oa_flow (long arg_powerid, long arg_scid, long arg_billid, string arg_billcode, string arg_relcode, string arg_dscrp, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_top1_sort_id (long arg_docid, ref string arg_ref_sort, ref long arg_ref_flowid, ref string arg_msg)
- public function integer p_to_nextstep (long arg_docid, long arg_sort, boolean arg_ifcommit, ref string arg_msg)
- public function integer p_add_oa_flow (long arg_docid, long arg_empid, long arg_rowid, long arg_colomnid, long arg_flowsort, string arg_dscrp, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_doc_stepadd (s_oaflow_step arg_s_oaflow_step, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_get_flow_annex (long arg_flowid, ref s_oa_doc_annex arg_s_oda[])
- public function integer set_read (long arg_docid, long arg_empid, long arg_read_flag)
- public function integer opt_caudit (long arg_powerid, long arg_type, long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg, string arg_empcontent)
- public function integer p_gree (long arg_docid, string arg_empcontent, boolean arg_ifcommit, ref string arg_msg, integer arg_ifpemp)
- public function integer p_oppose (long arg_docid, string arg_empcontent, boolean arg_ifcommit, ref string arg_msg, integer arg_ifpemp)
- public function integer uof_doc_stepdel (long arg_docid, long arg_flowsort, integer arg_deltype, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_urge (long arg_docid, string arg_urgemsg, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_disagree_back (long arg_docid, string arg_disagree_msg, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_clean_step (long arg_docid, long arg_flowsort, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_item (long arg_docid, long arg_printid, string arg_itemvalue, long arg_relid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_relqty (long arg_docid, decimal arg_relqty, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function long del_doc (long arg_docid, ref string arg_msg, boolean ifcommit);Long rslt = 1,cnt = 0
- Long ll_docflag
- If arg_docid <= 0 Then
- arg_msg = '非有效公文ID'
- rslt = 0
- Goto ext
- End If
- Select docflag Into :ll_docflag
- From oa_doc
- Where docid = :arg_docid Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '查询公文信息失败>>'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- If ll_docflag <> 0 Then
- rslt = 0
- arg_msg = '公文只有在草稿状态下才能被删除,请核对'
- Goto ext
- End If
- Delete From oa_doc_flow
- Where (oa_doc_flow.docid = :arg_docid) Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '删除公文流转失败>>'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- Delete From oa_doc_step
- Where (oa_doc_step.docid = :arg_docid) Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '删除公文流转失败>>'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- Delete From oa_doc_stepemp
- Where oa_doc_stepemp.docID = :arg_docid
- Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '删除公文流程相关人员失败'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- Delete From oa_doc_item
- Where oa_doc_item.docID = :arg_docid
- Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '删除公文自定义字段失败'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- Delete From oa_doc_copy_emp
- Where oa_doc_copy_emp.docID = :arg_docid
- Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '删除抄送对象失败'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- Delete From oa_doc_annex
- Where oa_doc_annex.docID = :arg_docid
- Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '删除公文失败(附件表)'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- Delete From oa_doc
- Where oa_doc.docID = :arg_docid
- Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '删除公文失败'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- ext:
- If ifcommit And rslt = 1 Then
- Commit Using ins_tran;
- ElseIf rslt = 0 Then
- Rollback Using ins_tran;
- End If
- Return rslt
- end function
- public function integer save_doc (s_oadoc arg_doc, ref string arg_msg, ref long arg_docid, boolean arg_ifcommit);Long rslt = 1
- Long ls_newid
- DateTime server_datetime
- String doccode
- Long ls_newdocid = 0
- Long ls_empid,ls_rowid,ls_columnid
- String ls_empcode
- Long li_flowid,ll_i
- SELECT TOP 1 getdate() INTO :server_datetime FROM u_user
- Using ins_tran;
- //取得系统时间,借用操作员表
- IF ins_tran.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF IsNull(arg_doc.doctitle) THEN arg_doc.doctitle = ''
- IF IsNull(arg_doc.doccontent) THEN arg_doc.doccontent = ''
- IF Trim(arg_doc.doctitle) = '' THEN
- arG_MSG = '缺乏公文标题'
- rslt = 0
- GOTO ext
- END IF
- IF Trim(arg_doc.doccontent) = '' THEN
- arG_MSG = '缺乏公文内容'
- rslt = 0
- GOTO ext
- END IF
- SELECT empid INTO :ls_empid
- FROM u_user
- Where username = :publ_operator Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '查询用户ID失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ls_empid < 0 THEN
- rslt = 0
- arG_MSG = '错误用户ID'
- GOTO ext
- END IF
- IF arg_doc.docid = 0 THEN //新建
- ls_newid = f_sys_scidentity(sys_scid,"oa_doc","docID",arG_MSG,True,id_sqlca)
-
- doccode = getid(sys_scid,'GW',Date(server_datetime),False,ins_tran)
-
- IF doccode = "err" THEN
- doccode = ''
- rslt = 0
- arG_MSG = "无法获取公文编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO oa_doc
- (docID,
- Doccode,
- Doctitle,
- Doccontent,
- Doccontent_ori,
- dscrp,
- docflag,
- dtype,
- billcode,
- Opemp,
- Opdt,
- rowid,
- SCID,
- BILLID,
- flowid,
- powerid,
- empid,
- timedscrp,
- specialdscrp,
- relqty,
- reldemocode,
- reldemoid
- )
- VALUES(:ls_newid,
- :doccode,
- :arg_doc.doctitle,
- :arg_doc.doccontent,
- :arg_doc.doccontent,
- :arg_doc.dscrp,
- :arg_doc.docstatus,
- :arg_doc.dtype,
- :arg_doc.billcode,
- :publ_operator,
- :server_datetime,
- :arg_doc.rowid,
- :arg_doc.SCID,
- :arg_doc.BILLID,
- :arg_doc.flowid,
- :arg_doc.powerid,
- :ls_empid,
- :arg_doc.timedscrp,
- :arg_doc.specialdscrp,
- :arg_doc.relqty,
- :arg_doc.reldemocode,
- :arg_doc.reldemoid)Using ins_tran;
-
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败1>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
-
- IF arg_doc.dtype = 0 THEN
- //dyy 2014-12-10 修改为外部传入数据保存. (由于公文模板引用生成的公文流程可能跟定义的审批流程不一致)
- FOR ll_i = 1 To UpperBound(arg_doc.arg_s_step)
- INSERT INTO oa_doc_step
- (docid,
- flowsort,
- flowstepname,
- flowempstr,
- flowinfo,
- limithour,
- ifnecessary,
- ifjoin,
- ifmod_relqty,
- ifmodfj)
- VALUES
- (:ls_newid,
- :arg_doc.arg_s_step[ll_i].flowsort,
- :arg_doc.arg_s_step[ll_i].flowstepname,
- :arg_doc.arg_s_step[ll_i].flowempstr,
- :arg_doc.arg_s_step[ll_i].flowinfo,
- :arg_doc.arg_s_step[ll_i].limithour,
- :arg_doc.arg_s_step[ll_i].ifnecessary,
- :arg_doc.arg_s_step[ll_i].ifjoin,
- :arg_doc.arg_s_step[ll_i].ifmod_relqty,
- :arg_doc.arg_s_step[ll_i].ifmodfj) Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败2,插入审核步骤失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- FOR ll_i = 1 To UpperBound(arg_doc.arg_s_stepemp)
- INSERT INTO oa_doc_stepemp
- (docid,
- flowsort,
- empid)
- VALUES
- (:ls_newid,
- :arg_doc.arg_s_stepemp[ll_i].flowsort,
- :arg_doc.arg_s_stepemp[ll_i].empid) Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败3,插入审核步骤人员信息失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- ELSE
-
- //插入流程步骤
- //如果有发起者处理的,插入发起者的empid
- INSERT INTO oa_doc_step
- (docid,
- flowsort,
- flowstepname,
- flowempstr,
- flowinfo,
- limithour,
- ifnecessary,
- ifjoin)
- SELECT :ls_newid,
- flowsort,
- flowstepname,
- case when ifopflag = 0 then flowempstr else rtrim(flowempstr) + ',' + :publ_operator END,
- flowinfo,
- limithour,
- ifnecessary,
- ifjoin
- FROM oa_flowdef_step
- Where flowid = :arg_doc.flowid Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败2>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- FOR ll_i = 1 To UpperBound(arg_doc.flowsort_arr)
- UPDATE oa_doc_step
- SET flowinfo = :arg_doc.flowinfo_arr[ll_i],
- limithour = :arg_doc.limithour_arr[ll_i]
- WHERE docid = :ls_newid
- And flowsort = :arg_doc.flowsort_arr[ll_i] Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '更新审批描述失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- // case when ifopflag = 0 then flowempstr else
- // case when CHARINDEX(:publ_operator, flowempstr) > 0 then flowempstr else
- // case when rtrim(flowempstr) = '' then :publ_operator else rtrim(flowempstr) + ',' + :publ_operator END END END
-
- //插入常规的用户empid
- INSERT INTO oa_doc_stepemp
- (docid, flowsort, empid)
- SELECT :ls_newid,oa_flowdef_stepemp.flowsort,oa_flowdef_stepemp.empid
- FROM oa_flowdef_stepemp INNER join oa_flowdef_step on
- oa_flowdef_stepemp.flowid = oa_flowdef_step.flowid AND
- oa_flowdef_stepemp.flowsort = oa_flowdef_step.flowsort
- WHERE oa_flowdef_stepemp.flowid = :arg_doc.flowid
- And oa_flowdef_step.ifopflag = 0 Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败3>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //插入发起者的empid
- INSERT INTO oa_doc_stepemp
- (docid, flowsort, empid)
- SELECT :ls_newid AS docid,
- flowsort,
- :ls_empid AS empid
- FROM oa_flowdef_step
- WHERE flowid = :arg_doc.flowid
- And (ifopflag = 1) Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败4>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- // And (CHARINDEX( :publ_operator, flowempstr) = 0)
- END IF
-
- FOR ll_i = 1 To UpperBound(arg_doc.arg_s_item)
-
- INSERT INTO oa_doc_item
- (docid,
- printid,
- itemname,
- itemtype,
- itemvalue,
- flowsort,
- ifrequired,
- relid,
- dscrp_ch,
- modemp,
- moddate,
- cell,
- ifread)
- VALUES (:ls_newid,
- :arg_doc.arg_s_item[ll_i].printid,
- :arg_doc.arg_s_item[ll_i].itemname,
- :arg_doc.arg_s_item[ll_i].itemtype,
- :arg_doc.arg_s_item[ll_i].itemvalue,
- :arg_doc.arg_s_item[ll_i].flowsort,
- :arg_doc.arg_s_item[ll_i].ifrequired,
- :arg_doc.arg_s_item[ll_i].relid,
- :arg_doc.arg_s_item[ll_i].dscrp_ch,
- :arg_doc.arg_s_item[ll_i].modemp,
- :arg_doc.arg_s_item[ll_i].moddate,
- :arg_doc.arg_s_item[ll_i].cell,
- :arg_doc.arg_s_item[ll_i].ifread) Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败,插入自定义字段>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
-
- FOR ll_i = 1 To UpperBound(arg_doc.arg_s_copy_emp)
- INSERT INTO oa_doc_copy_emp
- (docid,
- empid)
- VALUES (:ls_newid,
- :arg_doc.arg_s_copy_emp[ll_i].empid) Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败,插入抄送对象字段>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
-
- arg_docid = ls_newid
- ELSE //更新
- UPDATE oa_doc
- SET Doctitle = :arg_doc.doctitle,
- Doccontent = :arg_doc.doccontent,
- dscrp = :arg_doc.dscrp,
- dtype = :arg_doc.dtype,
- billcode = :arg_doc.billcode,
- mdfemp = :publ_operator,
- mdfdt = :server_datetime,
- rowid = :arg_doc.rowid,
- SCID = :ARG_doc.SCID,
- BILLID = :ARG_DOC.BILLID,
- flowid = :arg_doc.flowid,
- timedscrp = :arg_doc.timedscrp,
- specialdscrp = :arg_doc.specialdscrp,
- relqty = :arg_doc.relqty,
- reldemocode = :arg_doc.reldemocode,
- reldemoid = :arg_doc.reldemoid
- WHERE docID = :arg_doc.docid
- Using ins_tran;
-
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '更新公告失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_doc.dtype = 0 THEN
- DELETE FROM oa_doc_step
- Where (oa_doc_step.docid = :arg_doc.docid) Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '删除公文流转失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- DELETE FROM oa_doc_stepemp
- WHERE oa_doc_stepemp.docID = :arg_doc.docid
- Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '删除公文流程相关人员失败'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- DELETE FROM oa_doc_item
- WHERE oa_doc_item.docID = :arg_doc.docid
- Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '删除公文自定义字段失败'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- DELETE FROM oa_doc_copy_emp
- WHERE docid = :arg_doc.docid
- Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '删除抄送对象失败'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //dyy 2014-12-10 修改为外部传入数据保存. (由于公文模板引用生成的公文流程可能跟定义的审批流程不一致)
- FOR ll_i = 1 To UpperBound(arg_doc.arg_s_step)
- INSERT INTO oa_doc_step
- (docid,
- flowsort,
- flowstepname,
- flowempstr,
- flowinfo,
- limithour,
- ifnecessary,
- ifjoin,
- ifmod_relqty,
- ifmodfj)
- VALUES
- (:arg_doc.docid,
- :arg_doc.arg_s_step[ll_i].flowsort,
- :arg_doc.arg_s_step[ll_i].flowstepname,
- :arg_doc.arg_s_step[ll_i].flowempstr,
- :arg_doc.arg_s_step[ll_i].flowinfo,
- :arg_doc.arg_s_step[ll_i].limithour,
- :arg_doc.arg_s_step[ll_i].ifnecessary,
- :arg_doc.arg_s_step[ll_i].ifjoin,
- :arg_doc.arg_s_step[ll_i].ifmod_relqty,
- :arg_doc.arg_s_step[ll_i].ifmodfj) Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败2,插入审核步骤失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- FOR ll_i = 1 To UpperBound(arg_doc.arg_s_stepemp)
- INSERT INTO oa_doc_stepemp
- (docid,
- flowsort,
- empid)
- VALUES
- (:arg_doc.docid,
- :arg_doc.arg_s_stepemp[ll_i].flowsort,
- :arg_doc.arg_s_stepemp[ll_i].empid) Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败3,插入审核步骤人员信息失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- FOR ll_i = 1 To UpperBound(arg_doc.arg_s_item)
-
- INSERT INTO oa_doc_item
- (docid,
- printid,
- itemname,
- itemtype,
- itemvalue,
- flowsort,
- ifrequired,
- relid,
- dscrp_ch,
- modemp,
- moddate,
- cell,
- ifread)
- VALUES (:arg_doc.docid,
- :arg_doc.arg_s_item[ll_i].printid,
- :arg_doc.arg_s_item[ll_i].itemname,
- :arg_doc.arg_s_item[ll_i].itemtype,
- :arg_doc.arg_s_item[ll_i].itemvalue,
- :arg_doc.arg_s_item[ll_i].flowsort,
- :arg_doc.arg_s_item[ll_i].ifrequired,
- :arg_doc.arg_s_item[ll_i].relid,
- :arg_doc.arg_s_item[ll_i].dscrp_ch,
- :arg_doc.arg_s_item[ll_i].modemp,
- :arg_doc.arg_s_item[ll_i].moddate,
- :arg_doc.arg_s_item[ll_i].cell,
- :arg_doc.arg_s_item[ll_i].ifread) Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败,插入自定义字段>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
-
- FOR ll_i = 1 To UpperBound(arg_doc.arg_s_copy_emp)
- INSERT INTO oa_doc_copy_emp
- (docid,
- empid)
- VALUES (:arg_doc.docid,
- :arg_doc.arg_s_copy_emp[ll_i].empid) Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arG_MSG = '发布公告失败,插入抄送对象字段>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
- END IF
-
- arg_docid = arg_doc.docid
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using ins_tran;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using ins_tran;
- END IF
- RETURN rslt
- end function
- public function integer opt_audit (long arg_powerid, long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- If arg_billid <= 0 Then
- rslt = 0
- arg_msg = '错误的单据唯一码'
- Goto ext
- End If
- Choose Case arg_powerid
- Case 6,1324 //'销售订单审核'
- uo_saletask obj_saletask
- obj_saletask = Create uo_saletask
- obj_saletask.commit_transaction = sqlca
- obj_saletask.audit_buildtype = 1
-
- If obj_saletask.propermit(arg_Scid,arg_billid,publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- Destroy obj_saletask
- Case 94,1277,4299 //'采购订单'
- uo_buytask uo_buy
- uo_buy = Create uo_buytask
- uo_buy.commit_transaction = sqlca
- uo_buy.audit_buildtype = 1
-
- If uo_buy.firstpermit(arg_Scid,arg_billid,publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- Destroy uo_buy
-
- Case 36,1138
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- uo_order.audit_buildtype = 1
-
- If uo_order.sec_audit(arg_Scid,arg_billid,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- Destroy uo_order
-
- Case 461
- uo_quote uo_qu
- uo_qu = Create uo_quote
- uo_qu.commit_transaction = sqlca
- uo_qu.audit_buildtype = 1
-
- If uo_qu.sec_audit(arg_Scid,arg_billid,publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- Destroy uo_qu
- Case 1684,2234
- uo_sptcheck uo_check
- uo_check = Create uo_sptcheck
- uo_check.audit_buildtype = 1
-
- If uo_check.audit(arg_billid,publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- Destroy uo_check
- Case 1494
- uo_workprice_change uo_workprice
- uo_workprice = Create uo_workprice_change
- uo_workprice.audit_buildtype = 1
-
- If uo_workprice.audit(arg_billid,publ_operator,arg_msg,False) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- Destroy uo_workprice
- Case 2404
- uo_price_order uo_price
- uo_price = Create uo_price_order
-
- If uo_price.secaudit(arg_billid,publ_operator,False,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- Destroy uo_price
- case 4174
- uo_requestbuy uo_rqbuy
- uo_rqbuy = create uo_requestbuy
- uo_rqbuy.audit_buildtype = 1
- If uo_rqbuy.audit_2(arg_scid,arg_billid,publ_operator,arg_msg,false) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- Destroy uo_rqbuy
- End Choose
- ext:
- If rslt = 0 Then
- Rollback Using ins_tran;
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit Using ins_tran;
- End If
- Return rslt
- end function
- public function integer p_reverse (long arg_docid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- Long ls_rowid,ls_empid
- Long li_cnt
- Long ls_dtype,ls_scid,ls_billid,ls_powerid
- Long LL_docflag
- DateTime nulldate
- SetNull(nulldate)
- li_cnt = 0
- SELECT count(*)
- INTO :li_cnt
- FROM oa_doc
- Where docid = :arg_docid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败:'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_cnt <= 0 THEN
- rslt = 0
- arg_msg = '错误的公文唯一码'
- GOTO ext
- END IF
- SELECT rowid,dtype,scid,billid,powerid,docflag
- INTO :ls_rowid ,:ls_dtype,:ls_scid,:ls_billid,:ls_powerid,:LL_docflag
- FROM oa_doc
- Where docid = :arg_docid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询公文ID失败1>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- SELECT empid INTO :ls_empid
- FROM u_user
- Where username = :publ_operator;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询用户ID失败>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //该人员所在的流转列
- li_cnt = 0
- SELECT count(*) INTO :li_cnt
- FROM oa_doc_flow
- WHERE oa_doc_flow.docid = :arg_docid AND
- oa_doc_flow.empid = :ls_empid AND
- oa_doc_flow.passed = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,当前人员公文流转列:'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_cnt = 0 THEN
- rslt = 0
- arg_msg = '你没有执行过审批操作,无须逆处理'
- GOTO ext
- END IF
- Long ll_emp_rowid,ll_flowsort
- SELECT TOP 1 oa_doc_flow.rowid,oa_doc_flow.flowsort
- INTO :ll_emp_rowid,:ll_flowsort
- FROM oa_doc_flow
- WHERE oa_doc_flow.docid = :arg_docid AND
- oa_doc_flow.empid = :ls_empid AND
- oa_doc_flow.passed = 1
- Order By oa_doc_flow.rowid Desc Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,当前人员公文流转列:'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ls_rowid > ll_emp_rowid + 1 THEN
- rslt = 0
- arg_msg = '你的下一级审批人员已经处理过该公文,不能进行逆处理'
- GOTO ext
- ELSEIF ls_rowid < ll_emp_rowid + 1 And LL_docflag = 1 THEN
- rslt = 0
- arg_msg = '你还未处理过该公文,不能进行逆处理'
- GOTO ext
- END IF
- li_cnt = 0
- SELECT count(distinct rowid) INTO :li_cnt
- FROM oa_doc_flow
- Where docid = :arg_docid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询公文ID失败2>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- //IF ls_rowid = li_cnt + 1 THEN //公文已经完成情况
- IF ls_rowid <> 2 THEN
- IF LL_docflag = 11 THEN
-
- UPDATE oa_doc
- SET docflag = 1,
- fnsdt = :nulldate,
- fnsemp = ''
- Where docid = :arg_docid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新公文ID失败4>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ls_dtype = 1 THEN
-
- IF opt_caudit(ls_powerid,0,ls_scid, ls_billid, False,arg_msg,'') = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- END IF
-
- UPDATE oa_doc
- SET rowid = :ll_emp_rowid,
- docflag = 1,
- flowsort = :ll_flowsort
- Where docid = :arg_docid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新公文ID失败2>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE oa_doc_flow
- SET Passed = 0,Empcontent = '',greetime = :nulldate
- WHERE docid = :arg_docid AND
- rowid = :ll_emp_rowid AND
- empid = :ls_empid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新公文ID失败3>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ELSE //反发起,初始化为草稿状态
- UPDATE oa_doc
- SET rowid = :ll_emp_rowid,
- docflag = 0,
- flowsort = 0
- Where docid = :arg_docid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新公文ID失败2>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- DELETE FROM oa_doc_flow
- Where docid = :arg_docid ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "删除原有流程失败,请重试!"+'~n'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using ins_tran;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using ins_tran;
- END IF
- RETURN rslt
- end function
- public function integer p_init (long arg_docid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- Long ls_flowid = 0
- Long ls_empid = 0
- Long ls_rowid = 0
- String ls_dscrp
- Int li_if_rivet
- String ls_flowstepname[],ls_flowempstr[]
- Long ls_flowsort[]
- Int li_ifopflag[]
- Int li_limithour[]
- Long i,ll_i,ll_j
- Long ls_colomnid
- Long ll_ds_rowcount,ls_i
- String ls_Empcontent
- Long ll_empid_arr[],ll_mxbt
- String ls_doctitle,ls_doccontent
- Long ll_pushid
- uo_phone_push uo_push
- uo_push = Create uo_phone_push
- Select flowid,rowid,doctitle,doccontent
- Into :ls_flowid,:ls_rowid,:ls_doctitle,:ls_doccontent
- From oa_doc
- Where oa_doc.docID = :arg_docid Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询公文所用流程ID失败>>'+ins_tran.SQLErrText
- Goto ext
- End If
- If ls_flowid <= 0 Then
- rslt = 0
- arg_msg = '错误公文流程'
- Goto ext
- End If
- //如果审批流程类型是直接完成审核,则调用归档函数
- Select if_rivet
- Into :li_if_rivet
- From OA_FLOWDEF
- Where flowid = :ls_flowid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询审核流程是否直接完成审批类型失败,'+sqlca.SQLErrText
- Goto ext
- End If
- ls_dscrp = '发起人['+publ_operator+']发起公文流转!'
- Select empid Into :ls_empid
- From u_user
- Where Username = :publ_operator Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '查询用户ID失败>>'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- If ls_empid < 0 Then
- rslt = 0
- arg_msg = '错误用户ID'
- Goto ext
- End If
- //先删除旧流程表
- Delete From oa_doc_flow
- Where docID = :arg_docid Using ins_tran ;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = "公文新建失败,请重试!"+'~n'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- //插入流程列表
- //1.插入第一行:发起公文
- If li_if_rivet <> 2 Then
- ls_Empcontent = '发起通过'
- Else
- ls_Empcontent = '发起通过并直接完成审批'
- End If
- Insert Into oa_doc_flow
- (
- Docid,
- Empid,
- rowid,
- columnid,
- flowsort,
- dscrp,
- Passed ,
- Empcontent,
- greetime
- )
- Values
- (
- :arg_docid,
- :ls_empid,
- 1,
- 1,
- 0,
- :ls_dscrp,
- 1,
- :ls_Empcontent,
- getdate()
- ) Using ins_tran ;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = "公文新建失败,请重试!"+'~n'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- //查找流程列表,如果是直接完成批审类型,不需要此步骤
- If li_if_rivet <> 2 Then
- ls_colomnid = 0
- i = 1
-
- Declare cur_mx Cursor For
- Select oa_doc_step.flowstepname,
- oa_doc_step.flowsort,
- oa_doc_step.flowempstr,
- oa_doc_step.limithour
- From oa_doc_step
- Where oa_doc_step.docid = :arg_docid
- Order By oa_doc_step.flowsort Using ins_tran ;
- Open cur_mx;
- Fetch cur_mx Into :ls_flowstepname[i],:ls_flowsort[i],:ls_flowempstr[i],:li_limithour[i];
- Do While ins_tran.SQLCode = 0
- i++
- Fetch cur_mx Into :ls_flowstepname[i],:ls_flowsort[i],:ls_flowempstr[i],:li_limithour[i];
- Loop
-
- Close cur_mx;
-
- If i <= 1 Then
- rslt = 0
- arg_msg = '没有指定审批步骤!'
- Goto ext
- End If
-
-
- datastore ds_oa_flow
- ds_oa_flow = Create datastore
- ds_oa_flow.DataObject = "ds_oa_flow_emp_choose"
- ds_oa_flow.SetTransObject(ins_tran)
-
- ll_mxbt = 0
- For ll_i = 1 To i - 1
-
- ds_oa_flow.Retrieve(arg_docid,ls_flowsort[ll_i])
- ll_ds_rowcount = ds_oa_flow.RowCount()
- If ll_ds_rowcount <= 0 Then
- rslt = 0
- arg_msg = '可能是单据指定流程失败,或者审批流程没有指定审批步骤.'
- Goto ext
- End If
-
- ls_colomnid = 0
- For ll_j = 1 To ll_ds_rowcount
-
- ls_empid = ds_oa_flow.Object.empid[ll_j]
-
- If ll_i = 1 Then
- ll_mxbt++
- ll_empid_arr[ll_mxbt] = ls_empid
- End If
-
- ls_colomnid++
- Insert Into oa_doc_flow
- (
- Docid,
- Empid,
- rowid,
- columnid,
- flowsort,
- dscrp,
- limithour
- )
- Values
- (
- :arg_docid,
- :ls_empid,
- :ll_i + 1,
- :ls_colomnid,
- :ls_flowsort[ll_i],
- '',
- :li_limithour[ll_i]
- ) Using ins_tran ;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = "公文新建失败,请重试!"+'~n'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- Next
-
- Next
- End If
- Update oa_doc
- Set oa_doc.docflag = 1
- Where oa_doc.docID = :arg_docid Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新公文状态失败>>'+ins_tran.SQLErrText
- Goto ext
- End If
- Update oa_doc
- Set rowid = 2,flowsort = :ls_flowsort[1]
- Where docID = :arg_docid Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '更新公文ID失败2>>'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- Update oa_doc_flow
- Set read_flag = 0,
- limittime = DATEADD(hh, limithour, getdate())
- Where docID = :arg_docid And rowid = 2 Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '更新公文为未读失败>>'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- //如果是直接完成审批类型,调用归档函数
- If li_if_rivet = 2 Then
- If p_to_nextstep(arg_docid,-1,False,arg_msg) = 0 Then
- arg_msg = '公文归档失败>>'+arg_msg
- rslt = 0
- Goto ext
- End If
- End If
- //发送手机推送
- If li_if_rivet <> 2 Then
- If uo_push.uf_add(ll_empid_arr, ls_doctitle, ls_doccontent, 'oatome', String(arg_docid), ll_pushid, arg_msg, False) <> 1 Then
- rslt = 0
- Goto ext
- End If
- End If
- ext:
- If rslt = 0 Then
- Rollback Using ins_tran;
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit Using ins_tran;
- End If
- Destroy uo_push
- Return rslt
- end function
- public function integer p_stop (long arg_docid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- UPDATE oa_doc
- SET oa_doc.docflag = 10
- Where oa_doc.docID = :arg_docid USING ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新公文失败>>'+ins_tran.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING ins_tran;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING ins_tran;
- END IF
- RETURN rslt
- end function
- public function integer p_continue (long arg_docid, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- UPDATE oa_doc
- SET oa_doc.docflag = 1
- Where oa_doc.docID = :arg_docid USING ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新公文失败>>'+ins_tran.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING ins_tran;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING ins_tran;
- END IF
- RETURN rslt
- end function
- public function integer p_check_if_oaflow (long arg_scid, long arg_billid, long arg_powerid, ref string arg_msg);Long RSLT = 1
- Long CNT
- Long ls_doc_status
- SELECT COUNT(*)
- INTO :CNT
- FROM oa_doc
- Where dtype = 1 AND powerid = :arg_powerid AND SCID = :ARG_SCID AND BILLID = :ARG_BILLID USING SQLCA;
- IF SQLCA.SQLCode <> 0 THEN
- RSLT = 0
- ARG_MSG = '查询操作失败:OA审批公文:'+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF CNT <= 0 THEN
- RSLT = 0
- ARG_MSG = '没有发现对应审批流程'
- GOTO ext
- END IF
- SELECT docflag
- INTO :ls_doc_status
- FROM oa_doc
- Where dtype = 1 AND powerid = :arg_powerid AND SCID = :ARG_SCID AND BILLID = :ARG_BILLID USING SQLCA;
- IF SQLCA.SQLCode <> 0 THEN
- RSLT = 0
- ARG_MSG = '查询操作失败:OA审批公文状态:'+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_doc_status = 1 THEN
- RSLT = 0
- ARG_MSG = '该单据正处于待OA流程审批中,不能删改、审核、撤审'
- GOTO ext
- ELSEIF ls_doc_status = 10 THEN
- RSLT = 0
- ARG_MSG = '该单据正处于OA流程暂停审批中,不能删改、审核、撤审'
- GOTO ext
- ELSEIF ls_doc_status = 11 THEN
- RSLT = 0
- ARG_MSG = '该单据已经完成OA流程审批,不能删改、审核、撤审'
- GOTO ext
- END IF
- ext:
- RETURN RSLT
- end function
- public function integer p_create_oa_flow (long arg_powerid, long arg_scid, long arg_billid, string arg_billcode, string arg_relcode, string arg_dscrp, boolean arg_ifcommit, ref string arg_msg);Long rslt = 0
- Long cnt = 0
- Decimal ls_sumqty,ls_sumamt ,ls_disqty,ls_disamt,ld_rebate
- Long ls_flowid,ls_billtypeid,arg_docid
- Long ll_typeid,ll_ordertype
- Decimal ld_minqty,ld_minprice
- Decimal ld_sum_checkqty,ld_min_checkqty
- Dec lde_wrkchg_new_qty, lde_wrkchg_chgname_qty //工价表变更单, 明细新增类型的条目数量,修改类型工序名称变更的条目数量
- Int li_kind //高级价格策略类型
- String ls_poexpr //高级价格策略表示式
- Decimal ld_poexpr_price //价格策略目标价
- Decimal ld_poexpr_rebate // 价格策略目标价折扣
- Decimal ld_list_price //价格表单价
- String ls_cuskind
- Long ll_buykind
- String ls_argname,ls_sqlstr
- Decimal ld_argrslt
- String ls_colname
- String ls_kindname,ls_cussptname,ls_moneyname
- String ls_mtrlname, ls_mtrlmode,ls_unit
- Decimal ld_qty,ld_price
- String ls_status,ls_woodcode,ls_pcode
- Long ll_deptid,ll_mtrltypeid
- Decimal ld_peramt ,ld_price_dept
- IF arg_powerid = 0 THEN
- rslt = 0
- ARG_MSG = '错误的权限ID'
- GOTO ext
- END IF
- CHOOSE CASE arg_powerid
- CASE 6,1324 //'销售订单审核'
- SELECT SUM(u_SaleTaskMx.SaleQty) AS sumqty,
- SUM(u_SaleTaskMx.Price * u_SaleTaskMx.SaleQty) AS sumamt
- INTO :ls_sumqty,:ls_sumamt
- FROM u_SaleTaskMx INNER JOIN
- u_SaleTask ON u_SaleTaskMx.scid = u_SaleTask.scid AND
- u_SaleTaskMx.TaskID = u_SaleTask.TaskID
- WHERE u_SaleTask.Status = 4
- AND u_SaleTask.scid = :arg_Scid
- And u_SaleTask.TaskID = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询操作失败,销售订单总数量、总金额:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT u_SaleTask.typeid INTO :ll_typeid
- FROM u_saletask
- WHERE u_SaleTask.Status = 4
- AND u_SaleTask.scid = :arg_Scid
- And u_SaleTask.TaskID = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询操作失败,销售订单分类:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ls_sumamt = Round(ls_sumamt,2)
-
- ls_disqty = 0
- ls_disamt = 0
- ld_rebate = 1
-
-
- SELECT u_saletype.typename,
- u_cust.name,
- cw_currency.name
- INTO :ls_kindname,
- :ls_cussptname,
- :ls_moneyname
- FROM u_SaleTask LEFT OUTER JOIN
- u_cust ON u_SaleTask.CusID = u_cust.cusid LEFT OUTER JOIN
- cw_currency ON u_SaleTask.moneyid = cw_currency.moneyid LEFT OUTER JOIN
- u_saletype ON u_SaleTask.typeid = u_saletype.typeid
- WHERE u_saletask.scid = :arg_scid
- And u_SaleTask.TaskID = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- ls_kindname = ''
- ls_cussptname = ''
- ls_moneyname = ''
- END IF
-
- IF ls_moneyname = '人民币' THEN ls_moneyname = '元'
- IF ls_cussptname <> '' THEN ls_cussptname = '客户:'+ls_cussptname
-
-
- SELECT top 1 u_mtrldef.mtrlname,
- u_mtrldef.mtrlmode,
- u_SaleTaskMx.SaleQty,
- u_mtrldef.unit,
- u_SaleTaskMx.enprice
- INTO :ls_mtrlname,
- :ls_mtrlmode,
- :ld_qty,
- :ls_unit,
- :ld_price
- FROM u_SaleTaskMx INNER JOIN
- u_mtrldef ON u_SaleTaskMx.MtrlID = u_mtrldef.mtrlid
- WHERE u_SaleTaskMx.scid = :arg_scid
- AND u_SaleTaskMx.taskid = :arg_billid
- Order By u_SaleTaskMx.SaleQty * u_SaleTaskMx.enprice Desc Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- ls_mtrlname = ''
- ls_mtrlmode = ''
- ld_qty = 0
- ls_unit = ''
- ld_price = 0
- END IF
-
- CASE 94,1277,4299
- SELECT SUM(u_buytaskmx.uQty) AS sumqty,
- SUM(u_buytaskmx.uprice * u_buytaskmx.uQty) AS sumamt
- INTO :ls_sumqty,:ls_sumamt
- FROM u_buytaskmx INNER JOIN
- u_buytask ON u_buytaskmx.scid = u_buytask.scid AND
- u_buytaskmx.TaskID = u_buytask.TaskID
- WHERE u_buytask.Status = 4
- AND u_buytask.scid = :arg_Scid
- And u_buytask.TaskID = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询操作失败,采购订单总数量、总金额:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT kind
- INTO :ll_buykind
- FROM u_buyTask
- WHERE scid = :arg_scid
- And TaskID = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询操作失败,采购订单分类:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ls_sumamt = Round(ls_sumamt,2)
-
- ls_disqty = 0
- ls_disamt = 0
- ld_rebate = 1
-
- SELECT u_buytype.typename,
- u_spt.name,
- cw_currency.name
- INTO :ls_kindname,
- :ls_cussptname,
- :ls_moneyname
- FROM u_buyTask INNER JOIN
- u_spt ON u_buyTask.sptID = u_spt.sptid INNER JOIN
- cw_currency ON u_buyTask.moneyid = cw_currency.moneyid LEFT OUTER JOIN
- u_buytype ON u_buyTask.kind = u_buytype.typeid
- WHERE u_buytask.scid = :arg_scid
- And u_buytask.TaskID = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- ls_kindname = ''
- ls_cussptname = ''
- ls_moneyname = ''
- END IF
-
- IF ls_moneyname = '人民币' THEN ls_moneyname = '元'
- IF ls_cussptname <> '' THEN ls_cussptname = '供应商:'+ls_cussptname
-
- SELECT top 1 u_mtrldef.mtrlname,
- u_mtrldef.mtrlmode,
- u_buyTaskMx.uqty,
- u_buyTaskMx.unit,
- u_buytaskmx.enprice
- INTO :ls_mtrlname,
- :ls_mtrlmode,
- :ld_qty,
- :ls_unit,
- :ld_price
- FROM u_buyTaskMx INNER JOIN
- u_mtrldef ON u_buyTaskMx.MtrlID = u_mtrldef.mtrlid
- WHERE u_buytaskmx.taskid = :arg_billid
- AND u_buytaskmx.scid = :arg_scid
- Order By u_buytaskmx.uQty * u_buytaskmx.enprice Desc Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- ls_mtrlname = ''
- ls_mtrlmode = ''
- ld_qty = 0
- ls_unit = ''
- ld_price = 0
- END IF
-
-
-
-
- CASE 36,1138
- SELECT orderqty ,ordertype
- INTO :ls_sumqty,:ll_ordertype
- FROM u_order_ml
- WHERE scid = :arg_scid
- AND orderid = :arg_billid
- And Status = 4 Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询操作失败,生产数量:'+sqlca.SQLErrText
- GOTO ext
- END IF
- CASE 461
- SELECT min(qty),min(sumprice_1)
- INTO :ld_minqty,:ld_minprice
- FROM u_quotemx
- WHERE scid = :arg_scid
- AND quoteid = :arg_billid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询操作失败,销售报价单:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ld_minprice = Round(ld_minprice,10)
-
- CASE 1684,2234
- SELECT sum(u_sptcheck_mx.checkqty)
- INTO :ld_sum_checkqty
- FROM u_sptcheck_mx INNER JOIN
- u_sptcheck ON u_sptcheck_mx.billid = u_sptcheck.billid
- WHERE u_sptcheck.scid = :arg_scid
- And u_sptcheck_mx.billid = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询总来单质检数操作失败,供应商质检单:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT min(u_sptcheck_mx.checkqty)
- INTO :ld_min_checkqty
- FROM u_sptcheck_mx INNER JOIN
- u_sptcheck ON u_sptcheck_mx.billid = u_sptcheck.billid
- WHERE u_sptcheck.scid = :arg_scid
- And u_sptcheck_mx.billid = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询最少来单质检数操作失败,供应商质检单:'+sqlca.SQLErrText
- GOTO ext
- END IF
- CASE 1494 //工价表变更单 //明细存在新增或变更类型改过工序名称的
- SELECT sum(CASE u_workprice_changemx.editflag when 1 THEN 1 ELSE 0 END ),
- sum(CASE u_workprice_changemx.editflag when 0 Then (CASE when u_workprice_changemx.proname <> u_workprice_changemx.proname_ori THEN 1 ELSE 0 END) ELSE 0 END)
- Into :lde_wrkchg_new_qty,:lde_wrkchg_chgname_qty
- From u_workprice_change Inner JOIN
- u_workprice_changemx On u_workprice_change.billid = u_workprice_changemx.billid
- Where u_workprice_change.billid = :arg_billid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询操作失败,工价表变更单:'+sqlca.SQLErrText
- GOTO ext
- END IF
- CASE 2404 //高级价格策略
- SELECT u_price_order.kind,
- u_price_order.poexpr,
- ISNULL(v_sale_price.price, 0) ,
- isnull(u_cust.cuskind,'')
- INTO :li_kind,
- :ls_poexpr,
- :ld_list_price,
- :ls_cuskind
- FROM u_price_order LEFT OUTER JOIN
- u_cust ON u_price_order.cusid = u_cust.cusid LEFT OUTER JOIN
- (SELECT pricelistid, mtrlid, MAX(price) AS price
- FROM u_sale_price_mx
- GROUP BY pricelistid, mtrlid) v_sale_price ON
- u_price_order.mtrlid = v_sale_price.mtrlid AND
- u_cust.pricelistid = v_sale_price.pricelistid
- Where u_price_order.poid = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询操作失败,高级价格策略:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF li_kind = 1 THEN
- ld_poexpr_price = f_price_order_poexpr(ls_poexpr)
- ELSE
- ld_poexpr_price = 0
- END IF
-
- ld_poexpr_price = Round(ld_poexpr_price,10)
-
- IF ld_list_price = 0 THEN
- ld_poexpr_rebate = 0
- ELSE
- ld_poexpr_rebate = ld_poexpr_price / ld_list_price
- END IF
-
- ld_poexpr_rebate = Round(ld_poexpr_rebate,2)
-
- ls_cuskind = '"'+ls_cuskind+'"'
- CASE 4174
- //非产生类物料申购单
- SELECT top 1 u_mtrldef.mtrlname,
- u_requestbuymxmx.status,
- u_requestbuymxmx.woodcode,
- u_requestbuymxmx.pcode,
- u_requestbuymxmx.uqty,
- u_requestbuymxmx.unit,
- u_requestbuymxmx.price,
- u_requestbuy.deptid,
- u_mtrldef.mtrltypeid,
- isnull(u_dept_peramt.peramt,0)
- INTO :ls_mtrlname,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ld_qty,
- :ls_unit,
- :ld_price_dept,
- :ll_deptid,
- :ll_mtrltypeid,
- :ld_peramt
- FROM u_requestbuymxmx INNER JOIN
- u_mtrldef ON u_requestbuymxmx.mtrlid = u_mtrldef.mtrlid INNER JOIN
- u_requestbuy ON u_requestbuymxmx.scid = u_requestbuy.scid AND
- u_requestbuymxmx.requestbuyid = u_requestbuy.requestbuyid LEFT OUTER JOIN
- u_dept_peramt ON u_requestbuy.deptid = u_dept_peramt.deptid AND
- u_mtrldef.mtrltypeid = u_dept_peramt.mtrltypeid
- WHERE u_requestbuymxmx.scid = :arg_scid
- AND u_requestbuymxmx.requestbuyid = :arg_billid
- Order By u_requestbuymxmx.Price Desc Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- ls_mtrlname = ''
- ls_status = ''
- ls_woodcode = ''
- ls_pcode = ''
- ld_qty = 0
- ls_unit = ''
- ld_price_dept = 0
- ll_deptid = 0
- ll_mtrltypeid = 0
- ld_peramt = 0
- END IF
-
- ld_price = ld_price_dept
- ls_sumamt = Round(ld_qty * ld_price,5)
-
-
- END CHOOSE
- String ls_temp
- Long i,j
- Boolean if_find = False
- Long rslt_flowid = 0,rslt_billtype = 0
- String ls
- Long s_rtn
- datastore ds_flow_set
- ds_flow_set = Create datastore
- ds_flow_set.DataObject = 'ds_oa_flow_set'
- ds_flow_set.SetTransObject( sqlca)
- ds_flow_set.Retrieve(arg_powerid)
- IF ds_flow_set.RowCount( ) <= 0 THEN
- rslt = 0
- ARG_MSG = '没有设置审批条件'
- GOTO ext
- END IF
- datastore ds_parm
- ds_parm = Create datastore
- ds_parm.DataObject = 'ds_oa_flow_sqlarg'
- ds_parm.SetTransObject(sqlca)
- ds_parm.Retrieve(arg_powerid)
- FOR i = 1 To ds_flow_set.RowCount( )
- ls_temp = ds_flow_set.Object.relation[i]
-
- FOR j = 1 To ds_parm.RowCount()
- ls_argname = ds_parm.Object.argname[j]
- ls_sqlstr = ds_parm.Object.sqlstr[j]
-
- IF ls_sqlstr = '' THEN CONTINUE
-
- ls_argname = '['+ls_argname+']'
-
- SELECT Top 1 Replace(:ls_sqlstr,':arg_id',:arg_billid) Into :ls_sqlstr From u_user;
-
- IF Pos(ls_temp,ls_argname) > 0 THEN
-
- DECLARE cur_get Dynamic Cursor FOR sqlsa ;
-
- PREPARE sqlsa From :ls_sqlstr ;
- OPEN Dynamic cur_get;
- FETCH cur_get Into :ld_argrslt;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询自定义sql参数:'+ls_argname+' 的值失败'
- GOTO ext
- END IF
-
- CLOSE cur_get;
-
- SELECT Top 1 Replace(:ls_temp,:ls_argname,:ld_argrslt) Into :ls_temp From u_user;
-
- END IF
- NEXT
-
-
- SELECT Top 1 Replace(:ls_temp,'采购订单分类',:ll_buykind) Into :ls_temp From u_user;
-
-
- SELECT Top 1 Replace(:ls_temp,'总数量',:ls_sumqty) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'总金额',:ls_sumamt) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'订单分类',:ll_typeid) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'计划类型',:ll_ordertype) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'客户还价',:ld_minprice) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'报价数量',:ld_minqty) Into :ls_temp From u_user;
-
- SELECT Top 1 Replace(:ls_temp,'总来单质检数',:ld_sum_checkqty) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'最少来单质检数',:ld_min_checkqty) Into :ls_temp From u_user;
-
- SELECT Top 1 Replace(:ls_temp,'新增类型条目数量',:lde_wrkchg_new_qty) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'修改类型且变更工序名条目数量',:lde_wrkchg_chgname_qty) Into :ls_temp From u_user;
-
- SELECT Top 1 Replace(:ls_temp,'价格策略类型',:li_kind) Into :ls_temp From u_user;
- // Select Top 1 Replace(:ls_temp,'价格限制',0) Into :ls_temp From u_user;
- // Select Top 1 Replace(:ls_temp,'价格指定',1) Into :ls_temp From u_user;
- // Select Top 1 Replace(:ls_temp,'折扣指定',2) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'价格策略目标价折扣',:ld_poexpr_rebate) Into :ls_temp From u_user;
-
- SELECT Top 1 Replace(:ls_temp,'价格策略目标价',:ld_poexpr_price) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'客户分类',:ls_cuskind) Into :ls_temp From u_user;
-
- SELECT Top 1 Replace(:ls_temp,'非生产物料类别',:ll_mtrltypeid) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'非生产部门',:ll_deptid) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'参考单价',:ld_price_dept) Into :ls_temp From u_user;
- SELECT Top 1 Replace(:ls_temp,'月预算',:ld_peramt) Into :ls_temp From u_user;
-
- ls_temp = 'if('+ls_temp+',1,0)'
-
- ls = ds_flow_set.Modify("aa.expression='"+ls_temp+"'")
- s_rtn = Long(ds_flow_set.Object.aa[i])
-
- IF s_rtn = 1 THEN
- rslt_flowid = ds_flow_set.Object.flowid[i]
- rslt_billtype = ds_flow_set.Object.BilltypeAD[i]
- rslt = 1
- if_find = True
- EXIT
- END IF
-
- NEXT
- IF Not if_find THEN
- rslt = 0
- ARG_MSG = '没有合适的审批流程,可能审批条件没有设置'
- GOTO ext
- END IF
- uo_oa_doc uo_tran
- uo_tran = Create uo_oa_doc
- uo_tran.ins_tran = sqlca
- Long ls_settypeid
- ls_settypeid = f_oa_find_settype(arg_powerid)
- s_oadoc s_savedoc
- IF ls_settypeid > 0 THEN
- s_savedoc.doctitle = s_oaflow_settype[ls_settypeid].setname+'(自动)'
-
- If (arg_powerid = 94 Or arg_powerid = 1277 Or arg_powerid = 6 Or arg_powerid = 4299) And ls_cussptname <> '' And ls_mtrlname <> '' THEN
- s_savedoc.doccontent = ls_kindname+' '+ls_cussptname+' 金额:'+String(ls_sumamt,'#,##0.##')+','+ls_mtrlname+' '+ls_mtrlmode+' '+String(ld_price,'#,##0.##########')+' '+ls_moneyname+' '+String(ld_qty,'#,##0.##########')+ls_unit+'...'
- ELSEIF arg_powerid = 4174 THEN
- s_savedoc.doccontent = ls_mtrlname+' '+String(ld_qty,'#,##0.##########')+ls_unit+' 单价:'+String(ld_price,'#,##0.##########')+'元'+' 金额:'+String(ls_sumamt,'#,##0.##')
- ELSE
- s_savedoc.doccontent = '系统自动发起公文,相关号码:'+arg_relcode
- s_savedoc.doccontent_ori = '系统自动发起公文,相关号码:'+arg_relcode
- END IF
- ELSE
- s_savedoc.doctitle = '系统自动发起公文'
- s_savedoc.doccontent = '系统自动发起公文,相关号码:'+arg_relcode
- s_savedoc.doccontent_ori = '系统自动发起公文,相关号码:'+arg_relcode
- END IF
- s_savedoc.docid = 0
- s_savedoc.dscrp = arg_dscrp
- s_savedoc.dtype = 1
- s_savedoc.billcode = arg_billcode
- s_savedoc.flowid = rslt_flowid
- s_savedoc.rowid = 1
- s_savedoc.docstatus = 1
- s_savedoc.scid = arg_Scid
- s_savedoc.billid = arg_billid
- s_savedoc.powerid = arg_powerid
- IF uo_tran.save_doc(s_savedoc, ARG_MSG,arg_docid,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ins_docid = arg_docid
- Destroy uo_tran
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using sqlca;
-
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using sqlca;
- END IF
- Destroy ds_parm
- RETURN rslt
- end function
- public function integer uof_top1_sort_id (long arg_docid, ref string arg_ref_sort, ref long arg_ref_flowid, ref string arg_msg);Int rslt = 1
- SELECT TOP 1 OA_FLOWDEF_STEP.flowsort,OA_FLOWDEF_STEP.flowid
- INTO :arg_ref_sort,:arg_ref_flowid
- FROM oa_doc INNER JOIN
- OA_FLOWDEF_STEP ON oa_doc.flowid = OA_FLOWDEF_STEP.flowid
- WHERE oa_doc.docid = :arg_docid
- ORDER BY OA_FLOWDEF_STEP.flowsort
- USING ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,开始流转编序:'+ins_tran.SQLErrText
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer p_to_nextstep (long arg_docid, long arg_sort, boolean arg_ifcommit, ref string arg_msg);Long RSLT = 1
- Long ll_maxrowid,ls_colomnid = 0,ll_pushid
- Long ll_empid_arr[],ll_mxbt
- String ls_doctitle, ls_doccontent
- ll_mxbt = 1
- uo_phone_push uo_push
- uo_push = Create uo_phone_push
- If ARG_SORT = -1 Then //归档
-
- Long ls_dtype,ls_billid,ls_powerid,ls_scid
-
- Select dtype,billid,powerid,scid
- Into :ls_dtype,:ls_billid,:ls_powerid,:ls_scid
- From oa_doc
- Where docID = :ARG_DOCID Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- RSLT = 0
- ARG_MSG = '查询公文ID失败1>>'+ins_tran.SQLErrText
- Goto EXT
- End If
-
- Update oa_doc
- Set docflag = 11,
- fnsdt = getdate(),
- fnsemp = :publ_operator,
- rowid = rowid + 1
- Where docID = :ARG_DOCID;
- If ins_tran.SQLCode <> 0 Then
- RSLT = 0
- ARG_MSG = '更新公文ID失败1>>'+ins_tran.SQLErrText
- Goto EXT
- End If
-
- Update oa_doc_flow
- Set read_flag = 0
- Where docID = :ARG_DOCID And rowid = 1;
- If ins_tran.SQLCode <> 0 Then
- RSLT = 0
- ARG_MSG = '更新公文为未读失败1>>'+ins_tran.SQLErrText
- Goto EXT
- End If
-
- If ls_dtype = 1 Then
- If opt_audit(ls_powerid,ls_scid, ls_billid, False,ARG_MSG) = 0 Then
- RSLT = 0
- ARG_MSG = '审批单据操作失败>>'+ARG_MSG
- Goto EXT
- End If
- End If
-
- Else
- Update oa_doc
- Set rowid = rowid + 1 ,flowsort = :arg_sort
- Where docID = :ARG_DOCID Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- ARG_MSG = '更新公文ID失败2>>'+ins_tran.SQLErrText
- RSLT = 0
- Goto EXT
- End If
-
- Update oa_doc_flow
- Set oa_doc_flow.read_flag = 0,
- oa_doc_flow.limittime = DATEADD(hh, oa_doc_flow.limithour, getdate())
- From oa_doc_flow Inner JOIN
- oa_doc ON oa_doc_flow.Docid = oa_doc.docID And oa_doc_flow.rowid = oa_doc.rowid
- Where (oa_doc_flow.docID = :ARG_DOCID);
- If ins_tran.SQLCode <> 0 Then
- RSLT = 0
- ARG_MSG = '更新公文为未读失败2>>'+ins_tran.SQLErrText
- Goto EXT
- End If
-
- Declare cur_emp Cursor For
- Select Empid
- From oa_doc_flow
- Where (flowsort = :arg_sort)
- And (docID = :ARG_DOCID) Using ins_tran;
-
- Open cur_emp ;
-
- Fetch cur_emp Into :ll_empid_arr[ll_mxbt];
- Do While ins_tran.SQLCode = 0
- ll_mxbt++
- Fetch cur_emp Into :ll_empid_arr[ll_mxbt];
- Loop
-
- Close cur_emp;
-
- ll_mxbt = ll_mxbt - 1
-
- If ll_mxbt > 0 Then
-
- Select doctitle,doccontent
- Into :ls_doctitle,:ls_doccontent
- From oa_doc
- Where oa_doc.docID = :ARG_DOCID Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- RSLT = 0
- ARG_MSG = '发送手机推送失败(查询公文信息失败)>>'+ins_tran.SQLErrText
- Goto EXT
- End If
-
-
- If uo_push.uf_add(ll_empid_arr, ls_doctitle, ls_doccontent, 'oatome', String(ARG_DOCID), ll_pushid, ARG_MSG, False) <> 1 Then
- RSLT = 0
- Goto EXT
- End If
- End If
-
- End If
- EXT:
- If RSLT = 0 Then
- Rollback Using ins_tran;
- ElseIf arg_ifcommit And RSLT = 1 Then
- Commit Using ins_tran;
- End If
- Destroy uo_push
- Return RSLT
- end function
- public function integer p_add_oa_flow (long arg_docid, long arg_empid, long arg_rowid, long arg_colomnid, long arg_flowsort, string arg_dscrp, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt
- IF IsNull(arg_docid) THEN arg_docid = 0
- IF IsNull(arg_empid) THEN arg_empid = 0
- IF IsNull(arg_rowid) THEN arg_rowid = 0
- IF IsNull(arg_colomnid) THEN arg_colomnid = 0
- IF IsNull(arg_flowsort) THEN arg_flowsort = 0
- IF IsNull(arg_dscrp) THEN arg_dscrp = ''
- IF arg_docid <= 0 THEN
- rslt = 0
- arg_msg = '错误的公文唯一码'
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*)
- INTO :cnt
- FROM u_user
- Where empid = :arg_empid USING ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败:'+ins_tran.SQLErrText
- GOTO ext
- END IF
- IF cnt <= 0 THEN
- rslt = 0
- arg_msg = '错误的人员唯一码'
- GOTO ext
- END IF
- INSERT INTO oa_doc_flow
- (
- Docid,
- Empid,
- rowid,
- columnid,
- flowsort,
- dscrp
- )
- VALUES
- (
- :arg_docid,
- :arg_empid,
- :arg_rowid,
- :arg_colomnid,
- :arg_flowsort,
- :arg_dscrp
- );
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "公文新建失败,请重试!"+'~n'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- UPDATE oa_doc
- SET rowid = :arg_rowid,flowsort = :arg_flowsort
- Where Docid = :arg_docid USING ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arg_msg = '更新公文ID失败2>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING ins_tran;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING ins_tran;
- END IF
- RETURN rslt
- end function
- public function integer uof_doc_stepadd (s_oaflow_step arg_s_oaflow_step, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long i
- Int ll_docflag
- Long ls_colomnid
- If IsNull(arg_s_oaflow_step.docid) Then arg_s_oaflow_step.docid = 0
- If IsNull(arg_s_oaflow_step.flowstepname) Then arg_s_oaflow_step.flowstepname = ''
- If IsNull(arg_s_oaflow_step.flowsort) Then arg_s_oaflow_step.flowsort = 0
- If IsNull(arg_s_oaflow_step.flowempstr) Then arg_s_oaflow_step.flowempstr = ''
- If IsNull(arg_s_oaflow_step.flowinfo) Then arg_s_oaflow_step.flowinfo = ''
- If IsNull(arg_s_oaflow_step.limithour) Then arg_s_oaflow_step.limithour = 0
- If IsNull(arg_s_oaflow_step.ifnecessary) Then arg_s_oaflow_step.ifnecessary = 0
- If IsNull(arg_s_oaflow_step.ifjoin) Then arg_s_oaflow_step.ifjoin = 0
- If IsNull(arg_s_oaflow_step.ifmod_relqty) Then arg_s_oaflow_step.ifmod_relqty = 0
- If IsNull(arg_s_oaflow_step.ifmodfj) Then arg_s_oaflow_step.ifmodfj = 1
- If arg_s_oaflow_step.docid = 0 Then
- arg_msg = '错误的公文id,请检查'
- rslt = 0
- Goto ext
- End If
- If arg_s_oaflow_step.flowstepname = '' Then
- arg_msg = '请输入步骤名称'
- rslt = 0
- Goto ext
- End If
- If arg_s_oaflow_step.flowsort = 0 Then
- arg_msg = '请输入步骤'
- rslt = 0
- Goto ext
- End If
- If arg_s_oaflow_step.flowempstr = '' Then
- arg_msg = '请设置相关人员'
- rslt = 0
- Goto ext
- End If
- If UpperBound(arg_s_oaflow_step.empid) = 0 Then
- arg_msg = '请选择相关人员'
- rslt = 0
- Goto ext
- End If
- If IsNull(arg_s_oaflow_step.rowid) Then arg_s_oaflow_step.rowid = 0
- Select docflag Into :ll_docflag
- From oa_doc
- Where docid = :arg_s_oaflow_step.docid Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = '查询公文信息失败>>'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- Insert Into oa_doc_step
- ( docid,
- flowstepname,
- flowsort,
- flowempstr,
- flowinfo,
- limithour,
- modemp,
- moddate,
- ifnecessary,
- ifjoin,
- ifmod_relqty,
- ifmodfj)
- Values(
- :arg_s_oaflow_step.docid,
- :arg_s_oaflow_step.flowstepname,
- :arg_s_oaflow_step.flowsort,
- :arg_s_oaflow_step.flowempstr,
- :arg_s_oaflow_step.flowinfo,
- :arg_s_oaflow_step.limithour,
- :publ_operator,
- getdate(),
- :arg_s_oaflow_step.ifnecessary,
- :arg_s_oaflow_step.ifjoin,
- :arg_s_oaflow_step.ifmod_relqty,
- :arg_s_oaflow_step.ifmodfj);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '新增步骤操作失败,'+sqlca.SQLErrText
- Goto ext
- End If
- For i = 1 To UpperBound(arg_s_oaflow_step.empid)
- Insert Into oa_doc_stepemp
- (docid,
- flowsort,
- empid)
- Values(
- :arg_s_oaflow_step.docid,
- :arg_s_oaflow_step.flowsort,
- :arg_s_oaflow_step.empid[i]);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '新增步骤操作失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Next
- //如果是在进行公文增加流程,需要把数据增加到 oa_doc_flow
- If ll_docflag <> 0 And arg_s_oaflow_step.rowid > 0 Then
- ls_colomnid = 0
- For i = 1 To UpperBound(arg_s_oaflow_step.empid)
- ls_colomnid++
- Insert Into oa_doc_flow
- (
- Docid,
- Empid,
- rowid,
- columnid,
- flowsort,
- dscrp,
- limithour,
- modemp,
- moddate
- )
- Values
- (
- :arg_s_oaflow_step.docid,
- :arg_s_oaflow_step.empid[i],
- :arg_s_oaflow_step.rowid,
- :ls_colomnid,
- :arg_s_oaflow_step.flowsort,
- '',
- :arg_s_oaflow_step.limithour,
- :publ_operator,
- getdate()
- ) Using ins_tran ;
- If ins_tran.SQLCode <> 0 Then
- arg_msg = "插入审核人员列表失败!"+'~n'+ins_tran.SQLErrText
- rslt = 0
- Goto ext
- End If
- Next
-
- End If
- ext:
- If rslt = 0 Then
- Rollback using ins_tran;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit using ins_tran;
- End If
- Return rslt
- end function
- public function integer uof_get_flow_annex (long arg_flowid, ref s_oa_doc_annex arg_s_oda[]);Long doc_row
- String ls_flowstepname[],ls_nextstep[],ls_flowempstr[]
- Long ls_flowsort[]
- Long i,ll_i,ll_row,ll_if_rivet
- s_oa_doc_annex s_oda[]
- i = 1
- DECLARE cur_mx CURSOR FOR
- SELECT Filename, Fileblob, Filetype, annextype,
- IFDOWNFJ, IFLOOKFJ, Filesize
-
- FROM oa_flow_annex
- Where oa_flow_annex.flowid = :arg_flowid;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :s_oda[i].FileName,
- :s_oda[i].FileBlob,
- :s_oda[i].Filetype,
- :s_oda[i].annextype,
- :s_oda[i].IFDOWNFJ,
- :s_oda[i].IFLOOKFJ,
- :s_oda[i].Filesize;
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx INTO :s_oda[i].FileName,
- :s_oda[i].FileBlob,
- :s_oda[i].FileType,
- :s_oda[i].annextype,
- :s_oda[i].IFDOWNFJ,
- :s_oda[i].IFLOOKFJ,
- :s_oda[i].Filesize;
- LOOP
- CLOSE cur_mx;
- arg_s_oda = s_oda
- RETURN 1
- end function
- public function integer set_read (long arg_docid, long arg_empid, long arg_read_flag);Int rslt = 1
- Long ll_rowid, ll_docflag, ll_empid
- SELECT rowid, docflag, empid
- INTO :ll_rowid, :ll_docflag, :ll_empid
- FROM oa_doc
- Where docid = :arg_docid Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_docflag = 11 OR ll_empid = arg_empid THEN
- ll_rowid = 1
- END IF
- UPDATE oa_doc_flow
- SET read_flag = :arg_read_flag
- WHERE docid = :arg_docid
- AND rowid = :ll_rowid
- AND empid = :arg_empid
- Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ins_tran.SQLNRows <= 0 THEN
- rslt = 0
- END IF
- ext:
- IF rslt = 1 THEN
- COMMIT Using ins_tran;
- ELSE
- ROLLBACK Using ins_tran;
- END IF
- RETURN rslt
- end function
- public function integer opt_caudit (long arg_powerid, long arg_type, long arg_scid, long arg_billid, boolean arg_ifcommit, ref string arg_msg, string arg_empcontent);Long rslt = 1
- String ls_code,ls_opemp,ls_relcode
- //arg_type 0 - 逆操作 1 - 反对
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- CHOOSE CASE arg_powerid
- CASE 6,1324 //'销售订单审核'
- uo_saletask obj_saletask
- obj_saletask = Create uo_saletask
- obj_saletask.commit_transaction = sqlca
- obj_saletask.audit_buildtype = 1
-
- IF arg_type = 0 THEN
- IF obj_saletask.cancelpermit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF obj_saletask.canceloapermit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- Destroy obj_saletask
- //日志
- SELECT u_saletask.taskcode,u_saletask.opemp,u_saletask.relcode
- INTO :ls_code,:ls_opemp,:ls_relcode
- FROM u_saletask
- Where u_saletask.scid = :arg_Scid And u_saletask.taskid = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败:'+sqlca.SQLErrText
- GOTO ext
- END IF
- f_setsysoplog('销售订单','撤审'+',code:'+ls_code+',相关号码:'+ls_relcode+',建立人:'+ls_opemp,arg_msg,False)
- CASE 94,1277,4299 //'采购'
- uo_buytask obj_buytask
- obj_buytask = Create uo_buytask
- obj_buytask.commit_transaction = sqlca
- obj_buytask.audit_buildtype = 1
-
- IF arg_type = 0 THEN
- IF obj_buytask.cancelpermit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- ELSE
- IF obj_buytask.cancelsecpermit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF obj_buytask.cancelsecpermit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- Destroy obj_buytask
-
- //日志
- SELECT u_buytask.taskcode,u_buytask.opemp,u_buytask.relcode
- INTO :ls_code,:ls_opemp,:ls_relcode
- FROM u_buytask
- Where u_buytask.scid = :arg_Scid And u_buytask.taskid = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败:'+sqlca.SQLErrText
- GOTO ext
- END IF
- f_setsysoplog('采购订单','撤审'+',code:'+ls_code+',相关号码:'+ls_relcode+',建立人:'+ls_opemp,arg_msg,False)
-
-
- CASE 36,1138
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- uo_order.audit_buildtype = 1
-
- IF arg_type = 0 THEN
- IF uo_order.c_sec_audit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- ELSE
- IF uo_order.c_audit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_order.c_audit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- Destroy uo_order
-
- //日志
- SELECT u_order_ml.ordercode,u_order_ml.opemp,u_order_ml.relcode
- INTO :ls_code,:ls_opemp,:ls_relcode
- FROM u_order_ml
- Where u_order_ml.scid = :arg_Scid And u_order_ml.orderid = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF arg_powerid = 36 THEN
-
- f_setsysoplog('生产计划','撤审'+',code:'+ls_code+',相关号码:'+ls_relcode+',建立人:'+ls_opemp,arg_msg,False)
- ELSE
- f_setsysoplog('生产指令单','撤审'+',code:'+ls_code+',相关号码:'+ls_relcode+',建立人:'+ls_opemp,arg_msg,False)
-
- END IF
- CASE 461
- uo_quote uo_qu
- uo_qu = Create uo_quote
- uo_qu.commit_transaction = sqlca
-
- IF arg_type = 0 THEN
- IF uo_qu.cancelsecaudit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- ELSE
- IF uo_qu.cancelaudit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_qu.cancelaudit(arg_Scid,arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- Destroy uo_qu
-
- //日志
- SELECT u_quote.quotecode,u_quote.opemp,u_quote.relcode
- INTO :ls_code,:ls_opemp,:ls_relcode
- FROM u_quote
- Where u_quote.scid = :arg_Scid And u_quote.quoteid = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- f_setsysoplog('销售报价单','撤审'+',code:'+ls_code+',相关号码:'+ls_relcode+',建立人:'+ls_opemp,arg_msg,False)
- CASE 1684,2234
- uo_sptcheck uo_check
- uo_check = Create uo_sptcheck
- uo_check.audit_buildtype = 1
-
- IF arg_type = 0 THEN
- IF uo_check.caudit(arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- ELSE
- IF uo_check.first_caudit(arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_check.first_caudit(arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- Destroy uo_check
-
- SELECT u_sptcheck.billcode,u_sptcheck.opemp,u_sptcheck.relcode
- INTO :ls_code,:ls_opemp,:ls_relcode
- FROM u_sptcheck
- Where u_sptcheck.billid = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF arg_powerid = 1684 THEN
- f_setsysoplog('供应商采购质检单','撤审'+',code:'+ls_code+',相关号码:'+ls_relcode+',建立人:'+ls_opemp,arg_msg,False)
- ELSE
- f_setsysoplog('供应商外协质检单','撤审'+',code:'+ls_code+',相关号码:'+ls_relcode+',建立人:'+ls_opemp,arg_msg,False)
- END IF
- CASE 1494
- uo_workprice_change uo_workprice
- uo_workprice = Create uo_workprice_change
- uo_workprice.audit_buildtype = 1
- uo_workprice.oppreason = arg_empcontent
-
- IF uo_workprice.c_priceaudit(arg_billid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- Destroy uo_workprice
-
- SELECT billcode,opemp,relcode
- INTO :ls_code,:ls_opemp,:ls_relcode
- FROM u_workprice_change
- Where u_workprice_change.billid = :arg_billid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- f_setsysoplog('工价表变更单','工价表单变更单反确认,ID:'+String(arg_billid)+',code:'+ls_code,arg_msg,False)
- CASE 2404
- uo_price_order uo_price
- uo_price = Create uo_price_order
- uo_price.audit_buildtype = 1
-
- IF arg_type = 0 THEN
- IF uo_price.csecaudit(arg_billid,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- ELSE
- IF uo_price.caudit(arg_billid,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_price.caudit(arg_billid,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
-
- Destroy uo_price
-
- SELECT pocode INTO :ls_code
- FROM u_price_order
- Where u_price_order.poid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败:'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- f_setsysoplog('高级价格策略','高级价格策略撤审,ID:'+String(arg_billid)+',code:'+ls_code,arg_msg,False)
- CASE 4174
- uo_requestbuy uo_rqbuy
- uo_rqbuy = Create uo_requestbuy
- uo_rqbuy.audit_buildtype = 1
-
- IF arg_type = 0 THEN
- IF uo_rqbuy.caudit_2(arg_Scid,arg_billid,1,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- ELSE
- IF uo_rqbuy.caudit(arg_Scid,arg_billid,1,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ELSE
- IF uo_rqbuy.caudit(arg_Scid,arg_billid,1,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- Destroy uo_rqbuy
-
- END CHOOSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using ins_tran;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using ins_tran;
- END IF
- RETURN rslt
- end function
- public function integer p_gree (long arg_docid, string arg_empcontent, boolean arg_ifcommit, ref string arg_msg, integer arg_ifpemp);//流转
- Long rslt = 1
- Long ls_rowid,ls_empid
- Long li_cnt
- long ls_flowsort
- SELECT rowid,flowsort
- INTO :ls_rowid,:ls_flowsort
- FROM oa_doc
- Where docID = :arg_docid USING sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询公文ID失败1>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- SELECT empid
- INTO :ls_empid
- FROM u_user
- Where Username = :publ_operator;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询用户ID失败>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- DateTime server_dt
- SELECT Top 1 getdate() INTO :server_dt FROM u_user USING sqlca ;
- //取得系统时间,借用操作员表
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF ls_flowsort <> 0 THEN
-
- UPDATE oa_doc_flow
- SET Passed = 1,Empcontent = :arg_empcontent,greetime = :server_dt
- WHERE docid = :arg_docid
- AND (empid = :ls_empid or empid in (select empid from u_user where pempid = :ls_empid) and :arg_ifpemp = 1 )
- AND rowid = :ls_rowid
- AND Passed = 0 USING sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新公文ID失败2>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- ELSEIF ls_flowsort = 0 THEN
-
- UPDATE oa_doc_flow
- SET Passed = 1,Empcontent = '发起通过',greetime = :server_dt
- WHERE docid = :arg_docid
- AND (empid = :ls_empid or empid in (select empid from u_user where pempid = :ls_empid) and :arg_ifpemp = 1 )
- AND rowid = 1 AND Passed = 0 USING sqlca;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新公文ID失败2>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING ins_tran;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING ins_tran;
- END IF
- RETURN rslt
- end function
- public function integer p_oppose (long arg_docid, string arg_empcontent, boolean arg_ifcommit, ref string arg_msg, integer arg_ifpemp);
- Long rslt = 1
- Long ls_rowid,ls_empid
- Long ls_flowsort
- Long ll_dtype,ll_scid,ll_billid,ll_powerid
- SELECT rowid,flowsort,dtype,scid,billid,powerid
- INTO :ls_rowid,:ls_flowsort,:ll_dtype,:ll_scid,:ll_billid,:ll_powerid
- FROM oa_doc
- Where docID = :arg_docid Using ins_tran;
- IF ins_tran.SQLCode <> 0 THEN
- arg_msg = '查询公文ID失败1>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- SELECT empid INTO :ls_empid
- FROM u_user
- Where username = :publ_operator;
- IF ins_tran.SQLCode <> 0 THEN
- arg_msg = '查询用户ID失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- UPDATE oa_doc
- SET docflag = 2,flowsort = 0,rowid = 1
- Where docID = :arg_docid;
- IF ins_tran.SQLCode <> 0 THEN
- arg_msg = '查询公文ID失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- UPDATE oa_doc_flow
- SET Passed = 2,Empcontent = :arg_empcontent
- WHERE docid = :arg_docid AND
- rowid = :ls_rowid AND
- flowsort = :ls_flowsort AND
- (empid = :ls_empid or empid in (select empid from u_user where pempid = :ls_empid) and :arg_ifpemp = 1 );
- IF ins_tran.SQLCode <> 0 THEN
- arg_msg = '查询公文ID失败>>'+ins_tran.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- UPDATE oa_doc_flow
- SET read_flag = 0
- Where docID = :arg_docid And rowid = 1;
- IF ins_tran.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新公文为未读失败>>'+ins_tran.SQLErrText
- GOTO ext
- END IF
- IF ll_dtype = 1 THEN
- IF opt_caudit(ll_powerid,1,ll_scid, ll_billid, False,arg_msg,arg_empcontent) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using ins_tran;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using ins_tran;
- END IF
- RETURN rslt
- end function
- public function integer uof_doc_stepdel (long arg_docid, long arg_flowsort, integer arg_deltype, ref string arg_msg, boolean arg_ifcommit);//arg_deltype 0 - 修改(删除原数据然后插入新数据,不需要更新后面步骤rowid) 1 - 删除(需要更新后面步骤的rowid)
- Int rslt = 1
- If IsNull(arg_docid) Then arg_docid = 0
- If IsNull(arg_flowsort) Then arg_flowsort = 0
- If arg_docid = 0 Then
- arg_msg = '错误的公文id,请检查'
- rslt = 0
- Goto ext
- End If
- If arg_flowsort = 0 Then
- arg_msg = '请错误的步骤,请检查'
- rslt = 0
- Goto ext
- End If
- Delete From oa_doc_stepemp
- Where docid = :arg_docid
- And flowsort = :arg_flowsort Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除步骤人员操作失败,'+ins_tran.SQLErrText
- Goto ext
- End If
- Delete From oa_doc_step
- Where docid = :arg_docid
- And flowsort = :arg_flowsort using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除步骤操作失败,'+ins_tran.SQLErrText
- Goto ext
- End If
- Delete From oa_doc_flow
- Where docid = :arg_docid
- And flowsort = :arg_flowsort using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除审批人员列表操作失败,'+ins_tran.SQLErrText
- Goto ext
- End If
- //如果是直接删除步骤,后面的步骤的rowid要减1
- If arg_deltype = 1 Then
- Update oa_doc_flow
- Set rowid = rowid - 1
- Where docid = :arg_docid
- And flowsort > :arg_flowsort using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新后面步骤人员列表rowid操作失败,'+ins_tran.SQLErrText
- Goto ext
- End If
- End If
- ext:
- If rslt = 0 Then
- Rollback using ins_tran;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit using ins_tran;
- End If
- Return rslt
- end function
- public function integer uof_urge (long arg_docid, string arg_urgemsg, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- String ls_flowempstr
- Int li_docflag
- Long ll_rowid
- String ls_opemp,ls_Doccode
- Select oa_doc_step.flowempstr,
- oa_doc.docflag,
- oa_doc.rowid,
- oa_doc.Opemp,
- oa_doc.Doccode
- Into :ls_flowempstr,
- :li_docflag,
- :ll_rowid,
- :ls_opemp,
- :ls_Doccode
- From oa_doc Inner JOIN
- oa_doc_step ON oa_doc.docID = oa_doc_step.docid And
- oa_doc.flowsort = oa_doc_step.flowsort
- Where oa_doc.docID = :arg_docid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询公文信息失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If ls_opemp <> arg_emp Then
- rslt = 0
- arg_msg = '只有发起人才能执行催办功能'
- Goto ext
- End If
- If li_docflag <> 1 Then
- rslt = 0
- arg_msg = '只有在进行的公文才能执行催办功能'
- Goto ext
- End If
- Select Top 1 Replace(:ls_flowempstr, ',', ';')
- Into :ls_flowempstr
- From u_user;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '转换审批人至内部邮件收件人格式失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Update oa_doc_flow
- Set urgeflag = 1,
- urgeemp = :arg_emp,
- urgedate = getdate(),
- urgenum = urgenum + 1
- Where docid = :arg_docid
- And rowid = :ll_rowid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新催办标记失败,'+sqlca.SQLErrText
- Goto ext
- End If
- //发送内部邮件到被催办人员
- uo_transmsg uo_msg
- If uo_msg.f_create_admsg(sys_empid,arg_emp,ls_flowempstr,'公文催办:'+ls_Doccode,arg_urgemsg,arg_msg,0,ls_Doccode,False) = 0 Then
- rslt = 0
- arg_msg = '催办消息发送失败,'+arg_msg
- 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 uof_disagree_back (long arg_docid, string arg_disagree_msg, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1
- Long ll_rowid,ll_docflag,ll_empid,ll_cnt,ll_rowid_back,ll_flowsort
- DateTime nulldate
- String ls_flowempstr,ls_Doccode
- SetNull(nulldate)
- Select rowid,docflag,doccode
- Into :ll_rowid ,:ll_docflag,:ls_Doccode
- From oa_doc
- Where docid = :arg_docid Using sqlca;
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询公文信息>>'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- If ll_docflag <> 1 Then
- rslt = 0
- arg_msg = '公文不是在处理状态,不能否决上一步'
- Goto ext
- End If
- If ll_rowid <= 1 Then
- rslt = 0
- arg_msg = '公文还没有人审批过,不能否决上一步'
- Goto ext
- End If
- Select empid Into :ll_empid
- From u_user
- Where username = :publ_operator;
-
- If sqlca.SQLCode <> 0 Then
- arg_msg = '查询用户ID失败>>'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- ll_cnt = 0
- Select count(*) Into :ll_cnt
- From oa_doc_flow
- Where oa_doc_flow.docid = :arg_docid And
- oa_doc_flow.empid = :ll_empid And
- oa_doc_flow.rowid = :ll_rowid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询操作失败,当前人员公文流转列:'+sqlca.SQLErrText
- Goto ext
- End If
- If ll_cnt = 0 Then
- rslt = 0
- arg_msg = '你不是当前审批人员,不能否决上一步'
- Goto ext
- End If
- Select TOP 1 oa_doc_flow.rowid,oa_doc_flow.flowsort
- Into :ll_rowid_back,:ll_flowsort
- From oa_doc_flow
- Where oa_doc_flow.docid = :arg_docid And
- oa_doc_flow.passed = 1
- Order By oa_doc_flow.rowid Desc Using sqlca;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询操作失败,查询上一步审批信息失败:'+sqlca.SQLErrText
- Goto ext
- End If
- Update oa_doc_flow
- Set limittime = :nulldate
- Where docid = :arg_docid
- And rowid = :ll_rowid;
-
- If sqlca.SQLCode <> 0 Then
- arg_msg = '清除当前审批限定时间失败>>'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
-
- Update oa_doc_flow
- Set Passed = 0,
- Empcontent = '',
- greetime = :nulldate
- Where docid = :arg_docid
- And rowid = :ll_rowid_back;
-
- If sqlca.SQLCode <> 0 Then
- arg_msg = '否决上一步审批失败>>'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- Update oa_doc
- Set rowid = :ll_rowid_back,
- flowsort = :ll_flowsort
- Where docid = :arg_docid;
-
- If sqlca.SQLCode <> 0 Then
- arg_msg = '更新公文信息失败>>'+sqlca.SQLErrText
- rslt = 0
- Goto ext
- End If
- //发信息给上一步审批人员
- uo_transmsg uo_msg
- Select flowempstr
- Into :ls_flowempstr
- From oa_doc_step
- Where docid = :arg_docid
- And flowsort = :ll_flowsort;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '获取上一步审批人员信息失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Select Top 1 Replace(:ls_flowempstr, ',', ';')
- Into :ls_flowempstr
- From u_user;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '转换审批人至内部邮件收件人格式失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If uo_msg.f_create_admsg(sys_empid,publ_operator,ls_flowempstr,'公文审批否决,重新审批:'+ls_Doccode,arg_disagree_msg,arg_msg,0,ls_Doccode,False) = 0 Then
- rslt = 0
- arg_msg = '否决消息发送失败,'+arg_msg
- 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 uof_clean_step (long arg_docid, long arg_flowsort, ref string arg_msg, boolean arg_ifcommit);//arg_flowsort 指定序号后的步骤清空
- Int rslt = 1
- If IsNull(arg_docid) Then arg_docid = 0
- If IsNull(arg_flowsort) Then arg_flowsort = 0
- If arg_docid = 0 Then
- arg_msg = '错误的公文id,请检查'
- rslt = 0
- Goto ext
- End If
- Delete From oa_doc_stepemp
- Where docid = :arg_docid
- And flowsort > :arg_flowsort Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除步骤人员操作失败,'+ins_tran.SQLErrText
- Goto ext
- End If
- Delete From oa_doc_step
- Where docid = :arg_docid
- And flowsort > :arg_flowsort using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除步骤操作失败,'+ins_tran.SQLErrText
- Goto ext
- End If
- Delete From oa_doc_flow
- Where docid = :arg_docid
- And flowsort > :arg_flowsort using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除审批人员列表操作失败,'+ins_tran.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback using ins_tran;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit using ins_tran;
- End If
- Return rslt
- end function
- public function integer uof_update_item (long arg_docid, long arg_printid, string arg_itemvalue, long arg_relid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Update oa_doc_item
- Set itemvalue = :arg_itemvalue,
- relid = :arg_relid,
- modemp = :publ_operator,
- moddate = getdate()
- Where docid = :arg_docid
- And printid = :arg_printid Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新自定义字段失败,'+ins_tran.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback Using ins_tran;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit Using ins_tran;
- End If
- Return rslt
- end function
- public function integer uof_update_relqty (long arg_docid, decimal arg_relqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Update oa_doc
- Set relqty = :arg_relqty
- Where docid = :arg_docid Using ins_tran;
- If ins_tran.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新相关数值失败,'+ins_tran.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback Using ins_tran;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit Using ins_tran;
- End If
- Return rslt
- end function
- on uo_oa_doc.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_oa_doc.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|