LiFan
2024-07-18 a6b54d999992d72b2d9ea33efec0b7d642ea9f2d
jrj/project/business/SystemSettings/view.assignadjust.cpp
@@ -1,37 +1,49 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "base.view.vd"
use "datastore_bind.vd"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xdatetimepick.hpp>
unit trade
[
   class AssignAdjustWin :  public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
   class  __declspec(dllexport) AssignAdjustWin :  public xframe
   {
   public:
      xdwgrid   dw_list;
      xnode   m_agentNode;   //Agent Condition
      msxml::IXMLDOMElement rptEle;
      string argStr;
      string   searchStr;
      int      hWndRetrieveTip;
      KXMLDOMElement rptEle;
      xstring argStr;
      xstring   searchStr;
      HWND      hWndRetrieveTip;
      bool    dataretrieveing;
   public:
      AssignAdjustWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
   public:
      static AssignAdjustWin* CreateInstance(void* implPtr, void* hWnd)
      {
         AssignAdjustWin* pWin = new AssignAdjustWin(implPtr, (HWND)hWnd);
         return pWin;
      }
      int SetAgent()
      {
         string xfNodeAgentArea  = "agentarea";
         xstring xfNodeAgentArea  = L"agentarea";
         xnode anode = GetAgentNode(xfNodeAgentArea);
         if(m_agentNode)
         {
            SetAgentNodeContent (anode,m_agentNode);
            SetAgentNode (anode,m_agentNode);
         }
         else
         {
            msxml::IXMLDOMElement xframeElement =  GetElement();
            msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
            KXMLDOMElement xframeElement =  GetElement();
            KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*");
            if(agent)
            {
               string s = agent.xml;
               m_agentNode =  SetAgentNodeContent (anode,s);
               xstring s = agent.xml();
               m_agentNode =  SetAgentNode (anode,s);
            }
         }
         return 1;
@@ -39,40 +51,40 @@
            
      int OnSave()
      {
         xml x = new xml;
         x.setNativePointer(xml::CreateInstance());
         xml x ;
         dw_list.AcceptText();
         dw_list.DwUpdateAllToEx(x.GetXmlDoc());
         xaserverarg arg = new xaserverarg;
         arg.setNativePointer(xaserverarg::CreateInstance());
         dw_list.DwUpdateAllToEx(x);
         xaserverarg arg ;
         
         xml x0 = ViewObject::MakeXml();
         x0.LoadXml("<data/>");
         msxml::IXMLDOMNodeList t = x.GetXmlDoc().selectNodes("data/node()[(@update.new='1') or (@update.modify='1') or (@update.delete='1') ]");
         msxml::IXMLDOMElement e1= x0.GetXmlDoc().documentElement;
         xml x0;
         x0.loadXML(L"<data/>");
         KXMLDOMNodeList t = x.selectNodes(L"data/node()[(@update.new='1') or (@update.modify='1') or (@update.delete='1') ]");
         KXMLDOMElement e1= x0.documentElement();
         
         string val0 = x.GetXml();
         for(int i=0; i < t.length; i++)
         xstring val0 = x.xml();
         for(int i=0; i < t.length(); i++)
         {
            msxml::IXMLDOMElement e= t.item(i);
            KXMLDOMElement e= t.item(i);
            e1.appendChild(e);
         }
         
         x = ViewObject::RetrieveData(rptEle.getAttribute("update"),"content",x0.GetXml());
         string str = x.GetXmlDoc().documentElement.getAttribute("text");
         if(str == "true")
         x = ViewObject::RetrieveData(rptEle.getAttribute(L"update"),L"content",x0.xml());
         xstring str = x.documentElement().getAttribute(L"text");
         if(str == L"true")
         {
            dw_list.ResetUpdateStatus();
            alert("保存成功!");
            alert(L"保存成功!");
         }else 
         {
            alert("保存失败!");
            alert(L"保存失败!");
         }
         return 1;
      }
      
      //焦点激活处理函数
      int OnSetFocus(ref TEvent evt,int param)
      int OnSetFocus(TEvent* evt, LPARAM param)
      {
         //重置工具条
         SetAgent();
@@ -83,78 +95,79 @@
         {
            dw_list.AcceptText();
            int row = dw_list.GetNextSelectRow(1);
            string SalespersonID = dw_list.GetItemString(row, "SalespersonID");
            string Sales = dw_list.GetItemDisplayString(row, "SalespersonID");
            xstring SalespersonID = dw_list.GetItemString(row, L"SalespersonID");
            xstring Sales = dw_list.GetItemDisplayString(row, L"SalespersonID");
            while(row > 0 && row <= dw_list.GetRowCount())
            {
                  row =  dw_list.GetNextSelectRow(row + 1);
                  dw_list.SetItemString(row, "SalespersonID", SalespersonID);
                  dw_list.SetItemDisplayString(row, "SalespersonID", Sales);
                  dw_list.SetItemString(row, L"SalespersonID", SalespersonID);
                  dw_list.SetItemDisplayString(row, L"SalespersonID", Sales);
                  
            }
            dw_list.Redraw();
            return 1;
         }
            
            
      int OnSearch()
      {
         xaserverarg arg=new xaserverarg;
         arg.setNativePointer(arg.CreateInstance());
         arg.AddArg("text", searchStr);
         OpenWindow("dev:xpage[search.dialog.vx]", cast(arg as int));
         string str = arg.GetArgString("text");
         xaserverarg arg;
         ;
         arg.AddArg(L"text", searchStr);
         OpenWindow(L"dev:xpage[search.dialog.vx]", arg);
         xstring str = arg.GetArgString(L"text");
         if(str != searchStr)
         {
            searchStr = str;
            dw_list.Filter("*",searchStr);
            dw_list.Filter(L"*",searchStr);
            return 1;
         }
         return 1;
      }
      //命令发布函数
      int OnCmdDispatch(string comdid)
      int OnCmdDispatch(xstring comdid)
      {
         if(comdid=="xmSave")return OnSave();
         if(comdid=="xmMultiDeal")return OnMultiDeal();
         if(comdid=="xmSearch") return OnSearch();
          if(comdid=="xmAnalysis")
         if(comdid==L"xmSave")return OnSave();
         if(comdid==L"xmMultiDeal")return OnMultiDeal();
         if(comdid==L"xmSearch") return OnSearch();
          if(comdid==L"xmAnalysis")
         {
            //hCursor = xutil::SetCursorWait();
            string str = dw_list.DataAnalysis("");
            xaserverarg arg=new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("html", str);
            int obj = cast(dw_list as int);
            arg.AddArg("obj",obj.toString());
            OpenWindow("dev:xpage[data.vanalysis.vx]", cast(arg as int));
            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=="xmQuery")
         if(comdid==L"xmQuery")
         {
            if(rptEle)
            {
               string argUrl = rptEle.getAttribute("arg");
               if(argUrl !="")
               xstring argUrl = rptEle.getAttribute(L"arg");
               if(argUrl !=L"")
               {
                  xaserverarg ar = new xaserverarg;
                  ar.setNativePointer(ar.CreateInstance());
                  ar.AddArg("argurl",argUrl);
                  if(argStr !="")
                     ar.AddArg("arg",argStr);
                  OpenWindow("dev:xpage[view.total.arg.vx]",cast(ar as int));
                  string arstr = ar.GetArgString("arg");
                  if(arstr != "" && ar.GetArgString("action")=="ok")
                  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;
                     OnRetrieve(rptEle.getAttribute("data"),argStr);
                     OnRetrieve(rptEle.getAttribute(L"data"),argStr);
                  }
               }
               else
               {
                  argStr="";
                  OnRetrieve(rptEle.getAttribute("data"),argStr);
                  argStr=L"";
                  OnRetrieve(rptEle.getAttribute(L"data"),argStr);
               }
            }
            return 1;
@@ -163,32 +176,33 @@
      }
      
      //命令处理事件
      int OnXCommand(ref TXCommandEvent evt,int param)
      int OnXCommand(TEvent* evt, LPARAM param)
      {
         return OnCmdDispatch(evt.pStrID);
         return OnCmdDispatch(evt->xcommand.pStrID);
      }
      
      int OnAttachEvent()
      {
         //绑定工具条点击事件
         AttachEvent("WM_XCOMMAND",OnXCommand);
         AttachEvent(L"WM_XCOMMAND", (FEvent)&AssignAdjustWin::OnXCommand);
         //获取焦点事件,用于重置工具条
         AttachEvent("WM_SETFOCUS",OnSetFocus);
         AttachEvent(L"WM_SETFOCUS", (FEvent)&AssignAdjustWin::OnSetFocus);
         
         AttachEvent("cb_report","CBN_SELCHANGE",OnCombboChanged);
         AttachEvent(L"cb_report",L"CBN_SELCHANGE", (FEvent)&AssignAdjustWin::OnCombboChanged);
         return 1;
      }
      
      int OnCombboChanged(ref TCommandEvent evt,int lParam)
      int OnCombboChanged(TEvent* evt, LPARAM lParam)
      {
         int h = xcombobox::GetCurSel(evt.hCtrl);
         int h = xcombobox::GetCurSel(evt->command.hCtrl);
         if(h > -1) ShowList(h);
         return 1;
      }
         
      int SwitchReport(msxml::IXMLDOMElement e)
      int SwitchReport(KXMLDOMElement e)
      {
         rptEle = e;
         string dwname = e.getAttribute("template");
         xstring dwname = e.getAttribute(L"template");
         dw_list.openUrl(dwname);
         dw_list.Redraw();
         return 1;
@@ -196,43 +210,43 @@
      int ShowList(int h)
      {
         msxml::IXMLDOMElement xframeElement =  GetElement();
         msxml::IXMLDOMElement e =  xframeElement.selectSingleNode("//xcombobox[@name='cb_report']/item["+(h+1).toString()+"]");
         KXMLDOMElement xframeElement =  GetElement();
         KXMLDOMElement e =  xframeElement.selectSingleNode(L"//xcombobox[@name='cb_report']/item["+xstring(h+1)+L"]");
         if(e)   SwitchReport(e);
         win32::PostMessage(GetHWND(),0x401,"xmQuery",0);
         PostMessage(GetHWND(),0x401,(LPARAM)L"xmQuery",0);
         return 1;
      }
            int ShowRetrieveingTip()
      {
         dataretrieveing = true;
         xwin pwin = OpenWindow("dev:xpage[TestRetrieveing.vx]",0);
         hWndRetrieveTip =pwin.GetHWND();
         xwin* pwin = OpenWindow(L"dev:xpage[TestRetrieveing.vx]");
         hWndRetrieveTip = pwin->GetHWND();
         return 1;
      }
      int CloseRetrieveTip()
      {
         dataretrieveing = false;
         win32::SendMessage(hWndRetrieveTip,0x401,"RetrieveFinished",0);
         SendMessage(hWndRetrieveTip,0x401, (LPARAM)L"RetrieveFinished",0);
         hWndRetrieveTip = 0;
         
         return 1;
      }
      
      int  OnRetrieve(string dataurl, string argstr)
      int  OnRetrieve(xstring dataurl, xstring argstr)
      {
         if(!rptEle) return 0;
         dw_list.Reset();
         
         xml x = new xml;
         x.setNativePointer(xml::CreateInstance());
         xaserverarg arg = new xaserverarg;
         arg.setNativePointer(arg.CreateInstance());
         arg.AddArg("arg",argstr);
         if (url::get(dataurl,arg.GetString(),x)!=1)
         xml x ;
         xaserverarg arg ;
         ;
         arg.AddArg(L"arg",argstr);
         if (xurl::get(dataurl,arg.GetString(),x)!=1)
         {
            
            trace("错误信息="+x.GetXmlDoc().text);
            trace(L"错误信息=L"+(xstring)x.text());
            dw_list.Redraw();
            return -1;
         }else   
@@ -247,8 +261,8 @@
      
      int onload()
      {
         rptEle = 0;
         dw_list = GetControl("dw_list");
         rptEle = nullptr;
         dw_list = GetControl(L"dw_list");
         OnAttachEvent();   
         
         hWndRetrieveTip = 0;
@@ -263,5 +277,4 @@
         
         return 1;
      }      
   };
]
   };