ÿþ#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 "xcontrol/xshtml.hpp" #include <xcontrol/ximageview.hpp> #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" #include "viewobject/productlibrary.view.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) UserProductApply : public xframe { public: UserProductApply(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static UserProductApply* CreateInstance(void* implPtr, void* hWnd) { return new UserProductApply(implPtr, (HWND)hWnd); } public: xdwgrid dw_list; KXMLDOMElement imageElement; xnode m_agentNode; //Agent Condition 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;mYtýQpe int OnSetFocus(TEvent* evt, LPARAM param) { //͑nå]wQag SetAgent(); return 1; } int OnRetrieve() { xml x; xcontrol query = GetControl(L"sle_search"); xstring keyword = query.GetText(); //alert(keyword); xaserverarg arg ; arg.AddArg(L"keyword",keyword); if(xurl::get(L"/sale/data/ProductLibrary3/data/list/applylist", arg.GetString(),x)!=1) { xstring error = x.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)!=L"GoodsNo" && dw_list.GetColumnName(i)!=L"EName" && dw_list.GetColumnName(i)!=L"CName"&& dw_list.GetColumnName(i)!=L"Packing") dw_list.SetReadOnlyColumn(i); } dw_list.Redraw(); return 1; } xml GetGoodsPropList(xstring guid) { xml x; xaserverarg arg ; arg.AddArg(L"guid", guid); if(xurl::get(L"/sale/data/SO/goods/goodsprop/list", arg.GetString(),x)!=1) { xstring error = x.text(); alert(error); } return x; } xml GetGoodsPropListEx(xstring guid) { xml x; xstring fields=L"<data>"; //fields +=L"<field name='HighestPrice' label='gؚ÷N'/>"; //fields +=L"<field name='LowestPrice' label='gNO÷N'/>"; //fields +=L"<field name='BulkPrice' label='ce'÷N'/>"; //fields +=L"<field name='CardPrice' label='¸~aS÷N'/>"; //fields +=L"<field name='BuyPrice' label='Ǒ-÷N'/>"; //fields +=L"<field name='SupplierID' label=''n'/>"; fields +=L"<field name='Packing' label='Sň¹e_'/>"; fields +=L"<field name='PackingRate' label='Ïk±{peϑ'/>"; fields +=L"<field name='VolumeDesc1' label='Sň:\x'/>"; fields +=L"<field name='GWPerPkg' label='Ûk͑'/>"; fields +=L"<field name='NWPerPkg' label='ÀQ͑'/>"; //fields +=L"<field name='DeveloperID' label='_ÑSºNXT'/>"; fields +=L"<field name='AttributeValue_1' label='§NÁT^\'`'/>"; //fields +=L"<field name='Remark' label='Yèl'/>"; fields += L"</data>"; x.loadXML(fields); return x; } xstring makeHtml(int row) { xstring id = dw_list.GetGuid(row); xml x = GetGoodsPropList(id); xml x1 = GetGoodsPropListEx(id); xstring html = L"<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'>"; html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >÷S:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"SKUNo") + L"</span> <span style='font-weight:700;width:50;font-size:10pt' >{|y˜:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"RefNo") + L"</span></div>"; html += L"<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, L"GoodsNo") + L"</span></div>"; html += L"<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, L"CName") + L"</span></div>"; if (dw_list.GetItemString(row, L"CSpec") != L"") html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >ĉ<span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"CSpec") + L"</span></div>"; KXMLDOMNodeList fieldsEx = x1.selectNodes(L"data/field"); xstring ls_detail=L""; xstring ls_item =L""; xstring name; xstring label; int len = fieldsEx.length(); int i= 0; for(i=0;i<len; true) { int cnt = 0; ls_item = L""; while(cnt < 2) { name = fieldsEx.item(i).selectSingleNode(L"@name").text(); label = fieldsEx.item(i).selectSingleNode(L"@label").text(); ls_item += L"<td>" + label + L"</td>" + L"<td style='text-align:center'>" + dw_list.GetItemString(row,name.c_str()) + L"</td>" ; cnt++; i++; if(i ==len)break; } ls_detail += L"<tr>" + ls_item + L"</tr>"; } html += (xstring) L"<div style='margin-left:8px;margin-right:16px;'>" + +L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" + ls_detail +L"</table>" +L"</div>" ; xstring ls_star=L""; KXMLDOMNodeList fields = x.selectNodes(L"data/field"); len = fields.length(); ls_detail = L""; if(len > 0) html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >€b/g‰Bl:</span></div>" ; for(i=0;i<len; true) { ls_item=L""; int count = 0; while(count < 2) { name = fields.item(i).selectSingleNode(L"@name").text(); label = fields.item(i).selectSingleNode(L"@label").text(); if(name==L"QualityTerm" || name==L"PackTerm" || label==L"(Ï‘" || label==L"Sň(Ï‘" || label==L"€b/g‰Bl") { i++; if(i >= len)count = 2; continue; } else if(dw_list.GetItemString(row,name.c_str())==L"") { KXMLDOMNodeList options = fields.item(i).selectNodes(L"item"); int tlen = options.length(); xstring terms = L"" ; for(int k=0; k<tlen; k++) { if(options.item(k).text()) { if(k>0) terms += L", L"; terms += L"[" + (xstring)options.item(k).text() +L"]"; } } ls_star += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >" + label +L"*:</span><span style='width:90;font-size:10pt'>" + terms + L"</span></div>" ; }else { ls_item = L"<td>" + label + L"</td>" + L"<td>" + dw_list.GetItemString(row,name.c_str()) + L"</td>" ; count++; } i++; if(i >= len)count = 2; } ls_item = L"<tr>" + ls_item + L"</tr>"; ls_detail += ls_item; } html += (xstring) L"<div style='margin-left:8px;margin-right:16px;'>" + +L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" + ls_detail +L"</table>" +L"</div>" ; if(dw_list.GetItemString(row,L"QualityTerm")!=L"") { html += L"<div style='height:12px'/>"; html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >(Ï‘:</span></div>" ; html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row,L"QualityTerm") + L"</span></div>" ; } if(dw_list.GetItemString(row,L"PackTerm")!=L"") { html += L"<div style='height:12px'/>"; html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >Sň(Ï‘:</span></div>" ; html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row,L"PackTerm") + L"</span></div>" ; } if(dw_list.GetItemString(row,L"Remark")!=L"") { //html += L"<div style='height:12px'/>"; html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >Yèl:</span></div>" ; html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row,L"Remark") + L"</span></div>" ; } html += L"<div style='height:24px'/>"; //fhy˜ html += ls_star; //>f:yþVGr /* if (id != L"") { xml xp; xaserverarg arg_pic; arg_pic.AddArg(L"SKUID",id); if(xurl::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1) { trace(L"xxx",xp.xml()); }else { html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >þVGr:</span>" ; KXMLDOMElement ep= xp.selectSingleNode(L"ImageList"); if (ep) { if (ep.selectNodes(L"image")){ KXMLDOMNodeList nlistp = ep.selectNodes(L"image"); int ip=0; int lenp = nlistp.length(); for(ip=0;ip<lenp;ip++) { KXMLDOMElement xitemp = nlistp.item(ip); xstring filename = xitemp.selectSingleNode(L"PicPath").text(); //trace(filename); html += L"<control visible='layer' controlclass='ximage' data='' src='http://192.168.7.241:7001" + filename +L"'/>"; } } } html += L"</div>"; } }else { xstring picname = L"1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,L"ImgName"); //ItemID+L".jpg"; xstring str = picname.mid(0,2); str = str.toUpper(); xstring serversrc =L"http://192.168.7.241:1001/business/products/chanpin/"+str+L"/"+picname; html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >þVGr:</span>"; html += L"<control visible='layer' controlclass='ximage' data='' src='"+ serversrc +L"'/></div>"; } */ html += L"</body></html>"; //trace(html); return html; } int OnShowImage(xstring skuid) { ximageview im = GetControl(L"im1"); //im.RemoveImage(); im.Reset(); xml xp; xaserverarg arg_pic; arg_pic.AddArg(L"SKUID",skuid); if(xurl::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1) { trace(xstring(L"xxx",xp.xml())); }else { //trace(skuid+L" "+xp.xml()); imageElement = xp.documentElement(); KXMLDOMNodeList nlistp= xp.selectNodes(L"ImageList/image"); int lenp = nlistp.length(); for(int ip=0;ip<lenp;ip++) { KXMLDOMElement xitem = nlistp.item(ip); xstring picname = xitem.selectSingleNode(L"PicPath").text(); xstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); if(picname == L"/business/products/Thumbs//") picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; im.AddImages(picname, L""); } im.Redraw(); //SendMessage(im.GetId(),0x000f,0,1); //InvalidateRect(im.GetId(),cast(0 as ref xrect),true); } return 1; } int OnRowChanged(TEvent* evt, int p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; xshtml xs = GetControl(L"html_detail"); xstring html = makeHtml(row); xs.SetContent(html); xs.Redraw(); xstring id = dw_list.GetGuid(row); OnShowImage(id); return 1; } int OnImgDBClicked(TEvent* evt, int p) { IMGNNMHDR& nmtv = *(IMGNNMHDR*)evt->notify.pnmh; xstring src = nmtv.path; /*if(src.length()() > 60) src = src.right(44); else src=src.mid(src.find(L"Thumbs", 0)+6, 50); */ xaserverarg arg ; //arg.AddArg(L"src",L"/business/products/chanpin"+src); arg.AddArg(L"src",src); //win::OpenWindow(L"dev:xpage[BigPicture.vx]",arg); //int h = (L"/sale/view/ProductLibrary/xpage/bigpictureview", arg); OpenWindow(L"dev:xpage[BigPictureView.Product3.vx]",arg); /* xwin x = new xwin; x.setNativePointer(h); m_winHwnd = x.GetHWND(); xstring sh = doc.xml(); int p = cast(sh as int); SendMessage(m_winHwnd, 0x401, p, 0); */ return 1; } int OnSave() { xstring error = L""; dw_list.AcceptText(); if(dw_list.GetRowCount() < 1) return 0; xml x ; dw_list.DwUpdateAllToEx(x); xaserverarg arg ; xml x0 ; x0.loadXML(L"<data/>"); KXMLDOMNodeList t = x.selectNodes(L"data/Item[(@update.new='1') or (@update.modify='1') or (@update.delete='1') ]"); KXMLDOMElement e1= x0.documentElement(); for(int i=0; i < t.length(); i++) { KXMLDOMElement e= t.item(i); e1.appendChild(e); } arg.AddArg(L"content",x0.xml()); //trace(x.xml()); if(xurl::get(L"/sale/data/ProductLibrary3/update/productex", arg.GetString(),x0)!=1) { error = x0.text(); alert(error); return 1; }else { alert(L"ÝOX[bŸR"); arg.AddArg(L"No", dw_list.GetItemString(dw_list.GetRow(),L"SKUNo")); if(xurl::get(L"/sale/data/business/message/productApplyedMessage", arg.GetString(),x0)!=1) { error = x0.text(); trace(error); return 0; } } return 1; } int OnMakeNewGoodsNo() { if(dw_list.GetItemString(dw_list.GetRow(),L"GoodsNo")!=L"") return 1; if(dw_list.GetRowCount()<1) return 1; xaserverarg arg ; arg.AddArg(L"EntityID", dw_list.GetGuid(dw_list.GetRow())); KXMLDOMElement e = dw_list.GetRowElement(dw_list.GetRow()); arg.SetParam(L"data",e); arg.SetParam(L"dw",dw_list); arg.SetParam(L"HWND",GetHWND()); OpenWindow(L"dev:xpage[ProductNewItem.vx]",arg); return 1; } //}TäNÑS^ýQpe int OnCmdDispatch(xstring comdid) { if(comdid==L"xmCancel") { CloseWindow(); return 1; } if(comdid==L"xmMakeGoodsNo") { return OnMakeNewGoodsNo(); } if(comdid==L"xmProductView") { OpenWindow(L"dev:xpage[Product.SearchDlg.vx]",0); return 1; } if(comdid==L"xmRefresh") { return OnRetrieve(); } if(comdid==L"xmDelete") { /*int row = listwin::dw_list.GetNextSelectRow(1); if (row < 1){ row = listwin::dw_list.GetRow(); if (row < 1) { //win::MessageBox(GetHWND(),L"÷‹ -N‰ Rd–„vLˆÿ",L"Ðc:y",0); return -1; } }*/ int row = dw_list.GetRow(); xstring sguid = dw_list.GetItemString(dw_list.GetRow(),L"SKUID"); //KXMLDOMElement e = listwin::dw_list.GetRowElement(dw_list.GetRow()); xml skuid_x = ViewObject::RetrieveData(L"/sale/data/ProductLibrary3/ProductNumberone",L"SKUID", sguid); xstring skuidEx=skuid_x.text() ; int skuid1=skuidEx.toInt() ; if(skuid1) { if(skuid1 >0) { alert(L"¢‹USò] g§NÁT ÿ NAQ¸‹ Rd–ÿ"); return 0; } } int MB_YESNO = 0x00000004; int IDYES = 6; if(MessageBox(GetHWND(),L"nx¤‹ Rd–Tÿ",L"Ðc:y",MB_YESNO)!=IDYES) return 1; xml x ; xaserverarg arg ; arg.AddArg(L"EntityID",sguid); trace(sguid); if (xurl::post(L"/sale/data/ProductLibrary3/delete/Product",arg.GetString(),x) != 1) { xstring error = x.text(); trace(error); } else { KXMLDOMElement msg = x.selectNodes(L"process").item(0); xstring success = msg.selectSingleNode(L"@finished").text(); if(success == L"0") { alert(msg.selectSingleNode(L"@errInfo").text()); }else { MessageBox(GetHWND(),L" Rd–bŸRÿ",L"Ðc:y",0); //listwin::dw_list.DeleteRow(row); dw_list.DeleteRow(row); } } return 0; } if(comdid==L"xmSave") return OnSave(); return 0; } int OnItemChanged(TEvent* evt, int p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; xstring colname=hdr.colname; xstring value = hdr.data; int row = hdr.row; xstring GoodsNo=L""; if (colname==L"GoodsNo" ) { GoodsNo =dw_list.GetItemString(row,L"GoodsNo"); xml x1= ViewObject::RetrieveData(L"/sale/data/ProductLibrary3/GetGoodNo",L"str",GoodsNo); xstring Results1=x1.text(); if(Results1 !=L"") { alert(Results1); dw_list.SetItemString(row,L"GoodsNo",L""); return 0; } } dw_list.Redraw(); return 1; } //}TäNYt‹NöN int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //Ñ~š[å]wQag¹pûQ‹NöN AttachEvent(L"WM_XCOMMAND", (FEvent)&UserProductApply::OnXCommand); //·ƒÖS&q¹p‹NöN ÿ(uŽN͑nå]wQag AttachEvent(L"WM_SETFOCUS", (FEvent)&UserProductApply::OnSetFocus); AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&UserProductApply::OnRowChanged); AttachEvent(L"im1",L"IMG_LDBCLICK", (FEvent)&UserProductApply::OnImgDBClicked); AttachEvent(L"dw_list",L"DWV_ITEMCHANGED", (FEvent)&UserProductApply::OnItemChanged); return 1; } int onload() { dw_list = GetControl(L"dw_list"); dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"")); dw_list.SetEditUpperMode(true); OnAttachEvent(); dw_list.SetColumnState(L"EntityID",false); return 1; } int onloaded() { SetAgent(); OnRetrieve(); return 1; } };