123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527 |
- $PBExportHeader$uo_saleout.sru
- forward
- global type uo_saleout from nonvisualobject
- end type
- end forward
- global type uo_saleout from nonvisualobject
- end type
- global uo_saleout uo_saleout
- type variables
- Transaction commit_transaction //数据commit事务
- long taskid
- int uo_option_confirmaudit_sale,uo_option_sale_use_planqty
- end variables
- forward prototypes
- public function integer save (s_saleout arg_saleout, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_getflag (long arg_taskid, ref integer arg_flag, ref string arg_msg)
- public function integer updatebegin (long arg_taskid, ref string arg_msg)
- public function integer del (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_taskid, ref s_saleoutmx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg)
- public function integer addmxcmpl (long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer trycmpsaleout (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer stoptask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer tmpstoptask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishtask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp2 (long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopqty (long arg_taskid, long arg_printid, decimal arg_stopqty, string arg_stopreason, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_updatesaleoutcodestr (long arg_scid, long arg_taskid, ref string arg_msg)
- public function integer sec_audit (long arg_taskid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer audit (long arg_taskid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer sec_caudit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer caudit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer save (s_saleout arg_saleout, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt,ll_i
- Long it_mxbt, it_mxbt_item
- Long ll_taskid
- String ls_taskcode,ls_sccode
- DateTime server_datetime
- Decimal ls_SaleQty,ld_saleoutqty,ld_qty_noaudit
- String ls_mtrlcode
- Decimal ld_upsalerate,ld_upsaleqty
- IF IsNull(arg_saleout.dscrp) THEN arg_saleout.dscrp = ''
- IF IsNull(arg_saleout.dscrp2) THEN arg_saleout.dscrp2 = ''
- IF IsNull(arg_saleout.assign_emp) THEN arg_saleout.assign_emp = ''
- IF IsNull(arg_saleout.paytype) THEN arg_saleout.paytype = ''
- IF IsNull(arg_saleout.relcode) THEN arg_saleout.relcode = ''
- IF IsNull(arg_saleout.banktypeid) THEN arg_saleout.banktypeid = 0
- IF IsNull(arg_saleout.moneyid) THEN arg_saleout.moneyid = 0
- //IF IsNull(arg_saleout.damt) THEN arg_saleout.damt = 0
- //IF IsNull(arg_saleout.otheramt) THEN arg_saleout.otheramt = 0
- IF IsNull(arg_saleout.mrate) THEN arg_saleout.mrate = 0
- IF IsNull(arg_saleout.freight) THEN arg_saleout.freight = ''
- IF IsNull(arg_saleout.freight_tele) THEN arg_saleout.freight_tele = ''
- IF IsNull(arg_saleout.cus_address) THEN arg_saleout.cus_address = ''
- IF IsNull(arg_saleout.cus_tele) THEN arg_saleout.cus_tele = ''
- IF IsNull(arg_saleout.cus_fax) THEN arg_saleout.cus_fax = ''
- IF IsNull(arg_saleout.upname) THEN arg_saleout.upname = ''
- IF IsNull(arg_saleout.cusid) THEN arg_saleout.cusid = 0
- IF Trim(arg_saleout.assign_emp) = '' THEN
- rslt = 0
- arg_msg = "请输入订单业务员"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_cust
- Where cusid = :arg_saleout.cusid Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,客户资料"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "客户未定义或错误"
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_banktype
- Where banktypeid = :arg_saleout.banktypeid;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询结算方式失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '结算方式不存在'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_currency
- Where moneyid = :arg_saleout.moneyid;
- IF commit_transaction.SQLCode <> 0 THEN
- arg_msg = '查询币种失败'
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '币种资料不存在'
- rslt = 0
- GOTO ext
- END IF
- IF arg_saleout.mrate = 0 THEN
- arg_msg = '币种汇率错误'
- rslt = 0
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF f_check_inoutdate(0,arg_saleout.taskdate,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- it_mxbt = UpperBound(arg_saleout.arg_s_mx)
- it_mxbt_item = UpperBound(arg_saleout.arg_s_itemmx)
- IF it_mxbt <= 0 THEN
- rslt = 0
- arg_msg = "没有正确明细内容"
- GOTO ext
- END IF
- FOR ll_i = 1 To it_mxbt
- IF arg_saleout.arg_s_mx[ll_i].mtrlid = 0 Or arg_saleout.arg_s_mx[ll_i].saleqty = 0 THEN CONTINUE
-
- SELECT count(*) INTO :cnt
- FROM u_mtrldef
- Where mtrlid = :arg_saleout.arg_s_mx[ll_i].mtrlid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询产品资料:'+arg_saleout.arg_s_mx[ll_i].mtrlcode+' 失败'
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '产品资料:'+ arg_saleout.arg_s_mx[ll_i].mtrlcode +'不存在'
- GOTO ext
- END IF
-
- IF arg_saleout.arg_s_mx[ll_i].enprice * arg_saleout.arg_s_mx[ll_i].rebate < 0 THEN
- rslt = 0
- arg_msg = "产品:" + String(arg_saleout.arg_s_mx[ll_i].mtrlcode)+" 单价错误"
- GOTO ext
- END IF
-
- IF arg_saleout.arg_s_mx[ll_i].rebate < 0 THEN
- arg_msg = '折扣错误,请检查'
- rslt = 0
- GOTO ext
- END IF
-
-
- //检查已开单数
- IF arg_saleout.arg_s_mx[ll_i].relid > 0 THEN
- SELECT u_SaleTaskMx.SaleQty,
- u_SaleTaskMx.saleoutqty,
- u_mtrldef.mtrlcode,
- u_mtrldef.upsalerate,
- u_mtrldef.upsaleqty
- INTO :ls_SaleQty,
- :ld_saleoutqty,
- :ls_mtrlcode,
- :ld_upsalerate,
- :ld_upsaleqty
- FROM u_SaleTaskMx ,u_mtrldef
- WHERE ( u_SaleTaskMx.scid = :arg_saleout.scid ) AND
- ( u_SaleTaskMx.TaskID = :arg_saleout.arg_s_mx[ll_i].relid ) AND
- ( u_SaleTaskMx.printid = :arg_saleout.arg_s_mx[ll_i].relprintid ) AND
- ( u_SaleTaskMx.mtrlid = u_mtrldef.mtrlid) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询销售订单已完成数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
-
- //已开单未审核(非本单)
- SELECT SUM(u_saleoutmx.saleqty)
- INTO :ld_qty_noaudit
- FROM u_saleoutmx INNER JOIN
- u_saleout ON u_saleoutmx.taskid = u_saleout.taskid
- WHERE (u_saleout.flag = 0) AND
- ( u_saleoutmx.scid = :arg_saleout.scid ) AND
- ( u_saleoutmx.relid = :arg_saleout.arg_s_mx[ll_i].relid ) AND
- ( u_saleoutmx.relprnitid = :arg_saleout.arg_s_mx[ll_i].relprintid ) AND
- ( u_saleout.taskid <> :arg_saleout.TaskID)
- Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- ld_qty_noaudit = 0
- END IF
-
- IF ls_SaleQty * (1 + ld_upsalerate) + ld_upsaleqty < ld_saleoutqty +ld_qty_noaudit+ arg_saleout.arg_s_mx[ll_i].saleqty THEN
- rslt = 0
- arg_msg = "产品["+ls_mtrlcode+"]的未通知发货数量只有"+String(ls_SaleQty - ld_saleoutqty - ld_qty_noaudit,'#,##0.0#')+",上限:"+String(ls_SaleQty * (1 + ld_upsalerate) + ld_upsaleqty - ld_saleoutqty - ld_qty_noaudit,'#,##0.0#')+",不能下单"+String(arg_saleout.arg_s_mx[ll_i].saleqty,'#,##0.0#')
- GOTO ext
- END IF
- END IF
- NEXT
- FOR ll_i = 1 To it_mxbt_item
- SELECT count(*)
- INTO :cnt
- FROM u_itemdef
- Where itemid = :arg_saleout.arg_s_itemmx[ll_i].itemid;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询收支项目是否存在失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '第'+String(arg_saleout.arg_s_itemmx[ll_i].printid)+'行,收支项目不存在,请检查'
- GOTO ext
- END IF
- NEXT
- IF arg_saleout.TaskID = 0 THEN
- ll_taskid = f_sys_scidentity(0,"u_saleout","taskid",arg_msg,True,id_sqlca)
-
- IF ll_taskid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(arg_saleout.scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ls_taskcode = getid(arg_saleout.scid,ls_sccode + 'SO',Date(server_datetime),False,commit_transaction)
-
- IF ls_taskcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_saleout
- (scid,
- taskid,
- taskcode,
- cusid,
- taskdate,
- relcode,
- dscrp,
- dscrp2,
- cus_address,
- cus_tele,
- cus_fax,
- freight,
- freight_tele,
- assign_emp,
- upname,
- banktypeid,
- paytype,
- opemp,
- opdate,
- moneyid,
- mrate)
- VALUES (:arg_saleout.scid,
- :ll_taskid,
- :ls_taskcode,
- :arg_saleout.cusid,
- :arg_saleout.taskdate,
- :arg_saleout.relcode,
- :arg_saleout.dscrp,
- :arg_saleout.dscrp2,
- :arg_saleout.cus_address,
- :arg_saleout.cus_tele,
- :arg_saleout.cus_fax,
- :arg_saleout.freight,
- :arg_saleout.freight_tele,
- :arg_saleout.assign_emp,
- :arg_saleout.upname,
- :arg_saleout.banktypeid,
- :arg_saleout.paytype,
- :arg_opemp,
- getdate(),
- :arg_saleout.moneyid,
- :arg_saleout.mrate) Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入发货通知单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- TaskID = ll_taskid
-
- FOR ll_i = 1 To it_mxbt
- INSERT INTO u_saleoutmx
- (scid,
- taskid,
- printid,
- ifrel,
- mtrlid,
- saleqty,
- enprice,
- fprice,
- rebate,
- status,
- woodcode,
- pcode,
- mtrlcuscode,
- outtypestr,
- mxdscrp,
- mxdscrp2,
- relid,
- relprintid,
- relcode,
- mtrlcuscode2)
- VALUES (:arg_saleout.scid,
- :ll_taskid,
- :arg_saleout.arg_s_mx[ll_i].printid,
- :arg_saleout.arg_s_mx[ll_i].ifrel,
- :arg_saleout.arg_s_mx[ll_i].mtrlid,
- :arg_saleout.arg_s_mx[ll_i].saleqty,
- :arg_saleout.arg_s_mx[ll_i].enprice,
- :arg_saleout.arg_s_mx[ll_i].fprice,
- :arg_saleout.arg_s_mx[ll_i].rebate,
- :arg_saleout.arg_s_mx[ll_i].status,
- :arg_saleout.arg_s_mx[ll_i].woodcode,
- :arg_saleout.arg_s_mx[ll_i].pcode,
- :arg_saleout.arg_s_mx[ll_i].mtrlcuscode,
- :arg_saleout.arg_s_mx[ll_i].outtypestr,
- :arg_saleout.arg_s_mx[ll_i].mxdscrp,
- :arg_saleout.arg_s_mx[ll_i].mxdscrp2,
- :arg_saleout.arg_s_mx[ll_i].relid,
- :arg_saleout.arg_s_mx[ll_i].relprintid,
- :arg_saleout.arg_s_mx[ll_i].relcode,
- :arg_saleout.arg_s_mx[ll_i].mtrlcuscode2)
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入发货通知单明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- ELSE
- UPDATE u_saleout
- SET cusid = :arg_saleout.cusid,
- taskdate = :arg_saleout.taskdate,
- relcode = :arg_saleout.relcode,
- dscrp = :arg_saleout.dscrp,
- dscrp2 = :arg_saleout.dscrp2,
- cus_address = :arg_saleout.cus_address,
- cus_tele = :arg_saleout.cus_tele,
- cus_fax = :arg_saleout.cus_fax,
- freight = :arg_saleout.freight,
- freight_tele = :arg_saleout.freight_tele,
- assign_emp = :arg_saleout.assign_emp,
- upname = :arg_saleout.upname,
- banktypeid = :arg_saleout.banktypeid,
- paytype = :arg_saleout.paytype,
- modemp = :arg_opemp,
- moddate = getdate() ,
- moneyid = :arg_saleout.moneyid,
- mrate = :arg_saleout.mrate
- Where TaskID = :arg_saleout.TaskID Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新发货通知单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_saleoutmx
- Where TaskID = :arg_saleout.TaskID Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- FOR ll_i = 1 To it_mxbt
- INSERT INTO u_saleoutmx
- (scid,
- taskid,
- printid,
- ifrel,
- mtrlid,
- saleqty,
- enprice,
- fprice,
- rebate,
- status,
- woodcode,
- pcode,
- mtrlcuscode,
- outtypestr,
- mxdscrp,
- mxdscrp2,
- relid,
- relprintid,
- relcode,
- mtrlcuscode2)
- VALUES (:arg_saleout.scid,
- :arg_saleout.taskid,
- :arg_saleout.arg_s_mx[ll_i].printid,
- :arg_saleout.arg_s_mx[ll_i].ifrel,
- :arg_saleout.arg_s_mx[ll_i].mtrlid,
- :arg_saleout.arg_s_mx[ll_i].saleqty,
- :arg_saleout.arg_s_mx[ll_i].enprice,
- :arg_saleout.arg_s_mx[ll_i].fprice,
- :arg_saleout.arg_s_mx[ll_i].rebate,
- :arg_saleout.arg_s_mx[ll_i].status,
- :arg_saleout.arg_s_mx[ll_i].woodcode,
- :arg_saleout.arg_s_mx[ll_i].pcode,
- :arg_saleout.arg_s_mx[ll_i].mtrlcuscode,
- :arg_saleout.arg_s_mx[ll_i].outtypestr,
- :arg_saleout.arg_s_mx[ll_i].mxdscrp,
- :arg_saleout.arg_s_mx[ll_i].mxdscrp2,
- :arg_saleout.arg_s_mx[ll_i].relid,
- :arg_saleout.arg_s_mx[ll_i].relprintid,
- :arg_saleout.arg_s_mx[ll_i].relcode,
- :arg_saleout.arg_s_mx[ll_i].mtrlcuscode2)
- Using commit_transaction;
-
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入发货通知单明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- TaskID = arg_saleout.TaskID
-
-
- DELETE FROM u_saleout_itemmx
- Where TaskID = :arg_saleout.TaskID Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有费用明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- FOR ll_i = 1 To it_mxbt_item
- INSERT INTO u_saleout_itemmx
- (scid,
- taskid,
- printid,
- itemid,
- amt,
- mxdscrp)
- VALUES (:arg_saleout.scid,
- :taskid,
- :arg_saleout.arg_s_itemmx[ll_i].printid,
- :arg_saleout.arg_s_itemmx[ll_i].itemid,
- :arg_saleout.arg_s_itemmx[ll_i].amt,
- :arg_saleout.arg_s_itemmx[ll_i].mxdscrp) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- TaskID = arg_saleout.TaskID //还原taskid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入发货通知单费用明细操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer p_getflag (long arg_taskid, ref integer arg_flag, ref string arg_msg);Int rslt = 1
- SELECT flag INTO :arg_flag
- FROM u_saleout
- Where taskid = :arg_taskid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer updatebegin (long arg_taskid, ref string arg_msg);Int rslt = 1
- Int li_flag
- Long cnt
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是在待审核状态,不可以修改,要修改请先撤销审核'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer del (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是在待审核状态,不能删除'
- GOTO ext
- END IF
- DELETE FROM u_saleoutmx
- WHERE taskid = :arg_taskid
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除明细失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_saleout
- WHERE taskid = :arg_taskid
- AND flag = 0
- USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除单据失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer getinfo (long arg_taskid, ref s_saleoutmx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1
- Long i = 1,no_mxcheck = 0
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- DECLARE cur_mx CURSOR FOR
- SELECT u_saleoutmx.scid,
- u_saleoutmx.printid,
- u_saleoutmx.ifrel,
- u_saleoutmx.mtrlid,
- u_saleoutmx.saleqty,
- u_saleoutmx.consignedqty,
- u_saleoutmx.relid,
- u_saleoutmx.relprintid,
- u_saleoutmx.stopqty,
- u_saleoutmx.status,
- u_saleoutmx.woodcode,
- u_saleoutmx.pcode,
- u_mtrldef.mtrlcode
- FROM u_saleoutmx INNER JOIN
- u_mtrldef ON u_saleoutmx.mtrlid = u_mtrldef.mtrlid
- WHERE u_saleoutmx.taskid = :arg_taskid
- Order By u_saleoutmx.printid Using commit_transaction;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :arg_ref_mx[i].scid,
- :arg_ref_mx[i].printid,
- :arg_ref_mx[i].ifrel,
- :arg_ref_mx[i].mtrlid,
- :arg_ref_mx[i].saleqty,
- :arg_ref_mx[i].consignedqty,
- :arg_ref_mx[i].relid,
- :arg_ref_mx[i].relprintid,
- :arg_ref_mx[i].stopqty,
- :arg_ref_mx[i].status,
- :arg_ref_mx[i].woodcode,
- :arg_ref_mx[i].pcode,
- :arg_ref_mx[i].mtrlcode;
-
- DO WHILE commit_transaction.SQLCode = 0
- i++
- FETCH cur_mx INTO :arg_ref_mx[i].scid,
- :arg_ref_mx[i].printid,
- :arg_ref_mx[i].ifrel,
- :arg_ref_mx[i].mtrlid,
- :arg_ref_mx[i].saleqty,
- :arg_ref_mx[i].consignedqty,
- :arg_ref_mx[i].relid,
- :arg_ref_mx[i].relprintid,
- :arg_ref_mx[i].stopqty,
- :arg_ref_mx[i].status,
- :arg_ref_mx[i].woodcode,
- :arg_ref_mx[i].pcode,
- :arg_ref_mx[i].mtrlcode;
- LOOP
- CLOSE cur_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_saleoutmx
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck + 1) THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细内容"
- GOTO ext
- END IF
- arg_arr_cnt = i - 1
- ext:
- RETURN rslt
- end function
- public function integer addmxcmpl (long arg_taskid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误的发货通知单唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '查询发货通知单状态失败'
- GOTO ext
- END IF
- IF li_flag <> 1 And li_flag <> 5 THEN
- rslt = 0
- arg_msg = '发货通知单只有在进行或已完成状态下才能执行更新已发货数操作'
- GOTO ext
- END IF
- Decimal ld_saleqty,ld_consignedqty,ld_stopqty
- String ls_mtrlcode
- SELECT u_saleoutmx.saleqty,
- u_saleoutmx.consignedqty,
- u_mtrldef.mtrlcode,
- u_saleoutmx.stopqty
- INTO :ld_saleqty,
- :ld_consignedqty,
- :ls_mtrlcode,
- :ld_stopqty
- FROM u_saleoutmx,u_mtrldef
- WHERE (u_saleoutmx.mtrlid = u_mtrldef.mtrlid)
- AND (u_saleoutmx.taskid = :arg_taskid)
- And (u_saleoutmx.printid = :arg_printid) Using commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询发货通知单已发货数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ld_saleqty > 0 THEN
- IF ld_saleqty < ld_consignedqty + ld_stopqty + arg_addqty THEN
- rslt = 0
- arg_msg = "产品["+ls_mtrlcode+"]的未发货数量只有"+String(ld_saleqty - ld_consignedqty - ld_stopqty,'#,##0.##########')+",不能发货"+String(arg_addqty,'#,##0.##########')
- GOTO ext
- END IF
- ELSE
- IF Abs(ld_saleqty) < Abs(ld_consignedqty + ld_stopqty + arg_addqty) THEN
- rslt = 0
- arg_msg = "产品["+ls_mtrlcode+"]的未发货数量只有"+String(ld_saleqty - ld_consignedqty - ld_stopqty,'#,##0.##########')+",不能发货"+String(arg_addqty,'#,##0.##########')
- GOTO ext
- END IF
- END IF
- UPDATE u_saleoutmx
- SET consignedqty = consignedqty + :arg_addqty
- WHERE (u_saleoutmx.taskid = :arg_taskid)
- And (u_saleoutmx.printid = :arg_printid) Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或错误产品唯一码导致发货通知单已发货数量操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer trycmpsaleout (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime null_dt
- Int li_flag
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误销售订单唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '查询发货通知单状态失败'
- GOTO ext
- END IF
- IF li_flag <> 1 AND li_flag <> 5 THEN
- rslt = 0
- arg_msg = '发货通知单只有在进行和已完成状态下才能执行完成和撤销完成操作'
- GOTO ext
- END IF
- Decimal ls_zerook
- Boolean if_finish
- if_finish = TRUE
- DECLARE zero_cur CURSOR FOR
- SELECT u_saleoutmx.saleqty - u_saleoutmx.consignedqty - u_saleoutmx.stopqty
- FROM u_saleoutmx
- WHERE u_saleoutmx.taskid = :arg_taskid
- USING commit_transaction ;
-
- OPEN zero_cur;
- FETCH zero_cur INTO :ls_zerook;
- DO WHILE commit_transaction.SQLCode = 0
- IF if_finish THEN
- IF ls_zerook > 0 THEN if_finish = FALSE
- END IF
- FETCH zero_cur INTO :ls_zerook;
- LOOP
- CLOSE zero_cur;
- IF li_flag = 1 AND if_finish THEN
- UPDATE u_saleout
- SET flag = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- Where ( u_saleout.taskid = :arg_taskid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致发货通知单完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- END IF
- IF li_flag = 5 AND NOT if_finish THEN
- UPDATE u_saleout
- SET flag = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- Where ( u_saleout.taskid = :arg_taskid ) USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致发货通知单撤消完成状态设置操作失败"+"~n"+commit_transaction.SQLErrText
- ROLLBACK USING commit_transaction;
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer stoptask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误发货通知单唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 1 THEN
- rslt = 0
- ARG_MSG = '发货通知单只有在进行状态下才能执行终止操作'
- GOTO ext
- END IF
- UPDATE u_saleout
- SET flag = 3,
- accomplishdate = getdate() ,
- stopemp = :publ_operator
- Where TaskID = :arg_taskid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致终止发货通知单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer tmpstoptask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误发货通知单唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 1 AND li_flag <> 2 THEN
- rslt = 0
- ARG_MSG = '发货通知单只有在进行或已暂停状态下才能执行暂停/取消暂停操作'
- GOTO ext
- END IF
- IF li_flag = 1 THEN
- UPDATE u_saleout
- SET flag = 2,
- stopemp = :publ_operator
- Where TaskID = :arg_taskid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致暂停发货通知单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_saleout
- SET flag = 1,
- stopemp = ''
- Where TaskID = :arg_taskid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致取消暂停发货通知单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer finishtask (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误发货通知单唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 1 THEN
- rslt = 0
- ARG_MSG = '发货通知单只有在进行状态下才能执行完成操作'
- GOTO ext
- END IF
- UPDATE u_saleout
- SET flag = 5,
- accomplishdate = getdate() ,
- finishemp = :publ_operator
- Where TaskID = :arg_taskid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致完成发货通知单操作失败"+"~n"+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer add_dscrp (long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Int li_flag
- arg_newdescppart = Trim(arg_newdescppart)
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_saleout
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- Where u_saleout.taskid = :arg_taskid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加销售订单备注操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- Return (rslt)
- end function
- public function integer add_dscrp2 (long arg_taskid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);
- Int rslt = 1
- Int li_flag
- arg_newdescppart = Trim(arg_newdescppart)
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_saleout
- SET DSCRP2 = DSCRP2+' '+:arg_newdescppart
- Where u_saleout.taskid = :arg_taskid USING commit_transaction ;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加销售订单备注操作失败"+"~n"+ commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT USING commit_transaction;
- END IF
- Return (rslt)
- end function
- public function integer stopqty (long arg_taskid, long arg_printid, decimal arg_stopqty, string arg_stopreason, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- Decimal ld_saleqty,ld_consignedqty,ld_stopqty_ori
- Decimal lde_notauditqty,lde_notauditqty_plan
- Long ll_relid,ll_relprintid,ll_scid
- Boolean lb_ifplan = False
- uo_saletask obj_saletask
- obj_saletask = Create uo_saletask
- obj_saletask.commit_transaction = commit_transaction
- IF uo_option_confirmaudit_sale = -1000 THEN
- rslt = 0
- arg_msg = '选项:[025]销售单先确认后审核,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_sale_use_planqty = -1000 THEN
- rslt = 0
- arg_msg = '选项:[115]销售发货单使用计划发货数,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF uo_option_confirmaudit_sale = 1 And uo_option_sale_use_planqty = 1 THEN lb_ifplan = True
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 1 And li_flag <> 5 THEN
- arg_msg = '发货通知单只能在进行状态或已完成状态才能操作'
- rslt = 0
- GOTO ext
- END IF
- SELECT saleqty,consignedqty,relid,relprintid,scid,stopqty
- INTO :ld_saleqty,:ld_consignedqty,:ll_relid,:ll_relprintid,:ll_scid,:ld_stopqty_ori
- FROM u_saleoutmx
- WHERE taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询发货通知单明细信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- SELECT isnull(sum(qty),0),isnull(sum(planqty),0)
- INTO :lde_notauditqty,:lde_notauditqty_plan
- FROM u_outwaremx INNER JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid AND
- u_outwaremx.outwareid = u_outware.outwareid
- WHERE u_outware.billtype = 1
- AND (u_outwaremx.saleoutid = :arg_taskid)
- AND (u_outwaremx.saleoutprintid = :arg_printid)
- And (u_outware.flag = 0 ) ;
- IF commit_transaction.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询发货通知单明细信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF IsNull(lde_notauditqty) THEN lde_notauditqty = 0
- IF IsNull(lde_notauditqty_plan) THEN lde_notauditqty_plan = 0
- IF lb_ifplan THEN
- IF ld_saleqty - ld_consignedqty - lde_notauditqty < arg_stopqty THEN
- rslt = 0
- arg_msg = '发货通知单明细未发货数只有:'+String(ld_saleqty - ld_consignedqty - lde_notauditqty,'#,##0.##########')+',不能再终止:'+String(arg_stopqty,'#,##0.##########')
- GOTO ext
- END IF
- ELSE
- IF ld_saleqty - ld_consignedqty - lde_notauditqty_plan < arg_stopqty THEN
- rslt = 0
- arg_msg = '发货通知单明细未发货数只有:'+String(ld_saleqty - ld_consignedqty - lde_notauditqty_plan,'#,##0.##########')+',不能再终止:'+String(arg_stopqty,'#,##0.##########')
- GOTO ext
- END IF
- END IF
- IF ll_relid > 0 THEN
- IF obj_saletask.addmxsaleout(ll_scid,ll_relid,ll_relprintid, ld_stopqty_ori - arg_stopqty,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- UPDATE u_saleoutmx
- SET stopqty = :arg_stopqty,
- stopreason = :arg_stopreason,
- stopemp = :arg_opemp
- WHERE taskid = :arg_taskid
- And printid = :arg_printid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新发货通知单明细终止数失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF trycmpsaleout(arg_taskid,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT Using commit_transaction;
- END IF
- Destroy obj_saletask
- RETURN rslt
- end function
- public function integer uof_updatesaleoutcodestr (long arg_scid, long arg_taskid, ref string arg_msg);if sys_option_if_saleout = 0 then return 1
- Int rslt = 1
- Long i
- Long ll_scid, ll_taskid, ll_printid
- long it_mxbt
- s_saleoutmx s_mx[]
- uo_bgtr_timer uo_tr
- uo_tr = Create uo_bgtr_timer
- IF getinfo( arg_taskid, s_mx, it_mxbt, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- FOR i = 1 To it_mxbt
- ll_taskid = s_mx[i].relid
- ll_printid = s_mx[i].relprintid
- IF ll_taskid > 0 And ll_printid > 0 THEN
- IF uo_tr.uf_update_saleoutcodestr(arg_scid, ll_taskid, ll_printid, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- Destroy uo_tr
- RETURN rslt
- end function
- public function integer sec_audit (long arg_taskid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- uo_saletask obj_saletask
- obj_saletask = CREATE uo_saletask
- obj_saletask.commit_transaction = commit_transaction
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 4 THEN
- rslt = 0
- arg_msg = '单据不是在待终审状态,不可以再审'
- GOTO ext
- END IF
- s_saleoutmx arg_ref_mx[]
- Long ll_arr_cnt,ll_i
- IF getinfo(arg_taskid,arg_ref_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- FOR ll_i = 1 TO ll_arr_cnt
- IF arg_ref_mx[ll_i].relid > 0 THEN
- IF obj_saletask.addmxsaleout(arg_ref_mx[ll_i].scid,arg_ref_mx[ll_i].relid,arg_ref_mx[ll_i].relprintid,arg_ref_mx[ll_i].saleqty,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- UPDATE u_saleout
- SET flag = 1 ,
- sec_auditemp = :arg_opemp,
- sec_auditdate = getdate()
- WHERE taskid = :arg_taskid
- AND flag = 4 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- DESTROY obj_saletask
- RETURN rslt
- end function
- public function integer audit (long arg_taskid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是在待审核状态,不可以再审'
- GOTO ext
- END IF
- UPDATE u_saleout
- SET flag = 4 ,
- auditemp = :arg_opemp,
- auditdate = getdate()
- WHERE taskid = :arg_taskid
- AND flag = 0 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer sec_caudit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- DateTime null_dt
- Long cnt
- SetNull(null_dt)
- uo_saletask obj_saletask
- obj_saletask = CREATE uo_saletask
- obj_saletask.commit_transaction = commit_transaction
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 1 THEN
- rslt = 0
- arg_msg = '单据不是在进行状态,不可以撤审'
- GOTO ext
- END IF
- SELECT count(*) INTO :cnt
- FROM u_outwaremx
- Where saleoutid = :arg_taskid USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询发货通知单是否有相关销售发货单失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '发货通知单已有相关销售发货单,不能撤审'
- GOTO ext
- END IF
- s_saleoutmx arg_ref_mx[]
- Long ll_arr_cnt,ll_i
- IF getinfo(arg_taskid,arg_ref_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- FOR ll_i = 1 TO ll_arr_cnt
- IF arg_ref_mx[ll_i].relid > 0 THEN
- IF obj_saletask.addmxsaleout(arg_ref_mx[ll_i].scid,arg_ref_mx[ll_i].relid,arg_ref_mx[ll_i].relprintid,0 - arg_ref_mx[ll_i].saleqty,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- UPDATE u_saleout
- SET flag = 4 ,
- sec_auditemp = '',
- sec_auditdate = :null_dt
- WHERE taskid = :arg_taskid
- AND flag = 1 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- DESTROY obj_saletask
- RETURN rslt
- end function
- public function integer caudit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- DateTime null_dt
- Long cnt
- SetNull(null_dt)
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_taskid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 4 THEN
- rslt = 0
- arg_msg = '单据不是待终审状态,不可以撤审'
- GOTO ext
- END IF
- s_saleoutmx arg_ref_mx[]
- Long ll_arr_cnt,ll_i
- IF getinfo(arg_taskid,arg_ref_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_saleout
- SET flag = 0 ,
- auditemp = '',
- auditdate = :null_dt
- WHERE taskid = :arg_taskid
- AND flag = 4 USING commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据状态失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK USING commit_transaction;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT USING commit_transaction;
- END IF
- RETURN rslt
- end function
- on uo_saleout.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_saleout.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|