þÿ#include <wobject/xstring.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xdwgrid.hpp> #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" #include "vbusiness/vframe/frame.vframe.vbusiness.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) POmaintbaseWin : public xframe { public: xdwtable dw_base; xdwgrid dw_list; xnode m_agentNode; //Agent Condition public: POmaintbaseWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static POmaintbaseWin* CreateInstance(void* implPtr, void* hWnd) { POmaintbaseWin* pWin = new POmaintbaseWin(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Àm;YtQýep int OnSetFocus(TEvent* evt, int param) { //‘Ín]åQwga //SetAgent(); return 1; } int onOk() { xml x ; //x.LoadXml(vc.GetContent()); dw_base.AcceptText(); dw_base.DwUpdateAllTo(x); KXMLDOMElement ele = x.documentElement(); dw_list.DwUpdateAllToEx(x); KXMLDOMElement e = x.documentElement(); ele.appendChild(e.selectSingleNode(L"POItem")); //alert(ele.xml); //alert(e.xml); xstring val = ele.xml(); //trace(val); xaserverarg arg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg(L"content", val); //trace(L"/sale/data/"+PurchaseOrderView::GetEntityName(1)+L"/update/item"); //trace(x.GetXml()); if (xurl::get(L"/sale/data/PurchaseOrder/update", arg.GetString(), x) != 1) { xstring error = x.text(); alert(error); return 1; } xstring str = x.documentElement().getAttribute(L"text"); if (str == L"true") { dw_base.ResetUpdateStatus(); dw_list.ResetUpdateStatus(); alert(L"OÝ[XbRŸ!"); } else { alert(L"OÝ[XY1%!"); } return 1; } //T}NäSÑ^Qýep int OnCmdDispatch(xstring comdid) { if (comdid == L"xmOk") { onOk(); } else if (comdid == L"xmClose") { CloseWindow(); } else if (comdid == L"xmPrint") { xaserverarg& arg = *new xaserverarg; arg.AddArg(L"EntityName", L"PurchaseOrder"); trace(dw_base.GetItemString(1, L"@guid")); arg.AddArg(L"EntityID", dw_base.GetItemString(1, L"@guid")); arg.AddArg(L"EntityNo", dw_base.GetItemString(1, L"PONo")); openUrl(L"/sale/view/view.base/xpage/Template/PrintViewEx", &arg); return 1; } return 0; } //T}NäYtN‹Nö int OnXCommand(TEvent* evt, LPARAM p) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnItemChanged(TEvent* evt, int p) { DWNMHDR& dwhdr = *(DWNMHDR*)evt->notify.pnmh; int row = dwhdr.row; xstring col = dwhdr.colname; xstring data = dwhdr.data; if (col == L"Quantity") { dw_list.AcceptText(); xml x ; dw_list.DwUpdateAllToEx(x); KXMLDOMElement ele = x.documentElement(); KXMLDOMElement e = ele.selectSingleNode(L"POItem/item[" +xstring(row) + L"]");//dw_list.GetRowElement(row); if (e.selectSingleNode(L"POLine/item[1]")) { KXMLDOMElement e1 = e.selectSingleNode(L"POLine/item[1]"); if (e1) { e1.setAttribute(L"update.modify", L"1"); KXMLDOMElement e2 = e1.selectSingleNode(L"Quantity"); if (e2) { e2.setAttribute(L"update.origin", e2.text()); e2.setAttribute(L"update.modify", L"1"); e2.text = data; } //alert(e.xml); //KXMLDOMElement oldele = ele.selectSingleNode(L"POItem/item["+row.toString()+L"]"); //alert(oldele.xml); //ele.replaceChild(e,oldele); //alert(ele.xml); x.loadXML(ele.xml()); dw_list.Retrieve(x); dw_list.Redraw(); trace(L"ccc"); } } } return 1; } int OnItemClick(TEvent* evt, int p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; xstring value = hdr.data; xstring sCol = hdr.colname; int row = hdr.row; if (sCol == L"Quantity") { row = dw_list.GetRow(); if (row < 1) return 1; KXMLDOMElement ele = dw_list.GetRowElement(row); KXMLDOMNodeList nlist = ele.selectNodes(L"POLine/item"); if (nlist.length() > 1 || value == L"ep‘Ï") { xaserverarg arg; arg.AddArg(L"row", xstring(row)); arg.AddArg(L"dw_item", dw_list.ptr_native_.toString()); OpenWindow(L"dev:xpage[PO.maint.item.line.vx]", arg); } /*xstring ret = arg.GetArgString(L"return"); if (ret==L"ok") { vcontrol vc1; vc1.xdoc.ptr_native_ = arg.GetArgInt(L"vc1"); alert(vc1.GetContent()); } else alert(arg.GetString());*/ /*xstring path = L"POItem/item"; vc.xdoc.SetXPath(path); KXMLDOMElement ele = vc.xdoc.GetRowElement(row); //alert(ele.xml); KXMLDOMNodeList nlist = ele.selectNodes(L"POLine/item"); int nlen = nlist.length; if (nlen >0) { xstring sguid = ele.SelectSingleNode(L"@guid").text; xstring scontent; if (ele.SelectSingleNode(L"POLine")) scontent = ele.SelectSingleNode(L"POLine").xml();//vc.GetContent() else scontent = L"<POLine/>"; arg.AddArg(L"EntityID",sguid); arg.AddArg(L"content",scontent); int pArg = arg.getNativePointer(); OpenWindow(L"dev:xpage[line2.item.maint.po.vx]",pArg); //trust(arg as int) } else { }*/ } return 1; } int OnDWClick(TEvent* evt, int p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; xstring value = hdr.data; xstring colname = hdr.colname; if (colname == L"PaymentTermDesc") { xaserverarg arg; OpenWindow(L"dev:xpage[paymentmethod.vx]", arg); xstring str = arg.GetArgString(L"Paymentmethod"); if (str != L"") { dw_base.SetItemString(1, L"PaymentTermDesc", str); dw_base.Redraw(); } return 1; } } int OnAttachEvent() { //~Ñ[š]åQwgap¹QûN‹Nö AttachEvent(L"WM_XCOMMAND", (FEvent)&POmaintbaseWin::OnXCommand); //ƒ·SÖq&p¹N‹Nöÿ u(NŽ‘Ín]åQwga AttachEvent(L"WM_SETFOCUS", (FEvent)&POmaintbaseWin::OnSetFocus); AttachEvent(L"dw_list", L"DWV_CLICKED", (FEvent)&POmaintbaseWin::OnItemClick); AttachEvent(L"dw_list", L"DWV_ITEMCHANGED", (FEvent)&POmaintbaseWin::OnItemChanged); AttachEvent(L"dw_base", L"DWV_CLICKED", (FEvent)&POmaintbaseWin::OnDWClick); return 1; } int OnRetrieve() { xml x ; xaserverarg arg; if (GetWinParam()) { int p = GetArg(); } else arg.AddArg(L"PONo", L"xxxx"); //alert(arg.GetString()); if (getUrl(L"/sale/data/PurchaseOrder/entity/GetEntityByNo", arg.GetString(), x) != 1) { trace(x.text()); return -1; } else { trace(x.xml()); dw_base.Retrieve(x); dw_base.Redraw(); dw_list.Retrieve(x); dw_list.Redraw(); } return 1; } int onload() { SetArg(); dw_base = GetControl(L"dw_base"); dw_base.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/base"); dw_list = GetControl(L"dw_list"); dw_list.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/Goods"); dw_base.SetColHeaderHeight(0); dw_base.SetRowSelectorWidth(0); dw_base.SetScrollState(false); OnAttachEvent(); OnRetrieve(); return 1; } int onloaded() { //SetAgent(); return 1; } };