123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352 |
- $PBExportHeader$uo_sc_task.sru
- forward
- global type uo_sc_task from nonvisualobject
- end type
- end forward
- global type uo_sc_task from nonvisualobject
- end type
- global uo_sc_task uo_sc_task
- type variables
- Long taskid
- String taskcode
- Long orderid
- Long mtrlid
- Long flag
- String taskrep
- DateTime taskdate
- String opemp
- DateTime opdate
- String modemp
- DateTime moddate
- String auditingrep
- DateTime auditingdate
- Long LastFlag
- Long empid
- Long scid
- Long wrkgrpid
- Long proid
- String procode
- String proname
- Dec qty
- Dec fqty
- Long tasktype
- Long workgroupid
- Long modelid
- DateTime rqdate
- String dscrp
- datetime cfdate
- String status
- String woodcode
- String pcode
- string partname
- long Proorder
- int kind
- int queue
- string teamorder
- decimal empqty,before_time,order_time,work_time
- long squadid
- string relcode,pbarcode
- long reltechid
- int billtype //<单据类型>0-派工(默认),1-退回,2-返工
- int billkind //<派工类型>0-自制(默认),1-外协
- long reloutid //相关派工ID
- decimal workprice
- Boolean if_getid_ture = FALSE
- end variables
- forward prototypes
- public function integer p_reset ()
- public function integer save (ref string arg_msg, boolean arg_ifcommit)
- public function integer p_getinfo (long arg_taskid, ref string arg_msg)
- public function integer del (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_taskid, ref string arg_msg)
- public function integer audit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_audit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_finishtask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer stoptask (long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishtask (long arg_taskid, string arg_finishemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer addcmpl (long arg_taskid, decimal arg_addqty, datetime arg_finishdate, string arg_finishemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer tryfinish (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer del_queue (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer update_tasktype (long arg_taskid, long arg_tasktype, ref string arg_msg, boolean arg_ifcommit)
- public function integer update_workgroupid (long arg_taskid, long arg_workgroupid, ref string arg_msg, boolean arg_ifcommit)
- public function integer update_empid (long arg_taskid, long arg_empid, ref string arg_msg, boolean arg_ifcommit)
- public function integer update_groupstr (long arg_taskid[], integer arg_kind, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_emp_del (long arg_taskid, long arg_empid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_emp_create (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_emp_add (long arg_taskid, long arg_empid, decimal arg_assignamt, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_update_qty (long arg_taskid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_chk (long arg_taskid, string arg_chkemp, integer arg_ifpass, string arg_chkrslt, ref string arg_msg, boolean arg_ifcommit, ref long arg_printid)
- public function integer uof_prechk (long arg_taskid, long arg_empid, string arg_prechkdscrp, string arg_carcode, string arg_locode, string arg_othercode, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer p_reset ();taskid = 0
- taskcode = ''
- orderid = 0
- mtrlid = 0
- flag = 0
- taskrep = ''
- opemp = ''
- modemp = ''
- auditingrep = ''
- LastFlag = 0
- empid = 0
- scid = 0
- wrkgrpid = 0
- proid = 0
- procode = ''
- proname = ''
- qty = 0
- fqty = 0
- tasktype = 0
- workgroupid = 0
- modelid = 0
- dscrp = ''
- status = ''
- woodcode = ''
- pcode = ''
- SetNull( opdate)
- SetNull( moddate)
- SetNull( taskdate)
- SetNull( auditingdate)
- SetNull( rqdate)
- reltechid = 0
- RETURN 1
- end function
- public function integer save (ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime server_dt
- Long ll_taskid
- String ls_taskcode
- Long cnt
- DateTime ld_taskdate
- Decimal ld_period,ld_modelqty
- String ls_modelcode
- Decimal ld_orderqty = 0,ld_sumqty = 0,ld_thisqty = 0
- String ls_groupstr
- IF IsNull(taskrep) THEN taskrep = ''
- IF IsNull(qty) THEN qty = 0
- IF IsNull(fqty) THEN fqty = 0
- IF Year(Date(taskdate)) < 2001 THEN
- arg_msg = '生产派工单日期为空或不合理!'
- rslt = 0
- GOTO ext
- END IF
- IF qty = 0 THEN
- arg_msg = '没有正确的计划生产数'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT Top 1 getdate() Into :server_dt From u_user ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF billkind = 0 THEN //自制
- IF tasktype = 0 THEN
- IF empid > 0 And workgroupid = 0 THEN
- tasktype = 3
- END IF
- IF empid = 0 And workgroupid > 0 THEN
- tasktype = 1
- END IF
- IF tasktype = 0 THEN
- IF empid <> 0 Or workgroupid <> 0 THEN
- rslt = 0
- arg_msg = "设置了员工或工作中心,请选择相应的派工类型 "
- GOTO ext
- END IF
- END IF
- ELSEIF tasktype = 1 THEN
- IF workgroupid = 0 THEN
- rslt = 0
- arg_msg = "工作中心派工,请选择相应的工作中心派工 "
- GOTO ext
- END IF
- empid = 0
- ELSEIF tasktype = 3 THEN
- IF empid = 0 THEN
- rslt = 0
- arg_msg = "个人派工,请选择相应的员工 "
- GOTO ext
- END IF
- workgroupid = 0
- END IF
-
- ELSEIF billkind = 1 THEN //外协
- IF empid = 0 THEN
- rslt = 0
- arg_msg = "外协派工,请选择相应的供应商 "
- GOTO ext
- END IF
-
- IF billtype = 0 THEN //1.派工
-
- ELSEIF billtype = 1 THEN //2.退回
- IF reloutid = 0 THEN
- rslt = 0
- arg_msg = "外协退回,请选择相应的外协派工单 "
- GOTO ext
- END IF
- ELSEIF billtype = 2 THEN //3.返工
-
- END IF
- END IF
- IF Kind = 0 THEN
- SELECT outtypestr
- INTO :ls_groupstr
- FROM u_order_ml
- WHERE scid = :scid
- And orderid = :orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划/指令单成组号失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT proqty
- INTO :ld_orderqty
- FROM U_OrderRqwp
- WHERE scid = :scid
- AND orderid = :orderid
- AND procode = :procode
- And mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划工序明细计划生产数失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- IF taskid > 0 THEN
- SELECT qty
- INTO :ld_thisqty
- FROM u_sc_task
- Where taskid = :taskid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询安排生产数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- SELECT qty
- INTO :ld_sumqty
- FROM uv_sc_task_qty
- WHERE scid = :scid
- AND orderid = :orderid
- AND mtrlid = :mtrlid
- And procode = :procode;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询已安排生产数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 THEN
- ld_sumqty = 0
- END IF
-
- IF ld_sumqty - ld_thisqty + qty > ld_orderqty THEN
- arg_msg = '待安排生产数:'+String(ld_orderqty - (ld_sumqty - ld_thisqty),'#,##0.#########')+',不能再安排 '+String(qty,'#,##0.#########')
- rslt = 0
- GOTO ext
- END IF
-
- ELSEIF Kind = 1 THEN //排机台
-
- IF workgroupid = 0 THEN
- arg_msg = '错误的机台编号ID,请重新选择机台'
- rslt = 0
- GOTO ext
- END IF
-
- IF modelid = 0 THEN
- arg_msg = "错误的模具唯一码,请选择模具"
- rslt = 0
- GOTO ext
- END IF
-
- IF squadid = 0 THEN
- arg_msg = '请选择班类型'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT proqty
- INTO :ld_orderqty
- FROM U_OrderRqwp
- WHERE scid = :scid
- AND orderid = :orderid
- AND procode = :procode
- And mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划工序明细计划生产数失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- SELECT sum(qty)
- INTO :ld_sumqty
- FROM u_sc_task
- WHERE scid = :scid
- AND orderid = :orderid
- AND mtrlid = :mtrlid
- AND procode = :procode
- AND kind = 1
- And flag <> 2;
- IF sqlca.SQLCode = -1 THEN
- arg_msg = '查询机台已安排生产数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 THEN
- ld_sumqty = 0
- END IF
-
- IF taskid > 0 THEN
- SELECT qty
- INTO :ld_thisqty
- FROM u_sc_task
- Where taskid = :taskid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询机台安排生产数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- IF ld_sumqty - ld_thisqty + qty > ld_orderqty THEN
- arg_msg = '待安排生产数:'+String(ld_orderqty - (ld_sumqty - ld_thisqty),'#,##0.#########')+',不能再安排 '+String(qty,'#,##0.#########')
- rslt = 0
- GOTO ext
- END IF
-
- //.......计算计划需时
- SELECT period INTO :ld_period
- FROM u_mtrldef_sl
- Where mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询产品标准生产周期失败'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT modelqty INTO :ld_modelqty
- FROM u_model_mtrl
- WHERE modelid = :modelid
- And mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询模腔数失败'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT modelcode INTO :ls_modelcode
- FROM u_modeldef
- Where modelid = :modelid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询模具编号失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_period = 0 Or ld_modelqty = 0 THEN
- order_time = 0
- ELSE
- order_time = qty / (3600 / ld_period * ld_modelqty ) // 计划需时
- END IF
- work_time = before_time + order_time //实际需时
- ////
-
- SELECT max(queue) INTO :queue
- FROM u_sc_task
- WHERE u_sc_task.workgroupid = :workgroupid
- And u_sc_task.Kind = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '错误的机台唯一码'
- rslt = 0
- GOTO ext
- END IF
-
- IF IsNull(queue) THEN queue = 0
- IF queue = - 1 THEN queue = 0
- queue++
-
- END IF
- // // 080915 某些车间工作日期按指令单下单日期
- //uf_get_sc_workdate(orderid, taskdate)
- IF taskid = 0 THEN //新建
- ll_taskid = f_sys_scidentity(0,"u_sc_task","taskid",arg_msg,True,id_sqlca)
- IF ll_taskid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF billkind = 0 THEN
- IF Kind = 0 THEN
- ls_taskcode = getid(scid,"PP",Date(server_dt),if_getid_ture,sqlca) //取得新单据编号
- pbarcode = getid(scid,"P",Date(server_dt),if_getid_ture,sqlca)
- ELSE
- ls_taskcode = getid(scid,"PJ",Date(server_dt),if_getid_ture,sqlca) //取得新单据编号
- END IF
- ELSE
- IF billtype = 0 THEN
- ls_taskcode = getid(scid,"PA",Date(server_dt),if_getid_ture,sqlca) //取得新单据编号 派工
- ELSEIF billtype = 1 THEN
- ls_taskcode = getid(scid,"PB",Date(server_dt),if_getid_ture,sqlca) //取得新单据编号 退回
- ELSEIF billtype = 2 THEN
- ls_taskcode = getid(scid,"PE",Date(server_dt),if_getid_ture,sqlca) //取得新单据编号 返工
- END IF
- END IF
-
- IF ls_taskcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取工序派工单编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_sc_task
- (taskid ,
- taskcode,
- scid,
- orderid,
- wrkgrpid,
- procode,
- proname,
- LastFlag,
- qty,
- tasktype,
- workgroupid,
- modelid,
- empid,
- taskdate,
- rqdate,
- taskrep,
- dscrp,
- opemp,
- opdate,
- proid,
- mtrlid,
- status,
- woodcode,
- pcode,
- kind,
- teamorder,
- empqty,
- before_time,
- order_time,
- work_time,
- squadid,
- queue,
- relcode,
- pbarcode,
- reltechid,
- groupstr,
- cfdate,
- billtype,
- billkind,
- reloutid,
- workprice)
- VALUES (
- :ll_taskid,
- :ls_taskcode,
- :scid,
- :orderid,
- :wrkgrpid,
- :procode,
- :proname,
- :LastFlag,
- :qty,
- :tasktype,
- :workgroupid,
- :modelid,
- :empid,
- :taskdate,
- :rqdate,
- :taskrep,
- :dscrp,
- :publ_operator,
- :server_dt,
- :proid,
- :mtrlid,
- :status,
- :woodcode,
- :pcode,
- :Kind,
- :teamorder,
- :empqty,
- :before_time,
- :order_time,
- :work_time,
- :squadid,
- :queue,
- :relcode,
- :pbarcode,
- :reltechid,
- :ls_groupstr,
- :cfdate,
- :billtype,
- :billkind,
- :reloutid,
- :workprice);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "插入生产派工单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- taskid = ll_taskid
- taskcode = ls_taskcode
- ELSE //修改
- UPDATE u_sc_task
- SET orderid = :orderid,
- wrkgrpid = :wrkgrpid,
- procode = :procode ,
- proname = :proname,
- LastFlag = :LastFlag,
- qty = :qty,
- tasktype = :tasktype,
- workgroupid = :workgroupid,
- modelid = :modelid,
- empid = :empid,
- taskdate = :taskdate,
- rqdate = :rqdate,
- taskrep = :taskrep,
- dscrp = :dscrp,
- mtrlid = :mtrlid,
- status = :status,
- woodcode = :woodcode,
- pcode = :pcode,
- teamorder = :teamorder,
- empqty = :empqty,
- before_time = :before_time,
- order_time = :order_time,
- work_time = :work_time,
- squadid = :squadid,
- modemp = :publ_operator,
- moddate = :server_dt,
- relcode = :relcode,
- reltechid = :reltechid,
- groupstr = :ls_groupstr,
- cfdate = :cfdate,
- billtype = :billtype,
- billkind = :billkind,
- reloutid = :reloutid,
- workprice = :workprice
- WHERE taskid = :taskid
- And flag = 0 ;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "更新生产派工单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- IF billkind = 0 THEN
- //工作中心派工, 实例化工作中心员工
- IF tasktype = 1 THEN
- IF uof_emp_create(taskid, arg_msg, False) = 0 THEN
- rslt = 0
- arg_msg = "工作中心派工类型, 插入工作中心员工操作失败"+"~n"+arg_msg
- GOTO ext
- END IF
- END IF
- END IF
- UPDATE u_order_ml
- SET u_Order_ml.sctaskflag = isnull(uv_sc_task_qty_flag.sctaskflag, '')
- FROM u_Order_ml LEFT OUTER JOIN
- uv_sc_task_qty_flag ON u_Order_ml.scid = uv_sc_task_qty_flag.scid AND
- u_Order_ml.OrderID = uv_sc_task_qty_flag.OrderID
- WHERE u_Order_ml.scid = :scid
- And u_order_ml.orderid = :orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新生产指令单派工状态失败,原因:'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- Return(rslt)
- end function
- public function integer p_getinfo (long arg_taskid, ref string arg_msg);Int rslt = 1
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误生产任务单唯一码'
- GOTO ext
- END IF
- SELECT u_sc_task.taskid,
- u_sc_task.taskcode,
- u_sc_task.scid,
- u_sc_task.orderid,
- u_sc_task.wrkgrpid,
- u_sc_task.procode,
- u_sc_task.proname,
- u_sc_task.LastFlag,
- u_sc_task.qty,
- u_sc_task.fqty,
- u_sc_task.tasktype,
- u_sc_task.workgroupid,
- u_sc_task.modelid,
- u_sc_task.empid,
- u_sc_task.taskdate,
- u_sc_task.rqdate,
- u_sc_task.taskrep,
- u_sc_task.dscrp,
- u_sc_task.opemp,
- u_sc_task.opdate,
- u_sc_task.flag,
- u_sc_task.proid,
- u_sc_task.mtrlid,
- u_sc_task.status,
- u_sc_task.woodcode,
- u_sc_task.pcode,
- U_OrderRqwp.partname,
- U_OrderRqwp.Proorder,
- u_sc_task.billtype,
- u_sc_task.billkind,
- u_sc_task.reloutid
- INTO
- :taskid,
- :taskcode,
- :scid,
- :orderid,
- :wrkgrpid,
- :procode,
- :proname,
- :LastFlag,
- :qty,
- :fqty,
- :tasktype,
- :workgroupid,
- :modelid,
- :empid,
- :taskdate,
- :rqdate,
- :taskrep,
- :dscrp,
- :opemp,
- :opdate,
- :flag,
- :proid,
- :mtrlid,
- :status,
- :woodcode,
- :pcode,
- :partname,
- :Proorder,
- :billtype,
- :billkind,
- :reloutid
- FROM u_sc_task LEFT OUTER JOIN
- U_OrderRqwp ON u_sc_task.scid = U_OrderRqwp.scid AND
- u_sc_task.orderid = U_OrderRqwp.orderid AND
- u_sc_task.procode = U_OrderRqwp.Procode AND
- u_sc_task.mtrlid = U_OrderRqwp.Mtrlid
- Where u_sc_task.taskid = :arg_taskid ;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产任务单内容失败(错误生产任务单唯一码)'
- GOTO ext
- END IF
- taskdate = DateTime(Date(taskdate),Time(0))
- taskid = arg_taskid
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer del (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- uo_order_ml uo_orderml
- uo_orderml = Create uo_order_ml
- rslt = p_getinfo(arg_taskid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF flag <> 0 THEN
- rslt = 0
- arg_msg = "生产派工单已经审核,不可以删除"
- GOTO ext
- END IF
- UPDATE u_ordermtrl_workgroup_barcode
- SET relcode = ''
- Where relcode = :taskcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "清空\部件条码的相关号码失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_sc_task
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除生产任务单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //工作中心派工, 实例化工作中心员工
- //IF tasktype = 1 THEN
- DELETE From u_sc_task_emp Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "工作中心派工类型, 删除工作中心员工操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //END IF
- //IF uo_orderml.f_addschour(orderid,proid,queue,tolqueue,0 - taskqty ,arg_msg ,FALSE) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //IF uo_orderml.f_update_taskflag(orderid,arg_msg ,FALSE) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- UPDATE u_order_ml
- SET u_Order_ml.sctaskflag = isnull(uv_sc_task_qty_flag.sctaskflag, '')
- FROM u_Order_ml LEFT OUTER JOIN
- uv_sc_task_qty_flag ON u_Order_ml.scid = uv_sc_task_qty_flag.scid AND
- u_Order_ml.OrderID = uv_sc_task_qty_flag.OrderID
- WHERE u_Order_ml.scid = :scid
- And u_order_ml.orderid = :orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新生产指令单派工状态失败,原因:'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_orderml
- Return (rslt)
- end function
- public function integer updatebegin (long arg_taskid, ref string arg_msg);Long rslt = 1
- p_reset()
- rslt = p_getinfo(arg_taskid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF flag <> 0 THEN
- rslt = 0
- arg_msg = '已经处于审核或完成等状态,不可以修改'
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer audit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,ll_j,cnt
- uo_order_ml uo_orderml
- uo_orderml = Create uo_order_ml
- uo_sc_task uo_st
- uo_st = Create uo_sc_task
- datastore ds_barcode
- ds_barcode = Create datastore
- ds_barcode.DataObject = 'ds_barcode_sc_task_print_no_inherit'
- ds_barcode.SetTransObject(sqlca)
- IF arg_taskid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 0 THEN
- rslt = 0
- arg_msg = "只有在待审批状态才可以执行审批,请核对"
- GOTO ext
- END IF
- UPDATE u_sc_task
- SET auditingrep = :publ_operator,
- auditingdate = getdate(),
- flag = 1
- WHERE taskid = :arg_taskid
- And flag = 0;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "工序派工单审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF billkind = 1 And billtype = 1 THEN
- IF reloutid <= 0 THEN //外协退回, 更新源派工单的 安排数
- rslt = 0
- arg_msg = "相关外协工序派工单ID错误"
- GOTO ext
- END IF
-
- IF uo_st.uof_update_qty(reloutid, 0 - qty, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- // //更新安排数
- IF uo_orderml.uf_add_taskqty(scid,orderid,mtrlid,procode,qty ,arg_msg ,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //更新条码相关号
- Long ll_printid,ll_pid
- String ls_barcode
- Decimal ld_barcode_qty,ld_qty_tmp
- ld_qty_tmp = qty
- IF partname <> '' THEN
-
- SELECT count(*)
- INTO :cnt
- FROM U_OrderRqwp
- WHERE scid = :scid
- AND orderid = :orderid
- AND partname = :partname
- And proorder < :proorder;
- IF sqlca.SQLCode <> 0 THEN cnt = 1
-
- IF cnt = 0 THEN
-
- ds_barcode.Retrieve(scid,orderid,partname,taskcode)
-
- FOR ll_j = 1 To ds_barcode.RowCount()
- IF ld_qty_tmp <= 0 THEN EXIT
-
- ll_printid = ds_barcode.Object.printid[ll_j]
- ll_pid = ds_barcode.Object.pid[ll_j]
- ls_barcode = ds_barcode.Object.barcode[ll_j]
- ld_barcode_qty = ds_barcode.Object.qty[ll_j]
-
- UPDATE u_ordermtrl_workgroup_barcode
- SET relcode = :taskcode
- WHERE scid = :scid
- AND orderid = :orderid
- AND printid = :ll_printid
- And pid = :ll_pid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新条码相关号失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ld_qty_tmp = ld_qty_tmp - ld_barcode_qty
-
- NEXT
- END IF
- END IF
- //如果是外协退回,直接完成了它
- IF billkind = 1 And billtype = 1 THEN
- UPDATE u_sc_task
- SET flag = 3
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "外协工序退回单完成操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_orderml
- Destroy uo_st
- RETURN rslt
- end function
- public function integer c_audit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- Long cnt
- DateTime null_dt
- SetNull(null_dt)
- uo_order_ml uo_orderml
- uo_orderml = Create uo_order_ml
- uo_sc_task uo_st
- uo_st = Create uo_sc_task
- IF arg_taskid = 0 THEN
- rslt = 0
- arg_msg = "没有撤审对象"
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //如果是外协退回,直接完成了它
- IF billkind = 1 And billtype = 1 THEN
- IF flag = 3 THEN
- UPDATE u_sc_task
- SET flag = 1
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "外协工序退回单取消完成操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- flag = 1
- END IF
- END IF
- IF flag <> 1 THEN
- rslt = 0
- arg_msg = "只有在审批状态才可以执行撤审,请核对"
- GOTO ext
- END IF
- IF fqty > 0 THEN
- rslt = 0
- arg_msg = "派工单已有完成数,不能撤审,请核对"
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_finishmx
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "查询派工单是否已有相关完工单失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "派工单已有相关完工单,如要撤审,请先删除相关完工单"
- GOTO ext
- END IF
- IF billkind = 1 THEN
- SELECT count(*) INTO :cnt
- FROM u_sc_task
- Where reloutid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询外协派工单是否已有相关外协退回单失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "外协派工单已有相关外协退回单,如要撤审,请先删除相关外协退回单"
- GOTO ext
- END IF
- END IF
- UPDATE u_sc_task
- SET auditingrep = '',
- auditingdate = :null_dt,
- flag = 0
- WHERE taskid = :arg_taskid
- And flag = 1;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "派工单撤审操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF billkind = 1 And billtype = 1 THEN
- IF reloutid <= 0 THEN //外协退回, 更新源派工单的 安排数
- rslt = 0
- arg_msg = "相关外协工序派工单ID错误"
- GOTO ext
- END IF
- IF uo_st.uof_update_qty(reloutid, qty, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF uo_orderml.uf_add_taskqty(scid,orderid,mtrlid,procode,0 - qty ,arg_msg ,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //更新条码相关号
- UPDATE u_ordermtrl_workgroup_barcode
- SET relcode = ''
- WHERE relcode = :taskcode
- AND scid = :scid
- And orderid = :orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新条码相关号失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_st
- Destroy uo_orderml
- RETURN rslt
- end function
- public function integer c_finishtask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- DateTime null_dt
- SetNull(null_dt)
- uo_order_ml uo_orderml
- uo_orderml = CREATE uo_order_ml
- IF arg_taskid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 4 THEN
- rslt = 0
- arg_msg = "该派工单只有在已完成状态下才能执行操作"
- GOTO ext
- END IF
- UPDATE u_sc_task
- SET accomplishdate = :taskdate,
- accomplishemp = '' ,
- flag = 1
- WHERE taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致计划审批操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ////更新完成数
- IF uo_orderml.uf_add_ftaskqty(scid,orderid,mtrlid,procode,taskdate, fqty - qty ,arg_msg ,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- flag = 1
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- DESTROY uo_orderml
- RETURN rslt
- end function
- public function integer stoptask (long arg_taskid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- uo_order_ml uo_orderml
- uo_orderml = CREATE uo_order_ml
- IF arg_taskid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 1 THEN
- rslt = 0
- arg_msg = "派工单"+taskcode+"处于非在进行状态,不能执行终止操作"
- GOTO ext
- END IF
- UPDATE u_sc_task
- SET Stopdate = getdate(),
- Stopemp = :arg_emp,
- flag = 2
- WHERE taskid = :arg_taskid AND
- flag = 1;
- IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致计划审批操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //IF uo_orderml.f_cmpschour(orderid,proid,queue, tolqueue,taskqty ,arg_msg ,FALSE) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- // ////更新派工状态
- // IF uo_orderml.f_update_taskflag(orderid,arg_msg ,FALSE) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- flag = 2
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- DESTROY uo_orderml
- RETURN rslt
- end function
- public function integer finishtask (long arg_taskid, string arg_finishemp, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- datetime arg_finishdate
- uo_order_ml uo_orderml
- uo_orderml = CREATE uo_order_ml
- arg_finishdate = datetime(today(),now())
- IF arg_taskid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(arg_finishdate) THEN
- rslt = 0
- arg_msg = '请输入实际完成日期'
- GOTO ext
- END IF
- IF flag <> 1 THEN
- rslt = 0
- arg_msg = "派工单"+taskcode+"处于非在进行状态,操作取消"
- GOTO ext
- END IF
-
- IF arg_finishdate < taskdate THEN
- rslt = 0
- arg_msg = '实际完成日期不能早于工作日期,请核对'
- GOTO ext
- END IF
- UPDATE u_sc_task
- SET accomplishdate = :arg_finishdate,
- Accomplishemp = :arg_finishemp ,
- flag = 4
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致计划审批操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ////更新完成数
- IF uo_orderml.uf_add_ftaskqty(scid,orderid,mtrlid,procode,arg_finishdate, qty - fqty ,arg_msg ,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- flag = 4
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- DESTROY uo_orderml
- RETURN rslt
- end function
- public function integer addcmpl (long arg_taskid, decimal arg_addqty, datetime arg_finishdate, string arg_finishemp, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- DateTime ld_finishdate,ld_null
- uo_order_ml uo_orderml
- uo_orderml = Create uo_order_ml
- uo_order_plan_tech uo_plan
- uo_plan = Create uo_order_plan_tech
- ld_finishdate = DateTime(Today(),Now())
- ld_finishdate = arg_finishdate
- IF arg_taskid = 0 THEN
- rslt = 0
- arg_msg = "没有完成对象"
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- GOTO ext
- END IF
- IF flag = 1 THEN
- IF fqty + arg_addqty > qty THEN
- rslt = 0
- arg_msg = '工序派工单:'+taskcode+'未派工数只有:'+String(qty - fqty,'#,##0.##########')+',不能再派工'+String(arg_addqty,'#,##0.##########')
- GOTO ext
- END IF
- END IF
- UPDATE u_sc_task
- SET fqty = fqty + :arg_addqty
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致计划审批操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
-
- END IF
- IF tryfinish(arg_taskid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新完成数
- IF uo_orderml.uf_add_ftaskqty(scid,orderid,mtrlid,procode, ld_finishdate,arg_addqty,arg_msg ,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- Long ll_maxProorder,ll_Proorder
- String ls_partname
- Long ll_billid[],ll_printid
- Decimal ld_noqty[],ld_oriqty,ld_argqty
- Long ll_mxbt,ll_i
- Int li_if_barcode
- Int li_flag
- IF orderid > 0 THEN
-
- ld_oriqty = arg_addqty
-
- SELECT partname,Proorder
- INTO :ls_partname,:ll_Proorder
- FROM U_OrderRqwp
- WHERE scid = :scid
- AND orderid = :orderid
- AND mtrlid = :mtrlid
- And procode = :procode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单工序进度信息失败 '+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF Trim(ls_partname) <> '' THEN
- SELECT top 1 if_barcode,printid
- INTO :li_if_barcode,:ll_printid
- FROM u_OrderMtrl_workgroup_tree
- WHERE scid = :scid
- AND orderid = :orderid
- AND partname = :ls_partname
- Order By if_barcode Desc;
- IF sqlca.SQLCode <> 0 THEN
- li_if_barcode = 0
- END IF
-
- IF li_if_barcode = 2 THEN
- SELECT max(proorder) INTO :ll_maxProorder
- FROM U_OrderRqwp
- WHERE scid = :scid
- AND orderid = :orderid
- AND mtrlid = :mtrlid
- And partname = :ls_partname;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单工序进度最大序号失败 '+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_Proorder = ll_maxProorder THEN
- ll_mxbt = 1
-
- IF arg_addqty > 0 THEN
- DECLARE cur_audit CURSOR FOR
- SELECT billid,qty - fqty
- FROM u_order_plan_tech
- WHERE scid = :scid
- AND orderid = :orderid
- AND printid = :ll_printid
- And qty > fqty;
-
- OPEN cur_audit;
-
- FETCH cur_audit Into :ll_billid[ll_mxbt],:ld_noqty[ll_mxbt];
- DO WHILE sqlca.SQLCode = 0
- ll_mxbt++
- FETCH cur_audit Into :ll_billid[ll_mxbt],:ld_noqty[ll_mxbt];
- LOOP
-
- CLOSE cur_audit;
-
- FOR ll_i = 1 To ll_mxbt - 1
- IF ld_oriqty > ld_noqty[ll_i] THEN
- ld_argqty = ld_noqty[ll_i]
- ld_oriqty = ld_oriqty - ld_noqty[ll_i]
- ELSE
- ld_argqty = ld_oriqty
- ld_oriqty = 0
- END IF
-
- IF uo_plan.addcmpqty(ll_billid[ll_i],ld_argqty,arg_msg,False) = 0 THEN
- arg_msg = '更新工组条码进度已完成数及相关工艺派工单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_oriqty <= 0 THEN EXIT
- NEXT
- ELSE
- DECLARE cur_caudit CURSOR FOR
- SELECT billid,fqty
- FROM u_order_plan_tech
- WHERE scid = :scid
- AND orderid = :orderid
- AND printid = :ll_printid
- AND fqty > 0
- Order By fqty Desc;
-
- OPEN cur_caudit;
-
- FETCH cur_caudit Into :ll_billid[ll_mxbt],:ld_noqty[ll_mxbt];
- DO WHILE sqlca.SQLCode = 0
- ll_mxbt++
- FETCH cur_caudit Into :ll_billid[ll_mxbt],:ld_noqty[ll_mxbt];
- LOOP
-
- CLOSE cur_caudit;
- FOR ll_i = 1 To ll_mxbt - 1
- IF 0 - ld_oriqty > ld_noqty[ll_i] THEN
- ld_argqty = 0 - ld_noqty[ll_i]
- ld_oriqty = ld_oriqty + ld_noqty[ll_i]
- ELSE
- ld_argqty = ld_oriqty
- ld_oriqty = 0
- END IF
-
- IF uo_plan.addcmpqty(ll_billid[ll_i],ld_argqty,arg_msg,False) = 0 THEN
- arg_msg = '更新工组条码进度已完成数及相关工艺派工单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_oriqty <= 0 THEN EXIT
- NEXT
- END IF
-
- END IF
-
- END IF
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_orderml
- Destroy uo_plan
- Return (rslt)
- end function
- public function integer tryfinish (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime null_dt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误的工序派工单唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 1 AND flag <> 3 THEN
- rslt = 0
- IF flag <> 1 THEN
- arg_msg = '工序派工单只有在进行状态下才能设置完成状态'
- ELSEIF flag <> 3 THEN
- arg_msg = '工序派工单只有在自动完成状态下才能撤销完成状态'
- END IF
- GOTO ext
- END IF
- IF flag = 1 AND fqty >= qty THEN
- UPDATE u_sc_task
- SET flag = 3,
- accomplishdate = getdate(),
- accomplishemp = :publ_operator
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其他原因导致工序派工单完成状态设置操作失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- IF flag = 3 AND fqty < qty THEN
- UPDATE u_sc_task
- SET flag = 1,
- accomplishdate = :null_dt,
- accomplishemp = ''
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其他原因导致工序派工单完成状态设置操作失败'+"~n"+sqlca.SQLErrText
- 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 del_queue (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- rslt = p_getinfo(arg_taskid, arg_msg)
- IF rslt = 0 THEN GOTO ext
- IF flag <> 0 THEN
- rslt = 0
- arg_msg = "机台任务已经开启,不可以删除,如要删除,请先更改状态"
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_data_collect
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询机台排程是否已有相关质检单失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = "该机台任务已有相关质检单,如要删除,请先删除相关质检单!"
- GOTO ext
- END IF
- DELETE FROM u_sc_task
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除机台排程操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- public function integer update_tasktype (long arg_taskid, long arg_tasktype, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag
- SELECT flag
- INTO :ll_flag
- FROM u_sc_task
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工序派工单审核状态失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_flag <> 0 THEN
- rslt = 0
- arg_msg = '工序派工单不在待审核状态,不能修改派工类型'
- GOTO ext
- END IF
- UPDATE u_sc_task
- SET tasktype = :arg_tasktype,
- modemp = :publ_operator,
- moddate = getdate()
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因导致更新派工类型失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer update_workgroupid (long arg_taskid, long arg_workgroupid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag
- SELECT flag
- INTO :ll_flag
- FROM u_sc_task
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工序派工单审核状态失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_flag <> 0 THEN
- rslt = 0
- arg_msg = '工序派工单不在待审核状态,不能修改工作中心'
- GOTO ext
- END IF
- UPDATE u_sc_task
- SET workgroupid = :arg_workgroupid,
- modemp = :publ_operator,
- moddate = getdate()
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因导致更新工作中心失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer update_empid (long arg_taskid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag
- SELECT flag
- INTO :ll_flag
- FROM u_sc_task
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工序派工单审核状态失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_flag <> 0 THEN
- rslt = 0
- arg_msg = '工序派工单不在待审核状态,不能修改员工'
- GOTO ext
- END IF
- UPDATE u_sc_task
- SET empid = :arg_empid,
- modemp = :publ_operator,
- moddate = getdate()
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络或其它原因导致更新员工失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_reset()
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer update_groupstr (long arg_taskid[], integer arg_kind, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i,cnt
- Decimal ld_fqty
- String ls_taskcode,ls_groupstr
- DateTime server_dt
- //arg_kind 0-成组 1-清空
- For ll_i = 1 To UpperBound(arg_taskid)
- Select fqty ,taskcode
- Into :ld_fqty,:ls_taskcode
- From u_sc_task
- Where taskid = :arg_taskid[ll_i];
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询工序派工单信息失败,ID:'+String(arg_taskid[ll_i])+','+sqlca.SQLErrText
- Goto ext
- End If
-
- If ld_fqty > 0 Then
- rslt = 0
- arg_msg = '单号:'+ls_taskcode+' 已有完工数,不能再更改成组号'
- Goto ext
- End If
-
- Select count(*)
- Into :cnt
- From u_sc_task Inner JOIN
- u_finishmx ON u_sc_task.taskid = u_finishmx.taskid
- Where u_sc_task.taskid = :arg_taskid[ll_i];
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '单号:'+ls_taskcode+' 已开完工单,不能再更改成组号'
- Goto ext
- End If
- Next
- If arg_kind = 0 Then
- Select Top 1 getdate() Into :server_dt From u_user ;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- Goto ext
- End If
-
- ls_groupstr = getid(scid,"G1",Date(server_dt),if_getid_ture,sqlca)
-
- If ls_groupstr = "err" Then
- rslt = 0
- arg_msg = "无法获取工序派工单成组号"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Else
- ls_groupstr = ''
-
- End If
- For ll_i = 1 To UpperBound(arg_taskid)
- Update u_sc_task
- Set groupstr = :ls_groupstr
- Where taskid = :arg_taskid[ll_i];
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新工序派工单成组号失败,ID:"+String(arg_taskid[ll_i])+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Next
- ext:
- If rslt = 0 Then
- Rollback;
- p_reset()
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Return rslt
- end function
- public function integer uof_emp_del (long arg_taskid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DELETE From u_sc_task_emp
- Where taskid = :arg_taskid
- And empid = :arg_empid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "工作中心派工类型, 删除工作中心员工操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSE
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_emp_create (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_workgroupid
- DELETE FROM u_sc_task_emp
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "工作中心派工类型, 删除工序派工单工作中心员工操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT workgroupid
- INTO :ll_workgroupid
- FROM u_sc_task
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "工作中心派工类型,查找工序派工单工作中心操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- INSERT INTO u_sc_task_emp
- (taskid, empid, assignamt)
- SELECT :arg_taskid, empid, assignamt
- FROM u_workgroupmx
- Where (workgroupid = :ll_workgroupid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "工作中心派工类型, 插入工作中心员工操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //IF sqlca.SQLNRows <= 0 THEN
- // rslt = 0
- // arg_msg = "工作中心派工类型, 工作中心员工没有相应工作人员"
- // GOTO ext
- //END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSE
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_emp_add (long arg_taskid, long arg_empid, decimal arg_assignamt, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt
- //SELECT count(*)
- // INTO :cnt
- // FROM u_sc_task_emp
- // WHERE taskid = :arg_taskid
- // And empid = :arg_empid;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "工作中心派工类型, 查找工作中心员工操作失败"+"~n"+sqlca.SQLErrText
- // GOTO ext
- //END IF
- //
- //IF cnt > 0 THEN
- // rslt = 0
- // arg_msg = "工作中心派工类型, 员工已存在"
- // GOTO ext
- //END IF
- UPDATE u_sc_task_emp
- SET assignamt = :arg_assignamt
- WHERE taskid = :arg_taskid
- And empid = :arg_empid;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT INTO u_sc_task_emp
- (taskid, empid, assignamt)
- Values(:arg_taskid, :arg_empid, :arg_assignamt);
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "工作中心派工类型, 插入工作中心员工操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- arg_msg = "工作中心派工类型, 更新工作中心员工操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEif arg_ifcommit then
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_update_qty (long arg_taskid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1
- DateTime ld_finishdate,ld_null
- uo_order_ml uo_orderml
- uo_orderml = Create uo_order_ml
- IF arg_taskid = 0 THEN
- rslt = 0
- arg_msg = "没有完成对象"
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- GOTO ext
- END IF
- IF p_getinfo(arg_taskid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //Decimal lde_qty, lde_fqty
- //String ls_taskcode
- //
- //SELECT taskcode, qty, fqty
- // INTO :ls_taskcode, :lde_qty, :lde_fqty
- // FROM u_sc_task
- // Where taskid = :arg_taskid;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "查询源派工单信息失败,"+sqlca.SQLErrText
- // GOTO ext
- //END IF
- IF fqty > qty - arg_addqty THEN
- rslt = 0
- arg_msg = '工序派工单:'+taskcode+'未派工数只有:'+String(qty - fqty,'#,##0.##########')+',不能减少派工'+String(arg_addqty,'#,##0.##########')
- GOTO ext
- END IF
- UPDATE u_sc_task
- SET qty = qty - :arg_addqty
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "更新源派工单计划数量失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF tryfinish(arg_taskid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- // //更新安排数
- IF uo_orderml.uf_add_taskqty(scid,orderid,mtrlid,procode,0 - arg_addqty ,arg_msg ,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_orderml
- Return (rslt)
- end function
- public function integer uof_chk (long arg_taskid, string arg_chkemp, integer arg_ifpass, string arg_chkrslt, ref string arg_msg, boolean arg_ifcommit, ref long arg_printid);Int rslt = 1
- Long ll_printid
- Int li_chkrsltflag
- Int li_prechkflag
- uo_finish uo_finish_wg
- uo_finish_wg = Create uo_finish
- Long cur_scid, ll_wrkgrpid, ll_wagemth, ll_tasktype, ll_workgroupid, ll_empid
- s_finish_mx s_mx[]
- Decimal ld_addqty, ld_workprice
- String ls_procode, ls_proname
- Boolean lb_find
- Long ll_wageid
- SELECT prechkflag, scid, wrkgrpid, qty - fqty, tasktype, workgroupid, empid
- INTO :li_prechkflag, :cur_scid, :ll_wrkgrpid, :ld_addqty , :ll_tasktype, :ll_workgroupid, :ll_empid
- FROM u_sc_task
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工序派工单待质检状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_prechkflag <> 1 THEN
- rslt = 0
- arg_msg = '工序派工单不是在待质检状态,不能质检'
- GOTO ext
- END IF
- SELECT isnull(max(printid),0)
- INTO :ll_printid
- FROM u_sc_task_chkmx
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN ll_printid = 0
- ll_printid++
- INSERT INTO u_sc_task_chkmx
- (taskid,
- printid,
- chkemp,
- chkdate,
- chkrslt,
- ifpass)
- VALUES (:arg_taskid,
- :ll_printid,
- :arg_chkemp,
- getdate(),
- :arg_chkrslt,
- :arg_ifpass);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入质检明细失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //返回新的printid, 可用于附件保存
- arg_printid = ll_printid
- IF arg_ifpass = 0 THEN
- //不合格,返工
- li_chkrsltflag = 2
- ELSE
- //合格
- li_chkrsltflag = 1
- END IF
- UPDATE u_sc_task
- SET chkemp = :arg_chkemp,
- chkdate = getdate(),
- chkrsltflag = :li_chkrsltflag,
- prechkflag = 0
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新工序派工单质检标记失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_chkrsltflag = 1 THEN // 合格,自动生成完工单
-
- ll_wagemth = Long(String(Today(), 'yyyyMM'))
-
- SELECT ISNULL(U_OrderRqwp.workPrice, 0), u_sc_task.procode, u_sc_task.proname
-
- INTO :ld_workprice, :ls_procode, :ls_proname
- FROM u_sc_task LEFT OUTER JOIN
- U_OrderRqwp ON u_sc_task.scid = U_OrderRqwp.scid AND
- u_sc_task.orderid = U_OrderRqwp.orderid AND
- u_sc_task.procode = U_OrderRqwp.Procode AND
- u_sc_task.mtrlid = U_OrderRqwp.Mtrlid
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工序派工单工价失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- lb_find = False
- IF ll_tasktype = 1 THEN
- IF ll_workgroupid > 0 THEN
- SELECT u_workgroup.wageid
- INTO :ll_wageid
- FROM u_workgroup INNER JOIN
- u_gz_wageitem ON u_workgroup.wageid = u_gz_wageitem.wageid
- Where (u_workgroup.workgroupid = :ll_workgroupid);
- IF sqlca.SQLCode = 0 THEN
- lb_find = True
- END IF
- END IF
-
- IF Not lb_find THEN
- SELECT top 1 wageid
- INTO :ll_wageid
- FROM u_gz_wageitem
- WHERE (u_gz_wageitem.wagemode = 16 ) AND
- ( u_gz_wageitem.useflag = 1 ) ;
- IF sqlca.SQLCode <> 0 THEN
- ll_wageid = 0
- ELSE
- lb_find = True
- END IF
- END IF
-
- ELSE
- SELECT top 1 wageid
- INTO :ll_wageid
- FROM u_gz_wageitem
- WHERE (u_gz_wageitem.wagemode = 12 ) AND
- ( u_gz_wageitem.useflag = 1 ) ;
- IF sqlca.SQLCode <> 0 THEN
- ll_wageid = 0
- END IF
- END IF
-
-
- IF uo_finish_wg.newbegin(cur_scid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_finish_wg.scid = cur_scid
- uo_finish_wg.relcode = ''
- uo_finish_wg.assign_emp = publ_operator
- uo_finish_wg.wrkgrpid = ll_wrkgrpid
- uo_finish_wg.wagemth = ll_wagemth
- uo_finish_wg.dscrp = ''
- uo_finish_wg.finishdate = DateTime(Today(),Now())
-
-
- s_mx[1].taskid = arg_taskid
- s_mx[1].printid = 1
- s_mx[1].comqty = ld_addqty
- s_mx[1].mxdscrp = ''
- s_mx[1].wageid = ll_wageid
- s_mx[1].empid = ll_empid
- s_mx[1].workgroupid = ll_workgroupid
- s_mx[1].workPrice = ld_workprice
- s_mx[1].procode = ls_procode
- s_mx[1].proname = ls_proname
- s_mx[1].storageid = 0
- s_mx[1].Location = ''
-
- s_mx[1].starttime = DateTime(Today(),Now())
- s_mx[1].endtime = DateTime(Today(),Now())
- s_mx[1].workhour = 0
- s_mx[1].beforehour = 0
- s_mx[1].afterhour = 0
- s_mx[1].waithour = 0
- s_mx[1].TechLevel = ''
-
- IF uo_finish_wg.Save(s_mx,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- // 自动确认
- // IF uo_finish_wg.audit(uo_finish_wg.finishid,arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
-
- END IF
- ext:
- Destroy uo_finish_wg
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uof_prechk (long arg_taskid, long arg_empid, string arg_prechkdscrp, string arg_carcode, string arg_locode, string arg_othercode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- String ls_taskcode
- String ls_empname
- Long ll_pempid
- Int li_flag
- uo_phone_push uo_push
- uo_push = Create uo_phone_push
- SELECT flag, taskcode
- INTO :li_flag, :ls_taskcode
- FROM u_sc_task
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询工序派工单状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_flag <> 1 THEN
- rslt = 0
- arg_msg = '工序派工单不是在进行状态,不能申请质检'
- GOTO ext
- END IF
- IF arg_empid > 0 THEN
- SELECT empname, pempid
- INTO :ls_empname, :ll_pempid
- FROM u_rs_empinfo
- Where empid = :arg_empid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询员工信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- UPDATE u_sc_task
- SET prechkflag = 1 ,
- prechkdate = getdate(),
- empid = :arg_empid,
- prechkdscrp = :arg_prechkdscrp,
- carcode = :arg_carcode,
- locode = :arg_locode,
- othercode = :arg_othercode
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新待质检标记失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- // DONE: 通知上司
- Long ll_pushid
- Long arr_empids[]
- String ls_content
- IF ll_pempid > 0 THEN
- arr_empids[1] = ll_pempid
- ls_content = '派工单号:'+ls_taskcode
- IF arg_carcode <> '' THEN ls_content += ',车/袋号:'+arg_carcode
- IF arg_locode <> '' THEN ls_content += ',仓位:'+arg_locode
- IF arg_othercode <> '' THEN ls_content += ',其它:'+arg_othercode
-
- IF uo_push.uf_add(arr_empids, ls_empname + '申请了工序派工质检', ls_content, 'sc_task_prechk', String(arg_taskid), ll_pushid, arg_msg, False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- ext:
- Destroy uo_push
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- on uo_sc_task.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_sc_task.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|