#include <wobject/xstring.hpp> 
 | 
#include <xcontrol/xtreeview.hpp> 
 | 
#include <xcontrol/xdwgrid.hpp> 
 | 
#include <wobject/xdouble.hpp> 
 | 
#include <xcontrol/xlayersheet.hpp> 
 | 
#include <xcontrol/xdatetimepick.hpp> 
 | 
  
 | 
  
 | 
#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() 
 | 
            { 
 | 
                xstring xfNodeAgentArea  = L"agentarea"; 
 | 
                xnode anode = GetAgentNode(xfNodeAgentArea); 
 | 
                if(m_agentNode) 
 | 
                { 
 | 
                    SetAgentNode (anode,m_agentNode); 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    KXMLDOMElement xframeElement =  GetElement(); 
 | 
                    KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); 
 | 
                    if(agent) 
 | 
                    { 
 | 
                        xstring s = agent.xml(); 
 | 
                        m_agentNode =  SetAgentNode (anode,s); 
 | 
                    } 
 | 
                } 
 | 
                return 1; 
 | 
            } 
 | 
  
 | 
            //½¹µã¼¤»î´¦Àíº¯Êý 
 | 
            int OnSetFocus(TEvent* evt, LPARAM param) 
 | 
            { 
 | 
                //ÖØÖù¤¾ßÌõ 
 | 
                SetAgent(); 
 | 
                return 1; 
 | 
            } 
 | 
  
 | 
            int OnSave() 
 | 
            { 
 | 
                xml x ; 
 | 
                 
 | 
                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 ; 
 | 
                arg.AddArg(L"content",x0.xml()); 
 | 
                trace(x0.xml()); 
 | 
                if(xurl::get(L"/sale/data/expense3/update/ExchangeRate", arg.GetString(),x)!=1) 
 | 
                { 
 | 
                    xstring error = x.text(); 
 | 
                    alert(L"err:"+error); 
 | 
                    return 1; 
 | 
                } 
 | 
                xstring str = x.documentElement().getAttribute(L"text"); 
 | 
                if(str == L"true") 
 | 
                { 
 | 
                    dw_list.ResetUpdateStatus();             
 | 
                    alert(L"±£´æ³É¹¦!");  
 | 
                }else  
 | 
                { 
 | 
                    alert(L"±£´æÊ§°Ü!"); 
 | 
                } 
 | 
                return 1; 
 | 
            } 
 | 
                 
 | 
                     
 | 
            //ÃüÁî·¢²¼º¯Êý 
 | 
            int OnCmdDispatch(xstring comdid) 
 | 
            { 
 | 
                if(comdid==L"xmAddRow") 
 | 
                { 
 | 
                    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,L"CreatorID",suserid); 
 | 
                    dw_list.SetItemDisplayString(row+1,L"CreatorID",susername); 
 | 
                    dw_list.SetItemString(row+1,L"CreateDate",sdate); 
 | 
                    return 1; 
 | 
                } 
 | 
                else if(comdid==L"xmDeleteRow") 
 | 
                { 
 | 
                    dw_list.DeleteRow(0); 
 | 
                    return 1; 
 | 
                } 
 | 
                else if (comdid == L"xmSave") 
 | 
                { 
 | 
                    OnSave(); 
 | 
                } 
 | 
                else if (comdid == L"xmRefresh") 
 | 
                { 
 | 
                    OnRetrieve(); 
 | 
                } 
 | 
                else if(comdid ==L"ToUpdate") 
 | 
                { 
 | 
                    ToUpdate(); 
 | 
                } 
 | 
                 
 | 
                return 0; 
 | 
            } 
 | 
                 
 | 
             
 | 
            int ToUpdate() 
 | 
            { 
 | 
                xstring Months = dw_list.GetItemString(dw_list.GetRow(),L"Months"); 
 | 
                int MB_OKCANCEL = 1; 
 | 
                int IDOK  = 1; 
 | 
                int ret = MessageBox(GetHWND(),L"È·ÈϸüÐÂ"+Months+L"Ó¯¿÷»ãÂÊ?",L"Ìáʾ",MB_OKCANCEL); 
 | 
                if(ret == IDOK) 
 | 
                { 
 | 
                    xml x = ViewObject::RetrieveData(L"/sale/data/Expense3/ExchangeRateUpdateEx",L"Months",Months); 
 | 
                    xstring status = x.xml(); 
 | 
                    if(status.find(L"ok") == 1) 
 | 
                    { 
 | 
                        alert(L"¸üгɹ¦"); 
 | 
                    }else 
 | 
                    { 
 | 
                        alert(L"¸üÐÂʧ°Ü"); 
 | 
                    } 
 | 
                } 
 | 
                return 1; 
 | 
            } 
 | 
             
 | 
            //´¥·¢Êó±êÀ뿪ºótranʼþ£¬Í¨¹ý²éÕÒij¸ö²ÎÊýµÃµ½¶ÔÓ¦µÄÁР            
 | 
            int OnBaseItemChanged(TEvent* evt, int p) 
 | 
            { 
 | 
                DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; 
 | 
                xstring colname=hdr.colname; 
 | 
                xstring value = hdr.data; 
 | 
                 
 | 
                xstring dwname = L"dw_list"; 
 | 
                if(value != L"") 
 | 
                { 
 | 
                    KXMLDOMNodeList nlist = GetElement().selectNodes(L"//*[@name='"+dwname+L"']/trans[@for='"+colname+L"']"); 
 | 
                    ViewObject::TransData(nlist, dw_list, hdr.row, colname, value); 
 | 
                } 
 | 
  
 | 
                return 1; 
 | 
            } 
 | 
                 
 | 
             
 | 
            //ÃüÁî´¦Àíʼþ 
 | 
                int OnXCommand(TEvent* evt, LPARAM param) 
 | 
                { 
 | 
                    return OnCmdDispatch(evt->xcommand.pStrID); 
 | 
                } 
 | 
             
 | 
            int OnAttachEvent() 
 | 
            { 
 | 
                //°ó¶¨¹¤¾ßÌõµã»÷ʼþ 
 | 
                AttachEvent(L"WM_XCOMMAND", (FEvent)&ExchangeRateWin::OnXCommand); 
 | 
                //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ 
 | 
                AttachEvent(L"WM_SETFOCUS", (FEvent)&ExchangeRateWin::OnSetFocus); 
 | 
                AttachEvent(L"dw_list",L"DWV_ITEMCHANGED", (FEvent)&ExchangeRateWin::OnBaseItemChanged); 
 | 
                return 1; 
 | 
            } 
 | 
             
 | 
             
 | 
            int  OnRetrieve() 
 | 
            { 
 | 
                xml x ; 
 | 
                 
 | 
                xaserverarg arg; 
 | 
                 
 | 
                arg.AddArg(L"QueryTxt",xcontrol(GetControl(L"search")).GetText()); 
 | 
                 
 | 
                 
 | 
                if (getUrl(L"/sale/data/Expense3/ExchangeRateList",arg.GetString(),x)!=1) 
 | 
                { 
 | 
                    trace(x.text()); 
 | 
                    return -1; 
 | 
                }else     
 | 
                { 
 | 
                    dw_list.Retrieve(x); 
 | 
                    dw_list.Redraw(); 
 | 
                } 
 | 
                return 1; 
 | 
            } 
 | 
         
 | 
            int onload() 
 | 
            { 
 | 
                dw_list = GetControl(L"dw_list"); 
 | 
                dw_list.openUrl(L"/sale/view/Expense3/ExchangeRate"); 
 | 
                 
 | 
                 
 | 
                OnRetrieve(); 
 | 
             
 | 
                OnAttachEvent();     
 | 
                 
 | 
                return 1; 
 | 
            } 
 | 
             
 | 
            int onloaded() 
 | 
            { 
 | 
                SetAgent(); 
 | 
                return 1; 
 | 
            }         
 | 
        }; 
 |