þÿ#include <wobject/xstring.hpp> #include <xcontrol/xtreeview.hpp> #include <xcontrol/xdwgrid.hpp> #include <xcontrol/xcell.hpp> #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) SelectItemNewGDNWin : public xframe { xdwgrid dw_list; xtreeview tv_folder; xnode m_agentNode; //Agent Condition xstring CustomerID2; public: SelectItemNewGDNWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static SelectItemNewGDNWin* CreateInstance(void* implPtr, void* hWnd) { SelectItemNewGDNWin* pWin = new SelectItemNewGDNWin(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; } int ExpandFolderItem() { xml x = ViewObject::RetrieveData(L"/sale/data/GDN/so/customer"); if (!x) return 0; KXMLDOMNodeList nlist = x.selectNodes(L"//Party"); 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(0, name, e, 15); tv_folder.SetItemChild(h, 1); ExpandChildFolder(h, e); } return 1; } int OnTreeSelChanged(TEvent* evt, int p) { return OnRetrieve(); } int ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) { KXMLDOMNodeList nlist = pElement.selectNodes(L"node()L"); int len = nlist.length(); for (int i = 0; i < len; i++) { KXMLDOMElement e = nlist.item(i); xstring name = e.getAttribute(L"SONo"); int image = 15; HTREEITEM h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, e , image); } return 1; } int OnRetrieve() { HTREEITEM hItem = tv_folder.GetSelectedItem(); if (hItem <= 0) return 1; xstring SONo = L""; //xstring CustomerID = L""; KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem); if (e.tagName() == L"Party") CustomerID2 = e.getAttribute(L"PartyID"); else { CustomerID2 = e.selectSingleNode(L"../@PartyID").text(); SONo = e.getAttribute(L"SONo"); trace(CustomerID2 + L"===L" + SONo); } HTREEITEM hCursor = xutil::SetCursorWait(); xml x = SaleOrderView::GetItemListForGDN(SONo, CustomerID2); dw_list.Retrieve(x); //dw_list.SetReadOnly(true); dw_list.SetSelectionMode(3); dw_list.Redraw(); xutil::RestoreCursor(hCursor); } int OnClicked(TEvent* evt, int p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; char ch; int row = hdr.row; xstring col = hdr.colname; if (col == L"ShipQuantity") return 1; double quantity1 = 0.0, quantity2 = 0.0; for (int i = 1; i <= dw_list.GetRowCount(); i++) { int selected = dw_list.IsRowSelected(i) & 0x1; if (i == row) { if (selected == 0) { if (dw_list.GetItemString(i, L"ShipQuantity") == L"") { quantity1 = dw_list.GetItemDouble(i, L"Quantity"); quantity2 = dw_list.GetItemDouble(i, L"POQuantity"); if (quantity1 > quantity2) dw_list.SetItemString(i, L"ShipQuantity", dw_list.GetItemString(i, L"POQuantity")); else dw_list.SetItemString(i, L"ShipQuantity", dw_list.GetItemString(i, L"Quantity")); } } else { if (dw_list.GetItemString(i, L"ShipQuantity") != L"") { dw_list.SetItemString(i, L"ShipQuantity", L""); } } } else if (selected == 0) { if (dw_list.GetItemString(i, L"ShipQuantity") != L"") { dw_list.SetItemString(i, L"ShipQuantity", L""); } } } dw_list.Redraw(); return 1; } //q&p¹oÀm;YtQýep int OnSetFocus(TEvent* evt, LPARAM p) { //‘Ín]åQwga //SetAgent(); return 1; } int Doubleclick() { xaserverarg arg = GetArg(); xstring str = L""; int row = dw_list.GetNextSelectRow(1); double quantity1 = 0.0, quantity2 = 0.0, quantity3 = 0.0; while (row > 0 && row <= dw_list.GetRowCount()) { quantity1 = dw_list.GetItemDouble(row, L"Quantity"); quantity2 = dw_list.GetItemDouble(row, L"POQuantity"); quantity3 = dw_list.GetItemDouble(row, L"ShipQuantity"); /*if(quantity3 > quantity1 || quantity3 > quantity2) { win32::MessageBox(GetHWND(),L"{,"+row.toString()+L"ˆLQúÐep‘ÏeàeH,‹÷‘Íe°XkQ™!",L"cÐy:",0); return 1; }*/ KXMLDOMElement ele = dw_list.GetRowElement(row); str += ele.xml(); //ele.Release(); row = dw_list.GetNextSelectRow(row + 1); } arg.AddArg(L"items", L""); if (str != L"") arg.AddArg(L"items", L"<data>" + str + L"</data>"); HTREEITEM hItem = tv_folder.GetSelectedItem(); if (hItem > 0) { xstring CustomerID = L""; xstring Name = L""; KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem); if (e.tagName() == L"Party") { CustomerID = e.getAttribute(L"PartyID"); Name = e.getAttribute(L"Name"); } else { CustomerID = e.selectSingleNode(L"../@PartyID").text(); Name = e.selectSingleNode(L"../@Name").text(); } arg.AddArg(L"PartyID", CustomerID); arg.AddArg(L"PartyName", Name); } //trace(CustomerID); //trace(Name); CloseWindow(); return 1; } //T}NäSÑ^Qýep int OnCmdDispatch(xstring comdid) { if (comdid == L"xmSelectAll") { for (int i = 1; i <= dw_list.GetRowCount(); i++) { dw_list.SelectRow(i, true); if (dw_list.GetItemString(i, L"ShipQuantity") == L"") dw_list.SetItemString(i, L"ShipQuantity", dw_list.GetItemString(i, L"Quantity")); } dw_list.Redraw(); return 1; } else if (comdid == L"xmSelectNo") { dw_list.SelectRow(0, false); dw_list.Redraw(); return 1; } else if (comdid == L"xmSearch") { xcontrol query = GetControl(L"sl_search"); xstring queryTxt = query.GetText(); xml x = ViewObject::RetrieveData(L"/sale/data/SaleOrder/maint/gdnitem2", L"CustomerPONo", queryTxt, L"CustomerID", CustomerID2); if (x) { dw_list.Retrieve(x); //dw_list.SetReadOnly(true); dw_list.SetSelectionMode(3); dw_list.Redraw(); } return 1; } else if (comdid == L"xmOk") { /*xaserverarg arg = GetParam(); arg.AddArg(L"items",L""); xstring str = L""; int row = dw_list.GetNextSelectRow(1); while(row > 0 && row <= dw_list.GetRowCount()) { KXMLDOMElement ele = dw_list.GetRowElement(row); str += ele.xml(); ele.Release(); row = dw_list.GetNextSelectRow(row + 1); } if(str != L"") arg.AddArg(L"items",L"<data>"+str+L"</data>"); int hItem = tv_folder.GetSelectedItem(); if(hItem > 0) { xstring CustomerID = L""; xstring Name = L""; KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement); if(e.tagName==L"Party") { CustomerID= e.getAttribute(L"PartyID"); Name = e.getAttribute(L"Name"); } else { CustomerID = e.selectSingleNode(L"../@PartyID").text(); Name = e.selectSingleNode(L"../@Name").text(); } arg.AddArg(L"PartyID", CustomerID); arg.AddArg(L"PartyName", Name); }*/ Doubleclick(); //CloseWindow(); return 1; } else if (comdid == L"xmCancel") { CloseWindow(); return 1; } return 0; } //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)&SelectItemNewGDNWin::OnXCommand); //ƒ·SÖq&p¹N‹Nöÿ u(NŽ‘Ín]åQwga AttachEvent(L"WM_SETFOCUS", (FEvent)&SelectItemNewGDNWin::OnSetFocus); AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&SelectItemNewGDNWin::OnTreeSelChanged); //h bé AttachEvent(L"dw_list", L"DWV_CLICKED", (FEvent)&SelectItemNewGDNWin::OnClicked); AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&SelectItemNewGDNWin::Doubleclick); return 1; } int onload() { dw_list = GetControl(L"dw_list"); //dw_list.openUrl(L"/sale/view/SaleOrder/template/itemforgdn"); dw_list.openUrl(L"/sale/view/GDN/template/GDN/soitemforgdn"); dw_list.SetColumnState(L"ItemID", false); dw_list.SetColumnState(L"LineType", false); dw_list.SetColumnState(L"LineNo", false); dw_list.SetColumnState(L"Assortment", false); dw_list.SetColumnState(L"ClassifyID", false); dw_list.SetColumnState(L"UnitFreight", false); /* dw_list.SetColumnState(L"ItemID",false); dw_list.SetColumnState(L"UnitPrice",false); dw_list.SetColumnState(L"SOLineNo",false); dw_list.SetColumnState(L"SKUNo",false); dw_list.SetColumnState(L"Packing",false); dw_list.SetColumnState(L"InnerQty",false); dw_list.SetColumnState(L"PackingRate",false); dw_list.SetColumnState(L"Brand",false); dw_list.SetColumnState(L"UOMCode",false); dw_list.SetColumnState(L"Packages",false); dw_list.SetColumnState(L"KOPCode",false); dw_list.SetColumnState(L"PackageL",false); dw_list.SetColumnState(L"PackageW",false); dw_list.SetColumnState(L"PackageH",false); dw_list.SetColumnState(L"Volume",false); dw_list.SetColumnState(L"GWPerPkg",false); dw_list.SetColumnState(L"GW",false); dw_list.SetColumnState(L"NWPerPkg",false); dw_list.SetColumnState(L"NW",false); dw_list.SetColumnState(L"ClassifyID",false); dw_list.SetColumnState(L"Remarks",false); */ tv_folder = GetControl(L"tv_folder"); tv_folder.SetLineAtRoot(true); xml x; x; OnAttachEvent(); ExpandFolderItem(); //tv_folder.ItemFocus(tv_folder.GetRootItem()); return 1; } int onloaded() { //SetAgent(); return 1; } };