xj qian
2024-07-09 aca1cda66c85390941657258fbd7ccaf82b3200c
update ap ar  enquery
已修改15个文件
1467 ■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj.filters 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/AP/APNew3.warizd.cpp 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/AP/list.ap.cpp 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/AP/maint.ap.cpp 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/AR/Deduction.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/AR/ExchageFile.cpp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/AR/ExchageInput3.cpp 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/AR/ExchangeSignFast.cpp 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/AR/maint.SettlementExchange.cpp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Enquiry.list.cpp 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/start.vframe.vbusiness.cpp 1048 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/total3/ViewTotalWin.cpp 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/xframe/xcontrol/xcombobox.hpp 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj
@@ -127,7 +127,7 @@
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableUAC>false</EnableUAC>
      <AdditionalDependencies>xarch.shape.lib;xarch.base.lib;xarch.util.lib;xarch.network.lib;xarch.xframe.lib;xarch.xcontrol.lib;xoffice.xcell.lib;xoffice.xgrid.lib;xoffice.xreport.lib;shlwapi.lib;xoffice.xflow.lib;comsuppw.lib;%(AdditionalDependencies);$(CoreLibraryDependencies)</AdditionalDependencies>
      <AdditionalDependencies>xarch.shape.lib;xarch.base.lib;xarch.util.lib;xarch.network.lib;xarch.xframe.lib;xarch.xcontrol.lib;xoffice.xcell.lib;xoffice.xgrid.lib;xoffice.xreport.lib;xoffice.frame.lib;shlwapi.lib;xoffice.xflow.lib;comsuppw.lib;%(AdditionalDependencies);$(CoreLibraryDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>D:\xclient64</AdditionalLibraryDirectories>
    </Link>
    <PostBuildEvent>
@@ -224,6 +224,7 @@
    <ClInclude Include="..\xframe\wobject\xview.hpp" />
    <ClInclude Include="..\xframe\wobject\xwin.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xcell.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xcheckbox.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xcombobox.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xdwgrid.hpp" />
    <ClInclude Include="..\xframe\xcontrol\xdwpages.hpp" />
@@ -249,28 +250,29 @@
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AP\APNew3.warizd.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AP\list.ap.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AP\maint.ap.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AP\Select.AP.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AR\CustomerTran.AR.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AR\Deduction.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AR\ExchageFile.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AR\ExchageInput3.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AR\ExchangeBankTran.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
@@ -279,10 +281,10 @@
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AR\ExchangeSignFast.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AR\maint.SettlementExchange.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Customer3.list.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
@@ -291,7 +293,7 @@
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Enquiry.list.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\EnquiryEx3.list.cpp" />
jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -342,6 +342,9 @@
    <ClInclude Include="..\xframe\kobject\koffice.hpp">
      <Filter>xframe\kobject</Filter>
    </ClInclude>
    <ClInclude Include="..\xframe\xcontrol\xcheckbox.hpp">
      <Filter>xframe\xcontrol</Filter>
    </ClInclude>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="dllmain.cpp">
jrj/project/business/AP/APNew3.warizd.cpp
@@ -2,6 +2,7 @@
#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"
@@ -430,8 +431,8 @@
            int row = hdr.row;
            OnPrepayRetrieve(row, bstart);
            xml x = ViewObject::RetrieveData( L"/sale/data/AP/list/invoice/supplier", L"InvoiceNo", dw_1.GetItemString(row, L"InvoiceNo"),
                "SupplierID", dw_1.GetItemString(row, L"SupplierID"));
            xml x = ViewObject::RetrieveData(GetServerUrl(), L"/sale/data/AP/list/invoice/supplier", L"InvoiceNo", dw_1.GetItemString(row, L"InvoiceNo"),
                L"SupplierID", dw_1.GetItemString(row, L"SupplierID"));
            if (x) dw_101.Retrieve(x);
            dw_2.Redraw();
@@ -548,13 +549,9 @@
                            KXMLDOMElement e = lst.item(i);
                            docElement.appendChild(e);
                            KXMLDOMElement fe = x1.createElement(L"FilterColumn");
                            fe.text = filterStr;
                            fe.settext(filterStr);
                            e.appendChild(fe);
                            fe.Release();
                            e.Release();
                        }
                        docElement.Release();
                        lst.Release();
                        dw_2.Retrieve(x1);
                    }
                    else
jrj/project/business/AP/list.ap.cpp
@@ -188,10 +188,10 @@
        {
            xstring id = L"";
            xstring name = L"";
            int h = xcombobox::GetCurSel(evt.hCtrl);
            int h = xcombobox::GetCurSel(evt->command.hCtrl);
            if (h > -1)
            {
                xstring txt = xcombobox::GetLBText(evt.hCtrl, h);
                xstring txt = xcombobox::GetLBText(evt->command.hCtrl, h);
                apType = L"---";
                if (txt == L"已付货款")
                {
@@ -297,10 +297,10 @@
            xstring payTypeTwo = GetPayType();
            if (payTypeTwo == L"已付货款" || payTypeTwo == L"待付货款")
            {
                int h = xcombobox::GetCurSel(evt.hCtrl);
                int h = xcombobox::GetCurSel(evt->command.hCtrl);
                if (h > -1)
                {
                    xstring txt = xcombobox::GetLBText(evt.hCtrl, h);
                    xstring txt = xcombobox::GetLBText(evt->command.hCtrl, h);
                    if (txt == L"出运日期")
                    {
                        apType = L"000";
@@ -323,10 +323,10 @@
            }
            else if (payTypeTwo == L"预付货款")
            {
                int h1 = xcombobox::GetCurSel(evt.hCtrl);
                int h1 = xcombobox::GetCurSel(evt->command.hCtrl);
                if (h1 > -1)
                {
                    xstring txt1 = xcombobox::GetLBText(evt.hCtrl, h1);
                    xstring txt1 = xcombobox::GetLBText(evt->command.hCtrl, h1);
                    if (txt1 == L"出运日期")
                    {
                        apType = L"001";
@@ -349,10 +349,10 @@
            }
            else if (payTypeTwo == L"预付货款(已冲)L")
            {
                int h2 = xcombobox::GetCurSel(evt.hCtrl);
                int h2 = xcombobox::GetCurSel(evt->command.hCtrl);
                if (h2 > -1)
                {
                    xstring txt2 = xcombobox::GetLBText(evt.hCtrl, h2);
                    xstring txt2 = xcombobox::GetLBText(evt->command.hCtrl, h2);
                    if (txt2 == L"出运日期")
                    {
                        apType = L"001";
@@ -476,8 +476,7 @@
            xaserverarg arg;
            
            arg.AddArg(L"html", str);
            int obj = cast(dw_list as int);
            arg.AddArg(L"obj", obj.toString());
            arg.SetParam(L"obj", &dw_list);
            OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg);
            xutil::RestoreCursor(hCursor);
            return 1;
jrj/project/business/AP/maint.ap.cpp
@@ -58,9 +58,9 @@
            xstring ChargeOffDate = dw_base.GetItemString(1, L"APDate");
            xstring PayedAmount = dw_base.GetItemString(1, L"PayedAmount");
            xstring val = L"<data><PO><item guid='" + AdvanceID + L"' update.modify='1'>" +
                "<ChargeOffState update.modify='1'>" + ChargeOffState + L"</ChargeOffState>" +
                "<ChargeOffMoney update.modify='1'>" + PayedAmount + L"</ChargeOffMoney>" +
                "<ChargeOffDate update.modify='1'>" + ChargeOffDate + L"</ChargeOffDate></item></PO></data>";
                L"<ChargeOffState update.modify='1'>" + ChargeOffState + L"</ChargeOffState>" +
                L"<ChargeOffMoney update.modify='1'>" + PayedAmount + L"</ChargeOffMoney>" +
                L"<ChargeOffDate update.modify='1'>" + ChargeOffDate + L"</ChargeOffDate></item></PO></data>";
            xaserverarg arg;
            
            arg.AddArg(L"content", val);
jrj/project/business/AR/Deduction.cpp
@@ -161,7 +161,7 @@
            xaserverarg arg ;
        
            arg.AddArg(L"InvoiceNo", InvoiceNo);
            arg.AddArg(L"InvoiceNoEx", GetControl(L"search").GetText());
            arg.AddArg(L"InvoiceNoEx", xcontrol(GetControl(L"search")).GetText());
            arg.AddArg(L"EntityID", EntityID);
            //trace(GetControl(L"search").GetText());
jrj/project/business/AR/ExchageFile.cpp
@@ -73,7 +73,7 @@
            const xstring data;
            int anchorrow;
            int anchorcol;*/
            if (hdr.currentcol == 1 && hdr.data != L"")
            if (hdr.col == 1 && hdr.data != L"")
            {
                //dw_exchangefile.SetItemString(hdr.currentrow,hdr.currentcol, L"");
            }
jrj/project/business/AR/ExchageInput3.cpp
@@ -18,7 +18,7 @@
        xnode    m_agentNode;    //Agent Condition
        xstring    tabname;
        xstring    tabagent;
        int hSignWin;
        HWND hSignWin;
        ///sale/data/AR/list
    public:
@@ -147,7 +147,7 @@
        int OnSign()
        {
            OpenWindow(L"dev:xpage[ExchangeSignFast.vx]", cast(dw_list as int));
            OpenWindow(L"dev:xpage[ExchangeSignFast.vx]", (WPARAM) & dw_list);
            return 1;
        }
@@ -272,8 +272,8 @@
            else if (comdid == L"xmExchangeFile")
            {
                //if(iswindow(hSignWin) & 0x1) return 1;
                xwin xw = OpenWindow(L"dev:xpage[ExchageFile.vx]", 0);
                hSignWin = xw.GetHWND();
                xwin* xw = OpenWindow(L"dev:xpage[ExchageFile.vx]", 0);
                hSignWin = xw->GetHWND();
                return 1;
            }
            else if (comdid == L"xmRefresh")
@@ -306,14 +306,14 @@
                }
                if (frow > dw_list.GetRowCount()) return 1;
                dw_list.SetRow(frow);
                OpenWindow(L"dev:xpage[ExchangeSignFast.vx]", cast(dw_list as int));
                OpenWindow(L"dev:xpage[ExchangeSignFast.vx]", (WPARAM)&dw_list);
                return 1;
            }
            else if (comdid == L"xmAdd")
            {
                xaserverarg arg ;
                
                arg.AddArg(L"HWND", GetHWND());
                arg.SetParam(L"HWND", GetHWND());
                
                OpenWindow(L"dev:xpage[maint.SettlementExchange.vx]", arg);
            }
@@ -321,7 +321,7 @@
            {
                xaserverarg arg1 ;
                
                arg1.AddArg(L"HWND", GetHWND().toString());
                arg1.SetParam(L"HWND", GetHWND());
                arg1.AddArg(L"SettlementExchangeID", dw_list.GetGuid(dw_list.GetRow()));
            
                OpenWindow(L"dev:xpage[maint.SettlementExchange.vx]", arg1);
@@ -353,15 +353,15 @@
        }
        int OnCombboChanged(ref TCommandEvent evt, int lParam)
        int OnCombboChanged(TEvent* evt, int lParam)
        {
            xstring id = L"";
            xstring name = L"";
            int h = xcombobox::GetCurSel(evt.hCtrl);
            int h = xcombobox::GetCurSel(evt->command.hCtrl);
            if (h > -1)
            {
                tabname = xcombobox::GetItemData(evt.hCtrl, h);
                SwitchLayer(L"sheet" + (h + 1).toString(), L"frame");
                tabname = xcombobox::GetItemData(evt->command.hCtrl, h);
                SwitchLayer(L"sheet" + xstring(h + 1), L"frame");
                RetrieveData();
                SetAgent();
            }
@@ -428,7 +428,7 @@
            xaserverarg arg ;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg(L"QueryTxt", GetControl(L"sle_search").GetText());
            arg.AddArg(L"QueryTxt", xcontrol(GetControl(L"sle_search")).GetText());
            arg.AddArg(L"QueryArg", GetQueryArg());
            //trace(L"QueryArg======L"+GetQueryArg());
            if (getUrl(dataUrl, arg.GetString(), x) != 1)
jrj/project/business/AR/ExchangeSignFast.cpp
@@ -75,7 +75,7 @@
            dw_list.DwUpdateAllToEx(x);
            //trace(x.xml());
            xml x0 = ViewObject::MakeXml();
            xml x0;
            x0.loadXML(L"<data/>");
            KXMLDOMNodeList t = x.selectNodes(L"data/Item[@update.modify or @update.delete]");
@@ -85,7 +85,7 @@
            {
                e1.appendChild(t.item(i));
            }
            xaserverarg arg = ViewObject::MakeArg();
            xaserverarg arg;
            arg.AddArg(L"content", x0.xml());
            if (xurl::get(L"/sale/data/AR/update/item", arg.GetString(), x) != 1)
@@ -127,14 +127,14 @@
            return 0;
        }
        int OnCombboChanged(ref TCommandEvent evt, int lParam)
        int OnCombboChanged(TEvent * evt, int lParam)
        {
            xstring id = L"";
            xstring name = L"";
            int h = xcombobox::GetCurSel(evt.hCtrl);
            int h = xcombobox::GetCurSel(evt->command.hCtrl);
            if (h > -1)
            {
                xstring txt = xcombobox::GetLBText(evt.hCtrl, h);
                xstring txt = xcombobox::GetLBText(evt->command.hCtrl, h);
                if (txt == L"限定客户")
                {
                    OnRetrieve(1);
@@ -152,7 +152,7 @@
            dw_unexch.AcceptText();
            int row = dw_unexch.GetRow();
            int hCursor = xutil::SetCursorWait();
            HCURSOR hCursor = xutil::SetCursorWait();
            double AdjustAmount = dw_unexch.GetItemDouble(row, L"AdjustAmount");//调整数
            double amted = dw_unexch.GetItemDouble(row, L"实收汇金额");//往次
            double samt = dw_unexch.GetItemDouble(row, L"应收汇金额");//应收汇金额
@@ -166,8 +166,8 @@
                }
                double amt1 = dw_obj.GetItemDouble(dw_obj.GetRow(), L"BalanceAmt");
                int v1 = (amt * 100.0).toString().toInt();
                int v2 = (amt1 * 100.0).toString().toInt();
                int v1 = xstring(amt * 100.0).toInt();
                int v2 = xstring(amt1 * 100.0).toInt();
                if (v2 > v1)
                {
                    dw_unexch.ItemChangeTo(row, L"Amount", xstring(amt));
@@ -348,9 +348,9 @@
            xstring path1 = L"/sale/data/AR/item/exch/listwithcustomer";
            if (customer == 0)  path1 = L"/sale/data/AR/item/exch/list";
            arg.AddArg(L"QueryTxt", GetControl(L"sle_search").GetText());
            arg.AddArg(L"QueryTxt", xcontrol(GetControl(L"sle_search")).GetText());
            arg.AddArg(L"QueryArg", GetQueryArg());
            trace(L"SEID+++L" + SEID + L"+++QueryTxt+++L" + GetControl(L"sle_search").GetText() + L"+++QueryArg+++L" + GetQueryArg());
            trace(L"SEID+++L" + SEID + L"+++QueryTxt+++L" + xcontrol(GetControl(L"sle_search")).GetText() + L"+++QueryArg+++L" + GetQueryArg());
            if (getUrl(path, arg.GetString(), x) != 1)
            {
                trace(L"错误信息1=L" + xstring(x.text()));
@@ -406,7 +406,7 @@
            /*xaserverarg arg = GetParam();
            xstring CustomerIDOne = arg.GetArgString(L"CustomerID");
            xstring SEIDOne = arg.GetArgString(L"SEID");*/
            if (GetWinParam())dw_obj = GetParam();
            if (GetWinParam())dw_obj = *(xdwgrid*)GetWinParam();
            OnAttachEvent();
            return 1;
jrj/project/business/AR/maint.SettlementExchange.cpp
@@ -138,7 +138,7 @@
            }
            arg.AddArg(L"CustomerID", dw_base.GetItemString(1, L"CustomerID"));
            arg.AddArg(L"SEID", dw_base.GetGuid(1));
            SendMessage(hObject, 0x401, L"xmSignEx:" + dw_base.GetGuid(1), 0);
            SendMessage(hObject, 0x401, (WPARAM)((xstring)L"xmSignEx:" + dw_base.GetGuid(1)).c_str(), 0);
            return 1;
        }
@@ -215,7 +215,7 @@
            {
                xaserverarg arg =GetArg();
                SettlementExchangeID = arg.GetArgString(L"SettlementExchangeID");
                hObject = arg.GetArgString(L"HWND").toInt();
                hObject = (HWND)arg.GetParam(L"HWND");
            }
            if (SettlementExchangeID != L"")
            {
jrj/project/business/Enquiry.list.cpp
@@ -1,6 +1,7 @@
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xcheckbox.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
@@ -60,7 +61,7 @@
            if(agent)
            {
                xstring s = agent.xml();
                m_agentNode =  SetAgentNodeContent (anode,s);
                m_agentNode =  SetAgentNode(anode,s);
            }
        //}
        return 1;
@@ -131,7 +132,7 @@
        }*/
        tools +=L"</vbox>";
        //trace(tools);
        SetAgentNodeContent(anode, tools);
        SetAgentNode(anode, tools);
        return 1;
    }
@@ -295,7 +296,6 @@
                alert(L"保存失败!");
            }
        }
        if(x) x.Free();
        
        return 1;
    }
@@ -309,7 +309,7 @@
        xstring Subject = L"价格单已共享["+CName+L"]";
        xstring Category = L"价格单共享";
        xstring Content  = L"";
        KXMLDOMDocument x = ViewObject::AddMessage(Category, Reciever, NO, EntityID, Subject, Content);
        ViewObject::AddMessage(Category, Reciever, NO, EntityID, Subject, Content);
        return 1;
    }
    int SendNotice(xml content)
@@ -390,16 +390,14 @@
            dw_pricelist.DwUpdateAllToEx(x0);
            if(x0.xml() !=L"")
            {
                xml x1 = xml::Make();
                xml x1;
                dw_priceitem.DwUpdateAllToEx(x1);
                if(x0.documentElement())
                {
                    if(x1.documentElement())
                        x0.documentElement().appendChild(x1.documentElement());
                }            
                x1.Free();
                arg.AddArg(L"content", x0.xml() );    
                x0.Free();
                if(xurl::get(L"/sale/data/Enquiry/update/pricelist", arg.GetString(),x)!=1)
                {
                    error = x.text();
@@ -440,13 +438,11 @@
                alert(L"保存成功!"); 
                OnProductPriceShareRetrieve();//刷新数据
                SendNotice(x2);//发送通知
                x2.Free();
            }else 
            {
                alert(L"共享数据保存失败!");
            }
        }
        x.Free();
        
        return 1;
    }
@@ -495,11 +491,11 @@
    int OnPreRetrieve()
    {
    
        int hItem = tv_folder.GetSelectedItem();
        HTREEITEM hItem = tv_folder.GetSelectedItem();
        if(hItem <=0) return 1;
        
        int     hCursor = xutil::SetCursorWait();
        KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
        HCURSOR     hCursor = xutil::SetCursorWait();
        KXMLDOMElement e1 = tv_folder.GetItemData(hItem);
        xstring no = e1.getAttribute(L"no");
        xml x = 0;
        if(!(no ==L"Category:All" && IsEmptyQueryStr(m_QueryTxt)))
@@ -510,9 +506,9 @@
            dw_list.Redraw();
        }else
        {
            dw_list.ResetEx();
            dw_list.Reset();
            dw_list.Redraw();
            dw_goods.ResetEx();
            dw_goods.Reset();
            dw_goods.Redraw();
        }
        
@@ -524,9 +520,9 @@
            dw_list2.Redraw();
        }else
        {
            dw_list2.ResetEx();
            dw_list2.Reset();
            dw_list2.Redraw();
            dw_goods2.ResetEx();
            dw_goods2.Reset();
            dw_goods2.Redraw();
        }
        
@@ -536,9 +532,9 @@
            dw_list1.Redraw();
        }else
        {
            dw_list1.ResetEx();
            dw_list1.Reset();
            dw_list1.Redraw();
            dw_goods1.ResetEx();
            dw_goods1.Reset();
            dw_goods1.Redraw();
        }
        x = ViewObject::RetrieveData(myDataUrl1,L"no",no,L"QueryTxt", m_QueryTxt);
@@ -548,9 +544,9 @@
            dw_list1.Redraw();
        }else
        {
            dw_list1.ResetEx();
            dw_list1.Reset();
            dw_list1.Redraw();
            dw_goods1.ResetEx();
            dw_goods1.Reset();
            dw_goods1.Redraw();
        }
        dw_list1.SetReadOnly(true);
@@ -568,29 +564,25 @@
        if(row>0)
        {                    
            KXMLDOMElement e =dw_list.GetRowElement(row);
            xaserverarg arg=new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            xaserverarg arg;
            xstring sCustomerID = e.selectSingleNode(L"CustomerID").text(); 
            arg.AddArg(L"CustomerID",sCustomerID,L"");
            xstring 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"");
            int p = arg.ptr_native_;
            openUrl(L"/sale/view/Enquiry3/xpage/histroydata", p);
            openUrl(L"/sale/view/Enquiry3/xpage/histroydata", &arg);
        }
        return 1;
    }
    
    int OnPrint()
    {
        xaserverarg arg=new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xaserverarg arg;
        arg.AddArg(L"EntityName",L"Enquiry",L"");
        arg.AddArg(L"EntityID",GetEntityID(1),L"");
        arg.AddArg(L"EntityNo",GetEntityNo(1),L"");
        int p = arg.ptr_native_;
        openUrl(L"/sale/view/view.base/xpage/Template/PrintViewEx", p);
        openUrl(L"/sale/view/view.base/xpage/Template/PrintViewEx", &arg);
        return 0;
    }
    
@@ -598,15 +590,14 @@
    {
        dw_priceitem.Reset();
            
        xaserverarg arg = xaserverarg::Make();
        xaserverarg arg;
        arg.AddArg(L"action",L"AddPriceList");
            
        OpenWindow(L"dev:xpage[ProductSchemaSelect.vx]",cast(arg as int));
        OpenWindow(L"dev:xpage[ProductSchemaSelect.vx]",arg);
        if(arg.GetArgString(L"process") == L"ok")
        {
        
            xml
            x.setNativePointer(xml::CreateInstance());
            xml x;
            if (getUrl(L"/sale/data/Enquiry/PriceListEx/SKU",arg.GetString(),x)!=1) return 1;
            KXMLDOMNodeList nodes = x.selectNodes(L"data/Item");
            int len = nodes.length();
@@ -634,13 +625,8 @@
                }
                KXMLDOMNodeList items = ele.selectNodes(L"data/Item");
                AddItems(id,items);
                items.Release();
                ele.Release();
            }
            x.Free();
            nodes.Release();
        }
        arg.Free();
        //OnRetrieveItem(dw_pricelist.GetGuid(row));
        return  1;
    }
@@ -652,9 +638,8 @@
        
        dw_priceitem.Reset();
            
        xaserverarg arg = xaserverarg::Make();
        xml
        x.setNativePointer(xml::CreateInstance());
        xaserverarg arg ;
        xml x;
        arg.AddArg(L"SKUID",dw_pricelist.GetItemString(row,L"SKUID"));
        arg.AddArg(L"SchemaNo",dw_pricelist.GetItemString(row,L"BOMSchema"));
        if (getUrl(L"/sale/data/Enquiry/PriceListEx/SKU",arg.GetString(),x)!=1) return 1;
@@ -683,12 +668,7 @@
            }
            KXMLDOMNodeList items = ele.selectNodes(L"data/Item");
            AddItems(id,items);
            items.Release();
            ele.Release();
        }
        nodes.Release();
        x.Free();
        arg.Free();
        
        //OnRetrieveItem(dw_pricelist.GetGuid(row));
        return  1;
@@ -727,11 +707,10 @@
        if(dw_pricelist.GetRow() < 1) return 1;
        
        int row = dw_pricelist.GetRow();
        xaserverarg arg= new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xaserverarg arg;
        arg.AddArg(L"SKUID",dw_pricelist.GetItemString(row,L"SKUID"));
        arg.AddArg(L"SchemaNo",dw_pricelist.GetItemString(row,L"BOMSchema"));
        OpenWindow(L"dev:xpage[PriceList.PurcharItemSelect.vx]",cast(arg as int));
        OpenWindow(L"dev:xpage[PriceList.PurcharItemSelect.vx]",arg);
        xstring id = dw_pricelist.GetGuid(dw_pricelist.GetRow());
        if(id==L"")
        {
@@ -741,11 +720,10 @@
        if(arg.GetArgString(L"process")==L"ok")
        {
            xstring content = arg.GetArgString(L"result");
            xml x = xml::Make();
            x.LoadXml(content);
            xml x;
            x.loadXML(content);
            KXMLDOMNodeList nodes = x.selectNodes(L"data/Item");
            AddItems(id,nodes);
            nodes.Release();
            xstring PriceInfo = L"";
            for(int i=1;i<=dw_pricelist.GetRowCount();i++)
            {
@@ -787,14 +765,14 @@
        return 1;
    }                    
                
    int OnRowChanged(ref TNotifyEvent evt,int p)
    int OnRowChanged(TEvent* evt,LPARAM p)
    {
        listwin::OnRowChanged(evt,p);
        
        ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
        DWNMHDR&  hdr = *(DWNMHDR*)evt->notify.pnmh;
        int row = hdr.row;
        
        int     hCursor = xutil::SetCursorWait();
        HCURSOR     hCursor = xutil::SetCursorWait();
        xstring EnquiryNo = dw_list.GetItemString(row,L"EnquiryNo");
        xml x = ViewObject::RetrieveData(L"/sale/data/Enquiry/maint",L"id",EnquiryNo);
        if(x)
@@ -807,12 +785,12 @@
        
        return 1;
    }
    int OnRowChanged2(ref TNotifyEvent evt,int p)
    int OnRowChanged2(TEvent* evt,LPARAM p)
    {
        ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
        DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
        int row = hdr.row;
        
        int     hCursor = xutil::SetCursorWait();
        HCURSOR    hCursor = xutil::SetCursorWait();
        xstring EnquiryNo = dw_list2.GetItemString(row,L"EnquiryNo");
        xml x = ViewObject::RetrieveData(L"/sale/data/Enquiry/maint",L"id",EnquiryNo);
        if(x)
@@ -826,18 +804,18 @@
        return 1;
    }
    int OnRowChanged1(ref TNotifyEvent evt,int p)
    int OnRowChanged1(TEvent* evt, LPARAM p)
    {
        //fixed one event only one process
        //listwin::OnRowChanged(evt,p);
        
        ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
        DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
        int row = hdr.row;
        
        int     hCursor = xutil::SetCursorWait();
        HCURSOR    hCursor = xutil::SetCursorWait();
        xstring ItemID = dw_list1.GetItemString(row,L"ItemID");
        //alert(ItemID);
        xml x = ViewObject::RetrieveData(L"/sale/data/Enquiry/folder/listitemsex",L"itemID",ItemID,L"type",state2.toString());
        xml x = ViewObject::RetrieveData(L"/sale/data/Enquiry/folder/listitemsex",L"itemID",ItemID,L"type",xstring(state2));
        if(x)
            dw_goods1.Retrieve(x);
        else
@@ -851,20 +829,19 @@
        
    int OnShare()
    {
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xaserverarg arg;
        OpenWindow(L"dev:xpage[UserGroupShareEx.vx]",cast(arg as int));
        OpenWindow(L"dev:xpage[UserGroupShareEx.vx]",arg);
        if(arg.GetArgString(L"process")==L"ok")
        {
            xdwgrid dw_obj = dw_pricelistex;
            if(sheetname==L"tab_pricebillex") dw_obj = dw_pricelist;
            
            sheetname=L"tab_pricebillshare";
            SetAgent(L"list");
            xframe::SetAgent(L"list");
            SwitchLayer(L"sheet5",L"frame");
            xml x = xml::Make();
            x.LoadXml(arg.GetArgString(L"result"));
            xml x;
            x.loadXML(arg.GetArgString(L"result"));
            KXMLDOMNodeList nodes = x.selectNodes(L"root/item");
            int count = nodes.length();
            int row = dw_obj.GetNextSelectRow(1);
@@ -915,26 +892,23 @@
                    
    int OnShare2()
    {
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xaserverarg arg ;
        OpenWindow(L"dev:xpage[UserGroupShareEx.vx]",cast(arg as int));
        OpenWindow(L"dev:xpage[UserGroupShareEx.vx]",arg);
        
        return 1;
    }
    
    int OnTransPriceBillEx()
    {
        xaserverarg arg= new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xaserverarg arg;
        arg.AddArg(L"no",L"Category:All");
        arg.AddArg(L"QueryTxt",L"");
        OpenWindow(L"dev:xpage[PriceList.PurcharItemSelectEx.vx]",cast(arg as int));
        OpenWindow(L"dev:xpage[PriceList.PurcharItemSelectEx.vx]",arg);
        if(arg.GetArgString(L"process") == L"ok")
        {
            xml
            x.setNativePointer(xml::CreateInstance());
            x.LoadXml(arg.GetArgString(L"result"));
            xml x;
            x.loadXML(arg.GetArgString(L"result"));
            KXMLDOMNodeList nodes = x.selectNodes(L"data/Item");
            int len = nodes.length();
            for(int i=0; i<len;i++)
@@ -973,24 +947,20 @@
                if(ele.selectSingleNode(L"EnquiryLineID")) dw_pricelistex.SetItemString(row,L"EnquiryLineID",ele.selectSingleNode(L"EnquiryLineID").text());
                ele.Release();
            }
            x.Free();
            nodes.Release();
        }
        return 1;
    }
    
    int OnTransPriceBill()
    {
        xaserverarg arg= new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xaserverarg arg;
        arg.AddArg(L"no",L"Category:All");
        arg.AddArg(L"QueryTxt",L"");
        OpenWindow(L"dev:xpage[PriceList.PurcharItemSelectEx.vx]",cast(arg as int));
        OpenWindow(L"dev:xpage[PriceList.PurcharItemSelectEx.vx]",arg);
        if(arg.GetArgString(L"process") == L"ok")
        {
            xml
            x.setNativePointer(xml::CreateInstance());
            x.LoadXml(arg.GetArgString(L"result"));
            xml x;
            x.loadXML(arg.GetArgString(L"result"));
            KXMLDOMNodeList nodes = x.selectNodes(L"data/Item");
            int len = nodes.length();
            for(int i=0; i<len;i++)
@@ -1047,21 +1017,18 @@
                //items.Release();
                ele.Release();
            }
            x.Free();
            nodes.Release();
        }
        return 1;
    }
    
    int OnTech(xdwgrid dw_term)
    {
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xaserverarg arg;
        int row = dw_term.GetRow();
        if(row < 1) return 0;
        xstring str = dw_term.GetItemString(row,L"TechNote");
        arg.AddArg(L"value",str);
        OpenWindow(L"dev:xpage[memo.edit.new.vx]",arg.getNativePointer());
        OpenWindow(L"dev:xpage[memo.edit.new.vx]",arg);
        if(arg.GetArgString(L"comdid")==L"xmOK")
        {
            str = arg.GetArgString(L"value");
@@ -1074,8 +1041,7 @@
    
    int OnCopy()
    {
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xaserverarg arg ;
        int row = dw_pricelistex.GetRow();
        
        if(row < 1) return 0;
@@ -1105,15 +1071,13 @@
        arg.AddArg(L"PayTerm",PayTerm);
        arg.AddArg(L"CustomerContactName",CustomerContactName);
        arg.AddArg(L"ContactTel",ContactTel);
        int pa = arg.getNativePointer();
        openUrl(L"/sale/view/Enquiry3/xpage/maint", pa);
        openUrl(L"/sale/view/Enquiry3/xpage/maint", &arg);
        return 1;
    }    
    
    int OnGroupCopy()
    {
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xaserverarg arg ;
        int row = dw_priceitem.GetRow();
        int row1 = dw_pricelist.GetRow();
        if(row < 1) return 0;
@@ -1146,8 +1110,7 @@
        arg.AddArg(L"ContactTel",ContactTel);
    
        
        int pa = arg.getNativePointer();
        openUrl(L"/sale/view/Enquiry3/xpage/maint", pa);
        openUrl(L"/sale/view/Enquiry3/xpage/maint", &arg);
        return 1;
    }
    
@@ -1174,7 +1137,7 @@
        if(comdid==L"tab_pricebill")
        {
            sheetname=L"tab_pricebill";
            SetAgent(L"list");
            xframe::SetAgent(L"list");
        
            SwitchLayer(L"tv_folder_pricebill",L"folder_frame");
            if(dw_pricelistex.GetRowCount() < 1) OnProductPriceBillRetrieve();
@@ -1183,7 +1146,7 @@
        else    if(comdid==L"tab_pricebillex")
        {
            sheetname=L"tab_pricebillex";
            SetAgent(L"list");
            xframe::SetAgent(L"list");
            SwitchLayer(L"tv_folder_pricebill",L"folder_frame");
            if(dw_pricelist.GetRowCount() < 1) OnPriceBillRetrieve();
            return 0;
@@ -1191,7 +1154,7 @@
        {
            dw_list = GetControl(L"dw_list2");
            sheetname = L"tab_list2";
            SetAgent(L"list");
            xframe::SetAgent(L"list");
        }
        
        else if(comdid.left(4)==L"tab_")
@@ -1206,7 +1169,7 @@
            else
                SwitchLayer(L"tv_folder",L"folder_frame");
            sheetname=comdid;
            SetAgent(L"list");
            xframe::SetAgent(L"list");
            return 0;
        }
        
@@ -1253,7 +1216,7 @@
                xml supplier_x = ViewObject::RetrieveData(L"/sale/data/SupplierV3/entity/FindBySaleType",L"id", s);
                if(supplier_x)
                {
                    if(supplier_x.text == L"采购经理")
                    if((xstring)supplier_x.text() == L"采购经理")
                        {
                        alert(L"当前角色不是采购员不能新增单子,请重新选择角色");
                        return 0;
@@ -1319,17 +1282,17 @@
    }
    
    //xcombobox下拉
    int OnSelectDdlb(ref TNotifyEvent evt,int p)
    int OnSelectDdlb(TEvent* evt,int p)
    {
        changeddlb=1;
        int wid = ddlb_1.GetId();
        HWND wid = ddlb_1.GetHWND();
        int CB_GETCURSEL  = 0x0147;
        int nIndex = win32::SendMessage(wid,CB_GETCURSEL,0,0);
        int nIndex = SendMessage(wid,CB_GETCURSEL,0,0);
        KXMLDOMElement e = ddlb_1.GetElement();
        KXMLDOMElement e2 = e.selectSingleNode(L"item["+(nIndex+1).toString()+L"]");
        KXMLDOMElement e2 = e.selectSingleNode(L"item["+xstring(nIndex+1)+L"]");
        xstring no=e2.selectSingleNode(L"@element").text();
        
        int hItem = tv_folder.GetRootItem();
        HTREEITEM hItem = tv_folder.GetRootItem();
        while(tv_folder.GetChildItem(hItem))
            tv_folder.DeleteItem(tv_folder.GetChildItem(hItem));
        ExpandFolderItem(tv_folder,hItem, no);
@@ -1339,25 +1302,25 @@
    }
    
        
    int OnCkbCLick(ref TEvent evt,int p)
    int OnCkbCLick(TEvent* evt,int p)
    {    
        xcheckbox cbx_1 = GetControl(L"cbx1");            
        int state=cbx_1.GetCheck(cbx_1.GetId());
        if(evt.lParam == GetControl(L"cbx1").GetId())
        int state=cbx_1.GetCheck(cbx_1.GetHWND());
        if(evt->lParam == (LPARAM)GetControl(L"cbx1")->GetHWND())
        {
            if (state== -1)
                SwitchLayer(L"sheet1",L"frame");
            else
                SwitchLayer(L"sheet2",L"frame");
            return 1;
        }else if(evt.lParam == GetControl(L"cbx2").GetId())
        }else if(evt->lParam == (LPARAM)GetControl(L"cbx2")->GetHWND())
        {
            cbx_1 = GetControl(L"cbx2");            
            state=cbx_1.GetCheck(cbx_1.GetId());
            int     hCursor = xutil::SetCursorWait();
            state=cbx_1.GetCheck(cbx_1.GetHWND());
            HCURSOR    hCursor = xutil::SetCursorWait();
            xstring ItemID = dw_list1.GetItemString(dw_list1.GetRow(),L"ItemID");
            
            xml x = ViewObject::RetrieveData(L"/sale/data/Enquiry/folder/listitemsex",L"itemID",ItemID,L"type",state.toString());
            xml x = ViewObject::RetrieveData(L"/sale/data/Enquiry/folder/listitemsex",L"itemID",ItemID,L"type",xstring(state));
            if(x)
                dw_goods1.Retrieve(x);
            else
@@ -1370,21 +1333,21 @@
        }
    }
    int OnPriceListRowChanged(ref TNotifyEvent evt,int p)
    int OnPriceListRowChanged(TEvent* evt,LPARAM p)
    {
        ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
        DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
        int row = hdr.row;
        
        int     hCursor = xutil::SetCursorWait();
        HCURSOR     hCursor = xutil::SetCursorWait();
        OnRetrieveItem(dw_pricelist.GetGuid(row));
        
        return 1;
    }
        
    int OnItemAskStyle(ref TNotifyEvent evt,int p)
    int OnItemAskStyle(TEvent* evt,LPARAM p)
    {
        int DMS_CSSSTYLE = 0x8;
        ref DWASKSTYLENMHDR hdr = trust(evt.pnmh as ref DWASKSTYLENMHDR);
        DWASKSTYLENMHDR& hdr = *(DWASKSTYLENMHDR*)evt->notify.pnmh;
        int row = hdr.row;
        int col = hdr.col;
        xstring colname = hdr.colname;
@@ -1402,14 +1365,14 @@
            if(days < 0)
            {
                hdr.mask =  DMS_CSSSTYLE;
                hdr.cssstyle = L"color:#cccccc";
                hdr.pCssStyle = (LPTSTR)L"color:#cccccc";
            }
        }
        return 1;
    }    
    int OnFilter()
    {
        xstring str = GetControl(L"sl_search").GetText();
        xstring str = xcontrol(GetControl(L"sl_search")).GetText();
        xdwgrid dw_obj;
        if(sheetname==L"tab_goods") dw_obj = dw_list1;
        else if(sheetname==L"tab_pricebill") dw_obj = dw_pricelistex;
@@ -1420,53 +1383,51 @@
        return 1;
    }
    
    int OnPriceListDoubleClicked(ref TNotifyEvent evt,int p)
    int OnPriceListDoubleClicked(TEvent* evt, LPARAM pr)
    {
        int hCursor = xutil::SetCursorWait();
        HCURSOR hCursor = xutil::SetCursorWait();
        int row = dw_pricelistex.GetRow();
        if(row > 0) OnTech(dw_pricelistex);
        xutil::RestoreCursor(hCursor);
        return 1;        
    }
    
    int OnDoubleClicked(ref TNotifyEvent evt,int p)
    int OnDoubleClicked(TEvent* evt, LPARAM)
    {
        int hCursor = xutil::SetCursorWait();
        HCURSOR hCursor = xutil::SetCursorWait();
        int row = dw_list2.GetRow();
        xaserverarg arg=new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xaserverarg arg;
        
        xstring EnquiryNo  = dw_list2.GetItemString(row,L"EnquiryNo");
        arg.AddArg(L"EnquiryNo",EnquiryNo);
        
        int pa = arg.getNativePointer();
        openUrl(L"/sale/view/Enquiry3/xpage/maint", pa);
        openUrl(L"/sale/view/Enquiry3/xpage/maint",&arg);
        xutil::RestoreCursor(hCursor);
        return 1;        
    }
    int OnDoubleClicked(ref TNotifyEvent evt,int p)
    int OnDoubleClicked(TEvent* evt, LPARAM pr)
    {
        int hCursor = xutil::SetCursorWait();
        HCURSOR hCursor = xutil::SetCursorWait();
        OnCmdDispatch(L"action:bill.open");
        xutil::RestoreCursor(hCursor);
        return 1;        
    }
    int AttachEvent()
    int AttachListon()
    {
        AttachEvent(L"tv_folder", L"TVN_SELCHANGED",OnTreeSelChanged); //树选择
        AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING",OnTreeExpanding); //树展开
        AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED",OnRowChanged);
        AttachEvent(L"dw_list2",L"DWV_ROWFOCUSCHANGED",OnRowChanged2);
        AttachEvent(L"dw_list1",L"DWV_ROWFOCUSCHANGED",OnRowChanged1);
        AttachEvent(L"cbx_1",L"CBN_SELCHANGE",OnSelectDdlb);
        AttachEvent(L"WM_COMMAND",OnCkbCLick);
        AttachEvent(L"dw_list",L"DWV_ASKSTYLE",OnItemAskStyle);
        AttachEvent(L"dw_pricelist",L"DWV_ROWFOCUSCHANGED",OnPriceListRowChanged);
        AttachEvent(L"tv_folder_pricebill", L"TVN_SELCHANGED",OnPriceBillTreeSelChanged); //树选择
        AttachEvent(L"tv_folder_pricebill", L"TVN_ITEMEXPANDING",OnPriceBillTreeExpanding);
        AttachEvent(L"tv_folder", L"TVN_SELCHANGED",(FEvent)&Enquiry3list::OnTreeSelChanged); //树选择
        AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&Enquiry3list::OnTreeExpanding); //树展开
        AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&Enquiry3list::OnRowChanged);
        AttachEvent(L"dw_list2",L"DWV_ROWFOCUSCHANGED", (FEvent)&Enquiry3list::OnRowChanged2);
        AttachEvent(L"dw_list1",L"DWV_ROWFOCUSCHANGED", (FEvent)&Enquiry3list::OnRowChanged1);
        AttachEvent(L"cbx_1",L"CBN_SELCHANGE", (FEvent)&Enquiry3list::OnSelectDdlb);
        AttachEvent(L"WM_COMMAND", (FEvent)&Enquiry3list::OnCkbCLick);
        AttachEvent(L"dw_list",L"DWV_ASKSTYLE", (FEvent)&Enquiry3list::OnItemAskStyle);
        AttachEvent(L"dw_pricelist",L"DWV_ROWFOCUSCHANGED", (FEvent)&Enquiry3list::OnPriceListRowChanged);
        AttachEvent(L"tv_folder_pricebill", L"TVN_SELCHANGED", (FEvent)&Enquiry3list::OnPriceBillTreeSelChanged); //树选择
        AttachEvent(L"tv_folder_pricebill", L"TVN_ITEMEXPANDING", (FEvent)&Enquiry3list::OnPriceBillTreeExpanding);
        
        AttachEvent(L"dw_pricelistex",L"DWV_DOUBLECLICKED",OnPriceListDoubleClicked);
        AttachEvent(L"dw_list2",L"DWV_DOUBLECLICKED",OnDoubleClicked);
        AttachEvent(L"dw_pricelistex",L"DWV_DOUBLECLICKED", (FEvent)&Enquiry3list::OnPriceListDoubleClicked);
        AttachEvent(L"dw_list2",L"DWV_DOUBLECLICKED", (FEvent)&Enquiry3list::OnDoubleClicked);
        
        return 1;
    }
@@ -1475,10 +1436,8 @@
    
    int OnRetrieveItem(xstring EnquiryPriceListID)
    {
        xml
        x.setNativePointer(xml::CreateInstance());
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xml x;
        xaserverarg arg ;
        arg.AddArg(L"EnquiryPriceListID",EnquiryPriceListID);
        if (getUrl(L"/sale/data/Enquiry/fetch/PriceList/item",arg.GetString(),x)!=1)
        {
@@ -1495,14 +1454,12 @@
    
    int  OnPriceBillRetrieve()
    {
        int hItem = tv_folder_pricebill.GetSelectedItem();
        KXMLDOMElement e1 = cast(tv_folder_pricebill.GetItemData(hItem) as KXMLDOMElement);
        HTREEITEM hItem = tv_folder_pricebill.GetSelectedItem();
        KXMLDOMElement e1 = tv_folder_pricebill.GetItemData(hItem);
        xstring no = e1.getAttribute(L"no");
        xml
        x.setNativePointer(xml::CreateInstance());
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xml x;
        xaserverarg arg;
        arg.AddArg(L"no",no);
        if (getUrl(L"/sale/data/Enquiry/fetch/PriceList",arg.GetString(),x)!=1)
        {
@@ -1525,14 +1482,12 @@
        
    int  OnProductPriceBillRetrieve()
    {
        int hItem = tv_folder_pricebill.GetSelectedItem();
        KXMLDOMElement e1 = cast(tv_folder_pricebill.GetItemData(hItem) as KXMLDOMElement);
        HTREEITEM hItem = tv_folder_pricebill.GetSelectedItem();
        KXMLDOMElement e1 = tv_folder_pricebill.GetItemData(hItem);
        xstring no = e1.getAttribute(L"no");
        xml
        x.setNativePointer(xml::CreateInstance());
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xml x;
        xaserverarg arg ;
        arg.AddArg(L"no",no);
        if (getUrl(L"/sale/data/Enquiry/ProductPriceList/nobom",arg.GetString(),x)!=1)
        {
@@ -1550,10 +1505,8 @@
    
    int  OnProductPriceShareRetrieve()
    {
        xml
        x.setNativePointer(xml::CreateInstance());
        xaserverarg arg = new xaserverarg;
        arg.setNativePointer(arg.CreateInstance());
        xml x;
        xaserverarg arg ;
        if (getUrl(L"/sale/data/Enquiry/ProductPriceList/share",arg.GetString(),x)!=1)
        {
            trace(x.text());
@@ -1669,7 +1622,7 @@
    {    
        listwin::onloaded();
        
        AttachEvent();
        AttachListon();
        
        dw_list.SetColumnState(L"EnquiryID",false);
        dw_list.SetColumnState(L"Days",false);
@@ -1683,7 +1636,7 @@
        OnProductPriceShareRetrieve();
        
        int hItem = tv_folder.GetRootItem();
        HTREEITEM hItem = tv_folder.GetRootItem();
        tv_folder.ExpandItem(hItem);
        tv_folder.ItemFocus(hItem);
        
@@ -1708,7 +1661,7 @@
    
    int ProcessUsedArg(xaserverarg arg)
    {
        int hItem = tv_folder.GetCaretItem();
        HTREEITEM hItem = tv_folder.GetCaretItem();
        arg.AddArg(L"sheetname",sheetname);
        if(hItem > 0)
        {
jrj/project/start.vframe.vbusiness.cpp
@@ -4,111 +4,978 @@
#include "wobject/xstring.hpp"
#include "wobject/xurl.hpp"
#include "xcontrol/xshtml.hpp"
#include "vbusiness/vframe/frame.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
#include "xcontrol/xshtml.hpp"
class __declspec(dllexport) startvframevbusiness: public xwin
using xml = Hxsoft::XFrame::KXMLDOMDocument;
class __declspec(dllexport) startvframevbusiness : public xframe
{
public:
    xreport dw_list;
    xreport dw_list;
public:
    startvframevbusiness(void* implPtr,HWND hWnd):xwin(implPtr,hWnd){}
    startvframevbusiness(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
public:
    static startvframevbusiness * CreateInstance(void* implPtr,void* hWnd)
    static startvframevbusiness* CreateInstance(void* implPtr, void* hWnd)
    {
        return new startvframevbusiness(implPtr,(HWND)hWnd);
        return new startvframevbusiness(implPtr, (HWND)hWnd);
    }
public:
    int OnCmdDispatch(const wchar_t* comd)
    int init()
    {
        //alert(comd);
        return 0;
    }
    int OnXCommand(TEvent* evt,int p)
    {
        return OnCmdDispatch(evt->xcommand.pStrID);
    }
        xaserverarg arg;
        KXMLDOMDocument doc;
        if (xurl::get(GetServerUrl(), L"/sale/data/vpage/vstart/list", arg.GetString(), doc) != 1)
        {
            alert(((xstring)L"error:" + doc.xml()).c_str());
            return 0;
        }
        if (!doc.xml()) return 0;
    int ShowDetail(int row)
    {
        if(row<0 || row>dw_list.GetRowCount()) return 1;
        if(!dw_list.GetRowElement(row)) return 1;
        Hxsoft::XFrame::KXMLDOMElement ele = dw_list. GetRowElement(row);
        //alert(ele.xml());
        dw_list.SetRow(row);
        dw_list.Retrieve(doc);
        dw_list.CreateTree((LPCWSTR)L"node()", 1, 15, 16);
        string EntityID=ele.getAttribute(L"EntityID");
        if(!EntityID || !EntityID[0]) return -1;
        //SetAgent("letter",GetEntityID(1));
        xaserverarg arg;
        arg.AddArg(L"content",ele.xml());
        Hxsoft::XFrame::KXMLDOMDocument doc;
         if(xurl::get(GetServerUrl(),L"/sale/data/vpage/vstart/task",arg.GetString(),doc)!=1)
        {
            alert(((xstring)L"error:"+doc.xml()).c_str());
            return 0;
        }
        //alert(doc.xml());
        xshtml ht(GetControl(L"taskinfo"));
        ht.SetContent(doc.xml());
        ht.Redraw();
        return 1;
    }
    //#include <tchar.h>
    int OnClicked(TEvent* evt,int p)
    {
       DWNMHDR*  hdr = (DWNMHDR*)evt->notify.pnmh;
       int row = hdr->row;
       if(row<1 || row>dw_list.GetRowCount()) return 1;
       ShowDetail(row);
       //SetAgent();
        return 1;
    }
    int init()
    {
        xaserverarg arg;
        KXMLDOMDocument doc;
        if(xurl::get(GetServerUrl(),L"/sale/data/vpage/vstart/list",arg.GetString(),doc)!=1)
        {
            alert(((xstring)L"error:"+doc.xml()).c_str());
            return 0;
        }
        if(!doc.xml()) return 0;
        dw_list.Retrieve(doc);
        dw_list.CreateTree((LPCWSTR)L"node()", 1, 15, 16);
        /*
        dw_list.Redraw();
        dw_list.SetReadOnly(true);
        */
        return 1;
    }
    int OnAttachListon()
    {
        AttachEvent(L"WM_XCOMMAND",(FEvent)&startvframevbusiness::OnXCommand,this);
        AttachEvent(L"tasklist",L"DWV_CLICKED",(FEvent)&startvframevbusiness::OnClicked,this);
        //AttachEvent("mdilayer", "LYSN_SELECTEDSHEET",OnSheetChanged);
        ////AttachEvent("mdilayer", "LYSN_CLOSESHEET",OnCloseSheet);
        /*
        dw_list.Redraw();
        dw_list.SetReadOnly(true);
        */
        return 1;
    }
    xstring GetEntityIDName(LPARAM pr)
    {
        return L"@EntityID";
    }
    xstring GetEntityName(LPARAM pr)
    {
        int nRow = dw_list.GetRow();
        if (nRow < 0) return L"";
        KXMLDOMElement ele = dw_list.GetRowElement(nRow);
        xstring x = ele.getAttribute(L"category");
        return x;
    }
    xstring GetEntityID(LPARAM pr)
    {
        int row = dw_list.GetRow();
        if (row<1 || row>dw_list.GetRowCount()) return 0;
        KXMLDOMElement ele = dw_list.GetRowElement(row);
        if (!ele) return L"";
        xstring id = GetEntityIDName(pr);
        if (!ele.selectSingleNode(id)) return L"";
        xstring d = ele.selectSingleNode(id).text();
        return d;
    }
    xstring GetTaskID()
    {
        int row = dw_list.GetRow();
        if (row<1 || row>dw_list.GetRowCount()) return 0;
        KXMLDOMElement ele = dw_list.GetRowElement(row);
        if (!ele) return L"";
        xstring taskid = ele.getAttribute(L"taskid");
        return taskid;
    }
    xstring GetReason(LPARAM pr, xstring comd)
    {
        xaserverarg arg;
        if (GetEntityName(pr) == L"DeliveryDelay")
        {
            xstring ls_cmdid = comd;//pr;
            int row = dw_list.GetRow();
            if (row < 1) return 1;
            KXMLDOMElement ele = dw_list.GetRowElement(row);
            xstring  ls_status = ele.selectSingleNode(L"@status").text();
            if (ls_status == L"货源部待确认" && ls_cmdid == L"action:bill.check.agree")
            {
                arg.AddArg(L"DDID", GetEntityID(2));
                arg.AddArg(L"_ModuelPage", L"dev:xpage[DeliveryDelay.supmancheck.vx]");
                OpenWindow(L"dev:xpage[vindexforold.vx]", arg);
                //openUrl(L"/sale/view/DeliveryDelay/xpage/DeliveryDelay/supmancheck", arg);
                if (arg.GetArgString(L"ret") == L"Sucess")
                {
                    return L"Auto...";
                }
                return L"";
            }
            else
            {
                //return frame::GetReason(pr);
                arg.AddArg(L"EntityID", GetEntityID(2));
                arg.AddArg(L"_ModuelPage", L"dev:xpage[workflow.chkdlg.vx]");
                OpenWindow(L"dev:xpage[vindexforold.vx]", arg);
                //int newArg2 = arg.ptr_native_;
                //openUrl(L"/sale/view/workflow.view/xpage/chkdlg_vd", newArg2);
                xstring comdid = arg.GetArgString(L"comdid");
                if (comdid == L"xmOK")
                {
                    xstring value = arg.GetArgString(L"content") + L" ";
                    return value;
                }
                return L"";
            }
        }
        else
        {
            //return frame::GetReason(pr);
            arg.AddArg(L"EntityID", GetEntityID(2));
            arg.AddArg(L"_ModuelPage", L"dev:xpage[workflow.chkdlg.vx]");
            OpenWindow(L"dev:xpage[vindexforold.vx]", arg);
            //openUrl(L"/sale/view/workflow.view/xpage/chkdlg", arg);
            xstring comdid2 = arg.GetArgString(L"comdid");
            if (comdid2 == L"xmOK")
            {
                xstring value2 = arg.GetArgString(L"content") + L" ";
                return value2;
            }
            return L"";
        }
    }
    int ViewUpdate(LPARAM pr, xstring updateItem, xaserverarg  arg)
    {
        init();
        return 1;
    }
    xstring GetEntityWorkNode(LPARAM pr, xstring what)
    {
        if (what == L"open")
        {
            int row = dw_list.GetRow();
            if (row<0 || row>dw_list.GetRowCount()) return 0;
            KXMLDOMElement ele = dw_list.GetRowElement(row);
            xstring aurl = ele.selectSingleNode(L"@url").text();
            return aurl;
        }
        return L"";
    }
    int SetAgent()
    {
        if (dw_list)
        {
            //init();
            xstring id = GetEntityID(1);
            if (id != L"")    xframe::SetAgent((xstring)L"letter", id);
        }
        return 1;
    }
    int openUrl(xstring aurl, /*param */ LPARAM para)
    {
        //alert(aurl);
        xml x;
        xurl::get(aurl, L"", x);
        KXMLDOMDocument doc = x;
        KXMLDOMNode n = doc.selectSingleNode(L"//resource/@src");
        //alert(x.xml());
        if (n)
        {
            /*
            xstring xq = n.text();
            OpenWindow(xq, para);
            return 1;
            */
            xstring xq = n.text();
            if (doc.selectSingleNode(L"//resource/@argnative"))
            {
                OpenWindow(xq, para);
            }
            //alert(xq);
            else if (xq.find(L"upplier", 0) > 0 and xq != L"dev:xpage[Maint.SupplierStatusModify.vx]" and xq != L"dev:xpage[Maint.SupplierSubmit.vx]")
                OpenWindow(xq, para);
            else
            {
                xq = xq.replace(L"dev:xpage[", L"");
                xq = xq.replace(L"]", L"");
                xaserverarg args;
                args.AddArg(L"_ModuelPage", xq);
                //alert(args.GetString());
                OpenWindow(L"dev:xpage[vindexforold.vx]", args);
            }
            return 1;
        }
        else
        {
            xaserverarg arg;
            n = doc.selectSingleNode(L"//resource[@vface!='' and @view!='']");
            if (n)
            {
                xstring vface = n.selectSingleNode(L"@vface").text();
                xstring view = n.selectSingleNode(L"@view").text();
                xstring config = n.selectSingleNode(L"@config").text();
                if (config != L"")
                {
                    arg.AddArg(L"config", config, L"xs:xstring");
                }
                if (vface == L"." || vface == L"")
                {
                    xstring v = n.selectSingleNode(L"@url").text();
                    xstring burl = aurl.mid(0, aurl.find(v, 0));
                    //alert(burl);
                    return openUrl(burl + view, arg);
                }
                else
                    return openUrl(vface + L"/" + view, arg);
            }
        }
        return -1;
    }
    int SetTaskProcessed()
    {
        int row = dw_list.GetRow();
        if (row<0 || row>dw_list.GetRowCount()) return 1;
        if (!dw_list.GetRowElement(row)) return 1;
        KXMLDOMElement ele = dw_list.GetRowElement(row);
        xaserverarg arg;
        xstring taskid = ele.getAttribute(L"taskid");
        arg.AddArg(L"TaskID", taskid);
        xml x = ViewObject::RetrieveData(L"/sale/data/business/update/taskprocessed", L"TaskID", taskid);
        if (x) alert(x.text());
        dw_list.DeleteRow(row);
        return 1;
    }
    int ProcessFlowAction(xstring comdid, LPARAM pr1)
    {
        if (comdid == L"__ModifyRows")
        {
            OnModifyRows();
            return 1;
        }
        int pr = pr1;
        xstring action = comdid.mid(comdid.find(L"action:", 0) + 7, 9999);
        if (action == L"bill.delete" || action == L"bill.deleteEx")
        {
            if (MessageBox(GetHWND(), L"是否确定删除记录!", L"提示", 1) == 2)
                return 1;
        }
        if (action == L"bill.processed")
        {
            if (MessageBox(GetHWND(), L"是否确定选中的任务转已处理?", L"提示", 1) == 2)
                return 1;
            return  SetTaskProcessed();
        }
        xaserverarg arg;
        arg.AddArg(L"Action", action, L"xs:xstring");
        xml x;
        xstring aurl = L"/workflow/query/actioninfo/" + action;
        if (xurl::get(aurl, L"", x) != 1)
            return -1;
        int nlen;
        int i = 0;
        xstring name;
        xstring worknode;
        xstring how;
        xstring state = L"";
        xstring billstatus = L"";
        KXMLDOMElement e;
        arg.AddArg(L"EntityName", GetEntityName(pr), L"xs:xstring");
        //参数要求
        KXMLDOMNodeList nlist = x.selectNodes(L"//params/param");
        nlen = nlist.length();
        for (i = 0; i < nlen; i++)
        {
            e = nlist.item(i);
            name = e.selectSingleNode(L"@name").text();
            how = e.selectSingleNode(L"@how").text();
            xstring content = L"";
            if (how == L"Entity" || how == L"EntityData")
            {
                content = GetEntityData(pr);
            }
            if (e.selectSingleNode(L"@valid"))
            {
                if (content.find(L"update.modify", 0) > 0 || content.find(L"update.delete", 0) > 0) {}
                else return 0;
                if (CheckEntityValidity(pr) < 0) return -1;
            }
            if (how == L"EntityID")
                arg.AddArg(name, GetEntityID(pr), L"xs:xstring");
            else if (how == L"Entity" || how == L"EntityData")
                arg.AddArg(name, content, L"xs:xstring");
            else if (how == L"EntityRowData")
                arg.AddArg(name, GetEntityRowData(pr), L"xs:xstring");
            else if (how == L"Reason")
            {
                arg.AddArg(name, GetReason(1, L""), L"xs:xstring");
            }
            else if (how == L"EntityNo")
                arg.AddArg(name, GetEntityNo(pr), L"xs:xstring");
            else if (how == L"EntityTitle")
                arg.AddArg(name, GetEntityTitle(pr), L"xs:xstring");
            else if (how == L"GetParam")
                arg.AddArg(name, GetParamValue(name), L"xs:xstring");
            else if (how == L"UserID")
                arg.AddArg(name, xaserver::GetUserId(), L"xs:xstring");
            //"CHeckAskMsg"
            //"CHeckMsg
            if (how == L"Reason" && arg.GetArgString(name) == L"") return -1;
            //if(how==L"EntityData" && arg.GetArgString(name)==L"") return -1;
            if (e.selectSingleNode(L"@check"))
            {
                xstring doCheck = e.selectSingleNode(L"@check").text();
                if (doCheck == L"Y")
                {
                    xstring value = arg.GetArgString(name);
                    if (value == L"")
                    {
                        alert(name + L" 参数值不能为空,事件终止!");
                        return -1;
                    }
                }
            }
        }
        arg.AddArg(L"action.entity", GetEntityName(pr), L"xs:xstring");
        ProcessUsedArg(arg);
        //动作
        KXMLDOMNode n = x.selectSingleNode(L"//view.action[1]");
        bool execResult = true; //处理结果
        if (n)
        {
            name = n.selectSingleNode(L"@name").text();
            if (n.selectSingleNode(L"@worknode"))
                worknode = n.selectSingleNode(L"@worknode").text();
            else
                worknode = GetEntityWorkNode(pr, name);
            arg.AddArg(L"do", name, L"xs:xstring");
            if (worknode != L"")
            {
                if (worknode.find(L"dev:xpage") == 0)
                    OpenWindow(worknode, arg);
                else
                    openUrl(worknode, arg); //---openUrl(worknode,arg);
            }
            else
            {
                alert(L"Warn: Please configure worknode for action " + name + L".");
                return -1;
            }
        }
        else
        {
            //url::post(GetEntityName(pr)+L"/workflow/action",arg.GetString(),x);
            xml x1;
            int retxx = xurl::post(L"/workflow/action/" + GetEntityName(pr) + L"/" + action, arg.GetString(), x1);
            //alert(L"/workflow/action/"+GetEntityName(pr)+L"/"+action+L"\r\n"+arg.GetString()+L"\r\n"+x1.xml());
            if (retxx != 1) execResult = false;
            if (x1.selectSingleNode(L"//process"))
            {
                KXMLDOMElement e1 = x1.selectSingleNode(L"//process");
                xstring valid = e1.getAttribute(L"valid");
                xstring finished = e1.getAttribute(L"finished");
                xstring errInfo = L"";
                if (valid == L"0")
                {
                    errInfo = e1.getAttribute(L"errInfo");
                    alert(errInfo);
                    execResult = false;
                }
                else if (finished == L"0")
                {
                    errInfo = e1.getAttribute(L"errInfo");
                    errInfo = L"处理失败!\r\n" + errInfo;
                    alert(errInfo);
                    execResult = false;
                }
            }
            else if (x1.selectSingleNode(L"//process-check-list"))
            {
                KXMLDOMElement e2 = x1.selectSingleNode(L"//process-check-list");
                xstring val = e2.getAttribute(L"process");
                if (val == L"ok")
                {
                    alert(L"处理成功");
                    PostMessage(GetHWND(), 0x401, (WPARAM)L"action:bill.refresh", 0);
                }
                else if (val == L"part")
                {
                    alert(L"有部分数据处理未成功,提交成功的已处理。");
                    PostMessage(GetHWND(), 0x401, (WPARAM)L"action:bill.refresh", 0);
                }
                else
                    alert((xstring)L"数据处理不成功\r\n" + x1.xml());
                return 1;
            }
            else if (x1.selectSingleNode(L"//msg"))
            {
                xstring aStr = x1.selectSingleNode(L"//msg[1]").text();
                //if(aStr.find(L"理成功",0) < 0)
                //    alert(aStr);
                if (aStr.find(L"失败", 0) >= 0)
                    execResult = false;
                alert(aStr);
            }
            if (x1.selectSingleNode(L"//msg/@state"))
            {
                state = x1.selectSingleNode(L"//msg[1]/@state").text();
                arg.AddArg(L"state", state, L"xs:xstring");
                billstatus = x1.selectSingleNode(L"//msg[1]/@billstatus").text();
                arg.AddArg(L"billstatus", billstatus, L"xs:xstring");
            }
        }
        //更新要求
        if (execResult)
        {
            nlist = x.selectNodes(L"//view/update");
            nlen = nlist.length();
            for (i = 0; i < nlen; i++)
            {
                e = nlist.item(i);
                how = e.selectSingleNode(L"@do").text();
                if (how == L"setstate")
                {
                    if (state != L"")
                    {
                        arg.AddArg(L"state", state, L"xs:xstring");
                        arg.AddArg(L"billstatus", billstatus, L"xs:xstring");
                        ViewUpdate(pr, how, arg);
                    }
                }
                else
                    ViewUpdate(pr, how, arg);
            }
        }
        return 1;
    }
    /*int ProcessFlowAction(xstring comdid, int pr1)
    {
        //trace(L"comdid--->  %s\r\n", comdid);
        if(comdid == L"__ModifyRows")
        {
            OnModifyRows();
            return 1;
        }
        int pr = pr1;
        xstring action = comdid.mid(comdid.find(L"action:",0)+7,9999);
        if(action == L"bill.delete" || action == L"bill.deleteEx")
        {
            if (MessageBox(GetHWND(),L"是否确定删除记录!",L"提示1",1) == 2)
                return 1;
        }
        xaserverarg arg = new xaserverarg ;
        arg.AddArg(L"Action", action,L"xs:xstring");
        xml x ;
        x.setNativePointer(xml ::CreateInstance());
        xstring aurl = L"/workflow/query/actioninfo/"+action;
        //trace(L"abc---",aurl);
        if(xurl::get(aurl, L"", x) != 1)
            return -1;
        //alert(x.xml());
        int nlen ;
        int i = 0;
        xstring name;
        xstring worknode;
        xstring how;
        xstring state;
        KXMLDOMElement e;
        arg.AddArg(L"EntityName", GetEntityName(pr),L"xs:xstring");
        //参数要求
        KXMLDOMNodeList nlist = x.selectNodes(L"//params/param");
        nlen = nlist.length;
        //trace(L"xxx");
        for(i=0;    i<nlen;    i++)
        {
            //trace(L"yyy");
            e = nlist.item(i);
            //trace(e.xml);
            name = e.selectSingleNode(L"@name").text();
            how = e.selectSingleNode(L"@how").text();
            //trace(how);
            //trace(name);
            xstring content = L"";
            if(how==L"Entity" || how == L"EntityData")
                content = GetEntityData(pr);
            if(e.selectSingleNode(L"@valid"))
            {
                if(content.find(L"update.modify", 0) > 0 || content.find(L"update.delete",0) > 0) {} else return 0;
                if(CheckEntityValidity(pr) < 0) return -1;
            }
            if(how==L"EntityID")
                arg.AddArg(name, GetEntityID(pr),L"xs:xstring");
            else if(how==L"Entity" || how == L"EntityData")
                arg.AddArg(name, content,L"xs:xstring");
            else if(how==L"EntityRowData")
                arg.AddArg(name, GetEntityRowData(pr),L"xs:xstring");
            else if(how==L"Reason")
                arg.AddArg(name, GetReason(pr, comdid),L"xs:xstring");
            else if(how==L"EntityNo")
                arg.AddArg(name, GetEntityNo(pr),L"xs:xstring");
            else if(how==L"EntityTitle")
                arg.AddArg(name, GetEntityTitle(pr),L"xs:xstring");
            else if(how==L"GetParam")
                arg.AddArg(name, GetParamValue(name),L"xs:xstring");
            else if(how==L"UserID")
                arg.AddArg(name, xaserver::GetUserId(),L"xs:xstring");
            //"CHeckAskMsg"
            //"CHeckMsg
            //trace(arg.GetString());
            //trace(arg.GetArgString(name));
            if(how==L"Reason" && arg.GetArgString(name)==L"") return -1;
            //trace(L"cky1");
            //if(how==L"EntityData" && arg.GetArgString(name)==L"") return -1;
            if(e.selectSingleNode(L"@check"))
            {
                xstring doCheck = e.selectSingleNode(L"@check").text();
                if(doCheck == L"Y")
                {
                    xstring value = arg.GetArgString(name);
                    if(value == L"")
                    {
                        alert(name + L" 参数值不能为空,事件终止!");
                        return -1;
                    }
                }
            }
        }
        arg.AddArg(L"action.entity",GetEntityName(pr),L"xs:xstring");
        //trace(L"zzz");
        //trace(arg.GetString());
        //动作
        KXMLDOMNode n = x.selectSingleNode(L"//view.action[1]");
        //trace(x.xml());
        bool execResult = true; //处理结果
        if(n)
        {
            name = n.selectSingleNode(L"@name").text();
            if(n.selectSingleNode(L"@worknode"))
                worknode = n.selectSingleNode(L"@worknode").text();
            else
                worknode = GetEntityWorkNode(pr,name);
            arg.AddArg(L"do",name,L"xs:xstring");
            if(worknode !=L"")
            {
                //trace(L"do:"+worknode);
                int p = arg.ptr_native_;
                openUrl(worknode,p); //---openUrl(worknode,arg);
            }
            else
            {
                alert(L"Warn: Please configure worknode for action "+ name +L".");
                return -1;
            }
        }
        else
        {
            //url::post(GetEntityName(pr)+L"/workflow/action",arg.GetString(),x);
            //trace(L"/workflow/action/"+GetEntityName(pr)+L"/"+action);
            //trace(L"=====L");
            //trace(arg.GetString());
            xml x1 ;
            x1.setNativePointer(xml::CreateInstance());
            int retxx = url::post(L"/workflow/action/"+GetEntityName(pr)+L"/"+action,arg.GetString(),x1);
            if(retxx != 1) execResult = false;
            //trace(x1.xml());
            if(x1.selectSingleNode(L"//msg"))
            {
                xstring aStr = L""+x1.selectSingleNode(L"//msg[1]").text();
                if(aStr.find(L"理成功",0) < 0)
                    alert(aStr);
                if(aStr.find(L"失败",0) >= 0)
                    execResult = false;
                trace(aStr);
            }
            if(x1.selectSingleNode(L"//msg/@state"))
            {
                state = x1.selectSingleNode(L"//msg[1]/@state").text();
                arg.AddArg(L"state",state,L"xs:xstring");
            }
        }
        //更新要求
        if(execResult)
        {
            nlist = x.selectNodes(L"//view/update");
            nlen = nlist.length;
            for(i=0;    i<nlen;    i++)
            {
                 e = nlist.item(i);
                how = e.selectSingleNode(L"@do").text();
                //trace(how+L"444"+state);
                if(how==L"setstate")
                {
                    if(state != L"")
                    {
                        arg.AddArg(L"state",state,L"xs:xstring");
                        ViewUpdate(pr,how,arg);
                    }
                }
                else
                    ViewUpdate(pr,how,arg);
            }
        }
        return 1;
    }    */
    int BillPurchor()
    {
        int row1 = dw_list.GetRow();
        if (row1<0 || row1>dw_list.GetRowCount()) return 1;
        if (!dw_list.GetRowElement(row1)) return 1;
        KXMLDOMElement ele1 = dw_list.GetRowElement(row1);
        xstring id1 = GetEntityIDName(1);
        xstring d1 = ele1.selectSingleNode(id1).text();
        xstring name1 = GetEntityName(row1);
        xaserverarg arg1;
        xstring templ = ele1.getAttribute(L"content2");
        xstring taskid = ele1.getAttribute(L"taskid");
        arg1.AddArg(L"template", templ);
        arg1.AddArg(L"TaskID", taskid);
        arg1.AddArg(L"EntityID", d1);
        arg1.AddArg(L"bill.purchor", L"1");
        OpenWindow(L"dev:xpage[QuoteFile.vx]", arg1);
        return 1;
    }
    //命令发布函数
    int OnCmdDispatch(xstring comdid)
    {
        //alert(comdid);
        xstring  userno = publiccode::GetUser().no;
        if (comdid == L"action:bill.purchor") return BillPurchor();
        if (comdid == L"action:bill.check.agree")
        {
            int row3 = dw_list.GetRow();
            if (row3<0 || row3>dw_list.GetRowCount()) return 1;
            if (!dw_list.GetRowElement(row3)) return 1;
            KXMLDOMElement ele3 = dw_list.GetRowElement(row3);
            xstring id3 = GetEntityIDName(1);
            xstring d3 = ele3.selectSingleNode(id3).text();
            xstring name3 = GetEntityName(row3);
            if (name3 == L"SaleItem3")
            {
                xml x3;
                xaserverarg arg3;
                arg3.AddArg(L"SOLineID", d3);
                if (getUrl(L"/sale/data/SaleOrder/UpdateSOLineTypeExS", arg3.GetString(), x3) != 1)
                {
                    xstring error3 = x3.text();
                    alert(L"err:" + error3);
                    return 1;
                }
                ProcessFlowAction(L"action:bill.check.agree", 1);
                return 1;
            }
        }
        if (userno == L"00601" || userno == L"00701" || userno == L"admin")
        {
            if (comdid == L"SourceRemark")
            {
                OnSourceRemark();
                return 1;
            }
        }
        if (comdid == L"action:bill.check.agreeEx")
        {
            int row2 = dw_list.GetRow();
            if (row2<0 || row2>dw_list.GetRowCount()) return 1;
            if (!dw_list.GetRowElement(row2)) return 1;
            KXMLDOMElement ele2 = dw_list.GetRowElement(row2);
            xstring id2 = GetEntityIDName(1);
            xstring d2 = ele2.selectSingleNode(id2).text();
            xstring name2 = GetEntityName(row2);
            if (name2 == L"SaleItem3")
            {
                if (MessageBox(GetHWND(), L"是否确认 工厂付款?", L"提示1", 1) == 2)
                    return 1;
                xml x5;
                xaserverarg arg5;
                arg5.AddArg(L"SOLineID", d2);
                if (getUrl(L"/sale/data/SaleOrder/UpdateSOLineTypeEx", arg5.GetString(), x5) != 1)
                {
                    xstring error = x5.text();
                    alert(L"err:" + error);
                    return 1;
                }
                alert(x5.text());
                ProcessFlowAction(L"action:bill.check.agree", 1);
                return 1;
            }
        }
        if (comdid && comdid.find(L"hand!", 0) == 0)
        {
            if (comdid == L"hand!toleft")
            {
                ProcessFlowAction(L"action:bill.check.unagree", 1);
                return 1;
            }
            if (comdid == L"hand!toright")
            {
                ProcessFlowAction(L"action:bill.check.agree", 1);
                return 1;
            }
            if (comdid == L"hand!toupright")
            {
                int row = dw_list.GetRow();
                if (row<0 || row>dw_list.GetRowCount()) return 1;
                if (!dw_list.GetRowElement(row)) return 1;
                KXMLDOMElement ele = dw_list.GetRowElement(row);
                xstring id = GetEntityIDName(1);
                xstring d = ele.selectSingleNode(id).text();
                if (d == L"") return 1;
                ProcessFlowAction(L"action:bill.open", 1);
                return 1;
            }
            if (comdid == L"hand!round")
            {
                ProcessFlowAction(L"action:bill.note", 1);
                return 1;
            }
        }
        if (comdid == L"xmIconNotifyClicked")
        {
            //OpenWindow(L"dev:xpage[/]",0);
            init();
            return 1;
        }
        if (comdid == L"xmRefresh" || comdid == L"xmRefreshTask")
        {
            init();
            return 1;
        }
        if (ProcessFlowAction(comdid, 1) == 0) return 0;
        if (comdid == L"action:bill.open")
        {
            int row1 = dw_list.GetRow();
            if (row1<0 || row1>dw_list.GetRowCount()) return 1;
            if (!dw_list.GetRowElement(row1)) return 1;
            KXMLDOMElement ele1 = dw_list.GetRowElement(row1);
            xstring id1 = GetEntityIDName(1);
            xstring d1 = ele1.selectSingleNode(id1).text();
            xstring name1 = GetEntityName(row1);
            if (name1 == L"QuoteEnquiry")
            {
                xaserverarg arg1;
                xstring templ = ele1.getAttribute(L"content2");
                xstring taskid = ele1.getAttribute(L"taskid");
                arg1.AddArg(L"template", templ);
                arg1.AddArg(L"TaskID", taskid);
                arg1.AddArg(L"EntityID", d1);
                OpenWindow(L"dev:xpage[QuoteFile.vx]", arg1);
                return 1;
            }
            if (name1 == L"SampleFee")
            {
                xaserverarg arg;
                arg.AddArg(L"SampleFeeID", d1);
                //arg.AddArg(L"HWND",GetHWND().toString());
                OpenWindow(L"dev:xpage[maint.samplefee.vx]", arg);
                return 1;
            }
        }
        return 0;
    }
    int OnSourceRemark()
    {
        xstring name = L"事务处理";
        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;
    }
    int OnDoubleClicked(TEvent* evt, LPARAM p)
    {
        DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
        int row = hdr.row;
        if (row<0 || row>dw_list.GetRowCount()) return 1;
        if (!dw_list.GetRowElement(row)) return 1;
        KXMLDOMElement ele = dw_list.GetRowElement(row);
        xstring id = GetEntityIDName(1);
        xstring d = ele.selectSingleNode(id).text();
        if (d == L"") return 1;
        xstring name1 = GetEntityName(1);
        if (name1 == L"QuoteEnquiry")
        {
            xaserverarg arg1;
            xstring templ = ele.getAttribute(L"content2");
            xstring taskid = ele.getAttribute(L"taskid");
            //trace(templ);
            arg1.AddArg(L"template", templ);
            arg1.AddArg(L"TaskID", taskid);
            arg1.AddArg(L"EntityID", d);
            OpenWindow(L"dev:xpage[QuoteFile.vx]", arg1);
            return 1;
        }
        ProcessFlowAction(L"action:bill.open", 1);
        return 1;
    }
    //焦点激活处理函数
    int OnSetFocus(TEvent* evt, LPARAM param)
    {
        SetAgent();
        //重置工具条
        return 1;
    }
    //命令处理事件
    int OnXCommand(TEvent* evt, LPARAM p)
    {
        return OnCmdDispatch(evt->xcommand.pStrID);
    }
    int ShowDetail(int row)
    {
        if (row<0 || row>dw_list.GetRowCount()) return 1;
        if (!dw_list.GetRowElement(row)) return 1;
        KXMLDOMElement ele = dw_list.GetRowElement(row);
        trace((xstring)L"\r\n====113======L" + ele.xml());
        dw_list.SetRow(row);
        if (GetEntityID(1) == L"") return -1;
        xframe::SetAgent((xstring)L"letter", GetEntityID(1));
        //trace(ele.xml);
        xaserverarg arg;
        arg.AddArg(L"content", ele.xml());
        xml doc;
        if (getUrl(L"/sale/data/vpage/vstart/task", arg.GetString(), doc) != 1)
        {
            trace((xstring)L"error->:" + doc.xml());
            return 0;
        }
        //trace(L"----1111----");
        if (doc.xml() == L"")
            return -1;
        //trace(doc.xml());
        xshtml ht = GetControl(L"taskinfo");
        ht.SetContent(doc.xml());
        ht.Redraw();
        return 1;
    }
    int OnClicked(TEvent* evt, LPARAM p)
    {
        DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
        int row = hdr.row;
        trace(L"count:" + (xstring)dw_list.GetRowCount());
        if (row<1 || row>dw_list.GetRowCount()) return 1;
        trace(L"\r\n-------" + (xstring)row);
        ShowDetail(row);
        SetAgent();
        return 1;
    }
    int OnRowChanged(TEvent* evt, LPARAM p)
    {
        DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
        int row = hdr.row;
        if (row<0 || row>dw_list.GetRowCount()) return 0;
        trace(L"\r\n-----222------");
        ShowDetail(row);
        SetAgent();
        return 1;
    }
    int onload()
    {
        dw_list = GetControl(L"tasklist");
        init();
    {
        //alert(L"xxxxxxxxxxx");
        //SetAgent();
        AttachEvent(L"WM_SETFOCUS", (FEvent)&startvframevbusiness::OnSetFocus);
        //绑定工具条点击事件
        AttachEvent(L"WM_XCOMMAND", (FEvent)&startvframevbusiness::OnXCommand);
        //AttachEvent(L"WM_TIMER",OnTimer);
        AttachEvent(L"tasklist", L"DWV_ROWFOCUSCHANGED", (FEvent)&startvframevbusiness::OnRowChanged);
        AttachEvent(L"tasklist", L"DWV_DOUBLECLICKED", (FEvent)&startvframevbusiness::OnDoubleClicked);
        AttachEvent(L"tasklist", L"DWV_CLICKED", (FEvent)&startvframevbusiness::OnClicked);
        OnAttachListon();
        dw_list = GetControl(L"tasklist");
        init();
        SetAgent();
        return 1;
    }
    int onloaded()
    {
        return 1;
    }
};
@@ -116,3 +983,4 @@
jrj/project/total3/ViewTotalWin.cpp
@@ -193,7 +193,7 @@
            xstring colname = dw.GetColumnName(i);
            if (str.find(L"!" + colname + L",L") >= 0)
            {
                dw.SetColumnState(colname, false);
                dw.SetColumnState((LPCTSTR)colname.c_str(), false);
            }
        }
        return 1;
@@ -391,6 +391,8 @@
        AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewTotalWin::OnDWClick);
        AttachEvent(L"dw_report", L"DWV_ROWFOCUSCHANGED", (FEvent)&ViewTotalWin::OnRowChanged);//绑定行更改触发事件OnRowChanged
        AttachEvent(L"dw_report", xstring(0x400 + 81), (FEvent)&ViewTotalWin::OnRetrieveFinished);
        return 1;
    }
    int  OnRetrieve(xstring dataurl, xstring argstr)
jrj/xframe/vbusiness/vframe/frame.vframe.vbusiness.hpp
@@ -337,7 +337,7 @@
            }
        }
        //更新要求
        if (execResult & 0xf)
        if (execResult)
        {
            nlist = x.selectNodes(L"//view/update");
            nlen = nlist.length();
@@ -384,7 +384,7 @@
        return 1;
    }
    virtual string GetTaskID()
    virtual xstring GetTaskID()
    {
        return L"";
    }
jrj/xframe/xcontrol/xcombobox.hpp
@@ -16,11 +16,6 @@
        return *this;
    }
public:
    static int GetCurSel(HWND hWnd)
    {
        int CB_GETCURSEL_ = 0x0147;
        return SendMessage(hWnd, CB_GETCURSEL_, 0, 0);
    }
    int GetCurSel()
    {