1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324 |
- $PBExportHeader$uo_saletask_will.sru
- forward
- global type uo_saletask_will from nonvisualobject
- end type
- end forward
- global type uo_saletask_will from nonvisualobject
- end type
- global uo_saletask_will uo_saletask_will
- type variables
- long uo_billid
- end variables
- forward prototypes
- public function integer save (s_saletask_will arg_s_will, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer del (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_taskid, ref s_saletask_will arg_s_will, ref string arg_msg)
- public function integer caudit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_taskid, ref string arg_msg)
- public function integer stopbill (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)
- public function integer audit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit, long arg_taskid_sale, ref string arg_taskcode_ref)
- end prototypes
- public function integer save (s_saletask_will arg_s_will, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
- Long cnt = 0
- DateTime server_dt
- Long ll_billid,it_mxbt,ll_i,i
- String ls_sccode,ls_billcode
- IF IsNull(arg_s_will.scid) THEN arg_s_will.scid = 0
- IF IsNull(arg_s_will.taskid) THEN arg_s_will.taskid = 0
- IF IsNull(arg_s_will.cusid) THEN arg_s_will.cusid = 0
- IF IsNull(arg_s_will.typeid) THEN arg_s_will.typeid = 0
- IF IsNull(arg_s_will.relcode) THEN arg_s_will.relcode = ''
- IF IsNull(arg_s_will.assign_emp) THEN arg_s_will.assign_emp = ''
- IF IsNull(arg_s_will.upname) THEN arg_s_will.upname = ''
- IF IsNull(arg_s_will.dscrp) THEN arg_s_will.dscrp = ''
- IF IsNull(arg_s_will.moneyid) THEN arg_s_will.moneyid = 0
- IF IsNull(arg_s_will.mrate) THEN arg_s_will.mrate = 0
- IF IsNull(arg_s_will.cus_address) THEN arg_s_will.cus_address = ''
- IF IsNull(arg_s_will.rel_rep) THEN arg_s_will.rel_rep = ''
- IF IsNull(arg_s_will.cus_tele) THEN arg_s_will.cus_tele = ''
- IF IsNull(arg_s_will.cus_fax) THEN arg_s_will.cus_fax = ''
- IF IsNull(arg_s_will.freight) THEN arg_s_will.freight = ''
- IF IsNull(arg_s_will.freight_tele) THEN arg_s_will.freight_tele = ''
- IF IsNull(arg_s_will.station_address) THEN arg_s_will.station_address = ''
- IF IsNull(arg_s_will.banktypeid) THEN arg_s_will.banktypeid = 0
- IF IsNull(arg_s_will.damt) THEN arg_s_will.damt = 0
- IF IsNull(arg_s_will.paytype) THEN arg_s_will.paytype = ''
- IF IsNull(arg_s_will.dscrp2) THEN arg_s_will.dscrp2 = ''
- IF IsNull(arg_s_will.dscrp3) THEN arg_s_will.dscrp3 = ''
- SELECT Top 1 getdate() Into :server_dt From u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- if arg_s_will.cusid = 0 then
- rslt = 0
- arg_msg = '请选择客户'
- goto ext
- end if
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM cw_banktype
- Where banktypeid = :arg_s_will.banktypeid;
- IF sqlca.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_s_will.moneyid;
- IF sqlca.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_s_will.mrate = 0 THEN
- arg_msg = '币种汇率错误'
- rslt = 0
- GOTO ext
- END IF
- IF f_moneyid_rate_check(arg_s_will.moneyid,arg_s_will.mrate,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- it_mxbt = UpperBound(arg_s_will.arg_s_mx)
- FOR ll_i = 1 To it_mxbt
- IF arg_s_will.arg_s_mx[ll_i].mtrlid = 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行,请选择一个常规产品'
- GOTO ext
- END IF
-
- IF arg_s_will.arg_s_mx[ll_i].saleqty <= 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行,请录入数量'
- GOTO ext
- END IF
-
-
-
- NEXT
- IF arg_s_will.taskid = 0 THEN
- ll_billid = f_sys_scidentity(0,"u_saletask_will","taskid",arg_msg,True,id_sqlca)
-
- IF ll_billid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(arg_s_will.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ls_billcode = getid(arg_s_will.scid,ls_sccode + 'XW',Date(server_dt),False,sqlca)
-
- IF ls_billcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_saletask_will
- (scid,
- taskid,
- taskcode,
- cusid,
- taskdate,
- typeid,
- relcode,
- assign_emp,
- upname,
- dscrp,
- opemp,
- opdate,
- moneyid,
- mrate,
- cus_address,
- rel_rep,
- cus_tele,
- cus_fax,
- freight,
- freight_tele,
- station_address,
- banktypeid,
- damt,
- paytype,
- dscrp2,
- dscrp3)
- VALUES (:arg_s_will.scid,
- :ll_billid,
- :ls_billcode,
- :arg_s_will.cusid,
- :arg_s_will.taskdate,
- :arg_s_will.typeid,
- :arg_s_will.relcode,
- :arg_s_will.assign_emp,
- :arg_s_will.upname,
- :arg_s_will.dscrp,
- :arg_opemp,
- getdate(),
- :arg_s_will.moneyid,
- :arg_s_will.mrate,
- :arg_s_will.cus_address,
- :arg_s_will.rel_rep,
- :arg_s_will.cus_tele,
- :arg_s_will.cus_fax,
- :arg_s_will.freight,
- :arg_s_will.freight_tele,
- :arg_s_will.station_address,
- :arg_s_will.banktypeid,
- :arg_s_will.damt,
- :arg_s_will.paytype,
- :arg_s_will.dscrp2,
- :arg_s_will.dscrp3);
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- uo_billid = ll_billid
-
- ELSE
- UPDATE u_saletask_will
- SET cusid = :arg_s_will.cusid,
- taskdate = :arg_s_will.taskdate,
- typeid = :arg_s_will.typeid,
- relcode = :arg_s_will.relcode,
- assign_emp = :arg_s_will.assign_emp,
- upname = :arg_s_will.upname,
- dscrp = :arg_s_will.dscrp,
- modemp = :arg_opemp,
- moddate = getdate(),
- moneyid = :arg_s_will.moneyid,
- mrate = :arg_s_will.mrate,
- cus_address = :arg_s_will.cus_address,
- rel_rep = :arg_s_will.rel_rep,
- cus_tele = :arg_s_will.cus_tele,
- cus_fax = :arg_s_will.cus_fax,
- freight = :arg_s_will.freight,
- freight_tele = :arg_s_will.freight_tele,
- station_address = :arg_s_will.station_address,
- banktypeid = :arg_s_will.banktypeid,
- damt = :arg_s_will.damt,
- paytype = :arg_s_will.paytype,
- dscrp2 = :arg_s_will.dscrp2,
- dscrp3 = :arg_s_will.dscrp3;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_saletaskmx_will
- Where taskid = :arg_s_will.taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- uo_billid = arg_s_will.taskid
-
- END IF
- FOR ll_i = 1 To it_mxbt
- INSERT INTO u_saletaskmx_will
- (scid,
- taskid,
- printid,
- kind,
- mtrlid,
- saleqty,
- status,
- woodcode,
- pcode,
- enprice,
- mxdscrp,
- modeinfo,
- color,
- userinfo,
- requiredate,
- outtypestr,
- packcnt,
- net_weight,
- gross_weight,
- cubage,
- mtrlname_new)
- VALUES (:arg_s_will.scid,
- :uo_billid,
- :arg_s_will.arg_s_mx[ll_i].printid,
- :arg_s_will.arg_s_mx[ll_i].kind,
- :arg_s_will.arg_s_mx[ll_i].mtrlid,
- :arg_s_will.arg_s_mx[ll_i].saleqty,
- :arg_s_will.arg_s_mx[ll_i].status,
- :arg_s_will.arg_s_mx[ll_i].woodcode,
- :arg_s_will.arg_s_mx[ll_i].pcode,
- :arg_s_will.arg_s_mx[ll_i].enprice,
- :arg_s_will.arg_s_mx[ll_i].mxdscrp,
- :arg_s_will.arg_s_mx[ll_i].modeinfo,
- :arg_s_will.arg_s_mx[ll_i].color,
- :arg_s_will.arg_s_mx[ll_i].userinfo,
- :arg_s_will.arg_s_mx[ll_i].requiredate,
- :arg_s_will.arg_s_mx[ll_i].outtypestr,
- :arg_s_will.arg_s_mx[ll_i].packcnt,
- :arg_s_will.arg_s_mx[ll_i].net_weight,
- :arg_s_will.arg_s_mx[ll_i].gross_weight,
- :arg_s_will.arg_s_mx[ll_i].cubage,
- :arg_s_will.arg_s_mx[ll_i].mtrlname_new);
- IF sqlca.SQLCode <> 0 THEN
- uo_billid = arg_s_will.taskid
- 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 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
- SELECT flag
- INTO :li_flag
- FROM u_saletask_will
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询单据审核状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_flag <> 0 THEN
- rslt = 0
- ARG_MSG = '单据不是待审核状态,不能删除'
- GOTO ext
- END IF
- DELETE From u_saletask_will Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "删除单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE From u_saletaskmx_will 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;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer getinfo (long arg_taskid, ref s_saletask_will arg_s_will, ref string arg_msg);Int rslt = 1
- Long i = 1,ll_i
- s_saletaskmx_will s_mx_arr[]
- IF arg_taskid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- SELECT scid,
- taskcode,
- flag,
- cusid,
- taskdate,
- typeid,
- relcode,
- assign_emp,
- upname,
- dscrp,
- moneyid,
- mrate,
- cus_address,
- rel_rep,
- cus_tele,
- cus_fax,
- freight,
- freight_tele,
- station_address,
- banktypeid,
- damt,
- paytype,
- dscrp2,
- dscrp3
- INTO :arg_s_will.scid,
- :arg_s_will.taskcode,
- :arg_s_will.flag,
- :arg_s_will.cusid,
- :arg_s_will.taskdate,
- :arg_s_will.typeid,
- :arg_s_will.relcode,
- :arg_s_will.assign_emp,
- :arg_s_will.upname,
- :arg_s_will.dscrp,
- :arg_s_will.moneyid,
- :arg_s_will.mrate,
- :arg_s_will.cus_address,
- :arg_s_will.rel_rep,
- :arg_s_will.cus_tele,
- :arg_s_will.cus_fax,
- :arg_s_will.freight,
- :arg_s_will.freight_tele,
- :arg_s_will.station_address,
- :arg_s_will.banktypeid,
- :arg_s_will.damt,
- :arg_s_will.paytype,
- :arg_s_will.dscrp2,
- :arg_s_will.dscrp3
- FROM u_saletask_will
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询单据内容失败(错误单据唯一码)'
- GOTO ext
- END IF
- DECLARE cur_mx CURSOR FOR
- SELECT u_saletaskmx_will.printid,
- u_saletaskmx_will.kind,
- u_saletaskmx_will.mtrlid,
- u_mtrldef.mtrlname,
- u_saletaskmx_will.saleqty,
- u_saletaskmx_will.status,
- u_saletaskmx_will.woodcode,
- u_saletaskmx_will.pcode,
- u_saletaskmx_will.enprice,
- u_saletaskmx_will.mxdscrp,
- u_saletaskmx_will.mtrlid_new,
- u_mtrldef_new.mtrlcode,
- u_saletaskmx_will.requiredate,
- u_mtrldef.mtrlcode,
- u_saletaskmx_will.outtypestr,
- u_saletaskmx_will.packcnt,
- u_saletaskmx_will.net_weight,
- u_saletaskmx_will.gross_weight,
- u_saletaskmx_will.cubage,
- u_saletaskmx_will.mtrlname_new
- FROM u_saletaskmx_will INNER JOIN
- u_mtrldef ON u_saletaskmx_will.mtrlid = u_mtrldef.mtrlid LEFT OUTER JOIN
- u_mtrldef u_mtrldef_new ON u_saletaskmx_will.mtrlid_new = u_mtrldef_new.mtrlid
- WHERE u_saletaskmx_will.taskid = :arg_taskid
- Order By u_saletaskmx_will.printid;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :s_mx_arr[i].printid,
- :s_mx_arr[i].kind,
- :s_mx_arr[i].mtrlid,
- :s_mx_arr[i].mtrlname,
- :s_mx_arr[i].saleqty,
- :s_mx_arr[i].status,
- :s_mx_arr[i].woodcode,
- :s_mx_arr[i].pcode,
- :s_mx_arr[i].enprice,
- :s_mx_arr[i].mxdscrp,
- :s_mx_arr[i].mtrlid_new,
- :s_mx_arr[i].mtrlcode_new,
- :s_mx_arr[i].requiredate,
- :s_mx_arr[i].mtrlcode,
- :s_mx_arr[i].outtypestr,
- :s_mx_arr[i].packcnt,
- :s_mx_arr[i].net_weight,
- :s_mx_arr[i].gross_weight,
- :s_mx_arr[i].cubage,
- :s_mx_arr[i].mtrlname_new;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx INTO :s_mx_arr[i].printid,
- :s_mx_arr[i].kind,
- :s_mx_arr[i].mtrlid,
- :s_mx_arr[i].mtrlname,
- :s_mx_arr[i].saleqty,
- :s_mx_arr[i].status,
- :s_mx_arr[i].woodcode,
- :s_mx_arr[i].pcode,
- :s_mx_arr[i].enprice,
- :s_mx_arr[i].mxdscrp,
- :s_mx_arr[i].mtrlid_new,
- :s_mx_arr[i].mtrlcode_new,
- :s_mx_arr[i].requiredate,
- :s_mx_arr[i].mtrlcode,
- :s_mx_arr[i].outtypestr,
- :s_mx_arr[i].packcnt,
- :s_mx_arr[i].net_weight,
- :s_mx_arr[i].gross_weight,
- :s_mx_arr[i].cubage,
- :s_mx_arr[i].mtrlname_new;
- LOOP
- FOR ll_i = 1 To i - 1
- arg_s_will.arg_s_mx[ll_i].printid = s_mx_arr[ll_i].printid
- arg_s_will.arg_s_mx[ll_i].Kind = s_mx_arr[ll_i].Kind
- arg_s_will.arg_s_mx[ll_i].mtrlid = s_mx_arr[ll_i].mtrlid
- arg_s_will.arg_s_mx[ll_i].mtrlname = s_mx_arr[ll_i].mtrlname
- arg_s_will.arg_s_mx[ll_i].saleqty = s_mx_arr[ll_i].saleqty
- arg_s_will.arg_s_mx[ll_i].status = s_mx_arr[ll_i].status
- arg_s_will.arg_s_mx[ll_i].woodcode = s_mx_arr[ll_i].woodcode
- arg_s_will.arg_s_mx[ll_i].pcode = s_mx_arr[ll_i].pcode
- arg_s_will.arg_s_mx[ll_i].enprice = s_mx_arr[ll_i].enprice
- arg_s_will.arg_s_mx[ll_i].mxdscrp = s_mx_arr[ll_i].mxdscrp
- arg_s_will.arg_s_mx[ll_i].mtrlid_new = s_mx_arr[ll_i].mtrlid_new
- arg_s_will.arg_s_mx[ll_i].mtrlcode_new = s_mx_arr[ll_i].mtrlcode_new
- arg_s_will.arg_s_mx[ll_i].requiredate = s_mx_arr[ll_i].requiredate
- arg_s_will.arg_s_mx[ll_i].mtrlcode = s_mx_arr[ll_i].mtrlcode
- arg_s_will.arg_s_mx[ll_i].outtypestr = s_mx_arr[ll_i].outtypestr
- arg_s_will.arg_s_mx[ll_i].packcnt = s_mx_arr[ll_i].packcnt
- arg_s_will.arg_s_mx[ll_i].net_weight = s_mx_arr[ll_i].net_weight
- arg_s_will.arg_s_mx[ll_i].gross_weight = s_mx_arr[ll_i].gross_weight
- arg_s_will.arg_s_mx[ll_i].cubage = s_mx_arr[ll_i].cubage
- arg_s_will.arg_s_mx[ll_i].mtrlname_new = s_mx_arr[ll_i].mtrlname_new
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer caudit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_reltaskid,ll_scid,cnt
- datetime ldt_null
- setnull(ldt_null)
- uo_saletask obj_saletask
- obj_saletask = Create uo_saletask
- obj_saletask.commit_transaction = sqlca
- SELECT reltaskid,scid
- INTO :ll_reltaskid,:ll_scid
- FROM u_saletask_will
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关销售订单信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT count(*)
- INTO :cnt
- FROM u_saletask
- WHERE scid = :ll_scid
- And taskid = :ll_reltaskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关销售订单是否存在失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 1 THEN
- //删除相关销售订单
- IF obj_saletask.Cancel(ll_scid,ll_reltaskid,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '删除相关销售订单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
- //更新销售意向单状态及相关销售订单ID
- UPDATE u_saletask_will
- SET reltaskid = 0,
- auditemp = '',
- auditdate = :ldt_null,
- flag = 0
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新相关销售订单ID到销售意向单失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- destroy obj_saletask
- RETURN rslt
- end function
- public function integer updatebegin (long arg_taskid, ref string arg_msg);Int rslt = 1
- Long li_flag
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- SELECT flag
- INTO :li_flag
- FROM u_saletask_will
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据状态失败,'+sqlca.SQLErrText
- 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 stopbill (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long li_flag
- IF arg_taskid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- SELECT flag
- INTO :li_flag
- FROM u_saletask_will
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF li_flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是在待审核状态,不可以终止'
- GOTO ext
- END IF
- UPDATE u_saletask_will
- SET flag = 2
- 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;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer add_dscrp (long arg_taskid, string arg_newdescppart, ref string arg_msg);
- Int rslt = 1
- Long ll_flag
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- SELECT flag
- INTO :ll_flag
- FROM u_saletask_will
- 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_saletask_will
- SET dscrp = dscrp+' '+:arg_newdescppart
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
- Return (rslt)
- end function
- public function integer audit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit, long arg_taskid_sale, ref string arg_taskcode_ref);Int rslt = 1
- Long ll_i,ll_j
- String ls_mtrlcode_new
- Long ll_mtrlid_new
- s_edit_index_tran arg_s_tran
- s_mtrldef arg_s_return
- String Address, tele, faxno,stat_rep,stat_handtel,stat_address,freight_tele,freight,rep
- Long banktypeid,moneyid
- String ls_freight_tele
- DateTime ld_requiredate
- String ls_mtrlcode
- Long ll_mtrlid
- String pfgroup
- Long sonmtrlid,wrkgrpid
- String sonpfcode
- Int ifreputate,ifover
- Decimal updownrate,Sonscale, SonLoss,SonDECLosS,Sonahead
- String dscrp
- Decimal pfgroupqty
- String pfgroupmode,promode,status,woodcode,pcode
- Int mtrlkind
- String pfklmode
- Int dipztype
- Decimal scllloss
- Int dytype
- Decimal advancetime,sclldecloss ,baseqty
- String SonLossstr
- Decimal buyarg
- Int scllqtytype,if_follow
- Decimal lasthour
- Long modleid
- String modlename,wenli,fengbian,paikong,luoji,penyou,azcode
- String ls_mtrlcode_pack_new
- String pfcode
- s_saletask_will s_will
- uo_saletask obj_saletask
- obj_saletask = Create uo_saletask
- obj_saletask.commit_transaction = sqlca
- IF getinfo(arg_taskid,s_will,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF s_will.flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是待审核,不能审核'
- GOTO ext
- END IF
- //生成新的编码
- FOR ll_i = 1 To UpperBound(s_will.arg_s_mx)
- IF s_will.arg_s_mx[ll_i].Kind = 0 THEN CONTINUE
-
- ls_mtrlcode_new = Trim(s_will.taskcode)+'.'+String(s_will.arg_s_mx[ll_i].printid,'000')
-
- arg_s_tran.a_long = s_will.arg_s_mx[ll_i].mtrlid
- arg_s_tran.b_string = ls_mtrlcode_new
-
- IF s_will.arg_s_mx[ll_i].mtrlname_new = '' THEN
- arg_s_tran.c_string = s_will.arg_s_mx[ll_i].mtrlname
- ELSE
- arg_s_tran.c_string = s_will.arg_s_mx[ll_i].mtrlname_new
- END IF
-
- arg_s_tran.d_string = s_will.arg_s_mx[ll_i].modeinfo
- arg_s_tran.e_string = s_will.arg_s_mx[ll_i].userinfo
- arg_s_tran.f_string = s_will.arg_s_mx[ll_i].Color
-
-
- arg_s_tran.b_long = 1 //仓库
-
- IF s_will.arg_s_mx[ll_i].Kind = 2 THEN
- //订制产品不需要复制清单,会根据包件数重组清单
- arg_s_tran.c_long = 0 //清单
- ELSE
- arg_s_tran.c_long = 1
- END IF
-
- arg_s_tran.d_long = 1 //工价表
-
- IF f_mtrl_add_copy_with_commit(arg_s_tran,arg_msg,arg_s_return,False) = 0 THEN
- rslt = 0
- arg_msg = '第'+String(s_will.arg_s_mx[ll_i].printid)+'行,生成非标或订制产品资料失败,'+arg_msg
- GOTO ext
- END IF
-
- s_will.arg_s_mx[ll_i].mtrlid_new = arg_s_return.mtrlid
-
- //如果是订制类,要根据"包件数"自动生成下级包件编码,并组成新的物料清单
- IF s_will.arg_s_mx[ll_i].Kind = 2 THEN
- SELECT top 1 u_PrdPF.pfgroup,
- u_PrdPF.SonMtrlid,
- u_PrdPF.wrkgrpid,
- u_PrdPF.sonpfcode,
- u_PrdPF.ifreputate,
- u_PrdPF.ifover,
- u_PrdPF.updownrate,
- u_PrdPF.Sonscale,
- u_PrdPF.SonLoss,
- u_PrdPF.SonDECLosS,
- u_PrdPF.Sonahead,
- u_PrdPF.dscrp,
- u_PrdPF.pfgroupqty,
- u_PrdPF.pfgroupmode,
- u_PrdPF.promode,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_PrdPF.mtrlkind,
- u_PrdPF.pfklmode,
- u_PrdPF.dipztype,
- u_PrdPF.scllloss,
- u_PrdPF.dytype,
- u_PrdPF.advancetime,
- u_PrdPF.sclldecloss,
- u_PrdPF.baseqty,
- u_PrdPF.SonLossstr,
- u_PrdPF.buyarg,
- u_PrdPF.scllqtytype,
- u_PrdPF.if_follow,
- u_PrdPF.lasthour,
- u_PrdPF.modleid,
- u_PrdPF.modlename,
- u_PrdPF.wenli,
- u_PrdPF.fengbian,
- u_PrdPF.paikong,
- u_PrdPF.luoji,
- u_PrdPF.penyou,
- u_PrdPF.azcode,
- u_PrdPF.pfcode
- INTO :pfgroup,
- :SonMtrlid,
- :wrkgrpid,
- :sonpfcode,
- :ifreputate,
- :ifover,
- :updownrate,
- :Sonscale,
- :SonLoss,
- :SonDECLosS,
- :Sonahead,
- :dscrp,
- :pfgroupqty,
- :pfgroupmode,
- :promode,
- :status,
- :woodcode,
- :pcode,
- :mtrlkind,
- :pfklmode,
- :dipztype,
- :scllloss,
- :dytype,
- :advancetime,
- :sclldecloss,
- :baseqty,
- :SonLossstr,
- :buyarg,
- :scllqtytype,
- :if_follow,
- :lasthour,
- :modleid,
- :modlename,
- :wenli,
- :fengbian,
- :paikong,
- :luoji,
- :penyou,
- :azcode,
- :pfcode
- FROM u_mtrl_pf INNER JOIN
- u_PrdPF ON u_mtrl_pf.Mtrlid = u_PrdPF.mtrlid AND
- u_mtrl_pf.pfcode = u_PrdPF.pfcode
- WHERE (u_mtrl_pf.Ifdft = 1)
- And (u_mtrl_pf.mtrlid = :s_will.arg_s_mx[ll_i].mtrlid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询常规编码物料清单失败,请检查常规编码是否已设清单,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //生成新的包件编码
- FOR ll_j = 1 To s_will.arg_s_mx[ll_i].packcnt
- ls_mtrlcode_pack_new = ls_mtrlcode_new+'.'+String(ll_j,'00')
-
- arg_s_tran.a_long = sonmtrlid
- arg_s_tran.b_string = ls_mtrlcode_pack_new
-
- IF s_will.arg_s_mx[ll_i].mtrlname_new = '' THEN
- arg_s_tran.c_string = s_will.arg_s_mx[ll_i].mtrlname+'.包件'+String(ll_j,'00')
- ELSE
- arg_s_tran.c_string = s_will.arg_s_mx[ll_i].mtrlname_new+'.包件'+String(ll_j,'00')
- END IF
-
- arg_s_tran.e_string = s_will.arg_s_mx[ll_i].userinfo
-
- arg_s_tran.b_long = 1 //仓库
- arg_s_tran.c_long = 0 //清单
- arg_s_tran.d_long = 1 //工价表
-
- IF f_mtrl_add_copy_with_commit(arg_s_tran,arg_msg,arg_s_return,False) = 0 THEN
- rslt = 0
- arg_msg = '第'+String(s_will.arg_s_mx[ll_i].printid)+'行,生成第'+String(ll_j)+'个包件资料失败,'+arg_msg
- GOTO ext
- END IF
-
- // s_will.arg_s_mx[ll_i].mtrlid_new = arg_s_return.mtrlid
- INSERT INTO u_PrdPF
- (pfgroup,
- SonMtrlid,
- wrkgrpid,
- sonpfcode,
- ifreputate,
- ifover,
- updownrate,
- Sonscale,
- SonLoss,
- SonDECLosS,
- Sonahead,
- dscrp,
- pfgroupqty,
- pfgroupmode,
- promode,
- status,
- woodcode,
- pcode,
- mtrlkind,
- pfklmode,
- dipztype,
- scllloss,
- dytype,
- advancetime,
- sclldecloss,
- baseqty,
- SonLossstr,
- buyarg,
- scllqtytype,
- if_follow,
- lasthour,
- modleid,
- modlename,
- wenli,
- fengbian,
- paikong,
- luoji,
- penyou,
- azcode,
- printid,
- mtrlid,
- pfcode)
- VALUES (:pfgroup,
- :arg_s_return.mtrlid,
- :wrkgrpid,
- :sonpfcode,
- :ifreputate,
- :ifover,
- :updownrate,
- :sonscale,
- :sonloss,
- :sondecloss,
- :sonahead,
- :dscrp,
- :pfgroupqty,
- :pfgroupmode,
- :promode,
- :status,
- :woodcode,
- :pcode,
- :mtrlkind,
- :pfklmode,
- :dipztype,
- :scllloss,
- :dytype,
- :advancetime,
- :sclldecloss,
- :baseqty,
- :sonlossstr,
- :buyarg,
- :scllqtytype,
- :if_follow,
- :lasthour,
- :modleid,
- :modlename,
- :wenli,
- :fengbian,
- :paikong,
- :luoji,
- :penyou,
- :azcode,
- :ll_j,
- :s_will.arg_s_mx[ll_i].mtrlid_new,
- :pfcode);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '第'+String(s_will.arg_s_mx[ll_i].printid)+'行,生成清单失败,第'+String(ll_j)+'个包件资料,'+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- END IF
-
- NEXT
- //SELECT address,
- // tele,
- // faxno,
- // banktypeid,
- // moneyid,
- // stat_rep,
- // stat_handtel,
- // stat_address,
- // freight_tele,
- // freight,
- // rep
- // INTO :Address,
- // :tele,
- // :faxno,
- // :banktypeid,
- // :moneyid,
- // :stat_rep,
- // :stat_handtel,
- // :stat_address,
- // :freight_tele,
- // :freight,
- // :rep
- // FROM u_cust
- // Where cusid = :s_will.cusid;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '查询客户信息失败,'+sqlca.SQLErrText
- // GOTO ext
- //END IF
- //
- //IF banktypeid = 0 THEN
- // //如果客户没有设置默认结算方式,则这个客户最近一次销售订单的结算方式
- // SELECT top 1 banktypeid
- // INTO :banktypeid
- // FROM u_SaleTask
- // WHERE cusid = :s_will.cusid
- // Order By taskid Desc;
- // IF sqlca.SQLCode <> 0 THEN
- // //如果客户没有订单,则取第一个结算方式
- // SELECT top 1 banktypeid
- // INTO :banktypeid
- // FROM cw_banktype
- // WHERE banktype = 0
- // And inuse = 1 ;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '建立相关销售订单失败,没找到合适的结算方式'
- // GOTO ext
- // END IF
- // END IF
- //END IF
- //
- //IF moneyid = 0 THEN
- // //如果客户没有设置默认币种,则这个客户最近一次销售订单的币种
- // SELECT top 1 moneyid
- // INTO :moneyid
- // FROM u_SaleTask
- // WHERE cusid = :s_will.cusid
- // Order By taskid Desc;
- // IF sqlca.SQLCode <> 0 THEN
- // //如果客户没有订单,则取本位币
- // SELECT top 1 moneyid
- // INTO :moneyid
- // FROM cw_currency
- // Where native = 1;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '建立相关销售订单失败,没找到合适的币种'
- // GOTO ext
- // END IF
- // END IF
- //END IF
- //
- //
- //IF stat_rep <> '' THEN
- // ls_freight_tele = stat_rep
- //END IF
- //
- //IF freight_tele <> '' THEN
- // IF ls_freight_tele = '' THEN
- // ls_freight_tele = freight_tele
- // ELSE
- // ls_freight_tele = ls_freight_tele + ':' + freight_tele
- // END IF
- //END IF
- //
- //IF stat_handtel <> '' THEN
- // IF ls_freight_tele = '' THEN
- // ls_freight_tele = stat_handtel
- // ELSE
- // IF freight_tele = '' THEN
- // ls_freight_tele = ls_freight_tele + ':' + stat_handtel
- // ELSE
- // ls_freight_tele = ls_freight_tele + '/' + stat_handtel
- // END IF
- // END IF
- //END IF
- //生成销售订单
- IF obj_saletask.newbegin(s_will.scid,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '建立相关销售订单失败,'+arg_msg
- GOTO ext
- END IF
-
-
- FOR ll_i = 1 To UpperBound(s_will.arg_s_mx)
- IF ld_requiredate < s_will.arg_s_mx[ll_i].requiredate THEN
- ld_requiredate = s_will.arg_s_mx[ll_i].requiredate
- END IF
- NEXT
-
- obj_saletask.requiredate = ld_requiredate
- obj_saletask.assign_emp = s_will.assign_emp
- obj_saletask.upname = s_will.upname
- obj_saletask.Kind = 1
- obj_saletask.cusid = s_will.cusid
- obj_saletask.dscrp = s_will.dscrp
- obj_saletask.dscrp2 = s_will.dscrp2
- obj_saletask.taskdate = s_will.taskdate
- obj_saletask.banktypeid = s_will.banktypeid
- obj_saletask.moneyid = s_will.moneyid
- obj_saletask.damt = s_will.damt
- obj_saletask.otheramt = 0
- obj_saletask.relcode = s_will.taskcode
- obj_saletask.paytype = s_will.paytype
- obj_saletask.freight = s_will.freight
- obj_saletask.freight_tele = s_will.freight_tele
- obj_saletask.cus_address = s_will.cus_address
- obj_saletask.cus_tele = s_will.cus_tele
- obj_saletask.cus_fax = s_will.cus_fax
- obj_saletask.mrate = s_will.mrate //f_get_mrate(moneyid)
- obj_saletask.typeid = s_will.typeid
- obj_saletask.rel_rep = s_will.rel_rep
- // obj_saletask.Level = s_will.level
-
- // obj_saletask.sendTime = s_will.sendTime
- // obj_saletask.sendUser = s_will.sendUser
- // obj_saletask.fiebrelcode = s_will.fiebrelcode
-
- obj_saletask.dscrp3 = s_will.dscrp3
- // obj_saletask.exchangeid = s_will.exchangeid
-
- obj_saletask.station_address = s_will.station_address
- FOR ll_i = 1 To UpperBound(s_will.arg_s_mx)
-
- IF s_will.arg_s_mx[ll_i].Kind = 0 THEN
- ls_mtrlcode = s_will.arg_s_mx[ll_i].mtrlcode
- ll_mtrlid = s_will.arg_s_mx[ll_i].mtrlid
- ELSE
- ls_mtrlcode = s_will.arg_s_mx[ll_i].mtrlcode_new
- ll_mtrlid = s_will.arg_s_mx[ll_i].mtrlid_new
- END IF
-
- IF obj_saletask.acceptmx(ll_mtrlid,&
- s_will.arg_s_mx[ll_i].saleqty,&
- s_will.arg_s_mx[ll_i].enprice,&
- 1,&
- s_will.arg_s_mx[ll_i].mxdscrp,&
- '',&
- ls_mtrlcode,&
- s_will.arg_s_mx[ll_i].status,&
- s_will.arg_s_mx[ll_i].woodcode,&
- s_will.arg_s_mx[ll_i].pcode,&
- '',&
- ll_i,&
- '',&
- s_will.arg_s_mx[ll_i].requiredate,&
- 0,&
- 0,&
- '',&
- 0,&
- '',&
- 0,&
- 0,&
- '',&
- 0,&
- 0,&
- '',&
- 0,&
- s_will.arg_s_mx[ll_i].net_weight,&
- s_will.arg_s_mx[ll_i].gross_weight,&
- s_will.arg_s_mx[ll_i].cubage,&
- 0,&
- '',&
- arg_msg) = 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行保存订单明细失败,'+arg_msg
- GOTO ext
- END IF
- NEXT
- IF arg_taskid_sale = 0 THEN
- IF obj_saletask.savesubmit(publ_operator,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '保存相关销售订单失败,'+arg_msg
- GOTO ext
- END IF
- ELSE
- IF obj_saletask.uof_add_mx(s_will.scid,arg_taskid_sale,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '补充明细到相关销售订单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
- //更新销售意向单状态及相关销售订单ID
- UPDATE u_saletask_will
- SET reltaskid = :obj_saletask.taskid,
- auditemp = :publ_operator,
- auditdate = getdate(),
- flag = 1
- Where taskid = :arg_taskid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新相关销售订单ID到销售意向单失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- arg_taskcode_ref = obj_saletask.taskcode
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy obj_saletask
- RETURN rslt
- end function
- on uo_saletask_will.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_saletask_will.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|