ÿþ#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) ListAPEx : public xframe { public: xstring apType; xdwgrid dw_list; xdwtable dw_arg; xnode m_agentNode; //Agent Condition public: ListAPEx(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static ListAPEx* CreateInstance(void* implPtr, void* hWnd) { ListAPEx* pWin = new ListAPEx(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; } //&q¹pÀo;mYtýQpe int OnSetFocus(TEvent* evt, LPARAM param) { //͑nå]wQag SetAgent(); return 1; } xstring GetPayType() { xcombobox cbx_type = GetControl(L"cbx_type"); int h = xcombobox::GetCurSel(cbx_type.GetHWND()); if(h<0) return L""; return xcombobox::GetLBText(cbx_type.GetHWND(),h); } int OnBank() { xaserverarg arg ; OpenWindow(L"dev:xpage[APBank.vx]",arg); if(arg.GetArgString(L"result")==L"ok") { int ll_row = dw_list.GetNextSelectRow(1); dw_list.AcceptText(); while(ll_row > 0 && ll_row <= dw_list.GetRowCount()) { dw_list.SetItemString(ll_row,L"PayedTerm",arg.GetArgString(L"PayedTerm")); dw_list.SetItemString(ll_row,L"PayedBank",arg.GetArgString(L"PayedBank")); dw_list.SetItemString(ll_row,L"PayedBankNo",arg.GetArgString(L"PayedBankNo")); ll_row = dw_list.GetNextSelectRow(ll_row + 1); } dw_list.Redraw(); return 1; } else return 1; } //}TäNÑS^ýQpe int OnCmdDispatch(xstring comdid) { if(comdid==L"xmBank") return OnBank(); if(comdid==L"xmSave") return OnSave(); if(comdid==L"xmRefresh" || comdid==L"xmSearch") { return OnRetrieveEx(apType); } if(comdid==L"xmAddRow") { xaserverarg arg1; xstring payType = GetPayType(); if(payType==L"ЏBg9" or payType == L"KmՋ9") arg1.AddArg(L"payType", payType); OpenWindow(L"dev:xpage[maint.expense.ap.vx]",arg1); return 1; } if(comdid==L"xmModifyRow") { xaserverarg arg; int row = dw_list.GetRow(); if(row < 1) return 1; KXMLDOMElement ele = dw_list.GetRowElement(row); xstring APID = ele.selectSingleNode(L"APID").text(); arg.AddArg(L"APID", APID); OpenWindow(L"dev:xpage[maint.expense.ap.vx]", arg); return 1; } if (comdid == L"xmPrint") { return OnPrint(); } return 0; } int OnPrint() { xstring APID = dw_list.GetItemString(dw_list.GetRow(), L"APID"); xaserverarg arg ; arg.AddArg(L"EntityName", L"AP"); arg.AddArg(L"EntityID", APID, L""); arg.AddArg(L"EntityNo", L"", L""); openUrl(L"/sale/view/view.base/xpage/Template/PrintViewEx", arg); return 1; } int OnDoubleClicked(TEvent* evt, LPARAM p) { return OnCmdDispatch(L"xmModifyRow"); } int OnCombboChanged(TEvent* evt, LPARAM lParam) { xstring id = L""; xstring name = L""; int h = xcombobox::GetCurSel(evt->command.hCtrl); if(h > -1) { xstring txt = (string)xcombobox::GetLBText(evt->command.hCtrl, h); apType =L"---"; if(txt==L"ЏBg9") { dw_list.openUrl(L"/sale/view/AP/template/AP/Expense/List"); apType=L"003"; } if(txt==L"KmՋ9") { dw_list.openUrl(L"/sale/view/AP/template/AP/Expense/List"); apType=L"021"; } OnRetrieveEx(apType); } return 1; } //}TäNYt‹NöN int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //Ñ~š[å]wQag¹pûQ‹NöN AttachEvent(L"WM_XCOMMAND", (FEvent)&ListAPEx::OnXCommand); //·ƒÖS&q¹p‹NöN ÿ(uŽN͑nå]wQag AttachEvent(L"WM_SETFOCUS", (FEvent)&ListAPEx::OnSetFocus); AttachEvent(L"cbx_type",L"CBN_SELCHANGE", (FEvent)&ListAPEx::OnCombboChanged);//^\'`Ä~Rbclist-NR„vpeϑØSS AttachEvent(L"dw_list",L"DWV_DOUBLECLICKED", (FEvent)&ListAPEx::OnDoubleClicked);//LˆÌSûQ return 1; } int OnSave() { xml x ; dw_list.DwUpdateAllToEx(x); xml x1 ; x1.loadXML(L"<data/>"); dw_list.DwUpdateAllToEx(x); KXMLDOMNodeList t = x.selectNodes(L"data/Item[@update.modify]"); KXMLDOMElement e1= x1.documentElement(); int len = t.length(); for(int i=0;i<len;i++) { e1.appendChild(t.item(i)); } //t.Release(); e1.Release(); //trace(x1.xml()); //return 1; xaserverarg arg ; arg.AddArg(L"content",x1.xml()); if(xurl::get(L"/sale/data/AP/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"ÝOX[bŸR!"); }else { alert(L"ÝOX[1Y%!"); } return 1; } xstring GetQueryArg() { dw_arg.AcceptText(); xml x ; dw_arg.DwUpdateAllTo(x); return x.xml(); } int OnRetrieveEx(xstring APType) { xml x ; xaserverarg arg ; arg.AddArg(L"QueryTxt",xcontrol(GetControl(L"sle_search")).GetText()); arg.AddArg(L"APType",APType); arg.AddArg(L"QueryArg",GetQueryArg()); arg.AddArg(L"DatePicker",L"APDate"); if (getUrl(L"/sale/data/AP/list",arg.GetString(),x)!=1) { trace(x.text()); return -1; }else { dw_list.Retrieve(x); dw_list.Redraw(); dw_list.SetReadOnly(true); dw_list.SetSelectionMode(1); } return 1; } int onload() { dw_list = GetControl(L"dw_list"); dw_list.openUrl(L"/sale/view/AP/template/AP/Expense/List"); 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); OnAttachEvent(); apType =L"003"; OnRetrieveEx(apType); return 1; } int onloaded() { SetAgent(); return 1; } };