123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383 |
- $PBExportHeader$uo_ljmail_msg.sru
- forward
- global type uo_ljmail_msg from nonvisualobject
- end type
- type ps_cus_ljmail from structure within uo_ljmail_msg
- end type
- end forward
- type ps_cus_ljmail from structure
- long commid
- string ljmails[]
- end type
- global type uo_ljmail_msg from nonvisualobject
- end type
- global uo_ljmail_msg uo_ljmail_msg
- type variables
- Transaction commit_transaction //数据commit事务
- end variables
- forward prototypes
- public function integer uf_save (ref s_ljmail_msg arg_s_msg, ref string arg_msg)
- public function integer uf_getinfo (long arg_msgid, ref s_ljmail_msg arg_s_msg, ref string arg_msg, boolean arg_if_main, boolean arg_if_mx, boolean arg_if_fj, boolean arg_if_withblob)
- public function integer uf_get_msgmx (string arg_ljmail, ref s_ljmail_msgmx arg_msgmx, ref string arg_msg)
- public function integer uf_del (long arg_msgid, ref string arg_msg)
- public function integer uf_get_boxtype (long arg_msgid, ref long arg_boxtype, ref string arg_msg)
- public function integer uf_get_html (long arg_msgid, ref string arg_html, ref string arg_msg)
- public function integer uf_send (long arg_msgid, ref string arg_msg)
- public function integer uf_getljmail (ref string arg_ljmail, ref string arg_msg)
- public function integer uf_rev_msg (string arg_id, ref string arg_msg)
- public function integer uf_setread (long arg_msgid, long arg_ifread, ref string arg_msg)
- end prototypes
- public function integer uf_save (ref s_ljmail_msg arg_s_msg, ref string arg_msg);Int rslt = 1
- Long ll_i
- Boolean oldAutoCommit
- oldAutoCommit = commit_transaction.AutoCommit
- IF arg_s_msg.sendflag <> 2 And arg_s_msg.sendflag <> 3 THEN
- rslt = 0
- arg_msg = '只能保存草稿与收件'
- GOTO ext
- END IF
- Long ll_cnt
- SELECT COUNT(0)
- INTO :ll_cnt
- FROM u_ljmail_box
- WHERE boxid = :arg_s_msg.boxid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询所属邮箱失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_cnt = 0 THEN
- rslt = 0
- arg_msg = '所属邮箱不存在,ID:' + String(arg_s_msg.boxid)
- GOTO ext
- END IF
- DateTime dt_server
- SELECT TOP 1 GETDATE()
- INTO :dt_server
- FROM u_user
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '获取服务器时间失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
- IF arg_s_msg.msgid = 0 THEN
-
- Long ll_msgid
- ll_msgid = f_sys_scidentity(0, "u_ljmail_msg", "msgid", arg_msg, True, id_sqlca)
- IF ll_msgid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO u_ljmail_msg(msgid,
- boxid,
- sendcomid,
- sendcomname,
- sendflag,
- opemp,
- opdate,
- subject,
- htmlbody,
- reltype,
- relid,
- ljmail)
- VALUES(:ll_msgid,
- :arg_s_msg.boxid,
- :arg_s_msg.sendcomid,
- :arg_s_msg.sendcomname,
- :arg_s_msg.sendflag,
- :publ_operator,
- :dt_server,
- :arg_s_msg.subject,
- :arg_s_msg.htmlbody,
- :arg_s_msg.reltype,
- :arg_s_msg.relid,
- :arg_s_msg.ljmail)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入LE邮件失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- // 插入接收明细
- FOR ll_i = 1 To UpperBound(arg_s_msg.mx)
- INSERT INTO u_ljmail_msgmx(msgid,
- printid,
- comid,
- comname,
- empid,
- empname,
- reltype,
- relid,
- ljmail)
- VALUES(:ll_msgid,
- :ll_i,
- :arg_s_msg.mx[ll_i].comid,
- :arg_s_msg.mx[ll_i].comname,
- :arg_s_msg.mx[ll_i].empid,
- :arg_s_msg.mx[ll_i].empname,
- :arg_s_msg.mx[ll_i].reltype,
- :arg_s_msg.mx[ll_i].relid,
- :arg_s_msg.mx[ll_i].ljmail)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入接收明细失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- arg_s_msg.mx[ll_i].msgid = ll_msgid
- arg_s_msg.mx[ll_i].printid = ll_i
- NEXT
-
- // 插入附件
- FOR ll_i = 1 To UpperBound(arg_s_msg.fj)
- INSERT INTO u_ljmail_fj(msgid,
- printid,
- filename)
- VALUES(:ll_msgid,
- :ll_i,
- :arg_s_msg.fj[ll_i].filename)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入LE附件失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- arg_s_msg.fj[ll_i].msgid = ll_msgid
- arg_s_msg.fj[ll_i].printid = ll_i
- NEXT
-
- arg_s_msg.msgid = ll_msgid
- arg_s_msg.opemp = publ_operator
- arg_s_msg.opdate = dt_server
-
- ELSE
-
- UPDATE u_ljmail_msg
- SET boxid = :arg_s_msg.boxid,
- sendcomid = :arg_s_msg.sendcomid,
- sendcomname = :arg_s_msg.sendcomname,
- sendempid = :arg_s_msg.sendempid,
- sendempname = :arg_s_msg.sendempname,
- sendflag = :arg_s_msg.sendflag,
- modemp = :publ_operator,
- moddate = :dt_server,
- subject = :arg_s_msg.subject,
- htmlbody = :arg_s_msg.htmlbody,
- reltype = :arg_s_msg.reltype,
- relid = :arg_s_msg.relid,
- ljmail = :arg_s_msg.ljmail
- WHERE msgid = :arg_s_msg.msgid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新龙嘉邮件信息失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_ljmail_msgmx
- WHERE msgid = :arg_s_msg.msgid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除旧龙嘉邮件明细失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- // 插入接收明细
- FOR ll_i = 1 To UpperBound(arg_s_msg.mx)
- INSERT INTO u_ljmail_msgmx(msgid,
- printid,
- comid,
- comname,
- empid,
- empname,
- reltype,
- relid,
- ljmail)
- VALUES(:arg_s_msg.msgid,
- :ll_i,
- :arg_s_msg.mx[ll_i].comid,
- :arg_s_msg.mx[ll_i].comname,
- :arg_s_msg.mx[ll_i].empid,
- :arg_s_msg.mx[ll_i].empname,
- :arg_s_msg.mx[ll_i].reltype,
- :arg_s_msg.mx[ll_i].relid,
- :arg_s_msg.mx[ll_i].ljmail)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入接收明细失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- arg_s_msg.mx[ll_i].msgid = arg_s_msg.msgid
- arg_s_msg.mx[ll_i].printid = ll_i
- NEXT
-
- DELETE FROM u_ljmail_fj
- WHERE msgid = :arg_s_msg.msgid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除旧龙嘉邮件附件失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- // 插入附件
- FOR ll_i = 1 To UpperBound(arg_s_msg.fj)
- INSERT INTO u_ljmail_fj(msgid,
- printid,
- filename)
- VALUES(:arg_s_msg.msgid,
- :ll_i,
- :arg_s_msg.fj[ll_i].filename)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入LE附件失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- arg_s_msg.fj[ll_i].msgid = arg_s_msg.msgid
- arg_s_msg.fj[ll_i].printid = ll_i
- NEXT
-
- arg_s_msg.modemp = publ_operator
- arg_s_msg.moddate = dt_server
-
-
- END IF
- COMMIT Using commit_transaction;
- commit_transaction.AutoCommit = True
- FOR ll_i = 1 To UpperBound(arg_s_msg.fj)
- UpdateBlob u_ljmail_fj
- Set fileblob = :arg_s_msg.fj[ll_i].fileblob
- Where msgid = :arg_s_msg.msgid
- And printid = :arg_s_msg.fj[ll_i].printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新LE附件失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 1 THEN
- COMMIT Using commit_transaction;
- ELSE
- ROLLBACK Using commit_transaction;
- END IF
- commit_transaction.AutoCommit = oldAutoCommit
- RETURN rslt
- end function
- public function integer uf_getinfo (long arg_msgid, ref s_ljmail_msg arg_s_msg, ref string arg_msg, boolean arg_if_main, boolean arg_if_mx, boolean arg_if_fj, boolean arg_if_withblob);Int rslt = 1
- IF arg_if_main THEN
- SELECT boxid,
- sendcomid,
- sendcomname,
- sendempid,
- sendempname,
- sendflag,
- opemp,
- opdate,
- modemp,
- moddate,
- subject,
- htmlbody,
- reltype,
- relid,
- sendtime,
- ljmail,
- ifread
- INTO :arg_s_msg.boxid,
- :arg_s_msg.sendcomid,
- :arg_s_msg.sendcomname,
- :arg_s_msg.sendempid,
- :arg_s_msg.sendempname,
- :arg_s_msg.sendflag,
- :arg_s_msg.opemp,
- :arg_s_msg.opdate,
- :arg_s_msg.modemp,
- :arg_s_msg.moddate,
- :arg_s_msg.subject,
- :arg_s_msg.htmlbody,
- :arg_s_msg.reltype,
- :arg_s_msg.relid,
- :arg_s_msg.sendtime,
- :arg_s_msg.ljmail,
- :arg_s_msg.ifread
- FROM u_ljmail_msg
- WHERE msgid = :arg_msgid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询龙嘉邮件信息失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- arg_s_msg.msgid = arg_msgid
- END IF
- Long ll_cnt = 0
- s_ljmail_msgmx arr_mx[]
- Long mxl_msgid
- Long mxl_printid
- Long mxl_comid
- String mxs_comname
- Long mxl_empid
- String mxs_empname
- Long mxl_reltype
- Long mxl_relid
- String mxs_ljmail
- IF arg_if_mx THEN
-
- DECLARE cur1 CURSOR FOR
- SELECT msgid, printid, comid, comname, empid, empname, reltype, relid, ljmail
- FROM u_ljmail_msgmx
- WHERE msgid = :arg_msgid
- Using commit_transaction;
- OPEN cur1;
- FETCH cur1 INTO :mxl_msgid,
- :mxl_printid,
- :mxl_comid,
- :mxs_comname,
- :mxl_empid,
- :mxs_empname,
- :mxl_reltype,
- :mxl_relid,
- :mxs_ljmail;
- DO WHILE commit_transaction.SQLCode = 0
- ll_cnt++
- arr_mx[ll_cnt].msgid = mxl_msgid
- arr_mx[ll_cnt].printid = mxl_printid
- arr_mx[ll_cnt].comid = mxl_comid
- arr_mx[ll_cnt].comname = mxs_comname
- arr_mx[ll_cnt].empid = mxl_empid
- arr_mx[ll_cnt].empname = mxs_empname
- arr_mx[ll_cnt].reltype = mxl_reltype
- arr_mx[ll_cnt].relid = mxl_relid
- arr_mx[ll_cnt].ljmail = mxs_ljmail
- FETCH cur1 INTO :mxl_msgid,
- :mxl_printid,
- :mxl_comid,
- :mxs_comname,
- :mxl_empid,
- :mxs_empname,
- :mxl_reltype,
- :mxl_relid,
- :mxs_ljmail;
- LOOP
- CLOSE cur1;
- arg_s_msg.mx = arr_mx
- END IF
- s_ljmail_fj arr_fj[]
- Long fjl_msgid
- Long fjl_printid
- String fjs_filename
- Blob fjb_fileblob
- Long i
- IF arg_if_fj THEN
- ll_cnt = 0
-
- DECLARE cur2 CURSOR FOR
- SELECT msgid, printid, filename
- FROM u_ljmail_fj
- WHERE msgid = :arg_msgid
- Using commit_transaction;
- OPEN cur2;
- FETCH cur2 Into :fjl_msgid, :fjl_printid, :fjs_filename;
- DO WHILE commit_transaction.SQLCode = 0
- ll_cnt++
- arr_fj[ll_cnt].msgid = fjl_msgid
- arr_fj[ll_cnt].printid = fjl_printid
- arr_fj[ll_cnt].Filename = fjs_filename
- FETCH cur2 Into :fjl_msgid, :fjl_printid, :fjs_filename;
- LOOP
- CLOSE cur2;
-
- arg_s_msg.fj = arr_fj
- IF arg_if_withblob THEN
- FOR i = 1 To ll_cnt
- SelectBlob fileblob
- Into :arg_s_msg.fj[i].fileblob
- From u_ljmail_fj
- Where msgid = :arg_s_msg.fj[i].msgid
- And printid = :arg_s_msg.fj[i].printid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '获取附件内容失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- END IF
-
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uf_get_msgmx (string arg_ljmail, ref s_ljmail_msgmx arg_msgmx, ref string arg_msg);Int rslt = 1
- /*
- * 1: 客户
- * 2: 供应商
- * 3: 手动
- * 4: 客户联系人
- * 5: 供应商联系人
- * 6: 员工
- */
- Long ll_pos
- ll_pos = Pos(arg_ljmail, '@@')
- IF ll_pos <= 0 THEN
- rslt = 0
- arg_msg = ''
- GOTO ext
- END IF
- String ls_repname
- String ls_cuscode
- String ls_comname
- ls_repname = Mid(arg_ljmail, 1, ll_pos - 1)
- ls_cuscode = Mid(arg_ljmail, ll_pos + 2)
- Long ll_cnt
- Long ll_cusid
- Long ll_relid
- //====================================================================
- // 客户
- //====================================================================
- SELECT top 1 cusid, cusname
- INTO :ll_cusid, :ls_comname
- FROM u_cust
- Where commcode = :ls_cuscode And ifecomm = 1;
- IF sqlca.SQLCode = 0 THEN
- SELECT count(0)
- INTO :ll_cnt
- FROM u_cust
- Where cusid = :ll_cusid And rep = :ls_repname;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询客户联系人失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_cnt > 0 THEN
- arg_msgmx.reltype = 1
- arg_msgmx.relid = ll_cusid
- arg_msgmx.ljmail = arg_ljmail
- arg_msgmx.empname = ls_repname
- arg_msgmx.comname = ls_comname
- GOTO ext
- ELSE
- SELECT top 1 repid
- INTO :ll_relid
- FROM u_cust_rep
- Where cusid = :ll_cusid And repname = :ls_repname;
- IF sqlca.SQLCode = 0 THEN
- arg_msgmx.reltype = 4
- arg_msgmx.relid = ll_relid
- arg_msgmx.ljmail = arg_ljmail
- arg_msgmx.empname = ls_repname
- arg_msgmx.comname = ls_comname
- GOTO ext
- END IF
- END IF
- END IF
- //====================================================================
- // 供应商
- //====================================================================
- Long ll_sptid
- SELECT top 1 sptid, name
- INTO :ll_sptid, :ls_comname
- FROM u_spt
- Where commcode = :ls_cuscode And ifecomm = 1;
- IF sqlca.SQLCode = 0 THEN
- SELECT count(0)
- INTO :ll_cnt
- FROM u_spt
- Where sptid = :ll_sptid And rep = :ls_repname;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询供应商联系人失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_cnt > 0 THEN
- arg_msgmx.reltype = 2
- arg_msgmx.relid = ll_sptid
- arg_msgmx.ljmail = arg_ljmail
- arg_msgmx.empname = ls_repname
- arg_msgmx.comname = ls_comname
- GOTO ext
- ELSE
- SELECT top 1 repid
- INTO :ll_relid
- FROM u_spt_cus
- Where sptid = :ll_sptid And repname = :ls_repname;
- IF sqlca.SQLCode = 0 THEN
- arg_msgmx.reltype = 5
- arg_msgmx.relid = ll_relid
- arg_msgmx.ljmail = arg_ljmail
- arg_msgmx.empname = ls_repname
- arg_msgmx.comname = ls_comname
- GOTO ext
- END IF
- END IF
- END IF
- //====================================================================
- // 员工
- //====================================================================
- Long ll_custype
- Long ll_commid
- ls_comname = ''
- SELECT top 1 CusCommID, CusType, CusName
- INTO :ll_commid, :ll_custype, :ls_comname
- FROM LJFIEB_CusComm
- Where CusCode = :ls_cuscode Using commit_transaction;
- IF commit_transaction.SQLCode = 0 THEN
- IF ll_custype = 0 THEN
- SELECT top 1 empid
- INTO :ll_relid
- FROM u_rs_empinfo
- Where empname = :ls_repname;
-
- IF sqlca.SQLCode = 0 THEN
- arg_msgmx.reltype = 6
- arg_msgmx.relid = ll_relid
- arg_msgmx.ljmail = arg_ljmail
- arg_msgmx.empname = ls_repname
- arg_msgmx.comname = ls_comname
- GOTO ext
- END IF
- END IF
- END IF
- //====================================================================
- // 手动
- //====================================================================
- arg_msgmx.reltype = 3
- arg_msgmx.relid = 0
- arg_msgmx.ljmail = arg_ljmail
- arg_msgmx.empname = ls_repname
- arg_msgmx.comname = ls_comname
- IF ls_comname = '' THEN
- arg_msgmx.comname = ls_cuscode
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uf_del (long arg_msgid, ref string arg_msg);Int rslt = 1
- uo_ljmail_box uo_box
- uo_box = Create uo_ljmail_box
- Long ll_boxtype
- IF uf_get_boxtype(arg_msgid, Ref ll_boxtype, Ref arg_msg) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_boxtype = 4 THEN
- DELETE From u_ljmail_fj Where msgid = :arg_msgid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除龙嘉邮件附件失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- DELETE From u_ljmail_msgmx Where msgid = :arg_msgid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除龙嘉邮件发送明细失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- DELETE From u_ljmail_msg Where msgid = :arg_msgid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除龙嘉邮件信息失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- ELSE
- Long ll_boxid
- ll_boxid = uo_box.uf_getboxid(sys_empid, 4, arg_msg)
- IF ll_boxid = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_ljmail_msg Set boxid = :ll_boxid Where msgid = :arg_msgid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '将邮件移到废件夹失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- END IF
- ext:
- Destroy uo_box
- IF rslt = 1 THEN
- COMMIT Using commit_transaction;
- ELSE
- ROLLBACK Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uf_get_boxtype (long arg_msgid, ref long arg_boxtype, ref string arg_msg);uo_ljmail_box uo_box
- uo_box = Create uo_ljmail_box
- int rslt = 1
- Long ll_boxtype = 0
- Long ll_boxid = 0
- SELECT boxid
- INTO :ll_boxid
- FROM u_ljmail_msg
- WHERE msgid = :arg_msgid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询邮件所属邮箱失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- Long ll_pboxid
- IF uo_box.uf_getparentid(ll_boxid, Ref ll_pboxid, Ref arg_msg) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- DO WHILE ll_pboxid <> 0
- ll_boxid = ll_pboxid
- IF uo_box.uf_getparentid(ll_boxid, Ref ll_pboxid, Ref arg_msg) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- LOOP
- IF uo_box.uf_getboxtype(ll_boxid, Ref ll_boxtype, Ref arg_msg) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- if ll_boxtype = 0 then
- rslt = 0
- arg_msg = '未定义邮箱类型:0'
- goto ext
- end if
- arg_boxtype = ll_boxtype
- ext:
- Destroy uo_box
- RETURN rslt
- end function
- public function integer uf_get_html (long arg_msgid, ref string arg_html, ref string arg_msg);Int rslt = 1
- Long Len
- Blob lb
- SELECT DATALENGTH(htmlbody) INTO :Len FROM u_ljmail_msg
- Where msgid = :arg_msgid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询html长度失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF Len > 2048 THEN
- SelectBlob htmlbody Into :lb From u_ljmail_msg
- Where msgid = :arg_msgid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询html失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- arg_html = String(lb)
- ELSE
- SELECT htmlbody INTO :arg_html FROM u_ljmail_msg
- Where msgid = :arg_msgid Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询html失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uf_send (long arg_msgid, ref string arg_msg);Int rslt = 1
- uo_ljmail_box uo_box
- uo_box = Create uo_ljmail_box
- Long ll_sendflag
- SELECT sendflag
- INTO :ll_sendflag
- FROM u_ljmail_msg
- WHERE msgid = :arg_msgid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询邮件状态失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ll_sendflag <> 2 THEN
- rslt = 0
- arg_msg = '邮件不是草稿,不能发送'
- GOTO ext
- END IF
- Long ll_boxid
- ll_boxid = uo_box.uf_getboxid(sys_empid, 3, arg_msg)
- IF ll_boxid = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- UPDATE u_ljmail_msg
- SET sendflag = 1,
- boxid = :ll_boxid
- WHERE msgid = :arg_msgid
- AND sendflag = 2
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新邮件状态失败' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '更新邮件状态失败,邮件已经发送或被删除'
- GOTO ext
- END IF
- s_ljmail_msg s_msg
- IF uf_getinfo(arg_msgid, Ref s_msg, arg_msg, False, True, False, False) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
- Long i, j
- String ls_repname
- String ls_cuscode
- Long ll_pos
- Long ll_commid
- ps_cus_ljmail arr_custs[]
- Boolean lb_find = False
- FOR i = 1 To UpperBound(s_msg.mx)
- ll_pos = Pos(s_msg.mx[i].ljmail, '@@')
- IF ll_pos <= 0 THEN
- rslt = 0
- arg_msg = '非法龙嘉邮件地址:' + s_msg.mx[i].ljmail
- GOTO ext
- END IF
-
- ls_repname = Mid(s_msg.mx[i].ljmail, 1, ll_pos - 1)
- ls_cuscode = Mid(s_msg.mx[i].ljmail, ll_pos + 2)
-
- SELECT CusCommID
- INTO :ll_commid
- FROM LJFIEB_CusComm
- WHERE CusCode = :ls_cuscode
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '解析龙嘉邮件地址[' + s_msg.mx[i].ljmail + ']失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- lb_find = False
- FOR j = 1 To UpperBound(arr_custs)
- IF arr_custs[j].commid = ll_commid THEN
- lb_find = True
- EXIT
- END IF
- NEXT
-
- IF lb_find THEN
- arr_custs[j].ljmails[UpperBound(arr_custs[j].ljmails) + 1] = s_msg.mx[i].ljmail
- ELSE
- arr_custs[j].commid = ll_commid
- arr_custs[j].ljmails[1] = s_msg.mx[i].ljmail
- END IF
-
- NEXT
- Long ll_curcommid
- SELECT top 1 CusCommID
- INTO :ll_curcommid
- FROM LJFIEB_CusComm
- Where CusType = 0 Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询本企业ID失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- String ls_id
- FOR i = 1 To UpperBound(arr_custs)
-
- SELECT top 1 newid()
- INTO :ls_id
- From u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '获取ID失败,' + sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO LJFIEB_packet
- (SerialNum,
- TableName,
- SendCusCommID,
- SendSCcode,
- AddUser,
- AddTime,
- ReceiveCusCommID,
- ReceiveSCcode,
- ReceiveUser,
- Status,
- BillType,
- SendTime)
- VALUES
- (:ls_id,
- 'LJFIEB_ljmail_msg,LJFIEB_ljmail_msgmx,LJFIEB_ljmail_fj',
- :ll_curcommid,
- '',
- :publ_operator,
- GETDATE(),
- :arr_custs[i].commid,
- '',
- '',
- 0,
- 22,
- GETDATE())
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入同步数据失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO LJFIEB_ljmail_msg
- (msgid,
- boxid,
- sendcomid,
- sendcomname,
- sendempid,
- sendempname,
- sendflag,
- opemp,
- opdate,
- modemp,
- moddate,
- subject,
- htmlbody,
- reltype,
- relid,
- sendtime,
- ljmail,
- SerialNum)
- SELECT msgid,
- boxid,
- sendcomid,
- sendcomname,
- sendempid,
- sendempname,
- sendflag,
- opemp,
- opdate,
- modemp,
- moddate,
- subject,
- htmlbody,
- reltype,
- relid,
- sendtime,
- ljmail, :ls_id
- FROM u_ljmail_msg
- WHERE (msgid = :arg_msgid)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '复制龙嘉邮件失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO LJFIEB_ljmail_msgmx
- (SerialNum,
- msgid,
- printid,
- comid,
- comname,
- empid,
- empname,
- reltype,
- relid,
- ljmail)
- SELECT :ls_id,
- msgid,
- printid,
- comid,
- comname,
- empid,
- empname,
- reltype,
- relid,
- ljmail
- FROM u_ljmail_msgmx
- WHERE (msgid = :arg_msgid)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '复制龙嘉邮件发送明细失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO LJFIEB_ljmail_fj
- (SerialNum,
- msgid,
- printid,
- filename,
- fileblob)
- SELECT :ls_id,
- msgid,
- printid,
- filename,
- fileblob
- FROM u_ljmail_fj
- WHERE (msgid = :arg_msgid)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '复制龙嘉邮件附件失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- NEXT
- GOTO ext
- ext:
- Destroy uo_box
- IF rslt = 1 THEN
- COMMIT Using commit_transaction;
- ELSE
- ROLLBACK Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uf_getljmail (ref string arg_ljmail, ref string arg_msg);Int rslt = 1
- String ls_repname
- String ls_cuscode
- ls_repname = publ_operator
- SELECT top 1 CusCode
- INTO :ls_cuscode
- FROM LJFIEB_CusComm
- WHERE CusType = 0
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询本企业代号失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- arg_ljmail = ls_repname + '@@' + ls_cuscode
- ext:
- RETURN rslt
- end function
- public function integer uf_rev_msg (string arg_id, ref string arg_msg);Int rslt = 1
- uo_ljmail_box uo_box
- uo_box = Create uo_ljmail_box
- Long ll_status
- Long ll_billtype
- SELECT status, billtype
- INTO :ll_status, :ll_billtype
- FROM LJFIEB_packet
- WHERE SerialNum = :arg_id
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询龙嘉邮件状态失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF ll_billtype <> 22 THEN
- rslt = 0
- arg_msg = '接收的内容不是龙嘉邮件'
- GOTO ext
- END IF
- IF ll_status <> 5 THEN
- rslt = 0
- arg_msg = '龙嘉邮件不在未处理状态'
- GOTO ext
- END IF
- UPDATE LJFIEB_packet
- SET status = 6
- WHERE SerialNum = :arg_id
- AND status = 5
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新龙嘉邮件状态失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '龙嘉邮件正在处理,请稍候再试'
- GOTO ext
- END IF
- String ls_mycuscode
- SELECT top 1 CusCode
- INTO :ls_mycuscode
- FROM LJFIEB_CusComm
- WHERE CusType = 0
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询本企业代号失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- Long arr_empid[]
- String arr_empname[]
- Long ll_cnt = 0
- String ls_ljmail
- String ls_empname, ls_cuscode
- Long ll_empid
- Long ll_pos
- Long i
- DECLARE cur1 CURSOR FOR
- SELECT ljmail
- FROM LJFIEB_ljmail_msgmx
- WHERE SerialNum = :arg_id
- Using commit_transaction;
- OPEN cur1;
- FETCH cur1 Into :ls_ljmail;
- DO WHILE commit_transaction.SQLCode = 0
- ll_pos = Pos(ls_ljmail, '@@')
- IF ll_pos <= 0 THEN
- GOTO _next
- END IF
-
- ls_empname = Mid(ls_ljmail, 1, ll_pos - 1)
- ls_cuscode = Mid(ls_ljmail, ll_pos + 2)
-
- IF ls_cuscode <> ls_mycuscode THEN
- GOTO _next
- END IF
-
- FOR i = 1 To UpperBound(arr_empname)
- IF ls_empname = arr_empname[i] THEN
- GOTO _next
- END IF
- NEXT
-
- SELECT top 1 empid
- INTO :ll_empid
- FROM u_rs_empinfo
- Where empname = ls_empname;
- IF sqlca.SQLCode <> 0 THEN
- GOTO _next
- END IF
-
- ll_cnt++
- arr_empid[ll_cnt] = ll_empid
- arr_empname[ll_cnt] = ls_empname
-
- _next:
- FETCH cur1 Into :ls_ljmail;
- LOOP
- CLOSE cur1;
- Boolean hassuper = False
- FOR i = 1 To ll_cnt
- IF arr_empid[i] = 0 THEN
- hassuper = True
- EXIT
- END IF
- NEXT
- IF Not hassuper THEN
- ll_cnt++
- arr_empid[ll_cnt] = 0
- arr_empname[ll_cnt] = sys_super_name
- END IF
- Long ll_boxid
- Long ll_msgid
- FOR i = 1 To ll_cnt
- IF uo_box.uf_initbox(arr_empid[i], arg_msg, True) <> 1 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_boxid = uo_box.uf_getboxid(arr_empid[i], 1, arg_msg)
- IF ll_boxid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_msgid = f_sys_scidentity(0, "u_ljmail_msg", "msgid", arg_msg, True, id_sqlca)
- IF ll_msgid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO u_ljmail_msg
- (msgid,
- boxid,
- sendcomid,
- sendcomname,
- sendempid,
- sendempname,
- sendflag,
- opemp,
- opdate,
- modemp,
- moddate,
- subject,
- htmlbody,
- reltype,
- relid,
- sendtime,
- ljmail)
- SELECT :ll_msgid,
- :ll_boxid,
- sendcomid,
- sendcomname,
- sendempid,
- sendempname,
- 3,
- opemp,
- opdate,
- modemp,
- moddate,
- subject,
- htmlbody,
- reltype,
- relid,
- sendtime,
- ljmail
- FROM LJFIEB_ljmail_msg
- WHERE (SerialNum = :arg_id)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '接收邮件失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_ljmail_msgmx
- (msgid,
- printid,
- comid,
- comname,
- empid,
- empname,
- reltype,
- relid,
- ljmail)
- SELECT :ll_msgid,
- printid,
- comid,
- comname,
- empid,
- empname,
- reltype,
- relid,
- ljmail
- FROM LJFIEB_ljmail_msgmx
- WHERE (SerialNum = :arg_id)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '接收邮件明细失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_ljmail_fj
- (msgid,
- printid,
- filename,
- fileblob)
- SELECT :ll_msgid,
- printid,
- filename,
- fileblob
- FROM LJFIEB_ljmail_fj
- WHERE (SerialNum = :arg_id)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '接收邮件附件失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- NEXT
- GOTO ext
- ext:
- Destroy uo_box
- IF rslt = 1 THEN
- COMMIT Using commit_transaction;
- ELSE
- ROLLBACK Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uf_setread (long arg_msgid, long arg_ifread, ref string arg_msg);Int rslt = 1
- UPDATE u_ljmail_msg
- SET ifread = :arg_ifread
- WHERE msgid = :arg_msgid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新邮件已经标记失败,' + commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF commit_transaction.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '邮件已经被删除,请刷新后再试'
- GOTO ext
- END IF
- ext:
- IF rslt = 1 THEN
- COMMIT Using commit_transaction;
- ELSE
- ROLLBACK Using commit_transaction;
- END IF
- RETURN rslt
- end function
- on uo_ljmail_msg.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_ljmail_msg.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|