LiFan
2025-05-12 63eebabbfee1bc84850b36967ecac5116a28b73f
jrj/project/business/BasicCode/ExchangeRate.cpp
@@ -1,38 +1,52 @@
   use "xcontrol.vframe.vbusiness.vd"
   use "xbase.vframe.vbusiness.vd"
   use "base.view.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 ExchangeRateWin :  public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
      class __declspec(dllexport) ExchangeRateWin :  public xframe
      {
      public:
         xdwgrid   dw_list;
         int hSignWin;
         xnode   m_agentNode;   //Agent Condition
      public:
         ExchangeRateWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
      public:
         static ExchangeRateWin* CreateInstance(void* implPtr, void* hWnd)
         {
            ExchangeRateWin* pWin = new ExchangeRateWin(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;
         }
         //焦点激活处理函数
         int OnSetFocus(ref TEvent evt,int param)
         int OnSetFocus(TEvent* evt, LPARAM param)
         {
            //重置工具条
            SetAgent();
@@ -41,71 +55,71 @@
         int OnSave()
         {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            dw_list.AcceptText();
            dw_list.DwUpdateAllToEx(x.GetXmlDoc());
            xml x0 = ViewObject::MakeXml();
            x0.LoadXml("<data/>");
            xml x ;
            
            msxml::IXMLDOMNodeList t = x.GetXmlDoc().selectNodes("data/Item[@update.modify='1' or @update.delete ='1']");
            msxml::IXMLDOMElement e1= x0.GetXmlDoc().documentElement;
            int len = t.length;
            dw_list.AcceptText();
            dw_list.DwUpdateAllToEx(x);
            xml x0;
            x0.loadXML(L"<data/>");
            KXMLDOMNodeList t = x.selectNodes(L"data/Item[@update.modify='1' or @update.delete ='1']");
            KXMLDOMElement e1= x0.documentElement();
            int len = t.length();
            for(int i=0;i<len;i++)
            {
               e1.appendChild(t.item(i));
            }
            xaserverarg arg = ViewObject::MakeArg();
            arg.AddArg("content",x0.GetXml());
            trace(x0.GetXml());
            if(url::get("/sale/data/expense3/update/ExchangeRate", arg.GetString(),x)!=1)
            xaserverarg arg ;
            arg.AddArg(L"content",x0.xml());
            trace(x0.xml());
            if(xurl::get(L"/sale/data/expense3/update/ExchangeRate", arg.GetString(),x)!=1)
            {
               string error = x.GetXmlDoc().text;
               alert("err:"+error);
               xstring error = x.text();
               alert(L"err:"+error);
               return 1;
            }
            string str = x.GetXmlDoc().documentElement.getAttribute("text");
            if(str == "true")
            xstring str = x.documentElement().getAttribute(L"text");
            if(str == L"true")
            {
               dw_list.ResetUpdateStatus();         
               alert("保存成功!");
               alert(L"保存成功!");
            }else 
            {
               alert("保存失败!");
               alert(L"保存失败!");
            }
            return 1;
         }
            
               
         //命令发布函数
         int OnCmdDispatch(string comdid)
         int OnCmdDispatch(xstring comdid)
         {
            if(comdid=="xmAddRow")
            if(comdid==L"xmAddRow")
            {
               string sdate = publiccode::GetCurrentDate();
               string suserid = publiccode::GetUser().id;
               string susername = publiccode::GetUser().name;
               xstring sdate = publiccode::GetCurrentDate();
               xstring suserid = publiccode::GetUser().id;
               xstring susername = publiccode::GetUser().name;
               int row =dw_list.GetRowCount();
               dw_list.InsertRow(0);
               dw_list.SetItemString(row+1,"CreatorID",suserid);
               dw_list.SetItemDisplayString(row+1,"CreatorID",susername);
               dw_list.SetItemString(row+1,"CreateDate",sdate);
               dw_list.SetItemString(row+1,L"CreatorID",suserid);
               dw_list.SetItemDisplayString(row+1,L"CreatorID",susername);
               dw_list.SetItemString(row+1,L"CreateDate",sdate);
               return 1;
            }
            else if(comdid=="xmDeleteRow")
            else if(comdid==L"xmDeleteRow")
            {
               dw_list.DeleteRow(0);
               return 1;
            }
            else if (comdid == "xmSave")
            else if (comdid == L"xmSave")
            {
               OnSave();
            }
            else if (comdid == "xmRefresh")
            else if (comdid == L"xmRefresh")
            {
               OnRetrieve();
            }
            else if(comdid =="ToUpdate")
            else if(comdid ==L"ToUpdate")
            {
               ToUpdate();
            }
@@ -116,36 +130,36 @@
         
         int ToUpdate()
         {
            string Months = dw_list.GetItemString(dw_list.GetRow(),"Months");
            xstring Months = dw_list.GetItemString(dw_list.GetRow(),L"Months");
            int MB_OKCANCEL = 1;
            int IDOK  = 1;
            int ret = win32::MessageBox(GetHWND(),"确认更新"+Months+"盈亏汇率?","提示",MB_OKCANCEL);
            int ret = MessageBox(GetHWND(),L"确认更新"+Months+L"盈亏汇率?",L"提示",MB_OKCANCEL);
            if(ret == IDOK)
            {
               xml x = ViewObject::RetrieveData("/sale/data/Expense3/ExchangeRateUpdateEx","Months",Months);
               string status = x.GetXml();
               if(status.find("ok") == 1)
               xml x = ViewObject::RetrieveData(L"/sale/data/Expense3/ExchangeRateUpdateEx",L"Months",Months);
               xstring status = x.xml();
               if(status.find(L"ok") == 1)
               {
                  alert("更新成功");
                  alert(L"更新成功");
               }else
               {
                  alert("更新失败");
                  alert(L"更新失败");
               }
            }
            return 1;
         }
         
         //触发鼠标离开后tran事件,通过查找某个参数得到对应的列         
            int OnBaseItemChanged(ref TNotifyEvent evt,int p)
         int OnBaseItemChanged(TEvent* evt, int p)
         {
            ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
            string colname=hdr.colname;
            string value = hdr.data;
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring colname=hdr.colname;
            xstring value = hdr.data;
            
            string dwname = "dw_list";
            if(value != "")
            xstring dwname = L"dw_list";
            if(value != L"")
            {
               msxml::IXMLDOMNodeList nlist = GetElement().selectNodes("//*[@name='"+dwname+"']/trans[@for='"+colname+"']");
               KXMLDOMNodeList nlist = GetElement().selectNodes(L"//*[@name='"+dwname+L"']/trans[@for='"+colname+L"']");
               ViewObject::TransData(nlist, dw_list, hdr.row, colname, value);
            }
@@ -154,33 +168,34 @@
            
         
         //命令处理事件
         int OnXCommand(ref TXCommandEvent evt,int param)
         {
            return OnCmdDispatch(evt.pStrID);
         }
            int OnXCommand(TEvent* evt, LPARAM param)
            {
               return OnCmdDispatch(evt->xcommand.pStrID);
            }
         
         int OnAttachEvent()
         {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND",OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ExchangeRateWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent("dw_list","DWV_ITEMCHANGED",OnBaseItemChanged);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ExchangeRateWin::OnSetFocus);
            AttachEvent(L"dw_list",L"DWV_ITEMCHANGED", (FEvent)&ExchangeRateWin::OnBaseItemChanged);
            return 1;
         }
         
         
         int  OnRetrieve()
         {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("QueryTxt",GetControl("search").GetText());
            xml x ;
            xaserverarg arg;
            arg.AddArg(L"QueryTxt",xcontrol(GetControl(L"search")).GetText());
            
            
            if (getUrl("/sale/data/Expense3/ExchangeRateList",arg.GetString(),x)!=1)
            if (getUrl(L"/sale/data/Expense3/ExchangeRateList",arg.GetString(),x)!=1)
            {
               trace(x.GetXmlDoc().text);
               trace(x.text());
               return -1;
            }else   
            {
@@ -192,8 +207,8 @@
      
         int onload()
         {
            dw_list = GetControl("dw_list");
            dw_list.openUrl("/sale/view/Expense3/ExchangeRate");
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/Expense3/ExchangeRate");
            
            
            OnRetrieve();
@@ -208,5 +223,4 @@
            SetAgent();
            return 1;
         }      
      };
   ]
      };