123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074 |
- $PBExportHeader$uo_mtrl_price_change.sru
- forward
- global type uo_mtrl_price_change from nonvisualobject
- end type
- end forward
- global type uo_mtrl_price_change from nonvisualobject
- end type
- global uo_mtrl_price_change uo_mtrl_price_change
- type variables
- Long uo_billid
- String uo_billcode
- end variables
- forward prototypes
- public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg)
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_billid, ref string arg_msg)
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_billid, ref s_mtrl_price_changemx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg)
- public function integer getinfo2 (long arg_billid, ref s_mtrl_price_changemx2 arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg)
- public function integer save (s_mtrl_price_change arg_mpc, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer uf_update_task (long arg_scid, long arg_billid, decimal arg_newprice, ref string arg_msg, boolean arg_ifcommit)
- public function integer uf_update_in (long arg_scid, long arg_billid, decimal arg_newprice, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg);Int rslt = 1
- SELECT flag
- INTO :arg_flag
- FROM u_mtrl_price_change
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,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
- DELETE FROM u_mtrl_price_change
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_mtrl_price_changemx
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_mtrl_price_changemx2
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据明细2操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getflag(arg_billid,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_mtrl_price_change
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- WHERE u_mtrl_price_change.billid = :arg_billid;
- IF SQLCA.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
- Int li_flag
- Long cnt
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,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
- ext:
- RETURN rslt
- end function
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- Long ll_scid
- Decimal lde_newprice
- Long ll_sptid , ll_mtrlid
- String ls_status, ls_woodcode, ls_pcode
- String ls_mtrlcode, ls_unit
- Long ll_moneyid
- datetime ldt_billdate
- dec lde_rate
- uo_spt_price_change uo_price
- uo_price = Create uo_spt_price_change
- uo_price.commit_transaction = sqlca
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,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
- SELECT scid, newprice, sptid, mtrlid, status, woodcode, pcode, moneyid, billdate, unit, rate
- INTO :ll_scid, :lde_newprice, :ll_sptid, :ll_mtrlid, :ls_status, :ls_woodcode, :ls_pcode, :ll_moneyid, :ldt_billdate, :ls_unit, :lde_rate
- FROM u_mtrl_price_change
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询单据信息失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT mtrlcode
- INTO :ls_mtrlcode
- FROM u_mtrldef
- Where mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询单据物料信息失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //生成询价单creage_
- IF uo_price.newbegin() = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //uo_price.billdate = DateTime(Today()) // 发生时间
- //uo_price.sptid = ll_sptid
- //uo_price.dscrp = "物价单价变更的审核自动生成" //备注
- //uo_price.billtype = 1 //调价单
- //uo_price.inrep = publ_operator
- //uo_price.moneyid = ll_moneyid
- //
- //IF uo_price.acceptmx(1,&
- // ll_mtrlid,&
- // ls_mtrlcode,&
- // ls_unit,&
- // lde_newprice,&
- // lde_rate,&
- // ls_status,&
- // ls_woodcode,&
- // ls_pcode,&
- // '',&
- // '',&
- // '',&
- // ldt_billdate,&
- // 0,&
- // 0,&
- // arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF uo_price.Save(arg_msg,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //IF uo_price.first_audit(uo_price.billid,False,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //
- //IF uo_price.auditing(uo_price.billid,False,arg_msg) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- //生成询价单creage_
- //更新审核标记
- UPDATE u_mtrl_price_change
- SET auditemp = :arg_opemp,
- auditdate = getdate(),
- flag = 1,
- relid = :uo_price.billid,
- relcode = :uo_price.billcode
- WHERE billid = :arg_billid
- And flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF uf_update_task(ll_scid , arg_billid, lde_newprice, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF uf_update_in(ll_scid , arg_billid, lde_newprice, arg_msg, False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ext:
- Destroy uo_price
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer getinfo (long arg_billid, ref s_mtrl_price_changemx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1
- Long i = 1,no_mxcheck = 0
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_mx CURSOR FOR
- SELECT u_mtrl_price_changemx.billid,
- u_mtrl_price_changemx.printid,
- u_mtrl_price_changemx.relid,
- u_mtrl_price_changemx.price,
- u_mtrl_price_changemx.rate,
- u_mtrl_price_changemx.scid,
- u_mtrl_price_changemx.relprintid,
- u_mtrl_price_changemx.mxtype,
- u_mtrl_price_changemx.unit
- FROM u_mtrl_price_changemx
- WHERE u_mtrl_price_changemx.billid = :arg_billid
- Order By u_mtrl_price_changemx.printid;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :arg_ref_mx[i].billid,
- :arg_ref_mx[i].printid,:arg_ref_mx[i].relid,
- :arg_ref_mx[i].price,:arg_ref_mx[i].rate,
- :arg_ref_mx[i].scid,:arg_ref_mx[i].relprintid,
- :arg_ref_mx[i].mxtype,:arg_ref_mx[i].unit;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx INTO :arg_ref_mx[i].billid,
- :arg_ref_mx[i].printid,:arg_ref_mx[i].relid,
- :arg_ref_mx[i].price,:arg_ref_mx[i].rate,
- :arg_ref_mx[i].scid,:arg_ref_mx[i].relprintid,
- :arg_ref_mx[i].mxtype,:arg_ref_mx[i].unit;
- LOOP
- CLOSE cur_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_mtrl_price_changemx
- Where billid = :arg_billid;
- 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 getinfo2 (long arg_billid, ref s_mtrl_price_changemx2 arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1
- Long i = 1,no_mxcheck = 0
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_mx CURSOR FOR
- SELECT u_mtrl_price_changemx2.billid,
- u_mtrl_price_changemx2.printid,
- u_mtrl_price_changemx2.relid,
- u_mtrl_price_changemx2.price,
- u_mtrl_price_changemx2.rate,
- u_mtrl_price_changemx2.scid,
- u_mtrl_price_changemx2.relprintid,
- u_mtrl_price_changemx2.mxtype,
- u_mtrl_price_changemx2.unit
- FROM u_mtrl_price_changemx2
- where u_mtrl_price_changemx2.billid = :arg_billid
- Order By u_mtrl_price_changemx2.printid;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :arg_ref_mx[i].billid,
- :arg_ref_mx[i].printid,:arg_ref_mx[i].relid,
- :arg_ref_mx[i].price,:arg_ref_mx[i].rate,
- :arg_ref_mx[i].scid,:arg_ref_mx[i].relprintid,
- :arg_ref_mx[i].mxtype,:arg_ref_mx[i].unit;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx INTO :arg_ref_mx[i].billid,
- :arg_ref_mx[i].printid,:arg_ref_mx[i].relid,
- :arg_ref_mx[i].price,:arg_ref_mx[i].rate,
- :arg_ref_mx[i].scid,:arg_ref_mx[i].relprintid,
- :arg_ref_mx[i].mxtype,:arg_ref_mx[i].unit;
- LOOP
- CLOSE cur_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_mtrl_price_changemx2
- Where billid = :arg_billid;
- 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 save (s_mtrl_price_change arg_mpc, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
- Long cnt = 0
- DateTime server_dt
- Long ll_billid
- String ls_sccode,ls_billcode
- Long ll_Mtrlorigin
- Long it_mxbt,i, it_mxbt2
- IF IsNull(arg_mpc.scid) THEN arg_mpc.scid = 0
- IF IsNull(arg_mpc.billid) THEN arg_mpc.billid = 0
- IF IsNull(arg_mpc.billemp) THEN arg_mpc.billemp = ''
- IF IsNull(arg_mpc.relcode) THEN arg_mpc.relcode = ''
- IF IsNull(arg_mpc.dscrp) THEN arg_mpc.dscrp = ''
- IF IsNull(arg_mpc.relid) THEN arg_mpc.relid = 0
- IF IsNull(arg_mpc.mtrlid) THEN arg_mpc.mtrlid = 0
- IF IsNull(arg_mpc.status) THEN arg_mpc.status = ''
- IF IsNull(arg_mpc.woodcode) THEN arg_mpc.woodcode = ''
- IF IsNull(arg_mpc.pcode) THEN arg_mpc.pcode = ''
- IF IsNull(arg_mpc.price) THEN arg_mpc.price = 0
- IF IsNull(arg_mpc.newprice) THEN arg_mpc.newprice = 0
- IF IsNull(arg_mpc.billtype) THEN arg_mpc.billtype = 0
- IF IsNull(arg_mpc.sptid) THEN arg_mpc.sptid = 0
- IF IsNull(arg_mpc.moneyid) THEN arg_mpc.moneyid = 0
- IF IsNull(arg_mpc.mrate) THEN arg_mpc.mrate = 0
- IF IsNull(arg_mpc.unit) THEN arg_mpc.unit = ''
- IF IsNull(arg_mpc.rate) THEN arg_mpc.rate = 0
- IF arg_mpc.mtrlid = 0 THEN
- arg_msg = '请选择目标物料'
- rslt = 0
- GOTO ext
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_mtrldef
- Where mtrlid = :arg_mpc.mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询目标物料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt <> 1 THEN
- arg_msg = '目标物料资料不存在或重复,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF arg_mpc.billemp = '' THEN
- arg_msg = '请输入经手人'
- rslt = 0
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- it_mxbt = UpperBound(arg_mpc.arg_s_mx)
- it_mxbt2 = UpperBound(arg_mpc.arg_s_mx2)
- IF it_mxbt <= 0 And it_mxbt2 <= 0 THEN
- rslt = 0
- arg_msg = "没有正确订单明细内容和收货明细内容"
- GOTO ext
- END IF
- IF arg_mpc.billid = 0 THEN
-
- ll_billid = f_sys_scidentity(0,"u_mtrl_price_change","billid",arg_msg,True,id_sqlca)
-
- IF ll_billid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(arg_mpc.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ls_billcode = getid(arg_mpc.scid,ls_sccode + 'PM',Date(server_dt),False,sqlca)
-
- IF ls_billcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_mtrl_price_change
- (scid,
- billid,
- billcode,
- billdate,
- billemp,
- opdate,
- opemp,
- flag,
- relcode,
- dscrp,
- relid,
- mtrlid,
- status,
- woodcode,
- pcode,
- price,
- newprice,
- sptid,
- moneyid,
- mrate,
- unit,
- rate)
- VALUES (
- :arg_mpc.scid,
- :ll_billid,
- :ls_billcode,
- :arg_mpc.billdate,
- :arg_mpc.billemp,
- getdate(),
- :arg_opemp,
- 0,
- :arg_mpc.relcode,
- :arg_mpc.dscrp,
- :arg_mpc.relid,
- :arg_mpc.mtrlid,
- :arg_mpc.status,
- :arg_mpc.woodcode,
- :arg_mpc.pcode,
- :arg_mpc.price,
- :arg_mpc.newprice,
- :arg_mpc.sptid,
- :arg_mpc.moneyid,
- :arg_mpc.mrate,
- :arg_mpc.unit,
- :arg_mpc.rate) ;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- uo_billid = ll_billid
- uo_billcode = ls_billcode
- ELSE
- UPDATE u_mtrl_price_change
- SET
- billdate = :arg_mpc.billdate,
- billemp = :arg_mpc.billemp,
- moddate = getdate(),
- modemp = :arg_opemp,
- relid = :arg_mpc.relid,
- relcode = :arg_mpc.relcode,
- dscrp = :arg_mpc.dscrp,
- mtrlid = :arg_mpc.mtrlid,
- status = :arg_mpc.status,
- woodcode = :arg_mpc.woodcode,
- pcode = :arg_mpc.pcode,
- price = :arg_mpc.price,
- newprice = :arg_mpc.newprice,
- sptid = :arg_mpc.sptid,
- moneyid = :arg_mpc.moneyid,
- mrate = :arg_mpc.mrate,
- unit = :arg_mpc.unit,
- rate = :arg_mpc.rate
- WHERE billid = :arg_mpc.billid
- And flag = 0;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_mtrl_price_changemx
- Where billid = :arg_mpc.billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除旧有明细操作失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_mtrl_price_changemx2
- Where billid = :arg_mpc.billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除旧有明细操作失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- uo_billid = arg_mpc.billid
- END IF
- FOR i = 1 To it_mxbt
- INSERT INTO u_mtrl_price_changemx
- (billid,
- printid,
- relid,
- relprintid,
- relcode,
- price,
- rate,
- unit,
- mxtype,
- dscrp,
- scid)
- VALUES (
- :uo_billid,
- :arg_mpc.arg_s_mx[i].printid,
- :arg_mpc.arg_s_mx[i].relid,
- :arg_mpc.arg_s_mx[i].relprintid,
- :arg_mpc.arg_s_mx[i].relcode,
- :arg_mpc.arg_s_mx[i].price,
- :arg_mpc.arg_s_mx[i].rate,
- :arg_mpc.arg_s_mx[i].unit,
- :arg_mpc.arg_s_mx[i].mxtype,
- :arg_mpc.arg_s_mx[i].dscrp,
- :arg_mpc.scid);
- IF sqlca.SQLCode <> 0 THEN
- uo_billid = arg_mpc.billid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
- FOR i = 1 To it_mxbt2
- INSERT INTO u_mtrl_price_changemx2
- (billid,
- printid,
- relid,
- relprintid,
- relcode,
- price,
- rate,
- unit,
- mxtype,
- dscrp,
- scid)
- VALUES (
- :uo_billid,
- :arg_mpc.arg_s_mx2[i].printid,
- :arg_mpc.arg_s_mx2[i].relid,
- :arg_mpc.arg_s_mx2[i].relprintid,
- :arg_mpc.arg_s_mx2[i].relcode,
- :arg_mpc.arg_s_mx2[i].price,
- :arg_mpc.arg_s_mx2[i].rate,
- :arg_mpc.arg_s_mx2[i].unit,
- :arg_mpc.arg_s_mx2[i].mxtype,
- :arg_mpc.arg_s_mx2[i].dscrp,
- :arg_mpc.scid);
- IF sqlca.SQLCode <> 0 THEN
- uo_billid = arg_mpc.billid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uf_update_task (long arg_scid, long arg_billid, decimal arg_newprice, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- s_mtrl_price_changemx s_mx[]
- Decimal lde_newprice
- lde_newprice = arg_newprice
- Long ll_arr_cnt, i
- IF getinfo(arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_arr_cnt = 0 THEN RETURN 1 //没有的, 不提交事物, 成功返回
- Int li_status, li_secflag, li_balcflag
- Decimal lde_fprice, lde_price, lde_uprice, lde_enprice, lde_jgprice, lde_enprice_tax, lde_enprice_notax, lde_cost
- Decimal lde_uqty, lde_rate, lde_rebate, lde_mrate
- FOR i = 1 To ll_arr_cnt //订单明细
- IF s_mx[i].mxtype = 2 THEN //采购
-
-
- SELECT u_buytaskmx.uqty,
- u_buytaskmx.rate,
- u_buytaskmx.rebate,
- u_buytask.mrate
- INTO
- :lde_uqty,
- :lde_rate,
- :lde_rebate,
- :lde_mrate
- FROM u_buytaskmx INNER join u_buytask
- On u_buytask.scid = u_buytaskmx.scid
- AND u_buytask.taskid = u_buytaskmx.taskid
- WHERE u_buytaskmx.scid = :arg_scid
- AND u_buytaskmx.taskid = :s_mx[i].relid
- AND u_buytaskmx.printid = :s_mx[i].relprintid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "订单明细行:["+String(i)+"],查询采购订单明细内容失败"+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- lde_enprice = lde_newprice
- lde_uprice = Round(lde_enprice * lde_mrate,10)
- lde_fprice = Round((lde_uprice * lde_uqty)/(Round(lde_uqty * lde_rate,sys_option_unit_dec)),10)
- lde_price = lde_fprice * lde_rebate
-
- UPDATE u_buyTaskMx
- SET fprice = :lde_fprice,
- Price = :lde_price,
- uprice = :lde_uprice,
- enprice = :lde_enprice
- WHERE scid = :arg_scid
- AND taskid = :s_mx[i].relid
- And printid = :s_mx[i].relprintid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "订单明细行:["+String(i)+"],更新采购订单单价失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "订单明细行:["+String(i)+"],采购订单对应明细不存在"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ELSEIF s_mx[i].mxtype = 3 THEN
- lde_price = lde_newprice
-
- UPDATE u_order_wfjgMx
- SET price = :lde_price
- WHERE scid = :arg_scid
- AND wfjgid = :s_mx[i].relid
- And printid = :s_mx[i].relprintid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "订单明细行:["+String(i)+"],更新外协订单单价失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "订单明细行:["+String(i)+"],外协订单对应明细不存在"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer uf_update_in (long arg_scid, long arg_billid, decimal arg_newprice, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal lde_newprice
- lde_newprice = arg_newprice
- s_mtrl_price_changemx2 s_mx2[]
- Long ll_arr_cnt2, i
- uo_inware uo_in_buy
- uo_in_buy = Create uo_inware
- uo_in_buy.commit_transaction = sqlca
- uo_inware_wfjg uo_in_wfjg
- uo_in_wfjg = Create uo_inware_wfjg
- uo_in_wfjg.commit_transaction = sqlca
- IF getinfo2(arg_billid,s_mx2,ll_arr_cnt2,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_arr_cnt2 = 0 THEN RETURN 1 //没有的, 不提交事物, 成功返回
- Int li_flag, li_secflag, li_balcflag
- Decimal lde_fprice, lde_price, lde_uprice, lde_enprice, lde_jgprice, lde_enprice_tax, lde_enprice_notax, lde_cost
- Decimal lde_uqty, lde_rate, lde_rebate, lde_mrate, lde_qty
- Int li_thflag
- FOR i = 1 To ll_arr_cnt2 //收货明细
-
- IF s_mx2[i].mxtype = 2 THEN //采购
- SELECT flag, secflag, balcflag
- INTO :li_flag, :li_secflag, :li_balcflag
- FROM u_inware
- WHERE scid = :arg_scid
- And inwareid = :s_mx2[i].relid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],查询采购收货单信息失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_secflag = 1 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],对应采购收货单已经财审,不能更改单价"
- GOTO ext
- END IF
- IF li_balcflag = 1 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],对应采购收货单已经结存,不能更改单价"
- GOTO ext
- END IF
-
- IF li_flag = 1 THEN
- IF uo_in_buy.mod_price(arg_scid,s_mx2[i].relid,s_mx2[i].relprintid,lde_newprice,0,-1,-1,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],"+arg_msg
- GOTO ext
- END IF
- ELSE
-
- SELECT u_inwaremx.uqty,
- u_inwaremx.rate,
- u_inwaremx.rebate,
- u_inware.mrate,
- u_inware.thflag
- INTO :lde_uqty,
- :lde_rate,
- :lde_rebate,
- :lde_mrate,
- :li_thflag
- FROM u_inwaremx INNER JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid
- AND u_inwaremx.inwareid = u_inware.inwareid
- WHERE u_inwaremx.scid = :arg_scid
- AND u_inwaremx.inwareid = :s_mx2[i].relid
- And u_inwaremx.printid = :s_mx2[i].relprintid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询进仓单明细内容失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- lde_enprice = lde_newprice
- lde_uprice = Round(lde_enprice * lde_mrate,10)
- lde_fprice = Round((lde_uprice * lde_uqty)/(Round(lde_uqty * lde_rate,sys_option_unit_dec)),10)
- lde_price = lde_fprice * lde_rebate
- IF li_thflag = 0 THEN
- lde_cost = lde_price * lde_rebate
- END IF
-
- UPDATE u_inwaremx
- SET enprice = :lde_enprice,
- uprice = :lde_uprice,
- fprice = :lde_fprice,
- price = :lde_price,
- cost = :lde_cost,
- deliprice_notax = :lde_enprice / (1 + tax)
- WHERE scid = :arg_scid
- AND inwareid = :s_mx2[i].relid
- And printid = :s_mx2[i].relprintid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],更新外协收货单价失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],外协收货单对应明细不存在或已财审/结存"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSEIF s_mx2[i].mxtype = 3 THEN
-
-
- SELECT flag, secflag, balcflag
- INTO :li_flag, :li_secflag, :li_balcflag
- FROM ow_wfjg_in
- WHERE scid = :arg_scid
- And inwareid = :s_mx2[i].relid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],查询外协收货单信息失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_secflag = 1 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],对应外协收货单已经财审,不能更改单价"
- GOTO ext
- END IF
-
- IF li_balcflag = 1 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],对应外协收货单已经结存,不能更改单价"
- GOTO ext
- END IF
-
- IF li_flag = 1 THEN
- IF uo_in_wfjg.mod_price(arg_scid,s_mx2[i].relid,s_mx2[i].relprintid,lde_fprice,lde_newprice,-1,-1,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],"+arg_msg
- GOTO ext
- END IF
- ELSE
- SELECT
- fprice,
- uqty,
- qty,
- rebate
- INTO
- :lde_fprice,
- :lde_uqty,
- :lde_qty,
- :lde_rebate
- FROM ow_wfjgmx_in_aft
- WHERE scid = :arg_scid
- AND inwareid = :s_mx2[i].relid
- AND printid = :s_mx2[i].relprintid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据明细内容失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- lde_jgprice = lde_newprice
- IF lde_qty <> 0 THEN
- lde_uprice = Round(lde_newprice * lde_uqty/lde_qty,5)
- ELSE
- lde_uprice = 0
- END IF
-
- lde_cost = lde_uprice * lde_rebate + lde_fprice
-
- lde_price = lde_uprice * lde_rebate + lde_fprice
-
- UPDATE ow_wfjgmx_in_aft
- SET jgprice = :lde_jgprice,
- fprice = :lde_fprice,
- uprice = :lde_uprice,
- price = :lde_price,
- cost = :lde_cost
- WHERE scid = :arg_scid
- AND inwareid = :s_mx2[i].relid
- And printid = :s_mx2[i].relprintid Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],更新外协收货单价失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "收货单明细行:["+String(i)+"],外协收货单对应明细不存在或已财审/结存"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
-
-
- END IF
- NEXT
- ext:
- destroy uo_in_buy
- destroy uo_in_wfjg
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- on uo_mtrl_price_change.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_mtrl_price_change.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|