uo_saletask_import.sru 73 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810
  1. $PBExportHeader$uo_saletask_import.sru
  2. forward
  3. global type uo_saletask_import from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_saletask_import from nonvisualobject
  7. end type
  8. global uo_saletask_import uo_saletask_import
  9. type variables
  10. int uo_option_price_rmb
  11. Int uo_option_m_msttake
  12. /////测试
  13. datawindow ins_dw_test1
  14. end variables
  15. forward prototypes
  16. public function integer uf_reset (ref s_saletask_import arg_s_import, ref string arg_msg)
  17. private function string pf_getid (string arg_ctg, datetime arg_dt, boolean if_commit, transaction arg_transaction)
  18. public function integer uf_save_saletask_import (ref s_saletask_import arg_s_import, ref string arg_msg, boolean arg_if_commit)
  19. public function integer uf_del (long arg_im_type, string arg_im_id, ref string arg_msg, boolean arg_if_commit)
  20. public function integer uf_getinfo (long arg_im_type, string arg_im_id, ref s_saletask_import arg_s_import, ref string arg_msg)
  21. public function integer uf_check (s_saletask_import arg_s_import, ref string arg_msg)
  22. public function integer uf_taobao_unload (ref string arg_im_ids[], ref string arg_msg)
  23. public subroutine uf_fill_taobao (ref s_saletask_import arg_s_import)
  24. public subroutine uf_fill (ref s_saletask_import arg_s_import)
  25. 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)
  26. 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)
  27. public subroutine uf_fill_mtrl (ref s_saletask_import arg_s_import)
  28. public function integer uf_csv_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg)
  29. public function integer uf_xml_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg)
  30. public function integer uf_xls_to_import_sny (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg)
  31. public function integer uf_xls_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg)
  32. 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)
  33. public function integer uf_accept_taobao (string arg_tid, ref string arg_msg, ref string arg_taskcode)
  34. public function integer uf_save_saletask_jiayu (string arg_filename, ref string arg_msg)
  35. end prototypes
  36. public function integer uf_reset (ref s_saletask_import arg_s_import, ref string arg_msg);Int rslt = 1
  37. IF IsNull(arg_s_import.im_type) THEN arg_s_import.im_type = 0
  38. IF IsNull(arg_s_import.im_id) THEN arg_s_import.im_id = ''
  39. IF IsNull(arg_s_import.moneyname) THEN arg_s_import.moneyname = ''
  40. IF IsNull(arg_s_import.moneyid) THEN arg_s_import.moneyid = 0
  41. IF IsNull(arg_s_import.mrate) THEN arg_s_import.mrate = 0
  42. IF IsNull(arg_s_import.taskdate) THEN arg_s_import.taskdate = DateTime(Today())
  43. IF IsNull(arg_s_import.tasktype) THEN arg_s_import.tasktype = ''
  44. IF IsNull(arg_s_import.typeid) THEN arg_s_import.typeid = 0
  45. IF IsNull(arg_s_import.cuscode) THEN arg_s_import.cuscode = ''
  46. IF IsNull(arg_s_import.cusname) THEN arg_s_import.cusname = ''
  47. IF IsNull(arg_s_import.level_str) THEN arg_s_import.level_str = ''
  48. IF IsNull(arg_s_import.level) THEN arg_s_import.level = 0
  49. IF IsNull(arg_s_import.cusid) THEN arg_s_import.cusid = 0
  50. IF IsNull(arg_s_import.cus_address) THEN arg_s_import.cus_address = ''
  51. IF IsNull(arg_s_import.rel_rep) THEN arg_s_import.rel_rep = ''
  52. IF IsNull(arg_s_import.cus_tele) THEN arg_s_import.cus_tele = ''
  53. IF IsNull(arg_s_import.cus_fax) THEN arg_s_import.cus_fax = ''
  54. IF IsNull(arg_s_import.freight) THEN arg_s_import.freight = ''
  55. IF IsNull(arg_s_import.freight_tele) THEN arg_s_import.freight_tele = ''
  56. IF IsNull(arg_s_import.assign_emp) THEN arg_s_import.assign_emp = ''
  57. IF IsNull(arg_s_import.upname) THEN arg_s_import.upname = ''
  58. IF IsNull(arg_s_import.banktype) THEN arg_s_import.banktype = ''
  59. IF IsNull(arg_s_import.banktypeid) THEN arg_s_import.banktypeid = 0
  60. IF IsNull(arg_s_import.damt) THEN arg_s_import.damt = 0
  61. IF IsNull(arg_s_import.relcode) THEN arg_s_import.relcode = ''
  62. IF IsNull(arg_s_import.paytype) THEN arg_s_import.paytype = ''
  63. IF IsNull(arg_s_import.otheramt) THEN arg_s_import.otheramt = 0
  64. IF IsNull(arg_s_import.dscrp2) THEN arg_s_import.dscrp2 = ''
  65. IF IsNull(arg_s_import.dscrp) THEN arg_s_import.dscrp = ''
  66. IF IsNull(arg_s_import.dscrp3) THEN arg_s_import.dscrp3 = ''
  67. IF IsNull(arg_s_import.outtypestr) THEN arg_s_import.outtypestr = ''
  68. IF IsNull(arg_s_import.mtrlcode) THEN arg_s_import.mtrlcode = ''
  69. IF IsNull(arg_s_import.mtrlname) THEN arg_s_import.mtrlname = ''
  70. IF IsNull(arg_s_import.mtrlid) THEN arg_s_import.mtrlid = 0
  71. IF IsNull(arg_s_import.unit) THEN arg_s_import.unit = ''
  72. IF IsNull(arg_s_import.saleqty) THEN arg_s_import.saleqty = 0
  73. IF IsNull(arg_s_import.pricetype) THEN arg_s_import.pricetype = ''
  74. IF IsNull(arg_s_import.enprice) THEN arg_s_import.enprice = 0
  75. IF IsNull(arg_s_import.rebate) THEN arg_s_import.rebate = 0
  76. IF IsNull(arg_s_import.taxrate) THEN arg_s_import.taxrate = 0
  77. IF IsNull(arg_s_import.requiredate) THEN arg_s_import.requiredate = DateTime(Today())
  78. IF IsNull(arg_s_import.status) THEN arg_s_import.status = ''
  79. IF IsNull(arg_s_import.woodcode) THEN arg_s_import.woodcode = ''
  80. IF IsNull(arg_s_import.pcode) THEN arg_s_import.pcode = ''
  81. IF IsNull(arg_s_import.mxdscrp) THEN arg_s_import.mxdscrp = ''
  82. IF IsNull(arg_s_import.mxdscrp2) THEN arg_s_import.mxdscrp2 = ''
  83. IF IsNull(arg_s_import.mtrlcuscode) THEN arg_s_import.mtrlcuscode = ''
  84. IF IsNull(arg_s_import.tid) THEN arg_s_import.tid = ''
  85. IF IsNull(arg_s_import.im_userid) THEN arg_s_import.im_userid = ''
  86. IF IsNull(arg_s_import.trade_status) THEN arg_s_import.trade_status = ''
  87. IF IsNull(arg_s_import.props) THEN arg_s_import.props = ''
  88. IF IsNull(arg_s_import.trade_no) THEN arg_s_import.trade_no = ''
  89. IF IsNull(arg_s_import.shortname) THEN arg_s_import.shortname = ''
  90. IF IsNull(arg_s_import.shopname) THEN arg_s_import.shopname = ''
  91. IF IsNull(arg_s_import.transcode) THEN arg_s_import.transcode = ''
  92. IF IsNull(arg_s_import.transcom) THEN arg_s_import.transcom = ''
  93. IF IsNull(arg_s_import.trans_amt) THEN arg_s_import.trans_amt = 0
  94. RETURN rslt
  95. end function
  96. private function string pf_getid (string arg_ctg, datetime arg_dt, boolean if_commit, transaction arg_transaction);String rslt = ''
  97. Long ll_nmbr
  98. arg_ctg = Upper(arg_ctg)
  99. arg_dt = DateTime(Date(arg_dt), Time(0))
  100. UPDATE u_bsnno_aps
  101. SET nmbr = nmbr + 1
  102. WHERE opDate = :arg_dt
  103. AND typecode = :arg_ctg
  104. AND scid = 0
  105. And status = 0 Using arg_transaction;
  106. IF arg_transaction.SQLCode <> 0 THEN
  107. ROLLBACK Using arg_transaction ;
  108. rslt = "err"
  109. GOTO ext
  110. END IF
  111. IF arg_transaction.SQLNRows = 0 THEN
  112. INSERT INTO u_bsnno_aps(scid, opdate, typecode, nmbr, status)
  113. Values (0, :arg_dt, :arg_ctg, 1, 0) Using arg_transaction;
  114. IF arg_transaction.SQLCode <> 0 THEN
  115. ROLLBACK Using arg_transaction ;
  116. rslt = "err"
  117. GOTO ext
  118. END IF
  119. END IF
  120. SELECT nmbr
  121. INTO :ll_nmbr
  122. FROM u_bsnno_aps
  123. WHERE opDate = :arg_dt
  124. AND typecode = :arg_ctg
  125. AND scid = 0
  126. And status = 0 Using arg_transaction;
  127. IF arg_transaction.SQLCode <> 0 THEN
  128. ROLLBACK Using arg_transaction ;
  129. rslt = "err"
  130. GOTO ext
  131. END IF
  132. rslt = arg_ctg + String(arg_dt, 'yyMMdd') + String(ll_nmbr, '000')
  133. IF rslt = '' THEN rslt = 'err'
  134. IF if_commit And rslt <> "err" THEN
  135. COMMIT Using arg_transaction;
  136. END IF
  137. ext:
  138. RETURN rslt
  139. end function
  140. 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
  141. String ls_newid
  142. String ls_ctg
  143. Long ll_cnt
  144. Long ll_accept_flag
  145. String ls_taskcode
  146. Long ll_taskcnt
  147. IF uf_reset(arg_s_import, arg_msg) <> 1 THEN
  148. rslt = 0
  149. GOTO ext
  150. END IF
  151. IF arg_s_import.im_id = '' Or arg_s_import.im_id = '0' THEN
  152. CHOOSE CASE arg_s_import.im_type
  153. CASE 0
  154. ls_ctg = 'MD'
  155. CASE ELSE
  156. rslt = 0
  157. arg_msg = '未定义类型' + String(arg_s_import.im_type)
  158. GOTO ext
  159. END CHOOSE
  160. ls_newid = pf_getid(ls_ctg, DateTime(Today(), Now()), False, sqlca)
  161. IF ls_newid = 'err' THEN
  162. rslt = 0
  163. arg_msg = '获取唯一码失败'
  164. GOTO ext
  165. END IF
  166. arg_s_import.im_id = ls_newid
  167. END IF
  168. SELECT COUNT(0)
  169. INTO :ll_cnt
  170. FROM eb_saletask_import
  171. WHERE im_type = :arg_s_import.im_type
  172. And im_id = :arg_s_import.im_id;
  173. IF sqlca.SQLCode <> 0 THEN
  174. rslt = 0
  175. arg_msg = '查询订单导入的数量失败,' + sqlca.SQLErrText
  176. GOTO ext
  177. END IF
  178. IF ll_cnt = 0 THEN
  179. Decimal ls_1stnewprice = 0
  180. Decimal ls_1stzqrate = 0
  181. uo_saletask_spi.uof_getprice_saletask(arg_s_import,ls_1stnewprice,ls_1stzqrate,arg_msg)
  182. INSERT INTO eb_saletask_import
  183. (im_type,
  184. im_id,
  185. moneyname,
  186. moneyid,
  187. mrate,
  188. taskdate,
  189. tasktype,
  190. typeid,
  191. cuscode,
  192. cusname,
  193. level_str,
  194. level,
  195. cusid,
  196. cus_address,
  197. rel_rep,
  198. cus_tele,
  199. cus_fax,
  200. freight,
  201. freight_tele,
  202. Assign_Emp,
  203. upname,
  204. banktype,
  205. banktypeid,
  206. damt,
  207. relcode,
  208. paytype,
  209. otheramt,
  210. dscrp2,
  211. dscrp,
  212. dscrp3,
  213. outtypestr,
  214. mtrlcode,
  215. mtrlname,
  216. mtrlid,
  217. unit,
  218. saleqty,
  219. pricetype,
  220. enprice,
  221. rebate,
  222. taxrate,
  223. requiredate,
  224. status,
  225. woodcode,
  226. pcode,
  227. mxdscrp,
  228. mxdscrp2,
  229. mtrlcuscode,
  230. tid,
  231. im_userid,
  232. trade_status,
  233. props,
  234. trade_no,
  235. moddate,
  236. new_price,
  237. new_rebate,
  238. shortname,
  239. shopname,
  240. paydate,
  241. outdate,
  242. transcode,
  243. transcom,
  244. confirmdate,
  245. createdate,
  246. trans_amt)
  247. VALUES (:arg_s_import.im_type,
  248. :arg_s_import.im_id,
  249. :arg_s_import.moneyname,
  250. :arg_s_import.moneyid,
  251. :arg_s_import.mrate,
  252. :arg_s_import.taskdate,
  253. :arg_s_import.tasktype,
  254. :arg_s_import.typeid,
  255. :arg_s_import.cuscode,
  256. :arg_s_import.cusname,
  257. :arg_s_import.level_str,
  258. :arg_s_import.level,
  259. :arg_s_import.cusid,
  260. :arg_s_import.cus_address,
  261. :arg_s_import.rel_rep,
  262. :arg_s_import.cus_tele,
  263. :arg_s_import.cus_fax,
  264. :arg_s_import.freight,
  265. :arg_s_import.freight_tele,
  266. :arg_s_import.Assign_Emp,
  267. :arg_s_import.upname,
  268. :arg_s_import.banktype,
  269. :arg_s_import.banktypeid,
  270. :arg_s_import.damt,
  271. :arg_s_import.relcode,
  272. :arg_s_import.paytype,
  273. :arg_s_import.otheramt,
  274. :arg_s_import.dscrp2,
  275. :arg_s_import.dscrp,
  276. :arg_s_import.dscrp3,
  277. :arg_s_import.outtypestr,
  278. :arg_s_import.mtrlcode,
  279. :arg_s_import.mtrlname,
  280. :arg_s_import.mtrlid,
  281. :arg_s_import.unit,
  282. :arg_s_import.saleqty,
  283. :arg_s_import.pricetype,
  284. :arg_s_import.enprice,
  285. :arg_s_import.rebate,
  286. :arg_s_import.taxrate,
  287. :arg_s_import.requiredate,
  288. :arg_s_import.status,
  289. :arg_s_import.woodcode,
  290. :arg_s_import.pcode,
  291. :arg_s_import.mxdscrp,
  292. :arg_s_import.mxdscrp2,
  293. :arg_s_import.mtrlcuscode,
  294. :arg_s_import.tid,
  295. :arg_s_import.im_userid,
  296. :arg_s_import.trade_status,
  297. :arg_s_import.props,
  298. :arg_s_import.trade_no,
  299. :arg_s_import.moddate,
  300. :ls_1stnewprice,
  301. :ls_1stzqrate,
  302. :arg_s_import.shortname,
  303. :arg_s_import.shopname,
  304. :arg_s_import.paydate,
  305. :arg_s_import.outdate,
  306. :arg_s_import.transcode,
  307. :arg_s_import.transcom,
  308. :arg_s_import.confirmdate,
  309. :arg_s_import.createdate,
  310. :arg_s_import.trans_amt);
  311. IF sqlca.SQLCode <> 0 THEN
  312. rslt = 0
  313. arg_msg = '插入订单导入表失败,' + sqlca.SQLErrText
  314. GOTO ext
  315. END IF
  316. ELSE
  317. SELECT accept_flag, taskcode
  318. INTO :ll_accept_flag, :ls_taskcode
  319. FROM eb_saletask_import
  320. WHERE (im_type = :arg_s_import.im_type)
  321. And (im_id = :arg_s_import.im_id);
  322. IF sqlca.SQLCode <> 0 THEN
  323. rslt = 0
  324. arg_msg = '查询临时订单接受信息失败,' + sqlca.SQLErrText
  325. GOTO ext
  326. END IF
  327. IF ll_accept_flag = 1 THEN
  328. SELECT COUNT(0)
  329. INTO :ll_taskcnt
  330. FROM u_saletask
  331. Where taskcode = :ls_taskcode;
  332. IF sqlca.SQLCode <> 0 THEN
  333. rslt = 0
  334. arg_msg = '查询是否存在旧订单失败,' + sqlca.SQLErrText
  335. GOTO ext
  336. END IF
  337. IF ll_taskcnt > 0 THEN
  338. rslt = 0
  339. arg_msg = '已经生成订单['+ls_taskcode+']不能修改,请删除旧订单'
  340. GOTO ext
  341. END IF
  342. END IF
  343. UPDATE eb_saletask_import
  344. SET moneyname = :arg_s_import.moneyname,
  345. moneyid = :arg_s_import.moneyid,
  346. mrate = :arg_s_import.mrate,
  347. taskdate = :arg_s_import.taskdate,
  348. tasktype = :arg_s_import.tasktype,
  349. typeid = :arg_s_import.typeid,
  350. cuscode = :arg_s_import.cuscode,
  351. cusname = :arg_s_import.cusname,
  352. level_str = :arg_s_import.level_str,
  353. level = :arg_s_import.level,
  354. cusid = :arg_s_import.cusid,
  355. cus_address = :arg_s_import.cus_address,
  356. rel_rep = :arg_s_import.rel_rep,
  357. cus_tele = :arg_s_import.cus_tele,
  358. cus_fax = :arg_s_import.cus_fax,
  359. freight = :arg_s_import.freight,
  360. freight_tele = :arg_s_import.freight_tele,
  361. Assign_Emp = :arg_s_import.Assign_Emp,
  362. upname = :arg_s_import.upname,
  363. banktype = :arg_s_import.banktype,
  364. banktypeid = :arg_s_import.banktypeid,
  365. damt = :arg_s_import.damt,
  366. relcode = :arg_s_import.relcode,
  367. paytype = :arg_s_import.paytype,
  368. otheramt = :arg_s_import.otheramt,
  369. dscrp2 = :arg_s_import.dscrp2,
  370. dscrp = :arg_s_import.dscrp,
  371. dscrp3 = :arg_s_import.dscrp3,
  372. outtypestr = :arg_s_import.outtypestr,
  373. mtrlcode = :arg_s_import.mtrlcode,
  374. mtrlname = :arg_s_import.mtrlname,
  375. mtrlid = :arg_s_import.mtrlid,
  376. unit = :arg_s_import.unit,
  377. saleqty = :arg_s_import.saleqty,
  378. pricetype = :arg_s_import.pricetype,
  379. enprice = :arg_s_import.enprice,
  380. rebate = :arg_s_import.rebate,
  381. taxrate = :arg_s_import.taxrate,
  382. requiredate = :arg_s_import.requiredate,
  383. status = :arg_s_import.status,
  384. woodcode = :arg_s_import.woodcode,
  385. pcode = :arg_s_import.pcode,
  386. mxdscrp = :arg_s_import.mxdscrp,
  387. mxdscrp2 = :arg_s_import.mxdscrp2,
  388. mtrlcuscode = :arg_s_import.mtrlcuscode,
  389. moddate = :arg_s_import.moddate
  390. WHERE (im_type = :arg_s_import.im_type)
  391. And (im_id = :arg_s_import.im_id);
  392. IF sqlca.SQLCode <> 0 THEN
  393. rslt = 0
  394. arg_msg = '更新订单导入表失败,' + sqlca.SQLErrText
  395. GOTO ext
  396. END IF
  397. END IF
  398. ext:
  399. IF arg_if_commit THEN
  400. IF rslt = 1 THEN
  401. COMMIT;
  402. ELSE
  403. ROLLBACK;
  404. END IF
  405. END IF
  406. RETURN rslt
  407. end function
  408. public function integer uf_del (long arg_im_type, string arg_im_id, ref string arg_msg, boolean arg_if_commit);Int rslt = 1
  409. Long ll_taskcnt
  410. String ls_taskcode
  411. Long ll_accept_flag
  412. SELECT accept_flag,taskcode
  413. INTO :ll_accept_flag, :ls_taskcode
  414. FROM eb_saletask_import
  415. WHERE im_type = :arg_im_type
  416. And im_id = :arg_im_id;
  417. IF sqlca.SQLCode <> 0 THEN
  418. rslt = 0
  419. arg_msg = '查询临时订单接受标记失败,' + sqlca.SQLErrText
  420. GOTO ext
  421. END IF
  422. IF ll_accept_flag = 1 THEN
  423. SELECT COUNT(0)
  424. INTO :ll_taskcnt
  425. FROM u_saletask
  426. Where taskcode = :ls_taskcode;
  427. IF sqlca.SQLCode <> 0 THEN
  428. rslt = 0
  429. arg_msg = '查询是否存在旧订单失败,' + sqlca.SQLErrText
  430. GOTO ext
  431. END IF
  432. IF ll_taskcnt > 0 THEN
  433. rslt = 0
  434. arg_msg = '已经生成订单['+ls_taskcode+']不能删除,请删除旧订单'
  435. GOTO ext
  436. END IF
  437. END IF
  438. DELETE FROM eb_saletask_import
  439. WHERE im_type = :arg_im_type
  440. And im_id = :arg_im_id;
  441. IF sqlca.SQLCode <> 0 THEN
  442. rslt = 0
  443. arg_msg = '删除临时订单失败,' + sqlca.SQLErrText
  444. GOTO ext
  445. END IF
  446. ext:
  447. IF arg_if_commit THEN
  448. IF rslt = 1 THEN
  449. COMMIT;
  450. ELSE
  451. ROLLBACK;
  452. END IF
  453. END IF
  454. RETURN rslt
  455. end function
  456. 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
  457. s_saletask_import s_empty
  458. arg_s_import = s_empty
  459. SELECT im_type,
  460. im_id,
  461. moneyname,
  462. moneyid,
  463. mrate,
  464. taskdate,
  465. tasktype,
  466. typeid,
  467. cuscode,
  468. cusname,
  469. level_str,
  470. level,
  471. cusid,
  472. cus_address,
  473. rel_rep,
  474. cus_tele,
  475. cus_fax,
  476. freight,
  477. freight_tele,
  478. assign_emp,
  479. upname,
  480. banktype,
  481. banktypeid,
  482. damt,
  483. relcode,
  484. paytype,
  485. otheramt,
  486. dscrp2,
  487. dscrp,
  488. dscrp3,
  489. outtypestr,
  490. mtrlcode,
  491. mtrlname,
  492. mtrlid,
  493. unit,
  494. saleqty,
  495. pricetype,
  496. enprice,
  497. rebate,
  498. taxrate,
  499. requiredate,
  500. status,
  501. woodcode,
  502. pcode,
  503. mxdscrp,
  504. mxdscrp2,
  505. mtrlcuscode,
  506. accept_flag,
  507. accept_emp,
  508. accept_date,
  509. tid,
  510. im_userid,
  511. trade_status,
  512. props,
  513. trade_no,
  514. moddate,
  515. acptcnt,
  516. shortname,
  517. shopname,
  518. paydate,
  519. outdate,
  520. transcode,
  521. transcom,
  522. confirmdate,
  523. createdate,
  524. trans_amt
  525. INTO :arg_s_import.im_type,
  526. :arg_s_import.im_id,
  527. :arg_s_import.moneyname,
  528. :arg_s_import.moneyid,
  529. :arg_s_import.mrate,
  530. :arg_s_import.taskdate,
  531. :arg_s_import.tasktype,
  532. :arg_s_import.typeid,
  533. :arg_s_import.cuscode,
  534. :arg_s_import.cusname,
  535. :arg_s_import.level_str,
  536. :arg_s_import.level,
  537. :arg_s_import.cusid,
  538. :arg_s_import.cus_address,
  539. :arg_s_import.rel_rep,
  540. :arg_s_import.cus_tele,
  541. :arg_s_import.cus_fax,
  542. :arg_s_import.freight,
  543. :arg_s_import.freight_tele,
  544. :arg_s_import.assign_emp,
  545. :arg_s_import.upname,
  546. :arg_s_import.banktype,
  547. :arg_s_import.banktypeid,
  548. :arg_s_import.damt,
  549. :arg_s_import.relcode,
  550. :arg_s_import.paytype,
  551. :arg_s_import.otheramt,
  552. :arg_s_import.dscrp2,
  553. :arg_s_import.dscrp,
  554. :arg_s_import.dscrp3,
  555. :arg_s_import.outtypestr,
  556. :arg_s_import.mtrlcode,
  557. :arg_s_import.mtrlname,
  558. :arg_s_import.mtrlid,
  559. :arg_s_import.unit,
  560. :arg_s_import.saleqty,
  561. :arg_s_import.pricetype,
  562. :arg_s_import.enprice,
  563. :arg_s_import.rebate,
  564. :arg_s_import.taxrate,
  565. :arg_s_import.requiredate,
  566. :arg_s_import.status,
  567. :arg_s_import.woodcode,
  568. :arg_s_import.pcode,
  569. :arg_s_import.mxdscrp,
  570. :arg_s_import.mxdscrp2,
  571. :arg_s_import.mtrlcuscode,
  572. :arg_s_import.accept_flag,
  573. :arg_s_import.accept_emp,
  574. :arg_s_import.accept_date,
  575. :arg_s_import.tid,
  576. :arg_s_import.im_userid,
  577. :arg_s_import.trade_status,
  578. :arg_s_import.props,
  579. :arg_s_import.trade_no,
  580. :arg_s_import.moddate,
  581. :arg_s_import.acptcnt,
  582. :arg_s_import.shortname,
  583. :arg_s_import.shopname,
  584. :arg_s_import.paydate,
  585. :arg_s_import.outdate,
  586. :arg_s_import.transcode,
  587. :arg_s_import.transcom,
  588. :arg_s_import.confirmdate,
  589. :arg_s_import.createdate,
  590. :arg_s_import.trans_amt
  591. FROM eb_saletask_import
  592. WHERE im_type = :arg_im_type
  593. And im_id = :arg_im_id;
  594. IF sqlca.SQLCode <> 0 THEN
  595. rslt = 0
  596. arg_msg = '查询临时订单信息失败,' + sqlca.SQLErrText
  597. GOTO ext
  598. END IF
  599. ext:
  600. RETURN rslt
  601. end function
  602. public function integer uf_check (s_saletask_import arg_s_import, ref string arg_msg);int rslt = 1
  603. return rslt
  604. end function
  605. public function integer uf_taobao_unload (ref string arg_im_ids[], ref string arg_msg);Int rslt = 1
  606. Long i
  607. Long ll_cnt
  608. Long j = 0
  609. String ls_im_ids[]
  610. String ls_im_id
  611. DateTime ld_moddate
  612. Long ll_pos
  613. FOR i = 1 To UpperBound(arg_im_ids)
  614. ll_pos = Pos(arg_im_ids[i], ';')
  615. IF ll_pos > 0 THEN
  616. ls_im_id = Mid(arg_im_ids[i], 1, ll_pos - 1)
  617. ld_moddate = DateTime(Date(Mid(arg_im_ids[i], ll_pos + 1, 10)), Time(Mid(arg_im_ids[i], ll_pos + 11)))
  618. SELECT COUNT(0)
  619. INTO :ll_cnt
  620. FROM eb_saletask_import
  621. Where im_type = 5 And tid = :ls_im_id And moddate >= :ld_moddate;
  622. IF sqlca.SQLCode <> 0 THEN
  623. rslt = 0
  624. arg_msg = '查询已经下淘宝订单失败,' + sqlca.SQLErrText
  625. GOTO ext
  626. END IF
  627. IF ll_cnt = 0 THEN
  628. j++
  629. ls_im_ids[j] = ls_im_id
  630. END IF
  631. ELSE
  632. SELECT COUNT(0)
  633. INTO :ll_cnt
  634. FROM eb_saletask_import
  635. Where im_type = 5 And tid = :arg_im_ids[i];
  636. IF sqlca.SQLCode <> 0 THEN
  637. rslt = 0
  638. arg_msg = '查询已经下淘宝订单失败,' + sqlca.SQLErrText
  639. GOTO ext
  640. END IF
  641. IF ll_cnt = 0 THEN
  642. j++
  643. ls_im_ids[j] = arg_im_ids[i]
  644. END IF
  645. END IF
  646. NEXT
  647. arg_im_ids = ls_im_ids
  648. ext:
  649. RETURN rslt
  650. end function
  651. public subroutine uf_fill_taobao (ref s_saletask_import arg_s_import);Long ll_dfmoneyid = 0
  652. Long ll_dftypeid = 0
  653. Long ll_dflevel = 4
  654. Long ll_dfcusid = 0
  655. Long ll_dfbanktypeid = 0
  656. Long ll_dfmtrlid = 0
  657. uo_ljlib_taobao_comapp uo_app
  658. uo_app = Create uo_ljlib_taobao_comapp
  659. String im_userid = ''
  660. im_userid = uo_app.uf_getname()
  661. Destroy uo_app
  662. Long UserID = 0
  663. IF im_userid <> '' THEN
  664. SELECT top 1 userid
  665. INTO :UserID
  666. FROM eb_user
  667. Where im_type = 5 And im_userid = :im_userid;
  668. IF UserID > 0 THEN
  669. SELECT moneyid,
  670. typeid,
  671. level,
  672. banktypeid
  673. INTO :ll_dfmoneyid,
  674. :ll_dftypeid,
  675. :ll_dflevel,
  676. :ll_dfbanktypeid
  677. FROM eb_user
  678. Where UserID = :UserID;
  679. END IF
  680. END IF
  681. SELECT moneyid
  682. INTO :arg_s_import.moneyid
  683. FROM cw_currency
  684. Where Name = :arg_s_import.moneyname;
  685. IF sqlca.SQLCode <> 0 THEN
  686. arg_s_import.moneyid = ll_dfmoneyid
  687. END IF
  688. SELECT typeid
  689. INTO :arg_s_import.typeid
  690. FROM u_saletype
  691. Where typename = :arg_s_import.tasktype;
  692. IF sqlca.SQLCode <> 0 THEN
  693. arg_s_import.typeid = ll_dftypeid
  694. END IF
  695. IF Pos(arg_s_import.level_str, '最高') > 0 Or Pos(arg_s_import.level_str, '0') > 0 THEN
  696. arg_s_import.Level = 0
  697. ELSEIF Pos(arg_s_import.level_str, '较高') > 0 Or Pos(arg_s_import.level_str, '1') > 0 THEN
  698. arg_s_import.Level = 1
  699. ELSEIF Pos(arg_s_import.level_str, '普通') > 0 Or Pos(arg_s_import.level_str, '2') > 0 THEN
  700. arg_s_import.Level = 2
  701. ELSEIF Pos(arg_s_import.level_str, '较低') > 0 Or Pos(arg_s_import.level_str, '3') > 0 THEN
  702. arg_s_import.Level = 3
  703. ELSEIF Pos(arg_s_import.level_str, '最低') > 0 Or Pos(arg_s_import.level_str, '4') > 0 THEN
  704. arg_s_import.Level = 4
  705. ELSE
  706. arg_s_import.Level = ll_dflevel
  707. END IF
  708. SELECT cusid
  709. INTO :arg_s_import.cusid
  710. FROM u_cust
  711. Where cuscode = :arg_s_import.cuscode;
  712. IF sqlca.SQLCode <> 0 THEN
  713. arg_s_import.cusid = ll_dfcusid
  714. END IF
  715. SELECT banktypeid
  716. INTO :arg_s_import.banktypeid
  717. FROM cw_banktype
  718. Where banktypename = :arg_s_import.banktype;
  719. IF sqlca.SQLCode <> 0 THEN
  720. arg_s_import.banktypeid = ll_dfbanktypeid
  721. END IF
  722. //SELECT mtrlid
  723. // INTO :arg_s_import.mtrlid
  724. // FROM eb_import_mtrlname
  725. // WHERE im_type = 5
  726. // And im_id = :arg_s_import.mtrlcode;
  727. //IF sqlca.SQLCode <> 0 THEN
  728. // arg_s_import.mtrlid = ll_dfmtrlid
  729. //END IF
  730. uf_fill_mtrl(arg_s_import)
  731. end subroutine
  732. public subroutine uf_fill (ref s_saletask_import arg_s_import);
  733. SELECT moneyid
  734. INTO :arg_s_import.moneyid
  735. FROM cw_currency
  736. Where Name = :arg_s_import.moneyname;
  737. IF sqlca.SQLCode <> 0 THEN
  738. arg_s_import.moneyid = 0
  739. END IF
  740. SELECT typeid
  741. INTO :arg_s_import.typeid
  742. FROM u_saletype
  743. Where typename = :arg_s_import.tasktype;
  744. IF sqlca.SQLCode <> 0 THEN
  745. arg_s_import.typeid = 0
  746. END IF
  747. IF Pos(arg_s_import.level_str, '最高') > 0 Or Pos(arg_s_import.level_str, '0') > 0 THEN
  748. arg_s_import.Level = 0
  749. ELSEIF Pos(arg_s_import.level_str, '较高') > 0 Or Pos(arg_s_import.level_str, '1') > 0 THEN
  750. arg_s_import.Level = 1
  751. ELSEIF Pos(arg_s_import.level_str, '普通') > 0 Or Pos(arg_s_import.level_str, '2') > 0 THEN
  752. arg_s_import.Level = 2
  753. ELSEIF Pos(arg_s_import.level_str, '较低') > 0 Or Pos(arg_s_import.level_str, '3') > 0 THEN
  754. arg_s_import.Level = 3
  755. ELSEIF Pos(arg_s_import.level_str, '最低') > 0 Or Pos(arg_s_import.level_str, '4') > 0 THEN
  756. arg_s_import.Level = 4
  757. END IF
  758. SELECT cusid
  759. INTO :arg_s_import.cusid
  760. FROM u_cust
  761. Where cuscode = :arg_s_import.cuscode;
  762. IF sqlca.SQLCode <> 0 THEN
  763. arg_s_import.cusid = 0
  764. END IF
  765. SELECT banktypeid
  766. INTO :arg_s_import.banktypeid
  767. FROM cw_banktype
  768. Where banktypename = :arg_s_import.banktype;
  769. IF sqlca.SQLCode <> 0 THEN
  770. arg_s_import.banktypeid = 0
  771. END IF
  772. uf_fill_mtrl(arg_s_import)
  773. end subroutine
  774. 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
  775. String ls_msg = ''
  776. Long i,j,k
  777. Long ll_accept_flag
  778. Long ll_taskcnt
  779. String ls_taskcode
  780. s_saletask_import s_import[], s_empty[]
  781. FOR i = 1 To UpperBound(arg_ids)
  782. IF uf_getinfo(arg_im_type, arg_ids[i], s_import[i], arg_msg) <> 1 THEN
  783. rslt = 0
  784. GOTO ext
  785. END IF
  786. NEXT
  787. s_saletask_import_arr bills[], empty_arr
  788. Long cnt = 0
  789. String ls_ids = ''
  790. Long ll_taskid
  791. // 汇总订单
  792. IF arg_im_type = 5 THEN // 淘宝
  793. FOR i = 1 To UpperBound(s_import)
  794. FOR j = 1 To UpperBound(bills)
  795. IF bills[j].mx[1].tid = s_import[i].tid THEN // 根据订单号汇总
  796. EXIT
  797. END IF
  798. NEXT
  799. IF j > UpperBound(bills) THEN
  800. cnt++
  801. bills[cnt] = empty_arr
  802. bills[cnt].arg_ifpricelist = (arg_priceflag = 1)
  803. bills[cnt].mx[1] = s_import[i]
  804. ELSE
  805. k = UpperBound(bills[j].mx) + 1
  806. bills[j].mx[k] = s_import[i]
  807. END IF
  808. NEXT
  809. ELSE
  810. FOR i = 1 To UpperBound(s_import)
  811. FOR j = 1 To UpperBound(bills)
  812. IF bills[j].mx[1].cusid = s_import[i].cusid &
  813. And bills[j].mx[1].relcode = s_import[i].relcode &
  814. And bills[j].mx[1].cus_address = s_import[i].cus_address &
  815. And bills[j].mx[1].rel_rep = s_import[i].rel_rep &
  816. And bills[j].mx[1].cus_tele = s_import[i].cus_tele THEN // 根据客户汇总
  817. EXIT
  818. END IF
  819. NEXT
  820. IF j > UpperBound(bills) THEN
  821. cnt++
  822. bills[cnt] = empty_arr
  823. bills[cnt].arg_ifpricelist = (arg_priceflag = 1)
  824. bills[cnt].mx[1] = s_import[i]
  825. ELSE
  826. k = UpperBound(bills[j].mx) + 1
  827. bills[j].mx[k] = s_import[i]
  828. END IF
  829. NEXT
  830. END IF
  831. Long ll_ok
  832. // 生成订单
  833. FOR i = 1 To UpperBound(bills)
  834. ll_ok = 1
  835. // 检查
  836. ls_ids = ''
  837. FOR j = 1 To UpperBound(bills[i].mx)
  838. IF j = 1 THEN
  839. ls_ids = bills[i].mx[j].im_id
  840. ELSE
  841. ls_ids += ',' + bills[i].mx[j].im_id
  842. END IF
  843. SELECT accept_flag, taskcode
  844. INTO :ll_accept_flag, :ls_taskcode
  845. FROM eb_saletask_import
  846. WHERE (im_type = :arg_im_type)
  847. And (im_id = :bills[i].mx[j].im_id);
  848. IF sqlca.SQLCode <> 0 THEN
  849. rslt = 0
  850. arg_msg = bills[i].mx[j].im_id + '查询临时订单接受信息失败,' + sqlca.SQLErrText
  851. ll_ok = 0
  852. ls_msg += arg_msg + '~r~n'
  853. GOTO _next
  854. END IF
  855. IF ll_accept_flag = 1 THEN
  856. SELECT COUNT(0)
  857. INTO :ll_taskcnt
  858. FROM u_saletask
  859. Where taskcode = :ls_taskcode;
  860. IF sqlca.SQLCode <> 0 THEN
  861. rslt = 0
  862. arg_msg = bills[i].mx[j].im_id + '查询是否存在旧订单失败,' + sqlca.SQLErrText
  863. ll_ok = 0
  864. ls_msg += arg_msg + '~r~n'
  865. GOTO _next
  866. END IF
  867. IF ll_taskcnt > 0 THEN
  868. rslt = 0
  869. arg_msg = bills[i].mx[j].im_id + '已经生成订单['+ls_taskcode+']不能再接受,请删除旧订单'
  870. ll_ok = 0
  871. ls_msg += arg_msg + '~r~n'
  872. GOTO _next
  873. END IF
  874. END IF
  875. UPDATE eb_saletask_import
  876. SET accept_flag = 1,
  877. accept_emp = :publ_operator,
  878. accept_date = GETDATE(),
  879. acptcnt = acptcnt + 1
  880. WHERE im_type = :arg_im_type
  881. And im_id = :bills[i].mx[j].im_id;
  882. IF sqlca.SQLCode <> 0 THEN
  883. rslt = 0
  884. arg_msg = bills[i].mx[j].im_id + '更新接受标记失败,' + sqlca.SQLErrText
  885. ll_ok = 0
  886. ls_msg += arg_msg + '~r~n'
  887. GOTO _next
  888. END IF
  889. IF sqlca.SQLNRows = 0 THEN
  890. rslt = 0
  891. arg_msg = bills[i].mx[j].im_id + '临时订单已经被删除,请刷新后再试~r~n'
  892. ll_ok = 0
  893. ls_msg += arg_msg + '~r~n'
  894. GOTO _next
  895. END IF
  896. NEXT
  897. ls_taskcode = ''
  898. IF uo_saletask_spi.uf_save_saletask(arg_scid, bills[i], Ref ll_taskid, Ref ls_taskcode, Ref arg_msg, False) <> 1 THEN
  899. rslt = 0
  900. ll_ok = 0
  901. ls_msg += arg_msg + '~r~n'
  902. GOTO _next
  903. END IF
  904. FOR j = 1 To UpperBound(bills[i].mx)
  905. UPDATE eb_saletask_import
  906. SET taskcode = :ls_taskcode
  907. WHERE im_type = :arg_im_type
  908. And im_id = :bills[i].mx[j].im_id;
  909. IF sqlca.SQLCode <> 0 THEN
  910. rslt = 0
  911. arg_msg = bills[i].mx[j].im_id + '更新订单号失败,' + sqlca.SQLErrText
  912. ll_ok = 0
  913. ls_msg += arg_msg + '~r~n'
  914. GOTO _next
  915. END IF
  916. NEXT
  917. // arrcnt++
  918. // arr_scid[arrcnt] = arg_scid
  919. // arr_taskid[arrcnt] = ll_taskid
  920. // arr_taskcode[arrcnt] = ls_taskcode
  921. ls_msg += ls_ids + '成功生成订单['+ls_taskcode+']'
  922. COMMIT;
  923. IF arg_audit = 1 THEN
  924. IF uo_saletask_spi.uf_audit_saletask(arg_scid, ll_taskid, Ref arg_msg, False) <> 1 THEN
  925. rslt = 0
  926. ll_ok = 0
  927. ls_msg += ',但审核失败,' + arg_msg + '~r~n'
  928. GOTO _next
  929. END IF
  930. ls_msg += ',并审核成功'
  931. END IF
  932. ls_msg += '~r~n'
  933. _next:
  934. IF ll_ok = 1 THEN
  935. COMMIT;
  936. ELSE
  937. ROLLBACK;
  938. END IF
  939. NEXT
  940. //IF arg_audit = 1 THEN
  941. // FOR i = 1 To UpperBound(arr_scid)
  942. // ll_ok = 1
  943. //
  944. // IF uo_saletask_spi.uf_audit_saletask(arr_scid[i], arr_taskid[i], Ref arg_msg, False) <> 1 THEN
  945. // rslt = 0
  946. // ll_ok = 0
  947. // ls_msg += arr_taskcode[i] + '审核失败,' + arg_msg + '~r~n'
  948. // GOTO _nexta
  949. // END IF
  950. //
  951. // _nexta:
  952. // IF ll_ok = 1 THEN
  953. // COMMIT;
  954. // ELSE
  955. // ROLLBACK;
  956. // END IF
  957. //
  958. // NEXT
  959. //END IF
  960. ext:
  961. arg_msg = ls_msg
  962. IF rslt = 1 THEN
  963. COMMIT;
  964. ELSE
  965. ROLLBACK;
  966. END IF
  967. RETURN rslt
  968. end function
  969. 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
  970. Long ll_cnt
  971. Long ll_accept_flag
  972. String ls_taskcode
  973. Long ll_taskcnt
  974. Decimal ls_1stnewprice = 0
  975. Decimal ls_1stzqrate = 0
  976. s_saletask_import arg_s_import
  977. SELECT accept_flag, taskcode, moneyid, cusid, mtrlid, status, woodcode, pcode, typeid, mrate, unit
  978. 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
  979. FROM eb_saletask_import
  980. WHERE (im_type = :arg_im_type)
  981. And (im_id = :arg_im_id);
  982. IF sqlca.SQLCode <> 0 THEN
  983. rslt = 0
  984. arg_msg = '查询临时订单接受信息失败,' + sqlca.SQLErrText
  985. GOTO ext
  986. END IF
  987. IF ll_accept_flag = 1 THEN
  988. SELECT COUNT(0)
  989. INTO :ll_taskcnt
  990. FROM u_saletask
  991. Where taskcode = :ls_taskcode;
  992. IF sqlca.SQLCode <> 0 THEN
  993. rslt = 0
  994. arg_msg = '查询是否存在旧订单失败,' + sqlca.SQLErrText
  995. GOTO ext
  996. END IF
  997. IF ll_taskcnt > 0 THEN
  998. rslt = 0
  999. arg_msg = '已经生成订单['+ls_taskcode+']不能修改,请删除旧订单'
  1000. GOTO ext
  1001. END IF
  1002. END IF
  1003. IF arg_s_import.mrate = 0 THEN
  1004. rslt = 0
  1005. arg_msg = '汇率为0'
  1006. GOTO ext
  1007. END IF
  1008. IF uo_saletask_spi.uof_getprice_saletask(arg_s_import,ls_1stnewprice,ls_1stzqrate,arg_msg) <= 0 THEN
  1009. rslt = 0
  1010. GOTO ext
  1011. END IF
  1012. UPDATE eb_saletask_import
  1013. SET new_price = :ls_1stnewprice,
  1014. new_rebate = :ls_1stzqrate
  1015. WHERE (im_type = :arg_im_type)
  1016. And (im_id = :arg_im_id);
  1017. IF sqlca.SQLCode <> 0 THEN
  1018. rslt = 0
  1019. arg_msg = '更新临时订单最新价与折扣失败,' + sqlca.SQLErrText
  1020. GOTO ext
  1021. END IF
  1022. arg_newprice = ls_1stnewprice
  1023. arg_rebate = ls_1stzqrate
  1024. ext:
  1025. IF arg_ifcommit THEN
  1026. IF rslt = 1 THEN
  1027. COMMIT;
  1028. ELSE
  1029. ROLLBACK;
  1030. END IF
  1031. END IF
  1032. RETURN rslt
  1033. end function
  1034. public subroutine uf_fill_mtrl (ref s_saletask_import arg_s_import);// 查询物料ID,并填写配置
  1035. Int rslt = 1
  1036. String arg_msg
  1037. String ls_mtrlcode
  1038. String ls_dscrpmx2
  1039. ls_mtrlcode = arg_s_import.mtrlcode
  1040. ls_dscrpmx2 = arg_s_import.props
  1041. String props
  1042. Long mx_flag, mtrlid = 0
  1043. String status_name, woodcode_name, pcode_name
  1044. Long status_flag, woodcode_flag, pcode_flag
  1045. String ls_status = '', ls_woodcode = '', ls_pcode = ''
  1046. String ls_pros
  1047. uo_keyvaluecollection lo_keys
  1048. lo_keys = Create uo_keyvaluecollection
  1049. uo_keyvaluecollection lo_pros
  1050. lo_pros = Create uo_keyvaluecollection
  1051. uo_strhelper uo_str
  1052. uo_str = Create uo_strhelper
  1053. SELECT props, mx_flag
  1054. INTO :props, :mx_flag
  1055. FROM eb_import_mtrlname
  1056. WHERE im_type = :arg_s_import.im_type
  1057. And im_id = :ls_mtrlcode;
  1058. IF sqlca.SQLCode <> 0 THEN
  1059. SELECT mtrlid
  1060. INTO :mtrlid
  1061. FROM u_mtrldef
  1062. Where mtrlcode = :ls_mtrlcode;
  1063. IF sqlca.SQLCode <> 0 THEN
  1064. rslt = 0
  1065. GOTO ext
  1066. END IF
  1067. rslt = 1
  1068. GOTO ext
  1069. END IF
  1070. String ls_keyvalues[], ls_keyvalue[]
  1071. Long i
  1072. uo_str.split(ls_dscrpmx2, ";", ls_keyvalues)
  1073. FOR i = 1 To UpperBound(ls_keyvalues)
  1074. uo_str.split(ls_keyvalues[i], ":", ls_keyvalue)
  1075. IF ls_keyvalue[1] <> '' And UpperBound(ls_keyvalue) > 1 THEN
  1076. IF Not lo_keys.uf_haskey(ls_keyvalue[1]) THEN
  1077. lo_keys.uf_add(ls_keyvalue[1], ls_keyvalue[2])
  1078. END IF
  1079. END IF
  1080. NEXT
  1081. uo_str.split(props, ";", ls_keyvalues)
  1082. FOR i = 1 To UpperBound(ls_keyvalues)
  1083. uo_str.split(ls_keyvalues[i], ":", ls_keyvalue)
  1084. IF ls_keyvalue[1] <> '' And UpperBound(ls_keyvalue) > 1 THEN
  1085. IF Not lo_keys.uf_haskey(ls_keyvalue[1]) THEN
  1086. lo_keys.uf_add(ls_keyvalue[1], ls_keyvalue[2])
  1087. END IF
  1088. END IF
  1089. NEXT
  1090. IF mx_flag = 0 THEN
  1091. SELECT mtrlid, status_name, woodcode_name, pcode_name
  1092. INTO :mtrlid, :status_name, :woodcode_name, :pcode_name
  1093. FROM eb_import_mtrlname
  1094. WHERE im_type = :arg_s_import.im_type
  1095. And im_id = :ls_mtrlcode;
  1096. IF sqlca.SQLCode <> 0 THEN
  1097. rslt = 0
  1098. arg_msg = '查询配置映射属性失败,' + sqlca.SQLErrText
  1099. GOTO ext
  1100. END IF
  1101. SELECT statusflag, woodcodeflag, pcodeflag
  1102. INTO :status_flag, :woodcode_flag, :pcode_flag
  1103. FROM u_mtrldef
  1104. Where mtrlid = :mtrlid;
  1105. IF sqlca.SQLCode <> 0 THEN
  1106. rslt = 0
  1107. arg_msg = '查询物料配置选项失败,' + sqlca.SQLErrText
  1108. GOTO ext
  1109. END IF
  1110. IF status_flag <> 3 And status_name <> '' THEN
  1111. ls_status = lo_keys.uf_getvalue(status_name)
  1112. IF IsNull(ls_status) THEN ls_status = ''
  1113. END IF
  1114. IF woodcode_flag <> 3 And woodcode_name <> '' THEN
  1115. ls_woodcode = lo_keys.uf_getvalue(woodcode_name)
  1116. IF IsNull(ls_woodcode) THEN ls_woodcode = ''
  1117. END IF
  1118. IF pcode_flag <> 3 And pcode_name <> '' THEN
  1119. ls_pcode = lo_keys.uf_getvalue(pcode_name)
  1120. IF IsNull(ls_pcode) THEN ls_pcode = ''
  1121. END IF
  1122. ELSE
  1123. DECLARE cur1 CURSOR FOR SELECT pros
  1124. FROM eb_import_mtrlnamemx
  1125. WHERE im_type = :arg_s_import.im_type
  1126. And im_id = :ls_mtrlcode;
  1127. OPEN cur1;
  1128. FETCH cur1 Into :ls_pros;
  1129. DO WHILE sqlca.SQLCode = 0
  1130. uo_str.split(ls_pros, ";", ls_keyvalues)
  1131. FOR i = 1 To UpperBound(ls_keyvalues)
  1132. uo_str.split(ls_keyvalues[i], ":", ls_keyvalue)
  1133. IF ls_keyvalue[1] <> '' And UpperBound(ls_keyvalue) > 1 THEN
  1134. IF Not lo_pros.uf_haskey(ls_keyvalue[1]) THEN
  1135. lo_pros.uf_add(ls_keyvalue[1], ls_keyvalue[2])
  1136. END IF
  1137. END IF
  1138. NEXT
  1139. IF lo_keys.uf_include(lo_pros) THEN GOTO _close
  1140. lo_pros.uf_clear()
  1141. ls_pros = ''
  1142. FETCH cur1 Into :ls_pros;
  1143. LOOP
  1144. _close:
  1145. CLOSE cur1;
  1146. IF IsNull(ls_pros) THEN
  1147. rslt = 0
  1148. GOTO ext
  1149. END IF
  1150. IF ls_pros = '' THEN
  1151. rslt = 0
  1152. GOTO ext
  1153. END IF
  1154. SELECT mtrlid, status_name, woodcode_name, pcode_name
  1155. INTO :mtrlid, :status_name, :woodcode_name, :pcode_name
  1156. FROM eb_import_mtrlnamemx
  1157. WHERE im_type = :arg_s_import.im_type
  1158. AND im_id = :ls_mtrlcode
  1159. And pros = :ls_pros;
  1160. IF sqlca.SQLCode <> 0 THEN
  1161. rslt = 0
  1162. arg_msg = '查询配置映射属性失败,' + sqlca.SQLErrText
  1163. GOTO ext
  1164. END IF
  1165. SELECT statusflag, woodcodeflag, pcodeflag
  1166. INTO :status_flag, :woodcode_flag, :pcode_flag
  1167. FROM u_mtrldef
  1168. Where mtrlid = :mtrlid;
  1169. IF sqlca.SQLCode <> 0 THEN
  1170. rslt = 0
  1171. arg_msg = '查询物料配置选项失败,' + sqlca.SQLErrText
  1172. GOTO ext
  1173. END IF
  1174. IF status_flag <> 3 And status_name <> '' THEN
  1175. ls_status = lo_keys.uf_getvalue(status_name)
  1176. IF IsNull(ls_status) THEN ls_status = ''
  1177. END IF
  1178. IF woodcode_flag <> 3 And woodcode_name <> '' THEN
  1179. ls_woodcode = lo_keys.uf_getvalue(woodcode_name)
  1180. IF IsNull(ls_woodcode) THEN ls_woodcode = ''
  1181. END IF
  1182. IF pcode_flag <> 3 And pcode_name <> '' THEN
  1183. ls_pcode = lo_keys.uf_getvalue(pcode_name)
  1184. IF IsNull(ls_pcode) THEN ls_pcode = ''
  1185. END IF
  1186. END IF
  1187. ext:
  1188. Destroy lo_keys
  1189. Destroy lo_pros
  1190. Destroy uo_str
  1191. IF rslt = 1 THEN
  1192. arg_s_import.mtrlid = mtrlid
  1193. arg_s_import.status = ls_status
  1194. arg_s_import.woodcode = ls_woodcode
  1195. arg_s_import.pcode = ls_pcode
  1196. ELSE
  1197. arg_s_import.mtrlid = 0
  1198. arg_s_import.status = ''
  1199. arg_s_import.woodcode = ''
  1200. arg_s_import.pcode = ''
  1201. END IF
  1202. end subroutine
  1203. public function integer uf_csv_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg);Int rslt = 1
  1204. String ls_dscrp
  1205. IF Not FileExists(arg_filepath) THEN
  1206. rslt = 0
  1207. arg_msg = '文件' + arg_filepath + '不存在'
  1208. GOTO ext
  1209. END IF
  1210. Long ll_pos, ll_pos2
  1211. ll_pos = Pos(arg_filepath, '\')
  1212. IF ll_pos > 0 THEN
  1213. ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1)
  1214. DO WHILE ll_pos2 > 0
  1215. ll_pos = ll_pos2
  1216. ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1)
  1217. LOOP
  1218. ls_dscrp = Mid(arg_filepath, ll_pos + 1)
  1219. ELSE
  1220. ls_dscrp = arg_filepath
  1221. END IF
  1222. datastore ds_col100
  1223. /////////////建立映射//////////////////// //
  1224. ds_col100 = Create datastore
  1225. ds_col100.DataObject = 'dw_col100'
  1226. ds_col100.ImportFile(CSV!, arg_filepath)
  1227. datastore arg_dw
  1228. arg_dw = Create datastore
  1229. arg_dw.DataObject = 'dw_saletask_import_xls_taobao'
  1230. Long ll_s_col_count = 100
  1231. Long ll_d_col_count
  1232. ll_d_col_count = Long(arg_dw.Object.datawindow.Column.Count)
  1233. Long ll_map[] // 目标表与原表的映射,0为没有映射
  1234. String ls_colType[] // 目标表列类型
  1235. Long col_d, col_s
  1236. FOR col_d = 1 To ll_d_col_count
  1237. String ls_col_title, ls_col_name
  1238. ls_col_name = arg_dw.Describe('#' + String(col_d) + '.Name')
  1239. ls_colType[col_d] = arg_dw.Describe('#' + String(col_d) + '.ColType')
  1240. ls_col_title = arg_dw.Describe(ls_col_name + '_t.Text')
  1241. ll_map[col_d] = 0
  1242. FOR col_s = 1 To ll_s_col_count
  1243. String ls_s_title
  1244. ls_s_title = ds_col100.GetItemString(1, col_s)
  1245. IF Lower(Trim(ls_col_title)) = Lower(Trim(ls_s_title)) THEN
  1246. ll_map[col_d] = col_s
  1247. EXIT
  1248. END IF
  1249. NEXT
  1250. NEXT
  1251. Long row_s, row_d
  1252. String ls_lastmtrlcode = ''
  1253. FOR row_s = 2 To ds_col100.RowCount( )
  1254. 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
  1255. row_d = arg_dw.InsertRow(0)
  1256. ELSE
  1257. ls_lastmtrlcode = Trim(ds_col100.GetItemString(row_s - 1, 3),True)
  1258. IF ls_lastmtrlcode <> '-' THEN
  1259. IF arg_dw.RowsCopy(row_d, row_d, Primary!, arg_dw, row_d + 1, Primary!) = 1 THEN
  1260. row_d++
  1261. arg_dw.Object.trans_amt[row_d] = 0
  1262. END IF
  1263. END IF
  1264. END IF
  1265. FOR col_d = 1 To ll_d_col_count
  1266. IF ll_map[col_d] = 0 THEN CONTINUE
  1267. Any Value
  1268. String ls_value
  1269. ls_value = Trim(ds_col100.GetItemString(row_s, ll_map[col_d]),True)
  1270. IF ls_value = '' Or ls_value = '-' THEN CONTINUE
  1271. IF Lower(Left(ls_colType[col_d], 4)) = 'char' THEN
  1272. Value = ls_value
  1273. 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
  1274. Value = Long(ls_value)
  1275. ELSEIF Lower(Left(ls_colType[col_d], 4)) = 'deci' Or Lower(Left(ls_colType[col_d], 4)) = 'real' THEN
  1276. Value = Dec(ls_value)
  1277. ELSEIF Lower(Left(ls_colType[col_d], 4)) = 'date' THEN
  1278. Value = DateTime(Date(Left(ls_value, 10)), Time(Mid(ls_value, 12)))
  1279. END IF
  1280. arg_dw.SetItem(row_d, col_d, Value)
  1281. NEXT
  1282. NEXT
  1283. Destroy ds_col100
  1284. Long i
  1285. s_saletask_import s_empty
  1286. String ls_lastid = ''
  1287. Long ll_cnt = 0
  1288. FOR i = 1 To arg_dw.RowCount()
  1289. arg_import[i] = s_empty
  1290. arg_import[i].im_type = 0
  1291. arg_import[i].moneyname = arg_dw.Object.moneyname[i]
  1292. arg_import[i].mrate = arg_dw.Object.mrate[i]
  1293. arg_import[i].taskdate = arg_dw.Object.taskdate[i]
  1294. arg_import[i].tasktype = arg_dw.Object.tasktype[i]
  1295. arg_import[i].cuscode = arg_dw.Object.cuscode[i]
  1296. arg_import[i].cusname = arg_dw.Object.cusname[i]
  1297. arg_import[i].level_str = arg_dw.Object.level_str[i]
  1298. arg_import[i].cus_address = arg_dw.Object.cus_address[i]
  1299. arg_import[i].rel_rep = arg_dw.Object.rel_rep[i]
  1300. arg_import[i].cus_tele = arg_dw.Object.cus_tele[i]
  1301. arg_import[i].cus_fax = arg_dw.Object.cus_fax[i]
  1302. arg_import[i].freight = arg_dw.Object.freight[i]
  1303. arg_import[i].freight_tele = arg_dw.Object.freight_tele[i]
  1304. arg_import[i].assign_emp = arg_dw.Object.assign_emp[i]
  1305. arg_import[i].upname = arg_dw.Object.upname[i]
  1306. arg_import[i].banktype = arg_dw.Object.banktype[i]
  1307. arg_import[i].damt = arg_dw.Object.damt[i]
  1308. arg_import[i].relcode = arg_dw.Object.relcode[i]
  1309. arg_import[i].paytype = arg_dw.Object.paytype[i]
  1310. arg_import[i].otheramt = arg_dw.Object.otheramt[i]
  1311. arg_import[i].dscrp2 = arg_dw.Object.dscrp2[i]
  1312. arg_import[i].dscrp = ls_dscrp
  1313. arg_import[i].dscrp3 = arg_dw.Object.dscrp3[i]
  1314. arg_import[i].outtypestr = arg_dw.Object.outtypestr[i]
  1315. arg_import[i].mtrlcode = arg_dw.Object.mtrlcode[i]
  1316. arg_import[i].mtrlname = arg_dw.Object.mtrlname[i]
  1317. arg_import[i].unit = arg_dw.Object.unit[i]
  1318. arg_import[i].saleqty = arg_dw.Object.saleqty[i]
  1319. arg_import[i].pricetype = arg_dw.Object.pricetype[i]
  1320. IF arg_dw.Object.trans_amt[i] > 0 THEN
  1321. 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]
  1322. ELSE
  1323. arg_import[i].enprice = arg_dw.Object.enprice[i]
  1324. END IF
  1325. arg_import[i].rebate = arg_dw.Object.rebate[i]
  1326. arg_import[i].taxrate = arg_dw.Object.taxrate[i]
  1327. arg_import[i].requiredate = arg_dw.Object.requiredate[i]
  1328. arg_import[i].status = arg_dw.Object.status[i]
  1329. arg_import[i].woodcode = arg_dw.Object.woodcode[i]
  1330. arg_import[i].pcode = arg_dw.Object.pcode[i]
  1331. arg_import[i].mxdscrp = arg_dw.Object.mxdscrp[i]
  1332. arg_import[i].mxdscrp2 = arg_dw.Object.mxdscrp2[i]
  1333. arg_import[i].mtrlcuscode = arg_dw.Object.mtrlcuscode[i]
  1334. arg_import[i].im_id = arg_dw.Object.im_id[i]
  1335. arg_import[i].trade_status = arg_dw.Object.trade_status[i]
  1336. arg_import[i].tid = arg_dw.Object.tid[i]
  1337. arg_import[i].props = arg_dw.Object.props[i]
  1338. arg_import[i].trade_no = arg_dw.Object.trade_no[i]
  1339. IF arg_import[i].rebate = 0 THEN arg_import[i].rebate = 1
  1340. IF arg_import[i].mrate = 0 THEN arg_import[i].mrate = 1
  1341. IF IsNull(arg_import[i].relcode) Or arg_import[i].relcode = '' THEN
  1342. IF IsNull(arg_import[i].im_id) Or arg_import[i].im_id = '' THEN
  1343. arg_import[i].relcode = arg_import[i].tid
  1344. ELSE
  1345. arg_import[i].relcode = arg_import[i].im_id
  1346. END IF
  1347. END IF
  1348. IF arg_import[i].im_id = ls_lastid THEN
  1349. ll_cnt ++
  1350. ELSE
  1351. ll_cnt = 0
  1352. END IF
  1353. IF ll_cnt > 0 THEN
  1354. arg_import[i].im_id = arg_import[i].im_id + '-' + String(ll_cnt)
  1355. END IF
  1356. ls_lastid = arg_dw.Object.im_id[i]
  1357. uf_fill(arg_import[i])
  1358. NEXT
  1359. Destroy arg_dw
  1360. ext:
  1361. RETURN rslt
  1362. end function
  1363. public function integer uf_xml_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg);Int rslt = 1
  1364. pbdom_builder builder
  1365. pbdom_document doc
  1366. pbdom_element root
  1367. SetNull(builder)
  1368. SetNull(doc)
  1369. SetNull(root)
  1370. IF Not FileExists(arg_filepath) THEN
  1371. rslt = 0
  1372. arg_msg = '文件' + arg_filepath + '不存在'
  1373. GOTO ext
  1374. END IF
  1375. builder = Create pbdom_builder
  1376. doc = builder.buildfromfile(arg_filepath)
  1377. root = doc.getrootelement()
  1378. pbdom_element cur
  1379. s_saletask_import ls_task
  1380. cur = root.getchildelement('币种')
  1381. IF Not IsNull(cur) THEN
  1382. ls_task.moneyname = cur.GetTextTrim()
  1383. END IF
  1384. cur = root.getchildelement('汇率')
  1385. IF Not IsNull(cur) THEN
  1386. ls_task.mrate = Dec(cur.GetTextTrim())
  1387. END IF
  1388. cur = root.getchildelement('订单日期')
  1389. IF Not IsNull(cur) THEN
  1390. ls_task.taskdate = DateTime(Date(cur.gettexttrim()))
  1391. END IF
  1392. cur = root.getchildelement('交货日期')
  1393. IF Not IsNull(cur) THEN
  1394. ls_task.requiredate = DateTime(Date(cur.gettexttrim()))
  1395. END IF
  1396. cur = root.getchildelement('分类')
  1397. IF Not IsNull(cur) THEN
  1398. ls_task.tasktype = cur.gettexttrim()
  1399. END IF
  1400. cur = root.getchildelement('客户编号')
  1401. IF Not IsNull(cur) THEN
  1402. ls_task.cuscode = cur.gettexttrim()
  1403. END IF
  1404. cur = root.getchildelement('客户名称')
  1405. IF Not IsNull(cur) THEN
  1406. ls_task.cusname = cur.gettexttrim()
  1407. END IF
  1408. cur = root.getchildelement('优先级')
  1409. IF Not IsNull(cur) THEN
  1410. ls_task.level_str = cur.gettexttrim()
  1411. END IF
  1412. cur = root.getchildelement('客户地址')
  1413. IF Not IsNull(cur) THEN
  1414. ls_task.cus_address = cur.gettexttrim()
  1415. END IF
  1416. cur = root.getchildelement('联系人')
  1417. IF Not IsNull(cur) THEN
  1418. ls_task.rel_rep = cur.gettexttrim()
  1419. END IF
  1420. cur = root.getchildelement('客户电话')
  1421. IF Not IsNull(cur) THEN
  1422. ls_task.cus_tele = cur.gettexttrim()
  1423. END IF
  1424. cur = root.getchildelement('货运部')
  1425. IF Not IsNull(cur) THEN
  1426. ls_task.freight = cur.gettexttrim()
  1427. END IF
  1428. cur = root.getchildelement('电话')
  1429. IF Not IsNull(cur) THEN
  1430. ls_task.freight_tele = cur.gettexttrim()
  1431. END IF
  1432. cur = root.getchildelement('业务员')
  1433. IF Not IsNull(cur) THEN
  1434. ls_task.assign_emp = cur.gettexttrim()
  1435. END IF
  1436. cur = root.getchildelement('结算方式')
  1437. IF Not IsNull(cur) THEN
  1438. ls_task.banktype = cur.gettexttrim()
  1439. END IF
  1440. cur = root.getchildelement('订金')
  1441. IF Not IsNull(cur) THEN
  1442. ls_task.damt = Dec(cur.gettexttrim())
  1443. END IF
  1444. cur = root.getchildelement('相关号码')
  1445. IF Not IsNull(cur) THEN
  1446. ls_task.relcode = cur.gettexttrim()
  1447. END IF
  1448. cur = root.getchildelement('交货方式')
  1449. IF Not IsNull(cur) THEN
  1450. ls_task.paytype = cur.gettexttrim()
  1451. END IF
  1452. cur = root.getchildelement('优惠金额')
  1453. IF Not IsNull(cur) THEN
  1454. ls_task.otheramt = Dec(cur.gettexttrim())
  1455. END IF
  1456. cur = root.getchildelement('生产备注')
  1457. IF Not IsNull(cur) THEN
  1458. ls_task.dscrp2 = cur.gettexttrim()
  1459. END IF
  1460. cur = root.getchildelement('备注')
  1461. IF Not IsNull(cur) THEN
  1462. ls_task.dscrp = cur.gettexttrim()
  1463. END IF
  1464. Long ll_num = 1
  1465. Long i = 0
  1466. i = upperbound(arg_import)
  1467. pbdom_element curmx
  1468. cur = root.getchildelement('产品' + String(ll_num))
  1469. DO WHILE Not IsNull(cur)
  1470. i++
  1471. arg_import[i] = ls_task
  1472. arg_import[i].im_type = 0
  1473. curmx = cur.getchildelement('产品编号')
  1474. IF Not IsNull(curmx) THEN
  1475. arg_import[i].mtrlcode = curmx.gettexttrim()
  1476. END IF
  1477. curmx = cur.getchildelement('产品名称')
  1478. IF Not IsNull(curmx) THEN
  1479. arg_import[i].mtrlname = curmx.gettexttrim()
  1480. END IF
  1481. curmx = cur.getchildelement('配置')
  1482. IF Not IsNull(curmx) THEN
  1483. arg_import[i].status = curmx.gettexttrim()
  1484. END IF
  1485. curmx = cur.getchildelement('配置1')
  1486. IF Not IsNull(curmx) THEN
  1487. arg_import[i].woodcode = curmx.gettexttrim()
  1488. END IF
  1489. curmx = cur.getchildelement('配置2')
  1490. IF Not IsNull(curmx) THEN
  1491. arg_import[i].pcode = curmx.gettexttrim()
  1492. END IF
  1493. curmx = cur.getchildelement('单位')
  1494. IF Not IsNull(curmx) THEN
  1495. arg_import[i].unit = curmx.gettexttrim()
  1496. END IF
  1497. curmx = cur.getchildelement('数量')
  1498. IF Not IsNull(curmx) THEN
  1499. arg_import[i].saleqty = Dec(curmx.gettexttrim())
  1500. END IF
  1501. curmx = cur.getchildelement('单价')
  1502. IF Not IsNull(curmx) THEN
  1503. arg_import[i].enprice = Dec(curmx.gettexttrim())
  1504. END IF
  1505. curmx = cur.getchildelement('折扣')
  1506. IF Not IsNull(curmx) THEN
  1507. arg_import[i].rebate = Dec(curmx.gettexttrim())
  1508. END IF
  1509. curmx = cur.getchildelement('交货日期')
  1510. IF Not IsNull(curmx) THEN
  1511. arg_import[i].requiredate = DateTime(Date(curmx.gettexttrim()))
  1512. END IF
  1513. curmx = cur.getchildelement('明细备注')
  1514. IF Not IsNull(curmx) THEN
  1515. arg_import[i].mxdscrp = curmx.gettexttrim()
  1516. END IF
  1517. uf_fill(arg_import[i])
  1518. ll_num++
  1519. cur = root.getchildelement('产品' + String(ll_num))
  1520. LOOP
  1521. ext:
  1522. IF Not IsNull(doc) THEN
  1523. Destroy doc
  1524. END IF
  1525. IF Not IsNull(builder) THEN
  1526. Destroy builder
  1527. END IF
  1528. RETURN rslt
  1529. end function
  1530. public function integer uf_xls_to_import_sny (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg);Int rslt = 1
  1531. datastore arg_dw
  1532. arg_dw = Create datastore
  1533. arg_dw.DataObject = 'dw_saletask_import_xls_taobao1'
  1534. IF f_xls_import_to_dw(arg_filepath, arg_dw, arg_msg) <> 1 THEN
  1535. rslt = 0
  1536. GOTO ext
  1537. END IF
  1538. String ls_dscrp
  1539. Long ll_pos, ll_pos2
  1540. ll_pos = Pos(arg_filepath, '\')
  1541. IF ll_pos > 0 THEN
  1542. ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1)
  1543. DO WHILE ll_pos2 > 0
  1544. ll_pos = ll_pos2
  1545. ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1)
  1546. LOOP
  1547. ls_dscrp = Mid(arg_filepath, ll_pos + 1)
  1548. ELSE
  1549. ls_dscrp = arg_filepath
  1550. END IF
  1551. Long i
  1552. string ls_lastid = ''
  1553. long ll_cnt = 0
  1554. s_saletask_import s_empty
  1555. FOR i = 1 To arg_dw.RowCount()
  1556. arg_import[i] = s_empty
  1557. arg_import[i].im_type = 0
  1558. arg_import[i].moneyname = arg_dw.Object.moneyname[i]
  1559. arg_import[i].mrate = arg_dw.Object.mrate[i]
  1560. arg_import[i].taskdate = arg_dw.Object.taskdate[i]
  1561. arg_import[i].tasktype = arg_dw.Object.tasktype[i]
  1562. arg_import[i].cuscode = arg_dw.Object.cuscode[i]
  1563. arg_import[i].cusname = arg_dw.Object.cusname[i]
  1564. arg_import[i].level_str = arg_dw.Object.level_str[i]
  1565. arg_import[i].cus_address = arg_dw.Object.cus_address[i]
  1566. arg_import[i].rel_rep = arg_dw.Object.rel_rep[i]
  1567. arg_import[i].cus_tele = arg_dw.Object.cus_tele[i]
  1568. arg_import[i].cus_fax = arg_dw.Object.cus_fax[i]
  1569. arg_import[i].freight = arg_dw.Object.freight[i]
  1570. arg_import[i].freight_tele = arg_dw.Object.freight_tele[i]
  1571. arg_import[i].assign_emp = arg_dw.Object.assign_emp[i]
  1572. arg_import[i].upname = arg_dw.Object.upname[i]
  1573. arg_import[i].banktype = arg_dw.Object.banktype[i]
  1574. arg_import[i].damt = arg_dw.Object.damt[i]
  1575. arg_import[i].relcode = arg_dw.Object.relcode[i]
  1576. arg_import[i].paytype = arg_dw.Object.paytype[i]
  1577. arg_import[i].otheramt = arg_dw.Object.otheramt[i]
  1578. arg_import[i].dscrp2 = arg_dw.Object.dscrp2[i]
  1579. arg_import[i].dscrp = ls_dscrp
  1580. arg_import[i].dscrp3 = arg_dw.Object.dscrp3[i]
  1581. arg_import[i].outtypestr = arg_dw.Object.outtypestr[i]
  1582. arg_import[i].mtrlcode = arg_dw.Object.mtrlcode[i]
  1583. arg_import[i].mtrlname = arg_dw.Object.mtrlname[i]
  1584. arg_import[i].unit = arg_dw.Object.unit[i]
  1585. arg_import[i].saleqty = arg_dw.Object.saleqty[i]
  1586. arg_import[i].pricetype = arg_dw.Object.pricetype[i]
  1587. IF arg_dw.Object.trans_amt[i] > 0 THEN
  1588. 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]
  1589. ELSE
  1590. arg_import[i].enprice = arg_dw.Object.enprice[i]
  1591. END IF
  1592. arg_import[i].rebate = arg_dw.Object.rebate[i]
  1593. arg_import[i].taxrate = arg_dw.Object.taxrate[i]
  1594. arg_import[i].requiredate = arg_dw.Object.requiredate[i]
  1595. arg_import[i].status = arg_dw.Object.status[i]
  1596. arg_import[i].woodcode = arg_dw.Object.woodcode[i]
  1597. arg_import[i].pcode = arg_dw.Object.pcode[i]
  1598. arg_import[i].mxdscrp = arg_dw.Object.mxdscrp[i]
  1599. arg_import[i].mxdscrp2 = arg_dw.Object.mxdscrp2[i]
  1600. arg_import[i].mtrlcuscode = arg_dw.Object.mtrlcuscode[i]
  1601. arg_import[i].im_id = arg_dw.Object.im_id[i]
  1602. arg_import[i].trade_status = arg_dw.Object.trade_status[i]
  1603. arg_import[i].tid = arg_dw.Object.tid[i]
  1604. arg_import[i].props = arg_dw.Object.props[i]
  1605. arg_import[i].trade_no = arg_dw.Object.trade_no[i]
  1606. arg_import[i].trans_amt = arg_dw.Object.trans_amt[i]
  1607. arg_import[i].shortname = arg_dw.Object.shortname[i]
  1608. arg_import[i].shopname = arg_dw.Object.shopname[i]
  1609. arg_import[i].paydate = arg_dw.Object.paydate[i]
  1610. arg_import[i].outdate = arg_dw.Object.outdate[i]
  1611. arg_import[i].transcode = arg_dw.Object.transcode[i]
  1612. arg_import[i].transcom = arg_dw.Object.transcom[i]
  1613. arg_import[i].confirmdate = arg_dw.Object.confirmdate[i]
  1614. arg_import[i].createdate = arg_dw.Object.createdate[i]
  1615. IF arg_import[i].rebate = 0 THEN arg_import[i].rebate = 1
  1616. IF arg_import[i].mrate = 0 THEN arg_import[i].mrate = 1
  1617. IF IsNull(arg_import[i].relcode) Or arg_import[i].relcode = '' THEN
  1618. IF IsNull(arg_import[i].im_id) Or arg_import[i].im_id = '' THEN
  1619. arg_import[i].relcode = arg_import[i].tid
  1620. ELSE
  1621. arg_import[i].relcode = arg_import[i].im_id
  1622. END IF
  1623. END IF
  1624. IF arg_import[i].im_id = ls_lastid THEN
  1625. ll_cnt ++
  1626. ELSE
  1627. ll_cnt = 0
  1628. END IF
  1629. IF ll_cnt > 0 THEN
  1630. arg_import[i].im_id = arg_import[i].im_id + '-' + String(ll_cnt)
  1631. END IF
  1632. ls_lastid = arg_dw.Object.im_id[i]
  1633. uf_fill(arg_import[i])
  1634. NEXT
  1635. ext:
  1636. Destroy arg_dw
  1637. RETURN rslt
  1638. end function
  1639. public function integer uf_xls_to_import (string arg_filepath, ref s_saletask_import arg_import[], ref string arg_msg);Int rslt = 1
  1640. datastore arg_dw
  1641. arg_dw = Create datastore
  1642. arg_dw.DataObject = 'dw_saletask_import_xls'
  1643. IF f_xls_import_to_dw(arg_filepath, arg_dw, arg_msg) <> 1 THEN
  1644. rslt = 0
  1645. GOTO ext
  1646. END IF
  1647. String ls_dscrp
  1648. Long ll_pos, ll_pos2
  1649. ll_pos = Pos(arg_filepath, '\')
  1650. IF ll_pos > 0 THEN
  1651. ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1)
  1652. DO WHILE ll_pos2 > 0
  1653. ll_pos = ll_pos2
  1654. ll_pos2 = Pos(arg_filepath, '\', ll_pos + 1)
  1655. LOOP
  1656. ls_dscrp = Mid(arg_filepath, ll_pos + 1)
  1657. ELSE
  1658. ls_dscrp = arg_filepath
  1659. END IF
  1660. Long i
  1661. s_saletask_import s_empty
  1662. FOR i = 1 To arg_dw.RowCount()
  1663. arg_import[i] = s_empty
  1664. arg_import[i].im_type = 0
  1665. arg_import[i].moneyname = arg_dw.Object.moneyname[i]
  1666. arg_import[i].mrate = arg_dw.Object.mrate[i]
  1667. arg_import[i].taskdate = arg_dw.Object.taskdate[i]
  1668. arg_import[i].tasktype = arg_dw.Object.tasktype[i]
  1669. arg_import[i].cuscode = arg_dw.Object.cuscode[i]
  1670. arg_import[i].cusname = arg_dw.Object.cusname[i]
  1671. arg_import[i].level_str = arg_dw.Object.level_str[i]
  1672. arg_import[i].cus_address = arg_dw.Object.cus_address[i]
  1673. arg_import[i].rel_rep = arg_dw.Object.rel_rep[i]
  1674. arg_import[i].cus_tele = arg_dw.Object.cus_tele[i]
  1675. arg_import[i].cus_fax = arg_dw.Object.cus_fax[i]
  1676. arg_import[i].freight = arg_dw.Object.freight[i]
  1677. arg_import[i].freight_tele = arg_dw.Object.freight_tele[i]
  1678. arg_import[i].assign_emp = arg_dw.Object.assign_emp[i]
  1679. arg_import[i].upname = arg_dw.Object.upname[i]
  1680. arg_import[i].banktype = arg_dw.Object.banktype[i]
  1681. arg_import[i].damt = arg_dw.Object.damt[i]
  1682. arg_import[i].relcode = arg_dw.Object.relcode[i]
  1683. arg_import[i].paytype = arg_dw.Object.paytype[i]
  1684. arg_import[i].otheramt = arg_dw.Object.otheramt[i]
  1685. arg_import[i].dscrp2 = arg_dw.Object.dscrp2[i]
  1686. arg_import[i].dscrp = ls_dscrp
  1687. arg_import[i].dscrp3 = arg_dw.Object.dscrp3[i]
  1688. arg_import[i].outtypestr = arg_dw.Object.outtypestr[i]
  1689. arg_import[i].mtrlcode = arg_dw.Object.mtrlcode[i]
  1690. arg_import[i].mtrlname = arg_dw.Object.mtrlname[i]
  1691. arg_import[i].unit = arg_dw.Object.unit[i]
  1692. arg_import[i].saleqty = arg_dw.Object.saleqty[i]
  1693. arg_import[i].pricetype = arg_dw.Object.pricetype[i]
  1694. arg_import[i].enprice = arg_dw.Object.enprice[i]
  1695. arg_import[i].rebate = arg_dw.Object.rebate[i]
  1696. arg_import[i].taxrate = arg_dw.Object.taxrate[i]
  1697. arg_import[i].requiredate = arg_dw.Object.requiredate[i]
  1698. arg_import[i].status = arg_dw.Object.status[i]
  1699. arg_import[i].woodcode = arg_dw.Object.woodcode[i]
  1700. arg_import[i].pcode = arg_dw.Object.pcode[i]
  1701. arg_import[i].mxdscrp = arg_dw.Object.mxdscrp[i]
  1702. arg_import[i].mxdscrp2 = arg_dw.Object.mxdscrp2[i]
  1703. arg_import[i].mtrlcuscode = arg_dw.Object.mtrlcuscode[i]
  1704. uf_fill(arg_import[i])
  1705. NEXT
  1706. ext:
  1707. Destroy arg_dw
  1708. RETURN rslt
  1709. end function
  1710. 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
  1711. Int rslt = 1
  1712. //uo_cusprice uo_price
  1713. //uo_price = create uo_cusprice
  1714. //
  1715. //If uo_option_price_rmb = -1000 Then
  1716. // arg_msg = '选项:[238]销售单价按人民币单价折算,读取初始默认值失败,操作取消!'
  1717. // rslt = 0
  1718. // Goto ext
  1719. //End If
  1720. //
  1721. //
  1722. //If uo_option_m_msttake = -1000 Then
  1723. // arg_msg = '选项:[045]系统使用多币种应收帐,读取初始默认值失败,操作取消!'
  1724. // rslt = 0
  1725. // Goto ext
  1726. //End If
  1727. //
  1728. //decimal ls_1stnewprice,ls_1stzqrate
  1729. //Decimal ld_saleqty, ld_rebate,ld_enprice,ld_taxrate
  1730. //Long ll_mtrlid
  1731. //String ls_mxdscrp, ls_mxdscrp2, ls_status, ls_woodcode, ls_pcode, ls_mtrlcuscode , ls_outtypestr,ls_pricetype
  1732. //DateTime ldt_requiredate
  1733. //Decimal mrate,ld_fprice,ld_enacprice,ld_acprice
  1734. //Long ll_printid
  1735. //Long ll_i,ll_statusflag
  1736. //Decimal ld_msttakeamt,ld_new_price,ld_plprice,ld_net_weight_f,ld_gross_weight_f,ld_cubage_f
  1737. //Decimal ld_capacity,ld_capacity_zj
  1738. //String ls_pfcode,ls_status_zj,ls_taskcode
  1739. //Long ll_j
  1740. //long ll_moneyid,ll_cusid,ll_typeid
  1741. //s_mtrlcfg_expr s_pz[]
  1742. //
  1743. //Select status,mrate,taskcode,moneyid,cusid,typeid
  1744. // Into :li_status,:mrate,:ls_taskcode,:ll_moneyid,:ll_cusid,:ll_typeid
  1745. // From u_saletask
  1746. // Where scid = :arg_scid
  1747. // And taskid = :arg_taskid;
  1748. //If sqlca.SQLCode <> 0 Then
  1749. // rslt = 0
  1750. // arg_msg = '查询订单状态失败,'+sqlca.SQLErrText
  1751. // Goto ext
  1752. //End If
  1753. //
  1754. //If li_status <> 0 Then
  1755. // rslt = 0
  1756. // arg_msg = '订单只能在待审核状态下才能增加明细'
  1757. // Goto ext
  1758. //End If
  1759. //
  1760. //Select max(printid) Into :ll_printid
  1761. // From u_saletaskmx
  1762. // Where scid = :arg_scid
  1763. // And taskid = :arg_taskid;
  1764. //If sqlca.SQLCode <> 0 Then
  1765. // rslt = 0
  1766. // arg_msg = '查询订单明细最大序号失败,'+sqlca.SQLErrText
  1767. // Goto ext
  1768. //End If
  1769. //
  1770. //For ll_i = 1 To UpperBound(arg_im_id)
  1771. // Select saleqty,
  1772. // mtrlid,
  1773. // mxdscrp,
  1774. // mxdscrp2,
  1775. // rebate,
  1776. // status,
  1777. // woodcode,
  1778. // pcode,
  1779. // mtrlcuscode,
  1780. // enprice,
  1781. // outtypestr,
  1782. // requiredate,
  1783. // pricetype,
  1784. // taxrate,
  1785. // new_price
  1786. // Into :ld_saleqty,
  1787. // :ll_mtrlid,
  1788. // :ls_mxdscrp,
  1789. // :ls_mxdscrp2,
  1790. // :ld_rebate,
  1791. // :ls_status,
  1792. // :ls_woodcode,
  1793. // :ls_pcode,
  1794. // :ls_mtrlcuscode,
  1795. // :ld_enprice,
  1796. // :ls_outtypestr,
  1797. // :ldt_requiredate,
  1798. // :ls_pricetype,
  1799. // :ld_taxrate,
  1800. // :ld_new_price
  1801. // From eb_saletask_import
  1802. // Where im_type = :arg_im_type[ll_i]
  1803. // And im_id = :arg_im_id[ll_i];
  1804. // If sqlca.SQLCode <> 0 Then
  1805. // rslt = 0
  1806. // arg_msg = '查询外部订单信息失败,imtype:'+String(arg_im_type[ll_i])+',im_id:'+String(arg_im_id[ll_i])+'~r~n'+sqlca.SQLErrText
  1807. // Goto ext
  1808. // End If
  1809. //
  1810. // 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
  1811. // ld_enprice = ls_1stnewprice
  1812. // ld_rebate = ls_1stzqrate
  1813. // end if
  1814. //
  1815. // If uo_option_price_rmb = 0 Then
  1816. // ld_fprice = ld_enprice * mrate
  1817. //
  1818. // If mrate = 0 Then
  1819. // ld_enacprice = ld_fprice * ld_rebate
  1820. // Else
  1821. // ld_enacprice = ld_fprice * ld_rebate / mrate
  1822. // End If
  1823. //
  1824. // ld_acprice = ld_fprice * ld_rebate
  1825. //
  1826. // Else
  1827. // ld_fprice = Round(ld_enprice * mrate,2)
  1828. //
  1829. // If mrate = 0 Then
  1830. // ld_enacprice = Round(ld_fprice * ld_rebate,2)
  1831. // Else
  1832. // ld_enacprice = Round(ld_fprice * ld_rebate / mrate,2)
  1833. // End If
  1834. //
  1835. // ld_acprice = Round(ld_fprice * ld_rebate,2)
  1836. //
  1837. // End If
  1838. //
  1839. // If uo_option_m_msttake = 1 Then //使用多币种
  1840. // ld_msttakeamt = ld_msttakeamt + Round(ld_enprice * ld_saleqty * ld_rebate,2)
  1841. // Else // 系统不使用多币种,转换为人民币
  1842. // ld_msttakeamt = ld_msttakeamt + Round(ld_enprice * mrate * ld_saleqty * ld_rebate,2)
  1843. // End If
  1844. //
  1845. // ll_printid++
  1846. //
  1847. // f_get_planprice_mtrl(ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_plprice)
  1848. // ls_pfcode = f_get_dft_pf(ll_mtrlid)
  1849. //
  1850. // f_get_mtrl_weight(ll_mtrlid,ls_status,ld_net_weight_f,ld_gross_weight_f,ld_cubage_f)
  1851. //
  1852. // Select statusflag,capacity
  1853. // Into :ll_statusflag,:ld_capacity
  1854. // From u_mtrldef
  1855. // Where mtrlid = :ll_mtrlid;
  1856. // If sqlca.SQLCode <> 0 Then
  1857. // rslt = 0
  1858. // arg_msg = '查询产品信息失败,mtrlid:'+String(ll_mtrlid) +'~r~n' +sqlca.SQLErrText
  1859. // Goto ext
  1860. // End If
  1861. //
  1862. // If ll_statusflag = 2 And ls_status <> '' Then
  1863. // ld_capacity = 0
  1864. // f_checkpz(ls_status,s_pz[])
  1865. // For ll_j = 1 To UpperBound(s_pz)
  1866. // ls_status_zj = s_pz[ll_j].cfgname
  1867. //
  1868. // Select capacity * capaparm
  1869. // Into :ld_capacity_zj
  1870. // From u_mtrl_configure
  1871. // Where mtrlid = :ll_mtrlid
  1872. // And Name = :ls_status_zj;
  1873. // If sqlca.SQLCode <> 0 Then
  1874. // ld_capacity_zj = 0
  1875. // End If
  1876. //
  1877. // ld_capacity = ld_capacity + ld_capacity_zj * Dec(s_pz[ll_j].qty)
  1878. // Next
  1879. // End If
  1880. //
  1881. // Insert Into u_saletaskmx
  1882. // ( scid,
  1883. // saleqty,
  1884. // price,
  1885. // plprice,
  1886. // mtrlid,
  1887. // taskid,
  1888. // mxdscrp,
  1889. // mxdscrp2,
  1890. // fprice,
  1891. // rebate,
  1892. // status,
  1893. // printid,
  1894. // woodcode,
  1895. // pcode,
  1896. // mtrlcuscode,
  1897. // enprice,
  1898. // outtypestr,
  1899. // dftsaleprice,
  1900. // requiredate,
  1901. // pfcode,
  1902. // pricetype,
  1903. // capacity,
  1904. // nprice,
  1905. // taxrate,
  1906. // enacprice,
  1907. // net_weight,
  1908. // gross_weight,
  1909. // cubage)
  1910. // Values (:arg_scid,
  1911. // :ld_saleqty,
  1912. // :ld_acprice,
  1913. // :ld_plprice,
  1914. // :ll_mtrlid,
  1915. // :arg_taskid,
  1916. // :ls_mxdscrp,
  1917. // :ls_mxdscrp2,
  1918. // :ld_fprice,
  1919. // :ld_rebate,
  1920. // :ls_status,
  1921. // :ll_printid,
  1922. // :ls_woodcode,
  1923. // :ls_pcode,
  1924. // :ls_mtrlcuscode,
  1925. // :ld_enprice,
  1926. // :ls_outtypestr,
  1927. // :ld_enprice,
  1928. // :ldt_requiredate,
  1929. // :ls_pfcode,
  1930. // :ls_pricetype,
  1931. // :ld_capacity,
  1932. // :ld_new_price,
  1933. // :ld_taxrate,
  1934. // :ld_enacprice,
  1935. // :ld_net_weight_f,
  1936. // :ld_gross_weight_f,
  1937. // :ld_cubage_f) ;
  1938. // If sqlca.SQLCode <> 0 Then
  1939. // rslt = 0
  1940. // arg_msg = '增加订单明细失败,'+sqlca.SQLErrText
  1941. // Goto ext
  1942. // End If
  1943. //
  1944. // //更新外部订单已接收信息
  1945. // Update eb_saletask_import
  1946. // Set accept_flag = 1,
  1947. // accept_emp = :publ_operator,
  1948. // accept_date = GETDATE(),
  1949. // acptcnt = acptcnt + 1,
  1950. // taskcode = :ls_taskcode
  1951. // Where im_type = :arg_im_type[ll_i]
  1952. // And im_id = :arg_im_id[ll_i];
  1953. // If sqlca.SQLCode <> 0 Then
  1954. // rslt = 0
  1955. // arg_msg = '更新外部订单已接收状态失败,'+sqlca.SQLErrText
  1956. // Goto ext
  1957. // End If
  1958. //
  1959. //Next
  1960. //
  1961. ////更新订单应收金额,修改人,修改时间
  1962. //Update u_saletask
  1963. // Set msttakeamt = msttakeamt + :ld_msttakeamt,
  1964. // modemp = :publ_operator,
  1965. // moddate = getdate()
  1966. // Where scid = :arg_scid
  1967. // And taskid = :arg_taskid;
  1968. //If sqlca.SQLCode <> 0 Then
  1969. // rslt = 0
  1970. // arg_msg = '更新订单应收金额失败,'+sqlca.SQLErrText
  1971. // Goto ext
  1972. //End If
  1973. //
  1974. //ext:
  1975. //If rslt = 0 Then
  1976. // Rollback;
  1977. //ElseIf rslt = 1 And arg_ifcommit Then
  1978. // Commit;
  1979. //End If
  1980. //
  1981. //destroy uo_price
  1982. Return rslt
  1983. end function
  1984. public function integer uf_accept_taobao (string arg_tid, ref string arg_msg, ref string arg_taskcode);Int rslt = 1
  1985. s_saletask_import_arr curbill
  1986. s_saletask_import mx
  1987. Long i = 0
  1988. DECLARE cur1 CURSOR FOR
  1989. SELECT eb_saletask_import.dscrp, eb_saletask_import.dscrp2, eb_saletask_import.taskdate, eb_saletask_import.damt, eb_saletask_import.otheramt,
  1990. eb_saletask_import.relcode, eb_saletask_import.freight, eb_saletask_import.freight_tele, eb_saletask_import.cus_address, eb_saletask_import.cus_tele,
  1991. eb_saletask_import.cus_fax, eb_saletask_import.rel_rep, eb_saletask_import.dscrp3, eb_saletask_import.im_id, eb_saletask_import.mtrlid,
  1992. eb_saletask_import.saleqty, tb_order.payment / tb_order.num AS enprice, eb_saletask_import.rebate, eb_saletask_import.mxdscrp, eb_saletask_import.mxdscrp2,
  1993. eb_saletask_import.status, eb_saletask_import.woodcode, eb_saletask_import.pcode, eb_saletask_import.mtrlcuscode, eb_saletask_import.outtypestr,
  1994. eb_saletask_import.pricetype, eb_saletask_import.taxrate, eb_saletask_import.accept_flag, eb_saletask_import.taskcode
  1995. FROM eb_saletask_import INNER JOIN
  1996. tb_order ON eb_saletask_import.im_id = tb_order.oid
  1997. WHERE (eb_saletask_import.im_type = 5) AND (eb_saletask_import.tid = :arg_tid)
  1998. AND (eb_saletask_import.trade_status = 'WAIT_SELLER_SEND_GOODS')
  1999. Order By eb_saletask_import.im_id;
  2000. OPEN cur1;
  2001. FETCH cur1 INTO :mx.dscrp,:mx.dscrp2,:mx.taskdate,:mx.damt,:mx.otheramt,:mx.relcode,
  2002. :mx.freight,:mx.freight_tele,:mx.cus_address,:mx.cus_tele,:mx.cus_fax,
  2003. :mx.rel_rep,:mx.dscrp3,:mx.im_id,:mx.mtrlid,:mx.saleqty,:mx.enprice,:mx.rebate,:mx.mxdscrp,
  2004. :mx.mxdscrp2,:mx.status,:mx.woodcode,:mx.pcode,:mx.mtrlcuscode,:mx.outtypestr,
  2005. :mx.pricetype,:mx.taxrate,:mx.accept_flag,:mx.taskcode;
  2006. DO WHILE sqlca.SQLCode = 0
  2007. i++
  2008. curbill.mx[i] = mx
  2009. FETCH cur1 INTO :mx.dscrp,:mx.dscrp2,:mx.taskdate,:mx.damt,:mx.otheramt,:mx.relcode,
  2010. :mx.freight,:mx.freight_tele,:mx.cus_address,:mx.cus_tele,:mx.cus_fax,
  2011. :mx.rel_rep,:mx.dscrp3,:mx.im_id,:mx.mtrlid,:mx.saleqty,:mx.enprice,:mx.rebate,:mx.mxdscrp,
  2012. :mx.mxdscrp2,:mx.status,:mx.woodcode,:mx.pcode,:mx.mtrlcuscode,:mx.outtypestr,
  2013. :mx.pricetype,:mx.taxrate,:mx.accept_flag,:mx.taskcode;
  2014. LOOP
  2015. CLOSE cur1;
  2016. IF i = 0 THEN
  2017. rslt = 0
  2018. arg_msg = '淘宝订单['+arg_tid+']不存在'
  2019. GOTO ext
  2020. END IF
  2021. Long cnt = 0
  2022. FOR i = 1 To UpperBound(curbill.mx)
  2023. mx = curbill.mx[i]
  2024. if mx.cus_address = '' then
  2025. rslt = 0
  2026. arg_msg = '淘宝订单['+arg_tid+']收货地址不能为空'
  2027. goto ext
  2028. end if
  2029. IF mx.accept_flag = 1 THEN
  2030. cnt = 0
  2031. SELECT COUNT(0)
  2032. INTO :cnt
  2033. FROM u_saletask
  2034. Where taskcode = :mx.taskcode;
  2035. IF sqlca.SQLCode <> 0 THEN
  2036. rslt = 0
  2037. arg_msg = '查询ERP订单['+mx.taskcode+']是否存在失败,' + sqlca.SQLErrText
  2038. GOTO ext
  2039. END IF
  2040. IF cnt > 0 THEN
  2041. rslt = 0
  2042. arg_msg = '已生成ERP订单['+mx.taskcode+'],不能重复生成'
  2043. GOTO ext
  2044. END IF
  2045. END IF
  2046. SELECT mtrlcode
  2047. INTO :curbill.mx[i].mtrlcode
  2048. FROM u_mtrldef
  2049. Where mtrlid = :mx.mtrlid;
  2050. IF sqlca.SQLCode <> 0 THEN
  2051. rslt = 0
  2052. arg_msg = '查询ERP物料编码失败,' + sqlca.SQLErrText
  2053. GOTO ext
  2054. END IF
  2055. UPDATE eb_saletask_import
  2056. SET accept_flag = 1,
  2057. accept_emp = :publ_operator,
  2058. accept_date = GETDATE(),
  2059. acptcnt = acptcnt + 1
  2060. WHERE im_type = 5
  2061. AND im_id = :mx.im_id
  2062. And stopflag = 0
  2063. AND directsend = 0;
  2064. IF sqlca.SQLCode <> 0 THEN
  2065. rslt = 0
  2066. arg_msg = mx.im_id + '更新接受标记失败,' + sqlca.SQLErrText
  2067. GOTO ext
  2068. END IF
  2069. IF sqlca.SQLNRows = 0 THEN
  2070. rslt = 0
  2071. arg_msg = mx.im_id + '临时订单已经被删除或中止,请刷新后再试~r~n'
  2072. GOTO ext
  2073. END IF
  2074. NEXT
  2075. Decimal ld_mx_sum
  2076. SELECT SUM(tb_order.payment)
  2077. INTO :ld_mx_sum
  2078. FROM eb_saletask_import INNER JOIN
  2079. tb_order ON eb_saletask_import.im_id = tb_order.oid
  2080. WHERE (eb_saletask_import.im_type = 5) AND (eb_saletask_import.tid = :arg_tid);
  2081. IF sqlca.SQLCode <> 0 THEN
  2082. rslt = 0
  2083. arg_msg = '查询订单商品总金额失败,' + sqlca.SQLErrText
  2084. GOTO ext
  2085. END IF
  2086. decimal ld_payment, ld_post_fee
  2087. SELECT payment, post_fee
  2088. into :ld_payment, :ld_post_fee
  2089. FROM tb_trade
  2090. WHERE (tid = :arg_tid);
  2091. if sqlca.sqlcode <> 0 then
  2092. rslt = 0
  2093. arg_msg = '查询淘宝订单实付金额与邮费失败,' + sqlca.sqlerrtext
  2094. goto ext
  2095. end if
  2096. curbill.mx[1].otheramt = ld_mx_sum + ld_post_fee - ld_payment
  2097. curbill.mx[1].post_fee = ld_post_fee
  2098. IF uo_saletask_spi.uf_fill_taobao_saletask_info(curbill.mx[1], Ref arg_msg) <> 1 THEN
  2099. rslt = 0
  2100. GOTO ext
  2101. END IF
  2102. FOR i = 2 To UpperBound(curbill.mx)
  2103. curbill.mx[i].requiredate = curbill.mx[1].requiredate
  2104. NEXT
  2105. Long ll_taskid = 0
  2106. String ls_taskcode = ''
  2107. IF uo_saletask_spi.uf_save_saletask(curbill.mx[1].scid, curbill, Ref ll_taskid, Ref ls_taskcode, Ref arg_msg, False) <> 1 THEN
  2108. rslt = 0
  2109. GOTO ext
  2110. END IF
  2111. FOR i = 1 To UpperBound(curbill.mx)
  2112. UPDATE eb_saletask_import
  2113. SET taskcode = :ls_taskcode
  2114. WHERE im_type = 5
  2115. And im_id = :curbill.mx[i].im_id;
  2116. IF sqlca.SQLCode <> 0 THEN
  2117. rslt = 0
  2118. arg_msg = curbill.mx[i].im_id + '更新订单号失败,' + sqlca.SQLErrText
  2119. GOTO ext
  2120. END IF
  2121. NEXT
  2122. arg_taskcode = ls_taskcode
  2123. ext:
  2124. IF rslt = 1 THEN
  2125. COMMIT;
  2126. ELSE
  2127. ROLLBACK;
  2128. END IF
  2129. RETURN rslt
  2130. end function
  2131. public function integer uf_save_saletask_jiayu (string arg_filename, ref string arg_msg);// 直接将嘉韵 灵通打单格式 导入销售订单
  2132. // 1. 将csv文件转成DW
  2133. Int rslt = 1
  2134. datastore dw_1
  2135. dw_1 = Create datastore
  2136. // 2. 逐行处理,物料编码不为空,订单号为空的是与上一单同一订单的
  2137. uo_saletask obj_saletask
  2138. obj_saletask = Create uo_saletask
  2139. obj_saletask.commit_transaction = sqlca
  2140. dw_1.DataObject = 'dw_col100'
  2141. dw_1.ImportFile(CSV!, arg_filename)
  2142. if isvalid(ins_dw_test1) then
  2143. ins_dw_test1.DataObject = dw_1.DataObject
  2144. ins_dw_test1.Reset()
  2145. dw_1.RowsCopy(1, dw_1.RowCount(), primary!, ins_dw_test1, 1, primary!)
  2146. end if
  2147. Long i, j
  2148. String ls_tid = ''
  2149. String ls_mtrlcode = ''
  2150. s_saletask_import s_mx
  2151. s_saletask_import arr_billmx[]
  2152. Long cnt = 0
  2153. Decimal mxtotalamt
  2154. String ls_assign_emp, ls_paytype
  2155. Long ll_typeid, ll_cusid, ll_banktypeid, ll_moneyid
  2156. Decimal ld_mrate
  2157. SELECT top 1
  2158. assign_emp,
  2159. paytype,
  2160. typeid,
  2161. cusid,
  2162. banktypeid,
  2163. moneyid,
  2164. mrate
  2165. INTO
  2166. :ls_assign_emp,
  2167. :ls_paytype,
  2168. :ll_typeid,
  2169. :ll_cusid,
  2170. :ll_banktypeid,
  2171. :ll_moneyid,
  2172. :ld_mrate
  2173. FROM eb_user
  2174. Where im_type = 5;
  2175. IF sqlca.SQLCode <> 0 THEN
  2176. rslt = 0
  2177. arg_msg = '查询淘宝默认设置失败,' + sqlca.SQLErrText
  2178. GOTO ext
  2179. END IF
  2180. FOR i = 2 To dw_1.RowCount()
  2181. ls_mtrlcode = Trim(dw_1.GetItemString(i, 16), true)
  2182. IF ls_mtrlcode = '' THEN
  2183. EXIT
  2184. END IF
  2185. s_mx.tid = Trim(dw_1.GetItemString(i, 1), true)
  2186. s_mx.trade_status = Trim(dw_1.GetItemString(i, 2), true)
  2187. s_mx.cuscode = Trim(dw_1.GetItemString(i, 3), true)
  2188. s_mx.transcom = Trim(dw_1.GetItemString(i, 5), true)
  2189. s_mx.transcode = Trim(dw_1.GetItemString(i, 6), true)
  2190. s_mx.rel_rep = Trim(dw_1.GetItemString(i, 7), true)
  2191. s_mx.cus_fax = Trim(dw_1.GetItemString(i, 8), true)
  2192. s_mx.cus_tele = Trim(dw_1.GetItemString(i, 9), true)
  2193. 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)
  2194. s_mx.mtrlname = Trim(dw_1.GetItemString(i, 15), true)
  2195. s_mx.mtrlcode = Trim(dw_1.GetItemString(i, 16), true)
  2196. s_mx.props = Trim(dw_1.GetItemString(i, 17), true)
  2197. s_mx.saleqty = Dec(Trim(dw_1.GetItemString(i, 18), true))
  2198. s_mx.enprice = Dec(Trim(dw_1.GetItemString(i, 19), true))
  2199. s_mx.totalamt = Dec(Trim(dw_1.GetItemString(i, 21), true)) + Dec(Trim(dw_1.GetItemString(i, 22), true))
  2200. s_mx.mxdscrp = Trim(dw_1.GetItemString(i, 25), true)
  2201. s_mx.mxdscrp2 = Trim(dw_1.GetItemString(i, 26), true)
  2202. s_mx.dscrp = Trim(dw_1.GetItemString(i, 25), true)
  2203. s_mx.dscrp2 = Trim(dw_1.GetItemString(i, 26), true)
  2204. s_mx.rebate = 1
  2205. IF s_mx.tid <> '' THEN // 当前行是新一张单的开始
  2206. // 保存上一张单
  2207. IF cnt > 0 THEN
  2208. mxtotalamt = 0
  2209. FOR j = 1 To cnt
  2210. arr_billmx[j].rebate = 0
  2211. arr_billmx[j].status = ''
  2212. arr_billmx[j].woodcode = ''
  2213. arr_billmx[j].pcode = ''
  2214. arr_billmx[j].mtrlcuscode = ''
  2215. arr_billmx[j].taxrate = 0
  2216. SELECT mtrlid
  2217. INTO :arr_billmx[j].mtrlid
  2218. FROM u_mtrldef
  2219. Where mtrlcode = :arr_billmx[j].mtrlcode;
  2220. if sqlca.sqlcode <> 0 then
  2221. rslt = 0
  2222. arg_msg = arr_billmx[1].tid + '查询物料编码失败,'+arr_billmx[j].mtrlcode+',' + arg_msg
  2223. GOTO ext
  2224. end if
  2225. mxtotalamt += arr_billmx[j].saleqty * arr_billmx[j].enprice
  2226. NEXT
  2227. arr_billmx[1].otheramt = mxtotalamt - s_mx.totalamt
  2228. IF obj_saletask.newbegin(0,arg_msg) = 0 THEN
  2229. rslt = 0
  2230. arg_msg = arr_billmx[1].tid + '新建订单失败,' + arg_msg
  2231. GOTO ext
  2232. END IF
  2233. obj_saletask.requiredate = DateTime(Today(),Now())
  2234. obj_saletask.assign_emp = ls_assign_emp
  2235. //obj_saletask.upname = arg_bill.mx[1].upname
  2236. obj_saletask.Kind = ll_typeid
  2237. obj_saletask.cusid = ll_cusid
  2238. obj_saletask.dscrp = arr_billmx[1].dscrp
  2239. obj_saletask.dscrp2 = arr_billmx[1].dscrp2
  2240. obj_saletask.taskdate = DateTime(Today(),Now())
  2241. obj_saletask.banktypeid = ll_banktypeid
  2242. obj_saletask.moneyid = ll_moneyid
  2243. obj_saletask.damt = 0
  2244. obj_saletask.otheramt = arr_billmx[1].otheramt
  2245. obj_saletask.relcode = arr_billmx[1].tid
  2246. obj_saletask.paytype = ls_paytype
  2247. obj_saletask.freight = arr_billmx[1].transcom
  2248. obj_saletask.freight_tele = ''
  2249. obj_saletask.cus_address = arr_billmx[1].cus_address
  2250. obj_saletask.cus_tele = arr_billmx[1].cus_tele
  2251. obj_saletask.cus_fax = arr_billmx[1].cus_fax
  2252. obj_saletask.mrate = ld_mrate
  2253. //obj_saletask.typeid = arg_bill.mx[1].typeid
  2254. obj_saletask.rel_rep = arr_billmx[1].rel_rep
  2255. //obj_saletask.Level = arg_bill.mx[1].Level
  2256. obj_saletask.dscrp3 = ''
  2257. FOR j = 1 To cnt
  2258. IF obj_saletask.acceptmx(arr_billmx[j].mtrlid,&
  2259. arr_billmx[j].saleqty,&
  2260. 0 /*orderqty*/ ,&
  2261. 0 /*buyqty*/ ,&
  2262. arr_billmx[j].enprice,&
  2263. 1 /*rebate*/ ,&
  2264. 0 /*planprice*/ ,&
  2265. arr_billmx[j].mxdscrp,&
  2266. arr_billmx[j].mtrlcode,&
  2267. arr_billmx[j].status,&
  2268. arr_billmx[j].woodcode,&
  2269. arr_billmx[j].pcode,&
  2270. arr_billmx[j].mtrlcuscode,&
  2271. j,&
  2272. 0 /*outtype*/ ,&
  2273. arg_msg,&
  2274. '' /*unit*/ ,&
  2275. arr_billmx[j].taxrate /*rate*/ ,&
  2276. '' /*formula*/ ,&
  2277. 0 /*addqty*/ ,&
  2278. arr_billmx[j].mxdscrp2,&
  2279. 0 /*needwfjgqty*/,&
  2280. '' /*plancode*/,&
  2281. 0 /*tax*/) = 0 THEN
  2282. rslt = 0
  2283. arg_msg = arr_billmx[1].tid + '添加订单明细失败,' + arg_msg
  2284. GOTO ext
  2285. END IF
  2286. NEXT
  2287. // s_saletask_itemmx s_item //费用项目
  2288. // IF arg_bill.mx[1].post_fee <> 0 THEN
  2289. // s_item.printid = 1
  2290. // s_item.itemid = arg_bill.mx[1].itemid
  2291. // s_item.amt = arg_bill.mx[1].post_fee
  2292. // s_item.amtyfh = 0
  2293. // s_item.mxdscrp = ''
  2294. // s_item.itype = 1
  2295. // IF obj_saletask.acceptmx_item(s_item, arg_msg) = 0 THEN
  2296. // rslt = 0
  2297. // arg_msg = arr_billmx[1].tid + '添加订单费用明细失败,' + arg_msg
  2298. // GOTO ext
  2299. // END IF
  2300. // END IF
  2301. IF obj_saletask.savesubmit(publ_operator,arg_msg,False) <> 1 THEN
  2302. rslt = 0
  2303. arg_msg = arr_billmx[1].tid + '保存订单失败,' + arg_msg
  2304. GOTO ext
  2305. END IF
  2306. IF obj_saletask.save_end(arg_msg,False) = 0 THEN //保存费用项目
  2307. rslt = 0
  2308. arg_msg = arr_billmx[1].tid + '保存订单费用明细失败,' + arg_msg
  2309. GOTO ext
  2310. END IF
  2311. END IF
  2312. cnt = 0
  2313. END IF
  2314. cnt ++
  2315. arr_billmx[cnt] = s_mx
  2316. NEXT
  2317. IF cnt > 0 THEN
  2318. mxtotalamt = 0
  2319. FOR j = 1 To cnt
  2320. arr_billmx[j].rebate = 0
  2321. arr_billmx[j].status = ''
  2322. arr_billmx[j].woodcode = ''
  2323. arr_billmx[j].pcode = ''
  2324. arr_billmx[j].mtrlcuscode = ''
  2325. arr_billmx[j].taxrate = 0
  2326. SELECT mtrlid
  2327. INTO :arr_billmx[j].mtrlid
  2328. FROM u_mtrldef
  2329. Where mtrlcode = :arr_billmx[j].mtrlcode;
  2330. mxtotalamt += arr_billmx[j].saleqty * arr_billmx[j].enprice
  2331. NEXT
  2332. arr_billmx[1].otheramt = mxtotalamt - s_mx.totalamt
  2333. IF obj_saletask.newbegin(0,arg_msg) = 0 THEN
  2334. rslt = 0
  2335. arg_msg = arr_billmx[1].tid + '新建订单失败,' + arg_msg
  2336. GOTO ext
  2337. END IF
  2338. obj_saletask.requiredate = DateTime(Today(),Now())
  2339. obj_saletask.assign_emp = ls_assign_emp
  2340. //obj_saletask.upname = arg_bill.mx[1].upname
  2341. obj_saletask.Kind = ll_typeid
  2342. obj_saletask.cusid = ll_cusid
  2343. obj_saletask.dscrp = arr_billmx[1].dscrp
  2344. obj_saletask.dscrp2 = arr_billmx[1].dscrp2
  2345. obj_saletask.taskdate = DateTime(Today(),Now())
  2346. obj_saletask.banktypeid = ll_banktypeid
  2347. obj_saletask.moneyid = ll_moneyid
  2348. obj_saletask.damt = 0
  2349. obj_saletask.otheramt = arr_billmx[1].otheramt
  2350. obj_saletask.relcode = arr_billmx[1].tid
  2351. obj_saletask.paytype = ls_paytype
  2352. obj_saletask.freight = arr_billmx[1].transcom
  2353. obj_saletask.freight_tele = ''
  2354. obj_saletask.cus_address = arr_billmx[1].cus_address
  2355. obj_saletask.cus_tele = arr_billmx[1].cus_tele
  2356. obj_saletask.cus_fax = arr_billmx[1].cus_fax
  2357. obj_saletask.mrate = ld_mrate
  2358. //obj_saletask.typeid = arg_bill.mx[1].typeid
  2359. obj_saletask.rel_rep = arr_billmx[1].rel_rep
  2360. //obj_saletask.Level = arg_bill.mx[1].Level
  2361. obj_saletask.dscrp3 = ''
  2362. FOR j = 1 To cnt
  2363. IF obj_saletask.acceptmx(arr_billmx[j].mtrlid,&
  2364. arr_billmx[j].saleqty,&
  2365. 0 /*orderqty*/ ,&
  2366. 0 /*buyqty*/ ,&
  2367. arr_billmx[j].enprice,&
  2368. 1 /*rebate*/ ,&
  2369. 0 /*planprice*/ ,&
  2370. arr_billmx[j].mxdscrp,&
  2371. arr_billmx[j].mtrlcode,&
  2372. arr_billmx[j].status,&
  2373. arr_billmx[j].woodcode,&
  2374. arr_billmx[j].pcode,&
  2375. arr_billmx[j].mtrlcuscode,&
  2376. j,&
  2377. 0 /*outtype*/ ,&
  2378. arg_msg,&
  2379. '' /*unit*/ ,&
  2380. arr_billmx[j].taxrate /*rate*/ ,&
  2381. '' /*formula*/ ,&
  2382. 0 /*addqty*/ ,&
  2383. arr_billmx[j].mxdscrp2,&
  2384. 0 /*needwfjgqty*/,&
  2385. '' /*plancode*/,&
  2386. 0 /*tax*/) = 0 THEN
  2387. rslt = 0
  2388. arg_msg = arr_billmx[1].tid + '添加订单明细失败,' + arg_msg
  2389. GOTO ext
  2390. END IF
  2391. NEXT
  2392. // s_saletask_itemmx s_item //费用项目
  2393. // IF arg_bill.mx[1].post_fee <> 0 THEN
  2394. // s_item.printid = 1
  2395. // s_item.itemid = arg_bill.mx[1].itemid
  2396. // s_item.amt = arg_bill.mx[1].post_fee
  2397. // s_item.amtyfh = 0
  2398. // s_item.mxdscrp = ''
  2399. // s_item.itype = 1
  2400. // IF obj_saletask.acceptmx_item(s_item, arg_msg) = 0 THEN
  2401. // rslt = 0
  2402. // arg_msg = arr_billmx[1].tid + '添加订单费用明细失败,' + arg_msg
  2403. // GOTO ext
  2404. // END IF
  2405. // END IF
  2406. IF obj_saletask.savesubmit(publ_operator,arg_msg,False) <> 1 THEN
  2407. rslt = 0
  2408. arg_msg = arr_billmx[1].tid + '保存订单失败,' + arg_msg
  2409. GOTO ext
  2410. END IF
  2411. IF obj_saletask.save_end(arg_msg,False) = 0 THEN //保存费用项目
  2412. rslt = 0
  2413. arg_msg = arr_billmx[1].tid + '保存订单费用明细失败,' + arg_msg
  2414. GOTO ext
  2415. END IF
  2416. END IF
  2417. // 3.保存订单
  2418. ext:
  2419. Destroy dw_1
  2420. Destroy obj_saletask
  2421. IF rslt = 1 THEN
  2422. COMMIT;
  2423. ELSE
  2424. ROLLBACK;
  2425. END IF
  2426. RETURN rslt
  2427. end function
  2428. on uo_saletask_import.create
  2429. call super::create
  2430. TriggerEvent( this, "constructor" )
  2431. end on
  2432. on uo_saletask_import.destroy
  2433. TriggerEvent( this, "destructor" )
  2434. call super::destroy
  2435. end on
  2436. event constructor;//String arg_msg
  2437. //String str_optionvalue
  2438. //
  2439. //str_optionvalue = ''
  2440. //f_get_sys_option_value('238',str_optionvalue,arg_msg)
  2441. //uo_option_price_rmb = Long(str_optionvalue)
  2442. //
  2443. //str_optionvalue = ''
  2444. //f_get_sys_option_value('045',str_optionvalue,arg_msg)
  2445. //uo_option_m_msttake = Long(str_optionvalue)
  2446. end event