$PBExportHeader$uo_saletask_import.sru forward global type uo_saletask_import from nonvisualobject end type end forward global type uo_saletask_import from nonvisualobject end type global uo_saletask_import uo_saletask_import type variables int uo_option_price_rmb Int uo_option_m_msttake /////测试 datawindow ins_dw_test1 end variables forward prototypes public function integer uf_reset (ref s_saletask_import arg_s_import, ref string arg_msg) private function string pf_getid (string arg_ctg, datetime arg_dt, boolean if_commit, transaction arg_transaction) public function integer uf_save_saletask_import (ref s_saletask_import arg_s_import, ref string arg_msg, boolean arg_if_commit) public function integer uf_del (long arg_im_type, string arg_im_id, ref string arg_msg, boolean arg_if_commit) public function integer uf_getinfo (long arg_im_type, string arg_im_id, ref s_saletask_import arg_s_import, ref string arg_msg) public function integer uf_check (s_saletask_import arg_s_import, ref string arg_msg) public function integer uf_taobao_unload (ref string arg_im_ids[], ref string arg_msg) public subroutine uf_fill_taobao (ref s_saletask_import arg_s_import) public subroutine uf_fill (ref s_saletask_import arg_s_import) public function integer uf_accepts (long arg_scid, long arg_im_type, string arg_ids[], long arg_audit, long arg_priceflag, ref string arg_msg) public function integer uf_retrieve_newprice (long arg_im_type, string arg_im_id, ref decimal arg_newprice, ref decimal arg_rebate, ref string arg_msg, boolean arg_ifcommit) public subroutine uf_fill_mtrl (ref s_saletask_import arg_s_import) public function integer uf_csv_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg) public function integer uf_xml_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg) public function integer uf_xls_to_import_sny (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg) public function integer uf_xls_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg) public function integer uof_add_saletask (long arg_im_type[], string arg_im_id[], long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit) public function integer uf_accept_taobao (string arg_tid, ref string arg_msg, ref string arg_taskcode) public function integer uf_save_saletask_jiayu (string arg_filename, ref string arg_msg) end prototypes public function integer uf_reset (ref s_saletask_import arg_s_import, ref string arg_msg);Int rslt = 1 IF IsNull(arg_s_import.im_type) THEN arg_s_import.im_type = 0 IF IsNull(arg_s_import.im_id) THEN arg_s_import.im_id = '' IF IsNull(arg_s_import.moneyname) THEN arg_s_import.moneyname = '' IF IsNull(arg_s_import.moneyid) THEN arg_s_import.moneyid = 0 IF IsNull(arg_s_import.mrate) THEN arg_s_import.mrate = 0 IF IsNull(arg_s_import.taskdate) THEN arg_s_import.taskdate = DateTime(Today()) IF IsNull(arg_s_import.tasktype) THEN arg_s_import.tasktype = '' IF IsNull(arg_s_import.typeid) THEN arg_s_import.typeid = 0 IF IsNull(arg_s_import.cuscode) THEN arg_s_import.cuscode = '' IF IsNull(arg_s_import.cusname) THEN arg_s_import.cusname = '' IF IsNull(arg_s_import.level_str) THEN arg_s_import.level_str = '' IF IsNull(arg_s_import.level) THEN arg_s_import.level = 0 IF IsNull(arg_s_import.cusid) THEN arg_s_import.cusid = 0 IF IsNull(arg_s_import.cus_address) THEN arg_s_import.cus_address = '' IF IsNull(arg_s_import.rel_rep) THEN arg_s_import.rel_rep = '' IF IsNull(arg_s_import.cus_tele) THEN arg_s_import.cus_tele = '' IF IsNull(arg_s_import.cus_fax) THEN arg_s_import.cus_fax = '' IF IsNull(arg_s_import.freight) THEN arg_s_import.freight = '' IF IsNull(arg_s_import.freight_tele) THEN arg_s_import.freight_tele = '' IF IsNull(arg_s_import.assign_emp) THEN arg_s_import.assign_emp = '' IF IsNull(arg_s_import.upname) THEN arg_s_import.upname = '' IF IsNull(arg_s_import.banktype) THEN arg_s_import.banktype = '' IF IsNull(arg_s_import.banktypeid) THEN arg_s_import.banktypeid = 0 IF IsNull(arg_s_import.damt) THEN arg_s_import.damt = 0 IF IsNull(arg_s_import.relcode) THEN arg_s_import.relcode = '' IF IsNull(arg_s_import.paytype) THEN arg_s_import.paytype = '' IF IsNull(arg_s_import.otheramt) THEN arg_s_import.otheramt = 0 IF IsNull(arg_s_import.dscrp2) THEN arg_s_import.dscrp2 = '' IF IsNull(arg_s_import.dscrp) THEN arg_s_import.dscrp = '' IF IsNull(arg_s_import.dscrp3) THEN arg_s_import.dscrp3 = '' IF IsNull(arg_s_import.outtypestr) THEN arg_s_import.outtypestr = '' IF IsNull(arg_s_import.mtrlcode) THEN arg_s_import.mtrlcode = '' IF IsNull(arg_s_import.mtrlname) THEN arg_s_import.mtrlname = '' IF IsNull(arg_s_import.mtrlid) THEN arg_s_import.mtrlid = 0 IF IsNull(arg_s_import.unit) THEN arg_s_import.unit = '' IF IsNull(arg_s_import.saleqty) THEN arg_s_import.saleqty = 0 IF IsNull(arg_s_import.pricetype) THEN arg_s_import.pricetype = '' IF IsNull(arg_s_import.enprice) THEN arg_s_import.enprice = 0 IF IsNull(arg_s_import.rebate) THEN arg_s_import.rebate = 0 IF IsNull(arg_s_import.taxrate) THEN arg_s_import.taxrate = 0 IF IsNull(arg_s_import.requiredate) THEN arg_s_import.requiredate = DateTime(Today()) IF IsNull(arg_s_import.status) THEN arg_s_import.status = '' IF IsNull(arg_s_import.woodcode) THEN arg_s_import.woodcode = '' IF IsNull(arg_s_import.pcode) THEN arg_s_import.pcode = '' IF IsNull(arg_s_import.mxdscrp) THEN arg_s_import.mxdscrp = '' IF IsNull(arg_s_import.mxdscrp2) THEN arg_s_import.mxdscrp2 = '' IF IsNull(arg_s_import.mtrlcuscode) THEN arg_s_import.mtrlcuscode = '' IF IsNull(arg_s_import.tid) THEN arg_s_import.tid = '' IF IsNull(arg_s_import.im_userid) THEN arg_s_import.im_userid = '' IF IsNull(arg_s_import.trade_status) THEN arg_s_import.trade_status = '' IF IsNull(arg_s_import.props) THEN arg_s_import.props = '' IF IsNull(arg_s_import.trade_no) THEN arg_s_import.trade_no = '' IF IsNull(arg_s_import.shortname) THEN arg_s_import.shortname = '' IF IsNull(arg_s_import.shopname) THEN arg_s_import.shopname = '' IF IsNull(arg_s_import.transcode) THEN arg_s_import.transcode = '' IF IsNull(arg_s_import.transcom) THEN arg_s_import.transcom = '' IF IsNull(arg_s_import.trans_amt) THEN arg_s_import.trans_amt = 0 RETURN rslt end function private function string pf_getid (string arg_ctg, datetime arg_dt, boolean if_commit, transaction arg_transaction);String rslt = '' Long ll_nmbr arg_ctg = Upper(arg_ctg) arg_dt = DateTime(Date(arg_dt), Time(0)) UPDATE u_bsnno_aps SET nmbr = nmbr + 1 WHERE opDate = :arg_dt AND typecode = :arg_ctg AND scid = 0 And status = 0 Using arg_transaction; IF arg_transaction.SQLCode <> 0 THEN ROLLBACK Using arg_transaction ; rslt = "err" GOTO ext END IF IF arg_transaction.SQLNRows = 0 THEN INSERT INTO u_bsnno_aps(scid, opdate, typecode, nmbr, status) Values (0, :arg_dt, :arg_ctg, 1, 0) Using arg_transaction; IF arg_transaction.SQLCode <> 0 THEN ROLLBACK Using arg_transaction ; rslt = "err" GOTO ext END IF END IF SELECT nmbr INTO :ll_nmbr FROM u_bsnno_aps WHERE opDate = :arg_dt AND typecode = :arg_ctg AND scid = 0 And status = 0 Using arg_transaction; IF arg_transaction.SQLCode <> 0 THEN ROLLBACK Using arg_transaction ; rslt = "err" GOTO ext END IF rslt = arg_ctg + String(arg_dt, 'yyMMdd') + String(ll_nmbr, '000') IF rslt = '' THEN rslt = 'err' IF if_commit And rslt <> "err" THEN COMMIT Using arg_transaction; END IF ext: RETURN rslt end function public function integer uf_save_saletask_import (ref s_saletask_import arg_s_import, ref string arg_msg, boolean arg_if_commit);Int rslt = 1 String ls_newid String ls_ctg Long ll_cnt Long ll_accept_flag String ls_taskcode Long ll_taskcnt IF uf_reset(arg_s_import, arg_msg) <> 1 THEN rslt = 0 GOTO ext END IF IF arg_s_import.im_id = '' Or arg_s_import.im_id = '0' THEN CHOOSE CASE arg_s_import.im_type CASE 0 ls_ctg = 'MD' CASE ELSE rslt = 0 arg_msg = '未定义类型' + String(arg_s_import.im_type) GOTO ext END CHOOSE ls_newid = pf_getid(ls_ctg, DateTime(Today(), Now()), False, sqlca) IF ls_newid = 'err' THEN rslt = 0 arg_msg = '获取唯一码失败' GOTO ext END IF arg_s_import.im_id = ls_newid END IF SELECT COUNT(0) INTO :ll_cnt FROM eb_saletask_import WHERE im_type = :arg_s_import.im_type And im_id = :arg_s_import.im_id; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询订单导入的数量失败,' + sqlca.SQLErrText GOTO ext END IF IF ll_cnt = 0 THEN Decimal ls_1stnewprice = 0 Decimal ls_1stzqrate = 0 uo_saletask_spi.uof_getprice_saletask(arg_s_import,ls_1stnewprice,ls_1stzqrate,arg_msg) INSERT INTO eb_saletask_import (im_type, im_id, moneyname, moneyid, mrate, taskdate, tasktype, typeid, cuscode, cusname, level_str, level, cusid, cus_address, rel_rep, cus_tele, cus_fax, freight, freight_tele, Assign_Emp, upname, banktype, banktypeid, damt, relcode, paytype, otheramt, dscrp2, dscrp, dscrp3, outtypestr, mtrlcode, mtrlname, mtrlid, unit, saleqty, pricetype, enprice, rebate, taxrate, requiredate, status, woodcode, pcode, mxdscrp, mxdscrp2, mtrlcuscode, tid, im_userid, trade_status, props, trade_no, moddate, new_price, new_rebate, shortname, shopname, paydate, outdate, transcode, transcom, confirmdate, createdate, trans_amt) VALUES (:arg_s_import.im_type, :arg_s_import.im_id, :arg_s_import.moneyname, :arg_s_import.moneyid, :arg_s_import.mrate, :arg_s_import.taskdate, :arg_s_import.tasktype, :arg_s_import.typeid, :arg_s_import.cuscode, :arg_s_import.cusname, :arg_s_import.level_str, :arg_s_import.level, :arg_s_import.cusid, :arg_s_import.cus_address, :arg_s_import.rel_rep, :arg_s_import.cus_tele, :arg_s_import.cus_fax, :arg_s_import.freight, :arg_s_import.freight_tele, :arg_s_import.Assign_Emp, :arg_s_import.upname, :arg_s_import.banktype, :arg_s_import.banktypeid, :arg_s_import.damt, :arg_s_import.relcode, :arg_s_import.paytype, :arg_s_import.otheramt, :arg_s_import.dscrp2, :arg_s_import.dscrp, :arg_s_import.dscrp3, :arg_s_import.outtypestr, :arg_s_import.mtrlcode, :arg_s_import.mtrlname, :arg_s_import.mtrlid, :arg_s_import.unit, :arg_s_import.saleqty, :arg_s_import.pricetype, :arg_s_import.enprice, :arg_s_import.rebate, :arg_s_import.taxrate, :arg_s_import.requiredate, :arg_s_import.status, :arg_s_import.woodcode, :arg_s_import.pcode, :arg_s_import.mxdscrp, :arg_s_import.mxdscrp2, :arg_s_import.mtrlcuscode, :arg_s_import.tid, :arg_s_import.im_userid, :arg_s_import.trade_status, :arg_s_import.props, :arg_s_import.trade_no, :arg_s_import.moddate, :ls_1stnewprice, :ls_1stzqrate, :arg_s_import.shortname, :arg_s_import.shopname, :arg_s_import.paydate, :arg_s_import.outdate, :arg_s_import.transcode, :arg_s_import.transcom, :arg_s_import.confirmdate, :arg_s_import.createdate, :arg_s_import.trans_amt); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入订单导入表失败,' + sqlca.SQLErrText GOTO ext END IF ELSE SELECT accept_flag, taskcode INTO :ll_accept_flag, :ls_taskcode FROM eb_saletask_import WHERE (im_type = :arg_s_import.im_type) And (im_id = :arg_s_import.im_id); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询临时订单接受信息失败,' + sqlca.SQLErrText GOTO ext END IF IF ll_accept_flag = 1 THEN SELECT COUNT(0) INTO :ll_taskcnt FROM u_saletask Where taskcode = :ls_taskcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询是否存在旧订单失败,' + sqlca.SQLErrText GOTO ext END IF IF ll_taskcnt > 0 THEN rslt = 0 arg_msg = '已经生成订单['+ls_taskcode+']不能修改,请删除旧订单' GOTO ext END IF END IF UPDATE eb_saletask_import SET moneyname = :arg_s_import.moneyname, moneyid = :arg_s_import.moneyid, mrate = :arg_s_import.mrate, taskdate = :arg_s_import.taskdate, tasktype = :arg_s_import.tasktype, typeid = :arg_s_import.typeid, cuscode = :arg_s_import.cuscode, cusname = :arg_s_import.cusname, level_str = :arg_s_import.level_str, level = :arg_s_import.level, cusid = :arg_s_import.cusid, cus_address = :arg_s_import.cus_address, rel_rep = :arg_s_import.rel_rep, cus_tele = :arg_s_import.cus_tele, cus_fax = :arg_s_import.cus_fax, freight = :arg_s_import.freight, freight_tele = :arg_s_import.freight_tele, Assign_Emp = :arg_s_import.Assign_Emp, upname = :arg_s_import.upname, banktype = :arg_s_import.banktype, banktypeid = :arg_s_import.banktypeid, damt = :arg_s_import.damt, relcode = :arg_s_import.relcode, paytype = :arg_s_import.paytype, otheramt = :arg_s_import.otheramt, dscrp2 = :arg_s_import.dscrp2, dscrp = :arg_s_import.dscrp, dscrp3 = :arg_s_import.dscrp3, outtypestr = :arg_s_import.outtypestr, mtrlcode = :arg_s_import.mtrlcode, mtrlname = :arg_s_import.mtrlname, mtrlid = :arg_s_import.mtrlid, unit = :arg_s_import.unit, saleqty = :arg_s_import.saleqty, pricetype = :arg_s_import.pricetype, enprice = :arg_s_import.enprice, rebate = :arg_s_import.rebate, taxrate = :arg_s_import.taxrate, requiredate = :arg_s_import.requiredate, status = :arg_s_import.status, woodcode = :arg_s_import.woodcode, pcode = :arg_s_import.pcode, mxdscrp = :arg_s_import.mxdscrp, mxdscrp2 = :arg_s_import.mxdscrp2, mtrlcuscode = :arg_s_import.mtrlcuscode, moddate = :arg_s_import.moddate WHERE (im_type = :arg_s_import.im_type) And (im_id = :arg_s_import.im_id); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新订单导入表失败,' + sqlca.SQLErrText GOTO ext END IF END IF ext: IF arg_if_commit THEN IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF END IF RETURN rslt end function public function integer uf_del (long arg_im_type, string arg_im_id, ref string arg_msg, boolean arg_if_commit);Int rslt = 1 Long ll_taskcnt String ls_taskcode Long ll_accept_flag SELECT accept_flag,taskcode INTO :ll_accept_flag, :ls_taskcode FROM eb_saletask_import WHERE im_type = :arg_im_type And im_id = :arg_im_id; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询临时订单接受标记失败,' + sqlca.SQLErrText GOTO ext END IF IF ll_accept_flag = 1 THEN SELECT COUNT(0) INTO :ll_taskcnt FROM u_saletask Where taskcode = :ls_taskcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询是否存在旧订单失败,' + sqlca.SQLErrText GOTO ext END IF IF ll_taskcnt > 0 THEN rslt = 0 arg_msg = '已经生成订单['+ls_taskcode+']不能删除,请删除旧订单' GOTO ext END IF END IF DELETE FROM eb_saletask_import WHERE im_type = :arg_im_type And im_id = :arg_im_id; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除临时订单失败,' + sqlca.SQLErrText GOTO ext END IF ext: IF arg_if_commit THEN IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF END IF RETURN rslt end function public function integer uf_getinfo (long arg_im_type, string arg_im_id, ref s_saletask_import arg_s_import, ref string arg_msg);Int rslt = 1 s_saletask_import s_empty arg_s_import = s_empty SELECT im_type, im_id, moneyname, moneyid, mrate, taskdate, tasktype, typeid, cuscode, cusname, level_str, level, cusid, cus_address, rel_rep, cus_tele, cus_fax, freight, freight_tele, assign_emp, upname, banktype, banktypeid, damt, relcode, paytype, otheramt, dscrp2, dscrp, dscrp3, outtypestr, mtrlcode, mtrlname, mtrlid, unit, saleqty, pricetype, enprice, rebate, taxrate, requiredate, status, woodcode, pcode, mxdscrp, mxdscrp2, mtrlcuscode, accept_flag, accept_emp, accept_date, tid, im_userid, trade_status, props, trade_no, moddate, acptcnt, shortname, shopname, paydate, outdate, transcode, transcom, confirmdate, createdate, trans_amt INTO :arg_s_import.im_type, :arg_s_import.im_id, :arg_s_import.moneyname, :arg_s_import.moneyid, :arg_s_import.mrate, :arg_s_import.taskdate, :arg_s_import.tasktype, :arg_s_import.typeid, :arg_s_import.cuscode, :arg_s_import.cusname, :arg_s_import.level_str, :arg_s_import.level, :arg_s_import.cusid, :arg_s_import.cus_address, :arg_s_import.rel_rep, :arg_s_import.cus_tele, :arg_s_import.cus_fax, :arg_s_import.freight, :arg_s_import.freight_tele, :arg_s_import.assign_emp, :arg_s_import.upname, :arg_s_import.banktype, :arg_s_import.banktypeid, :arg_s_import.damt, :arg_s_import.relcode, :arg_s_import.paytype, :arg_s_import.otheramt, :arg_s_import.dscrp2, :arg_s_import.dscrp, :arg_s_import.dscrp3, :arg_s_import.outtypestr, :arg_s_import.mtrlcode, :arg_s_import.mtrlname, :arg_s_import.mtrlid, :arg_s_import.unit, :arg_s_import.saleqty, :arg_s_import.pricetype, :arg_s_import.enprice, :arg_s_import.rebate, :arg_s_import.taxrate, :arg_s_import.requiredate, :arg_s_import.status, :arg_s_import.woodcode, :arg_s_import.pcode, :arg_s_import.mxdscrp, :arg_s_import.mxdscrp2, :arg_s_import.mtrlcuscode, :arg_s_import.accept_flag, :arg_s_import.accept_emp, :arg_s_import.accept_date, :arg_s_import.tid, :arg_s_import.im_userid, :arg_s_import.trade_status, :arg_s_import.props, :arg_s_import.trade_no, :arg_s_import.moddate, :arg_s_import.acptcnt, :arg_s_import.shortname, :arg_s_import.shopname, :arg_s_import.paydate, :arg_s_import.outdate, :arg_s_import.transcode, :arg_s_import.transcom, :arg_s_import.confirmdate, :arg_s_import.createdate, :arg_s_import.trans_amt FROM eb_saletask_import WHERE im_type = :arg_im_type And im_id = :arg_im_id; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询临时订单信息失败,' + sqlca.SQLErrText GOTO ext END IF ext: RETURN rslt end function public function integer uf_check (s_saletask_import arg_s_import, ref string arg_msg);int rslt = 1 return rslt end function public function integer uf_taobao_unload (ref string arg_im_ids[], ref string arg_msg);Int rslt = 1 Long i Long ll_cnt Long j = 0 String ls_im_ids[] String ls_im_id DateTime ld_moddate Long ll_pos FOR i = 1 To UpperBound(arg_im_ids) ll_pos = Pos(arg_im_ids[i], ';') IF ll_pos > 0 THEN ls_im_id = Mid(arg_im_ids[i], 1, ll_pos - 1) ld_moddate = DateTime(Date(Mid(arg_im_ids[i], ll_pos + 1, 10)), Time(Mid(arg_im_ids[i], ll_pos + 11))) SELECT COUNT(0) INTO :ll_cnt FROM eb_saletask_import Where im_type = 5 And tid = :ls_im_id And moddate >= :ld_moddate; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询已经下淘宝订单失败,' + sqlca.SQLErrText GOTO ext END IF IF ll_cnt = 0 THEN j++ ls_im_ids[j] = ls_im_id END IF ELSE SELECT COUNT(0) INTO :ll_cnt FROM eb_saletask_import Where im_type = 5 And tid = :arg_im_ids[i]; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询已经下淘宝订单失败,' + sqlca.SQLErrText GOTO ext END IF IF ll_cnt = 0 THEN j++ ls_im_ids[j] = arg_im_ids[i] END IF END IF NEXT arg_im_ids = ls_im_ids ext: RETURN rslt end function public subroutine uf_fill_taobao (ref s_saletask_import arg_s_import);Long ll_dfmoneyid = 0 Long ll_dftypeid = 0 Long ll_dflevel = 4 Long ll_dfcusid = 0 Long ll_dfbanktypeid = 0 Long ll_dfmtrlid = 0 uo_ljlib_taobao_comapp uo_app uo_app = Create uo_ljlib_taobao_comapp String im_userid = '' im_userid = uo_app.uf_getname() Destroy uo_app Long UserID = 0 IF im_userid <> '' THEN SELECT top 1 userid INTO :UserID FROM eb_user Where im_type = 5 And im_userid = :im_userid; IF UserID > 0 THEN SELECT moneyid, typeid, level, banktypeid INTO :ll_dfmoneyid, :ll_dftypeid, :ll_dflevel, :ll_dfbanktypeid FROM eb_user Where UserID = :UserID; END IF END IF SELECT moneyid INTO :arg_s_import.moneyid FROM cw_currency Where Name = :arg_s_import.moneyname; IF sqlca.SQLCode <> 0 THEN arg_s_import.moneyid = ll_dfmoneyid END IF SELECT typeid INTO :arg_s_import.typeid FROM u_saletype Where typename = :arg_s_import.tasktype; IF sqlca.SQLCode <> 0 THEN arg_s_import.typeid = ll_dftypeid END IF IF Pos(arg_s_import.level_str, '最高') > 0 Or Pos(arg_s_import.level_str, '0') > 0 THEN arg_s_import.Level = 0 ELSEIF Pos(arg_s_import.level_str, '较高') > 0 Or Pos(arg_s_import.level_str, '1') > 0 THEN arg_s_import.Level = 1 ELSEIF Pos(arg_s_import.level_str, '普通') > 0 Or Pos(arg_s_import.level_str, '2') > 0 THEN arg_s_import.Level = 2 ELSEIF Pos(arg_s_import.level_str, '较低') > 0 Or Pos(arg_s_import.level_str, '3') > 0 THEN arg_s_import.Level = 3 ELSEIF Pos(arg_s_import.level_str, '最低') > 0 Or Pos(arg_s_import.level_str, '4') > 0 THEN arg_s_import.Level = 4 ELSE arg_s_import.Level = ll_dflevel END IF SELECT cusid INTO :arg_s_import.cusid FROM u_cust Where cuscode = :arg_s_import.cuscode; IF sqlca.SQLCode <> 0 THEN arg_s_import.cusid = ll_dfcusid END IF SELECT banktypeid INTO :arg_s_import.banktypeid FROM cw_banktype Where banktypename = :arg_s_import.banktype; IF sqlca.SQLCode <> 0 THEN arg_s_import.banktypeid = ll_dfbanktypeid END IF //SELECT mtrlid // INTO :arg_s_import.mtrlid // FROM eb_import_mtrlname // WHERE im_type = 5 // And im_id = :arg_s_import.mtrlcode; //IF sqlca.SQLCode <> 0 THEN // arg_s_import.mtrlid = ll_dfmtrlid //END IF uf_fill_mtrl(arg_s_import) end subroutine public subroutine uf_fill (ref s_saletask_import arg_s_import); SELECT moneyid INTO :arg_s_import.moneyid FROM cw_currency Where Name = :arg_s_import.moneyname; IF sqlca.SQLCode <> 0 THEN arg_s_import.moneyid = 0 END IF SELECT typeid INTO :arg_s_import.typeid FROM u_saletype Where typename = :arg_s_import.tasktype; IF sqlca.SQLCode <> 0 THEN arg_s_import.typeid = 0 END IF IF Pos(arg_s_import.level_str, '最高') > 0 Or Pos(arg_s_import.level_str, '0') > 0 THEN arg_s_import.Level = 0 ELSEIF Pos(arg_s_import.level_str, '较高') > 0 Or Pos(arg_s_import.level_str, '1') > 0 THEN arg_s_import.Level = 1 ELSEIF Pos(arg_s_import.level_str, '普通') > 0 Or Pos(arg_s_import.level_str, '2') > 0 THEN arg_s_import.Level = 2 ELSEIF Pos(arg_s_import.level_str, '较低') > 0 Or Pos(arg_s_import.level_str, '3') > 0 THEN arg_s_import.Level = 3 ELSEIF Pos(arg_s_import.level_str, '最低') > 0 Or Pos(arg_s_import.level_str, '4') > 0 THEN arg_s_import.Level = 4 END IF SELECT cusid INTO :arg_s_import.cusid FROM u_cust Where cuscode = :arg_s_import.cuscode; IF sqlca.SQLCode <> 0 THEN arg_s_import.cusid = 0 END IF SELECT banktypeid INTO :arg_s_import.banktypeid FROM cw_banktype Where banktypename = :arg_s_import.banktype; IF sqlca.SQLCode <> 0 THEN arg_s_import.banktypeid = 0 END IF uf_fill_mtrl(arg_s_import) end subroutine public function integer uf_accepts (long arg_scid, long arg_im_type, string arg_ids[], long arg_audit, long arg_priceflag, ref string arg_msg);Int rslt = 1 String ls_msg = '' Long i,j,k Long ll_accept_flag Long ll_taskcnt String ls_taskcode s_saletask_import s_import[], s_empty[] FOR i = 1 To UpperBound(arg_ids) IF uf_getinfo(arg_im_type, arg_ids[i], s_import[i], arg_msg) <> 1 THEN rslt = 0 GOTO ext END IF NEXT s_saletask_import_arr bills[], empty_arr Long cnt = 0 String ls_ids = '' Long ll_taskid // 汇总订单 IF arg_im_type = 5 THEN // 淘宝 FOR i = 1 To UpperBound(s_import) FOR j = 1 To UpperBound(bills) IF bills[j].mx[1].tid = s_import[i].tid THEN // 根据订单号汇总 EXIT END IF NEXT IF j > UpperBound(bills) THEN cnt++ bills[cnt] = empty_arr bills[cnt].arg_ifpricelist = (arg_priceflag = 1) bills[cnt].mx[1] = s_import[i] ELSE k = UpperBound(bills[j].mx) + 1 bills[j].mx[k] = s_import[i] END IF NEXT ELSE FOR i = 1 To UpperBound(s_import) FOR j = 1 To UpperBound(bills) IF bills[j].mx[1].cusid = s_import[i].cusid & And bills[j].mx[1].relcode = s_import[i].relcode & And bills[j].mx[1].cus_address = s_import[i].cus_address & And bills[j].mx[1].rel_rep = s_import[i].rel_rep & And bills[j].mx[1].cus_tele = s_import[i].cus_tele THEN // 根据客户汇总 EXIT END IF NEXT IF j > UpperBound(bills) THEN cnt++ bills[cnt] = empty_arr bills[cnt].arg_ifpricelist = (arg_priceflag = 1) bills[cnt].mx[1] = s_import[i] ELSE k = UpperBound(bills[j].mx) + 1 bills[j].mx[k] = s_import[i] END IF NEXT END IF Long ll_ok // 生成订单 FOR i = 1 To UpperBound(bills) ll_ok = 1 // 检查 ls_ids = '' FOR j = 1 To UpperBound(bills[i].mx) IF j = 1 THEN ls_ids = bills[i].mx[j].im_id ELSE ls_ids += ',' + bills[i].mx[j].im_id END IF SELECT accept_flag, taskcode INTO :ll_accept_flag, :ls_taskcode FROM eb_saletask_import WHERE (im_type = :arg_im_type) And (im_id = :bills[i].mx[j].im_id); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = bills[i].mx[j].im_id + '查询临时订单接受信息失败,' + sqlca.SQLErrText ll_ok = 0 ls_msg += arg_msg + '~r~n' GOTO _next END IF IF ll_accept_flag = 1 THEN SELECT COUNT(0) INTO :ll_taskcnt FROM u_saletask Where taskcode = :ls_taskcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = bills[i].mx[j].im_id + '查询是否存在旧订单失败,' + sqlca.SQLErrText ll_ok = 0 ls_msg += arg_msg + '~r~n' GOTO _next END IF IF ll_taskcnt > 0 THEN rslt = 0 arg_msg = bills[i].mx[j].im_id + '已经生成订单['+ls_taskcode+']不能再接受,请删除旧订单' ll_ok = 0 ls_msg += arg_msg + '~r~n' GOTO _next END IF END IF UPDATE eb_saletask_import SET accept_flag = 1, accept_emp = :publ_operator, accept_date = GETDATE(), acptcnt = acptcnt + 1 WHERE im_type = :arg_im_type And im_id = :bills[i].mx[j].im_id; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = bills[i].mx[j].im_id + '更新接受标记失败,' + sqlca.SQLErrText ll_ok = 0 ls_msg += arg_msg + '~r~n' GOTO _next END IF IF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = bills[i].mx[j].im_id + '临时订单已经被删除,请刷新后再试~r~n' ll_ok = 0 ls_msg += arg_msg + '~r~n' GOTO _next END IF NEXT ls_taskcode = '' IF uo_saletask_spi.uf_save_saletask(arg_scid, bills[i], Ref ll_taskid, Ref ls_taskcode, Ref arg_msg, False) <> 1 THEN rslt = 0 ll_ok = 0 ls_msg += arg_msg + '~r~n' GOTO _next END IF FOR j = 1 To UpperBound(bills[i].mx) UPDATE eb_saletask_import SET taskcode = :ls_taskcode WHERE im_type = :arg_im_type And im_id = :bills[i].mx[j].im_id; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = bills[i].mx[j].im_id + '更新订单号失败,' + sqlca.SQLErrText ll_ok = 0 ls_msg += arg_msg + '~r~n' GOTO _next END IF NEXT // arrcnt++ // arr_scid[arrcnt] = arg_scid // arr_taskid[arrcnt] = ll_taskid // arr_taskcode[arrcnt] = ls_taskcode ls_msg += ls_ids + '成功生成订单['+ls_taskcode+']' COMMIT; IF arg_audit = 1 THEN IF uo_saletask_spi.uf_audit_saletask(arg_scid, ll_taskid, Ref arg_msg, False) <> 1 THEN rslt = 0 ll_ok = 0 ls_msg += ',但审核失败,' + arg_msg + '~r~n' GOTO _next END IF ls_msg += ',并审核成功' END IF ls_msg += '~r~n' _next: IF ll_ok = 1 THEN COMMIT; ELSE ROLLBACK; END IF NEXT //IF arg_audit = 1 THEN // FOR i = 1 To UpperBound(arr_scid) // ll_ok = 1 // // IF uo_saletask_spi.uf_audit_saletask(arr_scid[i], arr_taskid[i], Ref arg_msg, False) <> 1 THEN // rslt = 0 // ll_ok = 0 // ls_msg += arr_taskcode[i] + '审核失败,' + arg_msg + '~r~n' // GOTO _nexta // END IF // // _nexta: // IF ll_ok = 1 THEN // COMMIT; // ELSE // ROLLBACK; // END IF // // NEXT //END IF ext: arg_msg = ls_msg IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF RETURN rslt end function public function integer uf_retrieve_newprice (long arg_im_type, string arg_im_id, ref decimal arg_newprice, ref decimal arg_rebate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_cnt Long ll_accept_flag String ls_taskcode Long ll_taskcnt Decimal ls_1stnewprice = 0 Decimal ls_1stzqrate = 0 s_saletask_import arg_s_import SELECT accept_flag, taskcode, moneyid, cusid, mtrlid, status, woodcode, pcode, typeid, mrate, unit INTO :ll_accept_flag, :ls_taskcode, :arg_s_import.moneyid, :arg_s_import.cusid, :arg_s_import.mtrlid, :arg_s_import.status, :arg_s_import.woodcode, :arg_s_import.pcode, :arg_s_import.typeid, :arg_s_import.mrate, :arg_s_import.unit FROM eb_saletask_import WHERE (im_type = :arg_im_type) And (im_id = :arg_im_id); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询临时订单接受信息失败,' + sqlca.SQLErrText GOTO ext END IF IF ll_accept_flag = 1 THEN SELECT COUNT(0) INTO :ll_taskcnt FROM u_saletask Where taskcode = :ls_taskcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询是否存在旧订单失败,' + sqlca.SQLErrText GOTO ext END IF IF ll_taskcnt > 0 THEN rslt = 0 arg_msg = '已经生成订单['+ls_taskcode+']不能修改,请删除旧订单' GOTO ext END IF END IF IF arg_s_import.mrate = 0 THEN rslt = 0 arg_msg = '汇率为0' GOTO ext END IF IF uo_saletask_spi.uof_getprice_saletask(arg_s_import,ls_1stnewprice,ls_1stzqrate,arg_msg) <= 0 THEN rslt = 0 GOTO ext END IF UPDATE eb_saletask_import SET new_price = :ls_1stnewprice, new_rebate = :ls_1stzqrate WHERE (im_type = :arg_im_type) And (im_id = :arg_im_id); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新临时订单最新价与折扣失败,' + sqlca.SQLErrText GOTO ext END IF arg_newprice = ls_1stnewprice arg_rebate = ls_1stzqrate ext: IF arg_ifcommit THEN IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF END IF RETURN rslt end function public subroutine uf_fill_mtrl (ref s_saletask_import arg_s_import);// 查询物料ID,并填写配置 Int rslt = 1 String arg_msg String ls_mtrlcode String ls_dscrpmx2 ls_mtrlcode = arg_s_import.mtrlcode ls_dscrpmx2 = arg_s_import.props String props Long mx_flag, mtrlid = 0 String status_name, woodcode_name, pcode_name Long status_flag, woodcode_flag, pcode_flag String ls_status = '', ls_woodcode = '', ls_pcode = '' String ls_pros uo_keyvaluecollection lo_keys lo_keys = Create uo_keyvaluecollection uo_keyvaluecollection lo_pros lo_pros = Create uo_keyvaluecollection uo_strhelper uo_str uo_str = Create uo_strhelper SELECT props, mx_flag INTO :props, :mx_flag FROM eb_import_mtrlname WHERE im_type = :arg_s_import.im_type And im_id = :ls_mtrlcode; IF sqlca.SQLCode <> 0 THEN SELECT mtrlid INTO :mtrlid FROM u_mtrldef Where mtrlcode = :ls_mtrlcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF rslt = 1 GOTO ext END IF String ls_keyvalues[], ls_keyvalue[] Long i uo_str.split(ls_dscrpmx2, ";", ls_keyvalues) FOR i = 1 To UpperBound(ls_keyvalues) uo_str.split(ls_keyvalues[i], ":", ls_keyvalue) IF ls_keyvalue[1] <> '' And UpperBound(ls_keyvalue) > 1 THEN IF Not lo_keys.uf_haskey(ls_keyvalue[1]) THEN lo_keys.uf_add(ls_keyvalue[1], ls_keyvalue[2]) END IF END IF NEXT uo_str.split(props, ";", ls_keyvalues) FOR i = 1 To UpperBound(ls_keyvalues) uo_str.split(ls_keyvalues[i], ":", ls_keyvalue) IF ls_keyvalue[1] <> '' And UpperBound(ls_keyvalue) > 1 THEN IF Not lo_keys.uf_haskey(ls_keyvalue[1]) THEN lo_keys.uf_add(ls_keyvalue[1], ls_keyvalue[2]) END IF END IF NEXT IF mx_flag = 0 THEN SELECT mtrlid, status_name, woodcode_name, pcode_name INTO :mtrlid, :status_name, :woodcode_name, :pcode_name FROM eb_import_mtrlname WHERE im_type = :arg_s_import.im_type And im_id = :ls_mtrlcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询配置映射属性失败,' + sqlca.SQLErrText GOTO ext END IF SELECT statusflag, woodcodeflag, pcodeflag INTO :status_flag, :woodcode_flag, :pcode_flag FROM u_mtrldef Where mtrlid = :mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料配置选项失败,' + sqlca.SQLErrText GOTO ext END IF IF status_flag <> 3 And status_name <> '' THEN ls_status = lo_keys.uf_getvalue(status_name) IF IsNull(ls_status) THEN ls_status = '' END IF IF woodcode_flag <> 3 And woodcode_name <> '' THEN ls_woodcode = lo_keys.uf_getvalue(woodcode_name) IF IsNull(ls_woodcode) THEN ls_woodcode = '' END IF IF pcode_flag <> 3 And pcode_name <> '' THEN ls_pcode = lo_keys.uf_getvalue(pcode_name) IF IsNull(ls_pcode) THEN ls_pcode = '' END IF ELSE DECLARE cur1 CURSOR FOR SELECT pros FROM eb_import_mtrlnamemx WHERE im_type = :arg_s_import.im_type And im_id = :ls_mtrlcode; OPEN cur1; FETCH cur1 Into :ls_pros; DO WHILE sqlca.SQLCode = 0 uo_str.split(ls_pros, ";", ls_keyvalues) FOR i = 1 To UpperBound(ls_keyvalues) uo_str.split(ls_keyvalues[i], ":", ls_keyvalue) IF ls_keyvalue[1] <> '' And UpperBound(ls_keyvalue) > 1 THEN IF Not lo_pros.uf_haskey(ls_keyvalue[1]) THEN lo_pros.uf_add(ls_keyvalue[1], ls_keyvalue[2]) END IF END IF NEXT IF lo_keys.uf_include(lo_pros) THEN GOTO _close lo_pros.uf_clear() ls_pros = '' FETCH cur1 Into :ls_pros; LOOP _close: CLOSE cur1; IF IsNull(ls_pros) THEN rslt = 0 GOTO ext END IF IF ls_pros = '' THEN rslt = 0 GOTO ext END IF SELECT mtrlid, status_name, woodcode_name, pcode_name INTO :mtrlid, :status_name, :woodcode_name, :pcode_name FROM eb_import_mtrlnamemx WHERE im_type = :arg_s_import.im_type AND im_id = :ls_mtrlcode And pros = :ls_pros; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询配置映射属性失败,' + sqlca.SQLErrText GOTO ext END IF SELECT statusflag, woodcodeflag, pcodeflag INTO :status_flag, :woodcode_flag, :pcode_flag FROM u_mtrldef Where mtrlid = :mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料配置选项失败,' + sqlca.SQLErrText GOTO ext END IF IF status_flag <> 3 And status_name <> '' THEN ls_status = lo_keys.uf_getvalue(status_name) IF IsNull(ls_status) THEN ls_status = '' END IF IF woodcode_flag <> 3 And woodcode_name <> '' THEN ls_woodcode = lo_keys.uf_getvalue(woodcode_name) IF IsNull(ls_woodcode) THEN ls_woodcode = '' END IF IF pcode_flag <> 3 And pcode_name <> '' THEN ls_pcode = lo_keys.uf_getvalue(pcode_name) IF IsNull(ls_pcode) THEN ls_pcode = '' END IF END IF ext: Destroy lo_keys Destroy lo_pros Destroy uo_str IF rslt = 1 THEN arg_s_import.mtrlid = mtrlid arg_s_import.status = ls_status arg_s_import.woodcode = ls_woodcode arg_s_import.pcode = ls_pcode ELSE arg_s_import.mtrlid = 0 arg_s_import.status = '' arg_s_import.woodcode = '' arg_s_import.pcode = '' END IF end subroutine public function integer uf_csv_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg);Int rslt = 1 String ls_dscrp IF Not FileExists(arg_filepath) THEN rslt = 0 arg_msg = '文件' + arg_filepath + '不存在' GOTO ext END IF Long ll_pos, ll_pos2 ll_pos = Pos(arg_filepath, '\') IF ll_pos > 0 THEN ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1) DO WHILE ll_pos2 > 0 ll_pos = ll_pos2 ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1) LOOP ls_dscrp = Mid(arg_filepath, ll_pos + 1) ELSE ls_dscrp = arg_filepath END IF datastore ds_col100 /////////////建立映射//////////////////// // ds_col100 = Create datastore ds_col100.DataObject = 'dw_col100' ds_col100.ImportFile(CSV!, arg_filepath) datastore arg_dw arg_dw = Create datastore arg_dw.DataObject = 'dw_saletask_import_xls_taobao' Long ll_s_col_count = 100 Long ll_d_col_count ll_d_col_count = Long(arg_dw.Object.datawindow.Column.Count) Long ll_map[] // 目标表与原表的映射,0为没有映射 String ls_colType[] // 目标表列类型 Long col_d, col_s FOR col_d = 1 To ll_d_col_count String ls_col_title, ls_col_name ls_col_name = arg_dw.Describe('#' + String(col_d) + '.Name') ls_colType[col_d] = arg_dw.Describe('#' + String(col_d) + '.ColType') ls_col_title = arg_dw.Describe(ls_col_name + '_t.Text') ll_map[col_d] = 0 FOR col_s = 1 To ll_s_col_count String ls_s_title ls_s_title = ds_col100.GetItemString(1, col_s) IF Lower(Trim(ls_col_title)) = Lower(Trim(ls_s_title)) THEN ll_map[col_d] = col_s EXIT END IF NEXT NEXT Long row_s, row_d String ls_lastmtrlcode = '' FOR row_s = 2 To ds_col100.RowCount( ) IF Trim(ds_col100.GetItemString(row_s, 1),True) <> Trim(ds_col100.GetItemString(row_s - 1, 1),True) Or Trim(ds_col100.GetItemString(row_s, 2),True) <> Trim(ds_col100.GetItemString(row_s - 1, 2),True) THEN row_d = arg_dw.InsertRow(0) ELSE ls_lastmtrlcode = Trim(ds_col100.GetItemString(row_s - 1, 3),True) IF ls_lastmtrlcode <> '-' THEN IF arg_dw.RowsCopy(row_d, row_d, Primary!, arg_dw, row_d + 1, Primary!) = 1 THEN row_d++ arg_dw.Object.trans_amt[row_d] = 0 END IF END IF END IF FOR col_d = 1 To ll_d_col_count IF ll_map[col_d] = 0 THEN CONTINUE Any Value String ls_value ls_value = Trim(ds_col100.GetItemString(row_s, ll_map[col_d]),True) IF ls_value = '' Or ls_value = '-' THEN CONTINUE IF Lower(Left(ls_colType[col_d], 4)) = 'char' THEN Value = ls_value ELSEIF Lower(Left(ls_colType[col_d], 4)) = 'long' Or Lower(Left(ls_colType[col_d], 3)) = 'int' Or Lower(Left(ls_colType[col_d], 3)) = 'num' Or Lower(Left(ls_colType[col_d], 5)) = 'ulong' THEN Value = Long(ls_value) ELSEIF Lower(Left(ls_colType[col_d], 4)) = 'deci' Or Lower(Left(ls_colType[col_d], 4)) = 'real' THEN Value = Dec(ls_value) ELSEIF Lower(Left(ls_colType[col_d], 4)) = 'date' THEN Value = DateTime(Date(Left(ls_value, 10)), Time(Mid(ls_value, 12))) END IF arg_dw.SetItem(row_d, col_d, Value) NEXT NEXT Destroy ds_col100 Long i s_saletask_import s_empty String ls_lastid = '' Long ll_cnt = 0 FOR i = 1 To arg_dw.RowCount() arg_import[i] = s_empty arg_import[i].im_type = 0 arg_import[i].moneyname = arg_dw.Object.moneyname[i] arg_import[i].mrate = arg_dw.Object.mrate[i] arg_import[i].taskdate = arg_dw.Object.taskdate[i] arg_import[i].tasktype = arg_dw.Object.tasktype[i] arg_import[i].cuscode = arg_dw.Object.cuscode[i] arg_import[i].cusname = arg_dw.Object.cusname[i] arg_import[i].level_str = arg_dw.Object.level_str[i] arg_import[i].cus_address = arg_dw.Object.cus_address[i] arg_import[i].rel_rep = arg_dw.Object.rel_rep[i] arg_import[i].cus_tele = arg_dw.Object.cus_tele[i] arg_import[i].cus_fax = arg_dw.Object.cus_fax[i] arg_import[i].freight = arg_dw.Object.freight[i] arg_import[i].freight_tele = arg_dw.Object.freight_tele[i] arg_import[i].assign_emp = arg_dw.Object.assign_emp[i] arg_import[i].upname = arg_dw.Object.upname[i] arg_import[i].banktype = arg_dw.Object.banktype[i] arg_import[i].damt = arg_dw.Object.damt[i] arg_import[i].relcode = arg_dw.Object.relcode[i] arg_import[i].paytype = arg_dw.Object.paytype[i] arg_import[i].otheramt = arg_dw.Object.otheramt[i] arg_import[i].dscrp2 = arg_dw.Object.dscrp2[i] arg_import[i].dscrp = ls_dscrp arg_import[i].dscrp3 = arg_dw.Object.dscrp3[i] arg_import[i].outtypestr = arg_dw.Object.outtypestr[i] arg_import[i].mtrlcode = arg_dw.Object.mtrlcode[i] arg_import[i].mtrlname = arg_dw.Object.mtrlname[i] arg_import[i].unit = arg_dw.Object.unit[i] arg_import[i].saleqty = arg_dw.Object.saleqty[i] arg_import[i].pricetype = arg_dw.Object.pricetype[i] IF arg_dw.Object.trans_amt[i] > 0 THEN arg_import[i].enprice = (arg_dw.Object.enprice[i] * arg_dw.Object.saleqty[i] + arg_dw.Object.trans_amt[i]) / arg_dw.Object.saleqty[i] ELSE arg_import[i].enprice = arg_dw.Object.enprice[i] END IF arg_import[i].rebate = arg_dw.Object.rebate[i] arg_import[i].taxrate = arg_dw.Object.taxrate[i] arg_import[i].requiredate = arg_dw.Object.requiredate[i] arg_import[i].status = arg_dw.Object.status[i] arg_import[i].woodcode = arg_dw.Object.woodcode[i] arg_import[i].pcode = arg_dw.Object.pcode[i] arg_import[i].mxdscrp = arg_dw.Object.mxdscrp[i] arg_import[i].mxdscrp2 = arg_dw.Object.mxdscrp2[i] arg_import[i].mtrlcuscode = arg_dw.Object.mtrlcuscode[i] arg_import[i].im_id = arg_dw.Object.im_id[i] arg_import[i].trade_status = arg_dw.Object.trade_status[i] arg_import[i].tid = arg_dw.Object.tid[i] arg_import[i].props = arg_dw.Object.props[i] arg_import[i].trade_no = arg_dw.Object.trade_no[i] IF arg_import[i].rebate = 0 THEN arg_import[i].rebate = 1 IF arg_import[i].mrate = 0 THEN arg_import[i].mrate = 1 IF IsNull(arg_import[i].relcode) Or arg_import[i].relcode = '' THEN IF IsNull(arg_import[i].im_id) Or arg_import[i].im_id = '' THEN arg_import[i].relcode = arg_import[i].tid ELSE arg_import[i].relcode = arg_import[i].im_id END IF END IF IF arg_import[i].im_id = ls_lastid THEN ll_cnt ++ ELSE ll_cnt = 0 END IF IF ll_cnt > 0 THEN arg_import[i].im_id = arg_import[i].im_id + '-' + String(ll_cnt) END IF ls_lastid = arg_dw.Object.im_id[i] uf_fill(arg_import[i]) NEXT Destroy arg_dw ext: RETURN rslt end function public function integer uf_xml_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg);Int rslt = 1 pbdom_builder builder pbdom_document doc pbdom_element root SetNull(builder) SetNull(doc) SetNull(root) IF Not FileExists(arg_filepath) THEN rslt = 0 arg_msg = '文件' + arg_filepath + '不存在' GOTO ext END IF builder = Create pbdom_builder doc = builder.buildfromfile(arg_filepath) root = doc.getrootelement() pbdom_element cur s_saletask_import ls_task cur = root.getchildelement('币种') IF Not IsNull(cur) THEN ls_task.moneyname = cur.GetTextTrim() END IF cur = root.getchildelement('汇率') IF Not IsNull(cur) THEN ls_task.mrate = Dec(cur.GetTextTrim()) END IF cur = root.getchildelement('订单日期') IF Not IsNull(cur) THEN ls_task.taskdate = DateTime(Date(cur.gettexttrim())) END IF cur = root.getchildelement('交货日期') IF Not IsNull(cur) THEN ls_task.requiredate = DateTime(Date(cur.gettexttrim())) END IF cur = root.getchildelement('分类') IF Not IsNull(cur) THEN ls_task.tasktype = cur.gettexttrim() END IF cur = root.getchildelement('客户编号') IF Not IsNull(cur) THEN ls_task.cuscode = cur.gettexttrim() END IF cur = root.getchildelement('客户名称') IF Not IsNull(cur) THEN ls_task.cusname = cur.gettexttrim() END IF cur = root.getchildelement('优先级') IF Not IsNull(cur) THEN ls_task.level_str = cur.gettexttrim() END IF cur = root.getchildelement('客户地址') IF Not IsNull(cur) THEN ls_task.cus_address = cur.gettexttrim() END IF cur = root.getchildelement('联系人') IF Not IsNull(cur) THEN ls_task.rel_rep = cur.gettexttrim() END IF cur = root.getchildelement('客户电话') IF Not IsNull(cur) THEN ls_task.cus_tele = cur.gettexttrim() END IF cur = root.getchildelement('货运部') IF Not IsNull(cur) THEN ls_task.freight = cur.gettexttrim() END IF cur = root.getchildelement('电话') IF Not IsNull(cur) THEN ls_task.freight_tele = cur.gettexttrim() END IF cur = root.getchildelement('业务员') IF Not IsNull(cur) THEN ls_task.assign_emp = cur.gettexttrim() END IF cur = root.getchildelement('结算方式') IF Not IsNull(cur) THEN ls_task.banktype = cur.gettexttrim() END IF cur = root.getchildelement('订金') IF Not IsNull(cur) THEN ls_task.damt = Dec(cur.gettexttrim()) END IF cur = root.getchildelement('相关号码') IF Not IsNull(cur) THEN ls_task.relcode = cur.gettexttrim() END IF cur = root.getchildelement('交货方式') IF Not IsNull(cur) THEN ls_task.paytype = cur.gettexttrim() END IF cur = root.getchildelement('优惠金额') IF Not IsNull(cur) THEN ls_task.otheramt = Dec(cur.gettexttrim()) END IF cur = root.getchildelement('生产备注') IF Not IsNull(cur) THEN ls_task.dscrp2 = cur.gettexttrim() END IF cur = root.getchildelement('备注') IF Not IsNull(cur) THEN ls_task.dscrp = cur.gettexttrim() END IF Long ll_num = 1 Long i = 0 i = upperbound(arg_import) pbdom_element curmx cur = root.getchildelement('产品' + String(ll_num)) DO WHILE Not IsNull(cur) i++ arg_import[i] = ls_task arg_import[i].im_type = 0 curmx = cur.getchildelement('产品编号') IF Not IsNull(curmx) THEN arg_import[i].mtrlcode = curmx.gettexttrim() END IF curmx = cur.getchildelement('产品名称') IF Not IsNull(curmx) THEN arg_import[i].mtrlname = curmx.gettexttrim() END IF curmx = cur.getchildelement('配置') IF Not IsNull(curmx) THEN arg_import[i].status = curmx.gettexttrim() END IF curmx = cur.getchildelement('配置1') IF Not IsNull(curmx) THEN arg_import[i].woodcode = curmx.gettexttrim() END IF curmx = cur.getchildelement('配置2') IF Not IsNull(curmx) THEN arg_import[i].pcode = curmx.gettexttrim() END IF curmx = cur.getchildelement('单位') IF Not IsNull(curmx) THEN arg_import[i].unit = curmx.gettexttrim() END IF curmx = cur.getchildelement('数量') IF Not IsNull(curmx) THEN arg_import[i].saleqty = Dec(curmx.gettexttrim()) END IF curmx = cur.getchildelement('单价') IF Not IsNull(curmx) THEN arg_import[i].enprice = Dec(curmx.gettexttrim()) END IF curmx = cur.getchildelement('折扣') IF Not IsNull(curmx) THEN arg_import[i].rebate = Dec(curmx.gettexttrim()) END IF curmx = cur.getchildelement('交货日期') IF Not IsNull(curmx) THEN arg_import[i].requiredate = DateTime(Date(curmx.gettexttrim())) END IF curmx = cur.getchildelement('明细备注') IF Not IsNull(curmx) THEN arg_import[i].mxdscrp = curmx.gettexttrim() END IF uf_fill(arg_import[i]) ll_num++ cur = root.getchildelement('产品' + String(ll_num)) LOOP ext: IF Not IsNull(doc) THEN Destroy doc END IF IF Not IsNull(builder) THEN Destroy builder END IF RETURN rslt end function public function integer uf_xls_to_import_sny (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg);Int rslt = 1 datastore arg_dw arg_dw = Create datastore arg_dw.DataObject = 'dw_saletask_import_xls_taobao1' IF f_xls_import_to_dw(arg_filepath, arg_dw, arg_msg) <> 1 THEN rslt = 0 GOTO ext END IF String ls_dscrp Long ll_pos, ll_pos2 ll_pos = Pos(arg_filepath, '\') IF ll_pos > 0 THEN ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1) DO WHILE ll_pos2 > 0 ll_pos = ll_pos2 ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1) LOOP ls_dscrp = Mid(arg_filepath, ll_pos + 1) ELSE ls_dscrp = arg_filepath END IF Long i string ls_lastid = '' long ll_cnt = 0 s_saletask_import s_empty FOR i = 1 To arg_dw.RowCount() arg_import[i] = s_empty arg_import[i].im_type = 0 arg_import[i].moneyname = arg_dw.Object.moneyname[i] arg_import[i].mrate = arg_dw.Object.mrate[i] arg_import[i].taskdate = arg_dw.Object.taskdate[i] arg_import[i].tasktype = arg_dw.Object.tasktype[i] arg_import[i].cuscode = arg_dw.Object.cuscode[i] arg_import[i].cusname = arg_dw.Object.cusname[i] arg_import[i].level_str = arg_dw.Object.level_str[i] arg_import[i].cus_address = arg_dw.Object.cus_address[i] arg_import[i].rel_rep = arg_dw.Object.rel_rep[i] arg_import[i].cus_tele = arg_dw.Object.cus_tele[i] arg_import[i].cus_fax = arg_dw.Object.cus_fax[i] arg_import[i].freight = arg_dw.Object.freight[i] arg_import[i].freight_tele = arg_dw.Object.freight_tele[i] arg_import[i].assign_emp = arg_dw.Object.assign_emp[i] arg_import[i].upname = arg_dw.Object.upname[i] arg_import[i].banktype = arg_dw.Object.banktype[i] arg_import[i].damt = arg_dw.Object.damt[i] arg_import[i].relcode = arg_dw.Object.relcode[i] arg_import[i].paytype = arg_dw.Object.paytype[i] arg_import[i].otheramt = arg_dw.Object.otheramt[i] arg_import[i].dscrp2 = arg_dw.Object.dscrp2[i] arg_import[i].dscrp = ls_dscrp arg_import[i].dscrp3 = arg_dw.Object.dscrp3[i] arg_import[i].outtypestr = arg_dw.Object.outtypestr[i] arg_import[i].mtrlcode = arg_dw.Object.mtrlcode[i] arg_import[i].mtrlname = arg_dw.Object.mtrlname[i] arg_import[i].unit = arg_dw.Object.unit[i] arg_import[i].saleqty = arg_dw.Object.saleqty[i] arg_import[i].pricetype = arg_dw.Object.pricetype[i] IF arg_dw.Object.trans_amt[i] > 0 THEN arg_import[i].enprice = (arg_dw.Object.enprice[i] * arg_dw.Object.saleqty[i] + arg_dw.Object.trans_amt[i]) / arg_dw.Object.saleqty[i] ELSE arg_import[i].enprice = arg_dw.Object.enprice[i] END IF arg_import[i].rebate = arg_dw.Object.rebate[i] arg_import[i].taxrate = arg_dw.Object.taxrate[i] arg_import[i].requiredate = arg_dw.Object.requiredate[i] arg_import[i].status = arg_dw.Object.status[i] arg_import[i].woodcode = arg_dw.Object.woodcode[i] arg_import[i].pcode = arg_dw.Object.pcode[i] arg_import[i].mxdscrp = arg_dw.Object.mxdscrp[i] arg_import[i].mxdscrp2 = arg_dw.Object.mxdscrp2[i] arg_import[i].mtrlcuscode = arg_dw.Object.mtrlcuscode[i] arg_import[i].im_id = arg_dw.Object.im_id[i] arg_import[i].trade_status = arg_dw.Object.trade_status[i] arg_import[i].tid = arg_dw.Object.tid[i] arg_import[i].props = arg_dw.Object.props[i] arg_import[i].trade_no = arg_dw.Object.trade_no[i] arg_import[i].trans_amt = arg_dw.Object.trans_amt[i] arg_import[i].shortname = arg_dw.Object.shortname[i] arg_import[i].shopname = arg_dw.Object.shopname[i] arg_import[i].paydate = arg_dw.Object.paydate[i] arg_import[i].outdate = arg_dw.Object.outdate[i] arg_import[i].transcode = arg_dw.Object.transcode[i] arg_import[i].transcom = arg_dw.Object.transcom[i] arg_import[i].confirmdate = arg_dw.Object.confirmdate[i] arg_import[i].createdate = arg_dw.Object.createdate[i] IF arg_import[i].rebate = 0 THEN arg_import[i].rebate = 1 IF arg_import[i].mrate = 0 THEN arg_import[i].mrate = 1 IF IsNull(arg_import[i].relcode) Or arg_import[i].relcode = '' THEN IF IsNull(arg_import[i].im_id) Or arg_import[i].im_id = '' THEN arg_import[i].relcode = arg_import[i].tid ELSE arg_import[i].relcode = arg_import[i].im_id END IF END IF IF arg_import[i].im_id = ls_lastid THEN ll_cnt ++ ELSE ll_cnt = 0 END IF IF ll_cnt > 0 THEN arg_import[i].im_id = arg_import[i].im_id + '-' + String(ll_cnt) END IF ls_lastid = arg_dw.Object.im_id[i] uf_fill(arg_import[i]) NEXT ext: Destroy arg_dw RETURN rslt end function public function integer uf_xls_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg);Int rslt = 1 datastore arg_dw arg_dw = Create datastore arg_dw.DataObject = 'dw_saletask_import_xls' IF f_xls_import_to_dw(arg_filepath, arg_dw, arg_msg) <> 1 THEN rslt = 0 GOTO ext END IF String ls_dscrp Long ll_pos, ll_pos2 ll_pos = Pos(arg_filepath, '\') IF ll_pos > 0 THEN ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1) DO WHILE ll_pos2 > 0 ll_pos = ll_pos2 ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1) LOOP ls_dscrp = Mid(arg_filepath, ll_pos + 1) ELSE ls_dscrp = arg_filepath END IF Long i s_saletask_import s_empty FOR i = 1 To arg_dw.RowCount() arg_import[i] = s_empty arg_import[i].im_type = 0 arg_import[i].moneyname = arg_dw.Object.moneyname[i] arg_import[i].mrate = arg_dw.Object.mrate[i] arg_import[i].taskdate = arg_dw.Object.taskdate[i] arg_import[i].tasktype = arg_dw.Object.tasktype[i] arg_import[i].cuscode = arg_dw.Object.cuscode[i] arg_import[i].cusname = arg_dw.Object.cusname[i] arg_import[i].level_str = arg_dw.Object.level_str[i] arg_import[i].cus_address = arg_dw.Object.cus_address[i] arg_import[i].rel_rep = arg_dw.Object.rel_rep[i] arg_import[i].cus_tele = arg_dw.Object.cus_tele[i] arg_import[i].cus_fax = arg_dw.Object.cus_fax[i] arg_import[i].freight = arg_dw.Object.freight[i] arg_import[i].freight_tele = arg_dw.Object.freight_tele[i] arg_import[i].assign_emp = arg_dw.Object.assign_emp[i] arg_import[i].upname = arg_dw.Object.upname[i] arg_import[i].banktype = arg_dw.Object.banktype[i] arg_import[i].damt = arg_dw.Object.damt[i] arg_import[i].relcode = arg_dw.Object.relcode[i] arg_import[i].paytype = arg_dw.Object.paytype[i] arg_import[i].otheramt = arg_dw.Object.otheramt[i] arg_import[i].dscrp2 = arg_dw.Object.dscrp2[i] arg_import[i].dscrp = ls_dscrp arg_import[i].dscrp3 = arg_dw.Object.dscrp3[i] arg_import[i].outtypestr = arg_dw.Object.outtypestr[i] arg_import[i].mtrlcode = arg_dw.Object.mtrlcode[i] arg_import[i].mtrlname = arg_dw.Object.mtrlname[i] arg_import[i].unit = arg_dw.Object.unit[i] arg_import[i].saleqty = arg_dw.Object.saleqty[i] arg_import[i].pricetype = arg_dw.Object.pricetype[i] arg_import[i].enprice = arg_dw.Object.enprice[i] arg_import[i].rebate = arg_dw.Object.rebate[i] arg_import[i].taxrate = arg_dw.Object.taxrate[i] arg_import[i].requiredate = arg_dw.Object.requiredate[i] arg_import[i].status = arg_dw.Object.status[i] arg_import[i].woodcode = arg_dw.Object.woodcode[i] arg_import[i].pcode = arg_dw.Object.pcode[i] arg_import[i].mxdscrp = arg_dw.Object.mxdscrp[i] arg_import[i].mxdscrp2 = arg_dw.Object.mxdscrp2[i] arg_import[i].mtrlcuscode = arg_dw.Object.mtrlcuscode[i] uf_fill(arg_import[i]) NEXT ext: Destroy arg_dw RETURN rslt end function public function integer uof_add_saletask (long arg_im_type[], string arg_im_id[], long arg_scid, long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int li_status Int rslt = 1 //uo_cusprice uo_price //uo_price = create uo_cusprice // //If uo_option_price_rmb = -1000 Then // arg_msg = '选项:[238]销售单价按人民币单价折算,读取初始默认值失败,操作取消!' // rslt = 0 // Goto ext //End If // // //If uo_option_m_msttake = -1000 Then // arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!' // rslt = 0 // Goto ext //End If // //decimal ls_1stnewprice,ls_1stzqrate //Decimal ld_saleqty, ld_rebate,ld_enprice,ld_taxrate //Long ll_mtrlid //String ls_mxdscrp, ls_mxdscrp2, ls_status, ls_woodcode, ls_pcode, ls_mtrlcuscode , ls_outtypestr,ls_pricetype //DateTime ldt_requiredate //Decimal mrate,ld_fprice,ld_enacprice,ld_acprice //Long ll_printid //Long ll_i,ll_statusflag //Decimal ld_msttakeamt,ld_new_price,ld_plprice,ld_net_weight_f,ld_gross_weight_f,ld_cubage_f //Decimal ld_capacity,ld_capacity_zj //String ls_pfcode,ls_status_zj,ls_taskcode //Long ll_j //long ll_moneyid,ll_cusid,ll_typeid //s_mtrlcfg_expr s_pz[] // //Select status,mrate,taskcode,moneyid,cusid,typeid // Into :li_status,:mrate,:ls_taskcode,:ll_moneyid,:ll_cusid,:ll_typeid // From u_saletask // Where scid = :arg_scid // And taskid = :arg_taskid; //If sqlca.SQLCode <> 0 Then // rslt = 0 // arg_msg = '查询订单状态失败,'+sqlca.SQLErrText // Goto ext //End If // //If li_status <> 0 Then // rslt = 0 // arg_msg = '订单只能在待审核状态下才能增加明细' // Goto ext //End If // //Select max(printid) Into :ll_printid // From u_saletaskmx // Where scid = :arg_scid // And taskid = :arg_taskid; //If sqlca.SQLCode <> 0 Then // rslt = 0 // arg_msg = '查询订单明细最大序号失败,'+sqlca.SQLErrText // Goto ext //End If // //For ll_i = 1 To UpperBound(arg_im_id) // Select saleqty, // mtrlid, // mxdscrp, // mxdscrp2, // rebate, // status, // woodcode, // pcode, // mtrlcuscode, // enprice, // outtypestr, // requiredate, // pricetype, // taxrate, // new_price // Into :ld_saleqty, // :ll_mtrlid, // :ls_mxdscrp, // :ls_mxdscrp2, // :ld_rebate, // :ls_status, // :ls_woodcode, // :ls_pcode, // :ls_mtrlcuscode, // :ld_enprice, // :ls_outtypestr, // :ldt_requiredate, // :ls_pricetype, // :ld_taxrate, // :ld_new_price // From eb_saletask_import // Where im_type = :arg_im_type[ll_i] // And im_id = :arg_im_id[ll_i]; // If sqlca.SQLCode <> 0 Then // rslt = 0 // arg_msg = '查询外部订单信息失败,imtype:'+String(arg_im_type[ll_i])+',im_id:'+String(arg_im_id[ll_i])+'~r~n'+sqlca.SQLErrText // Goto ext // End If // // IF uo_price.uof_getprice_saletask(ll_moneyid,ll_cusid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,0,0,0,0,ll_typeid,ls_1stnewprice,ls_1stzqrate,arg_msg) <> 0 THEN // ld_enprice = ls_1stnewprice // ld_rebate = ls_1stzqrate // end if // // If uo_option_price_rmb = 0 Then // ld_fprice = ld_enprice * mrate // // If mrate = 0 Then // ld_enacprice = ld_fprice * ld_rebate // Else // ld_enacprice = ld_fprice * ld_rebate / mrate // End If // // ld_acprice = ld_fprice * ld_rebate // // Else // ld_fprice = Round(ld_enprice * mrate,2) // // If mrate = 0 Then // ld_enacprice = Round(ld_fprice * ld_rebate,2) // Else // ld_enacprice = Round(ld_fprice * ld_rebate / mrate,2) // End If // // ld_acprice = Round(ld_fprice * ld_rebate,2) // // End If // // If uo_option_m_msttake = 1 Then //使用多币种 // ld_msttakeamt = ld_msttakeamt + Round(ld_enprice * ld_saleqty * ld_rebate,2) // Else // 系统不使用多币种,转换为人民币 // ld_msttakeamt = ld_msttakeamt + Round(ld_enprice * mrate * ld_saleqty * ld_rebate,2) // End If // // ll_printid++ // // f_get_planprice_mtrl(ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_plprice) // ls_pfcode = f_get_dft_pf(ll_mtrlid) // // f_get_mtrl_weight(ll_mtrlid,ls_status,ld_net_weight_f,ld_gross_weight_f,ld_cubage_f) // // Select statusflag,capacity // Into :ll_statusflag,:ld_capacity // From u_mtrldef // Where mtrlid = :ll_mtrlid; // If sqlca.SQLCode <> 0 Then // rslt = 0 // arg_msg = '查询产品信息失败,mtrlid:'+String(ll_mtrlid) +'~r~n' +sqlca.SQLErrText // Goto ext // End If // // If ll_statusflag = 2 And ls_status <> '' Then // ld_capacity = 0 // f_checkpz(ls_status,s_pz[]) // For ll_j = 1 To UpperBound(s_pz) // ls_status_zj = s_pz[ll_j].cfgname // // Select capacity * capaparm // Into :ld_capacity_zj // From u_mtrl_configure // Where mtrlid = :ll_mtrlid // And Name = :ls_status_zj; // If sqlca.SQLCode <> 0 Then // ld_capacity_zj = 0 // End If // // ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_j].qty) // Next // End If // // Insert Into u_saletaskmx // ( scid, // saleqty, // price, // plprice, // mtrlid, // taskid, // mxdscrp, // mxdscrp2, // fprice, // rebate, // status, // printid, // woodcode, // pcode, // mtrlcuscode, // enprice, // outtypestr, // dftsaleprice, // requiredate, // pfcode, // pricetype, // capacity, // nprice, // taxrate, // enacprice, // net_weight, // gross_weight, // cubage) // Values (:arg_scid, // :ld_saleqty, // :ld_acprice, // :ld_plprice, // :ll_mtrlid, // :arg_taskid, // :ls_mxdscrp, // :ls_mxdscrp2, // :ld_fprice, // :ld_rebate, // :ls_status, // :ll_printid, // :ls_woodcode, // :ls_pcode, // :ls_mtrlcuscode, // :ld_enprice, // :ls_outtypestr, // :ld_enprice, // :ldt_requiredate, // :ls_pfcode, // :ls_pricetype, // :ld_capacity, // :ld_new_price, // :ld_taxrate, // :ld_enacprice, // :ld_net_weight_f, // :ld_gross_weight_f, // :ld_cubage_f) ; // If sqlca.SQLCode <> 0 Then // rslt = 0 // arg_msg = '增加订单明细失败,'+sqlca.SQLErrText // Goto ext // End If // // //更新外部订单已接收信息 // Update eb_saletask_import // Set accept_flag = 1, // accept_emp = :publ_operator, // accept_date = GETDATE(), // acptcnt = acptcnt + 1, // taskcode = :ls_taskcode // Where im_type = :arg_im_type[ll_i] // And im_id = :arg_im_id[ll_i]; // If sqlca.SQLCode <> 0 Then // rslt = 0 // arg_msg = '更新外部订单已接收状态失败,'+sqlca.SQLErrText // Goto ext // End If // //Next // ////更新订单应收金额,修改人,修改时间 //Update u_saletask // Set msttakeamt = msttakeamt + :ld_msttakeamt, // modemp = :publ_operator, // moddate = getdate() // Where scid = :arg_scid // And 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 rslt = 1 And arg_ifcommit Then // Commit; //End If // //destroy uo_price Return rslt end function public function integer uf_accept_taobao (string arg_tid, ref string arg_msg, ref string arg_taskcode);Int rslt = 1 s_saletask_import_arr curbill s_saletask_import mx Long i = 0 DECLARE cur1 CURSOR FOR SELECT eb_saletask_import.dscrp, eb_saletask_import.dscrp2, eb_saletask_import.taskdate, eb_saletask_import.damt, eb_saletask_import.otheramt, eb_saletask_import.relcode, eb_saletask_import.freight, eb_saletask_import.freight_tele, eb_saletask_import.cus_address, eb_saletask_import.cus_tele, eb_saletask_import.cus_fax, eb_saletask_import.rel_rep, eb_saletask_import.dscrp3, eb_saletask_import.im_id, eb_saletask_import.mtrlid, eb_saletask_import.saleqty, tb_order.payment / tb_order.num AS enprice, eb_saletask_import.rebate, eb_saletask_import.mxdscrp, eb_saletask_import.mxdscrp2, eb_saletask_import.status, eb_saletask_import.woodcode, eb_saletask_import.pcode, eb_saletask_import.mtrlcuscode, eb_saletask_import.outtypestr, eb_saletask_import.pricetype, eb_saletask_import.taxrate, eb_saletask_import.accept_flag, eb_saletask_import.taskcode FROM eb_saletask_import INNER JOIN tb_order ON eb_saletask_import.im_id = tb_order.oid WHERE (eb_saletask_import.im_type = 5) AND (eb_saletask_import.tid = :arg_tid) AND (eb_saletask_import.trade_status = 'WAIT_SELLER_SEND_GOODS') Order By eb_saletask_import.im_id; OPEN cur1; FETCH cur1 INTO :mx.dscrp,:mx.dscrp2,:mx.taskdate,:mx.damt,:mx.otheramt,:mx.relcode, :mx.freight,:mx.freight_tele,:mx.cus_address,:mx.cus_tele,:mx.cus_fax, :mx.rel_rep,:mx.dscrp3,:mx.im_id,:mx.mtrlid,:mx.saleqty,:mx.enprice,:mx.rebate,:mx.mxdscrp, :mx.mxdscrp2,:mx.status,:mx.woodcode,:mx.pcode,:mx.mtrlcuscode,:mx.outtypestr, :mx.pricetype,:mx.taxrate,:mx.accept_flag,:mx.taskcode; DO WHILE sqlca.SQLCode = 0 i++ curbill.mx[i] = mx FETCH cur1 INTO :mx.dscrp,:mx.dscrp2,:mx.taskdate,:mx.damt,:mx.otheramt,:mx.relcode, :mx.freight,:mx.freight_tele,:mx.cus_address,:mx.cus_tele,:mx.cus_fax, :mx.rel_rep,:mx.dscrp3,:mx.im_id,:mx.mtrlid,:mx.saleqty,:mx.enprice,:mx.rebate,:mx.mxdscrp, :mx.mxdscrp2,:mx.status,:mx.woodcode,:mx.pcode,:mx.mtrlcuscode,:mx.outtypestr, :mx.pricetype,:mx.taxrate,:mx.accept_flag,:mx.taskcode; LOOP CLOSE cur1; IF i = 0 THEN rslt = 0 arg_msg = '淘宝订单['+arg_tid+']不存在' GOTO ext END IF Long cnt = 0 FOR i = 1 To UpperBound(curbill.mx) mx = curbill.mx[i] if mx.cus_address = '' then rslt = 0 arg_msg = '淘宝订单['+arg_tid+']收货地址不能为空' goto ext end if IF mx.accept_flag = 1 THEN cnt = 0 SELECT COUNT(0) INTO :cnt FROM u_saletask Where taskcode = :mx.taskcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询ERP订单['+mx.taskcode+']是否存在失败,' + sqlca.SQLErrText GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '已生成ERP订单['+mx.taskcode+'],不能重复生成' GOTO ext END IF END IF SELECT mtrlcode INTO :curbill.mx[i].mtrlcode FROM u_mtrldef Where mtrlid = :mx.mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询ERP物料编码失败,' + sqlca.SQLErrText GOTO ext END IF UPDATE eb_saletask_import SET accept_flag = 1, accept_emp = :publ_operator, accept_date = GETDATE(), acptcnt = acptcnt + 1 WHERE im_type = 5 AND im_id = :mx.im_id And stopflag = 0 AND directsend = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = mx.im_id + '更新接受标记失败,' + sqlca.SQLErrText GOTO ext END IF IF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = mx.im_id + '临时订单已经被删除或中止,请刷新后再试~r~n' GOTO ext END IF NEXT Decimal ld_mx_sum SELECT SUM(tb_order.payment) INTO :ld_mx_sum FROM eb_saletask_import INNER JOIN tb_order ON eb_saletask_import.im_id = tb_order.oid WHERE (eb_saletask_import.im_type = 5) AND (eb_saletask_import.tid = :arg_tid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询订单商品总金额失败,' + sqlca.SQLErrText GOTO ext END IF decimal ld_payment, ld_post_fee SELECT payment, post_fee into :ld_payment, :ld_post_fee FROM tb_trade WHERE (tid = :arg_tid); if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '查询淘宝订单实付金额与邮费失败,' + sqlca.sqlerrtext goto ext end if curbill.mx[1].otheramt = ld_mx_sum + ld_post_fee - ld_payment curbill.mx[1].post_fee = ld_post_fee IF uo_saletask_spi.uf_fill_taobao_saletask_info(curbill.mx[1], Ref arg_msg) <> 1 THEN rslt = 0 GOTO ext END IF FOR i = 2 To UpperBound(curbill.mx) curbill.mx[i].requiredate = curbill.mx[1].requiredate NEXT Long ll_taskid = 0 String ls_taskcode = '' IF uo_saletask_spi.uf_save_saletask(curbill.mx[1].scid, curbill, Ref ll_taskid, Ref ls_taskcode, Ref arg_msg, False) <> 1 THEN rslt = 0 GOTO ext END IF FOR i = 1 To UpperBound(curbill.mx) UPDATE eb_saletask_import SET taskcode = :ls_taskcode WHERE im_type = 5 And im_id = :curbill.mx[i].im_id; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = curbill.mx[i].im_id + '更新订单号失败,' + sqlca.SQLErrText GOTO ext END IF NEXT arg_taskcode = ls_taskcode ext: IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF RETURN rslt end function public function integer uf_save_saletask_jiayu (string arg_filename, ref string arg_msg);// 直接将嘉韵 灵通打单格式 导入销售订单 // 1. 将csv文件转成DW Int rslt = 1 datastore dw_1 dw_1 = Create datastore // 2. 逐行处理,物料编码不为空,订单号为空的是与上一单同一订单的 uo_saletask obj_saletask obj_saletask = Create uo_saletask obj_saletask.commit_transaction = sqlca dw_1.DataObject = 'dw_col100' dw_1.ImportFile(CSV!, arg_filename) if isvalid(ins_dw_test1) then ins_dw_test1.DataObject = dw_1.DataObject ins_dw_test1.Reset() dw_1.RowsCopy(1, dw_1.RowCount(), primary!, ins_dw_test1, 1, primary!) end if Long i, j String ls_tid = '' String ls_mtrlcode = '' s_saletask_import s_mx s_saletask_import arr_billmx[] Long cnt = 0 Decimal mxtotalamt String ls_assign_emp, ls_paytype Long ll_typeid, ll_cusid, ll_banktypeid, ll_moneyid Decimal ld_mrate SELECT top 1 assign_emp, paytype, typeid, cusid, banktypeid, moneyid, mrate INTO :ls_assign_emp, :ls_paytype, :ll_typeid, :ll_cusid, :ll_banktypeid, :ll_moneyid, :ld_mrate FROM eb_user Where im_type = 5; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询淘宝默认设置失败,' + sqlca.SQLErrText GOTO ext END IF FOR i = 2 To dw_1.RowCount() ls_mtrlcode = Trim(dw_1.GetItemString(i, 16), true) IF ls_mtrlcode = '' THEN EXIT END IF s_mx.tid = Trim(dw_1.GetItemString(i, 1), true) s_mx.trade_status = Trim(dw_1.GetItemString(i, 2), true) s_mx.cuscode = Trim(dw_1.GetItemString(i, 3), true) s_mx.transcom = Trim(dw_1.GetItemString(i, 5), true) s_mx.transcode = Trim(dw_1.GetItemString(i, 6), true) s_mx.rel_rep = Trim(dw_1.GetItemString(i, 7), true) s_mx.cus_fax = Trim(dw_1.GetItemString(i, 8), true) s_mx.cus_tele = Trim(dw_1.GetItemString(i, 9), true) s_mx.cus_address = Trim(dw_1.GetItemString(i, 10), true) + Trim(dw_1.GetItemString(i, 11), true) + Trim(dw_1.GetItemString(i, 12), true) + Trim(dw_1.GetItemString(i, 13), true) s_mx.mtrlname = Trim(dw_1.GetItemString(i, 15), true) s_mx.mtrlcode = Trim(dw_1.GetItemString(i, 16), true) s_mx.props = Trim(dw_1.GetItemString(i, 17), true) s_mx.saleqty = Dec(Trim(dw_1.GetItemString(i, 18), true)) s_mx.enprice = Dec(Trim(dw_1.GetItemString(i, 19), true)) s_mx.totalamt = Dec(Trim(dw_1.GetItemString(i, 21), true)) + Dec(Trim(dw_1.GetItemString(i, 22), true)) s_mx.mxdscrp = Trim(dw_1.GetItemString(i, 25), true) s_mx.mxdscrp2 = Trim(dw_1.GetItemString(i, 26), true) s_mx.dscrp = Trim(dw_1.GetItemString(i, 25), true) s_mx.dscrp2 = Trim(dw_1.GetItemString(i, 26), true) s_mx.rebate = 1 IF s_mx.tid <> '' THEN // 当前行是新一张单的开始 // 保存上一张单 IF cnt > 0 THEN mxtotalamt = 0 FOR j = 1 To cnt arr_billmx[j].rebate = 0 arr_billmx[j].status = '' arr_billmx[j].woodcode = '' arr_billmx[j].pcode = '' arr_billmx[j].mtrlcuscode = '' arr_billmx[j].taxrate = 0 SELECT mtrlid INTO :arr_billmx[j].mtrlid FROM u_mtrldef Where mtrlcode = :arr_billmx[j].mtrlcode; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = arr_billmx[1].tid + '查询物料编码失败,'+arr_billmx[j].mtrlcode+',' + arg_msg GOTO ext end if mxtotalamt += arr_billmx[j].saleqty * arr_billmx[j].enprice NEXT arr_billmx[1].otheramt = mxtotalamt - s_mx.totalamt IF obj_saletask.newbegin(0,arg_msg) = 0 THEN rslt = 0 arg_msg = arr_billmx[1].tid + '新建订单失败,' + arg_msg GOTO ext END IF obj_saletask.requiredate = DateTime(Today(),Now()) obj_saletask.assign_emp = ls_assign_emp //obj_saletask.upname = arg_bill.mx[1].upname obj_saletask.Kind = ll_typeid obj_saletask.cusid = ll_cusid obj_saletask.dscrp = arr_billmx[1].dscrp obj_saletask.dscrp2 = arr_billmx[1].dscrp2 obj_saletask.taskdate = DateTime(Today(),Now()) obj_saletask.banktypeid = ll_banktypeid obj_saletask.moneyid = ll_moneyid obj_saletask.damt = 0 obj_saletask.otheramt = arr_billmx[1].otheramt obj_saletask.relcode = arr_billmx[1].tid obj_saletask.paytype = ls_paytype obj_saletask.freight = arr_billmx[1].transcom obj_saletask.freight_tele = '' obj_saletask.cus_address = arr_billmx[1].cus_address obj_saletask.cus_tele = arr_billmx[1].cus_tele obj_saletask.cus_fax = arr_billmx[1].cus_fax obj_saletask.mrate = ld_mrate //obj_saletask.typeid = arg_bill.mx[1].typeid obj_saletask.rel_rep = arr_billmx[1].rel_rep //obj_saletask.Level = arg_bill.mx[1].Level obj_saletask.dscrp3 = '' FOR j = 1 To cnt IF obj_saletask.acceptmx(arr_billmx[j].mtrlid,& arr_billmx[j].saleqty,& 0 /*orderqty*/ ,& 0 /*buyqty*/ ,& arr_billmx[j].enprice,& 1 /*rebate*/ ,& 0 /*planprice*/ ,& arr_billmx[j].mxdscrp,& arr_billmx[j].mtrlcode,& arr_billmx[j].status,& arr_billmx[j].woodcode,& arr_billmx[j].pcode,& arr_billmx[j].mtrlcuscode,& j,& 0 /*outtype*/ ,& arg_msg,& '' /*unit*/ ,& arr_billmx[j].taxrate /*rate*/ ,& '' /*formula*/ ,& 0 /*addqty*/ ,& arr_billmx[j].mxdscrp2,& 0 /*needwfjgqty*/,& '' /*plancode*/,& 0 /*tax*/) = 0 THEN rslt = 0 arg_msg = arr_billmx[1].tid + '添加订单明细失败,' + arg_msg GOTO ext END IF NEXT // s_saletask_itemmx s_item //费用项目 // IF arg_bill.mx[1].post_fee <> 0 THEN // s_item.printid = 1 // s_item.itemid = arg_bill.mx[1].itemid // s_item.amt = arg_bill.mx[1].post_fee // s_item.amtyfh = 0 // s_item.mxdscrp = '' // s_item.itype = 1 // IF obj_saletask.acceptmx_item(s_item, arg_msg) = 0 THEN // rslt = 0 // arg_msg = arr_billmx[1].tid + '添加订单费用明细失败,' + arg_msg // GOTO ext // END IF // END IF IF obj_saletask.savesubmit(publ_operator,arg_msg,False) <> 1 THEN rslt = 0 arg_msg = arr_billmx[1].tid + '保存订单失败,' + arg_msg GOTO ext END IF IF obj_saletask.save_end(arg_msg,False) = 0 THEN //保存费用项目 rslt = 0 arg_msg = arr_billmx[1].tid + '保存订单费用明细失败,' + arg_msg GOTO ext END IF END IF cnt = 0 END IF cnt ++ arr_billmx[cnt] = s_mx NEXT IF cnt > 0 THEN mxtotalamt = 0 FOR j = 1 To cnt arr_billmx[j].rebate = 0 arr_billmx[j].status = '' arr_billmx[j].woodcode = '' arr_billmx[j].pcode = '' arr_billmx[j].mtrlcuscode = '' arr_billmx[j].taxrate = 0 SELECT mtrlid INTO :arr_billmx[j].mtrlid FROM u_mtrldef Where mtrlcode = :arr_billmx[j].mtrlcode; mxtotalamt += arr_billmx[j].saleqty * arr_billmx[j].enprice NEXT arr_billmx[1].otheramt = mxtotalamt - s_mx.totalamt IF obj_saletask.newbegin(0,arg_msg) = 0 THEN rslt = 0 arg_msg = arr_billmx[1].tid + '新建订单失败,' + arg_msg GOTO ext END IF obj_saletask.requiredate = DateTime(Today(),Now()) obj_saletask.assign_emp = ls_assign_emp //obj_saletask.upname = arg_bill.mx[1].upname obj_saletask.Kind = ll_typeid obj_saletask.cusid = ll_cusid obj_saletask.dscrp = arr_billmx[1].dscrp obj_saletask.dscrp2 = arr_billmx[1].dscrp2 obj_saletask.taskdate = DateTime(Today(),Now()) obj_saletask.banktypeid = ll_banktypeid obj_saletask.moneyid = ll_moneyid obj_saletask.damt = 0 obj_saletask.otheramt = arr_billmx[1].otheramt obj_saletask.relcode = arr_billmx[1].tid obj_saletask.paytype = ls_paytype obj_saletask.freight = arr_billmx[1].transcom obj_saletask.freight_tele = '' obj_saletask.cus_address = arr_billmx[1].cus_address obj_saletask.cus_tele = arr_billmx[1].cus_tele obj_saletask.cus_fax = arr_billmx[1].cus_fax obj_saletask.mrate = ld_mrate //obj_saletask.typeid = arg_bill.mx[1].typeid obj_saletask.rel_rep = arr_billmx[1].rel_rep //obj_saletask.Level = arg_bill.mx[1].Level obj_saletask.dscrp3 = '' FOR j = 1 To cnt IF obj_saletask.acceptmx(arr_billmx[j].mtrlid,& arr_billmx[j].saleqty,& 0 /*orderqty*/ ,& 0 /*buyqty*/ ,& arr_billmx[j].enprice,& 1 /*rebate*/ ,& 0 /*planprice*/ ,& arr_billmx[j].mxdscrp,& arr_billmx[j].mtrlcode,& arr_billmx[j].status,& arr_billmx[j].woodcode,& arr_billmx[j].pcode,& arr_billmx[j].mtrlcuscode,& j,& 0 /*outtype*/ ,& arg_msg,& '' /*unit*/ ,& arr_billmx[j].taxrate /*rate*/ ,& '' /*formula*/ ,& 0 /*addqty*/ ,& arr_billmx[j].mxdscrp2,& 0 /*needwfjgqty*/,& '' /*plancode*/,& 0 /*tax*/) = 0 THEN rslt = 0 arg_msg = arr_billmx[1].tid + '添加订单明细失败,' + arg_msg GOTO ext END IF NEXT // s_saletask_itemmx s_item //费用项目 // IF arg_bill.mx[1].post_fee <> 0 THEN // s_item.printid = 1 // s_item.itemid = arg_bill.mx[1].itemid // s_item.amt = arg_bill.mx[1].post_fee // s_item.amtyfh = 0 // s_item.mxdscrp = '' // s_item.itype = 1 // IF obj_saletask.acceptmx_item(s_item, arg_msg) = 0 THEN // rslt = 0 // arg_msg = arr_billmx[1].tid + '添加订单费用明细失败,' + arg_msg // GOTO ext // END IF // END IF IF obj_saletask.savesubmit(publ_operator,arg_msg,False) <> 1 THEN rslt = 0 arg_msg = arr_billmx[1].tid + '保存订单失败,' + arg_msg GOTO ext END IF IF obj_saletask.save_end(arg_msg,False) = 0 THEN //保存费用项目 rslt = 0 arg_msg = arr_billmx[1].tid + '保存订单费用明细失败,' + arg_msg GOTO ext END IF END IF // 3.保存订单 ext: Destroy dw_1 Destroy obj_saletask IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF RETURN rslt end function on uo_saletask_import.create call super::create TriggerEvent( this, "constructor" ) end on on uo_saletask_import.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;//String arg_msg //String str_optionvalue // //str_optionvalue = '' //f_get_sys_option_value('238',str_optionvalue,arg_msg) //uo_option_price_rmb = Long(str_optionvalue) // //str_optionvalue = '' //f_get_sys_option_value('045',str_optionvalue,arg_msg) //uo_option_m_msttake = Long(str_optionvalue) end event