ÿþuse "xcontrol.vframe.vbusiness.vd" use "xbase.vframe.vbusiness.vd" use "multi.vbind.vbind.wface.vd" use "productlibrary.vd" use "shoppingcart.vd" unit trade [ class ProductSearchDlg : public xwin { int hObject = 0; //§NÁT“^§NÁTRhˆ xdwgrid dw_list; xnode m_agentNode; //Agent Condition xtreeview tv_folder; string agentFor; int SetAgent() { string xfNodeAgentArea = "agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); if(m_agentNode) { SetAgentNodeContent (anode,m_agentNode); } else { msxml::IXMLDOMElement xframeElement = GetElement(); msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*"); if(agent) { string s = agent.xml; m_agentNode = SetAgentNodeContent (anode,s); } } return 1; } //&q¹pÀo;mYtýQpe int OnSetFocus(ref TEvent evt,int param) { //͑nå]wQag SetAgent(); return 1; } int OnShowImage(string skuid) { imageview im = GetControl("im1"); //im.RemoveImage(); im.ResetEx(); xml xp=new xml; xp.setNativePointer(xml::CreateInstance()); xaserverarg arg_pic=new xaserverarg; arg_pic.setNativePointer(arg_pic.CreateInstance()); arg_pic.AddArg("SKUID",skuid); if(url::get("/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1) { trace("xxx",xp.GetXml()); }else { //imageElement = xp.GetXmlDoc().documentElement; msxml::IXMLDOMNodeList nlistp= xp.GetXmlDoc().selectNodes("ImageList/image"); int lenp = nlistp.length; for(int ip=0;ip<lenp;ip++) { msxml::IXMLDOMElement xitem = nlistp.item(ip); string picname = xitem.selectSingleNode("PicPath").text; string goodno = xitem.selectSingleNode("GoodsNo").text; if(picname == "/business/products/Thumbs//") picname = "/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; im.AddImages(picname, ""); } im.Redraw(); //win32::SendMessage(im.GetId(),0x000f,0,1); //win32::InvalidateRect(im.GetId(),cast(0 as ref xrect),true); } return 1; } int OnRowChanged(ref TNotifyEvent evt,int p) { ref DWNMHDR hdr = trust(evt.pnmh as ref DWNMHDR); int row = hdr.row; htmlctrl xs = GetControl("html_detail"); string html = makeHtml(row); xs.SetContent(html); xs.Redraw(); string id = dw_list.GetGuid(row); OnShowImage(id); return 1; } xml GetGoodsPropList(string guid) { xml x=new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("guid", guid); if(url::get("/sale/data/SO/goods/goodsprop/list", arg.GetString(),x)!=1) { string error = x.GetXmlDoc().text; alert(error); } return x; } xml GetGoodsPropListEx(string guid) { xml x=new xml; x.setNativePointer(xml::CreateInstance()); string fields="<data>"; /* fields +="<field name='HighestPrice' label='gؚ÷N'/>"; fields +="<field name='LowestPrice' label='gNO÷N'/>"; fields +="<field name='BulkPrice' label='ce'÷N'/>"; fields +="<field name='CardPrice' label='¸~aS÷N'/>"; fields +="<field name='BuyPrice' label='Ǒ-÷N'/>"; fields +="<field name='SupplierID' label=''n'/>"; */ fields +="<field name='Packing' label='Sň¹e_'/>"; fields +="<field name='PackingRate' label='Ïk±{peϑ'/>"; fields +="<field name='VolumeDesc' label='Sň:\x'/>"; fields +="<field name='GWPerPkg' label='Ûk͑'/>"; fields +="<field name='NWPerPkg' label='ÀQ͑'/>"; //fields +="<field name='DeveloperID' label='_ÑSºNXT'/>"; fields +="<field name='AttributeValue_1' label='§NÁT^\'`'/>"; //fields +="<field name='Remark' label='Yèl'/>"; fields += "</data>"; x.LoadXml(fields); return x; } string makeHtml(int row) { string id = dw_list.GetGuid(row); xml x = GetGoodsPropList(id); xml x1 = GetGoodsPropListEx(id); string html="<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'>"; html += "<div ><span style='font-weight:700;width:50;font-size:10pt' >÷S:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"No")+ "</span> <span style='font-weight:700;width:50;font-size:10pt' >{|y˜:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"RefNo")+ "</span></div>"; html += "<div ><span style='font-weight:700;width:50;font-size:10pt' >'÷S:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"GoodsNo")+ "</span></div>" ; html += "<div ><span style='font-weight:700;width:50;font-size:10pt' >ÁT T:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"CName")+ "</span></div>" ; if(dw_list.GetItemString(row,"CSpec")!="") html += "<div ><span style='font-weight:700;width:50;font-size:10pt' >ĉ<span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row,"CSpec")+ "</span></div>" ; msxml::IXMLDOMNodeList fieldsEx = x1.GetXmlDoc().selectNodes("data/field"); string ls_detail=""; string ls_item =""; string name; string label; int len = fieldsEx.length; int i= 0; for(i=0;i<len; true) { int cnt = 0; ls_item = ""; while(cnt < 2) { name = fieldsEx.item(i).selectSingleNode("@name").text; label = fieldsEx.item(i).selectSingleNode("@label").text; ls_item += "<td>" + label + "</td>" + "<td style='text-align:center'>" + dw_list.GetItemString(row,name) + "</td>" ; cnt++; i++; if(i ==len)break; } ls_detail += "<tr>" + ls_item + "</tr>"; } html += "<div style='margin-left:8px;margin-right:16px;'>" + +"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" + ls_detail +"</table>" +"</div>" ; string ls_star=""; msxml::IXMLDOMNodeList fields = x.GetXmlDoc().selectNodes("data/field"); len = fields.length; ls_detail = ""; if(len > 0) html += "<div ><span style='font-weight:700;width:50;font-size:10pt' >€b/g‰Bl:</span></div>" ; for(i=0;i<len; true) { ls_item=""; int count = 0; while(count < 2) { name = fields.item(i).selectSingleNode("@name").text; label = fields.item(i).selectSingleNode("@label").text; if(name=="QualityTerm" || name=="PackTerm" || label=="(Ï‘" || label=="Sň(Ï‘" || label=="€b/g‰Bl") { i++; if(i >= len)count = 2; continue; } else if(dw_list.GetItemString(row,name)=="") { msxml::IXMLDOMNodeList options = fields.item(i).selectNodes("item"); int tlen = options.length; string terms = "" ; for(int k=0; k<tlen; k++) { if(options.item(k).text) { if(k>0) terms += ", "; terms += "[" + options.item(k).text +"]"; } } ls_star += "<div ><span style='font-weight:700;width:50;font-size:10pt' >" + label +"*:</span><span style='width:90;font-size:10pt'>" + terms + "</span></div>" ; }else { ls_item = "<td>" + label + "</td>" + "<td>" + dw_list.GetItemString(row,name) + "</td>" ; count++; } i++; if(i >= len)count = 2; } ls_item = "<tr>" + ls_item + "</tr>"; ls_detail += ls_item; } html += "<div style='margin-left:8px;margin-right:16px;'>" + +"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" + ls_detail +"</table>" +"</div>" ; if(dw_list.GetItemString(row,"QualityTerm")!="") { html += "<div style='height:12px'/>"; html += "<div ><span style='font-weight:700;width:50;font-size:10pt' >(Ï‘:</span></div>" ; html += "<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row,"QualityTerm") + "</span></div>" ; } if(dw_list.GetItemString(row,"PackTerm")!="") { html += "<div style='height:12px'/>"; html += "<div ><span style='font-weight:700;width:50;font-size:10pt' >Sň(Ï‘:</span></div>" ; html += "<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row,"PackTerm") + "</span></div>" ; } if(dw_list.GetItemString(row,"Remark")!="") { //html += "<div style='height:12px'/>"; html += "<div ><span style='font-weight:700;width:50;font-size:10pt' >Yèl:</span></div>" ; html += "<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row,"Remark") + "</span></div>" ; } html += "<div style='height:24px'/>"; //fhy˜ html += ls_star; //>f:yþVGr /*string picname = "1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,"ImgName"); //ItemID+".jpg"; string str = picname.mid(0,2); str = str.upper(); string serversrc ="http://192.168.7.241:1001/business/products/chanpin/"+str+"/"+picname; html += "<div ><span style='font-weight:700;width:50;font-size:10pt' >þVGr:</span>"; html += "<control visible='layer' controlclass='ximage' data='' src='"+ serversrc +"'/></div>"; */ html += "</body></html>"; //trace(html); return html; } int OnPreviewImage() { int hItem = tv_folder.GetSelectedItem(); msxml::IXMLDOMElement e1= tv_folder.GetItemData(hItem); string categoryid = e1.selectSingleNode("@guid").text; //alert(categoryid); xaserverarg arg=new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("SKUID",""); arg.AddArg("CategoryID",categoryid); OpenWindow("dev:xpage[PictureViewDlg.Product3.vx]",trust(arg as int)); return 1; } int DeleteRow(int row) { int IDOK = 1; int MB_OKCANCEL = 1; int MB_ICONQUESTION = 32; if(win32::MessageBox(GetHWND(),"nx¤‹ Rd–cš[„vy˜ ÿ Rd–T\ Ný€b` Y?","Ðc:y",MB_OKCANCEL|MB_ICONQUESTION)!=IDOK) return 1; string id = dw_list.GetGuid(row); if(ProductLibraryView::DeleteItem(id)==1) dw_list.DeleteRow(0); return 1; } int OnSearch() { int hItem = tv_folder.GetSelectedItem(); return RetrieveItem(hItem); } //}TäNÑS^ýQpe int OnCmdDispatch(string comdid) { int hCursor; string name=""; if(comdid=="xmClose") { CloseWindow(); return 1; } else if(comdid=="xmDelete") { int row = dw_list.GetRow(); if(row < 1) return 1; DeleteRow(row); return 1; } else if(comdid=="xmSearch") { OnSearch(); return 1; } else if(comdid=="xmPreviewImage") { return OnPreviewImage(); } return 0; } //}TäNYt‹NöN int OnXCommand(ref TXCommandEvent evt,int param) { return OnCmdDispatch(evt.pStrID); } //åg~bS_MRhy˜„vv˜§~îvU_ int LookupTopFolder(int hItem) { int hRoot = tv_folder.GetRootItem(); while(tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem); return hItem; } //ÒceQ§NÁT{|y˜„vP[y˜ int MakeGoodsFolderItem(int hItem, string sno) { xml x = ProductLibraryView::GetTreeChildItems3(sno); if(!x) return 0; msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//Item"); int len = nlist.length; for (int i = 0; i < len; i++) { msxml::IXMLDOMElement e = nlist.item(i); string name = e.getAttribute("CName"); string no = e.getAttribute("CategoryNo"); string label = no.trim() + " " + name; int h= tv_folder.InsertChildItem(hItem,label, trust(e as int),15); tv_folder.SetItemChild(h,1); } return 1; } //ÒceQ°e§NÁTîvU_P[y˜ int MakeUserGoodsFolderItem(int hItem, string sno) { xml x = ProductLibraryView::GetTreeUserChildItems3(sno); if(!x) return 0; msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//Item"); int len = nlist.length; for (int i = 0; i < len; i++) { msxml::IXMLDOMElement e = nlist.item(i); string name = e.getAttribute("CName"); string no = e.getAttribute("CategoryNo"); string label = no.trim() + " " + name; int h= tv_folder.InsertChildItem(hItem,label, trust(e as int),15); string child = e.getAttribute("Childs"); if(child=="") tv_folder.SetItemChild(h,1); else if(child !="0") tv_folder.SetItemChild(h,1); } return 1; } //hU\_ int OnTreeExpanding(ref TNotifyEvent evt,int p) { ref NMTREEVIEW nmtv = evt.pnmh; int hItem = nmtv.itemNew.hItem; int hTopItem = LookupTopFolder(hItem); string name = tv_folder.GetItemLabel(hTopItem); int child = tv_folder.GetChildItem(hItem); string no =""; msxml::IXMLDOMElement e; if(name == "'÷S“^" && !child ) { no =""; if(hTopItem != hItem) { e= tv_folder.GetItemData(hItem); no = e.getAttribute("categoryid"); }else { e= tv_folder.GetItemData(hItem); no = e.getAttribute("categoryid"); } MakeGoodsFolderItem(hItem, no); } return 1; } int ResetAgent(string agentAsk) { if(agentFor != agentAsk) { agentFor = agentAsk; m_agentNode = 0; SetAgent(); } return 1; } int RetrieveItem(int hItem) { int hTopItem = LookupTopFolder(hItem); string name = tv_folder.GetItemLabel(hTopItem); string selectname = tv_folder.GetItemLabel(hItem); imageview im = GetControl("im1"); xcontrol query = GetControl("sl_search"); string queryString = query.GetText(); if(agentFor !="goodslib")SwitchLayer("goodslibsheet","sheetframe"); if(name == "*NºN“^") ResetAgent("userlib"); else ResetAgent("goodslib"); int hCursor = xutil::SetCursorWait(); if(name == "*NºN“^" || name=="'÷S“^") { string no="N000005"; if(name=="*NºN“^") no="U000005"; if(hItem != hTopItem) { msxml::IXMLDOMElement e= tv_folder.GetItemData(hItem); no = e.getAttribute("guid"); } dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(no).GetXmlDoc()); dw_list = GetControl("dw_list"); dw_list.Reset(); dw_list.SetReadOnly(true); if(queryString=="") { if(name == "*NºN“^") dw_list.Retrieve(ProductLibraryView::GetMaintRoleList3(no)); else dw_list.Retrieve(ProductLibraryView::GetMaintList3(no)); } else { if(name == "*NºN“^") dw_list.Retrieve(ProductLibraryView::GetMaintRoleList3(no,queryString)); else { if(queryString !="") { if(no=="N000005") dw_list.Retrieve(ProductLibraryView::GetMaintList3("",queryString,"")); else dw_list.Retrieve(ProductLibraryView::GetMaintList3(no,queryString,"")); }else dw_list.Retrieve(ProductLibraryView::GetMaintList3(no)); } } dw_list.PostRetrieve(); dw_list.Redraw(); htmlctrl xs = GetControl("html_detail"); if(dw_list.GetRowCount() >0) { xs.SetContent(makeHtml(1)); string id = dw_list.GetGuid(1); OnShowImage(id); }else { im.ResetEx(); im.Redraw(); xs.SetContent("<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); } xs.Redraw(); xutil::RestoreCursor(hCursor); } dw_list.SetReadOnly(true); } int OnTreeSelChanged(ref TNotifyEvent evt,int p) { ref NMTREEVIEW nmtv = cast(evt.pnmh as NMTREEVIEW); int hItem = nmtv.itemNew.hItem; return RetrieveItem(hItem); } int ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement) { msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item"); int len = nlist.length; for (int i = 0; i < len; i++) { msxml::IXMLDOMElement e = nlist.item(i); string name = e.getAttribute("cname"); string sImage = e.getAttribute("image"); int image = 15; //if(sImage) image = sImage.toInt(); int h= tv_folder.InsertChildItem(tv_folder.GetId(),hItem,name, trust(e as int),image); tv_folder.SetItemChild(h,1); ExpandChildFolder(h,e); } return 1; } int InitialFolder() { msxml::IXMLDOMElement xframeElement = GetElement(); msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial"); ExpandChildFolder(0,e); return 1; } int OnAttachEvent() { //Ñ~š[å]wQag¹pûQ‹NöN AttachEvent("WM_XCOMMAND",OnXCommand); //·ƒÖS&q¹p‹NöN ÿ(uŽN͑nå]wQag AttachEvent("WM_SETFOCUS",OnSetFocus); AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged); AttachEvent("tv_folder", "TVN_ITEMEXPANDING",OnTreeExpanding); AttachEvent("tv_folder", "TVN_SELCHANGED",OnTreeSelChanged); AttachEvent("im1","IMG_LDBCLICK",OnImgDBClicked); } int OnImgDBClicked(ref TNotifyEvent evt,int pr) { ref IMGNNMHDR nmtv = evt.pnmh; string src = nmtv.path; /*if(src.length() > 60) src = src.right(44); else src=src.mid(src.find("Thumbs", 0)+6, 50); */ xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); //arg.AddArg("src","/business/products/chanpin"+src); arg.AddArg("src",src); //win::OpenWindow("dev:xpage[BigPicture.vx]",arg); //int h = ("/sale/view/ProductLibrary/xpage/bigpictureview", arg); int h=OpenWindow("dev:xpage[BigPictureView.Product3.vx]",cast(arg as int)); /* xwin x = new xwin; x.setNativePointer(h); m_winHwnd = x.GetHWND(); string sh = doc.GetXml(); int p = cast(sh as int); win32::SendMessage(m_winHwnd, 0x401, p, 0); */ return 1; } int onload() { agentFor = "goodslib"; OnAttachEvent(); tv_folder = GetControl("tv_folder"); dw_list = GetControl("dw_list"); xaserverarg arg = GetParam(); hObject = 0; if(arg) { hObject = arg.GetArgString("HWND").toInt(); } InitialFolder(); dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3("").GetXmlDoc()); dw_list = GetControl("dw_list"); dw_list.SetReadOnly(true); if(dw_list.GetRowCount()) { htmlctrl xs = GetControl("html_detail"); xs.SetContent(makeHtml(1)); } xtreeview::ExpandItem(tv_folder.GetId(), xtreeview::GetRootItem(tv_folder.GetId())); int hItem = tv_folder.GetRootItem(); tv_folder.ItemFocus(hItem); return 1; } int onloaded() { SetAgent(); return 1; } }; ]