þÿ#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) Business4Win : public xframe { public: //xdwgrid dw_list; xdwgrid dw_list; xnode m_agentNode; //Agent Condition int changeddlb; xstring m_QueryTxt; xstring rows; xstring myDataUrl; xdwgrid dw_goods; xdwgrid dw_source; xcombobox cbx_datashow; xstring printStr; xstring suppliers; xstring QueryTxt; xstring queryTxt; xstring Mon; xstring SODateTxt; xstring SODate2Txt; xtreeview tv_folder; xstring urlTree; public: Business4Win(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static Business4Win* CreateInstance(void* implPtr, void* hWnd) { Business4Win* pWin = new Business4Win(implPtr, (HWND)hWnd); return pWin; } //\U_[Pe‡Nö int ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) { KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); int len = nlist.length(); for (int i = 0; i < len; i++) { KXMLDOMElement e = nlist.item(i); xstring name = e.getAttribute(L"name"); xstring sImage = e.getAttribute(L"image"); xstring child = e.getAttribute(L"child"); int image = 15; if (sImage) image = sImage.toInt(); HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); if (child != L"no") tv_folder.SetItemChild(h, 1); ExpandChildFolder(h, e); } return 1; } int InitialFolder() { KXMLDOMElement xframeElement = GetElement(); KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); if (e) ExpandChildFolder(0, e); return 1; } int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) { KXMLDOMNodeList nlist = ele.selectNodes(L"item"); int len = nlist.length(); if (len > 0) tv_folder.SetItemChild(hItem, 1); for (int i = 0; i < len; i++) { KXMLDOMElement e = nlist.item(i); xstring name = e.getAttribute(L"name"); HTREEITEM h = tv_folder.InsertChildItem(hItem, name,e, image); ExpandCatChildFolder(h, e, 35); } return 1; } int ExpandFolderItem(HTREEITEM hItem) { xml x = ViewObject::RetrieveData(urlTree); if (!x) return 0; KXMLDOMNodeList nlist = x.selectNodes(L"/data/item"); int len = nlist.length(); for (int i = 0; i < len; i++) { KXMLDOMElement e = nlist.item(i); xstring name = e.getAttribute(L"name"); HTREEITEM h = tv_folder.InsertChildItem(hItem, name,e, 35); ExpandCatChildFolder(h, e, 35); } return 1; } 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(); int row = dw_list.GetRow(); if (row < 1) return 1; SetAgent(L"list", GetEntityID(1)); return 1; } xstring GetEntityName(int pr) { return L"SaleItem3"; } xstring GetEntityID(int pr) { int row = dw_list.GetRow(); if (row < 1) return L""; xstring id = dw_list.GetGuid(row); return id; } //\U_[Pe‡Nö /*int ExpandChildFolder(int hItem, KXMLDOMElement pElement) { KXMLDOMNodeList nlist = pElement.SelectNodes(L"Item"); int len = nlist.length(); for (int i = 0; i < len; i++) { KXMLDOMElement e = nlist.item(i); xstring name = e.getAttribute(L"name"); xstring sImage = e.getAttribute(L"image"); xstring child = e.getAttribute(L"child"); int image = 15; if(sImage) image = sImage.toInt(); int h= tv_folder.InsertChildItem(tv_folder.GetId(),hItem,name, trust(e as int),image); if(child !=L"no" ) tv_folder.SetItemChild(h,1); ExpandChildFolder(h,e); } return 1; } //RYËSe‡NöY9 int InitialFolder() { KXMLDOMElement xframeElement = GetElement(); KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); //KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/data/item[@name='"+L"']"); //trace(e.xml); if(e) ExpandChildFolder(0,e); return 1; } //gåb~_SRMh˜yv„˜v~§vî_U int LookupTopFolder(int hItem) { int hRoot = tv_folder.GetRootItem(); while(tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem); return hItem; } */ int RetrieveData() { HTREEITEM hItem = tv_folder.GetSelectedItem(); if (!hItem) return 1; HCURSOR hCursor = xutil::SetCursorWait(); KXMLDOMElement& e1 = *(KXMLDOMElement*)tv_folder.GetItemData(hItem); xstring no = e1.getAttribute(L"no"); printStr = L""; suppliers = L""; xcontrol query = GetControl(L"sl_search"); queryTxt = query.GetText(); if (queryTxt == L"") { queryTxt = L"J"; } xml x = ViewObject::RetrieveData(L"/sale/data/SaleOrder/folder/SearchList", L"QueryTxt", queryTxt, L"Apply", no); if (x) dw_list.Retrieve(x); dw_list.Redraw(); dw_list.SetReadOnly(true); return 1; } int OnRowChanged(TEvent* evt, int p) { //listwin::OnRowChanged(evt,p); DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; if (row < 1 or row > dw_list.GetRowCount()) return 1; trace(dw_list.GetGuid(row)); SetAgent(L"list", dw_list.GetGuid(row)); HCURSOR hCursor = xutil::SetCursorWait(); xstring SONo = dw_list.GetItemString(row, L"SONo"); xml x = ViewObject::RetrieveData(L"/sale/data/SaleOrder/maint/item", L"id", SONo); if (x) dw_goods.Retrieve(x); else dw_goods.Reset(); dw_goods.Redraw(); dw_goods.SetReadOnly(true); x = ViewObject::RetrieveData(L"/sale/data/SaleOrder/maint/itemwithsource", L"id", SONo); if (x) dw_source.Retrieve(x); else dw_source.Reset(); dw_source.Redraw(); dw_source.SetReadOnly(true); xutil::RestoreCursor(hCursor); return 1; } int RetrieveData2() { xcontrol SODate = GetControl(L"SODate"); xcontrol SODate2 = GetControl(L"SODate2"); SODateTxt = SODate.GetText(); SODate2Txt = SODate2.GetText(); if (SODateTxt == L"") { SODateTxt = L" "; } if (SODate2Txt == L"") { xstring aa = publiccode::GetCurrentDate(); SODate2Txt = aa; } xml x = ViewObject::RetrieveData(L"/sale/data/SaleOrder/folder/SearchListDate", L"SODateTxt", SODateTxt, L"SODate2Txt", SODate2Txt); if (x) dw_list.Retrieve(x); dw_list.Redraw(); dw_list.SetReadOnly(true); return 1; } int OnRowChanged_(TEvent* evt, int p) { //listwin::OnRowChanged(evt,p); DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; if (row < 1 or row > dw_list.GetRowCount()) return 1; trace(dw_list.GetGuid(row)); SetAgent(L"list", dw_list.GetGuid(row)); HCURSOR hCursor = xutil::SetCursorWait(); xstring SONo = dw_list.GetItemString(row, L"SONo"); xml x = ViewObject::RetrieveData(L"/sale/data/SaleOrder/maint/item", L"id", SONo); if (x) dw_goods.Retrieve(x); else dw_goods.Reset(); dw_goods.Redraw(); dw_goods.SetReadOnly(true); x = ViewObject::RetrieveData(L"/sale/data/SaleOrder/maint/itemwithsource", L"id", SONo); if (x) dw_source.Retrieve(x); else dw_source.Reset(); dw_source.Redraw(); dw_source.SetReadOnly(true); xutil::RestoreCursor(hCursor); return 1; } int OnTreeSelChanged(TEvent* evt, int p) { return OnRetrieve(); } int ONAttachEvent() { AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&Business4Win::OnRowChanged); AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&Business4Win::OnTreeSelChanged); //h bé //~Ñ[š]åQwgap¹QûN‹Nö AttachEvent(L"WM_XCOMMAND", (FEvent)&Business4Win::OnXCommand); //ƒ·SÖq&p¹N‹Nöÿ u(NŽ‘Ín]åQwga AttachEvent(L"WM_SETFOCUS", (FEvent)&Business4Win::OnSetFocus); return 1; } //T}NäSÑ^Qýep int OnCmdDispatch(xstring comdid) { if (comdid == L"bill.make.purcharSoItem") { xstring ApprovalStatus = dw_list.GetItemDisplayString(dw_list.GetRow(), L"ApprovalStatus"); xstring UserNO = publiccode::GetUser().no; if (UserNO != L"00701" && UserNO != L"00205") { if (ApprovalStatus != L"]ò_‘Ǎ-TT " && ApprovalStatus != L"Ç" && ApprovalStatus != L"Oîe9") { alert(L"_SRMr¶`N QA‹¸‘Ǎ-ÿ"); return 0; } } xaserverarg arg; arg.AddArg(L"SONo", dw_list.GetItemString(dw_list.GetRow(), L"SONo")); arg.AddArg(L"SOLineID", dw_list.GetItemString(dw_list.GetRow(), L"SOLineID")); arg.AddArg(L"TyPeEx", L"‘Ǎ-Yt"); OpenWindow(L"dev:xpage[Maint.PurcherItem.vx]",arg); return 1; } else if (comdid == L"xmRefresh") { RetrieveData(); return 1; } else if (comdid == L"xmSearch") { RetrieveData(); return 1; } else if (comdid == L"xmSearch2") { RetrieveData2(); return 1; } else if (comdid == L"action:bill.refresh") { OnRetrieve(); return 1; } else if (comdid.find(L"action:", 0) >= 0) { return ProcessFlowAction(comdid, 1); } return 0; } //T}NäYtN‹Nö int OnXCommand(TEvent* evt, LPARAM p) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnRetrieve() { HTREEITEM hItem = tv_folder.GetSelectedItem(); if (!hItem) return 1; HCURSOR hCursor = xutil::SetCursorWait(); KXMLDOMElement e1 = tv_folder.GetItemData(hItem); xstring no = e1.getAttribute(L"no"); xstring query = L"<items join='and'><item name='SODate' op='&gt;=' value='2015-01-01'/></items>"; //alert(no); //alert(e1.xml()); xml x = ViewObject::RetrieveData(L"/sale/data/SaleOrder/SOlineList", L"no", L"Category:All", L"QueryTxt", query, L"rows", L"500", L"Apply", no); dw_list.SetColumnState(L"CustomerName", false);//–…ÏR //dw_list.SetColumnState(L"CreatorID",false); dw_list.SetColumnState(L"SOID", false); alert(x.xml()); if (x) { dw_list.Retrieve(x); dw_list.Redraw(); dw_list.SetReadOnly(true); } return 1; } int onload() { //alert(L"123"); dw_list = GetControl(L"dw_list"); //dw_list.SetColumnState(L"CustomerName",false);//–…ÏR //dw_list.openUrl(L"/sale/view/SaleOrder/template/item"); //dw_list.openUrl(L"/sale/view/SaleOrder/template/list"); ONAttachEvent(); dw_goods = GetControl(L"dw_goods"); dw_goods.openUrl(L"/sale/view/SaleOrder/template/item"); dw_goods.SetColumnState(L"UnitPrice", false); dw_goods.SetColumnState(L"Amount", false); dw_goods.SetColumnState(L"ItemID", false); dw_goods.SetColumnState(L"LineType", false); dw_goods.SetColumnState(L"Assortment", false); dw_goods.SetColumnState(L"ClassifyID", false); dw_goods.SetColumnState(L"UnitFreight", false); dw_goods.SetColumnState(L"CName", false);//–…ÏR dw_goods.SetColumnState(L"UnitCommPrice", false);//–…ÏR dw_goods.SetColumnState(L"PackTechNote", false);//–…ÏR dw_goods.SetColumnState(L"Brand", false); dw_goods.SetColumnState(L"SKUNo", false); dw_goods.SetColumnState(L"SOLineNo", false); dw_goods.SetColumnState(L"ScheduleShipDate", false); dw_goods.SetColumnState(L"ChkState", false); dw_goods.SetColumnState(L"PONo", false); dw_goods.SetColumnState(L"POCreatorID", false); dw_goods.SetColumnState(L"GoodsNo", false); dw_goods.SetColumnState(L"CustomerItemNo", false); dw_goods.SetColumnState(L"CustomerPONo", false); dw_goods.SetColumnState(L"EName", false); dw_goods.SetColumnState(L"Packing", false); dw_source = GetControl(L"dw_source"); dw_source.openUrl(L"/sale/view/SaleOrder/template/sourceitem"); dw_source.SetColumnState(L"UnitPrice", false); dw_source.SetColumnState(L"Amount", false); dw_source.SetColumnState(L"FOBAmount", false); dw_source.SetColumnState(L"CostRate", false); dw_list.openUrl(L"/sale/view/SaleOrder/template/list1"); dw_list.SetColumnState(L"USDAmount", false); dw_list.SetColumnState(L"RMBAmount", false); dw_list.SetColumnState(L"PaymentTermEx", false); dw_list.SetColumnState(L"PriceTermEx", false); dw_list.SetColumnState(L"CountryName", false); dw_list.SetColumnState(L"SOLineID", false); urlTree = L"/sale/data/SaleOrder/ApplyTabulation"; tv_folder = GetControl(L"tv_folder"); tv_folder.SetLineAtRoot(true); InitialFolder(); return 1; } int onloaded() { OnRetrieve(); //SetAgent(); int row = dw_list.GetRow(); if (row >= 0) SetAgent(L"list", GetEntityID(1)); HTREEITEM hItem = tv_folder.GetRootItem(); ExpandFolderItem(hItem); tv_folder.ExpandItem(hItem); tv_folder.ItemFocus(hItem); return 1; } };