xj qian
2024-09-20 8c81832b427aced9508265f8bd804f1e66c2059b
update
已添加1个文件
已修改2个文件
197 ■■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj.filters 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/SO/select.gdnitem.so.cpp 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
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">
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;
        }
    };