From 8c81832b427aced9508265f8bd804f1e66c2059b Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期五, 20 九月 2024 12:18:37 +0800 Subject: [PATCH] update --- jrj/project/business/SO/select.gdnitem.so.cpp | 193 ++++++++++++++++++++++++++++++++++++++++++++++++ jrj/ext-jrj/ext-jrj.vcxproj | 1 jrj/ext-jrj/ext-jrj.vcxproj.filters | 3 3 files changed, 197 insertions(+), 0 deletions(-) diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj index 25f4495..0688867 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj +++ b/jrj/ext-jrj/ext-jrj.vcxproj @@ -928,6 +928,7 @@ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild> </ClCompile> + <ClCompile Include="..\project\business\SO\select.gdnitem.so.cpp" /> <ClCompile Include="..\project\business\SO\select.item.so.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild> diff --git a/jrj/ext-jrj/ext-jrj.vcxproj.filters b/jrj/ext-jrj/ext-jrj.vcxproj.filters index de61650..913d341 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj.filters +++ b/jrj/ext-jrj/ext-jrj.vcxproj.filters @@ -1418,6 +1418,9 @@ <ClCompile Include="JGuiImpl.cpp"> <Filter>jarch.impl</Filter> </ClCompile> + <ClCompile Include="..\project\business\SO\select.gdnitem.so.cpp"> + <Filter>project\business\SO</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <None Include="ext-jrj.def"> diff --git a/jrj/project/business/SO/select.gdnitem.so.cpp b/jrj/project/business/SO/select.gdnitem.so.cpp new file mode 100644 index 0000000..35c8444 --- /dev/null +++ b/jrj/project/business/SO/select.gdnitem.so.cpp @@ -0,0 +1,193 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" +#include "viewobject/saleorder.view.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) SelectGDNItemSOWin : public xframe + { + public: + SelectGDNItemSOWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static SelectGDNItemSOWin* CreateInstance(void* implPtr, void* hWnd) + { + SelectGDNItemSOWin* pWin = new SelectGDNItemSOWin(implPtr, (HWND)hWnd); + return pWin; + } + public: + xdwgrid dw_list; + xnode m_agentNode; //Agent Condition + + xstring CustomerID; + 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 onxmOK() + { + xaserverarg arg = GetArg(); + arg.AddArg(L"items", L""); + xstring str = L""; + int row = dw_list.GetNextSelectRow(1); + while (row > 0 && row <= dw_list.GetRowCount()) + { + KXMLDOMElement ele = dw_list.GetRowElement(row); + str += ele.xml(); + row = dw_list.GetNextSelectRow(row + 1); + } + if (str != L"") + arg.AddArg(L"items", L"<data>" + str + L"</data>"); + //trace("<data>"+str+"</data>"); + CloseWindow(); + return 1; + } + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + + if (comdid ==L"xmSelectAll") + { + for (int i = 1; i <= dw_list.GetRowCount(); i++) + { + dw_list.SelectRow(i, true); + } + dw_list.Redraw(); + return 1; + } + else if (comdid == L"xmSelectNo") + { + dw_list.SelectRow(0, false); + dw_list.Redraw(); + + return 1; + } + else if (comdid == L"xmOk") + { + onxmOK(); + return 1; + } + else if (comdid == L"xmCancel") + { + CloseWindow(); + return 1; + } + else if (comdid == L"xmSearch") + { + xcontrol query = GetControl(L"sl_search"); + xstring queryTxt = query.GetText(); + xml x = ViewObject::RetrieveData(L"/sale/data/SaleOrder/maint/gdnitem2", L"CustomerPONo", queryTxt, L"CustomerID", CustomerID); + dw_list.Retrieve(x); + dw_list.SetSelectionMode(3); + dw_list.Redraw(); + return 1; + } + + return 0; + } + + int OnClicked(TEvent* evt, LPARAM p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + xstring col = hdr.colname; + + if (col == L"ShipQuantity") return 1; + + for (int i = 1; i <= dw_list.GetRowCount(); i++) + { + bool selected = dw_list.IsRowSelected(i);; + if (i == row && !selected) + { + if (dw_list.GetItemString(i, L"ShipQuantity") == L"") + dw_list.SetItemString(i, L"ShipQuantity", dw_list.GetItemString(i, L"Quantity")); + } + if (selected != 0) + { + if (dw_list.GetItemString(i, L"ShipQuantity") == L"") + dw_list.SetItemString(i, L"ShipQuantity", dw_list.GetItemString(i, L"Quantity")); + } + } + dw_list.Redraw(); + + return 1; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&SelectGDNItemSOWin::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&SelectGDNItemSOWin::OnSetFocus); + AttachEvent(L"dw_list", L"DWV_CLICKED", (FEvent)&SelectGDNItemSOWin::OnClicked); + AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&SelectGDNItemSOWin::onxmOK); + + return 1; + } + + int onload() + { + SetArg(); + dw_list = GetControl(L"dw_list"); + //dw_list.openUrl("/sale/view/SaleOrder/template/itemforgdn"); + dw_list.openUrl(L"/sale/view/GDN/template/GDN/soitemforgdn"); + + xml x; + xaserverarg arg = GetArg(); + if (arg) + { + xstring SONo = arg.GetArgString(L"SONo"); + CustomerID = arg.GetArgString(L"CustomerID"); + //x = SaleOrderView::GetItemListForGDN(SONo,CustomerID); + + x = ViewObject::RetrieveData(L"/sale/data/SaleOrder/maint/gdnitem2", L"CustomerPONo", L"", L"CustomerID", CustomerID); + dw_list.Retrieve(x); + //dw_list.SetReadOnly(true); + dw_list.SetSelectionMode(3); + arg.AddArg(L"items", L""); + } + OnAttachEvent(); + + return 1; + } + + int onloaded() + { + //SetAgent(); + + return 1; + } + }; -- Gitblit v1.9.3