From a4d2315ee4ca3f6177b4fb2526bed2feff3d89be Mon Sep 17 00:00:00 2001
From: lifan <2308045698@qq.com>
Date: 星期三, 22 十月 2025 16:52:58 +0800
Subject: [PATCH] update
---
jrj/project/business/Product.list.cpp | 1583 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,583 insertions(+), 0 deletions(-)
diff --git a/jrj/project/business/Product.list.cpp b/jrj/project/business/Product.list.cpp
index e69de29..7c29d66 100644
--- a/jrj/project/business/Product.list.cpp
+++ b/jrj/project/business/Product.list.cpp
@@ -0,0 +1,1583 @@
+#include <wobject/xstring.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <xcontrol/ximageview.hpp>
+
+#include "vbusiness/vframe/maint.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+#include "viewobject/saleorder.view.hpp"
+#include "viewobject/quote.view.hpp"
+#include "viewobject/shoppingcart.view.hpp"
+#include "viewobject/productLibrary.view.hpp"
+#include "xcontrol/xcheckbox.hpp"
+#include "xcontrol/xshtml.hpp"
+
+class __declspec(dllexport) ProductLibrary4Win : public xframe
+{
+public:
+ //产品库产品列表
+ xdwgrid dw_list;
+ //购物车产品列表
+ xdwgrid dwc_list;
+
+ //产品缓存对象
+ //xdataset g_xdoc_product;
+ //xdataset g_xdoc_shoppingcart;
+
+ xcombobox cbx_goodscar;
+ //是否多选
+
+ xnode m_agentNode; //Agent Condition
+ xtreeview tv_folder;
+ xstring agentFor;
+ KXMLDOMElement imageElement;
+ xstring m_customer;
+
+public:
+ ProductLibrary4Win(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+public:
+ static ProductLibrary4Win* CreateInstance(void* implPtr, void* hWnd)
+ {
+ ProductLibrary4Win* pWin = new ProductLibrary4Win(implPtr, (HWND)hWnd);
+ return pWin;
+ }
+public:
+ int FillGoodsCarList()
+ {
+ xcombobox xc = GetControl(L"frame:cbx_goodscar");
+ if (!xc) return 0;
+ xml x = ShoppingCartView::GetRoleList();
+ if (!x) return 0;
+ xc.SetText(L"==选择购物车==L");
+
+ KXMLDOMNodeList nlist = x.selectNodes(L"//item");
+ int len = nlist.length();
+ for (int i = 0; i < len; i++)
+ {
+ KXMLDOMElement e = nlist.item(i);
+ xstring name = e.getAttribute(L"name");
+ xc.AddItem( name);
+ }
+ return 1;
+ }
+
+ 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"[@for='" + agentFor + L"']/*");
+ if (agent)
+ {
+ bstring s = agent.xml();
+ m_agentNode = SetAgentNode(anode, s);
+ //FillGoodsCarList();
+ }
+ }
+ return 1;
+ }
+
+ //焦点激活处理函数
+ int OnSetFocus(TEvent * evt, int param)
+ {
+ //重置工具条
+ SetAgent();
+ return 1;
+ }
+
+ KXMLDOMElement OnGetCarListRowElement(int row = 0)
+ {
+ if (row < 1) row = dwc_list.GetRow();
+ if (row < 1 || row > dwc_list.GetRowCount()) return KXMLDOMElement();
+ KXMLDOMElement e = dw_list.GetRowElement(row);
+ return e;
+ }
+
+ 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.GetXml());
+ 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, (LPTSTR)L"");
+ }
+ im.Redraw();
+ //win32::SendMessage(im.GetId(),0x000f,0,1);
+ //win32::InvalidateRect(im.GetId(),cast(0 as ref xrect),true);
+ }
+ return 1;
+ }
+
+ int OnShowImage(xstring skuid, xstring customerItemNo)
+ {
+ ximageview im = GetControl(L"im1");
+ //im.RemoveImage();
+ im.Reset();
+
+ xml xp ;
+ xaserverarg arg_pic ;
+ arg_pic.AddArg(L"SKUID", skuid);
+ arg_pic.AddArg(L"CustomerID", m_customer);
+ arg_pic.AddArg(L"CustomerItemNo", customerItemNo);
+
+ if (xurl::get(L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKU", arg_pic.GetString(), xp) != 1)
+ {
+ trace(L"error:" + xstring(xp.xml(),true));
+ }
+ else
+ {
+ 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);
+ bstring picname = xitem.selectSingleNode(L"PicPath").text();
+ bstring 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();
+ }
+ 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);
+ trace(id);
+ return 1;
+ }
+
+ int OnGoodsCarRowChanged(TEvent * evt, int p)
+ {
+ DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+ int row = hdr.row;
+
+ xshtml xs = GetControl(L"html_detail");
+ xstring html = makeGoodscarHtml(row);
+ xs.SetContent(html);
+ xs.Redraw();
+ if (m_customer)
+ {
+ xstring id = dw_list.GetItemString(row, L"SKUID");
+ xstring customerItemNo =dw_list.GetItemString( row, L"CustomerItemNo");
+ OnShowImage(id, customerItemNo);
+ }
+
+ return 1;
+ }
+
+ int DeleteRow(int row)
+ {
+ int IDOK = 1;
+ int MB_OKCANCEL = 1;
+ int MB_ICONQUESTION = 32;
+ if (MessageBoxW(GetHWND(), L"确认删除指定的项,删除后将不能恢复?", L"提示", MB_OKCANCEL | MB_ICONQUESTION) != IDOK) return 1;
+ xstring id = dw_list.GetGuid(row);
+
+ if (ProductLibraryView::DeleteItem(id) == 1) dw_list.DeleteRow(0);
+ return 1;
+ }
+
+ int SetSelectState(xdwgrid dw_obj, int state)
+ {
+ if (state == 1)
+ {
+ dw_obj.SetSelectionMode(3);
+ }
+ else if (state == -1)
+ {
+ dw_obj.SelectRow(0, false);
+ dw_obj.SetSelectionMode(0);
+ }
+ return 1;
+ }
+ int OnCkbCLick(TEvent * evt, int p)
+ {
+ xcheckbox cbx_1 = GetControl(L"frame:cbx1");
+ int state = cbx_1.GetCheck();
+ return SetSelectState(dw_list, state);
+ }
+
+ int OnCkbCLick2(TEvent * evt, int p)
+ {
+ xcheckbox cbx_2 = GetControl(L"frame:cbx2");
+ int state = cbx_2.GetCheck();
+ return SetSelectState(dwc_list, state);
+ }
+
+ 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)
+ {
+ bstring error = x.text();
+ alert(error);
+ }
+ return x;
+ }
+
+ xml GetGoodsPropListEx(xstring guid)
+ {
+ xml x;
+ xstring fields = L"<data>";
+ //fields +=L"<field name='HighestPrice' label='最高价'/>";
+ //fields +=L"<field name='LowestPrice' label='最低价'/>";
+
+ //fields +=L"<field name='BulkPrice' label='散货价'/>";
+ //fields +=L"<field name='CardPrice' label='纸卡价'/>";
+ //fields +=L"<field name='BuyPrice' label='采购价'/>";
+ //fields +=L"<field name='SupplierID' label='货源'/>";
+
+ fields += L"<field name='Packing' label='包装方式'/>";
+ fields += L"<field name='PackingRate' label='每箱数量'/>";
+ fields += L"<field name='VolumeDesc' label='包装尺码'/>";
+ fields += L"<field name='GWPerPkg' label='毛重'/>";
+ fields += L"<field name='NWPerPkg' label='净重'/>";
+ //fields +=L"<field name='DeveloperID' label='开发人员'/>";
+ fields += L"<field name='AttributeValue_1' label='产品属性'/>";
+ //fields +=L"<field name='Remark' label='备注'/>";
+
+ fields += L"</data>";
+ x.loadXML(fields);
+
+ return x;
+ }
+
+ xstring makeHtml(int row)
+ {
+ xstring id = dw_list.GetItemString(row, L"@guid");
+ 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' >编号:</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' >类项:</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' >公司型号:</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' >品名:</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><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, (LPCTSTR)name) + 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' >技术要求:</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"包装质量" || label == L"技术要求")
+ {
+ i++;
+ if (i >= len)count = 2;
+ continue;
+ }
+ else if (dw_list.GetItemString( row, (LPCTSTR)name) == L"")
+ {
+ KXMLDOMNodeList options = fields.item(i).selectNodes(L"item");
+ int tlen = options.length();
+ xstring terms = L"";
+ for (int k = 0; k < tlen; k++)
+ {
+ if (xstring(options.item(k).text()))
+ {
+ if (k > 0) terms += L", L";
+ terms += (xstring)L"[" + 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, (LPCTSTR)name) + 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' >包装质量:</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' >备注:</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'/>";
+
+ //星标项
+ html += ls_star;
+
+ //显示图片
+ /*
+ if (id != L"")
+ {
+ xml xp=new xml;
+ xp.setNativePointer(xml::CreateInstance());
+ xaserverarg arg_pic=new xaserverarg;
+ arg_pic.setNativePointer(arg_pic.CreateInstance());
+ arg_pic.AddArg(L"SKUID",id);
+ if(url::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1)
+ {
+ trace(L"xxx",xp.GetXml());
+ }else {
+ html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >图片:</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.upper();
+ 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' >图片:</span>";
+ html += L"<control visible='layer' controlclass='ximage' data='' src='"+ serversrc +L"'/></div>";
+ }
+ */
+ html += L"</body></html>";
+ //trace(html);
+ return html;
+ }
+
+ xstring makeGoodscarHtml(int row)
+ {
+ xstring No = dwc_list.GetItemString(row, L"RefNo");//获取属性值id
+ xml x = GetGoodsPropList(No);
+
+ xstring html = L"<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>";
+ html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >编号:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"No") +
+ L"</span></div>";
+ html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >品名:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"CName") +
+ L"</span></div>";
+ html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >规格:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"CSpec") +
+ L"</span></div>";
+
+ KXMLDOMNodeList fields = x.selectNodes(L"data/field");
+ int len = fields.length();
+ html += (xstring)L"<table>" +
+ L"<colgroup span='1' width='80'/>" +
+ L"<colgroup span='1' width='120'/>" +
+ L"<colgroup span='1' width='420'/>";
+ html += L"<tr>";
+ html += L"<td style='text-align:center'>编号</td><td style='text-align:center'>项目</td><td style='text-align:center'>内容</td>";
+ html += L"</tr>";
+ for (int i = 0; i < len; i++)
+ {
+ xstring name = fields.item(i).selectSingleNode(L"@name").text();
+ xstring label = fields.item(i).selectSingleNode(L"@label").text();
+ html += L"<tr>";
+ if (i == 0)
+ html += L"<td rowspan='" + xstring(len) + L"'>" + No + L"</td><td >" + label + L"</td><td >" + L"</td>";
+ else
+ html += L"<td >" + label + L"</td><td >" +dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>";
+ html += L"</tr>";
+ }
+
+ html += L"<tr>";
+ html += L"<td rowspan='3'>" +dw_list.GetItemString( row, L"PackCode") + L"</td><td >包装方式</td><td >" +
+ dw_list.GetItemString(row, L"CPack") + L"</td>";
+ html += L"</tr>";
+ html += L"<tr height='48'>";
+ html += L"<td >包装要求</td><td >" +dw_list.GetItemString( row, L"PackQualityTerm") + L"</td>";
+ html += L"</tr>";
+ html += L"<tr>";
+ html += L"<td >侧唛</td><td ></td>";
+ html += L"</tr>";
+
+ html += L"<tr height='72'>";
+ html += L"<td>" +dw_list.GetItemString( row, L"QualityCode") + L"</td><td >质量要求</td><td >" +
+ dw_list.GetItemString(row, L"QualityTerm") + L"</td>";
+ html += L"</tr>";
+
+ html += L"</table>";
+
+ html += L"</body></html>";
+ return html;
+
+ }
+
+ int CarGoodsDelete()
+ {
+ return 1;
+ }
+
+ xstring Up(xstring name) {
+ xstring str = name.mid(0, 2);
+ str = str.toUpper();
+ return xaserver::UploadFile(L"product" + str, name + L".jpg", GetHWND(), L"", false);
+ }
+
+ int OnAddImage() {
+ if (m_customer != L"") return OnAddImageEx();
+ int row = dw_list.GetNextSelectRow(1);
+ if (row < 1) row = dw_list.GetRow();
+ if (row < 1 || row > dw_list.GetRowCount()) return 0;
+
+ KXMLDOMElement e = dw_list.GetRowElement(row);
+ xstring skuid = dw_list.GetItemString( row, L"@guid");
+ xstring SKUNo = dw_list.GetItemString( row, L"SKUNo");
+ xstring id = ViewObject::GetGuid();
+ xstring ret1 = Up(id);
+ if (ret1 == L"-1") return -1;
+ if (ret1 == L"0")
+ {
+ alert(L"上传图片失败");
+ return -1;
+ }
+ xstring originfile = ret1;
+ xstring ext = originfile.right(7);
+ if (ext.find(L".") >= 0)
+ ext = ext.mid(ext.find(L".") + 1, 9999);
+ else
+ ext = L"jpg";
+
+ // 图片名加入数据库
+ xml x ;
+ x.loadXML(L"<Item update.new='1' update.modify='1' guid='" + id + L"'>" +
+ L"<ProductPictureID>" + id + L"</ProductPictureID>" +
+ L"<OriginFile>" + originfile + L"</OriginFile>" +
+ L"<FileExt>" + ext + L"</FileExt>" +
+ L"<SKUID>" + skuid + L"</SKUID>" +
+ L"<Name>[" + SKUNo.trim() + L"]</Name>" +
+ L"<FileName>" + id + L".jpg</FileName>" +
+ L"</Item>"
+ );
+
+ xaserverarg arg;
+ arg.AddArg(L"content", x.xml());
+ if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1)
+ {
+ alert(x.text());
+ return -1;
+ }
+ dw_list.SetItemString(row, L"pic", L"*");
+ dw_list.Redraw();
+ //刷新一下界面,显示图片
+ OnShowImage(skuid);
+ return 1;
+ }
+
+ int OnAddImageEx() {
+ int row = dwc_list.GetNextSelectRow(1);
+ if (row < 1) row = dwc_list.GetRow();
+ if (row < 1 || row > dwc_list.GetRowCount()) return 0;
+
+ KXMLDOMElement e = dw_list.GetRowElement( row);
+ xstring skuid =dw_list.GetItemString( row, L"SKUID");
+ xstring SKUNo =dw_list.GetItemString( row, L"SKUID/@__displaystring");
+ xstring CustomerID = m_customer;
+ xstring CustomerItemNo =dw_list.GetItemString( row, L"CustomerItemNo");
+ xstring id = ViewObject::GetGuid();
+ xstring ret1 = Up(id);
+ if (ret1 == L"-1") return -1;
+ if (ret1 == L"0")
+ {
+ alert(L"上传图片失败");
+ return -1;
+ }
+ xstring originfile = ret1;
+ xstring ext = originfile.right(7);
+ if (ext.find(L".") >= 0)
+ ext = ext.mid(ext.find(L".") + 1, 9999);
+ else
+ ext = L"jpg";
+
+ // 图片名加入数据库
+ xml x;
+ x.loadXML(L"<Item update.new='1' update.modify='1' guid='" + id + L"'>" +
+ L"<ProductPictureID>" + id + L"</ProductPictureID>" +
+ L"<OriginFile>" + originfile + L"</OriginFile>" +
+ L"<FileExt>" + ext + L"</FileExt>" +
+ L"<SKUID>" + skuid + L"</SKUID>" +
+ L"<CustomerItemNo>" + CustomerItemNo + L"</CustomerItemNo>" +
+ L"<CustomerID>" + CustomerID + L"</CustomerID>" +
+ L"<Name>[" + SKUNo.trim() + L"]</Name>" +
+ L"<FileName>" + id + L".jpg</FileName>" +
+ L"</Item>"
+ );
+
+ xaserverarg arg;
+ arg.AddArg(L"content", x.xml());
+ if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1)
+ {
+ alert(x.text());
+ return -1;
+ }
+ dwc_list.SetItemString(row, L"pic", L"*");
+ dwc_list.Redraw();
+ //刷新一下界面,显示图片
+ OnShowImage(skuid, CustomerItemNo);
+ return 1;
+ }
+
+ int OnDeleteImageEx()
+ {
+ int row = dwc_list.GetNextSelectRow(1);
+ if (row < 1) row = dwc_list.GetRow();
+ if (row < 1 || row > dwc_list.GetRowCount()) return 0;
+
+ ximageview im = GetControl(L"im1");
+ int index = im.GetSelectIndex();
+ int count = im.GetImageCount();
+
+ if (count < 1) return 1;
+
+ KXMLDOMNodeList images = imageElement.selectNodes(L"image");
+ int length = images.length();
+ if (length < index) return 1;
+
+ int MB_OKCANCEL = 0x00000001;
+ int IDOK = 1;
+ if (MessageBox(GetHWND(), L"确认删除当前图片?", L"提示", MB_OKCANCEL) != IDOK) return 1;
+
+ xstring id = images.item(index).selectSingleNode(L"@guid").text();
+
+ xml x ;
+ xaserverarg arg;
+
+ xstring str = L"<Item update.modify='1' update.delete='1' guid='" + id + L"'/>";
+ arg.AddArg(L"content", str);
+ if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1)
+ {
+ alert(x.text());
+ return -1;
+ }
+ if (count == 1)
+ {
+ dwc_list.SetItemString(row, L"pic", L"");
+ dwc_list.Redraw();
+ }
+
+ xstring skuid =dw_list.GetItemString( row, L"SKUID");
+ xstring SKUNo =dw_list.GetItemString( row, L"SKUID/@__displaystring");
+ xstring CustomerID = m_customer;
+ xstring CustomerItemNo =dw_list.GetItemString( row, L"CustomerItemNo");
+ OnShowImage(skuid, CustomerItemNo);
+
+ return 1;
+ }
+
+ int OnDeleteImage() {
+ if (m_customer != L"") return OnDeleteImageEx();
+
+ int row = dw_list.GetNextSelectRow(1);
+ if (row < 1) row = dw_list.GetRow();
+ if (row < 1 || row > dw_list.GetRowCount()) return 0;
+
+ ximageview im = GetControl(L"im1");
+ int index = im.GetSelectIndex();
+ int count = im.GetImageCount();
+
+ if (count < 1) return 1;
+
+ KXMLDOMNodeList images = imageElement.selectNodes(L"image");
+ int length = images.length();
+ if (length < index) return 1;
+
+ int MB_OKCANCEL = 0x00000001;
+ int IDOK = 1;
+ if (MessageBox(GetHWND(), L"确认删除当前图片?", L"提示", MB_OKCANCEL) != IDOK) return 1;
+
+ xstring id = images.item(index).selectSingleNode(L"@guid").text();
+
+ xml x;
+ xaserverarg arg;
+ xstring str = L"<Item update.modify='1' update.delete='1' guid='" + id + L"'/>";
+ arg.AddArg(L"content", str);
+ if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1)
+ {
+ alert(x.text());
+ return -1;
+ }
+ if (count == 1)
+ {
+ dw_list.SetItemString(row, L"pic", L"");
+ dw_list.Redraw();
+ }
+
+ KXMLDOMElement e1 = dw_list.GetRowElement(row);
+ xstring skuid = e1.getAttribute(L"guid");
+ OnShowImage(skuid);
+
+ return 1;
+ }
+ int OnPreviewImage()
+ {
+ int row = dw_list.GetNextSelectRow(1);
+ if (row < 1) row = dw_list.GetRow();
+ if (row < 1 || row > dw_list.GetRowCount()) return 0;
+ KXMLDOMElement e = dw_list.GetRowElement(row);
+ //KXMLDOMElement e = dw_list.GetRowElement(row);
+ //alert(e.xml);
+ xstring id = dw_list.GetItemString( row, L"@guid");
+ //alert(id);
+
+ HTREEITEM hItem = tv_folder.GetSelectedItem();
+ KXMLDOMElement e1 = tv_folder.GetItemData(hItem);
+ xstring categoryid = e1.selectSingleNode(L"@guid").text();
+ //alert(categoryid);
+ xaserverarg* arg = new xaserverarg;
+ arg->AddArg(L"SKUID", id);
+ arg->AddArg(L"CategoryID", categoryid);
+
+ OpenWindow(L"dev:xpage[PictureView.Product3.vx]", (LPARAM)arg);
+
+ return 1;
+ }
+
+ int ItemMaint()
+ {
+ HTREEITEM hItem = tv_folder.GetSelectedItem();
+ KXMLDOMElement e = tv_folder.GetItemData(hItem);
+ //xstring no = e.getAttribute(L"no");
+ //if(no==L"") return 1;
+ xaserverarg arg;
+ //xstring guid = e.getAttribute(L"guid");
+
+
+ int row = dw_list.GetNextSelectRow(1);
+ if (row < 1) row = dw_list.GetRow();
+ if (row < 1 || row > dw_list.GetRowCount()) return 0;
+ xstring guid = dw_list.GetItemString(row, L"@guid");
+ if (guid == L"") return 1;
+ arg.AddArg(L"skuid", guid);
+
+ /*
+ if(no==L"NP0000FS" || no==L"UP0000FS")
+ {
+ OpenWindow(L"dev:xpage[PackSchemaMaint.goodslib.vx]");
+ }else
+ {
+ LPARAM pr = g_xdoc_product;
+ OpenWindow(L"dev:xpage[ProductLibraryItemMaint.vx]",pr);
+ }
+ */
+ //KXMLDOMElement ele = g_xdoc_product.getRowElement(L"data/Item", 1);
+ //alert(ele.xml);
+
+ OpenWindow(L"dev:xpage[ProductLibraryItemMaint3.vx]", arg);
+#
+ return 1;
+ }
+
+ int ItemAdd()
+ {
+ HTREEITEM hItem = tv_folder.GetSelectedItem();
+ HTREEITEM hTopItem = LookupTopFolder(hItem);
+ xstring name = tv_folder.GetItemLabel(hTopItem);
+
+ KXMLDOMElement e = tv_folder.GetItemData(hItem);
+ //alert(e.xml);
+ /*xstring no = e.getAttribute(L"no");
+ if(no==L"") return 1;
+ if(no==L"NP0000FS" || no==L"UP0000FS")
+ {
+ OpenWindow(L"dev:xpage[PackSchemaMaint.goodslib.vx]");
+ }else
+ {
+ int p = no;
+ OpenWindow(L"dev:xpage[SO.autolist.goodslib.add.vx]",p);
+ }*/
+ xstring guid = e.getAttribute(L"guid");
+ if (guid == L"") return 1;
+ xaserverarg arg;
+
+ arg.AddArg(L"guid", e.getAttribute(L"guid"));
+ if (name == L"个人产品")
+ arg.AddArg(L"FolderID", e.getAttribute(L"guid"));
+ else
+ arg.AddArg(L"CategoryID", e.getAttribute(L"guid"));
+ xstring No = e.getAttribute(L"CategoryNo");
+ if (No == L"") No = e.getAttribute(L"no");
+ xstring Name = e.getAttribute(L"CName");
+ if (Name == L"") Name = e.getAttribute(L"cname");
+ arg.AddArg(L"No", No);
+ arg.AddArg(L"CName", Name);
+ OpenWindow(L"dev:xpage[Quick.Input.NewProduct.vx]", (LPARAM)&arg);
+
+ if (arg.GetArgString(L"data.modify") == L"1")RetrieveData();
+
+ return 1;
+ }
+
+ int OnAddFolder()
+ {
+ HTREEITEM hItem = tv_folder.GetSelectedItem();
+ HTREEITEM hTopItem = LookupTopFolder(hItem);
+ xstring name = tv_folder.GetItemLabel(hTopItem);
+ xstring selectname = tv_folder.GetItemLabel(hItem);
+
+ xaserverarg arg;
+ if (hItem != hTopItem)
+ {
+ KXMLDOMElement e = tv_folder.GetItemData(hItem);
+ xstring folder = e.getAttribute(L"guid");
+ if (folder != L"")
+ {
+ arg.AddArg(L"parentCategoryID", folder);
+ OpenWindow(L"dev:xpage[UserFolderMaint.vx]",(LPARAM)&arg);
+ /*if(arg.GetArgString(L"FolderID")!=L"")
+ {
+ int child = tv_folder.GetChildItem(hItem);
+ if(!child)
+ {
+ ExpandItem(hItem);
+ }
+ else
+ {
+ KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
+ KXMLDOMElement e2 = e1.cloneNode(0);
+ e2.
+ }
+ }*/
+ }
+ }
+
+ return 1;
+ }
+
+ int OnMaintFolder()
+ {
+ HTREEITEM hItem = tv_folder.GetSelectedItem();
+ HTREEITEM hTopItem = LookupTopFolder(hItem);
+ xstring name = tv_folder.GetItemLabel(hTopItem);
+ xstring selectname = tv_folder.GetItemLabel(hItem);
+
+ xaserverarg arg;
+ if (name == L"个人库" && selectname == L"新产品" && tv_folder.GetParentItem(hItem) == hTopItem) return 1;
+ if (hItem != hTopItem)
+ {
+ KXMLDOMElement e = tv_folder.GetItemData(hItem);
+ xstring folder = e.getAttribute(L"guid");
+ if (folder != L"")
+ {
+ arg.AddArg(L"CategoryID", folder);
+ OpenWindow(L"dev:xpage[UserFolderMaint.vx]", (LPARAM)&arg);
+ if (arg.GetArgString(L"label") != L"")
+ {
+ tv_folder.SetItemLabel(hItem, arg.GetArgString(L"label"));
+ }
+ }
+ }
+ return 1;
+ }
+
+ //命令发布函数
+ int OnCmdDispatch(xstring comdid)
+ {
+ int hCursor;
+ xstring name = L"";
+ if (comdid == L"xmRefresh")
+ {
+ return RetrieveData();
+ }
+ else if (comdid == L"xmCarGoodsDelete")
+ {
+ CarGoodsDelete();
+ return 1;
+ }
+ else if (comdid == L"xmAddFolder")
+ {
+ return OnAddFolder();
+ }
+ else if (comdid == L"xmMaintFolder")
+ {
+ return OnMaintFolder();
+ }
+ else if (comdid == L"xmClose")
+ {
+ CloseWindow();
+ return 1;
+ }
+ else if (comdid == L"xmCarGoodsMaint")
+ {
+#ifdef shouldfinish
+ OpenWindow(L"dev:xpage[ShoppingCartProductMaint.vx]", trust(g_xdoc_shoppingcart as int));
+#endif
+ return 1;
+ }
+ else if (comdid == L"xmCarMaint")
+ {
+ OpenWindow(L"dev:xpage[SO.autolist.Shopcar.vx]");
+ return 1;
+ }
+ else if (comdid == L"xmSaleOrder")
+ {
+ int rw = dwc_list.GetNextSelectRow(1);
+ xstring content = L"<data>";
+ while (rw > 0)
+ {
+ KXMLDOMElement xe = OnGetCarListRowElement(rw);
+ content += xe.xml();
+ rw = dwc_list.GetNextSelectRow(rw + 1);
+
+ }
+ content += L"</data>";
+ xaserverarg carg;
+
+ carg.AddArg(L"content", content);
+ OpenWindow(L"dev:xpage[SO.Simulation.Import.vx]", carg);
+ return 1;
+ }
+ else if (comdid == L"xmEnquiry")
+ {
+ int rw = dwc_list.GetNextSelectRow(1);
+ xstring content = L"<data>";
+ while (rw > 0)
+ {
+ KXMLDOMElement xe = OnGetCarListRowElement(rw);
+ content += xe.xml();
+ rw = dwc_list.GetNextSelectRow(rw + 1);
+ }
+ content += L"</data>";
+ xaserverarg carg;
+
+ carg.AddArg(L"content", content);
+ OpenWindow(L"dev:xpage[Enquiry.Import.vx]", carg);
+ return 1;
+ }
+ else if (comdid == L"xmPurchar")
+ {
+ int rw = dwc_list.GetNextSelectRow(1);
+ xstring content = L"<data>";
+ while (rw > 0)
+ {
+ KXMLDOMElement xe = OnGetCarListRowElement(rw);
+ content += xe.xml();
+ rw = dwc_list.GetNextSelectRow(rw + 1);
+ }
+ content += L"</data>";
+ xaserverarg carg ;
+ carg.AddArg(L"content", content);
+ OpenWindow(L"dev:xpage[PO.Import.vx]", (LPARAM)&carg);
+ return 1;
+ }
+ else if (comdid == L"xmSearch")
+ {
+ RetrieveData();
+ return 1;
+ }
+ else if (comdid == L"xmQuote")
+ {
+ int rw = dwc_list.GetNextSelectRow(1);
+ xstring content = L"<data>";
+ while (rw > 0)
+ {
+ KXMLDOMElement xe = OnGetCarListRowElement(rw);
+ content += xe.xml();
+ rw = dwc_list.GetNextSelectRow(rw + 1);
+ }
+ content += L"</data>";
+ xaserverarg carg;
+ carg.AddArg(L"content", content);
+ OpenWindow(L"dev:xpage[Quote.Import.vx]", (LPARAM) & carg);
+ return 1;
+ }
+ else if (comdid == L"xmAdd")
+ {
+ return ItemAdd();
+ }
+ else if (comdid == L"xmDelete")
+ {
+ int row = dw_list.GetRow();
+ if (row < 1) return 1;
+ xstring skuid = dw_list.GetItemString( row, L"@guid");
+ xml skuid_x = ViewObject::RetrieveData(L"/sale/data/ProductLibrary3/ProductNumberone", L"SKUID", skuid);
+ xstring skuidEx = skuid_x.text();
+ int skuid1 = skuidEx.toInt();
+ if (skuid1)
+ {
+ if (skuid1 > 0)
+ {
+ alert(L"订单已有产品,不允许删除!");
+ return 1;
+ }
+ }
+
+ DeleteRow(row);
+
+ return 1;
+ }
+ else if (comdid == L"xmCarAdd")
+ {
+ HCURSOR hCursor = xutil::SetCursorWait();
+ name = xcontrol(GetControl(L"frame:ed_goodscar")).GetText();
+ if (name != L"")
+ {
+ if (ShoppingCartView::AddCar(name) == 1)
+ {
+ tv_folder.InsertChildItem(LookupTopFolder(tv_folder.GetSelectedItem()),
+ name, 0, 35);
+ }
+ }
+ xutil::RestoreCursor(hCursor);
+ return 1;
+ }
+ else if (comdid == L"xmMaint")
+ {
+ return ItemMaint();
+ }
+ else if (comdid == L"xmAddImage")
+ {
+ return OnAddImage();
+ }
+ else if (comdid == L"xmDeleteImage")
+ {
+ return OnDeleteImage();
+ }
+ else if (comdid == L"xmPreviewImage")
+ {
+ return OnPreviewImage();
+ }
+ else if (comdid == L"xmPropConfigure")
+ {
+#ifdef shouldfinish
+ int r = cast(g_xdoc_product.getData(L"data/Item", L"@guid") as int);
+ OpenWindow(L"dev:xpage[Product.ItemProp.Maint.vx]", r);
+#endif
+ return 1;
+ }
+ else if (comdid == L"xmRertieve")
+ {
+ /*
+ int hItem1 = tv_folder.GetSelectedItem();
+ KXMLDOMElement e2= tv_folder.GetItemData(hItem1);
+ xstring no1 = e2.getAttribute(L"no");
+ xml x2 = vcontrol::RetrieveData(L"/sale/data/SO/goods/usergoods/listex1",L"parent",no1);
+ g_xdoc_product.Retrieve(x2);
+ */
+ return 1;
+ }
+ else if (comdid == L"xmToCar")
+ {
+ name = xcontrol(GetControl(L"frame:cbx_goodscar")).GetText();
+ if (name == L"==选择购物车==L")
+ {
+ alert(L"请选择购物车");
+ return 1;
+ }
+ int xrow = dw_list.GetNextSelectRow(1);
+ xstring goodsid = L"";
+ xstring html = L"<data>";
+ while (xrow > 0)
+ {
+ KXMLDOMElement e =dw_list.GetRowElement(xrow);
+ goodsid = ProductLibraryView::GetElementString(e, L"@guid");
+ html += L"<item goodid='" + goodsid + L"' id ='" + ProductLibraryView::GetGuid() + L"'/>";
+ xrow = dw_list.GetNextSelectRow(xrow + 1);
+ }
+ html += L"</data>";
+ trace(html);
+ if (ShoppingCartView::GoodsImport(name, html) == 1)
+ alert(L"添加错误!");
+ else
+ alert(L"添加成功");
+ return 1;
+ }
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(TEvent* evt, int param)
+ {
+ return OnCmdDispatch(evt->xcommand.pStrID);
+ }
+
+ //查找当前树项的顶级目录
+ HTREEITEM LookupTopFolder(HTREEITEM hItem)
+ {
+ HTREEITEM hRoot = tv_folder.GetRootItem();
+ while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
+ return hItem;
+ }
+
+ //插入产品类项的子项
+ int MakeGoodsFolderItem(HTREEITEM hItem, xstring sno)
+ {
+ xml x = ProductLibraryView::GetTreeChildItems3(sno);
+ if (!x) return 0;
+
+ KXMLDOMNodeList nlist = x.selectNodes(L"//Item");
+ int len = nlist.length();
+ for (int i = 0; i < len; i++)
+ {
+ KXMLDOMElement e = nlist.item(i);
+ xstring name = e.getAttribute(L"CName");
+ xstring no = e.getAttribute(L"CategoryNo");
+ xstring label = no.trim() + L" " + name;
+
+ HTREEITEM h = tv_folder.InsertChildItem(hItem, label, e, 15);
+ xstring child = e.getAttribute(L"Childs");
+ if (child == L"")
+ tv_folder.SetItemChild(h, 1);
+ else if (child != L"0")
+ tv_folder.SetItemChild(h, 1);
+ }
+ return 1;
+ }
+
+ //插入新产品目录子项
+ int MakeUserGoodsFolderItem(HTREEITEM hItem, xstring sno)
+ {
+ xml x = ProductLibraryView::GetTreeUserChildItems3(sno);
+ if (!x) return 0;
+
+ KXMLDOMNodeList nlist = x.selectNodes(L"//Item");
+ int len = nlist.length();
+ for (int i = 0; i < len; i++)
+ {
+ KXMLDOMElement e = nlist.item(i);
+ xstring name = e.getAttribute(L"CName");
+ xstring no = e.getAttribute(L"CategoryNo");
+ xstring label = no.trim() + L" " + name;
+
+ HTREEITEM h = tv_folder.InsertChildItem(hItem, label, e, 15);
+ xstring child = e.getAttribute(L"Childs");
+ if (child == L"")
+ tv_folder.SetItemChild(h, 1);
+ else if (child != L"0")
+ tv_folder.SetItemChild(h, 1);
+ }
+ return 1;
+ }
+
+ //插入购物车项
+ 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);
+ xstring name = e.getAttribute(L"name");
+ HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image);
+ ExpandCatChildFolder(h, e, 35);
+ }
+ return 1;
+ }
+ int MakeGoodCarFolderItem(HTREEITEM hItem)
+ {
+ xml x = ShoppingCartView::GetRoleList();
+ 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);
+ xstring name = e.getAttribute(L"name");
+ HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35);
+ ExpandCatChildFolder(h, e, 35);
+ }
+ return 1;
+ }
+
+ int ExpandItem(HTREEITEM hItem)
+ {
+ HTREEITEM hTopItem = LookupTopFolder(hItem);
+ xstring name = tv_folder.GetItemLabel(hTopItem);
+ HTREEITEM child = tv_folder.GetChildItem(hItem);
+ xstring no = L"";
+ KXMLDOMElement e;
+ if (name == L"公司库" && !child)
+ {
+ no = L"";
+ if (hTopItem != hItem)
+ {
+ e = tv_folder.GetItemData(hItem);
+ no = e.getAttribute(L"categoryid");
+ }
+ else
+ {
+ e = tv_folder.GetItemData(hItem);
+ no = e.getAttribute(L"categoryid");
+ }
+ MakeGoodsFolderItem(hItem, no);
+ }
+ else if (name == L"个人库" && !child)
+ {
+ no = L"";
+ if (hTopItem != hItem)
+ {
+ e = tv_folder.GetItemData(hItem);
+ no = e.getAttribute(L"categoryid");
+ MakeUserGoodsFolderItem(hItem, no);
+ }
+ }
+ else if (name == L"购物车" && !child)
+ {
+ if (hItem == hTopItem)MakeGoodCarFolderItem(hItem);
+ }
+ return 1;
+ }
+
+ //树展开
+ int OnTreeExpanding(TEvent * evt, int p)
+ {
+ NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
+ HTREEITEM hItem = nmtv.itemNew.hItem;
+ return ExpandItem(hItem);
+ }
+
+ int ResetAgent(xstring agentAsk)
+ {
+ if (agentFor != agentAsk)
+ {
+ agentFor = agentAsk;
+ m_agentNode = 0;
+ SetAgent();
+ }
+ return 1;
+ }
+
+ HTREEITEM LookupCustomerFolder(HTREEITEM hItem)
+ {
+ while (true)
+ {
+ KXMLDOMElement e1 = tv_folder.GetItemData(hItem);
+ xstring str = e1.getAttribute(L"no");
+ if (str.find(L"Customer:") >= 0) return hItem;
+ hItem = tv_folder.GetParentItem(hItem);
+ if (hItem == 0) break;
+ }
+ return 0;
+ }
+
+ xstring LookupCustomer(HTREEITEM hItem)
+ {
+ hItem = LookupCustomerFolder(hItem);
+ if (hItem == 0) return L"";
+ KXMLDOMElement e1 = tv_folder.GetItemData(hItem);
+ xstring str = e1.getAttribute(L"no");
+ return str.mid(xstring(L"Customer:").length(), 9999);
+ }
+
+ int RetrieveData()
+ {
+ ximageview im = GetControl(L"im1");
+ HTREEITEM hItem = tv_folder.GetSelectedItem();
+ HTREEITEM hTopItem = LookupTopFolder(hItem);
+ xstring name = tv_folder.GetItemLabel(hTopItem);
+ xstring selectname = tv_folder.GetItemLabel(hItem);
+
+ xcontrol query = GetControl(L"sl_search");
+ xstring queryString = query.GetText();
+
+ if (hItem == hTopItem)
+ {
+ dw_list.Reset();
+ dw_list.SetReadOnly(true);
+ dw_list.Redraw();
+ dwc_list.Reset();
+ dwc_list.SetReadOnly(true);
+ dwc_list.Redraw();
+
+ im.Reset();
+ im.Redraw();
+
+
+ xshtml xs1 = GetControl(L"html_detail");
+ xs1.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
+
+ if (name != L"公司库") return 1;
+ }
+ //return 1;
+
+ HCURSOR hCursor = xutil::SetCursorWait();
+
+ if (name == L"购物车")
+ {
+ if (selectname != name)
+ {
+ KXMLDOMElement e1 = tv_folder.GetItemData(hItem);
+ xstring str = e1.getAttribute(L"no");
+ alert(str);
+ if (str.find(L"Customer:") == 0 || str.find(L"SO:") == 0)
+ {
+ m_customer = LookupCustomer(hItem);
+ if (str.find(L"Customer:") == 0)
+ dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodscustomerlist");
+ else
+ dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodssolist");
+ dwc_list.Reset();
+ dwc_list.SetReadOnly(true);
+ dw_list.Retrieve(ShoppingCartView::GetGoodsList(str, queryString));
+ }
+ else if (e1.getAttribute(L"categoryid") != L"")
+ {
+ xstring categoryid = e1.getAttribute(L"categoryid");
+ dwc_list.SetDataObject(ProductLibraryView::GetMaintListForm3(categoryid));
+ dwc_list.SetReadOnly(true);
+ dwc_list.Reset();
+ dw_list.Retrieve(ProductLibraryView::GetMaintList3(categoryid, queryString, L""));
+ dwc_list.Redraw();
+ }
+ else
+ {
+ dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist");
+ dwc_list.SetReadOnly(true);
+ dwc_list.Reset();
+ dw_list.Retrieve(ShoppingCartView::GetGoodsList(selectname, queryString));
+ }
+ //dwc_list.PostRetrieve();
+ dwc_list.Redraw();
+
+ xshtml xs = GetControl(L"html_detail");
+ if (dwc_list.GetRowCount() >= 1)
+ {
+ xs.SetContent(makeGoodscarHtml(1));
+
+ if (m_customer != L"")
+ {
+ xstring skuid =dw_list.GetItemString( 1, L"SKUID");
+ xstring customerItemNo =dw_list.GetItemString( 1, L"CustomerItemNo");
+ OnShowImage(skuid, customerItemNo);
+ }
+ }
+ else
+ {
+ im.Reset();
+ im.Redraw();
+
+ xs = GetControl(L"html_detail");
+ xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
+ }
+ xs.Redraw();
+ }
+ }
+ else
+ {
+
+ if (name == L"个人库" || name == L"公司库")
+ {
+ xstring no = L"N000005";
+ if (name == L"个人库") no = L"U000005";
+
+ if (hItem != hTopItem)
+ {
+ KXMLDOMElement e = tv_folder.GetItemData(hItem);
+ no = e.getAttribute(L"guid");
+ }
+ else
+ return 1;
+
+ /* dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(no));
+ dw_list = GetControl(L"dw_list");
+ dw_list.Reset();
+ dw_list.SetReadOnly(true);
+ */
+
+ if (name == L"个人库")
+ dw_list.Retrieve(ProductLibraryView::GetMaintRoleList3(no));
+ else
+ {
+ if (queryString != L"")
+ {
+
+ if (no == L"N000005")
+ dw_list.Retrieve(ProductLibraryView::GetMaintList3(L"", queryString, L""));
+ else
+ dw_list.Retrieve(ProductLibraryView::GetMaintList3(no, queryString, L""));
+ }
+ else
+ {
+ if (no == L"N000005") return 1;
+ dw_list.Retrieve(ProductLibraryView::GetMaintList3(no));
+ }
+ }
+ //dw_list.PostRetrieve();
+ dw_list.Redraw();
+
+ xshtml xs = GetControl(L"html_detail");
+ if (dw_list.GetRowCount() > 0)
+ {
+ xs.SetContent(makeHtml(1));
+ xstring id = dw_list.GetItemString( 1, L"@guid");
+ OnShowImage(id);
+ }
+ else
+ {
+ im.Reset();
+ im.Redraw();
+
+ xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>");
+ }
+ xs.Redraw();
+ }
+ }
+ xutil::RestoreCursor(hCursor);
+
+ return 1;
+ }
+
+ int OnTreeSelChanged(TEvent * evt, int p)
+ {
+ NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
+ HTREEITEM hItem = nmtv.itemNew.hItem;
+ HTREEITEM hTopItem = LookupTopFolder(hItem);
+ xstring name = tv_folder.GetItemLabel(hTopItem);
+ xstring selectname = tv_folder.GetItemLabel(hItem);
+ ximageview im = GetControl(L"im1");
+ m_customer = L"";
+ //alert(name);
+ if (name == L"购物车")
+ {
+ if (agentFor != L"goodscar")SwitchLayer(L"goodscarsheet", L"sheetframe");
+ ResetAgent(L"goodscar");
+ }
+ else
+ {
+ if (agentFor != L"goodslib")SwitchLayer(L"goodslibsheet", L"sheetframe");
+ if (name == L"个人库")
+ ResetAgent(L"userlib");
+ else
+ ResetAgent(L"goodslib");
+ }
+ //RetrieveData();
+ PostMessage(GetHWND(), 0x401, (WPARAM)L"xmRefresh", 0);
+
+ return 1;
+ }
+
+ 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);
+ xstring name = e.getAttribute(L"cname");
+ xstring sImage = e.getAttribute(L"image");
+ int image = 15;
+ //if(sImage) image = sImage.toInt();
+ HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image);
+ tv_folder.SetItemChild(h, 1);
+ ExpandChildFolder(h, e);
+ }
+ return 1;
+ }
+
+ int InitialFolder()
+ {
+ KXMLDOMElement xframeElement = GetElement();
+ KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
+ ExpandChildFolder(0, e);
+ return 1;
+ }
+
+ int OnViewZoomChange(TEvent* evt, int lParam)
+ {
+ ximageview im = GetControl(L"im1");
+ xcombobox xc = GetControl(L"precent");
+ xstring text = xc.GetLBText();
+ int p = text.toInt();
+ if (p == 0) p = 100;
+ im.Preview(p);
+ return 1;
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductLibrary4Win::OnXCommand);
+ //获取焦点事件,用于重置工具条
+ AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductLibrary4Win::OnSetFocus);
+ AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductLibrary4Win::OnRowChanged);
+ AttachEvent(L"dwc_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductLibrary4Win::OnGoodsCarRowChanged);
+ AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ProductLibrary4Win::OnTreeExpanding);
+ AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ProductLibrary4Win::OnTreeSelChanged);
+ AttachEvent(L"WM_COMMAND", (FEvent)&ProductLibrary4Win::OnCkbCLick); //checkbox打钩事件
+ AttachEvent(L"WM_COMMAND", (FEvent)&ProductLibrary4Win::OnCkbCLick2); //checkbox打钩事件
+
+ AttachEvent(L"im1", L"IMG_LDBCLICK", (FEvent)&ProductLibrary4Win::OnImgDBClicked);
+ AttachEvent(L"precent", L"CBN_SELCHANGE", (FEvent)&ProductLibrary4Win::OnViewZoomChange);
+
+ return 1;
+ }
+
+ int onload()
+ {
+ agentFor = L"goodslib";
+ m_customer = 0;
+
+ OnAttachEvent();
+
+ tv_folder = GetControl(L"tv_folder");
+ dw_list = GetControl(L"dw_list");
+ dwc_list = GetControl(L"dwc_list");
+
+ InitialFolder();
+
+ dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L""));
+ dw_list = GetControl(L"dw_list");
+ dw_list.SetReadOnly(true);
+
+ dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist");
+ dwc_list.SetReadOnly(true);
+
+ tv_folder.ExpandItem(tv_folder.GetRootItem());
+ tv_folder.ItemFocus(tv_folder.GetRootItem());
+
+ if (dw_list.GetRowCount())
+ {
+ xshtml xs = GetControl(L"html_detail");
+ xs.SetContent(makeHtml(1));
+ }
+
+ return 1;
+ }
+
+ int onloaded()
+ {
+ SetAgent();
+
+ return 1;
+ }
+
+ int OnImgDBClicked(TEvent * evt, LPARAM pr)
+ {
+ 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 = *new xaserverarg;
+ //arg.AddArg(L"src",L"/business/products/chanpin"+src);
+ arg.AddArg(L"src", src);
+
+ //win::OpenWindow(L"dev:xpage[BigPicture.vx]",arg);
+
+ int h = openUrl(L"/sale/view/ProductLibrary/xpage/bigpictureview", &arg);
+ return 1;
+ /*
+ xwin x = new xwin;
+ x.setNativePointer(h);
+ m_winHwnd = x.GetHWND();
+
+ xstring sh = doc.GetXml();
+ int p = cast(sh as int);
+ win32::SendMessage(m_winHwnd, 0x401, p, 0);
+ */
+ return 1;
+ }
+};
\ No newline at end of file
--
Gitblit v1.9.3