xj qian
2024-07-11 78affdc74a7b86df8a1f07311741f84942ef7944
Merge branch 'master' of http://116.62.18.175:6699/r/mis-prj
已添加7个文件
已修改2个文件
2331 ■■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj.filters 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/total3/FactoryPayment.cpp 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/total3/GDNItem.GDN.cpp 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/total3/ProductNewList.cpp 598 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/total3/ProductNoOut.SO.cpp 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/total3/viewex.total.cpp 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/total3/viewex.total1.cpp 369 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/total3/viewex.total2.cpp 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj
@@ -679,6 +679,13 @@
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\start.vframe.vbusiness.cpp" />
    <ClCompile Include="..\project\total3\FactoryPayment.cpp" />
    <ClCompile Include="..\project\total3\GDNItem.GDN.cpp" />
    <ClCompile Include="..\project\total3\ProductNewList.cpp" />
    <ClCompile Include="..\project\total3\ProductNoOut.SO.cpp" />
    <ClCompile Include="..\project\total3\viewex.total.cpp" />
    <ClCompile Include="..\project\total3\viewex.total1.cpp" />
    <ClCompile Include="..\project\total3\viewex.total2.cpp" />
    <ClCompile Include="..\project\total3\ViewTotalArgWin.cpp" />
    <ClCompile Include="..\project\total3\ViewExTotalWin.cpp" />
    <ClCompile Include="..\project\tradedocument\DocFileSaveDlg.cpp" />
jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -818,5 +818,26 @@
    <ClCompile Include="..\project\business\QuoteFile.cpp">
      <Filter>project\business</Filter>
    </ClCompile>
    <ClCompile Include="..\project\total3\FactoryPayment.cpp">
      <Filter>vbusiness\total</Filter>
    </ClCompile>
    <ClCompile Include="..\project\total3\GDNItem.GDN.cpp">
      <Filter>vbusiness\total</Filter>
    </ClCompile>
    <ClCompile Include="..\project\total3\ProductNewList.cpp">
      <Filter>vbusiness\total</Filter>
    </ClCompile>
    <ClCompile Include="..\project\total3\ProductNoOut.SO.cpp">
      <Filter>vbusiness\total</Filter>
    </ClCompile>
    <ClCompile Include="..\project\total3\viewex.total.cpp">
      <Filter>vbusiness\total</Filter>
    </ClCompile>
    <ClCompile Include="..\project\total3\viewex.total1.cpp">
      <Filter>vbusiness\total</Filter>
    </ClCompile>
    <ClCompile Include="..\project\total3\viewex.total2.cpp">
      <Filter>vbusiness\total</Filter>
    </ClCompile>
  </ItemGroup>
</Project>
jrj/project/total3/FactoryPayment.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,194 @@
#include <wobject/xwin.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xoffice.hpp>
#include <xcontrol/xcell.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
#include <xcontrol/xcombobox.hpp>
#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp>
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) FactoryPayment : public xwin
    {
    public:
        FactoryPayment(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    public:
        static FactoryPayment* CreateInstance(void* implPtr, void* hWnd)
        {
            FactoryPayment* pWin = new FactoryPayment(implPtr, (HWND)hWnd);
            return pWin;
        }
    public:
        xdwgrid    dw_list;
        xoffice     dw_office;
        xcell        dw_cell;
        xnode    m_agentNode;    //Agent Condition
        xstring m_category;
        xstring argStr;
        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, int param)
        {
            //重置工具条
            SetAgent();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            HCURSOR hCursor = 0;
            if (comdid == L"xmQuery")
            {
                xaserverarg ar ;
                ar.AddArg(L"argurl", L"/sale/view/Total3/template/SOSupplierInfoArg");
                if (argStr != L"")
                    ar.AddArg(L"arg", argStr);
                ar.AddArg(L"action", L"");
                OpenWindow(L"dev:xpage[view.total.arg.vx]",ar );
                xstring arstr = ar.GetArgString(L"arg");
                if (arstr != L"" && ar.GetArgString(L"action") == L"ok")
                {
                    argStr = arstr;
                    hCursor = xutil::SetCursorWait();
                    OnRetrieve(L"/sale/data/Total3/total/SOSupplierInfoList", argStr);
                    xutil::RestoreCursor(hCursor);
                }
                else
                {
                    argStr = L"";
                    OnRetrieve(L"/sale/data/Total3/total/SOSupplierInfoList", argStr);
                }
                return 1;
            }
            return 0;
        }
        int OnCombboChanged(TEvent* evt, int lParam)
        {
            int h = xcombobox::GetCurSel(evt->command.hCtrl);
            if (h > -1)
            {
                HCURSOR hCursor = xutil::SetCursorWait();
                KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h);
                PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0);
                //OnCmdDispatch(L"xmQuery");
                xutil::RestoreCursor(hCursor);
            }
            return 1;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, int param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnDWClick(TEvent* evt, int p)
        {
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xstring colname = hdr.colname;
            int row = hdr.row;
            if (row < 1) return 1;
            return 1;
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&FactoryPayment::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&FactoryPayment::OnSetFocus);
            AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&FactoryPayment::OnCombboChanged);
            AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&FactoryPayment::OnDWClick);
        }
        int  OnRetrieve(xstring dataurl, xstring argstr)
        {
            dw_list.Reset();
            xml x;
            xaserverarg arg ;
            arg.AddArg(L"arg", argstr);
            if (xurl::get(dataurl, arg.GetString(), x) != 1)
            {
                trace(x.text());
                dw_list.Redraw();
                return -1;
            }
            dw_list.Retrieve(x);
            dw_list.Redraw();
            dw_list.SetReadOnly(true);
            return 1;
        }
        int onload()
        {
            dw_list = GetControl(L"dw_report");
            dw_office = GetControl(L"dw_office");
            dw_cell = GetControl(L"dw_cell");
            dw_list.openUrl(L"/sale/view/Total3/template/SOSupplierInfoList");
            /*dw_list.SetColumnState(L"包装价",false);
            dw_list.SetColumnState(L"包装总价",false);
            dw_list.SetColumnState(L"UnitPrice",false);
            dw_list.SetColumnState(L"SUMUnitPrice",false);
            dw_list.SetColumnState(L"Packages",false);
            dw_list.SetColumnState(L"HasImage",false);
            dw_list.SetColumnState(L"Note",false);*/
            argStr = L"";
            xcombobox xc = GetControl(L"cb_report");
            OnAttachEvent();
            return 1;
        }
        int onloaded()
        {
            SetAgent();
            OnCmdDispatch(L"xmQuery");
            return 1;
        }
    };
jrj/project/total3/GDNItem.GDN.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,195 @@
#include <wobject/xwin.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xoffice.hpp>
#include <xcontrol/xcell.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
#include <xcontrol/xcombobox.hpp>
#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp>
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) ViewGDNItemTotalWin : public xwin
    {
    public:
        ViewGDNItemTotalWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    public:
        static ViewGDNItemTotalWin* CreateInstance(void* implPtr, void* hWnd)
        {
            ViewGDNItemTotalWin* pWin = new ViewGDNItemTotalWin(implPtr, (HWND)hWnd);
            return pWin;
        }
    public:
        xdwgrid    dw_list;
        xoffice     dw_office;
        xcell        dw_cell;
        xnode    m_agentNode;    //Agent Condition
        xstring m_category;
        xstring argStr;
        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, int param)
        {
            //重置工具条
            SetAgent();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            HCURSOR hCursor = 0;
            if (comdid == L"xmQuery")
            {
                xaserverarg ar ;
                ar.AddArg(L"argurl", L"/sale/view/Total3/arg/GDNItemshipfull");
                if (argStr != L"")
                    ar.AddArg(L"arg", argStr);
                ar.AddArg(L"action", L"");
                OpenWindow(L"dev:xpage[view.total.arg.vx]", ar);
                xstring arstr = ar.GetArgString(L"arg");
                if (arstr != L"" && ar.GetArgString(L"action") == L"ok")
                {
                    argStr = arstr;
                    hCursor = xutil::SetCursorWait();
                    OnRetrieve(L"/sale/data/Total3/total/GDNTotal/Item/Full1", argStr);
                    xutil::RestoreCursor(hCursor);
                }
                else
                {
                    argStr = L"";
                    OnRetrieve(L"/sale/data/Total3/total/GDNTotal/Item/Full1", argStr);
                }
                return 1;
            }
            return 0;
        }
        int OnCombboChanged(TEvent* evt, int lParam)
        {
            int h = xcombobox::GetCurSel(evt->command.hCtrl);
            if (h > -1)
            {
                HCURSOR hCursor = xutil::SetCursorWait();
                KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h);
                PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0);
                //OnCmdDispatch(L"xmQuery");
                xutil::RestoreCursor(hCursor);
            }
            return 1;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, int param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnDWClick(TEvent* evt, int p)
        {
            DWNMHDR&  hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xstring colname = hdr.colname;
            int row = hdr.row;
            if (row < 1) return 1;
            return 1;
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewGDNItemTotalWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewGDNItemTotalWin::OnSetFocus);
            AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewGDNItemTotalWin::OnCombboChanged);
            AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewGDNItemTotalWin::OnDWClick);
        }
        int  OnRetrieve(xstring dataurl, xstring argstr)
        {
            dw_list.Reset();
            xml x;
            xaserverarg arg ;
            arg.AddArg(L"arg", argstr);
            if (xurl::get(dataurl, arg.GetString(), x) != 1)
            {
                trace(x.text());
                dw_list.Redraw();
                return -1;
            }
            dw_list.Retrieve(x);
            dw_list.Redraw();
            dw_list.SetReadOnly(true);
            return 1;
        }
        int onload()
        {
            dw_list = GetControl(L"dw_report");
            dw_office = GetControl(L"dw_office");
            dw_cell = GetControl(L"dw_cell");
            dw_list.openUrl(L"/sale/view/Total3/template/business/gdn/GDNitem/ship/full");
            dw_list.SetColumnState(L"包装价", false);
            dw_list.SetColumnState(L"包装总价", false);
            dw_list.SetColumnState(L"UnitPrice", false);
            dw_list.SetColumnState(L"SUMUnitPrice", false);
            dw_list.SetColumnState(L"Packages", false);
            dw_list.SetColumnState(L"HasImage", false);
            dw_list.SetColumnState(L"Note", false);
            argStr = L"";
            xcombobox xc = GetControl(L"cb_report");
            OnAttachEvent();
            return 1;
        }
        int onloaded()
        {
            SetAgent();
            OnCmdDispatch(L"xmQuery");
            return 1;
        }
    };
jrj/project/total3/ProductNewList.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,598 @@
#include <wobject/xwin.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xoffice.hpp>
#include <xcontrol/xcell.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
#include <xcontrol/xcombobox.hpp>
#include "xcontrol/xshtml.hpp"
#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp>
#include "viewobject/view.base.hpp"
#include "vbusiness/vframe/frame.vframe.vbusiness.hpp"
#include "viewobject/productlibrary.view.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) ProductNewList : public xframe
    {
    public:
        ProductNewList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static ProductNewList* CreateInstance(void* implPtr, void* hWnd)
        {
            ProductNewList* pWin = new ProductNewList(implPtr, (HWND)hWnd);
            return pWin;
        }
    public:
        xdwgrid    dw_list;
        KXMLDOMElement imageElement;
        xnode    m_agentNode;    //Agent Condition
        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, int param)
        {
            //重置工具条
            SetAgent();
            return 1;
        }
        int OnRetrieve()
        {
            xml x;
            xcontrol query = GetControl(L"sle_search");
            xstring keyword = query.GetText();
            //alert(keyword);
            xaserverarg arg ;
            arg.AddArg(L"keyword", keyword);
            if (xurl::get(L"/sale/data/ProductLibrary3/data/list/newlist", arg.GetString(), x) != 1)
            {
                xstring error = x.text();
                trace(error);
            }
            else
            {
                //alert(x.GetXml());
                dw_list.Retrieve(x);
                //dw_list.SetReadOnly(true);
            }
            for (int i = 1; i <= dw_list.GetColumnCount(); i++)
            {
                //trace(dw_list.GetColumnName(i));
                if (dw_list.GetColumnName(i) != L"GoodsNo" &&
                    dw_list.GetColumnName(i) != L"EName" &&
                    dw_list.GetColumnName(i) != L"CName")
                    dw_list.SetReadOnlyColumn(i);
            }
            dw_list.Redraw();
        }
        int OnRetrieveEx()
        {
            xml x;
            xcontrol query = GetControl(L"sle_search");
            xstring keyword = query.GetText();
            //alert(keyword);
            xaserverarg arg ;
            arg.AddArg(L"keyword", keyword);
            if (xurl::get(L"/sale/data/ProductLibrary3/data/list/newlistEx", arg.GetString(), x) != 1)
            {
                xstring error = x.text();
                trace(error);
            }
            else
            {
                //alert(x.GetXml());
                dw_list.Retrieve(x);
                //dw_list.SetReadOnly(true);
            }
            for (int i = 1; i <= dw_list.GetColumnCount(); i++)
            {
                //trace(dw_list.GetColumnName(i));
                if (dw_list.GetColumnName(i) != L"GoodsNo" &&
                    dw_list.GetColumnName(i) != L"EName" &&
                    dw_list.GetColumnName(i) != L"CName")
                    dw_list.SetReadOnlyColumn(i);
            }
            dw_list.Redraw();
        }
        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)
            {
                xstring 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='VolumeDesc1' 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.GetGuid(row);
            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, 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, 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 (options.item(k).text())
                            {
                                if (k > 0) terms += L", L";
                                terms += L"[" + xstring(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, 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(xurl::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;
        }
        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(L"xxx:" + xstring(xp.xml(), true));
            }
            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, L"");
                }
                im.Redraw();
                //win32::SendMessage(im.GetId(),0x000f,0,1);
                //win32::InvalidateRect(im.GetId(),cast(0 as ref xrect),true);
            }
            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);
            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 = (L"/sale/view/ProductLibrary/xpage/bigpictureview", arg);
            int h = openUrl(L"dev:xpage[BigPictureView.Product3.vx]", &arg);
            /*
            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;
        }
        int OnSave()
        {
            dw_list.AcceptText();
            if (dw_list.GetRowCount() < 1) return 0;
            xstring error = L"";
            xml x;
            dw_list.DwUpdateAllToEx(x);
            xaserverarg arg ;
            arg.AddArg(L"content", x.xml());
            //trace(x.GetXml());
            if (xurl::get(L"/sale/data/ProductLibrary3/update/productex", arg.GetString(), x) != 1)
            {
                error = x.text();
                alert(error);
                return 1;
            }
            else
            {
                alert(L"保存成功");
                arg.AddArg(L"No", dw_list.GetItemString(dw_list.GetRow(), L"SKUNo"));
                if (xurl::get(L"/sale/data/business/message/productApplyedMessage", arg.GetString(), x) != 1)
                {
                    error = x.text();
                    trace(error);
                    return 0;
                }
            }
            return 1;
        }
        int OnMakeNewGoodsNo()
        {
            if (dw_list.GetItemString(dw_list.GetRow(), L"GoodsNo") != L"") return 1;
            if (dw_list.GetRowCount() < 1) return 1;
            xaserverarg arg ;
            arg.AddArg(L"EntityID", dw_list.GetGuid(dw_list.GetRow()));
            KXMLDOMElement e = dw_list.GetRowElement(dw_list.GetRow());
            int pr = cast(e as int);
            arg.AddArg(L"data",xstring( pr));
            pr = cast(dw_list as int);
            arg.AddArg(L"dw", pr.toString());
            arg.AddArg(L"HWND", xstring((__int64)GetHWND()));
            OpenWindow(L"dev:xpage[ProductNewItem.vx]", arg );
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            if (comdid == L"xmCancel")
            {
                CloseWindow();
                return 1;
            }
            if (comdid == L"xmMakeGoodsNo")
            {
                return OnMakeNewGoodsNo();
            }
            if (comdid == L"xmProductView")
            {
                OpenWindow(L"dev:xpage[Product.SearchDlg.vx]", 0);
                return 1;
            }
            if (comdid == L"xmRefresh")
            {
                if (xaserver::GetUserNo() != L"00A01")
                {
                    OnRetrieve();
                }
                else
                {
                    OnRetrieveEx();
                }
                return 1;
            }
            if (comdid == L"xmDelete")
            {
                int row = listwin::dw_list.GetNextSelectRow(1);
                if (row < 1) {
                    row = listwin::dw_list.GetRow();
                    if (row < 1) {
                        //win::MessageBox(GetHWND(),L"请选中要删除的行!",L"提示",0);
                        return -1;
                    }
                }
                KXMLDOMElement e = listwin::dw_list.GetRowElement(row);
                xstring sguid = e.selectSingleNode(L"@guid").text();
                int  MB_YESNO = 0x00000004;
                int  IDYES = 6;
                if (MessageBox(GetHWND(), L"确认删除吗?", L"提示", MB_YESNO) != IDYES) return 1;
                xml x;
                xaserverarg arg ;
                arg.AddArg(L"EntityID", sguid);
                //    trace(sguid);
                if (xurl::post(L"/sale/data/ProductLibrary3/delete/Product", arg.GetString(), x) != 1)
                {
                    xstring error = x.text();
                    trace(error);
                }
                else
                {
                    KXMLDOMElement msg = x.selectNodes(L"process").item(0);
                    xstring success = msg.selectSingleNode(L"@finished").text();
                    if (success == L"0")
                    {
                        alert(msg.selectSingleNode(L"@errInfo").text());
                    }
                    else
                    {
                        MessageBox(GetHWND(), L"删除成功!", L"提示", 0);
                        listwin::dw_list.DeleteRow(row);
                    }
                }
                return 1;
            }
            if (comdid == L"xmSave")     return OnSave();
            return 0;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, int param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductNewList::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductNewList::OnSetFocus);
            AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductNewList::OnRowChanged);
            AttachEvent(L"im1", L"IMG_LDBCLICK", (FEvent)&ProductNewList::OnImgDBClicked);
        }
        int onload()
        {
            dw_list = GetControl(L"dw_list");
            dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L""));
            dw_list.SetEditUpperMode(true);
            dw_list.SetReadOnly(true);
            OnAttachEvent();
            dw_list.SetColumnState(L"SKUID", false);
            return 1;
        }
        int onloaded()
        {
            SetAgent();
            if (xaserver::GetUserNo() != L"00A01") OnRetrieve();
            return 1;
        }
    };
jrj/project/total3/ProductNoOut.SO.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,188 @@
#include <wobject/xwin.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xoffice.hpp>
#include <xcontrol/xcell.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
#include <xcontrol/xcombobox.hpp>
#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp>
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) ViewProductNoOutTotalWin : public xwin
    {
    public:
        ViewProductNoOutTotalWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    public:
        static ViewProductNoOutTotalWin* CreateInstance(void* implPtr, void* hWnd)
        {
            ViewProductNoOutTotalWin* pWin = new ViewProductNoOutTotalWin(implPtr, (HWND)hWnd);
            return pWin;
        }
    public:
        xdwgrid    dw_list;
        xoffice     dw_office;
        xcell        dw_cell;
        xnode    m_agentNode;    //Agent Condition
        xstring m_category;
        xstring argStr;
        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, int param)
        {
            //重置工具条
            SetAgent();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            HCURSOR hCursor = 0;
            if (comdid == L"xmQuery")
            {
                xaserverarg ar ;
                ar.AddArg(L"argurl", L"/sale/view/Total3/arg/SODY");
                if (argStr != L"")
                    ar.AddArg(L"arg", argStr);
                OpenWindow(L"dev:xpage[view.total.arg.vx]", ar );
                xstring arstr = ar.GetArgString(L"arg");
                if (arstr != L"" && ar.GetArgString(L"action") == L"ok")
                {
                    argStr = arstr;
                    hCursor = xutil::SetCursorWait();
                    OnRetrieve(L"/sale/data/Total3/total/SODY", argStr);
                    xutil::RestoreCursor(hCursor);
                }
                else
                {
                    argStr = L"";
                    OnRetrieve(L"/sale/data/Total3/total/SODY", argStr);
                }
                return 1;
            }
            return 0;
        }
        int OnCombboChanged(TEvent* evt, int lParam)
        {
            int h = xcombobox::GetCurSel(evt->command.hCtrl);
            if (h > -1)
            {
                HCURSOR hCursor = xutil::SetCursorWait();
                KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h);
                SwitchReport(e);
                PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0);
                //OnCmdDispatch(L"xmQuery");
                xutil::RestoreCursor(hCursor);
            }
            return 1;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, int param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnDWClick(TEvent* evt, int p)
        {
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xstring colname = hdr.colname;
            int row = hdr.row;
            if (row < 1) return 1;
            return 1;
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewProductNoOutTotalWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewProductNoOutTotalWin::OnSetFocus);
            AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewProductNoOutTotalWin::OnCombboChanged);
            AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewProductNoOutTotalWin::OnDWClick);
            return 1;
        }
        int  OnRetrieve(xstring dataurl, xstring argstr)
        {
            dw_list.Reset();
            xml x;
            xaserverarg arg ;
            arg.AddArg(L"arg", argstr);
            if (xurl::get(dataurl, arg.GetString(), x) != 1)
            {
                trace(x.text());
                dw_list.Redraw();
                return -1;
            }
            dw_list.Retrieve(x);
            dw_list.Redraw();
            dw_list.SetReadOnly(true);
            return 1;
        }
        int onload()
        {
            dw_list = GetControl(L"dw_report");
            dw_office = GetControl(L"dw_office");
            dw_cell = GetControl(L"dw_cell");
            dw_list.openUrl(L"/sale/view/Total3/template/PRODUCTSODY");
            argStr = L"";
            xcombobox xc = GetControl(L"cb_report");
            OnAttachEvent();
            return 1;
        }
        int onloaded()
        {
            SetAgent();
            OnCmdDispatch(L"xmQuery");
            return 1;
        }
    };
jrj/project/total3/viewex.total.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,389 @@
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xoffice.hpp>
#include <xcontrol/xcell.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
#include <xcontrol/xcombobox.hpp>
#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp>
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class ViewEx111TotalWin : public xwin
    {
    public:
        ViewEx111TotalWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    public:
        static ViewEx111TotalWin* CreateInstance(void* implPtr, void* hWnd)
        {
            ViewEx111TotalWin* pWin = new ViewEx111TotalWin(implPtr, (HWND)hWnd);
            return pWin;
        }
    public:
        xdwgrid    dw_list;
        xoffice     dw_office;
        xcell        dw_cell;
        xnode    m_agentNode;    //Agent Condition
        KXMLDOMElement rptEle;
        xstring m_category;
        xstring argStr;
        int      hWndImageView;
        int      hWndRetrieveTip;
        bool    dataretrieveing;
        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, int param)
        {
            //重置工具条
            SetAgent();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            xstring UserNo = publiccode::GetUser().no;
            HCURSOR hCursor = 0;
            //if(UserNo !=L"00603")
            //{
            if (comdid == L"xmAnalysis")
            {
                hCursor = xutil::SetCursorWait();
                xstring str = dw_list.DataAnalysis(L"");
                xaserverarg arg ;
                arg.AddArg(L"html", str);
                OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg);
                xutil::RestoreCursor(hCursor);
                return 1;
            }
            if (comdid == L"xmSaveAs")
            {
                dw_list.SaveAs(L"");
                return 1;
            }
            if (comdid == L"xmRemarks")
            {
                xstring name = rptEle.getAttribute(L"name");
                xml x = ViewObject::RetrieveData(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 arg1 ;
                arg1.AddArg(L"value", Content);
                OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg1);
                return 1;
            }
            //}
            if (comdid == L"xmLookImage")
            {
                int row = dw_list.GetRow();
                xstring skuid = dw_list.GetGuid(row);
                OnLookImage(skuid);
                return 1;
            }
            if (comdid == L"xmTrans")
                return OnTransData();
            if (comdid == L"xmQuery")
            {
                if (rptEle)
                {
                    xstring argUrl = rptEle.getAttribute(L"arg");
                    if (argUrl != L"")
                    {
                        xaserverarg ar ;
                        ar.AddArg(L"argurl", argUrl);
                        if (argStr != L"")
                            ar.AddArg(L"arg", argStr);
                        OpenWindow(L"dev:xpage[view.total.arg.vx]", ar );
                        xstring arstr = ar.GetArgString(L"arg");
                        if (arstr != L"" && ar.GetArgString(L"action") == L"ok")
                        {
                            argStr = arstr;
                            hCursor = xutil::SetCursorWait();
                            OnRetrieve(rptEle.getAttribute(L"data"), argStr);
                            xutil::RestoreCursor(hCursor);
                        }
                    }
                    else
                    {
                        argStr = L"";
                        OnRetrieve(rptEle.getAttribute(L"data"), argStr);
                    }
                }
                return 1;
            }
            return 0;
        }
        int OnLookImage(xstring skuid)
        {
            HCURSOR hCursor = xutil::SetCursorWait();
            xaserverarg arg ;
            arg.AddArg(L"guid", skuid);
            OpenWindow(L"dev:xpage[ViewPictures.vx]", arg);
            xutil::RestoreCursor(hCursor);
            return 1;
        }
        int SwitchReport(KXMLDOMElement e)
        {
            xstring dwname = e.getAttribute(L"template");
            xstring dataurl = e.getAttribute(L"data");
            xstring sheettype = e.getAttribute(L"reporttype");
            if (rptEle != e)
            {
                argStr = L"";
                rptEle = e;
            }
            if (sheettype == L"") sheettype = L"report";
            SwitchLayer(L"dw_" + sheettype, L"report");
            if (sheettype == L"report")dw_list.openUrl(dwname);
            SetAgent();
            return 1;
        }
        int OnCombboChanged(TEvent* evt, int lParam)
        {
            int h = xcombobox::GetCurSel(evt->command.hCtrl);
            if (h > -1)
            {
                HCURSOR hCursor = xutil::SetCursorWait();
                KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h);
                SwitchReport(e);
                PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0);
                //OnCmdDispatch(L"xmQuery");
                xutil::RestoreCursor(hCursor);
            }
            return 1;
        }
        int OnTransData()
        {
            int ret =MessageBox(GetHWND(), L"是否更新数据?\n更新过程预计需要四十分钟,如果中间弹出等待时间过长的提示,请点击中间重试按钮,或等待到一定时间再点击", L"提示", 0x4 /*yesno*/);
            if (ret != 6 /*IDYES */) return 1;
            xml x;
            HCURSOR hCursor = xutil::SetCursorWait();
            if (xurl::get(L"/sale/data/Total3/total/transdata", L"", x) != 1)
            {
                xutil::RestoreCursor(hCursor);
                return 1;
            }
            else
            {
                xutil::RestoreCursor(hCursor);
                alert(L"数据传输完成!");
                return 1;
            }
            return 1;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, int param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnDWClick(TEvent* evt, int p)
        {
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xstring colname = hdr.colname;
            int row = hdr.row;
            if (row < 1) return 1;
            xaserverarg arg;
            /*
            if(colname==L"SONo")
            {
                xstring SONo = dw_list.GetItemString(row,colname);
                arg=new xaserverarg;
                arg.AddArg(L"EntityNo",SONo);
                arg.AddArg(L"ReadOnly",L"true");
                OpenWindow(L"dev:xpage[base.maint.so.vx]",arg.getNativePointer());
            }
            if(colname==L"InvoiceNo")
            {
                xstring InvoiceNo= dw_list.GetItemString(row,colname);
                arg=new xaserverarg;
                arg.AddArg(L"EntityNo",InvoiceNo);
                arg.AddArg(L"ReadOnly",L"true");
                OpenWindow(L"dev:xpage[maint.GDN3.vx]",arg.getNativePointer());
            }
            if(colname==L"InvoiceNoEx")
            {
                xstring InvoiceNoEx= dw_list.GetItemString(row,colname);
                arg=new xaserverarg;
                arg.AddArg(L"EntityNo",InvoiceNoEx);
                arg.AddArg(L"invoiceno",InvoiceNoEx);
                arg.AddArg(L"ReadOnly",L"true");
                OpenWindow(L"dev:xpage[maint.vatnotify.vx]",arg.getNativePointer());
            }
            */
            return 1;
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewEx111TotalWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewEx111TotalWin::OnSetFocus);
            AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewEx111TotalWin::OnCombboChanged);
            AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewEx111TotalWin::OnDWClick);
            return 1;
        }
        int  OnRetrieve(xstring dataurl, xstring argstr)
        {
            if (!rptEle) return 0;
            dw_list.Reset();
            xml x;
            xaserverarg arg ;
            arg.AddArg(L"arg", argstr);
            trace(argstr);
            xstring sheettype = rptEle.getAttribute(L"reporttype");
            if (sheettype == L"") sheettype = L"report";
            if (xurl::get(dataurl, arg.GetString(), x) != 1)
            {
                //trace(L"\r\n--------" + x.text());
                dw_list.Redraw();
                return -1;
            }
            else
            {
                //xutil::SaveToFile(L"C:\\Temp\\Total3.xml",x.GetXml(),L"",L"",L"");
                if (sheettype == L"report")
                {
                    dw_list.Retrieve(x);
                    dw_list.Redraw();
                    dw_list.SetReadOnly(true);
                }
                else if (sheettype == L"cell")
                {
                }
                else if (sheettype == L"office")
                {
                    dw_office.LoadTemplate(x,0);
                    for (int i = 0; i < dw_office.GetSheetCount(); i++)
                    {
                        xcell sheet = dw_office.GetSheet(i);
                        sheet.SetReadOnly(true);
                    }
                }
            }
            return 1;
        }
        xml getReportSet(xstring category)
        {
            xml x;
            xaserverarg arg ;
            arg.AddArg(L"category", category);
            if (xurl::get(L"/sale/data/Total3/reportset", arg.GetString(), x) != 1)
            {
                return 0;
            }
            return x;
        }
        int onload()
        {
            SetArg();
            dw_list = GetControl(L"dw_report");
            dw_office = GetControl(L"dw_office");
            dw_cell = GetControl(L"dw_cell");
            dw_list.openUrl(L"/sale/view/Total3/template/sodetail");
            argStr = L"";
            xcombobox xc = GetControl(L"cb_report");
            m_category = L"total/business";
            //m_category = L"total/sample";
            if (GetWinParam()) {
                xaserverarg arg =GetArg();
                m_category = arg.GetArgString(L"category");
            }
            xml x = getReportSet(m_category);
            if (x)
            {
                KXMLDOMNodeList nlist = x.selectNodes(L"//reports/report");
                int len = nlist.length();
                for (int i = 0; i < len; i++)
                {
                    KXMLDOMElement rpt = nlist.item(i);
                    xstring name = rpt.getAttribute(L"name");
                    if (i == 0) xc.SetText(name);
                    if (i == 0) rptEle = rpt;
                }
            }
            OnAttachEvent();
            return 1;
        }
        int onloaded()
        {
            SetAgent();
            if (rptEle)
            {
                SwitchReport(rptEle);
                //OnCmdDispatch(L"xmQuery");
            }
            return 1;
        }
    };
jrj/project/total3/viewex.total1.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,369 @@
#include <wobject/xwin.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xoffice.hpp>
#include <xcontrol/xcell.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
#include <xcontrol/xcombobox.hpp>
#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp>
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) ViewExTotal1Win : public xwin
    {
    public:
        ViewExTotal1Win(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    public:
        static ViewExTotal1Win* CreateInstance(void* implPtr, void* hWnd)
        {
            ViewExTotal1Win* pWin = new ViewExTotal1Win(implPtr, (HWND)hWnd);
            return pWin;
        }
    public:
        xdwgrid    dw_list;
        xoffice     dw_office;
        xcell        dw_cell;
        xnode    m_agentNode;    //Agent Condition
        KXMLDOMElement rptEle;
        xstring m_category;
        xstring argStr;
        int      hWndImageView;
        int      hWndRetrieveTip;
        bool    dataretrieveing;
        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, int param)
        {
            //重置工具条
            SetAgent();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            xstring UserNo = publiccode::GetUser().no;
            HCURSOR hCursor = 0;
            //if(UserNo !=L"00603")
            //{
            if (comdid == L"xmAnalysis")
            {
                hCursor = xutil::SetCursorWait();
                xstring str = dw_list.DataAnalysis(L"");
                xaserverarg arg ;
                arg.AddArg(L"html", str);
                OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg );
                xutil::RestoreCursor(hCursor);
                return 1;
            }
            if (comdid == L"xmSaveAs")
            {
                dw_list.SaveAs(L"");
                return 1;
            }
            //}
            if (comdid == L"xmLookImage")
            {
                int row = dw_list.GetRow();
                xstring skuid = dw_list.GetGuid(row);
                OnLookImage(skuid);
                return 1;
            }
            if (comdid == L"xmTrans")
                return OnTransData();
            if (comdid == L"xmQuery")
            {
                if (rptEle)
                {
                    xstring argUrl = rptEle.getAttribute(L"arg");
                    if (argUrl != L"")
                    {
                        xaserverarg ar ;
                        ar.AddArg(L"argurl", argUrl);
                        if (argStr != L"")
                            ar.AddArg(L"arg", argStr);
                        OpenWindow(L"dev:xpage[view.total.arg.vx]", ar);
                        xstring arstr = ar.GetArgString(L"arg");
                        if (arstr != L"" && ar.GetArgString(L"action") == L"ok")
                        {
                            argStr = arstr;
                            hCursor = xutil::SetCursorWait();
                            OnRetrieve(rptEle.getAttribute(L"data"), argStr);
                            xutil::RestoreCursor(hCursor);
                        }
                    }
                    else
                    {
                        argStr = L"";
                        OnRetrieve(rptEle.getAttribute(L"data"), argStr);
                    }
                }
                return 1;
            }
            return 0;
        }
        int OnLookImage(xstring skuid)
        {
            HCURSOR hCursor = xutil::SetCursorWait();
            xaserverarg arg ;
            arg.AddArg(L"guid", skuid);
            OpenWindow(L"dev:xpage[ViewPictures.vx]", arg);
            xutil::RestoreCursor(hCursor);
            return 1;
        }
        int SwitchReport(KXMLDOMElement e)
        {
            xstring dwname = e.getAttribute(L"template");
            xstring dataurl = e.getAttribute(L"data");
            xstring sheettype = e.getAttribute(L"reporttype");
            if (rptEle != e)
            {
                argStr = L"";
                rptEle = e;
            }
            if (sheettype == L"") sheettype = L"report";
            SwitchLayer(L"dw_" + sheettype, L"report");
            if (sheettype == L"report")dw_list.openUrl(dwname);
            SetAgent();
            return 1;
        }
        int OnCombboChanged(TEvent* evt, int lParam)
        {
            int h = xcombobox::GetCurSel(evt->command.hCtrl);
            if (h > -1)
            {
                HCURSOR hCursor = xutil::SetCursorWait();
                KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h);
                SwitchReport(e);
                PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0);
                //OnCmdDispatch(L"xmQuery");
                xutil::RestoreCursor(hCursor);
            }
            return 1;
        }
        int OnTransData()
        {
            int ret = MessageBox(GetHWND(), L"是否更新数据?\n更新过程预计需要四十分钟,如果中间弹出等待时间过长的提示,请点击中间重试按钮,或等待到一定时间再点击", L"提示", 0x4 /*yesno*/);
            if (ret != 6 /*IDYES */) return 1;
            xml x;
            HCURSOR hCursor = xutil::SetCursorWait();
            if (xurl::get(L"/sale/data/Total3/total/transdata", L"", x) != 1)
            {
                xutil::RestoreCursor(hCursor);
                return 1;
            }
            else
            {
                xutil::RestoreCursor(hCursor);
                alert(L"数据传输完成!");
                return 1;
            }
            return 1;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, int param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnDWClick(TEvent* evt, int p)
        {
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xstring colname = hdr.colname;
            int row = hdr.row;
            if (row < 1) return 1;
            xaserverarg arg;
            /*
            if(colname==L"SONo")
            {
                xstring SONo = dw_list.GetItemString(row,colname);
                arg=new xaserverarg;
                arg.AddArg(L"EntityNo",SONo);
                arg.AddArg(L"ReadOnly",L"true");
                OpenWindow(L"dev:xpage[base.maint.so.vx]",arg.getNativePointer());
            }
            if(colname==L"InvoiceNo")
            {
                xstring InvoiceNo= dw_list.GetItemString(row,colname);
                arg=new xaserverarg;
                arg.AddArg(L"EntityNo",InvoiceNo);
                arg.AddArg(L"ReadOnly",L"true");
                OpenWindow(L"dev:xpage[maint.GDN3.vx]",arg.getNativePointer());
            }
            if(colname==L"InvoiceNoEx")
            {
                xstring InvoiceNoEx= dw_list.GetItemString(row,colname);
                arg=new xaserverarg;
                arg.AddArg(L"EntityNo",InvoiceNoEx);
                arg.AddArg(L"invoiceno",InvoiceNoEx);
                arg.AddArg(L"ReadOnly",L"true");
                OpenWindow(L"dev:xpage[maint.vatnotify.vx]",arg.getNativePointer());
            }
            */
            return 1;
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewExTotal1Win::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewExTotal1Win::OnSetFocus);
            AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewExTotal1Win::OnCombboChanged);
            AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewExTotal1Win::OnDWClick);
            return 1;
        }
        int  OnRetrieve(xstring dataurl, xstring argstr)
        {
            if (!rptEle) return 0;
            dw_list.Reset();
            xml x;
            xaserverarg arg ;
            arg.AddArg(L"arg", argstr);
            trace(argstr);
            xstring sheettype = rptEle.getAttribute(L"reporttype");
            if (sheettype == L"") sheettype = L"report";
            if (xurl::get(dataurl, arg.GetString(), x) != 1)
            {
                //trace(L"\r\n--------" + x.text());
                dw_list.Redraw();
                return -1;
            }
            else
            {
                //xutil::SaveToFile(L"C:\\Temp\\Total3.xml",x.GetXml(),L"",L"",L"");
                if (sheettype == L"report")
                {
                    dw_list.Retrieve(x);
                    dw_list.Redraw();
                    dw_list.SetReadOnly(true);
                }
                else if (sheettype == L"cell")
                {
                }
                else if (sheettype == L"office")
                {
                    dw_office.LoadTemplate(x,0);
                    for (int i = 0; i < dw_office.GetSheetCount(); i++)
                    {
                        xcell sheet = dw_office.GetSheet(i);
                        sheet.SetReadOnly(true);
                    }
                }
            }
            return 1;
        }
        xml getReportSet(xstring category)
        {
            xml x;
            xaserverarg arg ;
            arg.AddArg(L"category", category);
            if (xurl::get(L"/sale/data/Total3/reportset", arg.GetString(), x) != 1)
            {
                return 0;
            }
            return x;
        }
        int onload()
        {
            SetArg();
            dw_list = GetControl(L"dw_report");
            dw_office = GetControl(L"dw_office");
            dw_cell = GetControl(L"dw_cell");
            dw_list.openUrl(L"/sale/view/Total3/template/sodetail");
            argStr = L"";
            xcombobox xc = GetControl(L"cb_report");
            m_category = L"total/business";
            //m_category = L"total/sample";
            if (GetWinParam()) {
                xaserverarg arg=GetArg() ;
                m_category = arg.GetArgString(L"category");
            }
            xml x = getReportSet(m_category);
            if (x)
            {
                KXMLDOMNodeList nlist = x.selectNodes(L"//reports/report");
                int len = nlist.length();
                for (int i = 0; i < len; i++)
                {
                    KXMLDOMElement rpt = nlist.item(i);
                    xstring name = rpt.getAttribute(L"name");
                    if (i == 0) xc.SetText(name);
                    if (i == 0) rptEle = rpt;
                }
            }
            OnAttachEvent();
            return 1;
        }
        int onloaded()
        {
            SetAgent();
            if (rptEle)
            {
                SwitchReport(rptEle);
                //OnCmdDispatch(L"xmQuery");
            }
            return 1;
        }
    };
jrj/project/total3/viewex.total2.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,370 @@
#include <wobject/xwin.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xoffice.hpp>
#include <xcontrol/xcell.hpp>
#include <xcontrol/xflowchart.hpp>
#include <xcontrol/ximageview.hpp>
#include <xcontrol/xcombobox.hpp>
#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp>
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) ViewExTotal2Win : public xwin
    {
    public:
        ViewExTotal2Win(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
    public:
        static ViewExTotal2Win* CreateInstance(void* implPtr, void* hWnd)
        {
            ViewExTotal2Win* pWin = new ViewExTotal2Win(implPtr, (HWND)hWnd);
            return pWin;
        }
    public:
        xdwgrid    dw_list;
        xoffice     dw_office;
        xcell        dw_cell;
        xnode    m_agentNode;    //Agent Condition
        KXMLDOMElement rptEle;
        xstring m_category;
        xstring argStr;
        int      hWndImageView;
        int      hWndRetrieveTip;
        bool    dataretrieveing;
        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, int param)
        {
            //重置工具条
            SetAgent();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            xstring UserNo = publiccode::GetUser().no;
            HCURSOR hCursor = 0;
            //if(UserNo !=L"00603")
            //{
            if (comdid == L"xmAnalysis")
            {
                hCursor = xutil::SetCursorWait();
                xstring str = dw_list.DataAnalysis(L"");
                xaserverarg arg ;
                arg.AddArg(L"html", str);
                OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg);
                xutil::RestoreCursor(hCursor);
                return 1;
            }
            if (comdid == L"xmSaveAs")
            {
                dw_list.SaveAs(L"");
                return 1;
            }
            //}
            if (comdid == L"xmLookImage")
            {
                int row = dw_list.GetRow();
                xstring skuid = dw_list.GetGuid(row);
                OnLookImage(skuid);
                return 1;
            }
            if (comdid == L"xmTrans")
                return OnTransData();
            if (comdid == L"xmQuery")
            {
                if (rptEle)
                {
                    xstring argUrl = rptEle.getAttribute(L"arg");
                    if (argUrl != L"")
                    {
                        xaserverarg ar ;
                        ar.AddArg(L"argurl", argUrl);
                        if (argStr != L"")
                            ar.AddArg(L"arg", argStr);
                        OpenWindow(L"dev:xpage[view.total.arg.vx]", ar);
                        xstring arstr = ar.GetArgString(L"arg");
                        if (arstr != L"" && ar.GetArgString(L"action") == L"ok")
                        {
                            argStr = arstr;
                            hCursor = xutil::SetCursorWait();
                            OnRetrieve(rptEle.getAttribute(L"data"), argStr);
                            xutil::RestoreCursor(hCursor);
                        }
                    }
                    else
                    {
                        argStr = L"";
                        OnRetrieve(rptEle.getAttribute(L"data"), argStr);
                    }
                }
                return 1;
            }
            return 0;
        }
        int OnLookImage(xstring skuid)
        {
            HCURSOR hCursor = xutil::SetCursorWait();
            xaserverarg arg ;
            arg.AddArg(L"guid", skuid);
            OpenWindow(L"dev:xpage[ViewPictures.vx]", arg);
            xutil::RestoreCursor(hCursor);
            return 1;
        }
        int SwitchReport(KXMLDOMElement e)
        {
            xstring dwname = e.getAttribute(L"template");
            xstring dataurl = e.getAttribute(L"data");
            xstring sheettype = e.getAttribute(L"reporttype");
            if (rptEle != e)
            {
                argStr = L"";
                rptEle = e;
            }
            if (sheettype == L"") sheettype = L"report";
            SwitchLayer(L"dw_" + sheettype, L"report");
            if (sheettype == L"report")dw_list.openUrl(dwname);
            SetAgent();
            return 1;
        }
        int OnCombboChanged(TEvent* evt, int lParam)
        {
            int h = xcombobox::GetCurSel(evt->command.hCtrl);
            if (h > -1)
            {
                HCURSOR hCursor = xutil::SetCursorWait();
                KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h);
                SwitchReport(e);
                PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0);
                //OnCmdDispatch(L"xmQuery");
                xutil::RestoreCursor(hCursor);
            }
            return 1;
        }
        int OnTransData()
        {
            int ret =MessageBox(GetHWND(), L"是否更新数据?\n更新过程预计需要四十分钟,如果中间弹出等待时间过长的提示,请点击中间重试按钮,或等待到一定时间再点击", L"提示", 0x4 /*yesno*/);
            if (ret != 6 /*IDYES */) return 1;
            xml x;
            HCURSOR hCursor = xutil::SetCursorWait();
            if (xurl::get(L"/sale/data/Total3/total/transdata", L"", x) != 1)
            {
                xutil::RestoreCursor(hCursor);
                return 1;
            }
            else
            {
                xutil::RestoreCursor(hCursor);
                alert(L"数据传输完成!");
                return 1;
            }
            return 1;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, int param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnDWClick(TEvent* evt, int p)
        {
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xstring colname = hdr.colname;
            int row = hdr.row;
            if (row < 1) return 1;
            xaserverarg arg;
            /*
            if(colname==L"SONo")
            {
                xstring SONo = dw_list.GetItemString(row,colname);
                arg=new xaserverarg;
                arg.AddArg(L"EntityNo",SONo);
                arg.AddArg(L"ReadOnly",L"true");
                OpenWindow(L"dev:xpage[base.maint.so.vx]",arg.getNativePointer());
            }
            if(colname==L"InvoiceNo")
            {
                xstring InvoiceNo= dw_list.GetItemString(row,colname);
                arg=new xaserverarg;
                arg.AddArg(L"EntityNo",InvoiceNo);
                arg.AddArg(L"ReadOnly",L"true");
                OpenWindow(L"dev:xpage[maint.GDN3.vx]",arg.getNativePointer());
            }
            if(colname==L"InvoiceNoEx")
            {
                xstring InvoiceNoEx= dw_list.GetItemString(row,colname);
                arg=new xaserverarg;
                arg.AddArg(L"EntityNo",InvoiceNoEx);
                arg.AddArg(L"invoiceno",InvoiceNoEx);
                arg.AddArg(L"ReadOnly",L"true");
                OpenWindow(L"dev:xpage[maint.vatnotify.vx]",arg.getNativePointer());
            }
            */
            return 1;
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewExTotal2Win::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewExTotal2Win::OnSetFocus);
            AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewExTotal2Win::OnCombboChanged);
            AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewExTotal2Win::OnDWClick);
            return 1;
        }
        int  OnRetrieve(xstring dataurl, xstring argstr)
        {
            if (!rptEle) return 0;
            dw_list.Reset();
            xml x;
            xaserverarg arg ;
            arg.AddArg(L"arg", argstr);
            trace(argstr);
            xstring sheettype = rptEle.getAttribute(L"reporttype");
            if (sheettype == L"") sheettype = L"report";
            if (xurl::get(dataurl, arg.GetString(), x) != 1)
            {
                //trace(L"\r\n--------" + x.text());
                dw_list.Redraw();
                return -1;
            }
            else
            {
                //xutil::SaveToFile(L"C:\\Temp\\Total3.xml",x.GetXml(),L"",L"",L"");
                if (sheettype == L"report")
                {
                    dw_list.Retrieve(x);
                    dw_list.Redraw();
                    dw_list.SetReadOnly(true);
                }
                else if (sheettype == L"cell")
                {
                }
                else if (sheettype == L"office")
                {
                    dw_office.LoadTemplate(x, 0);
                    for (int i = 0; i < dw_office.GetSheetCount(); i++)
                    {
                        xcell sheet = dw_office.GetSheet(i);
                        sheet.SetReadOnly(true);
                    }
                }
            }
            return 1;
        }
        xml getReportSet(xstring category)
        {
            xml x;
            xaserverarg arg ;
            arg.AddArg(L"category", category);
            if (xurl::get(L"/sale/data/Total3/reportset", arg.GetString(), x) != 1)
            {
                return 0;
            }
            return x;
        }
        int onload()
        {
            SetArg();
            dw_list = GetControl(L"dw_report");
            dw_office = GetControl(L"dw_office");
            dw_cell = GetControl(L"dw_cell");
            dw_list.openUrl(L"/sale/view/Total3/template/sodetail");
            argStr = L"";
            xcombobox xc = GetControl(L"cb_report");
            m_category = L"total/business";
            //m_category = L"total/sample";
            if (GetWinParam()) {
                xaserverarg arg =GetArg();
                m_category = arg.GetArgString(L"category");
            }
            xml x = getReportSet(m_category);
            if (x)
            {
                KXMLDOMNodeList nlist = x.selectNodes(L"//reports/report");
                int len = nlist.length();
                for (int i = 0; i < len; i++)
                {
                    KXMLDOMElement rpt = nlist.item(i);
                    xstring name = rpt.getAttribute(L"name");
                    xc.AddItem(name, rpt);
                    if (i == 0) xc.SetText(name);
                    if (i == 0) rptEle = rpt;
                }
            }
            OnAttachEvent();
            return 1;
        }
        int onloaded()
        {
            SetAgent();
            if (rptEle)
            {
                SwitchReport(rptEle);
                //OnCmdDispatch(L"xmQuery");
            }
            return 1;
        }
    };