ÿþuse "xcontrol.vframe.vbusiness.vd" use "xbase.vframe.vbusiness.vd" use "productlibrary.vd" unit trade [ class UserProductApply : public xframe { xdwgrid dw_list; msxml::IXMLDOMElement imageElement; xnode m_agentNode; //Agent Condition 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 OnRetrieve() { xml x=new xml; xcontrol query = GetControl("sle_search"); string keyword = query.GetText(); //alert(keyword); x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("keyword",keyword); if(url::get("/sale/data/ProductLibrary3/data/list/applylist", arg.GetString(),x)!=1) { string error = x.GetXmlDoc().text; trace(error); } else { dw_list.Retrieve(x); } for(int i=1;i<=dw_list.GetColumnCount();i++) { //trace(dw_list.GetColumnName(i)); if(dw_list.GetColumnName(i)!="GoodsNo" && dw_list.GetColumnName(i)!="EName" && dw_list.GetColumnName(i)!="CName"&& dw_list.GetColumnName(i)!="Packing") dw_list.SetReadOnlyColumn(i); } dw_list.Redraw(); } 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='VolumeDesc1' 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,"SKUNo")+ "</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' >lQøS‹W÷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 /* if (id != "") { xml xp=new xml; xp.setNativePointer(xml::CreateInstance()); xaserverarg arg_pic=new xaserverarg; arg_pic.setNativePointer(arg_pic.CreateInstance()); arg_pic.AddArg("SKUID",id); if(url::get("/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1) { trace("xxx",xp.GetXml()); }else { html += "<div ><span style='font-weight:700;width:50;font-size:10pt' >þVGr:</span>" ; msxml::IXMLDOMElement ep= xp.GetXmlDoc().selectSingleNode("ImageList"); if (ep) { if (ep.SelectNodes("image")){ msxml::IXMLDOMNodeList nlistp = ep.SelectNodes("image"); int ip=0; int lenp = nlistp.length; for(ip=0;ip<lenp;ip++) { msxml::IXMLDOMElement xitemp = nlistp.item(ip); string filename = xitemp.selectSingleNode("PicPath").text; //trace(filename); html += "<control visible='layer' controlclass='ximage' data='' src='http://192.168.7.241:7001" + filename +"'/>"; } } } html += "</div>"; } }else { 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 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 { //trace(skuid+" "+xp.GetXml()); 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; } 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 OnSave() { dw_list.AcceptText(); if(dw_list.GetRowCount() < 1) return 0; xml x = new xml; x.setNativePointer(xml::CreateInstance()); dw_list.DwUpdateAllToEx(x.GetXmlDoc()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); xml x0 = new xml; x0.setNativePointer(xml::CreateInstance()); x0.LoadXml("<data/>"); msxml::IXMLDOMNodeList t = x.GetXmlDoc().selectNodes("data/Item[(@update.new='1') or (@update.modify='1') or (@update.delete='1') ]"); msxml::IXMLDOMElement e1= x0.GetXmlDoc().documentElement; for(int i=0; i < t.length; i++) { msxml::IXMLDOMElement e= t.item(i); e1.appendChild(e); } arg.AddArg("content",x0.GetXml()); //trace(x.GetXml()); if(url::get("/sale/data/ProductLibrary3/update/productex", arg.GetString(),x0)!=1) { string error = x0.GetXmlDoc().text; alert(error); return 1; }else { alert("ÝOX[bŸR"); arg.AddArg("No", dw_list.GetItemString(dw_list.GetRow(),"SKUNo")); if(url::get("/sale/data/business/message/productApplyedMessage", arg.GetString(),x0)!=1) { error = x0.GetXmlDoc().text; trace(error); return 0; } } return 1; } int OnMakeNewGoodsNo() { if(dw_list.GetItemString(dw_list.GetRow(),"GoodsNo")!="") return 1; if(dw_list.GetRowCount()<1) return 1; xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("EntityID", dw_list.GetGuid(dw_list.GetRow())); msxml::IXMLDOMElement e = dw_list.GetRowElement(dw_list.GetRow()); int pr = cast(e as int); arg.AddArg("data",pr.toString()); pr = cast(dw_list as int); arg.AddArg("dw",pr.toString()); arg.AddArg("HWND",GetHWND().toString()); OpenWindow("dev:xpage[ProductNewItem.vx]",cast(arg as int)); return 1; } //}TäNÑS^ýQpe int OnCmdDispatch(string comdid) { if(comdid=="xmCancel") { CloseWindow(); return 1; } if(comdid=="xmMakeGoodsNo") { return OnMakeNewGoodsNo(); } if(comdid=="xmProductView") { OpenWindow("dev:xpage[Product.SearchDlg.vx]",0); return 1; } if(comdid=="xmRefresh") { return OnRetrieve(); } if(comdid=="xmDelete") { /*int row = listwin::dw_list.GetNextSelectRow(1); if (row < 1){ row = listwin::dw_list.GetRow(); if (row < 1) { //win::MessageBox(GetHWND(),"÷‹ -N‰ Rd–„vLˆÿ","Ðc:y",0); return -1; } }*/ int row = dw_list.GetRow(); string sguid = dw_list.GetItemString(dw_list.GetRow(),"SKUID"); //msxml::IXMLDOMElement e = listwin::dw_list.GetRowElement(dw_list.GetRow()); xml skuid_x = ViewObject::RetrieveData("/sale/data/ProductLibrary3/ProductNumberone","SKUID", sguid); string skuidEx=skuid_x.GetXmlDoc().text ; int skuid1=skuidEx.toInt() ; if(skuid1) { if(skuid1 >0) { alert("¢‹USò] g§NÁT ÿ NAQ¸‹ Rd–ÿ"); return 0; } } int MB_YESNO = 0x00000004; int IDYES = 6; if(win32::MessageBox(GetHWND(),"nx¤‹ Rd–Tÿ","Ðc:y",MB_YESNO)!=IDYES) return 1; xml x = new xml; x.setNativePointer(x.CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("EntityID",sguid); trace(sguid); if (url::post("/sale/data/ProductLibrary3/delete/Product",arg.GetString(),x) != 1) { string error = x.GetXmlDoc().text; trace(error); } else { msxml::IXMLDOMElement msg = x.GetXmlDoc().SelectNodes("process").item(0); string success = msg.SelectSingleNode("@finished").text; if(success == "0") { alert(msg.SelectSingleNode("@errInfo").text); }else { win32::MessageBox(GetHWND()," Rd–bŸRÿ","Ðc:y",0); //listwin::dw_list.DeleteRow(row); dw_list.DeleteRow(row); } } return 0; } if(comdid=="xmSave") return OnSave(); return 0; } int OnItemChanged(ref TNotifyEvent evt,int p) { ref DWNMHDR hdr = trust(evt.pnmh as ref DWNMHDR); string colname=hdr.colname; string value = hdr.data; int row = hdr.row; string GoodsNo=""; if (colname=="GoodsNo" ) { GoodsNo =dw_list.GetItemString(row,"GoodsNo"); xml x1= ViewObject::RetrieveData("/sale/data/ProductLibrary3/GetGoodNo","str",GoodsNo); string Results1=x1.GetXmlDoc().text; if(Results1 !="") { alert(Results1); dw_list.SetItemString(row,"GoodsNo",""); return 0; } } dw_list.Redraw(); return 1; } //}TäNYt‹NöN int OnXCommand(ref TXCommandEvent evt,int param) { return OnCmdDispatch(evt.pStrID); } 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("im1","IMG_LDBCLICK",OnImgDBClicked); AttachEvent("dw_list","DWV_ITEMCHANGED",OnItemChanged); } int onload() { dw_list = GetControl("dw_list"); dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3("").GetXmlDoc()); dw_list.SetEditUpperMode(true); OnAttachEvent(); dw_list.SetColumnState("EntityID",false); return 1; } int onloaded() { SetAgent(); OnRetrieve(); return 1; } }; ]