$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