þÿ#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) SOTrace3list : public listwin { public: xstring m_sType; //h N-v„|{W‹ xstring m_sTypeTxt; //h N-v„epcn xstring urlTree; xstring myDataUrl; xstring rows; int changeddlb; xcombobox ddlb_1; xcombobox cbx_datashow; xtreeview tv_folder; xdwgrid dw_goods; xdwgrid dw_source; xdwgrid dw_advance; xdwgrid dw_goodTwo; xdwgrid dw_polist; //process tree public: SOTrace3list(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} public: static SOTrace3list* CreateInstance(void* implPtr, void* hWnd) { SOTrace3list* pWin = new SOTrace3list(implPtr, (HWND)hWnd); return pWin; } //gåb~_SRMh˜yv„˜v~§vî_U HTREEITEM LookupTopFolder(HTREEITEM hItem) { HTREEITEM hRoot = tv_folder.GetRootItem(); while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem); return hItem; } 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); string name = e.getAttribute(L"name"); HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); ExpandCatChildFolder(h, e, 35); } return 1; } int ExpandFolderItem(HTREEITEM hItem, string no) { KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(), urlTree, L"no", no, L"rows", rows); 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); string name = e.getAttribute(L"name"); HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); ExpandCatChildFolder(h, e, 35); } return 1; } //h\U_ int OnTreeExpanding(TEvent* evt, int p) { NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; HTREEITEM hItem = nmtv.itemNew.hItem; HTREEITEM hTopItem = LookupTopFolder(hItem); string name = tv_folder.GetItemLabel(hTopItem); HTREEITEM child = tv_folder.GetChildItem(hItem); KXMLDOMElement e = tv_folder.GetItemData(hItem); if (!child)ExpandFolderItem(hItem, e.getAttribute(L"no")); return 1; } //\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); string 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; } //RYËSe‡NöY9 int InitialFolder() { KXMLDOMElement xframeElement = GetElement(); KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); if (e) ExpandChildFolder(0, e); return 1; } int OnTreeSelChanged(TEvent* evt, LPARAM p) { if (changeddlb) return 1; return OnPreRetrieve(); } int ViewUpdate(int pr, xstring updateItem, xaserverarg arg) { if (updateItem == L"del") { int DelRow = dw_list.GetRow(); dw_list.DeleteRow(DelRow); return 1; } else if (updateItem == L"setstate") { int row = dw_list.GetRow(); if (row < 1) return 1; KXMLDOMElement ele = dw_list.GetRowElement(row); xstring id = GetEntityIDName(1); xstring entity = ele.selectSingleNode(id).text(); //trace(entity); SetAgent(L"list", entity); if (arg.GetArgString(L"state") != L"") //dw_list.SetItemString(row, L"ApprovalStatus", arg.GetArgString(L"state")); dw_list.SetItemString(row, L"ApplyStatus", arg.GetArgString(L"state")); if (arg.GetArgString(L"billstatus") != L"") { xstring billstatus = arg.GetArgString(L"billstatus"); xstring statusName = GetBillStatusName(billstatus); dw_list.SetItemString(row, L"ApprovalStatus", billstatus); dw_list.SetItemDisplayString(row, L"ApprovalStatus", statusName); } dw_list.Redraw(); } return 1; } bool IsEmptyQueryStr(xstring queryStr) { if (queryStr == L"") return true; if (queryStr == L"<items join='and'/>") return true; if (queryStr == L"<items join=\"and\"/>") return true; //trace(queryStr); return false; } //hÀ}" int OnPreRetrieve() { 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"); xml x = 0; //if(!(no ==L"Category:All" && IsEmptyQueryStr(m_QueryTxt))) // x = ViewObject::RetrieveData(myDataUrl,L"no",no,L"QueryTxt", m_QueryTxt); trace(L"\r\n" + no + L"\r\n" + m_QueryTxt); x = ViewObject::RetrieveData(myDataUrl, L"no", no, L"QueryTxt", m_QueryTxt, L"rows", rows); if (x) { dw_list.Retrieve(x); dw_list.Redraw(); } else { dw_list.Reset(); dw_list.Redraw(); dw_goods.Reset(); dw_goods.Redraw(); } dw_list.SetReadOnly(true); xutil::RestoreCursor(hCursor); return 1; /* xaserverarg arg; arg.AddArg(L"pageindex", m_pageIndex.toString(),L""); //{,Qà˜u arg.AddArg(L"pagenumber", m_pageNumber.toString(),L""); //kϘuep‘Ï arg.AddArg(L"QueryTxt", m_QueryTxt,L""); //gå‹âgaNö arg.AddArg(L"sType",m_sType,L""); arg.AddArg(L"sTypeTxt",m_sTypeTxt,L""); xml x = ViewObject::MakeXml(); KXMLDOMElement n = m_configDoc.selectSingleNode(L"//list/dwview[@type='dwgrid'][1]"); if(n) { KXMLDOMElement e = n; if(e.selectSingleNode(L"@dataUrl")) { xstring dataUrl = e.selectSingleNode(L"@dataUrl").text(); if(dataUrl.left(1)!=L"/") dataUrl = GetEntityName(1)+L"/"+dataUrl; getUrl(dataUrl, arg.GetString(), x); KXMLDOMElement ele=x.documentElement(); if(dw_pages.ptr_native_) { if(ele.selectSingleNode(L"@TotalPage")) { xstring s=ele.selectSingleNode(L"@TotalPage").text(); //`;ep‘Ï dw_pages.SetMaxPage(s.toInt()); } } dw_list.Retrieve(x); dw_list.Redraw(); dw_list.SetReadOnly(true); } else { SetEntityData(arg); } } else { SetEntityData(arg); } */ } //S†Sòepcn int Onhistroydata() { int row = dw_list.GetNextSelectRow(1); if (row > 0) { KXMLDOMElement e = dw_list.GetRowElement(row); xaserverarg& arg = *new xaserverarg; string sCustomerID = e.selectSingleNode(L"CustomerID").text(); arg.AddArg(L"CustomerID", sCustomerID, L""); string sCustomerName = e.selectSingleNode(L"CustomerName").text(); arg.AddArg(L"CustomerName", sCustomerName, L""); arg.AddArg(L"EntityName", GetEntityName(1), L""); arg.AddArg(L"EntityID", GetEntityID(1), L""); openUrl(L"/sale/view/SO/xpage/histroydata", &arg); } return 1; } //xcomboboxN bÉ int OnSelectDdlb(TEvent* evt, LPARAM p) { changeddlb = 1; HWND wid = ddlb_1.GetHWND(); int CB_GETCURSEL = 0x0147; int nIndex = SendMessage(wid, CB_GETCURSEL, 0, 0); KXMLDOMElement e = ddlb_1.GetElement(); KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]"); string no = e2.selectSingleNode(L"@element").text(); HTREEITEM hItem = tv_folder.GetRootItem(); while (tv_folder.GetChildItem(hItem)) tv_folder.DeleteItem(tv_folder.GetChildItem(hItem)); ExpandFolderItem(hItem, no); changeddlb = 0; return 1; } int OnSelectDataShowDdlb(TEvent* evt, LPARAM p) { HWND wid = cbx_datashow.GetHWND(); int CB_GETCURSEL = 0x0147; int nIndex = SendMessage(wid, CB_GETCURSEL, 0, 0); KXMLDOMElement e = cbx_datashow.GetElement(); KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]"); rows = e2.selectSingleNode(L"@rows").text(); OnPreRetrieve(); return 1; } int PostOnCmdDispatch(xstring comdid) { if (comdid == L"action:bill.histroydata") return Onhistroydata(); else if (comdid == L"action:bill.refresh") return OnPreRetrieve(); else if (comdid == L"action:bill.annex") { int row = dw_list.GetRow(); if (row < 1) return 1; xstring guid = dw_list.GetItemString(row, L"SOID"); xaserverarg arg; if (guid.length() <= 0) { return 1; } trace(guid); arg.AddArg(L"entityid", guid); arg.AddArg(L"Type", L"Y"); OpenWindow(L"dev:xpage[maint.Document.SO3.v3.vx]", arg); return 0; } if (comdid == L"action:bill.saveas") { dw_list.SaveAs(L""); return 1; } if (comdid == L"action:bill.SourceRemark") return OnSourceRemark(); return 1; } int OnSourceRemark() { xstring name = L"Y•TT "; xml x = ViewObject::RetrieveData(L"/sale/data/TradeFinance3/GetSetUpRemarks", L"Type", name); KXMLDOMNodeList items = x.selectNodes(L"data/Item"); KXMLDOMNode t = items.item(0); xstring Content = L""; if (t.selectSingleNode(L"Content")) { Content = t.selectSingleNode(L"Content").text(); } xaserverarg arg1; arg1.AddArg(L"value", Content); OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg1); return 1; } int OnRowChanged(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; HCURSOR hCursor = xutil::SetCursorWait(); xstring SONo = dw_list.GetItemString(row, L"SONo"); xstring SOID = dw_list.GetItemString(row, L"SOID"); //trace(L"SOID:"+SOID); 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); x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/SO/advance", L"SONo", SONo); if (x) dw_advance.Retrieve(x); else dw_advance.Reset(); dw_advance.Redraw(); dw_advance.SetReadOnly(true); x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/SO/GoodTwo", L"SONo", SONo); if (x) dw_goodTwo.Retrieve(x); else dw_goodTwo.Reset(); dw_goodTwo.Redraw(); dw_goodTwo.SetReadOnly(true); x = ViewObject::RetrieveData(L"/sale/data/PurchaseOrder/so/polist", L"SOID", SOID); if (x) dw_polist.Retrieve(x); else dw_polist.Reset(); dw_polist.Redraw(); dw_polist.SetReadOnly(true); xutil::RestoreCursor(hCursor); return 1; } int PreOnCmdDispatch(xstring comdid) { return 1; } int OnAttachEvent() { AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&SOTrace3list::OnTreeSelChanged); //h bé //AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING"(FEvent)&SOTrace3list::,OnTreeExpanding); //h\U_ AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&SOTrace3list::OnRowChanged);//~Ñ[šˆLfôe9‰æSÑN‹NöOnRowChanged AttachEvent(L"cbx_1", L"CBN_SELCHANGE", (FEvent)&SOTrace3list::OnSelectDdlb);//~Ñ[šN bÉhFfôe9‰æSÑN‹NöOnSelectDdlb AttachEvent(L"cbx_datashow", L"CBN_SELCHANGE", (FEvent)&SOTrace3list::OnSelectDataShowDdlb);//~Ñ[š béepcnf>y:N bÉRˆhN‹NöOnSelectDataShowDdlb return 1; } int onload() { listwin::onload(); ddlb_1 = GetControl(L"cbx_1"); cbx_datashow = GetControl(L"cbx_datashow"); dw_goods = GetControl(L"dw_goods"); dw_goods.openUrl(L"/sale/view/SaleOrder/template/item"); dw_source = GetControl(L"dw_source"); dw_source.openUrl(L"/sale/view/SaleOrder/template/sourceitem"); /* for(int i=1; i<= dw_list.GetColumnCount();i++) { if(dw_list.GetColumnName(i) != L"Merchandiser") dw_list.SetReadOnlyColumn(dw_list.GetColumnName(i),true); } */ dw_advance = GetControl(L"dw_advance"); dw_advance.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/POAdvance"); dw_goodTwo = GetControl(L"dw_goodTwo"); dw_goodTwo.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/POGoods"); dw_polist = GetControl(L"dw_polist"); dw_polist.openUrl(L"/sale/view/PurchaseOrder/template/purchaseorder/polist"); dw_polist.SetColumnState(L"SOID", false); dw_polist.SetColumnState(L"PaymentTermDesc", false); dw_polist.SetColumnState(L"OnloadFlag", false); dw_polist.SetColumnState(L"BuyerID", false); dw_goods.SetColumnState(L"ItemID", false); dw_goods.SetColumnState(L"LineType", false); //dw_goods.SetColumnState(L"LineNo",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"Brand", false); dw_goods.SetColumnState(L"SKUNo", false); dw_goods.SetColumnState(L"SOLineNo", false); dw_goods.SetColumnState(L"ScheduleShipDate", false); dw_goods.SetColumnState(L"PackTechNote", false); dw_goods.SetColumnState(L"EnquiryPriceListID", false); dw_goods.SetColumnState(L"Submitter", false); dw_goods.SetColumnState(L"POSupplierID", false); dw_goods.SetColumnState(L"QuoteLineID", false); dw_list.SetColumnState(L"CreatorID", false); dw_list.SetColumnState(L"SOID", false); //dw_list.SetColumnProtect(L"SOID",true); rows = L"500"; myDataUrl = L"/sale/data/SaleOrder/folder/list"; urlTree = L"/sale/data/SaleOrder/folder"; tv_folder = GetControl(L"tv_folder"); tv_folder.SetLineAtRoot(true); InitialFolder(); return 1; } int onloaded() { listwin::onloaded(); //attach my control event OnAttachEvent(); dw_list.SetColumnState(L"SOID", false); HTREEITEM hItem = tv_folder.GetRootItem(); ExpandFolderItem(hItem, L"Category:Customer"); tv_folder.ExpandItem(hItem); //tv_folder.ItemFocus(tv_folder.GetChildItem(hItem)); tv_folder.ItemFocus(hItem); return -1; } int ProcessUsedArg(xaserverarg arg) { HTREEITEM hItem = tv_folder.GetCaretItem(); if (!hItem) return 1; KXMLDOMElement e = tv_folder.GetItemData(hItem); xstring no = e.getAttribute(L"no"); if (no.find(L"Customer:") >= 0) { arg.AddArg(L"CustomerID", e.getAttribute(L"id")); xstring name = e.getAttribute(L"name"); if (name.find(L"(L") >= 0) name = name.left(name.find(L"(L")); arg.AddArg(L"CustomerName", name); } return 1; } };