From c0d7d316f6f352ae0efd95a46c83ff99eb9e7925 Mon Sep 17 00:00:00 2001 From: LiFan <2308045698@qq.com> Date: 星期三, 17 七月 2024 17:45:54 +0800 Subject: [PATCH] update --- /dev/null | 513 ----------------- jrj/project/business/SystemSettings/Organization.cpp | 187 ++++++ jrj/project/business/SystemSettings/Buglist.Developer.hxsoft.cpp | 332 +++++++++++ jrj/project/business/SystemSettings/ProcessManagement.cpp | 184 ++++++ jrj/project/business/SystemSettings/OrganizationBase.cpp | 189 ++++++ jrj/project/business/SystemSettings/BugMaint.Developer.hxsoft.cpp | 369 ++++++++++++ jrj/ext-jrj/ext-jrj.vcxproj | 11 7 files changed, 1,266 insertions(+), 519 deletions(-) diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj index 580b054..77dc281 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj +++ b/jrj/ext-jrj/ext-jrj.vcxproj @@ -826,9 +826,10 @@ <ClCompile Include="..\project\business\SystemSettings\BindComputer.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> </ClCompile> - <ClCompile Include="..\project\business\SystemSettings\Buglist.Developer.hxsoft_A.cpp"> + <ClCompile Include="..\project\business\SystemSettings\Buglist.Developer.hxsoft.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\BugMaint.Developer.hxsoft.cpp" /> <ClCompile Include="..\project\business\SystemSettings\Data.config.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> </ClCompile> @@ -844,9 +845,6 @@ <ClCompile Include="..\project\business\SystemSettings\FlowTermSelect.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> - <ClCompile Include="..\project\business\SystemSettings\GroupManagerList_A.cpp"> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> - </ClCompile> <ClCompile Include="..\project\business\SystemSettings\level.Customer.v3.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> </ClCompile> @@ -856,10 +854,11 @@ <ClCompile Include="..\project\business\SystemSettings\maint.Level.Customer3.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> - <ClCompile Include="..\project\business\SystemSettings\Organization_A.cpp"> + <ClCompile Include="..\project\business\SystemSettings\Organization.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> </ClCompile> - <ClCompile Include="..\project\business\SystemSettings\ProcessManagement_A.cpp"> + <ClCompile Include="..\project\business\SystemSettings\OrganizationBase.cpp" /> + <ClCompile Include="..\project\business\SystemSettings\ProcessManagement.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\SystemSettings\Resource.select.data.config.cpp"> diff --git a/jrj/project/business/SystemSettings/BugMaint.Developer.hxsoft.cpp b/jrj/project/business/SystemSettings/BugMaint.Developer.hxsoft.cpp new file mode 100644 index 0000000..ec10349 --- /dev/null +++ b/jrj/project/business/SystemSettings/BugMaint.Developer.hxsoft.cpp @@ -0,0 +1,369 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xlayersheet.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) BugMaintWin : public xframe + { + public: + xdwtable dw_base; + xnode m_agentNode; //Agent Condition + + xstring m_EntityID; + xstring m_EntityType; + xstring m_EntityConnect; + xstring m_ConnectID; + + xcontrol m_Edit; + htmlctrl m_Html; + xcombobox m_cb; + public: + BugMaintWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static BugMaintWin* CreateInstance(void* implPtr, void* hWnd) + { + BugMaintWin* pWin = new BugMaintWin(implPtr, (HWND)hWnd); + return pWin; + } + int SetAgent() + { + 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; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + //SetAgent(); + return 1; + } + + int OnSave() + { + xaserverarg arg ; + + + xml xbase ; + + dw_base.AcceptText(); + dw_base.DwUpdateAllTo(xbase); + + arg.AddArg(L"content",xbase.xml()); + + if(getUrl(L"/workflow/action/BugList/bill.update",arg.GetString(),xbase) == 1) + { + dw_base.ResetUpdateStatus(); + alert(L"保存成功!"); + m_EntityID = dw_base.GetGuid(1); + + return 1; + } + else + { + alert(L"添加失败!"); + return -1; + } + return 1; + } + + int AppendItem(xml x,KXMLDOMElement r,xstring name, xstring value) + { + KXMLDOMElement e = x.createElement(name); + e.text() = value; + r.appendChild(e); + return 1; + } + + int Init() + { + if(m_EntityID == L"") return -1; + + xml x ; + + xaserverarg arg ; + + arg.AddArg(L"EntityID",m_EntityID); + arg.AddArg(L"EntityType",m_EntityType); + arg.AddArg(L"EntityConnect",m_EntityConnect); + if(xurl::get(L"/sale/data/Commentary/entity/notelist",arg.GetString(),x) == 1) + { + m_Html.SetContent(x.xml()); + m_Html.Redraw(); + } + return 1; + } + + int showAtt() + { + xnode anode =GetAgentNode(L"att"); + int s = m_cb.GetCount(); + xml x ; + + x.loadXML(L"<vbox/>"); + KXMLDOMElement ele = x.documentElement(); + int i=0; + for(i=0; i<s; i++) + { + xstring tmp = m_cb.GetLBText(i); + KXMLDOMElement e = x.createElement(L"hbox"); + e.setAttribute(L"height", L"20"); + KXMLDOMElement l = x.createElement(L"xlabel"); + l.setAttribute(L"caption", L""+tmp); + KXMLDOMElement b = x.createElement(L"xtoolbutton"); + b.setAttribute(L"width", L"18"); + b.setAttribute(L"name", L"att_"+i.toString()); + b.setAttribute(L"image", L"1,5"); + e.appendChild(l); + e.appendChild(b); + ele.appendChild(e); + KXMLDOMElement g = x.createElement(L"xlabel"); + g.setAttribute(L"height", L"2"); + g.setAttribute(L"style", L"background-color:#000000"); + ele.appendChild(g); + } + SetAgentNode (anode,ele.xml()); + anode.SetWidthHeight(-1, i * 20 + 1); + return 1; + } + + int addAtt() + { + xstring guid = publiccode::GetGuid(); + xstring str = guid.left(2); + xstring ret = xaserver::UploadFile(L"attachment"+str, guid+L".jpg".GetHWND(),L"",false); + int nIndex = m_cb.AddItem(ret, guid+L".jpg"); + showAtt(); + return 1; + } + + int delAtt(xstring no) + { + int nIndex = no.toInt(); + m_cb.DeleteItem(nIndex); + showAtt(); + return 1; + } + + KXMLDOMElement getAtt() + { + int s = m_cb.GetCount(); + xml x ; + + x.loadXML(L"<Attachment/>"); + KXMLDOMElement ele = x.documentElement(); + int i=0; + for(i=0; i<s; i++) + { + xstring tmp = m_cb.GetLBText( i); + xstring tmp2 = m_cb.GetItemData(i); + KXMLDOMElement e = x.createElement(L"item"); + e.setAttribute(L"name", L""+tmp); + e.setAttribute(L"file", L""+tmp2); + ele.appendChild(e); + } + return ele; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if(comdid==L"xmOK") + { + + if(m_EntityID == L"") return 1; + + //trace(L"id:"+m_EntityID); + + xml x ; + + xaserverarg arg ; + + xstring value = m_Edit.GetText(); + if(value == L"") + { + alert(L"请填写批注!"); + return 1; + } + + x.loadXML(L"<Commentary update.new='1' update.modify='1'/>"); + KXMLDOMElement ele = x.documentElement(); + AppendItem(x, ele, L"CommentaryID", publiccode::GetGuid()); + AppendItem(x, ele, L"EntityID", m_EntityID); + AppendItem(x, ele, L"EntityType", m_EntityType); + AppendItem(x, ele, L"Remark", value); + AppendItem(x, ele, L"ParentConnect", m_EntityConnect); + AppendItem(x, ele, L"ParentCommentaryID", m_ConnectID); + AppendItem(x, ele, L"CreatorID", xaserver::GetUserId()); + ele.appendChild(getAtt()); + + arg.AddArg(L"content", L"<root>"+(xstring)ele.xml()+L"</root>"); + + if(getUrl(L"/workflow/action/Commentary/bill.update",arg.GetString(),x) == 1) + { + m_Edit.SetText(L""); + m_cb.ResetContent(); + Init(); + showAtt(); + return 1; + } + else + { + alert(L"添加失败!"); + return -1; + } + } + else if(comdid==L"xmAtt") + { + addAtt(); + } + else if(comdid.left(4)==L"att_") + { + delAtt(comdid.right(comdid.length() - 4)); + } + else if(comdid==L"xmClose") + { + CloseWindow(); + return 1; + } + else if(comdid==L"xmSave") + { + return OnSave(); + } + return 0; + } + + int OnHtmlClick(TEvent* evt, int p) + { + ref HTMLNMHDR p = evt.pnmh; + const xstring d = m_Html.GetData(p.object); + if(d == L"") return -1; + xstring file = d.mid(0, d.find(L"|##@@|",0)); + xstring name = d.mid(d.find(L"|##@@|",0)+6, d.length()); + + + xaserver::CreateDirectory(L"C:/Temp"); + xstring str = file.left(2); + xstring ext = L""; + if(name.find(L".")>=0) ext = name.mid(name.find(L"."),name.length()); + xstring sfile = file.left(file.length() - 4); + //trace(L"--"+ext +L" " + L"/business/attachment/"+str+L"/"+ file); + //int openRet = xaserver::DownLoadFile(GetServerUrl(),L"/business/attachment/"+str+L"/"+ file,name,L"C:/Temp/"+name); + int openRet = xaserver::DownLoadFile(GetServerUrl(),L"/business/attachment/"+str+L"/"+ file,L"",L"C:/Temp/"+sfile+ext); + if(openRet < 0) + { + alert(L"文件打开失败1!"); + return -1; + } + //openRet = ShellExecute(0,L"open",L"C:/Temp/"+name,L"",L"",5); + openRet = ShellExecute(0,L"open",L"C:/Temp/"+sfile+ext,L"",L"",5); + if(openRet < 32) + { + alert(L"文件打开失败2!"); + return -1; + } + + return -1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&BugMaintWin::OnXCommand); + AttachEvent(L"note",L"HTC_OBJECTCLICKED", (FEvent)&BugMaintWin::OnHtmlClick); + return 1; + } + + /* + int OnRetrieve() + { + xml x ; + + xaserverarg arg ; + + arg.AddArg(L"xxx",L"xxx"); + if (getUrl(L"",arg.GetString(),x)!=1) + { + trace(x.text()); + return -1; + }else + { + //dw_list.Retrieve(x); + //dw_list.Redraw(); + } + return 1; + } + */ + + int onload() + { + SetArg(); + dw_base = GetControl(L"dw_base"); + dw_base.openUrl(L"/sale/view/Developer/bug/maint"); + dw_base.SetColHeaderHeight(0); + dw_base.SetRowSelectorWidth(0); + dw_base.SetHScrollState(false); + dw_base.SetVScrollState(false); + + OnAttachEvent(); + + m_Edit = GetControl(L"Txt"); + + m_Html = GetControl(L"note"); + + m_cb = GetControl(L"attlist"); + + m_EntityID = L""; + + m_EntityType = L"BugList"; + m_EntityConnect = L""; + m_ConnectID = L""; + + xstring Reciever = publiccode::GetUser().name; + dw_base.SetItemString(1,L"Reciever",Reciever); + + if(GetWinParam()) + { + xaserverarg arg=GetArg() ; + + m_EntityID = arg.GetArgString(L"EntityID"); + m_EntityType = arg.GetArgString(L"m_EntityType"); + m_EntityConnect = arg.GetArgString(L"m_EntityConnect"); + } + Init(); + return 1; + } + + int onloaded() + { + //SetAgent(); + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft.cpp b/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft.cpp new file mode 100644 index 0000000..5ce192c --- /dev/null +++ b/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft.cpp @@ -0,0 +1,332 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xlayersheet.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) BugListWin : public xframe + { + public: + xdwgrid dw_list; + xnode m_agentNode; //Agent Condition + + xstring m_EntityID; + xstring m_EntityType; + + htmlctrl m_Html; + xcontrol m_Edit; + xcombobox m_cb; + public: + BugListWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static BugListWin* CreateInstance(void* implPtr, void* hWnd) + { + BugListWin* pWin = new BugListWin(implPtr, (HWND)hWnd); + return pWin; + } + int SetAgent() + { + 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; + } + + int OnRowChanged(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + + m_EntityID = dw_list.GetGuid(row); + RetrieveNote(row); + + return 1; + } + + static stdcall int GetModuleFileName(int hModule, xstring lpFileName, int nSize) native from "kernel32.dll" alias "GetModuleFileNameW"; + static stdcall int PathRemoveFileSpec(xstring lpFileName) native from "shlwapi.dll" alias "PathRemoveFileSpecW"; + + xstring GetModulePath() + { + xstring str = L""; + str = str.space(255); + GetModuleFileName(0, str, 250); + PathRemoveFileSpec(str); + return str; + } + + xstring GetModuleTmpPath() + { + xstring str = L""; + str = str.space(255); + GetModuleFileName(0, str, 250); + PathRemoveFileSpec(str); + xstring tmp = str + L"\\Temp"; + xaserver::CreateDirectory(tmp); + return tmp; + } + + int RetrieveNote(int row) + { + if (row == 0) row = dw_list.GetRow(); + if (row < 1) return 1; + + xstring EntityID = dw_list.GetGuid(row); + xml x ; + + xaserverarg arg ; + + arg.AddArg(L"EntityID", EntityID); + if (xurl::get(L"/sale/data/Commentary/entity/notelist", arg.GetString(), x) == 1) + { + m_Html.SetContent(x.xml()); + m_Html.Redraw(); + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + SetAgent(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if (comdid == L"xmAdd") + { + OpenWindow(L"dev:xpage[BugMaint.Developer.hxsoft.vx]", 0); + return 1; + } + else if (comdid == L"xmRetrieve") + { + OnRetrieve(); + return 1; + } + else if (comdid == L"xmAtt") + { + addAtt(); + } + else if (comdid == L"xmMsg") + { + OnAddItem(); + return 1; + } + else if (comdid == L"xmDelete") + { + OnDelete(); + return 1; + } + return 0; + } + + int OnDelete() + { + int row = dw_list.GetRow(); + if (row < 1) + return 1; + KXMLDOMElement ele = dw_list.GetRowElement(row); + xstring BugListID = ele.selectSingleNode(L"BugListID").text(); + xml x ; + + xaserverarg arg ; + + arg.AddArg(L"BugListID", BugListID); + if (getUrl(L"/sale/data/BugList/delete/buglist", arg.GetString(), x) != 1) + { + xstring error = x.text(); + alert(L"err:" + error); + return 1; + } + alert(x.text()); + OnRetrieve(); + return 1; + } + + int addAtt() + { + xstring guid = publiccode::GetGuid(); + xstring str = guid.left(2); + xstring ret = xaserver::UploadFile(L"attachment" + str, guid + L".jpg", GetHWND(), L"", false); + OnAddItem(ret, guid + L".jpg"); + return 1; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&BugListWin::OnXCommand); + //获取焦点事件,用于重置工具条/sale/data/buglist/list/buglist" + AttachEvent(L"WM_SETFOCUS", (FEvent)&BugListWin::OnSetFocus); + AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&BugListWin::OnRowChanged);//绑定行更改触发事件OnRowChanged + AttachEvent(L"note", L"HTC_OBJECTCLICKED", (FEvent)&BugListWin::OnHtmlClick); + return 1; + } + + int OnHtmlClick(TEvent* evt, int p) + { + ref HTMLNMHDR p = evt.pnmh; + const xstring d = m_Html.GetData(p.object); + if (d == L"") return -1; + xstring file = d.mid(0, d.find(L"|##@@|", 0)); + xstring name = d.mid(d.find(L"|##@@|", 0) + 6, d.length()); + + xstring str = file.left(2); + xstring ext = L""; + if (name.find(L".") >= 0) ext = name.mid(name.find(L"."), name.length()); + xstring sfile = file.left(file.length() - 4); + int openRet = xaserver::DownLoadFile(GetServerUrl(), L"/business/attachment/" + str + L"/" + file, L"", GetModuleTmpPath() + L"\\" + sfile + ext); + if (openRet < 0) + { + alert(L"文件打开失败1!"); + return -1; + } + openRet = ShellExecute(0, L"open", GetModuleTmpPath() + L"\\" + sfile + ext, L"", L"", 5); + if (openRet < 32) + { + alert(L"文件打开失败2!"); + return -1; + } + + return -1; + } + + int AppendItem(xml x, KXMLDOMElement r, xstring name, xstring value) + { + KXMLDOMElement e = x.createElement(name); + e.text() = value; + r.appendChild(e); + return 1; + } + + KXMLDOMElement getAtt(xstring source = L"", xstring file = L"") + { + xml x ; + + x.loadXML(L"<Attachment/>"); + KXMLDOMElement ele = x.documentElement(); + KXMLDOMElement e = x.createElement(L"item"); + e.setAttribute(L"name", source); + e.setAttribute(L"file", file); + ele.appendChild(e); + + return ele; + } + + int OnAddItem(xstring source = L"", xstring file = L"") + { + + xml x ; + + xaserverarg arg ; + + xstring value = m_Edit.GetText(); + if (value == L"") + { + if (source == L"") + { + alert(L"请填写批注!"); + return 1; + } + } + + x.loadXML(L"<Commentary update.new='1' update.modify='1'/>"); + KXMLDOMElement ele = x.documentElement(); + AppendItem(x, ele, L"CommentaryID", publiccode::GetGuid()); + AppendItem(x, ele, L"EntityID", m_EntityID); + AppendItem(x, ele, L"EntityType", m_EntityType); + AppendItem(x, ele, L"Remark", value); + //AppendItem(x, ele, L"ParentConnect", m_EntityConnect); + //AppendItem(x, ele, L"ParentCommentaryID", m_ConnectID); + AppendItem(x, ele, L"CreatorID", xaserver::GetUserId()); + ele.appendChild(getAtt(source, file)); + + arg.AddArg(L"content", L"<root>" + (xstring)ele.xml() + L"</root>"); + + if (getUrl(L"/workflow/action/Commentary/bill.update", arg.GetString(), x) == 1) + { + m_Edit.SetText(L""); + RetrieveNote(0); + return 1; + } + else + { + alert(L"添加失败!"); + return -1; + } + } + + int OnRetrieve() + { + xml x ; + + xaserverarg arg ; + + if (getUrl(L"/sale/data/BugList/list/buglist", arg.GetString(), x) != 1) + { + trace(x.text()); + return -1; + } + else + { + dw_list.Retrieve(x); + dw_list.SetReadOnly(true); + dw_list.Redraw(); + RetrieveNote(0); + } + + return 1; + } + + + int onload() + { + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"/sale/view/Developer/bug/list"); + + m_Html = GetControl(L"note"); + m_Edit = GetControl(L"Txt"); + + m_EntityID = L""; + m_EntityType = L"BugList"; + + dw_list.SetColumnState(L"BugListID", false); + OnRetrieve(); + OnAttachEvent(); + + return 1; + } + + int onloaded() + { + SetAgent(); + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft_A.cpp b/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft_A.cpp deleted file mode 100644 index ca9b3d6..0000000 --- a/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft_A.cpp +++ /dev/null @@ -1,1576 +0,0 @@ -#include <wobject/xstring.hpp> -#include <wobject/xdouble.hpp> -#include <xcontrol/xtreeview.hpp> -#include <xcontrol/xdwgrid.hpp> -#include <xcontrol/ximageview.hpp> - -#include "vbusiness/vframe/maint.vframe.vbusiness.hpp" -#include "viewobject/view.base.hpp" -#include "viewobject/saleorder.view.hpp" -#include "viewobject/quote.view.hpp" -#include "viewobject/shoppingcart.view.hpp" -#include "viewobject/productLibrary.view.hpp" -#include "xcontrol/xcheckbox.hpp" -#include "xcontrol/xshtml.hpp" - -class __declspec(dllexport) ProductLibrary4Win : public xframe -{ -public: - //产品库产品列表 - xdwgrid dw_list; - //购物车产品列表 - xdwgrid dwc_list; - - //产品缓存对象 - //xdataset g_xdoc_product; - //xdataset g_xdoc_shoppingcart; - - xcombobox cbx_goodscar; - //是否多选 - - xnode m_agentNode; //Agent Condition - xtreeview tv_folder; - xstring agentFor; - KXMLDOMElement imageElement; - xstring m_customer; - -public: - ProductLibrary4Win(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} -public: - static ProductLibrary4Win* CreateInstance(void* implPtr, void* hWnd) - { - ProductLibrary4Win* pWin = new ProductLibrary4Win(implPtr, (HWND)hWnd); - return pWin; - } -public: - int FillGoodsCarList() - { - xcombobox xc = GetControl(L"frame:cbx_goodscar"); - if (!xc) return 0; - xml x = ShoppingCartView::GetRoleList(); - if (!x) return 0; - xc.SetText(L"==选择购物车==L"); - - KXMLDOMNodeList nlist = x.selectNodes(L"//item"); - int len = nlist.length(); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - xstring name = e.getAttribute(L"name"); - xc.AddItem( name); - } - return 1; - } - - int SetAgent() - { - 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"[@for='" + agentFor + L"']/*"); - if (agent) - { - bstring s = agent.xml(); - m_agentNode = SetAgentNode(anode, s); - //FillGoodsCarList(); - } - } - return 1; - } - - //焦点激活处理函数 - int OnSetFocus(TEvent * evt, int param) - { - //重置工具条 - SetAgent(); - return 1; - } - - KXMLDOMElement OnGetCarListRowElement(int row = 0) - { - if (row < 1) row = dwc_list.GetRow(); - if (row < 1 || row > dwc_list.GetRowCount()) return KXMLDOMElement(); - KXMLDOMElement e = dw_list.GetRowElement(row); - return e; - } - - int OnShowImage(xstring skuid) - { - ximageview im = GetControl(L"im1"); - //im.RemoveImage(); - im.Reset(); - - xml xp ; - xaserverarg arg_pic; - arg_pic.AddArg(L"SKUID", skuid); - if (xurl::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU", arg_pic.GetString(), xp) != 1) - { - trace(xstring(L"xxx")+xp.xml()); - } - else - { - //trace(skuid+L" "+xp.GetXml()); - imageElement = xp.documentElement(); - KXMLDOMNodeList nlistp = xp.selectNodes(L"ImageList/image"); - int lenp = nlistp.length(); - for (int ip = 0; ip < lenp; ip++) - { - KXMLDOMElement xitem = nlistp.item(ip); - xstring picname = xitem.selectSingleNode(L"PicPath").text(); - xstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); - if (picname == L"/business/products/Thumbs//") - picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; - im.AddImages(picname, (LPTSTR)L""); - } - im.Redraw(); - //win32::SendMessage(im.GetId(),0x000f,0,1); - //win32::InvalidateRect(im.GetId(),cast(0 as ref xrect),true); - } - return 1; - } - - int OnShowImage(xstring skuid, xstring customerItemNo) - { - ximageview im = GetControl(L"im1"); - //im.RemoveImage(); - im.Reset(); - - xml xp ; - xaserverarg arg_pic ; - arg_pic.AddArg(L"SKUID", skuid); - arg_pic.AddArg(L"CustomerID", m_customer); - arg_pic.AddArg(L"CustomerItemNo", customerItemNo); - - if (xurl::get(L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKU", arg_pic.GetString(), xp) != 1) - { - trace(L"error:" + xstring(xp.xml(),true)); - } - else - { - imageElement = xp.documentElement(); - KXMLDOMNodeList nlistp = xp.selectNodes(L"ImageList/image"); - int lenp = nlistp.length(); - for (int ip = 0; ip < lenp; ip++) - { - KXMLDOMElement xitem = nlistp.item(ip); - bstring picname = xitem.selectSingleNode(L"PicPath").text(); - bstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); - if (picname == L"/business/products/Thumbs//") - picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; - im.AddImages(picname, L""); - } - im.Redraw(); - } - return 1; - } - - int OnRowChanged(TEvent * evt, int p) - { - DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; - int row = hdr.row; - - xshtml xs = GetControl(L"html_detail"); - xstring html = makeHtml(row); - xs.SetContent(html); - xs.Redraw(); - - xstring id = dw_list.GetGuid(row); - OnShowImage(id); - trace(id); - return 1; - } - - int OnGoodsCarRowChanged(TEvent * evt, int p) - { - DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; - int row = hdr.row; - - xshtml xs = GetControl(L"html_detail"); - xstring html = makeGoodscarHtml(row); - xs.SetContent(html); - xs.Redraw(); - if (m_customer) - { - xstring id = dw_list.GetItemString(row, L"SKUID"); - xstring customerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); - OnShowImage(id, customerItemNo); - } - - return 1; - } - - int DeleteRow(int row) - { - int IDOK = 1; - int MB_OKCANCEL = 1; - int MB_ICONQUESTION = 32; - if (MessageBoxW(GetHWND(), L"确认删除指定的项,删除后将不能恢复?", L"提示", MB_OKCANCEL | MB_ICONQUESTION) != IDOK) return 1; - xstring id = dw_list.GetGuid(row); - - if (ProductLibraryView::DeleteItem(id) == 1) dw_list.DeleteRow(0); - return 1; - } - - int SetSelectState(xdwgrid dw_obj, int state) - { - if (state == 1) - { - dw_obj.SetSelectionMode(3); - } - else if (state == -1) - { - dw_obj.SelectRow(0, false); - dw_obj.SetSelectionMode(0); - } - return 1; - } - int OnCkbCLick(TEvent * evt, int p) - { - xcheckbox cbx_1 = GetControl(L"frame:cbx1"); - int state = cbx_1.GetCheck(); - return SetSelectState(dw_list, state); - } - - int OnCkbCLick2(TEvent * evt, int p) - { - xcheckbox cbx_2 = GetControl(L"frame:cbx2"); - int state = cbx_2.GetCheck(); - return SetSelectState(dwc_list, state); - } - - xml GetGoodsPropList(xstring guid) - { - xml x; - xaserverarg arg; - arg.AddArg(L"guid", guid); - if (xurl::get(L"/sale/data/SO/goods/goodsprop/list", arg.GetString(), x) != 1) - { - bstring error = x.text(); - alert(error); - } - return x; - } - - xml GetGoodsPropListEx(xstring guid) - { - xml x; - xstring fields = L"<data>"; - //fields +=L"<field name='HighestPrice' label='最高价'/>"; - //fields +=L"<field name='LowestPrice' label='最低价'/>"; - - //fields +=L"<field name='BulkPrice' label='散货价'/>"; - //fields +=L"<field name='CardPrice' label='纸卡价'/>"; - //fields +=L"<field name='BuyPrice' label='采购价'/>"; - //fields +=L"<field name='SupplierID' label='货源'/>"; - - fields += L"<field name='Packing' label='包装方式'/>"; - fields += L"<field name='PackingRate' label='每箱数量'/>"; - fields += L"<field name='VolumeDesc' label='包装尺码'/>"; - fields += L"<field name='GWPerPkg' label='毛重'/>"; - fields += L"<field name='NWPerPkg' label='净重'/>"; - //fields +=L"<field name='DeveloperID' label='开发人员'/>"; - fields += L"<field name='AttributeValue_1' label='产品属性'/>"; - //fields +=L"<field name='Remark' label='备注'/>"; - - fields += L"</data>"; - x.loadXML(fields); - - return x; - } - - xstring makeHtml(int row) - { - xstring id = dw_list.GetItemString(row, L"@guid"); - xml x = GetGoodsPropList(id); - xml x1 = GetGoodsPropListEx(id); - - xstring html = L"<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'>"; - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >编号:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"SKUNo") + - L"</span> <span style='font-weight:700;width:50;font-size:10pt' >类项:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"RefNo") + - L"</span></div>"; - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >公司型号:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"GoodsNo") + - L"</span></div>"; - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >品名:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"CName") + - L"</span></div>"; - if (dw_list.GetItemString(row, L"CSpec") != L"") - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >规格:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"CSpec") + - L"</span></div>"; - - KXMLDOMNodeList fieldsEx = x1.selectNodes(L"data/field"); - xstring ls_detail = L""; - xstring ls_item = L""; - xstring name; - xstring label; - int len = fieldsEx.length(); - int i = 0; - - for (i = 0; i < len; true) - { - int cnt = 0; - ls_item = L""; - while (cnt < 2) - { - name = fieldsEx.item(i).selectSingleNode(L"@name").text(); - label = fieldsEx.item(i).selectSingleNode(L"@label").text(); - ls_item += L"<td>" + label + L"</td>" + L"<td style='text-align:center'>" + dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; - cnt++; - i++; - if (i == len)break; - } - ls_detail += L"<tr>" + ls_item + L"</tr>"; - } - html += (xstring)L"<div style='margin-left:8px;margin-right:16px;'>" + - + L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" - + ls_detail - + L"</table>" - + L"</div>"; - - xstring ls_star = L""; - KXMLDOMNodeList fields = x.selectNodes(L"data/field"); - len = fields.length(); - - ls_detail = L""; - if (len > 0) - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >技术要求:</span></div>"; - for (i = 0; i < len; true) - { - ls_item = L""; - - int count = 0; - while (count < 2) - { - name = fields.item(i).selectSingleNode(L"@name").text(); - label = fields.item(i).selectSingleNode(L"@label").text(); - if (name == L"QualityTerm" || name == L"PackTerm" || label == L"质量" || label == L"包装质量" || label == L"技术要求") - { - i++; - if (i >= len)count = 2; - continue; - } - else if (dw_list.GetItemString( row, (LPCTSTR)name) == L"") - { - KXMLDOMNodeList options = fields.item(i).selectNodes(L"item"); - int tlen = options.length(); - xstring terms = L""; - for (int k = 0; k < tlen; k++) - { - if (xstring(options.item(k).text())) - { - if (k > 0) terms += L", L"; - terms += (xstring)L"[" + options.item(k).text() + L"]"; - } - } - ls_star += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >" + label + L"*:</span><span style='width:90;font-size:10pt'>" + terms + L"</span></div>"; - } - else - { - ls_item = L"<td>" + label + L"</td>" + L"<td>" + dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; - count++; - } - i++; - if (i >= len)count = 2; - } - ls_item = L"<tr>" + ls_item + L"</tr>"; - ls_detail += ls_item; - } - - html += (xstring)L"<div style='margin-left:8px;margin-right:16px;'>" + - +L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" - + ls_detail - + L"</table>" - + L"</div>"; - if (dw_list.GetItemString(row, L"QualityTerm") != L"") - { - html += L"<div style='height:12px'/>"; - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >质量:</span></div>"; - html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row, L"QualityTerm") + L"</span></div>"; - } - - if (dw_list.GetItemString(row, L"PackTerm") != L"") - { - html += L"<div style='height:12px'/>"; - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >包装质量:</span></div>"; - html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row, L"PackTerm") + L"</span></div>"; - } - - if (dw_list.GetItemString( row, L"Remark") != L"") - { - //html += L"<div style='height:12px'/>"; - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >备注:</span></div>"; - html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString( row, L"Remark") + L"</span></div>"; - } - - html += L"<div style='height:24px'/>"; - - //星标项 - html += ls_star; - - //显示图片 - /* - if (id != L"") - { - xml xp=new xml; - xp.setNativePointer(xml::CreateInstance()); - xaserverarg arg_pic=new xaserverarg; - arg_pic.setNativePointer(arg_pic.CreateInstance()); - arg_pic.AddArg(L"SKUID",id); - if(url::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1) - { - trace(L"xxx",xp.GetXml()); - }else { - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >图片:</span>" ; - KXMLDOMElement ep= xp.selectSingleNode(L"ImageList"); - if (ep) - { - if (ep.SelectNodes(L"image")){ - KXMLDOMNodeList nlistp = ep.SelectNodes(L"image"); - int ip=0; - int lenp = nlistp.length; - for(ip=0;ip<lenp;ip++) - { - KXMLDOMElement xitemp = nlistp.item(ip); - xstring filename = xitemp.selectSingleNode(L"PicPath").text; - //trace(filename); - html += L"<control visible='layer' controlclass='ximage' data='' src='http://192.168.7.241:7001" + filename +L"'/>"; - } - } - } - html += L"</div>"; - } - }else { - xstring picname = L"1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,L"ImgName"); //ItemID+L".jpg"; - xstring str = picname.mid(0,2); - str = str.upper(); - xstring serversrc =L"http://192.168.7.241:1001/business/products/chanpin/"+str+L"/"+picname; - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >图片:</span>"; - html += L"<control visible='layer' controlclass='ximage' data='' src='"+ serversrc +L"'/></div>"; - } - */ - html += L"</body></html>"; - //trace(html); - return html; - } - - xstring makeGoodscarHtml(int row) - { - xstring No = dwc_list.GetItemString(row, L"RefNo");//获取属性值id - xml x = GetGoodsPropList(No); - - xstring html = L"<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>"; - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >编号:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"No") + - L"</span></div>"; - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >品名:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"CName") + - L"</span></div>"; - html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >规格:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"CSpec") + - L"</span></div>"; - - KXMLDOMNodeList fields = x.selectNodes(L"data/field"); - int len = fields.length(); - html += (xstring)L"<table>" + - L"<colgroup span='1' width='80'/>" + - L"<colgroup span='1' width='120'/>" + - L"<colgroup span='1' width='420'/>"; - html += L"<tr>"; - html += L"<td style='text-align:center'>编号</td><td style='text-align:center'>项目</td><td style='text-align:center'>内容</td>"; - html += L"</tr>"; - for (int i = 0; i < len; i++) - { - xstring name = fields.item(i).selectSingleNode(L"@name").text(); - xstring label = fields.item(i).selectSingleNode(L"@label").text(); - html += L"<tr>"; - if (i == 0) - html += L"<td rowspan='" + xstring(len) + L"'>" + No + L"</td><td >" + label + L"</td><td >" + L"</td>"; - else - html += L"<td >" + label + L"</td><td >" +dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; - html += L"</tr>"; - } - - html += L"<tr>"; - html += L"<td rowspan='3'>" +dw_list.GetItemString( row, L"PackCode") + L"</td><td >包装方式</td><td >" + - dw_list.GetItemString(row, L"CPack") + L"</td>"; - html += L"</tr>"; - html += L"<tr height='48'>"; - html += L"<td >包装要求</td><td >" +dw_list.GetItemString( row, L"PackQualityTerm") + L"</td>"; - html += L"</tr>"; - html += L"<tr>"; - html += L"<td >侧唛</td><td ></td>"; - html += L"</tr>"; - - html += L"<tr height='72'>"; - html += L"<td>" +dw_list.GetItemString( row, L"QualityCode") + L"</td><td >质量要求</td><td >" + - dw_list.GetItemString(row, L"QualityTerm") + L"</td>"; - html += L"</tr>"; - - html += L"</table>"; - - html += L"</body></html>"; - return html; - - } - - int CarGoodsDelete() - { - return 1; - } - - xstring Up(xstring name) { - xstring str = name.mid(0, 2); - str = str.toUpper(); - return xaserver::UploadFile(L"product" + str, name + L".jpg", GetHWND(), L"", false); - } - - int OnAddImage() { - if (m_customer != L"") return OnAddImageEx(); - int row = dw_list.GetNextSelectRow(1); - if (row < 1) row = dw_list.GetRow(); - if (row < 1 || row > dw_list.GetRowCount()) return 0; - - KXMLDOMElement e = dw_list.GetRowElement(row); - xstring skuid = dw_list.GetItemString( row, L"@guid"); - xstring SKUNo = dw_list.GetItemString( row, L"SKUNo"); - xstring id = ViewObject::GetGuid(); - xstring ret1 = Up(id); - if (ret1 == L"-1") return -1; - if (ret1 == L"0") - { - alert(L"上传图片失败"); - return -1; - } - xstring originfile = ret1; - xstring ext = originfile.right(7); - if (ext.find(L".") >= 0) - ext = ext.mid(ext.find(L".") + 1, 9999); - else - ext = L"jpg"; - - // 图片名加入数据库 - xml x ; - x.loadXML(L"<Item update.new='1' update.modify='1' guid='" + id + L"'>" + - L"<ProductPictureID>" + id + L"</ProductPictureID>" + - L"<OriginFile>" + originfile + L"</OriginFile>" + - L"<FileExt>" + ext + L"</FileExt>" + - L"<SKUID>" + skuid + L"</SKUID>" + - L"<Name>[" + SKUNo.trim() + L"]</Name>" + - L"<FileName>" + id + L".jpg</FileName>" + - L"</Item>" - ); - - xaserverarg arg; - arg.AddArg(L"content", x.xml()); - if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) - { - alert(x.text()); - return -1; - } - dw_list.SetItemString(row, L"pic", L"*"); - dw_list.Redraw(); - //刷新一下界面,显示图片 - OnShowImage(skuid); - return 1; - } - - int OnAddImageEx() { - int row = dwc_list.GetNextSelectRow(1); - if (row < 1) row = dwc_list.GetRow(); - if (row < 1 || row > dwc_list.GetRowCount()) return 0; - - KXMLDOMElement e = dw_list.GetRowElement( row); - xstring skuid =dw_list.GetItemString( row, L"SKUID"); - xstring SKUNo =dw_list.GetItemString( row, L"SKUID/@__displaystring"); - xstring CustomerID = m_customer; - xstring CustomerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); - xstring id = ViewObject::GetGuid(); - xstring ret1 = Up(id); - if (ret1 == L"-1") return -1; - if (ret1 == L"0") - { - alert(L"上传图片失败"); - return -1; - } - xstring originfile = ret1; - xstring ext = originfile.right(7); - if (ext.find(L".") >= 0) - ext = ext.mid(ext.find(L".") + 1, 9999); - else - ext = L"jpg"; - - // 图片名加入数据库 - xml x; - x.loadXML(L"<Item update.new='1' update.modify='1' guid='" + id + L"'>" + - L"<ProductPictureID>" + id + L"</ProductPictureID>" + - L"<OriginFile>" + originfile + L"</OriginFile>" + - L"<FileExt>" + ext + L"</FileExt>" + - L"<SKUID>" + skuid + L"</SKUID>" + - L"<CustomerItemNo>" + CustomerItemNo + L"</CustomerItemNo>" + - L"<CustomerID>" + CustomerID + L"</CustomerID>" + - L"<Name>[" + SKUNo.trim() + L"]</Name>" + - L"<FileName>" + id + L".jpg</FileName>" + - L"</Item>" - ); - - xaserverarg arg; - arg.AddArg(L"content", x.xml()); - if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) - { - alert(x.text()); - return -1; - } - dwc_list.SetItemString(row, L"pic", L"*"); - dwc_list.Redraw(); - //刷新一下界面,显示图片 - OnShowImage(skuid, CustomerItemNo); - return 1; - } - - int OnDeleteImageEx() - { - int row = dwc_list.GetNextSelectRow(1); - if (row < 1) row = dwc_list.GetRow(); - if (row < 1 || row > dwc_list.GetRowCount()) return 0; - - ximageview im = GetControl(L"im1"); - int index = im.GetSelectIndex(); - int count = im.GetImageCount(); - - if (count < 1) return 1; - - KXMLDOMNodeList images = imageElement.selectNodes(L"image"); - int length = images.length(); - if (length < index) return 1; - - int MB_OKCANCEL = 0x00000001; - int IDOK = 1; - if (MessageBox(GetHWND(), L"确认删除当前图片?", L"提示", MB_OKCANCEL) != IDOK) return 1; - - xstring id = images.item(index).selectSingleNode(L"@guid").text(); - - xml x ; - xaserverarg arg; - arg.setNativePointer(arg.CreateInstance()); - xstring str = L"<Item update.modify='1' update.delete='1' guid='" + id + L"'/>"; - arg.AddArg(L"content", str); - if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) - { - alert(x.text()); - return -1; - } - if (count == 1) - { - dwc_list.SetItemString(row, L"pic", L""); - dwc_list.Redraw(); - } - - xstring skuid =dw_list.GetItemString( row, L"SKUID"); - xstring SKUNo =dw_list.GetItemString( row, L"SKUID/@__displaystring"); - xstring CustomerID = m_customer; - xstring CustomerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); - OnShowImage(skuid, CustomerItemNo); - - return 1; - } - - int OnDeleteImage() { - if (m_customer != L"") return OnDeleteImageEx(); - - int row = dw_list.GetNextSelectRow(1); - if (row < 1) row = dw_list.GetRow(); - if (row < 1 || row > dw_list.GetRowCount()) return 0; - - ximageview im = GetControl(L"im1"); - int index = im.GetSelectIndex(); - int count = im.GetImageCount(); - - if (count < 1) return 1; - - KXMLDOMNodeList images = imageElement.selectNodes(L"image"); - int length = images.length(); - if (length < index) return 1; - - int MB_OKCANCEL = 0x00000001; - int IDOK = 1; - if (MessageBox(GetHWND(), L"确认删除当前图片?", L"提示", MB_OKCANCEL) != IDOK) return 1; - - xstring id = images.item(index).selectSingleNode(L"@guid").text(); - - xml x; - xaserverarg arg; - xstring str = L"<Item update.modify='1' update.delete='1' guid='" + id + L"'/>"; - arg.AddArg(L"content", str); - if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) - { - alert(x.text()); - return -1; - } - if (count == 1) - { - dw_list.SetItemString(row, L"pic", L""); - dw_list.Redraw(); - } - - KXMLDOMElement e1 = dw_list.GetRowElement(row); - xstring skuid = e1.getAttribute(L"guid"); - OnShowImage(skuid); - - return 1; - } - int OnPreviewImage() - { - int row = dw_list.GetNextSelectRow(1); - if (row < 1) row = dw_list.GetRow(); - if (row < 1 || row > dw_list.GetRowCount()) return 0; - KXMLDOMElement e = dw_list.GetRowElement(row); - //KXMLDOMElement e = dw_list.GetRowElement(row); - //alert(e.xml); - xstring id = dw_list.GetItemString( row, L"@guid"); - //alert(id); - - HTREEITEM hItem = tv_folder.GetSelectedItem(); - KXMLDOMElement e1 = tv_folder.GetItemData(hItem); - xstring categoryid = e1.selectSingleNode(L"@guid").text(); - //alert(categoryid); - xaserverarg* arg = new xaserverarg; - arg->AddArg(L"SKUID", id); - arg->AddArg(L"CategoryID", categoryid); - - OpenWindow(L"dev:xpage[PictureView.Product3.vx]", (LPARAM)arg); - - return 1; - } - - int ItemMaint() - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - KXMLDOMElement e = tv_folder.GetItemData(hItem); - //xstring no = e.getAttribute(L"no"); - //if(no==L"") return 1; - xstring guid = e.getAttribute(L"guid"); - if (guid == L"") return 1; - - /* - if(no==L"NP0000FS" || no==L"UP0000FS") - { - OpenWindow(L"dev:xpage[PackSchemaMaint.goodslib.vx]"); - }else - { - int pr = g_xdoc_product; - OpenWindow(L"dev:xpage[ProductLibraryItemMaint.vx]",pr); - } - */ - //KXMLDOMElement ele = g_xdoc_product.getRowElement(L"data/Item", 1); - //alert(ele.xml); -#ifdef shouldfinished - int pr = g_xdoc_product; - OpenWindow(L"dev:xpage[ProductLibraryItemMaint3.vx]", pr); -#endif - return 1; - } - - int ItemAdd() - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - HTREEITEM hTopItem = LookupTopFolder(hItem); - xstring name = tv_folder.GetItemLabel(hTopItem); - - KXMLDOMElement e = tv_folder.GetItemData(hItem); - //alert(e.xml); - /*xstring no = e.getAttribute(L"no"); - if(no==L"") return 1; - if(no==L"NP0000FS" || no==L"UP0000FS") - { - OpenWindow(L"dev:xpage[PackSchemaMaint.goodslib.vx]"); - }else - { - int p = no; - OpenWindow(L"dev:xpage[SO.autolist.goodslib.add.vx]",p); - }*/ - xstring guid = e.getAttribute(L"guid"); - if (guid == L"") return 1; - xaserverarg arg; - arg.setNativePointer(arg.CreateInstance()); - arg.AddArg(L"guid", e.getAttribute(L"guid")); - if (name == L"个人产品") - arg.AddArg(L"FolderID", e.getAttribute(L"guid")); - else - arg.AddArg(L"CategoryID", e.getAttribute(L"guid")); - xstring No = e.getAttribute(L"CategoryNo"); - if (No == L"") No = e.getAttribute(L"no"); - xstring Name = e.getAttribute(L"CName"); - if (Name == L"") Name = e.getAttribute(L"cname"); - arg.AddArg(L"No", No); - arg.AddArg(L"CName", Name); - OpenWindow(L"dev:xpage[Quick.Input.NewProduct.vx]", (LPARAM)&arg); - - if (arg.GetArgString(L"data.modify") == L"1")RetrieveData(); - - return 1; - } - - int OnAddFolder() - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - HTREEITEM hTopItem = LookupTopFolder(hItem); - xstring name = tv_folder.GetItemLabel(hTopItem); - xstring selectname = tv_folder.GetItemLabel(hItem); - - xaserverarg arg; - if (hItem != hTopItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring folder = e.getAttribute(L"guid"); - if (folder != L"") - { - arg.AddArg(L"parentCategoryID", folder); - OpenWindow(L"dev:xpage[UserFolderMaint.vx]",(LPARAM)&arg); - /*if(arg.GetArgString(L"FolderID")!=L"") - { - int child = tv_folder.GetChildItem(hItem); - if(!child) - { - ExpandItem(hItem); - } - else - { - KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement); - KXMLDOMElement e2 = e1.cloneNode(0); - e2. - } - }*/ - } - } - - return 1; - } - - int OnMaintFolder() - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - HTREEITEM hTopItem = LookupTopFolder(hItem); - xstring name = tv_folder.GetItemLabel(hTopItem); - xstring selectname = tv_folder.GetItemLabel(hItem); - - xaserverarg arg; - if (name == L"个人库" && selectname == L"新产品" && tv_folder.GetParentItem(hItem) == hTopItem) return 1; - if (hItem != hTopItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring folder = e.getAttribute(L"guid"); - if (folder != L"") - { - arg.AddArg(L"CategoryID", folder); - OpenWindow(L"dev:xpage[UserFolderMaint.vx]", (LPARAM)&arg); - if (arg.GetArgString(L"label") != L"") - { - tv_folder.SetItemLabel(hItem, arg.GetArgString(L"label")); - } - } - } - return 1; - } - - //命令发布函数 - int OnCmdDispatch(xstring comdid) - { - int hCursor; - xstring name = L""; - if (comdid == L"xmRefresh") - { - return RetrieveData(); - } - else if (comdid == L"xmCarGoodsDelete") - { - CarGoodsDelete(); - return 1; - } - else if (comdid == L"xmAddFolder") - { - return OnAddFolder(); - } - else if (comdid == L"xmMaintFolder") - { - return OnMaintFolder(); - } - else if (comdid == L"xmClose") - { - CloseWindow(); - return 1; - } - else if (comdid == L"xmCarGoodsMaint") - { -#ifdef shouldfinish - OpenWindow(L"dev:xpage[ShoppingCartProductMaint.vx]", trust(g_xdoc_shoppingcart as int)); -#endif - return 1; - } - else if (comdid == L"xmCarMaint") - { - OpenWindow(L"dev:xpage[SO.autolist.Shopcar.vx]"); - return 1; - } - else if (comdid == L"xmSaleOrder") - { - int rw = dwc_list.GetNextSelectRow(1); - xstring content = L"<data>"; - while (rw > 0) - { - KXMLDOMElement xe = OnGetCarListRowElement(rw); - content += xe.xml(); - rw = dwc_list.GetNextSelectRow(rw + 1); - - } - content += L"</data>"; - xaserverarg carg; - carg.setNativePointer(carg.CreateInstance()); - carg.AddArg(L"content", content); - OpenWindow(L"dev:xpage[SO.Simulation.Import.vx]", (LPARAM) & carg); - return 1; - } - else if (comdid == L"xmEnquiry") - { - int rw = dwc_list.GetNextSelectRow(1); - xstring content = L"<data>"; - while (rw > 0) - { - KXMLDOMElement xe = OnGetCarListRowElement(rw); - content += xe.xml(); - rw = dwc_list.GetNextSelectRow(rw + 1); - } - content += L"</data>"; - xaserverarg carg; - carg.setNativePointer(carg.CreateInstance()); - carg.AddArg(L"content", content); - OpenWindow(L"dev:xpage[Enquiry.Import.vx]", (LPARAM)&carg); - return 1; - } - else if (comdid == L"xmPurchar") - { - int rw = dwc_list.GetNextSelectRow(1); - xstring content = L"<data>"; - while (rw > 0) - { - KXMLDOMElement xe = OnGetCarListRowElement(rw); - content += xe.xml(); - rw = dwc_list.GetNextSelectRow(rw + 1); - } - content += L"</data>"; - xaserverarg carg ; - carg.AddArg(L"content", content); - OpenWindow(L"dev:xpage[PO.Import.vx]", (LPARAM)&carg); - return 1; - } - else if (comdid == L"xmSearch") - { - RetrieveData(); - return 1; - } - else if (comdid == L"xmQuote") - { - int rw = dwc_list.GetNextSelectRow(1); - xstring content = L"<data>"; - while (rw > 0) - { - KXMLDOMElement xe = OnGetCarListRowElement(rw); - content += xe.xml(); - rw = dwc_list.GetNextSelectRow(rw + 1); - } - content += L"</data>"; - xaserverarg carg; - carg.AddArg(L"content", content); - OpenWindow(L"dev:xpage[Quote.Import.vx]", (LPARAM) & carg); - return 1; - } - else if (comdid == L"xmAdd") - { - return ItemAdd(); - } - else if (comdid == L"xmDelete") - { - int row = dw_list.GetRow(); - if (row < 1) return 1; - xstring skuid = dw_list.GetItemString( row, L"@guid"); - xml skuid_x = ViewObject::RetrieveData(L"/sale/data/ProductLibrary3/ProductNumberone", L"SKUID", skuid); - xstring skuidEx = skuid_x.text(); - int skuid1 = skuidEx.toInt(); - if (skuid1) - { - if (skuid1 > 0) - { - alert(L"订单已有产品,不允许删除!"); - return 1; - } - } - - DeleteRow(row); - - return 1; - } - else if (comdid == L"xmCarAdd") - { - HCURSOR hCursor = xutil::SetCursorWait(); - name = xcontrol(GetControl(L"frame:ed_goodscar")).GetText(); - if (name != L"") - { - if (ShoppingCartView::AddCar(name) == 1) - { - tv_folder.InsertChildItem(LookupTopFolder(tv_folder.GetSelectedItem()), - name, 0, 35); - } - } - xutil::RestoreCursor(hCursor); - return 1; - } - else if (comdid == L"xmMaint") - { - return ItemMaint(); - } - else if (comdid == L"xmAddImage") - { - return OnAddImage(); - } - else if (comdid == L"xmDeleteImage") - { - return OnDeleteImage(); - } - else if (comdid == L"xmPreviewImage") - { - return OnPreviewImage(); - } - else if (comdid == L"xmPropConfigure") - { -#ifdef shouldfinish - int r = cast(g_xdoc_product.getData(L"data/Item", L"@guid") as int); - OpenWindow(L"dev:xpage[Product.ItemProp.Maint.vx]", r); -#endif - return 1; - } - else if (comdid == L"xmRertieve") - { - /* - int hItem1 = tv_folder.GetSelectedItem(); - KXMLDOMElement e2= tv_folder.GetItemData(hItem1); - xstring no1 = e2.getAttribute(L"no"); - xml x2 = vcontrol::RetrieveData(L"/sale/data/SO/goods/usergoods/listex1",L"parent",no1); - g_xdoc_product.Retrieve(x2); - */ - return 1; - } - else if (comdid == L"xmToCar") - { - name = xcontrol(GetControl(L"frame:cbx_goodscar")).GetText(); - if (name == L"==选择购物车==L") - { - alert(L"请选择购物车"); - return 1; - } - int xrow = dw_list.GetNextSelectRow(1); - xstring goodsid = L""; - xstring html = L"<data>"; - while (xrow > 0) - { - KXMLDOMElement e =dw_list.GetRowElement(xrow); - goodsid = ProductLibraryView::GetElementString(e, L"@guid"); - html += L"<item goodid='" + goodsid + L"' id ='" + ProductLibraryView::GetGuid() + L"'/>"; - xrow = dw_list.GetNextSelectRow(xrow + 1); - } - html += L"</data>"; - trace(html); - if (ShoppingCartView::GoodsImport(name, html) == 1) - alert(L"添加错误!"); - else - alert(L"添加成功"); - return 1; - } - return 0; - } - - //命令处理事件 - int OnXCommand(TEvent* evt, int param) - { - return OnCmdDispatch(evt->xcommand.pStrID); - } - - //查找当前树项的顶级目录 - HTREEITEM LookupTopFolder(HTREEITEM hItem) - { - HTREEITEM hRoot = tv_folder.GetRootItem(); - while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem); - return hItem; - } - - //插入产品类项的子项 - int MakeGoodsFolderItem(HTREEITEM hItem, xstring sno) - { - xml x = ProductLibraryView::GetTreeChildItems3(sno); - if (!x) return 0; - - KXMLDOMNodeList nlist = x.selectNodes(L"//Item"); - int len = nlist.length(); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - xstring name = e.getAttribute(L"CName"); - xstring no = e.getAttribute(L"CategoryNo"); - xstring label = no.trim() + L" " + name; - - HTREEITEM h = tv_folder.InsertChildItem(hItem, label, e, 15); - xstring child = e.getAttribute(L"Childs"); - if (child == L"") - tv_folder.SetItemChild(h, 1); - else if (child != L"0") - tv_folder.SetItemChild(h, 1); - } - return 1; - } - - //插入新产品目录子项 - int MakeUserGoodsFolderItem(HTREEITEM hItem, xstring sno) - { - xml x = ProductLibraryView::GetTreeUserChildItems3(sno); - if (!x) return 0; - - KXMLDOMNodeList nlist = x.selectNodes(L"//Item"); - int len = nlist.length(); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - xstring name = e.getAttribute(L"CName"); - xstring no = e.getAttribute(L"CategoryNo"); - xstring label = no.trim() + L" " + name; - - HTREEITEM h = tv_folder.InsertChildItem(hItem, label, e, 15); - xstring child = e.getAttribute(L"Childs"); - if (child == L"") - tv_folder.SetItemChild(h, 1); - else if (child != L"0") - tv_folder.SetItemChild(h, 1); - } - return 1; - } - - //插入购物车项 - int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) - { - KXMLDOMNodeList nlist = ele.selectNodes(L"item"); - int len = nlist.length(); - if (len > 0) tv_folder.SetItemChild(hItem, 1); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - xstring name = e.getAttribute(L"name"); - HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); - ExpandCatChildFolder(h, e, 35); - } - return 1; - } - int MakeGoodCarFolderItem(HTREEITEM hItem) - { - xml x = ShoppingCartView::GetRoleList(); - if (!x) return 0; - KXMLDOMNodeList nlist = x.selectNodes(L"/data/item"); - int len = nlist.length(); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - xstring name = e.getAttribute(L"name"); - HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); - ExpandCatChildFolder(h, e, 35); - } - return 1; - } - - int ExpandItem(HTREEITEM hItem) - { - HTREEITEM hTopItem = LookupTopFolder(hItem); - xstring name = tv_folder.GetItemLabel(hTopItem); - HTREEITEM child = tv_folder.GetChildItem(hItem); - xstring no = L""; - KXMLDOMElement e; - if (name == L"公司库" && !child) - { - no = L""; - if (hTopItem != hItem) - { - e = tv_folder.GetItemData(hItem); - no = e.getAttribute(L"categoryid"); - } - else - { - e = tv_folder.GetItemData(hItem); - no = e.getAttribute(L"categoryid"); - } - MakeGoodsFolderItem(hItem, no); - } - else if (name == L"个人库" && !child) - { - no = L""; - if (hTopItem != hItem) - { - e = tv_folder.GetItemData(hItem); - no = e.getAttribute(L"categoryid"); - MakeUserGoodsFolderItem(hItem, no); - } - } - else if (name == L"购物车" && !child) - { - if (hItem == hTopItem)MakeGoodCarFolderItem(hItem); - } - return 1; - } - - //树展开 - int OnTreeExpanding(TEvent * evt, int p) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - return ExpandItem(hItem); - } - - int ResetAgent(xstring agentAsk) - { - if (agentFor != agentAsk) - { - agentFor = agentAsk; - m_agentNode = 0; - SetAgent(); - } - return 1; - } - - HTREEITEM LookupCustomerFolder(HTREEITEM hItem) - { - while (true) - { - KXMLDOMElement e1 = tv_folder.GetItemData(hItem); - xstring str = e1.getAttribute(L"no"); - if (str.find(L"Customer:") >= 0) return hItem; - hItem = tv_folder.GetParentItem(hItem); - if (hItem == 0) break; - } - return 0; - } - - xstring LookupCustomer(HTREEITEM hItem) - { - hItem = LookupCustomerFolder(hItem); - if (hItem == 0) return L""; - KXMLDOMElement e1 = tv_folder.GetItemData(hItem); - xstring str = e1.getAttribute(L"no"); - return str.mid(xstring(L"Customer:").length(), 9999); - } - - int RetrieveData() - { - ximageview im = GetControl(L"im1"); - HTREEITEM hItem = tv_folder.GetSelectedItem(); - HTREEITEM hTopItem = LookupTopFolder(hItem); - xstring name = tv_folder.GetItemLabel(hTopItem); - xstring selectname = tv_folder.GetItemLabel(hItem); - - xcontrol query = GetControl(L"sl_search"); - xstring queryString = query.GetText(); - - if (hItem == hTopItem) - { - dw_list.Reset(); - dw_list.SetReadOnly(true); - dw_list.Redraw(); - dwc_list.Reset(); - dwc_list.SetReadOnly(true); - dwc_list.Redraw(); - - im.Reset(); - im.Redraw(); - - - xshtml xs1 = GetControl(L"html_detail"); - xs1.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); - - if (name != L"公司库") return 1; - } - //return 1; - - HCURSOR hCursor = xutil::SetCursorWait(); - - if (name == L"购物车") - { - if (selectname != name) - { - KXMLDOMElement e1 = tv_folder.GetItemData(hItem); - xstring str = e1.getAttribute(L"no"); - alert(str); - if (str.find(L"Customer:") == 0 || str.find(L"SO:") == 0) - { - m_customer = LookupCustomer(hItem); - if (str.find(L"Customer:") == 0) - dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodscustomerlist"); - else - dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodssolist"); - dwc_list.Reset(); - dwc_list.SetReadOnly(true); - dw_list.Retrieve(ShoppingCartView::GetGoodsList(str, queryString)); - } - else if (e1.getAttribute(L"categoryid") != L"") - { - xstring categoryid = e1.getAttribute(L"categoryid"); - dwc_list.SetDataObject(ProductLibraryView::GetMaintListForm3(categoryid)); - dwc_list.SetReadOnly(true); - dwc_list.Reset(); - dw_list.Retrieve(ProductLibraryView::GetMaintList3(categoryid, queryString, L"")); - dwc_list.Redraw(); - } - else - { - dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist"); - dwc_list.SetReadOnly(true); - dwc_list.Reset(); - dw_list.Retrieve(ShoppingCartView::GetGoodsList(selectname, queryString)); - } - //dwc_list.PostRetrieve(); - dwc_list.Redraw(); - - xshtml xs = GetControl(L"html_detail"); - if (dwc_list.GetRowCount() >= 1) - { - xs.SetContent(makeGoodscarHtml(1)); - - if (m_customer != L"") - { - xstring skuid =dw_list.GetItemString( 1, L"SKUID"); - xstring customerItemNo =dw_list.GetItemString( 1, L"CustomerItemNo"); - OnShowImage(skuid, customerItemNo); - } - } - else - { - im.Reset(); - im.Redraw(); - - xs = GetControl(L"html_detail"); - xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); - } - xs.Redraw(); - } - } - else - { - - if (name == L"个人库" || name == L"公司库") - { - xstring no = L"N000005"; - if (name == L"个人库") no = L"U000005"; - - if (hItem != hTopItem) - { - KXMLDOMElement e = tv_folder.GetItemData(hItem); - no = e.getAttribute(L"guid"); - } - else - return 1; - - /* dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(no).GetXmlDoc()); - dw_list = GetControl(L"dw_list"); - dw_list.Reset(); - dw_list.SetReadOnly(true); - */ - - if (name == L"个人库") - dw_list.Retrieve(ProductLibraryView::GetMaintRoleList3(no)); - else - { - if (queryString != L"") - { - - if (no == L"N000005") - dw_list.Retrieve(ProductLibraryView::GetMaintList3(L"", queryString, L"")); - else - dw_list.Retrieve(ProductLibraryView::GetMaintList3(no, queryString, L"")); - } - else - { - if (no == L"N000005") return 1; - dw_list.Retrieve(ProductLibraryView::GetMaintList3(no)); - } - } - //dw_list.PostRetrieve(); - dw_list.Redraw(); - - xshtml xs = GetControl(L"html_detail"); - if (dw_list.GetRowCount() > 0) - { - xs.SetContent(makeHtml(1)); - xstring id = dw_list.GetItemString( 1, L"@guid"); - OnShowImage(id); - } - else - { - im.Reset(); - im.Redraw(); - - xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); - } - xs.Redraw(); - } - } - xutil::RestoreCursor(hCursor); - - return 1; - } - - int OnTreeSelChanged(TEvent * evt, int p) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - HTREEITEM hTopItem = LookupTopFolder(hItem); - xstring name = tv_folder.GetItemLabel(hTopItem); - xstring selectname = tv_folder.GetItemLabel(hItem); - ximageview im = GetControl(L"im1"); - m_customer = L""; - //alert(name); - if (name == L"购物车") - { - if (agentFor != L"goodscar")SwitchLayer(L"goodscarsheet", L"sheetframe"); - ResetAgent(L"goodscar"); - } - else - { - if (agentFor != L"goodslib")SwitchLayer(L"goodslibsheet", L"sheetframe"); - if (name == L"个人库") - ResetAgent(L"userlib"); - else - ResetAgent(L"goodslib"); - } - //RetrieveData(); - PostMessage(GetHWND(), 0x401, (WPARAM)L"xmRefresh", 0); - - return 1; - } - - int ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) - { - KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); - int len = nlist.length(); - for (int i = 0; i < len; i++) - { - KXMLDOMElement& e = * new KXMLDOMElement(nlist.item(i)); - xstring name = e.getAttribute(L"cname"); - xstring sImage = e.getAttribute(L"image"); - int image = 15; - //if(sImage) image = sImage.toInt(); - HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); - tv_folder.SetItemChild(h, 1); - ExpandChildFolder(h, e); - } - return 1; - } - - int InitialFolder() - { - KXMLDOMElement xframeElement = GetElement(); - KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); - ExpandChildFolder(0, e); - return 1; - } - - int OnViewZoomChange(TEvent* evt, int lParam) - { - ximageview im = GetControl(L"im1"); - xcombobox xc = GetControl(L"precent"); - xstring text = xc.GetLBText(); - int p = text.toInt(); - if (p == 0) p = 100; - im.Preview(p); - return 1; - } - - int OnAttachEvent() - { - //绑定工具条点击事件 - AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductLibrary4Win::OnXCommand); - //获取焦点事件,用于重置工具条 - AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductLibrary4Win::OnSetFocus); - AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductLibrary4Win::OnRowChanged); - AttachEvent(L"dwc_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductLibrary4Win::OnGoodsCarRowChanged); - AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ProductLibrary4Win::OnTreeExpanding); - AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ProductLibrary4Win::OnTreeSelChanged); - AttachEvent(L"WM_COMMAND", (FEvent)&ProductLibrary4Win::OnCkbCLick); //checkbox打钩事件 - AttachEvent(L"WM_COMMAND", (FEvent)&ProductLibrary4Win::OnCkbCLick2); //checkbox打钩事件 - - AttachEvent(L"im1", L"IMG_LDBCLICK", (FEvent)&ProductLibrary4Win::OnImgDBClicked); - AttachEvent(L"precent", L"CBN_SELCHANGE", (FEvent)&ProductLibrary4Win::OnViewZoomChange); - - return 1; - } - - int onload() - { - agentFor = L"goodslib"; - m_customer = 0; - - OnAttachEvent(); - - tv_folder = GetControl(L"tv_folder"); - dw_list = GetControl(L"dw_list"); - dwc_list = GetControl(L"dwc_list"); - - InitialFolder(); - - dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"")); - dw_list = GetControl(L"dw_list"); - dw_list.SetReadOnly(true); - - dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist"); - dwc_list.SetReadOnly(true); - - tv_folder.ExpandItem(tv_folder.GetRootItem()); - tv_folder.ItemFocus(tv_folder.GetRootItem()); - - if (dw_list.GetRowCount()) - { - xshtml xs = GetControl(L"html_detail"); - xs.SetContent(makeHtml(1)); - } - - return 1; - } - - int onloaded() - { - SetAgent(); - - return 1; - } - - int OnImgDBClicked(TEvent * evt, int pr) - { - IMGNNMHDR& nmtv = *(IMGNNMHDR*)evt->notify.pnmh; - xstring src = nmtv.path; - /*if(src.length() > 60) - src = src.right(44); - else - src=src.mid(src.find(L"Thumbs", 0)+6, 50); - */ - xaserverarg& arg = *new xaserverarg; - //arg.AddArg(L"src",L"/business/products/chanpin"+src); - arg.AddArg(L"src", src); - - //win::OpenWindow(L"dev:xpage[BigPicture.vx]",arg); - - int h = openUrl(L"/sale/view/ProductLibrary/xpage/bigpictureview", &arg); - return 1; - /* - xwin x = new xwin; - x.setNativePointer(h); - m_winHwnd = x.GetHWND(); - - xstring sh = doc.GetXml(); - int p = cast(sh as int); - win32::SendMessage(m_winHwnd, 0x401, p, 0); - */ - return 1; - } -}; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Organization.cpp b/jrj/project/business/SystemSettings/Organization.cpp new file mode 100644 index 0000000..e3bb401 --- /dev/null +++ b/jrj/project/business/SystemSettings/Organization.cpp @@ -0,0 +1,187 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xlayersheet.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) Organization : public xframe + { + public: + xdwgrid dw_list; + xnode m_agentNode; //Agent Condition + + public: + Organization(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static Organization* CreateInstance(void* implPtr, void* hWnd) + { + Organization* pWin = new Organization(implPtr, (HWND)hWnd); + return pWin; + } + int SetAgent() + { + 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; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + SetAgent(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + xstring s = publiccode::GetUser().deptname; + int hCursor = 0; + xstring userno = publiccode::GetUser().no; + + + if (comdid == L"xmAdd") + { + xaserverarg arg ; + + arg.AddArg(L"HWND", xstring((__int64)GetHWND())); + + OpenWindow(L"dev:xpage[OrganizationBase.vx]", arg); + } + else if (comdid == L"xmDelete") + { + xstring CIDs = dw_list.GetGuid(dw_list.GetRow()); + int MB_OKCANCEL = 1; + int IDOK = 1; + int ret = MessageBox(GetHWND(), L"确认删除?", L"提示", MB_OKCANCEL); + if (ret == IDOK) + { + ViewObject::RetrieveData(L"/sale/data/business/delete/Organization", L"EntityID", CIDs); + OnRetrieve(); + } + } + if (comdid == L"xmEdit") + { + xaserverarg arg ; + + xstring ID = dw_list.GetGuid(dw_list.GetRow()); + arg.AddArg(L"ID", ID); + arg.AddArg(L"HWND", xstring((__int64)GetHWND())); + + OpenWindow(L"dev:xpage[OrganizationBase.vx]", arg); + } + else if (comdid == L"xmRefresh") + { + OnRetrieve(); + } + return 0; + } + + //触发鼠标离开后tran事件,通过查找某个参数得到对应的列 + int OnBaseItemChanged(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + xstring colname = hdr.colname; + xstring value = hdr.data; + + xstring dwname = L"dw_list"; + if (value != L"") + { + KXMLDOMNodeList nlist = GetElement().selectNodes(L"//*[@name='" + dwname + L"']/trans[@for='" + colname + L"']"); + ViewObject::TransData(nlist, dw_list, hdr.row, colname, value); + } + + return 1; + } + + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnDoubleClicked(TEvent* evt, int p) + { + HCURSOR hCursor = xutil::SetCursorWait(); + OnCmdDispatch(L"xmEdit"); + xutil::RestoreCursor(hCursor); + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&Organization::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&Organization::OnSetFocus); + AttachEvent(L"dw_list", L"DWV_ITEMCHANGED", (FEvent)&Organization::OnBaseItemChanged); + AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&Organization::OnDoubleClicked);//行双击 + return 1; + } + + + int OnRetrieve() + { + xml x ; + + xaserverarg arg ; + + arg.AddArg(L"QueryTxt",xcontrol(GetControl(L"search")).GetText()); + + if (getUrl(L"/sale/data/business/OrganizationList", arg.GetString(), x) != 1) + { + trace(x.text()); + return -1; + } + else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + dw_list.SetSelectionMode(1); + } + return 1; + } + + int onload() + { + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"/sale/view/Business3/template/OrganizationList"); + + + OnRetrieve(); + + OnAttachEvent(); + + return 1; + } + + int onloaded() + { + SetAgent(); + + + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/OrganizationBase.cpp b/jrj/project/business/SystemSettings/OrganizationBase.cpp new file mode 100644 index 0000000..a03cf17 --- /dev/null +++ b/jrj/project/business/SystemSettings/OrganizationBase.cpp @@ -0,0 +1,189 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xlayersheet.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) OrganizationBase : public xframe + { + public: + HWND hObject = 0; + xdwtable dw_base; + xnode m_agentNode; //Agent Condition + bool updated; + public: + OrganizationBase(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static OrganizationBase* CreateInstance(void* implPtr, void* hWnd) + { + OrganizationBase* pWin = new OrganizationBase(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; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + //SetAgent(); + return 1; + } + + + int OnSave() + { + xml x ; + + xaserverarg arg ; + + dw_base.AcceptText(); + dw_base.DwUpdateAllTo(x); + xstring error = L""; + arg.AddArg(L"content", x.xml() ); + if(xurl::get(L"/sale/data/business/Update/Organization", arg.GetString(),x)!=1) + { + error = x.text(); + //alert(error); + }else + { + xstring str = x.documentElement().getAttribute(L"text"); + if(str == L"true") + { + dw_base.ResetUpdateStatus(); + alert(L"保存成功!"); + SendMessage(hObject,0x401,(LPARAM)L"xmRefresh",0); + CloseWindow(); + }else + { + alert(L"保存失败!"); + } + //alert(str); + } + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if(comdid==L"xmSave") + { + OnSave(); + return 1; + } + else if(comdid==L"xmClose") + { + if(updated) + SendMessage(hObject,0x401,(LPARAM)L"xmRefresh",0); + CloseWindow(); + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnItemChanged(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + xstring colname=hdr.colname; + xstring value = hdr.data; + + xstring dwname = L"dw_base"; + return 1; + } + + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&OrganizationBase::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&OrganizationBase::OnSetFocus); + AttachEvent(L"dw_base",L"DWV_ITEMCHANGED", (FEvent)&OrganizationBase::OnItemChanged); + return 1; + + } + + int OnRetrieve(xstring ID) + { + xml x ; + + xaserverarg arg ; + + arg.AddArg(L"ID",ID); + if (getUrl(L"/sale/data/business/GetOrganizationByID",arg.GetString(),x)!=1) + { + trace(x.text()); + return -1; + }else + { + dw_base.Retrieve(x); + dw_base.Redraw(); + } + return 1; + } + + int onload() + { + SetArg(); + dw_base = GetControl(L"dw_base"); + dw_base.openUrl(L"/sale/view/Business3/template/OrganizationMaint"); + dw_base.SetColHeaderHeight(0); + dw_base.SetRowSelectorWidth(0); + dw_base.SetHScrollState(false); + dw_base.SetVScrollState(false); + + xstring ID = L""; + hObject = 0; + if(GetWinParam()) + { + xaserverarg arg =GetArg() ; + + ID = arg.GetArgString(L"ID"); + hObject = (HWND)arg.GetArgString(L"HWND").toInt(); + } + if(ID != L"") + { + OnRetrieve(ID); + } + + OnAttachEvent(); + updated = false; + return 1; + } + + int onloaded() + { + //SetAgent(); + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Organization_A.cpp b/jrj/project/business/SystemSettings/Organization_A.cpp deleted file mode 100644 index 8f92f1c..0000000 --- a/jrj/project/business/SystemSettings/Organization_A.cpp +++ /dev/null @@ -1,513 +0,0 @@ -#include <wobject/xstring.hpp> -#include <xcontrol/xtreeview.hpp> -#include <xcontrol/xdwgrid.hpp> - -#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" -#include "viewobject/view.base.hpp" - -class __declspec(dllexport) SO3list : public listwin -{ -public: - string m_sType; //树选中的类型 - string m_sTypeTxt; //树选中的数据 - string urlTree; - string myDataUrl; - string rows; - xcombobox ddlb_1; - xcombobox cbx_datashow; - - int changeddlb; - - xtreeview tv_folder; - xdwgrid dw_goods; - xdwgrid dw_source; -public: - SO3list(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} -public: - static SO3list* CreateInstance(void* implPtr, void* hWnd) - { - SO3list* pWin = new SO3list(implPtr, (HWND)hWnd); - return pWin; - } - - //process tree - //查找当前树项的顶级目录 - HTREEITEM LookupTopFolder(HTREEITEM hItem) - { - HTREEITEM hRoot = tv_folder.GetRootItem(); - while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem); - return hItem; - } - - int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) - { - KXMLDOMNodeList nlist = ele.selectNodes(L"item"); - int len = nlist.length(); - if (len > 0) tv_folder.SetItemChild(hItem, 1); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - string name = e.getAttribute(L"name"); - HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); - ExpandCatChildFolder(h, e, 35); - } - return 1; - } - - int ExpandFolderItem(HTREEITEM hItem, string no) - { - KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),urlTree, L"no", no, L"rows", rows); - if (!x) return 0; - KXMLDOMNodeList nlist = x.selectNodes(L"/data/item"); - int len = nlist.length(); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - string name = e.getAttribute(L"name"); - HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); - ExpandCatChildFolder(h, e, 35); - } - return 1; - } - - //树展开 - int OnTreeExpanding(TEvent* evt, int p) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - HTREEITEM hTopItem = LookupTopFolder(hItem); - string name = tv_folder.GetItemLabel(hTopItem); - HTREEITEM child = tv_folder.GetChildItem(hItem); - - KXMLDOMElement e = tv_folder.GetItemData(hItem); - if (!child)ExpandFolderItem(hItem, e.getAttribute(L"no")); - - return 1; - } - - //展开子文件 - int ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) - { - KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); - int len = nlist.length(); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - string name = e.getAttribute(L"name"); - xstring sImage = e.getAttribute(L"image"); - xstring child = e.getAttribute(L"child"); - int image = 15; - if (sImage) image = sImage.toInt(); - HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); - if (child != L"no") tv_folder.SetItemChild(h, 1); - //ExpandChildFolder(h, e); - } - return 1; - } - - //初始化文件夹 - int InitialFolder() - { - KXMLDOMElement xframeElement = GetElement(); - KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); - if (e) - ExpandChildFolder(0, e); - return 1; - } - - int OnTreeSelChanged(TEvent* evt, LPARAM p) - { - if (changeddlb) return 1; - return OnPreRetrieve(); - } - - int ViewUpdate(LPARAM pr, xstring updateItem, xaserverarg arg) - { - if (updateItem == L"del") - { - int DelRow = dw_list.GetRow(); - dw_list.DeleteRow(DelRow); - return 1; - } - else if (updateItem == L"setstate") - { - int row = dw_list.GetRow(); - if (row < 1) return 1; - KXMLDOMElement ele = dw_list.GetRowElement(row); - string id = GetEntityIDName(1); - string entity = ele.selectSingleNode(id).text(); - //trace(entity); - SetAgent(L"list", entity); - if (arg.GetArgString(L"state") != L"") - //this.dw_list.SetItemString(row, "ApprovalStatus", arg.GetArgString(L"state")); - dw_list.SetItemString(row, L"ApplyStatus", arg.GetArgString(L"state")); - if (arg.GetArgString(L"billstatus") != L"") - { - xstring billstatus = arg.GetArgString(L"billstatus"); - xstring statusName = GetBillStatusName(billstatus); - dw_list.SetItemString(row, L"ApprovalStatus", billstatus); - dw_list.SetItemDisplayString(row, L"ApprovalStatus", statusName); - } - - dw_list.Redraw(); - } - return 1; - } - - bool IsEmptyQueryStr(string queryStr) - { - if (queryStr == L"") return true; - if (queryStr == L"<items join='and'/>") return true; - if (queryStr == L"<items join=\"and\"/>") return true; - //trace(queryStr); - return false; - } - - //检索 - int OnPreRetrieve() - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - HCURSOR hCursor = xutil::SetCursorWait(); - KXMLDOMElement e1 = tv_folder.GetItemData(hItem); - string no = e1.getAttribute(L"no"); - KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),myDataUrl, L"no", no, L"QueryTxt", m_QueryTxt, L"rows", rows); - if (x) - { - dw_list.Retrieve(x); - dw_list.Redraw(); - } - else - { - dw_list.Reset(); - dw_list.Redraw(); - dw_goods.Reset(); - dw_goods.Redraw(); - } - dw_list.SetReadOnly(true); - xutil::RestoreCursor(hCursor); - return 1; - /* - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); - arg.AddArg(L"pageindex", m_pageIndex.toString(),""); //第几页 - arg.AddArg(L"pagenumber", m_pageNumber.toString(),""); //每页数量 - arg.AddArg(L"QueryTxt", m_QueryTxt,""); //查询条件 - arg.AddArg(L"sType",m_sType,""); - arg.AddArg(L"sTypeTxt",m_sTypeTxt,""); - xml x = ViewObject::MakeXml(); - - KXMLDOMElement n = m_configDoc.selectSingleNode(L"//list/dwview[@type='dwgrid'][1]"); - if(n) - { - KXMLDOMElement e = n; - if(e.selectSingleNode(L"@dataUrl")) - { - string dataUrl = e.selectSingleNode(L"@dataUrl").text; - if(dataUrl.left(1)!="/") dataUrl = GetEntityName(1)+"/"+dataUrl; - getUrl(dataUrl, arg.GetString(), x); - KXMLDOMElement ele=x.GetXmlDoc().documentElement; - if(dw_pages.ptr_native_) - { - if(ele.selectSingleNode(L"@TotalPage")) - { - string s=ele.selectSingleNode(L"@TotalPage").text; //总数量 - dw_pages.SetMaxPage(s.toInt()); - } - } - dw_list.Retrieve(x); - dw_list.Redraw(); - dw_list.SetReadOnly(true); - } - else - { - SetEntityData(arg); - } - } - else - { - SetEntityData(arg); - } - */ - } - - //历史数据 - int Onhistroydata() - { - int row = dw_list.GetNextSelectRow(1); - if (row > 0) - { - KXMLDOMElement e = dw_list.GetRowElement(row); - xaserverarg& arg = * new xaserverarg; - string sCustomerID = e.selectSingleNode(L"CustomerID").text(); - arg.AddArg(L"CustomerID", sCustomerID, L""); - string sCustomerName = e.selectSingleNode(L"CustomerName").text(); - arg.AddArg(L"CustomerName", sCustomerName, L""); - arg.AddArg(L"EntityName", GetEntityName(1), L""); - arg.AddArg(L"EntityID", GetEntityID(1), L""); - openUrl(L"/sale/view/SO/xpage/histroydata", &arg); - } - return 1; - } - - //xcombobox下拉 - int OnSelectDdlb(TEvent* evt, LPARAM p) - { - changeddlb = 1; - HWND wid = ddlb_1.GetHWND(); - int CB_GETCURSEL = 0x0147; - int nIndex =SendMessage(wid, CB_GETCURSEL, 0, 0); - KXMLDOMElement e = ddlb_1.GetElement(); - KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]"); - string no = e2.selectSingleNode(L"@element").text(); - - HTREEITEM hItem = tv_folder.GetRootItem(); - while (tv_folder.GetChildItem(hItem)) - tv_folder.DeleteItem(tv_folder.GetChildItem(hItem)); - ExpandFolderItem(hItem, no); - - changeddlb = 0; - return 1; - } - - - int OnSelectDataShowDdlb(TEvent* evt, LPARAM p) - { - HWND wid = cbx_datashow.GetHWND(); - int CB_GETCURSEL = 0x0147; - int nIndex = SendMessage(wid, CB_GETCURSEL, 0, 0); - KXMLDOMElement e = cbx_datashow.GetElement(); - KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]"); - rows = e2.selectSingleNode(L"@rows").text(); - OnPreRetrieve(); - - return 1; - } - - int PreOnCmdDispatch(xstring comdid) - { - if (comdid == L"action:bill.new") - { - xstring s = publiccode::GetUser().id; - xstring no = publiccode::GetUser().no; - if (no != L"00303" && no != L"admin") - { - KXMLDOMDocument supplier_x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SupplierV3/entity/FindBySaleType", L"id", s); - if (supplier_x) - { - if ((xstring)supplier_x.text() != L"业务员") - { - alert(L"当前角色不是业务员不能新增单子,请重新选择角色"); - return 0; - } - } - } - } - if (comdid == L"action:bill.annex") - { - xstring deptname = publiccode::GetUser().deptname; - if (deptname == L"采购部") - { - return 1; - } - - int row = dw_list.GetRow(); - if (row < 1) return 1; - xstring guid = dw_list.GetItemString(row, L"SOID"); - xaserverarg& arg = * new xaserverarg(); - - if (guid.length() <= 0)return 1; - - arg.AddArg(L"entityid", guid); - arg.AddArg(L"Type", L"Y"); - OpenWindow(L"dev:xpage[maint.Document.SO3.v3.vx]", arg); - - return 0; - } - if (comdid == L"action:bill.histroydata") return Onhistroydata(); - else if (comdid == L"action:bill.refresh") - { - changeddlb = 1; - HTREEITEM RItem = tv_folder.GetRootItem(); - while (tv_folder.GetChildItem(RItem)) - tv_folder.DeleteItem(tv_folder.GetChildItem(RItem)); - ExpandFolderItem(RItem, L"Category:Customer"); - tv_folder.ExpandItem(RItem); - tv_folder.ItemFocus(RItem); - changeddlb = 0; - return OnPreRetrieve(); - } - if (comdid == L"action:bill.saveas") - { - dw_list.SaveAs(L""); - return 1; - } - if (comdid == L"action:bill.SourceRemark") return OnSourceRemark(); - - return 1; - } - - int OnSourceRemark() - { - xstring name = L"外销合同"; - KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/TradeFinance3/GetSetUpRemarks", L"Type", name); - KXMLDOMNodeList items = x.selectNodes(L"data/Item"); - KXMLDOMNode t = items.item(0); - xstring Content = L""; - if (t.selectSingleNode(L"Content")) - { - Content = t.selectSingleNode(L"Content").text(); - } - xaserverarg& arg = *new xaserverarg; - arg.AddArg(L"value", Content); - OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg); - - return 1; - } - - int OnRowChanged(TEvent* evt, LPARAM p) - { - DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; - int row = hdr.row; - - - if (row < 1) return 1; - - //fixed one event only one process - listwin::OnRowChanged(evt, p); - - HCURSOR hCursor = xutil::SetCursorWait(); - - xstring SONo = dw_list.GetItemString(row, L"SONo"); - KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SaleOrder/maint/item", L"id", SONo); - if (x) - dw_goods.Retrieve(x); - else - dw_goods.Reset(); - dw_goods.Redraw(); - dw_goods.SetReadOnly(true); - - x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SaleOrder/maint/itemwithsource", L"id", SONo); - if (x) - dw_source.Retrieve(x); - else - dw_source.Reset(); - dw_source.Redraw(); - dw_source.SetReadOnly(true); - - xutil::RestoreCursor(hCursor); - - return 1; - } - - - int AttachListon() - { - AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&SO3list::OnTreeSelChanged); //树选择 - AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&SO3list::OnRowChanged);//绑定行更改触发事件OnRowChanged - //AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&listwin::OnDoubleClicked); - AttachEvent(L"cbx_1", L"CBN_SELCHANGE", (FEvent)&SO3list::OnSelectDdlb);//绑定下拉框更改触发事件OnSelectDdlb - AttachEvent(L"cbx_datashow", L"CBN_SELCHANGE", (FEvent)&SO3list::OnSelectDataShowDdlb);//绑定选择数据显示下拉列表事件OnSelectDataShowDdlb - return 1; - } - - int onload() - { - changeddlb = 0; - listwin::onload(); - ddlb_1 = GetControl(L"cbx_1"); - cbx_datashow = GetControl(L"cbx_datashow"); - dw_goods = GetControl(L"dw_goods"); - dw_goods.openUrl(GetServerUrl(),L"/sale/view/SaleOrder/template/item"); - dw_source = GetControl(L"dw_source"); - dw_source.openUrl(GetServerUrl(), L"/sale/view/SaleOrder/template/sourceitem"); - - dw_goods.SetColumnState(L"ItemID", false); - dw_goods.SetColumnState(L"LineType", false); - dw_goods.SetColumnState(L"Brand", false); - dw_goods.SetColumnState(L"Assortment", false); - dw_goods.SetColumnState(L"ClassifyID", false); - dw_goods.SetColumnState(L"UnitFreight", false); - //dw_goods.SetColumnState(L"CName",false);//隐藏列 - - dw_goods.SetColumnState(L"Brand", false); - dw_goods.SetColumnState(L"SKUNo", false); - dw_goods.SetColumnState(L"SOLineNo", false); - dw_goods.SetColumnState(L"CustomerPONo", false); - dw_goods.SetColumnState(L"ScheduleShipDate", false); - - dw_goods.SetColumnState(L"PackTechNote", false); - dw_goods.SetColumnState(L"EnquiryPriceListID", false); - dw_goods.SetColumnState(L"Submitter", false); - dw_goods.SetColumnState(L"POSupplierID", false); - dw_goods.SetColumnState(L"QuoteLineID", false); - - dw_list.SetColumnState(L"CreatorID", false); - dw_list.SetColumnState(L"SOID", false); - - - string groupname = publiccode::GetUser().groupname; - if (groupname == L"采购小组") - { - dw_list.SetColumnState(L"USDAmount", false); - dw_list.SetColumnState(L"RMBAmount", false); - - dw_goods.SetColumnState(L"UnitPrice", false); - dw_goods.SetColumnState(L"Amount", false); - dw_goods.SetColumnState(L"UnitCommPrice", false); - dw_goods.SetColumnState(L"CommissionRate", false); - - dw_source.SetColumnState(L"UnitPrice", false); - dw_source.SetColumnState(L"Amount", false); - dw_source.SetColumnState(L"FOBAmount", false); - dw_source.SetColumnState(L"BuyUnitPrice", false); - dw_source.SetColumnState(L"BuyAmount", false); - dw_source.SetColumnState(L"CostRate", false); - } - - rows = L"500"; - myDataUrl = L"/sale/data/SaleOrder/folder/list"; - urlTree = L"/sale/data/SaleOrder/folder"; - tv_folder = GetControl(L"tv_folder"); - tv_folder.SetLineAtRoot(true); - InitialFolder(); - - return 1; - } - - int onloaded() - { - listwin::onloaded(); - - //attach my control event - AttachListon(); - - dw_list.SetColumnState(L"SOID", false); - - HTREEITEM hItem = tv_folder.GetRootItem(); - ExpandFolderItem(hItem, L"Category:Customer"); - tv_folder.ExpandItem(hItem); - //tv_folder.ItemFocus(tv_folder.GetChildItem(hItem)); - tv_folder.ItemFocus(hItem); - - - return -1; - } - - int ProcessUsedArg(xaserverarg arg) - { - HTREEITEM hItem = tv_folder.GetCaretItem(); - if (hItem ) return 1; - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring no = e.getAttribute(L"no"); - if (no.find(L"Customer:") >= 0) - { - arg.AddArg(L"CustomerID", e.getAttribute(L"id")); - xstring name = e.getAttribute(L"name"); - if (name.find(L"(L") >= 0) name = name.left(name.find(L"(L")); - arg.AddArg(L"CustomerName", name); - } - return 1; - } -}; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/ProcessManagement.cpp b/jrj/project/business/SystemSettings/ProcessManagement.cpp new file mode 100644 index 0000000..5239d23 --- /dev/null +++ b/jrj/project/business/SystemSettings/ProcessManagement.cpp @@ -0,0 +1,184 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xlayersheet.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) ProcessManagement : public xframe + { + public: + xdwgrid dw_list; + xnode m_agentNode; //Agent Condition + + public: + ProcessManagement(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static ProcessManagement* CreateInstance(void* implPtr, void* hWnd) + { + ProcessManagement* pWin = new ProcessManagement(implPtr, (HWND)hWnd); + return pWin; + } + int SetAgent() + { + 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; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + SetAgent(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + + if (comdid == L"xmDelete") + { + int MB_OKCANCEL = 1; + int IDOK = 1; + int ret = MessageBox(GetHWND(), L"确认删除流程?", L"提示", MB_OKCANCEL); + if (ret == IDOK) + { + int row = dw_list.GetRow(); + xstring TaskID = dw_list.GetItemString(row, L"TaskID"); + + + xml x = ViewObject::RetrieveData(L"/sale/data/business/DelProcessManagement", L"TaskID", TaskID); + xstring status = x.xml(); + if (status.find(L"ok") == 1) + { + alert(L"删除成功"); + dw_list.DeleteRow(row); + } + else + { + alert(L"删除失败"); + } + + } + return 1; + + } + else if (comdid == L"xmRefresh") + { + OnRetrieve(); + } + else if (comdid == L"AA") + { + AA(); + } + return 0; + } + int AA() + { + + //xstring FobUnitPriceEx=dw_cell.GetItemString(row,colFOBPrice); + xstring FobUnitPriceEx = L"$123.0"; + if (FobUnitPriceEx == L"$") FobUnitPriceEx = L"123"; + //alert(FobUnitPriceEx.find(L"$").toString()); + if (FobUnitPriceEx.find(L"$") >= 0) FobUnitPriceEx = FobUnitPriceEx.right(FobUnitPriceEx.length() - 1); + trace(FobUnitPriceEx); + } + //触发鼠标离开后tran事件,通过查找某个参数得到对应的列 + int OnBaseItemChanged(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + xstring colname = hdr.colname; + xstring value = hdr.data; + + xstring dwname = L"dw_list"; + if (value != L"") + { + KXMLDOMNodeList nlist = GetElement().selectNodes(L"//*[@name='" + dwname + L"']/trans[@for='" + colname + L"']"); + ViewObject::TransData(nlist, dw_list, hdr.row, colname, value); + } + + return 1; + } + + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ProcessManagement::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ProcessManagement::OnSetFocus); + AttachEvent(L"dw_list", L"DWV_ITEMCHANGED", (FEvent)&ProcessManagement::OnBaseItemChanged); + return 1; + } + + + int OnRetrieve() + { + xml x ; + + xaserverarg arg ; + + + if (getUrl(L"/sale/data/business/ProcessManagement", arg.GetString(), x) != 1) + { + trace(x.text()); + return -1; + } + else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + dw_list.SetSelectionMode(1); + } + return 1; + } + + int onload() + { + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"/sale/view/Business3/template/ProcessManagement"); + dw_list.SetColumnState(L"TaskID", false); + + OnRetrieve(); + + OnAttachEvent(); + + return 1; + } + + int onloaded() + { + SetAgent(); + + + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/ProcessManagement_A.cpp b/jrj/project/business/SystemSettings/ProcessManagement_A.cpp deleted file mode 100644 index 8f92f1c..0000000 --- a/jrj/project/business/SystemSettings/ProcessManagement_A.cpp +++ /dev/null @@ -1,513 +0,0 @@ -#include <wobject/xstring.hpp> -#include <xcontrol/xtreeview.hpp> -#include <xcontrol/xdwgrid.hpp> - -#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" -#include "viewobject/view.base.hpp" - -class __declspec(dllexport) SO3list : public listwin -{ -public: - string m_sType; //树选中的类型 - string m_sTypeTxt; //树选中的数据 - string urlTree; - string myDataUrl; - string rows; - xcombobox ddlb_1; - xcombobox cbx_datashow; - - int changeddlb; - - xtreeview tv_folder; - xdwgrid dw_goods; - xdwgrid dw_source; -public: - SO3list(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} -public: - static SO3list* CreateInstance(void* implPtr, void* hWnd) - { - SO3list* pWin = new SO3list(implPtr, (HWND)hWnd); - return pWin; - } - - //process tree - //查找当前树项的顶级目录 - HTREEITEM LookupTopFolder(HTREEITEM hItem) - { - HTREEITEM hRoot = tv_folder.GetRootItem(); - while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem); - return hItem; - } - - int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) - { - KXMLDOMNodeList nlist = ele.selectNodes(L"item"); - int len = nlist.length(); - if (len > 0) tv_folder.SetItemChild(hItem, 1); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - string name = e.getAttribute(L"name"); - HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); - ExpandCatChildFolder(h, e, 35); - } - return 1; - } - - int ExpandFolderItem(HTREEITEM hItem, string no) - { - KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),urlTree, L"no", no, L"rows", rows); - if (!x) return 0; - KXMLDOMNodeList nlist = x.selectNodes(L"/data/item"); - int len = nlist.length(); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - string name = e.getAttribute(L"name"); - HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); - ExpandCatChildFolder(h, e, 35); - } - return 1; - } - - //树展开 - int OnTreeExpanding(TEvent* evt, int p) - { - NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; - HTREEITEM hItem = nmtv.itemNew.hItem; - HTREEITEM hTopItem = LookupTopFolder(hItem); - string name = tv_folder.GetItemLabel(hTopItem); - HTREEITEM child = tv_folder.GetChildItem(hItem); - - KXMLDOMElement e = tv_folder.GetItemData(hItem); - if (!child)ExpandFolderItem(hItem, e.getAttribute(L"no")); - - return 1; - } - - //展开子文件 - int ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) - { - KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); - int len = nlist.length(); - for (int i = 0; i < len; i++) - { - KXMLDOMElement e = nlist.item(i); - string name = e.getAttribute(L"name"); - xstring sImage = e.getAttribute(L"image"); - xstring child = e.getAttribute(L"child"); - int image = 15; - if (sImage) image = sImage.toInt(); - HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); - if (child != L"no") tv_folder.SetItemChild(h, 1); - //ExpandChildFolder(h, e); - } - return 1; - } - - //初始化文件夹 - int InitialFolder() - { - KXMLDOMElement xframeElement = GetElement(); - KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); - if (e) - ExpandChildFolder(0, e); - return 1; - } - - int OnTreeSelChanged(TEvent* evt, LPARAM p) - { - if (changeddlb) return 1; - return OnPreRetrieve(); - } - - int ViewUpdate(LPARAM pr, xstring updateItem, xaserverarg arg) - { - if (updateItem == L"del") - { - int DelRow = dw_list.GetRow(); - dw_list.DeleteRow(DelRow); - return 1; - } - else if (updateItem == L"setstate") - { - int row = dw_list.GetRow(); - if (row < 1) return 1; - KXMLDOMElement ele = dw_list.GetRowElement(row); - string id = GetEntityIDName(1); - string entity = ele.selectSingleNode(id).text(); - //trace(entity); - SetAgent(L"list", entity); - if (arg.GetArgString(L"state") != L"") - //this.dw_list.SetItemString(row, "ApprovalStatus", arg.GetArgString(L"state")); - dw_list.SetItemString(row, L"ApplyStatus", arg.GetArgString(L"state")); - if (arg.GetArgString(L"billstatus") != L"") - { - xstring billstatus = arg.GetArgString(L"billstatus"); - xstring statusName = GetBillStatusName(billstatus); - dw_list.SetItemString(row, L"ApprovalStatus", billstatus); - dw_list.SetItemDisplayString(row, L"ApprovalStatus", statusName); - } - - dw_list.Redraw(); - } - return 1; - } - - bool IsEmptyQueryStr(string queryStr) - { - if (queryStr == L"") return true; - if (queryStr == L"<items join='and'/>") return true; - if (queryStr == L"<items join=\"and\"/>") return true; - //trace(queryStr); - return false; - } - - //检索 - int OnPreRetrieve() - { - HTREEITEM hItem = tv_folder.GetSelectedItem(); - if (!hItem) return 1; - - HCURSOR hCursor = xutil::SetCursorWait(); - KXMLDOMElement e1 = tv_folder.GetItemData(hItem); - string no = e1.getAttribute(L"no"); - KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),myDataUrl, L"no", no, L"QueryTxt", m_QueryTxt, L"rows", rows); - if (x) - { - dw_list.Retrieve(x); - dw_list.Redraw(); - } - else - { - dw_list.Reset(); - dw_list.Redraw(); - dw_goods.Reset(); - dw_goods.Redraw(); - } - dw_list.SetReadOnly(true); - xutil::RestoreCursor(hCursor); - return 1; - /* - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); - arg.AddArg(L"pageindex", m_pageIndex.toString(),""); //第几页 - arg.AddArg(L"pagenumber", m_pageNumber.toString(),""); //每页数量 - arg.AddArg(L"QueryTxt", m_QueryTxt,""); //查询条件 - arg.AddArg(L"sType",m_sType,""); - arg.AddArg(L"sTypeTxt",m_sTypeTxt,""); - xml x = ViewObject::MakeXml(); - - KXMLDOMElement n = m_configDoc.selectSingleNode(L"//list/dwview[@type='dwgrid'][1]"); - if(n) - { - KXMLDOMElement e = n; - if(e.selectSingleNode(L"@dataUrl")) - { - string dataUrl = e.selectSingleNode(L"@dataUrl").text; - if(dataUrl.left(1)!="/") dataUrl = GetEntityName(1)+"/"+dataUrl; - getUrl(dataUrl, arg.GetString(), x); - KXMLDOMElement ele=x.GetXmlDoc().documentElement; - if(dw_pages.ptr_native_) - { - if(ele.selectSingleNode(L"@TotalPage")) - { - string s=ele.selectSingleNode(L"@TotalPage").text; //总数量 - dw_pages.SetMaxPage(s.toInt()); - } - } - dw_list.Retrieve(x); - dw_list.Redraw(); - dw_list.SetReadOnly(true); - } - else - { - SetEntityData(arg); - } - } - else - { - SetEntityData(arg); - } - */ - } - - //历史数据 - int Onhistroydata() - { - int row = dw_list.GetNextSelectRow(1); - if (row > 0) - { - KXMLDOMElement e = dw_list.GetRowElement(row); - xaserverarg& arg = * new xaserverarg; - string sCustomerID = e.selectSingleNode(L"CustomerID").text(); - arg.AddArg(L"CustomerID", sCustomerID, L""); - string sCustomerName = e.selectSingleNode(L"CustomerName").text(); - arg.AddArg(L"CustomerName", sCustomerName, L""); - arg.AddArg(L"EntityName", GetEntityName(1), L""); - arg.AddArg(L"EntityID", GetEntityID(1), L""); - openUrl(L"/sale/view/SO/xpage/histroydata", &arg); - } - return 1; - } - - //xcombobox下拉 - int OnSelectDdlb(TEvent* evt, LPARAM p) - { - changeddlb = 1; - HWND wid = ddlb_1.GetHWND(); - int CB_GETCURSEL = 0x0147; - int nIndex =SendMessage(wid, CB_GETCURSEL, 0, 0); - KXMLDOMElement e = ddlb_1.GetElement(); - KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]"); - string no = e2.selectSingleNode(L"@element").text(); - - HTREEITEM hItem = tv_folder.GetRootItem(); - while (tv_folder.GetChildItem(hItem)) - tv_folder.DeleteItem(tv_folder.GetChildItem(hItem)); - ExpandFolderItem(hItem, no); - - changeddlb = 0; - return 1; - } - - - int OnSelectDataShowDdlb(TEvent* evt, LPARAM p) - { - HWND wid = cbx_datashow.GetHWND(); - int CB_GETCURSEL = 0x0147; - int nIndex = SendMessage(wid, CB_GETCURSEL, 0, 0); - KXMLDOMElement e = cbx_datashow.GetElement(); - KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]"); - rows = e2.selectSingleNode(L"@rows").text(); - OnPreRetrieve(); - - return 1; - } - - int PreOnCmdDispatch(xstring comdid) - { - if (comdid == L"action:bill.new") - { - xstring s = publiccode::GetUser().id; - xstring no = publiccode::GetUser().no; - if (no != L"00303" && no != L"admin") - { - KXMLDOMDocument supplier_x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SupplierV3/entity/FindBySaleType", L"id", s); - if (supplier_x) - { - if ((xstring)supplier_x.text() != L"业务员") - { - alert(L"当前角色不是业务员不能新增单子,请重新选择角色"); - return 0; - } - } - } - } - if (comdid == L"action:bill.annex") - { - xstring deptname = publiccode::GetUser().deptname; - if (deptname == L"采购部") - { - return 1; - } - - int row = dw_list.GetRow(); - if (row < 1) return 1; - xstring guid = dw_list.GetItemString(row, L"SOID"); - xaserverarg& arg = * new xaserverarg(); - - if (guid.length() <= 0)return 1; - - arg.AddArg(L"entityid", guid); - arg.AddArg(L"Type", L"Y"); - OpenWindow(L"dev:xpage[maint.Document.SO3.v3.vx]", arg); - - return 0; - } - if (comdid == L"action:bill.histroydata") return Onhistroydata(); - else if (comdid == L"action:bill.refresh") - { - changeddlb = 1; - HTREEITEM RItem = tv_folder.GetRootItem(); - while (tv_folder.GetChildItem(RItem)) - tv_folder.DeleteItem(tv_folder.GetChildItem(RItem)); - ExpandFolderItem(RItem, L"Category:Customer"); - tv_folder.ExpandItem(RItem); - tv_folder.ItemFocus(RItem); - changeddlb = 0; - return OnPreRetrieve(); - } - if (comdid == L"action:bill.saveas") - { - dw_list.SaveAs(L""); - return 1; - } - if (comdid == L"action:bill.SourceRemark") return OnSourceRemark(); - - return 1; - } - - int OnSourceRemark() - { - xstring name = L"外销合同"; - KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/TradeFinance3/GetSetUpRemarks", L"Type", name); - KXMLDOMNodeList items = x.selectNodes(L"data/Item"); - KXMLDOMNode t = items.item(0); - xstring Content = L""; - if (t.selectSingleNode(L"Content")) - { - Content = t.selectSingleNode(L"Content").text(); - } - xaserverarg& arg = *new xaserverarg; - arg.AddArg(L"value", Content); - OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg); - - return 1; - } - - int OnRowChanged(TEvent* evt, LPARAM p) - { - DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; - int row = hdr.row; - - - if (row < 1) return 1; - - //fixed one event only one process - listwin::OnRowChanged(evt, p); - - HCURSOR hCursor = xutil::SetCursorWait(); - - xstring SONo = dw_list.GetItemString(row, L"SONo"); - KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SaleOrder/maint/item", L"id", SONo); - if (x) - dw_goods.Retrieve(x); - else - dw_goods.Reset(); - dw_goods.Redraw(); - dw_goods.SetReadOnly(true); - - x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SaleOrder/maint/itemwithsource", L"id", SONo); - if (x) - dw_source.Retrieve(x); - else - dw_source.Reset(); - dw_source.Redraw(); - dw_source.SetReadOnly(true); - - xutil::RestoreCursor(hCursor); - - return 1; - } - - - int AttachListon() - { - AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&SO3list::OnTreeSelChanged); //树选择 - AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&SO3list::OnRowChanged);//绑定行更改触发事件OnRowChanged - //AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&listwin::OnDoubleClicked); - AttachEvent(L"cbx_1", L"CBN_SELCHANGE", (FEvent)&SO3list::OnSelectDdlb);//绑定下拉框更改触发事件OnSelectDdlb - AttachEvent(L"cbx_datashow", L"CBN_SELCHANGE", (FEvent)&SO3list::OnSelectDataShowDdlb);//绑定选择数据显示下拉列表事件OnSelectDataShowDdlb - return 1; - } - - int onload() - { - changeddlb = 0; - listwin::onload(); - ddlb_1 = GetControl(L"cbx_1"); - cbx_datashow = GetControl(L"cbx_datashow"); - dw_goods = GetControl(L"dw_goods"); - dw_goods.openUrl(GetServerUrl(),L"/sale/view/SaleOrder/template/item"); - dw_source = GetControl(L"dw_source"); - dw_source.openUrl(GetServerUrl(), L"/sale/view/SaleOrder/template/sourceitem"); - - dw_goods.SetColumnState(L"ItemID", false); - dw_goods.SetColumnState(L"LineType", false); - dw_goods.SetColumnState(L"Brand", false); - dw_goods.SetColumnState(L"Assortment", false); - dw_goods.SetColumnState(L"ClassifyID", false); - dw_goods.SetColumnState(L"UnitFreight", false); - //dw_goods.SetColumnState(L"CName",false);//隐藏列 - - dw_goods.SetColumnState(L"Brand", false); - dw_goods.SetColumnState(L"SKUNo", false); - dw_goods.SetColumnState(L"SOLineNo", false); - dw_goods.SetColumnState(L"CustomerPONo", false); - dw_goods.SetColumnState(L"ScheduleShipDate", false); - - dw_goods.SetColumnState(L"PackTechNote", false); - dw_goods.SetColumnState(L"EnquiryPriceListID", false); - dw_goods.SetColumnState(L"Submitter", false); - dw_goods.SetColumnState(L"POSupplierID", false); - dw_goods.SetColumnState(L"QuoteLineID", false); - - dw_list.SetColumnState(L"CreatorID", false); - dw_list.SetColumnState(L"SOID", false); - - - string groupname = publiccode::GetUser().groupname; - if (groupname == L"采购小组") - { - dw_list.SetColumnState(L"USDAmount", false); - dw_list.SetColumnState(L"RMBAmount", false); - - dw_goods.SetColumnState(L"UnitPrice", false); - dw_goods.SetColumnState(L"Amount", false); - dw_goods.SetColumnState(L"UnitCommPrice", false); - dw_goods.SetColumnState(L"CommissionRate", false); - - dw_source.SetColumnState(L"UnitPrice", false); - dw_source.SetColumnState(L"Amount", false); - dw_source.SetColumnState(L"FOBAmount", false); - dw_source.SetColumnState(L"BuyUnitPrice", false); - dw_source.SetColumnState(L"BuyAmount", false); - dw_source.SetColumnState(L"CostRate", false); - } - - rows = L"500"; - myDataUrl = L"/sale/data/SaleOrder/folder/list"; - urlTree = L"/sale/data/SaleOrder/folder"; - tv_folder = GetControl(L"tv_folder"); - tv_folder.SetLineAtRoot(true); - InitialFolder(); - - return 1; - } - - int onloaded() - { - listwin::onloaded(); - - //attach my control event - AttachListon(); - - dw_list.SetColumnState(L"SOID", false); - - HTREEITEM hItem = tv_folder.GetRootItem(); - ExpandFolderItem(hItem, L"Category:Customer"); - tv_folder.ExpandItem(hItem); - //tv_folder.ItemFocus(tv_folder.GetChildItem(hItem)); - tv_folder.ItemFocus(hItem); - - - return -1; - } - - int ProcessUsedArg(xaserverarg arg) - { - HTREEITEM hItem = tv_folder.GetCaretItem(); - if (hItem ) return 1; - KXMLDOMElement e = tv_folder.GetItemData(hItem); - xstring no = e.getAttribute(L"no"); - if (no.find(L"Customer:") >= 0) - { - arg.AddArg(L"CustomerID", e.getAttribute(L"id")); - xstring name = e.getAttribute(L"name"); - if (name.find(L"(L") >= 0) name = name.left(name.find(L"(L")); - arg.AddArg(L"CustomerName", name); - } - return 1; - } -}; \ No newline at end of file -- Gitblit v1.9.3