þÿ#include <wobject/xstring.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xdwgrid.hpp> #include <xcontrol/xcell.hpp> #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) MessageBusinessWin : public xframe { public: //xdwgrid dw_list; xdwtable dw_base; xnode m_agentNode; //Agent Condition xwin sheet; bool readonly; xstring MessageID; xstring bill; public: MessageBusinessWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static MessageBusinessWin* CreateInstance(void* implPtr, void* hWnd) { MessageBusinessWin* pWin = new MessageBusinessWin(implPtr, (HWND)hWnd); return pWin; } int SetAgent() { return 1; xstring xfNodeAgentArea = L"agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); if (m_agentNode) { SetAgentNode(anode, m_agentNode); } else { KXMLDOMElement xframeElement = GetElement(); KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); if (agent) { xstring s = agent.xml(); m_agentNode = SetAgentNode(anode, s); } } return 1; } //q&p¹oÀm;YtQýep int OnSetFocus(TEvent* evt, LPARAM p) { //‘Ín]åQwga SetAgent(); return 1; } int OnItemChanged(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; xstring colname = hdr.colname; xstring value = hdr.data; int row = hdr.row; if (colname == L"Category") { if (value == L"O›^”UFu3‹÷") { dw_base.SetItemString(1, L"Receiver", L"fdp-011"); dw_base.SetItemString(1, L"Subject", L"‹÷mûR "); } return 1; bool changed = false; xml x = ViewObject::RetrieveData(L"/sale/data/business/message/maint", L"typ", value); if (x) { xstring xpage_ = x.documentElement().getAttribute(L"xpage"); xstring templaterpt = x.documentElement().getAttribute(L"template"); if (xpage_ != L"") { xstring s = L"<hbox name='agent'>"; s += L"<xpage url='" + xpage_ + L"' name='contentex'/>"; s += L"</hbox>"; SetAgentNode(GetAgentNode(L"agent"), s); SwitchLayer(L"sheet2", L"frame"); sheet = GetChildWin(L"contentex"); changed = true; } } if (!changed) { sheet == 0; SwitchLayer(L"sheet1", L"frame"); } } return 1; } //T}NäSÑ^Qýep int OnCmdDispatch(xstring comdid) { if (comdid == L"xmSend") { if (!readonly) OnSend(); return 1; } else if (comdid == L"xmSave") { if (!readonly) OnSave(); return 1; } else if (comdid == L"xmCancel") { CloseWindow(); return 1; } if (sheet && comdid != L"") { int ret = SendMessageW(sheet.GetHWND(), 0x401, comdid, 0); if (ret) return ret; } return 0; } //T}NäYtN‹Nö int OnXCommand(TEvent* evt, LPARAM p) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnDWClick(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; xstring value = hdr.data; xstring colname = hdr.colname; if (value == L"e6NöNº:") { xaserverarg arg2; //xaserverarg parg2 = GetArg(); OpenWindow(L"dev:xpage[UserGroupPersonSelect.vx]", arg2); if (arg2.GetArgString(L"comdid") == L"xmOk") { xstring data = arg2.GetArgString(L"data"); xml x2 ; x2.loadXML(data); KXMLDOMNodeList nodes = x2.selectNodes(L"/root/item"); trace(x2.xml()); int len = nodes.length(); xstring Names = L""; for (int i = 0; i < len; i++) { KXMLDOMElement t = nodes.item(i); if (t.getAttribute(L"Name")) { xstring Name = t.getAttribute(L"Name"); if (Names == L"") Names = Name; else if (Names.find(Name) < 0) Names += L";" + Name; } } dw_base.SetItemString(1, L"Receiver", Names); } return 1; } } int OnAttachEvent() { //~Ñ[š]åQwgap¹QûN‹Nö AttachEvent(L"WM_XCOMMAND", (FEvent)&MessageBusinessWin::OnXCommand); //ƒ·SÖq&p¹N‹Nöÿ u(NŽ‘Ín]åQwga AttachEvent(L"WM_SETFOCUS", (FEvent)&MessageBusinessWin::OnSetFocus); AttachEvent(L"dw_base", L"DWV_ITEMCHANGED", (FEvent)&MessageBusinessWin::OnItemChanged); AttachEvent(L"dw_base", L"DWV_CLICKED", (FEvent)&MessageBusinessWin::OnDWClick); return 1; } int OnSave() { xml x ; xaserverarg arg1 = MakeArg(L"scriptbox"); xstring murl = L"/sale/data/Business/message/update"; if (MessageID == L"") murl = L"/sale/data/Business/message/add2"; if (xurl::get(murl, arg1.GetString(), x) != 1) { alert(L"error1:\r\n" + xstring(x.text())); return 1; } if (MessageID == L"") MessageID = dw_base.GetGuid(1); alert(L"]òOÝ[XR0ƒIz?{±"); return 1; xaserverarg arg ; if (sheet) { int val = cast(arg as int); SendMessageW(sheet.GetHWND(), 0x401, L"GetEntityData:" + xstring(val), 0); xstring data = arg.GetArgString(L"EntityData"); murl = L"/sale/data/Business/message/attach/update"; arg1.AddArg(L"url", L"message/attach"); arg1.AddArg(L"content", data); arg1.AddArg(L"param", MessageID); if (xurl::get(murl, arg1.GetString(), x) != 1) { alert(L"error2:\r\n" + xstring(x.text())); return 1; } } return 1; } int OnSend() { xml x ; //xaserverarg arg1 = MakeArg(L"outbox"); xaserverarg arg1 = MakeArg(L"inbox"); xstring murl = L"/sale/data/Business/message/update"; if (MessageID == L"") murl = L"/sale/data/Business/message/add2"; trace(arg1.GetString()); if (xurl::get(murl, arg1.GetString(), x) != 1) { alert(L"error1:\r\n" + xstring(x.text())); return 1; } if (MessageID == L"") MessageID = dw_base.GetGuid(1); alert(L"Sѐ[Œb"); CloseWindow(); return 1; xaserverarg arg; if (sheet) { int val = cast(arg as int); SendMessageW(sheet.GetHWND(), 0x401, L"GetEntityData:" + xstring(val), 0); xstring data = arg.GetArgString(L"EntityData"); murl = L"/sale/data/Business/message/attach/update"; arg1.AddArg(L"url", L"message/attach"); arg1.AddArg(L"content", data); arg1.AddArg(L"param", MessageID); if (xurl::get(murl, arg1.GetString(), x) != 1) { alert(L"error2:\r\n" + xstring(x.text())); return 1; } } return 1; } xaserverarg MakeArg(xstring folder) { //ThingImpl:AddMessage($MessageID,$Folder,$EntityNo, $EntityID, $Subject, $Category, $Reciever, $Content) //ThingImpl:UpdateMessage($MessageID,$Folder,$EntityNo, $EntityID, $Subject, $Category, $Reciever, $Content) xaserverarg arg ; if (MessageID == L"") { dw_base.SetGuid(1, ViewObject::GetGuid()); arg.AddArg(L"MessageID", dw_base.GetGuid(1)); arg.AddArg(L"EntityID", dw_base.GetGuid(1)); } else { arg.AddArg(L"MessageID", MessageID); arg.AddArg(L"EntityID", MessageID); } arg.AddArg(L"Folder", folder); arg.AddArg(L"EntityNo", dw_base.GetItemString(1, L"EntityNo")); arg.AddArg(L"Subject", dw_base.GetItemString(1, L"Subject")); arg.AddArg(L"Category", dw_base.GetItemString(1, L"Category")); arg.AddArg(L"Reciever", dw_base.GetItemString(1, L"Receiver")); arg.AddArg(L"Note", dw_base.GetItemString(1, L"Note")); //arg.AddArg(L"Content", dw_base.GetItemString(1,L"Content")); arg.AddArg(L"Content", GetControl(L"content").GetText()); arg.AddArg(L"Content2", bill); return arg; } int OnRetrieve() { xml xl; xaserverarg arg; arg.AddArg(L"id", MessageID); if (getUrl(L"/sale/data/business/list/fetch", arg.GetString(), x) != 1) { trace(x.GetXmlDoc().text()); return -1; } else { dw_base.Retrieve(x); dw_base.Redraw(); if (readonly) dw_base.SetReadOnly(true); if (x.selectSingleNode(L"root/Content")) { xstring str = x.selectSingleNode(L"root/Content").text; str = str.replace(L"\n", L"\r\n"); GetControl(L"content").SetText(str); } //alert(x.GetXml()); if (x.GetXmlDoc().selectSingleNode(L"root/Content2")) { xstring str2 = x.selectSingleNode(L"root/Content2").text; xstring tm = L""; xstring EntityID = L""; xstring Category = L""; int pos = str2.find(L"EntityID=L"); if (pos >= 0) { tm = str2.mid(pos + L"EntityID=L".length(), 64); if (tm.find(L" ") > 0) tm = tm.left(tm.find(L" ")); EntityID = tm; } pos = str2.find(L"Category=L"); if (pos >= 0) { tm = str2.mid(pos + L"Category=L".length(), 64); if (tm.find(L" ") > 0) tm = tm.left(tm.find(L" ")); Category = tm; } trace(L"EntityID:" + EntityID); trace(L"Category:" + Category); if (EntityID != L"" && Category != L"") { xstring eleStr = L"<row EntityID='" + EntityID + L"'"; eleStr += L" category='" + Category + L"'/>"; bill = L"EntityID=L" + EntityID + L" Category=L" + Category; ShowDetail(eleStr); } } } return 1; } int ShowDetail(xstring eleStr) { xaserverarg arg ; arg.AddArg(L"content", eleStr); xml doc; if (getUrl(L"/sale/data/vpage/vstart/task", arg.GetString(), doc) != 1) { trace(L"error->:" + xstring(doc.xml())); return 0; } if (doc.xml() == L"") return -1; htmlctrl ht = GetControl(L"taskinfo"); ht.SetContent(doc.xml()); ht.Redraw(); return 1; } int onload() { dw_base = GetControl(L"dw_base"); dw_base.openUrl(L"/sale/view/business3/template/message/maint"); dw_base.SetColHeaderHeight(0); dw_base.SetRowSelectorWidth(0); dw_base.SetHScrollState(false); dw_base.SetVScrollState(false); dw_base.SetItemString(1, L"Category", L"fn"); OnAttachEvent(); readonly = false; MessageID = L""; bill = L""; SetAgent(); if (GetWinParam()) { int p = GetWinParam(); xaserverarg arg =GetArg(); MessageID = arg.GetArgString(L"id"); if (arg.GetArgString(L"readonly") == L"1") readonly = true; OnRetrieve(); if (arg.GetArgString(L"EntityID") != L"") { xstring str = L"<row EntityID='" + xstring(arg.GetArgString(L"EntityID")) + L"'"; str += L" category='" + xstring(arg.GetArgString(L"EntityName")) + L"'/>"; bill = L"EntityID=L" + xstring(arg.GetArgString(L"EntityID")) + L" Category=L" + arg.GetArgString(L"EntityName"); ShowDetail(str); } } return 1; } int onloaded() { return 1; } };