#include <wobject/xstring.hpp> 
 | 
#include <xcontrol/xtreeview.hpp> 
 | 
#include <xcontrol/xdwgrid.hpp> 
 | 
  
 | 
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" 
 | 
#include "viewobject/view.base.hpp" 
 | 
  
 | 
using xml = KXMLDOMDocument; 
 | 
    class __declspec(dllexport) ExchangeInputView : public xframe 
 | 
    { 
 | 
    public: 
 | 
        xdwgrid    dw_list; 
 | 
        xdwgrid    dw_signed; 
 | 
        xdwgrid    dw_unexch; 
 | 
        xdwgrid    dw_exch; 
 | 
        xdwgrid    dw_adjust; 
 | 
        xdwtable dw_arg; 
 | 
        xnode    m_agentNode;    //Agent Condition 
 | 
        xstring    tabname; 
 | 
        xstring    tabagent; 
 | 
        HWND hSignWin; 
 | 
  
 | 
        ///sale/data/AR/list 
 | 
    public: 
 | 
        ExchangeInputView(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} 
 | 
    public: 
 | 
        static ExchangeInputView* CreateInstance(void* implPtr, void* hWnd) 
 | 
        { 
 | 
            ExchangeInputView* pWin = new ExchangeInputView(implPtr, (HWND)hWnd); 
 | 
            return pWin; 
 | 
        } 
 | 
        int SetAgent() 
 | 
        { 
 | 
            xstring xfNodeAgentArea = L"agentarea"; 
 | 
            xnode anode = GetAgentNode(xfNodeAgentArea); 
 | 
            if (tabagent == tabname && m_agentNode) 
 | 
            { 
 | 
                SetAgentNode(anode, m_agentNode); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                tabagent = tabname; 
 | 
                KXMLDOMElement xframeElement = GetElement(); 
 | 
                KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[@id='" + tabname + L"']/*"); 
 | 
                if (agent) 
 | 
                { 
 | 
                    xstring s = agent.xml(); 
 | 
                    m_agentNode = SetAgentNode(anode, s); 
 | 
                } 
 | 
            } 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnSaveEx() 
 | 
        { 
 | 
            xml x; 
 | 
             
 | 
            dw_adjust.AcceptText(); 
 | 
            dw_adjust.DwUpdateAllToEx(x); 
 | 
            xaserverarg arg ; 
 | 
             
 | 
            arg.AddArg(L"content", x.xml()); 
 | 
  
 | 
            //alert(x.xml()); 
 | 
            if (xurl::get(L"/sale/data/AR/update/item", 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_adjust.ResetUpdateStatus(); 
 | 
                alert(L"±£´æ³É¹¦!"); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                alert(L"±£´æÊ§°Ü!"); 
 | 
            } 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnSave() 
 | 
        { 
 | 
            xml x; 
 | 
             
 | 
            dw_list.AcceptText(); 
 | 
            dw_list.DwUpdateAllToEx(x); 
 | 
            xaserverarg arg ; 
 | 
             
 | 
            arg.AddArg(L"content", x.xml()); 
 | 
  
 | 
            //trace(x.xml()); 
 | 
            if (xurl::get(L"/sale/data/AR/update", 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 OnSetFocus(TEvent* evt, LPARAM param) 
 | 
        { 
 | 
            //ÖØÖù¤¾ßÌõ 
 | 
            SetAgent(); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnDeleteRow() 
 | 
        { 
 | 
            dw_list.DeleteRow(0); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnInsertRow() 
 | 
        { 
 | 
            int row = dw_list.InsertRow(0); 
 | 
            xstring sdate = publiccode::GetCurrentDate(); 
 | 
            dw_list.SetItemString(row, L"CreateDate", sdate); 
 | 
            dw_list.SetItemString(row, L"SEDate", sdate); 
 | 
            dw_list.SetItemString(row, L"CurrencyCode", L"USD"); 
 | 
            xstring suserid = publiccode::GetUser().id; 
 | 
            xstring susername = publiccode::GetUser().name; 
 | 
            dw_list.SetItemString(row, L"CreatorID", suserid); 
 | 
            dw_list.SetItemDisplayString(row, L"CreatorID", susername); 
 | 
  
 | 
            if (row > 1) 
 | 
            { 
 | 
                xstring exchrate = dw_list.GetItemString(row - 1, L"ExchRate"); 
 | 
                if (exchrate != L"") dw_list.SetItemString(row, L"ExchRate", exchrate); 
 | 
            } 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnSign() 
 | 
        { 
 | 
            OpenWindow(L"dev:xpage[ExchangeSignFast.vx]", (WPARAM) & dw_list); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnCustomerEx() 
 | 
        { 
 | 
            xml xc; 
 | 
             
 | 
            if (getUrl(L"/sale/data/AR/tran/customer", L"", xc) != 1) 
 | 
            { 
 | 
                trace(xc.text()); 
 | 
                return -1; 
 | 
            } 
 | 
            KXMLDOMDocument xdoc = xc; 
 | 
            if (xdoc) 
 | 
            { 
 | 
                for (int row = 1; row <= dw_list.GetRowCount(); ++row) 
 | 
                { 
 | 
                    xstring    val = dw_list.GetItemString(row, L"Customer"); 
 | 
                    KXMLDOMNode n1 = xdoc.selectSingleNode(L"/data/Item[contains(\"" + val + L"\",RawColumn)]"); 
 | 
                    if (n1) 
 | 
                    { 
 | 
                        dw_list.SetItemString(row, L"CustomerID", n1.selectSingleNode(L"DataColumn").text()); 
 | 
                        dw_list.SetItemDisplayString(row, L"CustomerID", n1.selectSingleNode(L"DataColumn/@_displaystring").text()); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
            dw_list.Redraw(); 
 | 
            OnSave(); 
 | 
            //alert(L"ÖØ¶ÔÓ¦Íê³É!"); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnImprt() 
 | 
        { 
 | 
            xaserverarg args ; 
 | 
             
 | 
            args.AddArg(L"src", L"data/SettleExchange"); 
 | 
            args.AddArg(L"process", L"data"); 
 | 
            OpenWindow(L"dev:xpage[trade.document.selectdlg.vx]",args); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnSaveAs() 
 | 
        { 
 | 
            if (tabname == L"sign") return dw_list.SaveAs(L""); 
 | 
            if (tabname == L"signed") return dw_signed.SaveAs(L""); 
 | 
            if (tabname == L"exch") return dw_exch.SaveAs(L""); 
 | 
            if (tabname == L"unexch") return dw_unexch.SaveAs(L""); 
 | 
            if (tabname == L"adjust") return dw_adjust.SaveAs(L""); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int RetrieveData() 
 | 
        { 
 | 
            if (tabname == L"sign") return OnRetrieve(L"/sale/data/AR/list", dw_list); 
 | 
            if (tabname == L"signed") return OnRetrieve(L"/sale/data/AR/listFinish", dw_signed); 
 | 
            if (tabname == L"exch") return OnRetrieve(L"/sale/data/AR/gdn/exch/list", dw_exch); 
 | 
            if (tabname == L"unexch") return OnRetrieve(L"/sale/data/AR/gdn/noexch/list", dw_unexch); 
 | 
            if (tabname == L"adjust") return OnRetrieve(L"/sale/data/AR/Adjust", dw_adjust); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        //ÃüÁî·¢²¼º¯Êý 
 | 
        int OnCmdDispatch(xstring comdid) 
 | 
        { 
 | 
            if (comdid == L"xmAddRow") 
 | 
            { 
 | 
                return OnInsertRow(); 
 | 
            } 
 | 
            else if (comdid == L"xmImportRow") 
 | 
            { 
 | 
                return OnImprt(); 
 | 
            } 
 | 
            else if (comdid == L"xmCustomerEx") 
 | 
            { 
 | 
                return OnCustomerEx(); 
 | 
            } 
 | 
            else if (comdid == L"xmDeleteRow") 
 | 
            { 
 | 
                return OnDeleteRow(); 
 | 
            } 
 | 
            else if (comdid == L"xmSaveAs") 
 | 
                return OnSaveAs(); 
 | 
  
 | 
            else if (comdid == L"xmDelete") 
 | 
            { 
 | 
                int MB_OKCANCEL = 1; 
 | 
                int IDOK = 1; 
 | 
                int ret = MessageBox(GetHWND(), L"È·ÈÏÊÇ·ñɾ³ý?", L"Ìáʾ", MB_OKCANCEL); 
 | 
                if (ret == IDOK) 
 | 
                { 
 | 
                    ViewObject::RetrieveData(L"/sale/data/expense3/delete/SettlementExchange", L"EntityID", dw_list.GetGuid(dw_list.GetRow())); 
 | 
                    OnRetrieve(L"/sale/data/AR/list", dw_list); 
 | 
                } 
 | 
            } 
 | 
            else if (comdid == L"xmDeleteRowEx") 
 | 
            { 
 | 
                /*int len = dw_adjust.GetRowCount(); 
 | 
                for(int i = 0; i< len ; i++) 
 | 
                { 
 | 
                    dw_adjust.DeleteRow(0); 
 | 
                } 
 | 
                alert(L"end");*/ 
 | 
                dw_adjust.DeleteRow(0); 
 | 
                return 1; 
 | 
            } 
 | 
            else if (comdid == L"xmAddRowEx") 
 | 
            { 
 | 
                /*int row = dw_signed.GetRowCount(); 
 | 
                for(int i = 1;i < dw_signed.GetRowCount();i++) 
 | 
                { 
 | 
                    double BalanceAmt=dw_signed.GetItemDouble(i,L"BalanceAmt"); 
 | 
                    double DraftAmount=dw_signed.GetItemDouble(i,L"DraftAmount"); 
 | 
                    xstring Remark = dw_signed.GetItemString(i,L"Remark"); 
 | 
                    if(BalanceAmt != 0.00) 
 | 
                    { 
 | 
                        int row1 = dw_adjust.InsertRow(0); 
 | 
                        xstring InvoiceNo = dw_signed.GetItemString(i,L"InvoiceNo"); 
 | 
                        dw_adjust.SetItemString(row1,L"InvoiceNo",InvoiceNo); 
 | 
                        dw_adjust.SetItemDouble(row1,L"Amount",BalanceAmt); 
 | 
                        dw_adjust.SetItemDouble(row1,L"Ó¦½á»ãÃÀÔª½ð¶î",DraftAmount); 
 | 
                        dw_adjust.SetItemDouble(row1,L"Ó¦ÊÕ»ã½ð¶î",DraftAmount); 
 | 
                        dw_adjust.SetItemString(row1,L"Note",Remark); 
 | 
                    } 
 | 
                } 
 | 
                alert(L"end");*/ 
 | 
                dw_adjust.InsertRow(1); 
 | 
                return 1; 
 | 
            } 
 | 
            else if (comdid == L"xmClient") 
 | 
            { 
 | 
                OpenWindow(L"dev:xpage[CustomerTran.AR.vx]"); 
 | 
                return 1; 
 | 
            } 
 | 
            else if (comdid == L"xmExchangeFile") 
 | 
            { 
 | 
                //if(iswindow(hSignWin) & 0x1) return 1; 
 | 
                xwin* xw = OpenWindow(L"dev:xpage[ExchageFile.vx]", 0); 
 | 
                hSignWin = xw->GetHWND(); 
 | 
                return 1; 
 | 
            } 
 | 
            else if (comdid == L"xmRefresh") 
 | 
            { 
 | 
  
 | 
                return  RetrieveData(); 
 | 
            } 
 | 
            else if (comdid == L"xmSave") 
 | 
            { 
 | 
                return OnSave(); 
 | 
            } 
 | 
            else if (comdid == L"xmSaveEx") 
 | 
            { 
 | 
                return OnSaveEx(); 
 | 
            } 
 | 
            else if (comdid == L"xmSign") 
 | 
            { 
 | 
                return OnSign(); 
 | 
            } 
 | 
            else if (comdid.find(L"xmSignEx") >= 0) 
 | 
            { 
 | 
                xstring id = comdid.mid(comdid.find(L":") + 1, 9999); 
 | 
                trace(L"----\r\n" + id); 
 | 
                int frow = 0; 
 | 
                for (frow = 1; frow <= dw_list.GetRowCount(); frow++) 
 | 
                { 
 | 
                    if (frow == 1) 
 | 
                        trace(L"----\r\n" + dw_list.GetGuid(frow)); 
 | 
                    if (id == dw_list.GetGuid(frow)) break; 
 | 
                } 
 | 
                if (frow > dw_list.GetRowCount()) return 1; 
 | 
                dw_list.SetRow(frow); 
 | 
                OpenWindow(L"dev:xpage[ExchangeSignFast.vx]", (WPARAM)&dw_list); 
 | 
                return 1; 
 | 
            } 
 | 
            else if (comdid == L"xmAdd") 
 | 
            { 
 | 
                xaserverarg arg ; 
 | 
                 
 | 
                arg.SetParam(L"HWND", GetHWND()); 
 | 
                 
 | 
                OpenWindow(L"dev:xpage[maint.SettlementExchange.vx]", arg); 
 | 
            } 
 | 
            else if (comdid == L"xmEdit") 
 | 
            { 
 | 
                xaserverarg arg1 ; 
 | 
                 
 | 
                arg1.SetParam(L"HWND", GetHWND()); 
 | 
                arg1.AddArg(L"SettlementExchangeID", dw_list.GetGuid(dw_list.GetRow())); 
 | 
             
 | 
                OpenWindow(L"dev:xpage[maint.SettlementExchange.vx]", arg1); 
 | 
            } 
 | 
            else if (comdid == L"Deduction") 
 | 
            { 
 | 
                int row = dw_adjust.GetRow(); 
 | 
                if (row < 1) 
 | 
                    return 1; 
 | 
                xstring  InvoiceNoExs = dw_adjust.GetItemString(row, L"InvoiceNo"); 
 | 
                if (InvoiceNoExs != L"") 
 | 
                { 
 | 
                    xaserverarg argEx ; 
 | 
                     
 | 
                    argEx.AddArg(L"EntityID", dw_adjust.GetGuid(row)); 
 | 
                    argEx.AddArg(L"InvoiceNo", InvoiceNoExs); 
 | 
                    trace(dw_adjust.GetGuid(row) + InvoiceNoExs); 
 | 
                    OpenWindow(L"dev:xpage[Deduction.vx]", argEx); 
 | 
                    return 1; 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    alert(L"ÍâÔ˱àºÅΪ¿Õ£¬ÎÞ·¨·ÖÅ䣡"); 
 | 
                    return 1; 
 | 
                } 
 | 
            } 
 | 
  
 | 
            return 0; 
 | 
        } 
 | 
  
 | 
  
 | 
        int OnCombboChanged(TEvent* evt, int lParam) 
 | 
        { 
 | 
            xstring id = L""; 
 | 
            xstring name = L""; 
 | 
            int h = xcombobox::GetCurSel(evt->command.hCtrl); 
 | 
            if (h > -1) 
 | 
            { 
 | 
                tabname = (string)xcombobox::GetItemData(evt->command.hCtrl, h); 
 | 
                SwitchLayer(L"sheet" + xstring(h + 1), L"frame"); 
 | 
                RetrieveData(); 
 | 
                SetAgent(); 
 | 
            } 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        //ÃüÁî´¦Àíʼþ 
 | 
        int OnXCommand(TEvent* evt, LPARAM param) 
 | 
        { 
 | 
            return OnCmdDispatch(evt->xcommand.pStrID); 
 | 
        } 
 | 
  
 | 
        int OnBaseItemChanged(TEvent* evt, LPARAM p) 
 | 
        { 
 | 
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; 
 | 
            xstring colname = hdr.colname; 
 | 
            xstring value = hdr.data; 
 | 
  
 | 
            xstring dwname = L"dw_adjust"; 
 | 
            if (value != L"") 
 | 
            { 
 | 
                KXMLDOMNodeList nlist = GetElement().selectNodes(L"//*[@name='" + dwname + L"']/trans[@for='" + colname + L"']"); 
 | 
                ViewObject::TransData(nlist, dw_adjust, hdr.row, colname, value); 
 | 
            } 
 | 
  
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
  
 | 
        int OnDoubleClicked(TEvent* evt, LPARAM p) 
 | 
        { 
 | 
            return OnCmdDispatch(L"xmEdit"); 
 | 
        } 
 | 
  
 | 
  
 | 
        int OnAttachEvent() 
 | 
        { 
 | 
            //°ó¶¨¹¤¾ßÌõµã»÷ʼþ 
 | 
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ExchangeInputView::OnXCommand); 
 | 
            //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ 
 | 
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ExchangeInputView::OnSetFocus); 
 | 
            AttachEvent(L"cbx_type", L"CBN_SELCHANGE", (FEvent)&ExchangeInputView::OnCombboChanged);//ÊôÐÔ×éÇл»listÖÐÁеÄÊýÁ¿±ä»¯ 
 | 
            AttachEvent(L"dw_adjust", L"DWV_ITEMCHANGED", (FEvent)&ExchangeInputView::OnBaseItemChanged); 
 | 
            AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&ExchangeInputView::OnDoubleClicked);//ÐÐË«»÷ 
 | 
            return 1; 
 | 
  
 | 
        } 
 | 
  
 | 
        xstring GetQueryArg() 
 | 
        { 
 | 
            dw_arg.AcceptText(); 
 | 
            xml x; 
 | 
             
 | 
            dw_arg.DwUpdateAllTo(x); 
 | 
            trace(x.text()); 
 | 
            return x.xml(); 
 | 
        } 
 | 
  
 | 
        int  OnRetrieve(xstring dataUrl, xdwgrid dw_obj) 
 | 
        { 
 | 
            HCURSOR  hCursor = xutil::SetCursorWait(); 
 | 
            xml x; 
 | 
             
 | 
            xaserverarg arg ; 
 | 
            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) 
 | 
            { 
 | 
                trace(x.text()); 
 | 
                xutil::RestoreCursor(hCursor); 
 | 
                return -1; 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                //trace(x.xml()); 
 | 
                dw_obj.Retrieve(x); 
 | 
                dw_obj.Redraw(); 
 | 
            } 
 | 
            //dw_obj.SetReadOnly(false); 
 | 
            dw_obj.SetSelectionMode(1); 
 | 
            xutil::RestoreCursor(hCursor); 
 | 
  
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int onload() 
 | 
        { 
 | 
            dw_list = GetControl(L"dw_list"); 
 | 
            dw_list.openUrl(L"/sale/view/AR/template/list"); 
 | 
  
 | 
            dw_signed = GetControl(L"dw_signed"); 
 | 
            dw_signed.openUrl(L"/sale/view/AR/template/listFinish"); 
 | 
            dw_exch = GetControl(L"dw_exch"); 
 | 
            dw_exch.openUrl(L"/sale/view/AR/template/unexch"); 
 | 
            dw_unexch = GetControl(L"dw_unexch"); 
 | 
            dw_unexch.openUrl(L"/sale/view/AR/template/unexch"); 
 | 
            dw_adjust = GetControl(L"dw_adjust"); 
 | 
            dw_adjust.openUrl(L"/sale/view/AR/template/adjust"); 
 | 
  
 | 
            dw_unexch.SetColumnState(L"SEItemID", false); 
 | 
            dw_unexch.SetColumnState(L"SEID", false); 
 | 
            dw_exch.SetColumnState(L"SEItemID", false); 
 | 
            dw_exch.SetColumnState(L"SEID", false); 
 | 
            dw_exch.SetColumnState(L"BankDeduction", false); 
 | 
            dw_exch.SetColumnState(L"ʵÊÕ»ã½ð¶î", false); 
 | 
  
 | 
            dw_arg = GetControl(L"dw_arg"); 
 | 
            dw_arg.openUrl(L"/sale/view/AR/template/queryarg"); 
 | 
            dw_arg.SetColHeaderHeight(0); 
 | 
            dw_arg.SetRowSelectorWidth(0); 
 | 
            dw_arg.SetHScrollState(false); 
 | 
            dw_arg.SetVScrollState(false); 
 | 
  
 | 
            tabname = L"sign"; 
 | 
            tabagent = L""; 
 | 
  
 | 
            OnAttachEvent(); 
 | 
            hSignWin = 0; 
 | 
            RetrieveData(); 
 | 
  
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int onloaded() 
 | 
        { 
 | 
            SetAgent(); 
 | 
            return 1; 
 | 
        } 
 | 
    }; 
 |