þÿ#include <wobject/xstring.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xdwgrid.hpp> #include <xcontrol/xdatetimepick.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) POBatchPrecess : public xframe { public: xdwgrid dw_list; xdwgrid dw_advance; xdwgrid dw_goods; xstring urlTree; xstring keyword; xstring printStr; xstring suppliers; xstring searchStr; xtreeview tv_folder; xdatetimepick sdate; xdatetimepick edate; xnode m_agentNode; //Agent Condition public: POBatchPrecess(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static POBatchPrecess* CreateInstance(void* implPtr, void* hWnd) { POBatchPrecess* pWin = new POBatchPrecess(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(); return 1; } int RetrieveData() { printStr = L""; suppliers = L""; xcontrol query = GetControl(L"sl_search"); keyword = query.GetText(); xstring sdateTxt = L""; xstring edateTxt = L""; if (sdate.IsChecked()) sdateTxt = sdate.GetText(); if (edate.IsChecked()) edateTxt = edate.GetText(); xml x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/po/search", L"keyword", keyword, L"sdate", sdateTxt, L"edate", edateTxt); if (x) dw_list.Retrieve(x); dw_list.Redraw(); dw_list.SetReadOnly(true); return 1; } int OnPrint() { if (printStr == L"") { alert(L"g* b鋢SU"); return 0; } int row = dw_list.GetRow(); if (row < 1 || row > dw_list.GetRowCount()) return 1; KXMLDOMElement ele = dw_list.GetRowElement(row); xstring supplier = suppliers.mid(0, 37); xstring str = suppliers.replace(supplier, L""); if (str != L"") { alert(L"O›^”UFN T N €ýbyYt"); return 0; } xaserverarg& arg = *new xaserverarg; arg.AddArg(L"DataUrl", L"/sale/data/PurchaseOrder/print/dataset2"); arg.AddArg(L"EntityName", L"PurchaseOrder"); arg.AddArg(L"EntityID", printStr); arg.AddArg(L"EntityNo", dw_list.GetItemString(row, L"PONo")); trace(L"***" + printStr); trace(L"+++L" + dw_list.GetItemString(row, L"PONo")); openUrl(L"/sale/view/view.base/xpage/Template/PrintViewEx", &arg); return 0; } //T}NäSÑ^Qýep int OnCmdDispatch(xstring comdid) { xstring NO = publiccode::GetUser().no; xstring Jobname = publiccode::GetUser().jobname; if (NO == L"admin") Jobname = L""; if (Jobname.find(L"NR¡") >= 0) { if (comdid == L"xmSearchOne") { OnSearchOne(); return 1; } else if (comdid == L"xmSearch") { RetrieveData(); return 1; } } else { if (comdid == L"xmSearch") { RetrieveData(); return 1; } else if (comdid == L"xmPrint") { OnPrint(); return 1; } else if (comdid == L"xmSearchOne") { OnSearchOne(); return 1; } else if (comdid == L"xmDocument") { xstring potype = dw_list.GetItemString(dw_list.GetRow(), L"POType"); OnDocumentEx(); return 1; } } return 0; } int OnSearchOne() { xaserverarg arg; arg.AddArg(L"text", searchStr); OpenWindow(L"dev:xpage[search.dialog.vx]", arg ); xstring str = arg.GetArgString(L"text"); if (str != searchStr) { searchStr = str; dw_list.Filter(L"*", searchStr); return 1; } return 1; } int OnDocumentEx() { xaserverarg arg; int row = dw_list.GetRow(); xstring guid = dw_list.GetGuid(row); if (guid.length() <= 0) { guid = publiccode::GetGuid(); dw_list.SetGuid(row, guid); } arg.AddArg(L"entityid", guid); trace(dw_list.GetGuid(1)); OpenWindow(L"dev:xpage[maint.Document.PO.v4.vx]", arg); return 1; } //hÀ}" int OnPreRetrieve() { printStr = L""; suppliers = L""; xstring no = L""; HTREEITEM hItem = tv_folder.GetSelectedItem(); if (!hItem) return 1; HCURSOR hCursor = xutil::SetCursorWait(); KXMLDOMElement e1 = tv_folder.GetItemData(hItem); if (e1) { no = e1.getAttribute(L"no"); } keyword = no; xstring sdateTxt = L""; xstring edateTxt = L""; if (sdate.IsChecked()) sdateTxt = sdate.GetText(); if (edate.IsChecked()) edateTxt = edate.GetText(); xml x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/po/search", L"keyword", keyword, L"sdate", sdateTxt, L"edate", edateTxt); if (x) dw_list.Retrieve(x); dw_list.Redraw(); dw_list.SetReadOnly(true); xutil::RestoreCursor(hCursor); return 1; } int OnTreeSelChanged(TEvent* evt, int p) { return OnPreRetrieve(); } int OnRowChanged(TEvent* evt, int p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; HCURSOR hCursor = xutil::SetCursorWait(); xstring PONo = dw_list.GetItemString(row, L"PONo"); xml x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/po/advance", L"PONo", PONo); if (x)dw_advance.Retrieve(x); x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/po/goods", L"PONo", PONo); if (x)dw_goods.Retrieve(x); dw_advance.Redraw(); dw_goods.Redraw(); dw_goods.SetReadOnly(true); dw_advance.SetReadOnly(true); xutil::RestoreCursor(hCursor); return 1; } int OnDwClicked(TEvent* evt, int p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; char ch; int row = hdr.row; xstring col = hdr.colname; xstring str = L""; xstring supplier = L""; if (dw_list.GetGuid(row) != L"") { str = dw_list.GetGuid(row); supplier = dw_list.GetItemString(row, L"supplierID"); } if (dw_list.IsRowSelected(row) & 0xff) { printStr = printStr.replace(L" " + str, L""); suppliers = suppliers.replace(L" " + supplier, L""); } else { printStr += L" " + str; suppliers += L" " + supplier; } return 1; } //T}NäYtN‹Nö int OnXCommand(TEvent* evt, LPARAM p) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //~Ñ[š]åQwgap¹QûN‹Nö AttachEvent(L"WM_XCOMMAND", (FEvent)&POBatchPrecess::OnXCommand); //ƒ·SÖq&p¹N‹Nöÿ u(NŽ‘Ín]åQwga AttachEvent(L"WM_SETFOCUS", (FEvent)&POBatchPrecess::OnSetFocus); AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&POBatchPrecess::OnTreeSelChanged); //h bé AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&POBatchPrecess::OnRowChanged); AttachEvent(L"dw_list", L"DWV_CLICKED", (FEvent)&POBatchPrecess::OnDwClicked); return 1; } /* int OnRetrieve() { xml x ; xaserverarg arg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg(L"xxx",L"xxx"); if (getUrl(L"",arg.GetString(),x)!=1) { trace(x.text()); return -1; }else { //dw_list.Retrieve(x); //dw_list.Redraw(); } return 1; } */ int onload() { OnAttachEvent(); sdate = GetControl(L"sdate"); edate = GetControl(L"edate"); dw_list = GetControl(L"dw_list"); dw_list.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/polistex"); dw_goods = GetControl(L"dw_goods"); dw_goods.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/POGoods"); dw_advance = GetControl(L"dw_advance"); dw_advance.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/POAdvance"); dw_list.SetColumnState(L"SOID", false); dw_list.SetColumnState(L"BuyerID", false); dw_list.SetSelectionMode(3); xstring currdate = publiccode::GetCurrentDate(); int curryear = currdate.mid(0, 4).toInt(); sdate.SetDatetime(curryear - 1, 1, 1); urlTree = L"/sale/data/PurchaseOrder/folder"; tv_folder = GetControl(L"tv_folder"); tv_folder.SetLineAtRoot(true); InitialFolder(); return 1; } int onloaded() { SetAgent(); HTREEITEM hItem = tv_folder.GetRootItem(); ExpandFolderItem(hItem); tv_folder.ExpandItem(hItem); tv_folder.ItemFocus(hItem); return 1; } };