From 78affdc74a7b86df8a1f07311741f84942ef7944 Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期四, 11 七月 2024 22:21:17 +0800 Subject: [PATCH] Merge branch 'master' of http://116.62.18.175:6699/r/mis-prj --- jrj/project/total3/FactoryPayment.cpp | 194 ++++ jrj/project/total3/viewex.total.cpp | 389 +++++++++ jrj/project/total3/viewex.total2.cpp | 370 +++++++++ jrj/project/total3/ProductNewList.cpp | 598 +++++++++++++++ jrj/project/total3/GDNItem.GDN.cpp | 195 +++++ jrj/project/total3/viewex.total1.cpp | 369 +++++++++ jrj/ext-jrj/ext-jrj.vcxproj | 7 jrj/project/total3/ProductNoOut.SO.cpp | 188 ++++ jrj/ext-jrj/ext-jrj.vcxproj.filters | 21 9 files changed, 2,331 insertions(+), 0 deletions(-) diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj index f927954..2d39947 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj +++ b/jrj/ext-jrj/ext-jrj.vcxproj @@ -679,6 +679,13 @@ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\start.vframe.vbusiness.cpp" /> + <ClCompile Include="..\project\total3\FactoryPayment.cpp" /> + <ClCompile Include="..\project\total3\GDNItem.GDN.cpp" /> + <ClCompile Include="..\project\total3\ProductNewList.cpp" /> + <ClCompile Include="..\project\total3\ProductNoOut.SO.cpp" /> + <ClCompile Include="..\project\total3\viewex.total.cpp" /> + <ClCompile Include="..\project\total3\viewex.total1.cpp" /> + <ClCompile Include="..\project\total3\viewex.total2.cpp" /> <ClCompile Include="..\project\total3\ViewTotalArgWin.cpp" /> <ClCompile Include="..\project\total3\ViewExTotalWin.cpp" /> <ClCompile Include="..\project\tradedocument\DocFileSaveDlg.cpp" /> diff --git a/jrj/ext-jrj/ext-jrj.vcxproj.filters b/jrj/ext-jrj/ext-jrj.vcxproj.filters index 0256d21..7638a8b 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj.filters +++ b/jrj/ext-jrj/ext-jrj.vcxproj.filters @@ -818,5 +818,26 @@ <ClCompile Include="..\project\business\QuoteFile.cpp"> <Filter>project\business</Filter> </ClCompile> + <ClCompile Include="..\project\total3\FactoryPayment.cpp"> + <Filter>vbusiness\total</Filter> + </ClCompile> + <ClCompile Include="..\project\total3\GDNItem.GDN.cpp"> + <Filter>vbusiness\total</Filter> + </ClCompile> + <ClCompile Include="..\project\total3\ProductNewList.cpp"> + <Filter>vbusiness\total</Filter> + </ClCompile> + <ClCompile Include="..\project\total3\ProductNoOut.SO.cpp"> + <Filter>vbusiness\total</Filter> + </ClCompile> + <ClCompile Include="..\project\total3\viewex.total.cpp"> + <Filter>vbusiness\total</Filter> + </ClCompile> + <ClCompile Include="..\project\total3\viewex.total1.cpp"> + <Filter>vbusiness\total</Filter> + </ClCompile> + <ClCompile Include="..\project\total3\viewex.total2.cpp"> + <Filter>vbusiness\total</Filter> + </ClCompile> </ItemGroup> </Project> \ No newline at end of file diff --git a/jrj/project/total3/FactoryPayment.cpp b/jrj/project/total3/FactoryPayment.cpp new file mode 100644 index 0000000..1272168 --- /dev/null +++ b/jrj/project/total3/FactoryPayment.cpp @@ -0,0 +1,194 @@ +#include <wobject/xwin.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xoffice.hpp> +#include <xcontrol/xcell.hpp> +#include <xcontrol/xflowchart.hpp> +#include <xcontrol/ximageview.hpp> +#include <xcontrol/xcombobox.hpp> + +#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> +#include "viewobject/view.base.hpp" + + +using xml = KXMLDOMDocument; + class __declspec(dllexport) FactoryPayment : public xwin + { + public: + FactoryPayment(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} + public: + static FactoryPayment* CreateInstance(void* implPtr, void* hWnd) + { + FactoryPayment* pWin = new FactoryPayment(implPtr, (HWND)hWnd); + return pWin; + } + public: + xdwgrid dw_list; + xoffice dw_office; + xcell dw_cell; + xnode m_agentNode; //Agent Condition + xstring m_category; + xstring argStr; + + 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 OnSetFocus(TEvent* evt, int param) + { + //重置工具条 + SetAgent(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + HCURSOR hCursor = 0; + if (comdid == L"xmQuery") + { + xaserverarg ar ; + ar.AddArg(L"argurl", L"/sale/view/Total3/template/SOSupplierInfoArg"); + if (argStr != L"") + ar.AddArg(L"arg", argStr); + ar.AddArg(L"action", L""); + OpenWindow(L"dev:xpage[view.total.arg.vx]",ar ); + xstring arstr = ar.GetArgString(L"arg"); + if (arstr != L"" && ar.GetArgString(L"action") == L"ok") + { + argStr = arstr; + hCursor = xutil::SetCursorWait(); + OnRetrieve(L"/sale/data/Total3/total/SOSupplierInfoList", argStr); + + xutil::RestoreCursor(hCursor); + } + else + { + argStr = L""; + OnRetrieve(L"/sale/data/Total3/total/SOSupplierInfoList", argStr); + } + + return 1; + } + return 0; + } + + + + int OnCombboChanged(TEvent* evt, int lParam) + { + int h = xcombobox::GetCurSel(evt->command.hCtrl); + if (h > -1) + { + HCURSOR hCursor = xutil::SetCursorWait(); + KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h); + + PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0); + //OnCmdDispatch(L"xmQuery"); + xutil::RestoreCursor(hCursor); + } + return 1; + } + + + + //命令处理事件 + int OnXCommand(TEvent* evt, int param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnDWClick(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + xstring value = hdr.data; + xstring colname = hdr.colname; + int row = hdr.row; + + if (row < 1) return 1; + + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&FactoryPayment::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&FactoryPayment::OnSetFocus); + AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&FactoryPayment::OnCombboChanged); + AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&FactoryPayment::OnDWClick); + } + + int OnRetrieve(xstring dataurl, xstring argstr) + { + dw_list.Reset(); + + xml x; + + xaserverarg arg ; + + arg.AddArg(L"arg", argstr); + + + if (xurl::get(dataurl, arg.GetString(), x) != 1) + { + trace(x.text()); + dw_list.Redraw(); + return -1; + } + + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + + return 1; + } + + int onload() + { + dw_list = GetControl(L"dw_report"); + dw_office = GetControl(L"dw_office"); + dw_cell = GetControl(L"dw_cell"); + dw_list.openUrl(L"/sale/view/Total3/template/SOSupplierInfoList"); + + /*dw_list.SetColumnState(L"包装价",false); + dw_list.SetColumnState(L"包装总价",false); + dw_list.SetColumnState(L"UnitPrice",false); + dw_list.SetColumnState(L"SUMUnitPrice",false); + dw_list.SetColumnState(L"Packages",false); + dw_list.SetColumnState(L"HasImage",false); + dw_list.SetColumnState(L"Note",false);*/ + + argStr = L""; + xcombobox xc = GetControl(L"cb_report"); + + + OnAttachEvent(); + return 1; + } + + int onloaded() + { + SetAgent(); + OnCmdDispatch(L"xmQuery"); + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/total3/GDNItem.GDN.cpp b/jrj/project/total3/GDNItem.GDN.cpp new file mode 100644 index 0000000..f2730a1 --- /dev/null +++ b/jrj/project/total3/GDNItem.GDN.cpp @@ -0,0 +1,195 @@ +#include <wobject/xwin.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xoffice.hpp> +#include <xcontrol/xcell.hpp> +#include <xcontrol/xflowchart.hpp> +#include <xcontrol/ximageview.hpp> +#include <xcontrol/xcombobox.hpp> + +#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> +#include "viewobject/view.base.hpp" + + +using xml = KXMLDOMDocument; + class __declspec(dllexport) ViewGDNItemTotalWin : public xwin + { + public: + ViewGDNItemTotalWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} + public: + static ViewGDNItemTotalWin* CreateInstance(void* implPtr, void* hWnd) + { + ViewGDNItemTotalWin* pWin = new ViewGDNItemTotalWin(implPtr, (HWND)hWnd); + return pWin; + } + public: + xdwgrid dw_list; + xoffice dw_office; + xcell dw_cell; + xnode m_agentNode; //Agent Condition + xstring m_category; + xstring argStr; + + 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 OnSetFocus(TEvent * evt, int param) + { + //重置工具条 + SetAgent(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + HCURSOR hCursor = 0; + if (comdid == L"xmQuery") + { + xaserverarg ar ; + + ar.AddArg(L"argurl", L"/sale/view/Total3/arg/GDNItemshipfull"); + if (argStr != L"") + ar.AddArg(L"arg", argStr); + ar.AddArg(L"action", L""); + OpenWindow(L"dev:xpage[view.total.arg.vx]", ar); + xstring arstr = ar.GetArgString(L"arg"); + if (arstr != L"" && ar.GetArgString(L"action") == L"ok") + { + argStr = arstr; + hCursor = xutil::SetCursorWait(); + OnRetrieve(L"/sale/data/Total3/total/GDNTotal/Item/Full1", argStr); + + xutil::RestoreCursor(hCursor); + } + else + { + argStr = L""; + OnRetrieve(L"/sale/data/Total3/total/GDNTotal/Item/Full1", argStr); + } + + return 1; + } + return 0; + } + + + + int OnCombboChanged(TEvent* evt, int lParam) + { + int h = xcombobox::GetCurSel(evt->command.hCtrl); + if (h > -1) + { + HCURSOR hCursor = xutil::SetCursorWait(); + KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h); + + PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0); + //OnCmdDispatch(L"xmQuery"); + xutil::RestoreCursor(hCursor); + } + return 1; + } + + + + //命令处理事件 + int OnXCommand(TEvent* evt, int param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnDWClick(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + xstring value = hdr.data; + xstring colname = hdr.colname; + int row = hdr.row; + + if (row < 1) return 1; + + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewGDNItemTotalWin::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewGDNItemTotalWin::OnSetFocus); + AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewGDNItemTotalWin::OnCombboChanged); + AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewGDNItemTotalWin::OnDWClick); + } + + int OnRetrieve(xstring dataurl, xstring argstr) + { + dw_list.Reset(); + + xml x; + + xaserverarg arg ; + + arg.AddArg(L"arg", argstr); + + + if (xurl::get(dataurl, arg.GetString(), x) != 1) + { + trace(x.text()); + dw_list.Redraw(); + return -1; + } + + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + + return 1; + } + + int onload() + { + dw_list = GetControl(L"dw_report"); + dw_office = GetControl(L"dw_office"); + dw_cell = GetControl(L"dw_cell"); + dw_list.openUrl(L"/sale/view/Total3/template/business/gdn/GDNitem/ship/full"); + + dw_list.SetColumnState(L"包装价", false); + dw_list.SetColumnState(L"包装总价", false); + dw_list.SetColumnState(L"UnitPrice", false); + dw_list.SetColumnState(L"SUMUnitPrice", false); + dw_list.SetColumnState(L"Packages", false); + dw_list.SetColumnState(L"HasImage", false); + dw_list.SetColumnState(L"Note", false); + + argStr = L""; + xcombobox xc = GetControl(L"cb_report"); + + + OnAttachEvent(); + return 1; + } + + int onloaded() + { + SetAgent(); + OnCmdDispatch(L"xmQuery"); + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/total3/ProductNewList.cpp b/jrj/project/total3/ProductNewList.cpp new file mode 100644 index 0000000..93a0616 --- /dev/null +++ b/jrj/project/total3/ProductNewList.cpp @@ -0,0 +1,598 @@ +#include <wobject/xwin.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xoffice.hpp> +#include <xcontrol/xcell.hpp> +#include <xcontrol/xflowchart.hpp> +#include <xcontrol/ximageview.hpp> +#include <xcontrol/xcombobox.hpp> +#include "xcontrol/xshtml.hpp" + +#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> +#include "viewobject/view.base.hpp" +#include "vbusiness/vframe/frame.vframe.vbusiness.hpp" +#include "viewobject/productlibrary.view.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) ProductNewList : public xframe + { + public: + ProductNewList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static ProductNewList* CreateInstance(void* implPtr, void* hWnd) + { + ProductNewList* pWin = new ProductNewList(implPtr, (HWND)hWnd); + return pWin; + } + 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; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent * evt, int param) + { + //重置工具条 + 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/newlist", arg.GetString(), x) != 1) + { + xstring error = x.text(); + trace(error); + } + else + { + //alert(x.GetXml()); + dw_list.Retrieve(x); + //dw_list.SetReadOnly(true); + } + + 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.SetReadOnlyColumn(i); + } + dw_list.Redraw(); + } + + int OnRetrieveEx() + { + 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/newlistEx", arg.GetString(), x) != 1) + { + xstring error = x.text(); + trace(error); + } + else + { + //alert(x.GetXml()); + dw_list.Retrieve(x); + //dw_list.SetReadOnly(true); + } + + 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.SetReadOnlyColumn(i); + } + dw_list.Redraw(); + } + + 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='最高价'/>"; + //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='VolumeDesc1' 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.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' >编号:</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, 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, 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 (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) + 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(xurl::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; + } + + 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(L"xxx:" + xstring(xp.xml(), true)); + } + 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, L""); + } + im.Redraw(); + //win32::SendMessage(im.GetId(),0x000f,0,1); + //win32::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 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 = (L"/sale/view/ProductLibrary/xpage/bigpictureview", arg); + int h = openUrl(L"dev:xpage[BigPictureView.Product3.vx]", &arg); + + /* + 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; + } + + int OnSave() + { + dw_list.AcceptText(); + if (dw_list.GetRowCount() < 1) return 0; + xstring error = L""; + xml x; + + dw_list.DwUpdateAllToEx(x); + xaserverarg arg ; + + arg.AddArg(L"content", x.xml()); + + //trace(x.GetXml()); + if (xurl::get(L"/sale/data/ProductLibrary3/update/productex", arg.GetString(), x) != 1) + { + error = x.text(); + alert(error); + return 1; + } + else + { + alert(L"保存成功"); + arg.AddArg(L"No", dw_list.GetItemString(dw_list.GetRow(), L"SKUNo")); + if (xurl::get(L"/sale/data/business/message/productApplyedMessage", arg.GetString(), x) != 1) + { + error = x.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()); + int pr = cast(e as int); + arg.AddArg(L"data",xstring( pr)); + pr = cast(dw_list as int); + arg.AddArg(L"dw", pr.toString()); + arg.AddArg(L"HWND", xstring((__int64)GetHWND())); + OpenWindow(L"dev:xpage[ProductNewItem.vx]", arg ); + return 1; + } + + //命令发布函数 + 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") + { + if (xaserver::GetUserNo() != L"00A01") + { + OnRetrieve(); + } + else + { + OnRetrieveEx(); + } + return 1; + } + 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"请选中要删除的行!",L"提示",0); + return -1; + } + } + + KXMLDOMElement e = listwin::dw_list.GetRowElement(row); + + xstring sguid = e.selectSingleNode(L"@guid").text(); + + int MB_YESNO = 0x00000004; + int IDYES = 6; + if (MessageBox(GetHWND(), L"确认删除吗?", L"提示", 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"删除成功!", L"提示", 0); + listwin::dw_list.DeleteRow(row); + } + } + return 1; + } + + if (comdid == L"xmSave") return OnSave(); + + return 0; + } + + + + //命令处理事件 + int OnXCommand(TEvent* evt, int param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductNewList::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductNewList::OnSetFocus); + AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductNewList::OnRowChanged); + AttachEvent(L"im1", L"IMG_LDBCLICK", (FEvent)&ProductNewList::OnImgDBClicked); + } + + int onload() + { + dw_list = GetControl(L"dw_list"); + dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"")); + dw_list.SetEditUpperMode(true); + dw_list.SetReadOnly(true); + OnAttachEvent(); + + dw_list.SetColumnState(L"SKUID", false); + + return 1; + } + + int onloaded() + { + SetAgent(); + + if (xaserver::GetUserNo() != L"00A01") OnRetrieve(); + + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/total3/ProductNoOut.SO.cpp b/jrj/project/total3/ProductNoOut.SO.cpp new file mode 100644 index 0000000..9f3243b --- /dev/null +++ b/jrj/project/total3/ProductNoOut.SO.cpp @@ -0,0 +1,188 @@ +#include <wobject/xwin.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xoffice.hpp> +#include <xcontrol/xcell.hpp> +#include <xcontrol/xflowchart.hpp> +#include <xcontrol/ximageview.hpp> +#include <xcontrol/xcombobox.hpp> + +#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> +#include "viewobject/view.base.hpp" + + +using xml = KXMLDOMDocument; + class __declspec(dllexport) ViewProductNoOutTotalWin : public xwin + { + public: + ViewProductNoOutTotalWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} + public: + static ViewProductNoOutTotalWin* CreateInstance(void* implPtr, void* hWnd) + { + ViewProductNoOutTotalWin* pWin = new ViewProductNoOutTotalWin(implPtr, (HWND)hWnd); + return pWin; + } + public: + xdwgrid dw_list; + xoffice dw_office; + xcell dw_cell; + xnode m_agentNode; //Agent Condition + xstring m_category; + xstring argStr; + + 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 OnSetFocus(TEvent * evt, int param) + { + //重置工具条 + SetAgent(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + HCURSOR hCursor = 0; + if (comdid == L"xmQuery") + { + xaserverarg ar ; + + ar.AddArg(L"argurl", L"/sale/view/Total3/arg/SODY"); + if (argStr != L"") + ar.AddArg(L"arg", argStr); + OpenWindow(L"dev:xpage[view.total.arg.vx]", ar ); + xstring arstr = ar.GetArgString(L"arg"); + if (arstr != L"" && ar.GetArgString(L"action") == L"ok") + { + argStr = arstr; + hCursor = xutil::SetCursorWait(); + OnRetrieve(L"/sale/data/Total3/total/SODY", argStr); + + xutil::RestoreCursor(hCursor); + } + + else + { + argStr = L""; + OnRetrieve(L"/sale/data/Total3/total/SODY", argStr); + } + + return 1; + } + return 0; + } + + + + int OnCombboChanged(TEvent* evt, int lParam) + { + int h = xcombobox::GetCurSel(evt->command.hCtrl); + if (h > -1) + { + HCURSOR hCursor = xutil::SetCursorWait(); + KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h); + SwitchReport(e); + PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0); + //OnCmdDispatch(L"xmQuery"); + xutil::RestoreCursor(hCursor); + } + return 1; + } + + + + //命令处理事件 + int OnXCommand(TEvent* evt, int param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnDWClick(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + xstring value = hdr.data; + xstring colname = hdr.colname; + int row = hdr.row; + + if (row < 1) return 1; + + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewProductNoOutTotalWin::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewProductNoOutTotalWin::OnSetFocus); + AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewProductNoOutTotalWin::OnCombboChanged); + AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewProductNoOutTotalWin::OnDWClick); + return 1; + } + + int OnRetrieve(xstring dataurl, xstring argstr) + { + dw_list.Reset(); + + xml x; + + xaserverarg arg ; + + arg.AddArg(L"arg", argstr); + + + if (xurl::get(dataurl, arg.GetString(), x) != 1) + { + trace(x.text()); + dw_list.Redraw(); + return -1; + } + + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + + return 1; + } + + int onload() + { + dw_list = GetControl(L"dw_report"); + dw_office = GetControl(L"dw_office"); + dw_cell = GetControl(L"dw_cell"); + dw_list.openUrl(L"/sale/view/Total3/template/PRODUCTSODY"); + + argStr = L""; + xcombobox xc = GetControl(L"cb_report"); + + + OnAttachEvent(); + return 1; + } + + int onloaded() + { + SetAgent(); + OnCmdDispatch(L"xmQuery"); + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/total3/viewex.total.cpp b/jrj/project/total3/viewex.total.cpp new file mode 100644 index 0000000..57e3bd0 --- /dev/null +++ b/jrj/project/total3/viewex.total.cpp @@ -0,0 +1,389 @@ +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xoffice.hpp> +#include <xcontrol/xcell.hpp> +#include <xcontrol/xflowchart.hpp> +#include <xcontrol/ximageview.hpp> +#include <xcontrol/xcombobox.hpp> + +#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> +#include "viewobject/view.base.hpp" + + +using xml = KXMLDOMDocument; + class ViewEx111TotalWin : public xwin + { + public: + ViewEx111TotalWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} + public: + static ViewEx111TotalWin* CreateInstance(void* implPtr, void* hWnd) + { + ViewEx111TotalWin* pWin = new ViewEx111TotalWin(implPtr, (HWND)hWnd); + return pWin; + } + public: + xdwgrid dw_list; + xoffice dw_office; + xcell dw_cell; + xnode m_agentNode; //Agent Condition + KXMLDOMElement rptEle; + xstring m_category; + xstring argStr; + + int hWndImageView; + int hWndRetrieveTip; + bool dataretrieveing; + + 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 OnSetFocus(TEvent * evt, int param) + { + //重置工具条 + SetAgent(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + xstring UserNo = publiccode::GetUser().no; + + HCURSOR hCursor = 0; + //if(UserNo !=L"00603") + //{ + if (comdid == L"xmAnalysis") + { + hCursor = xutil::SetCursorWait(); + xstring str = dw_list.DataAnalysis(L""); + xaserverarg arg ; + + arg.AddArg(L"html", str); + + OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg); + xutil::RestoreCursor(hCursor); + return 1; + } + if (comdid == L"xmSaveAs") + { + dw_list.SaveAs(L""); + return 1; + } + + if (comdid == L"xmRemarks") + { + xstring name = rptEle.getAttribute(L"name"); + + xml x = ViewObject::RetrieveData(L"/sale/data/TradeFinance3/GetSetUpRemarks", L"Type", name); + KXMLDOMNodeList items = x.selectNodes(L"data/Item"); + KXMLDOMNode t = items.item(0); + xstring Content = L""; + if (t.selectSingleNode(L"Content")) + { + Content = t.selectSingleNode(L"Content").text(); + } + + xaserverarg arg1 ; + + arg1.AddArg(L"value", Content); + OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg1); + return 1; + + } + //} + if (comdid == L"xmLookImage") + { + int row = dw_list.GetRow(); + xstring skuid = dw_list.GetGuid(row); + OnLookImage(skuid); + return 1; + } + if (comdid == L"xmTrans") + return OnTransData(); + if (comdid == L"xmQuery") + { + if (rptEle) + { + xstring argUrl = rptEle.getAttribute(L"arg"); + if (argUrl != L"") + { + xaserverarg ar ; + + ar.AddArg(L"argurl", argUrl); + if (argStr != L"") + ar.AddArg(L"arg", argStr); + OpenWindow(L"dev:xpage[view.total.arg.vx]", ar ); + xstring arstr = ar.GetArgString(L"arg"); + if (arstr != L"" && ar.GetArgString(L"action") == L"ok") + { + argStr = arstr; + hCursor = xutil::SetCursorWait(); + OnRetrieve(rptEle.getAttribute(L"data"), argStr); + xutil::RestoreCursor(hCursor); + } + } + else + { + argStr = L""; + OnRetrieve(rptEle.getAttribute(L"data"), argStr); + } + } + return 1; + } + + return 0; + } + + int OnLookImage(xstring skuid) + { + HCURSOR hCursor = xutil::SetCursorWait(); + xaserverarg arg ; + arg.AddArg(L"guid", skuid); + OpenWindow(L"dev:xpage[ViewPictures.vx]", arg); + xutil::RestoreCursor(hCursor); + return 1; + } + + int SwitchReport(KXMLDOMElement e) + { + xstring dwname = e.getAttribute(L"template"); + xstring dataurl = e.getAttribute(L"data"); + xstring sheettype = e.getAttribute(L"reporttype"); + if (rptEle != e) + { + argStr = L""; + rptEle = e; + } + if (sheettype == L"") sheettype = L"report"; + SwitchLayer(L"dw_" + sheettype, L"report"); + if (sheettype == L"report")dw_list.openUrl(dwname); + + SetAgent(); + return 1; + } + + int OnCombboChanged(TEvent* evt, int lParam) + { + int h = xcombobox::GetCurSel(evt->command.hCtrl); + if (h > -1) + { + HCURSOR hCursor = xutil::SetCursorWait(); + KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h); + SwitchReport(e); + PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0); + //OnCmdDispatch(L"xmQuery"); + xutil::RestoreCursor(hCursor); + } + return 1; + } + + int OnTransData() + { + int ret =MessageBox(GetHWND(), L"是否更新数据?\n更新过程预计需要四十分钟,如果中间弹出等待时间过长的提示,请点击中间重试按钮,或等待到一定时间再点击", L"提示", 0x4 /*yesno*/); + if (ret != 6 /*IDYES */) return 1; + + xml x; + + HCURSOR hCursor = xutil::SetCursorWait(); + if (xurl::get(L"/sale/data/Total3/total/transdata", L"", x) != 1) + { + xutil::RestoreCursor(hCursor); + return 1; + } + else + { + xutil::RestoreCursor(hCursor); + alert(L"数据传输完成!"); + return 1; + } + + return 1; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, int param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnDWClick(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + xstring value = hdr.data; + xstring colname = hdr.colname; + int row = hdr.row; + + if (row < 1) return 1; + + xaserverarg arg; + /* + if(colname==L"SONo") + { + xstring SONo = dw_list.GetItemString(row,colname); + arg=new xaserverarg; + + arg.AddArg(L"EntityNo",SONo); + arg.AddArg(L"ReadOnly",L"true"); + OpenWindow(L"dev:xpage[base.maint.so.vx]",arg.getNativePointer()); + } + if(colname==L"InvoiceNo") + { + xstring InvoiceNo= dw_list.GetItemString(row,colname); + arg=new xaserverarg; + + arg.AddArg(L"EntityNo",InvoiceNo); + arg.AddArg(L"ReadOnly",L"true"); + OpenWindow(L"dev:xpage[maint.GDN3.vx]",arg.getNativePointer()); + } + if(colname==L"InvoiceNoEx") + { + xstring InvoiceNoEx= dw_list.GetItemString(row,colname); + arg=new xaserverarg; + + arg.AddArg(L"EntityNo",InvoiceNoEx); + arg.AddArg(L"invoiceno",InvoiceNoEx); + arg.AddArg(L"ReadOnly",L"true"); + OpenWindow(L"dev:xpage[maint.vatnotify.vx]",arg.getNativePointer()); + } + */ + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewEx111TotalWin::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewEx111TotalWin::OnSetFocus); + AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewEx111TotalWin::OnCombboChanged); + AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewEx111TotalWin::OnDWClick); + return 1; + } + + int OnRetrieve(xstring dataurl, xstring argstr) + { + if (!rptEle) return 0; + + dw_list.Reset(); + + xml x; + + xaserverarg arg ; + + arg.AddArg(L"arg", argstr); + trace(argstr); + + xstring sheettype = rptEle.getAttribute(L"reporttype"); + if (sheettype == L"") sheettype = L"report"; + if (xurl::get(dataurl, arg.GetString(), x) != 1) + { + //trace(L"\r\n--------" + x.text()); + dw_list.Redraw(); + return -1; + } + else + { + //xutil::SaveToFile(L"C:\\Temp\\Total3.xml",x.GetXml(),L"",L"",L""); + if (sheettype == L"report") + { + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + } + else if (sheettype == L"cell") + { + } + else if (sheettype == L"office") + { + dw_office.LoadTemplate(x,0); + for (int i = 0; i < dw_office.GetSheetCount(); i++) + { + xcell sheet = dw_office.GetSheet(i); + sheet.SetReadOnly(true); + } + } + } + return 1; + } + + xml getReportSet(xstring category) + { + xml x; + + xaserverarg arg ; + + arg.AddArg(L"category", category); + if (xurl::get(L"/sale/data/Total3/reportset", arg.GetString(), x) != 1) + { + return 0; + } + return x; + } + + int onload() + { + SetArg(); + dw_list = GetControl(L"dw_report"); + dw_office = GetControl(L"dw_office"); + dw_cell = GetControl(L"dw_cell"); + dw_list.openUrl(L"/sale/view/Total3/template/sodetail"); + + argStr = L""; + + xcombobox xc = GetControl(L"cb_report"); + + m_category = L"total/business"; + //m_category = L"total/sample"; + if (GetWinParam()) { + xaserverarg arg =GetArg(); + m_category = arg.GetArgString(L"category"); + } + xml x = getReportSet(m_category); + if (x) + { + KXMLDOMNodeList nlist = x.selectNodes(L"//reports/report"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement rpt = nlist.item(i); + xstring name = rpt.getAttribute(L"name"); + + if (i == 0) xc.SetText(name); + if (i == 0) rptEle = rpt; + } + } + OnAttachEvent(); + return 1; + } + + int onloaded() + { + SetAgent(); + + if (rptEle) + { + SwitchReport(rptEle); + //OnCmdDispatch(L"xmQuery"); + } + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/total3/viewex.total1.cpp b/jrj/project/total3/viewex.total1.cpp new file mode 100644 index 0000000..1370195 --- /dev/null +++ b/jrj/project/total3/viewex.total1.cpp @@ -0,0 +1,369 @@ +#include <wobject/xwin.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xoffice.hpp> +#include <xcontrol/xcell.hpp> +#include <xcontrol/xflowchart.hpp> +#include <xcontrol/ximageview.hpp> +#include <xcontrol/xcombobox.hpp> + +#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> +#include "viewobject/view.base.hpp" + + +using xml = KXMLDOMDocument; + class __declspec(dllexport) ViewExTotal1Win : public xwin + { + public: + ViewExTotal1Win(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} + public: + static ViewExTotal1Win* CreateInstance(void* implPtr, void* hWnd) + { + ViewExTotal1Win* pWin = new ViewExTotal1Win(implPtr, (HWND)hWnd); + return pWin; + } + public: + xdwgrid dw_list; + xoffice dw_office; + xcell dw_cell; + xnode m_agentNode; //Agent Condition + KXMLDOMElement rptEle; + xstring m_category; + xstring argStr; + + int hWndImageView; + int hWndRetrieveTip; + bool dataretrieveing; + + 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 OnSetFocus(TEvent * evt, int param) + { + //重置工具条 + SetAgent(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + xstring UserNo = publiccode::GetUser().no; + + HCURSOR hCursor = 0; + //if(UserNo !=L"00603") + //{ + if (comdid == L"xmAnalysis") + { + hCursor = xutil::SetCursorWait(); + xstring str = dw_list.DataAnalysis(L""); + xaserverarg arg ; + + arg.AddArg(L"html", str); + + OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg ); + xutil::RestoreCursor(hCursor); + return 1; + } + if (comdid == L"xmSaveAs") + { + dw_list.SaveAs(L""); + return 1; + } + //} + if (comdid == L"xmLookImage") + { + int row = dw_list.GetRow(); + xstring skuid = dw_list.GetGuid(row); + OnLookImage(skuid); + return 1; + } + if (comdid == L"xmTrans") + return OnTransData(); + if (comdid == L"xmQuery") + { + if (rptEle) + { + xstring argUrl = rptEle.getAttribute(L"arg"); + if (argUrl != L"") + { + xaserverarg ar ; + + ar.AddArg(L"argurl", argUrl); + if (argStr != L"") + ar.AddArg(L"arg", argStr); + OpenWindow(L"dev:xpage[view.total.arg.vx]", ar); + xstring arstr = ar.GetArgString(L"arg"); + if (arstr != L"" && ar.GetArgString(L"action") == L"ok") + { + argStr = arstr; + hCursor = xutil::SetCursorWait(); + OnRetrieve(rptEle.getAttribute(L"data"), argStr); + xutil::RestoreCursor(hCursor); + } + } + else + { + argStr = L""; + OnRetrieve(rptEle.getAttribute(L"data"), argStr); + } + } + return 1; + } + + return 0; + } + + int OnLookImage(xstring skuid) + { + HCURSOR hCursor = xutil::SetCursorWait(); + xaserverarg arg ; + arg.AddArg(L"guid", skuid); + OpenWindow(L"dev:xpage[ViewPictures.vx]", arg); + xutil::RestoreCursor(hCursor); + return 1; + } + + int SwitchReport(KXMLDOMElement e) + { + xstring dwname = e.getAttribute(L"template"); + xstring dataurl = e.getAttribute(L"data"); + xstring sheettype = e.getAttribute(L"reporttype"); + if (rptEle != e) + { + argStr = L""; + rptEle = e; + } + if (sheettype == L"") sheettype = L"report"; + SwitchLayer(L"dw_" + sheettype, L"report"); + if (sheettype == L"report")dw_list.openUrl(dwname); + + SetAgent(); + return 1; + } + + int OnCombboChanged(TEvent* evt, int lParam) + { + int h = xcombobox::GetCurSel(evt->command.hCtrl); + if (h > -1) + { + HCURSOR hCursor = xutil::SetCursorWait(); + KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h); + SwitchReport(e); + PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0); + //OnCmdDispatch(L"xmQuery"); + xutil::RestoreCursor(hCursor); + } + return 1; + } + + int OnTransData() + { + int ret = MessageBox(GetHWND(), L"是否更新数据?\n更新过程预计需要四十分钟,如果中间弹出等待时间过长的提示,请点击中间重试按钮,或等待到一定时间再点击", L"提示", 0x4 /*yesno*/); + if (ret != 6 /*IDYES */) return 1; + + xml x; + + HCURSOR hCursor = xutil::SetCursorWait(); + if (xurl::get(L"/sale/data/Total3/total/transdata", L"", x) != 1) + { + xutil::RestoreCursor(hCursor); + return 1; + } + else + { + xutil::RestoreCursor(hCursor); + alert(L"数据传输完成!"); + return 1; + } + + return 1; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, int param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnDWClick(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + xstring value = hdr.data; + xstring colname = hdr.colname; + int row = hdr.row; + + if (row < 1) return 1; + + xaserverarg arg; + /* + if(colname==L"SONo") + { + xstring SONo = dw_list.GetItemString(row,colname); + arg=new xaserverarg; + + arg.AddArg(L"EntityNo",SONo); + arg.AddArg(L"ReadOnly",L"true"); + OpenWindow(L"dev:xpage[base.maint.so.vx]",arg.getNativePointer()); + } + if(colname==L"InvoiceNo") + { + xstring InvoiceNo= dw_list.GetItemString(row,colname); + arg=new xaserverarg; + + arg.AddArg(L"EntityNo",InvoiceNo); + arg.AddArg(L"ReadOnly",L"true"); + OpenWindow(L"dev:xpage[maint.GDN3.vx]",arg.getNativePointer()); + } + if(colname==L"InvoiceNoEx") + { + xstring InvoiceNoEx= dw_list.GetItemString(row,colname); + arg=new xaserverarg; + + arg.AddArg(L"EntityNo",InvoiceNoEx); + arg.AddArg(L"invoiceno",InvoiceNoEx); + arg.AddArg(L"ReadOnly",L"true"); + OpenWindow(L"dev:xpage[maint.vatnotify.vx]",arg.getNativePointer()); + } + */ + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewExTotal1Win::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewExTotal1Win::OnSetFocus); + AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewExTotal1Win::OnCombboChanged); + AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewExTotal1Win::OnDWClick); + return 1; + } + + int OnRetrieve(xstring dataurl, xstring argstr) + { + if (!rptEle) return 0; + + dw_list.Reset(); + + xml x; + + xaserverarg arg ; + + arg.AddArg(L"arg", argstr); + trace(argstr); + + xstring sheettype = rptEle.getAttribute(L"reporttype"); + if (sheettype == L"") sheettype = L"report"; + if (xurl::get(dataurl, arg.GetString(), x) != 1) + { + //trace(L"\r\n--------" + x.text()); + dw_list.Redraw(); + return -1; + } + else + { + //xutil::SaveToFile(L"C:\\Temp\\Total3.xml",x.GetXml(),L"",L"",L""); + if (sheettype == L"report") + { + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + } + else if (sheettype == L"cell") + { + } + else if (sheettype == L"office") + { + dw_office.LoadTemplate(x,0); + for (int i = 0; i < dw_office.GetSheetCount(); i++) + { + xcell sheet = dw_office.GetSheet(i); + sheet.SetReadOnly(true); + } + } + } + return 1; + } + + xml getReportSet(xstring category) + { + xml x; + + xaserverarg arg ; + + arg.AddArg(L"category", category); + if (xurl::get(L"/sale/data/Total3/reportset", arg.GetString(), x) != 1) + { + return 0; + } + return x; + } + + int onload() + { + SetArg(); + dw_list = GetControl(L"dw_report"); + dw_office = GetControl(L"dw_office"); + dw_cell = GetControl(L"dw_cell"); + dw_list.openUrl(L"/sale/view/Total3/template/sodetail"); + + argStr = L""; + + xcombobox xc = GetControl(L"cb_report"); + + m_category = L"total/business"; + //m_category = L"total/sample"; + if (GetWinParam()) { + xaserverarg arg=GetArg() ; + + m_category = arg.GetArgString(L"category"); + } + xml x = getReportSet(m_category); + if (x) + { + KXMLDOMNodeList nlist = x.selectNodes(L"//reports/report"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement rpt = nlist.item(i); + xstring name = rpt.getAttribute(L"name"); + if (i == 0) xc.SetText(name); + if (i == 0) rptEle = rpt; + } + } + OnAttachEvent(); + return 1; + } + + int onloaded() + { + SetAgent(); + + if (rptEle) + { + SwitchReport(rptEle); + //OnCmdDispatch(L"xmQuery"); + } + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/total3/viewex.total2.cpp b/jrj/project/total3/viewex.total2.cpp new file mode 100644 index 0000000..8285b34 --- /dev/null +++ b/jrj/project/total3/viewex.total2.cpp @@ -0,0 +1,370 @@ +#include <wobject/xwin.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/xoffice.hpp> +#include <xcontrol/xcell.hpp> +#include <xcontrol/xflowchart.hpp> +#include <xcontrol/ximageview.hpp> +#include <xcontrol/xcombobox.hpp> + +#include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> +#include "viewobject/view.base.hpp" + + +using xml = KXMLDOMDocument; + class __declspec(dllexport) ViewExTotal2Win : public xwin + { + public: + ViewExTotal2Win(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} + public: + static ViewExTotal2Win* CreateInstance(void* implPtr, void* hWnd) + { + ViewExTotal2Win* pWin = new ViewExTotal2Win(implPtr, (HWND)hWnd); + return pWin; + } + public: + xdwgrid dw_list; + xoffice dw_office; + xcell dw_cell; + xnode m_agentNode; //Agent Condition + KXMLDOMElement rptEle; + xstring m_category; + xstring argStr; + + int hWndImageView; + int hWndRetrieveTip; + bool dataretrieveing; + + 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 OnSetFocus(TEvent * evt, int param) + { + //重置工具条 + SetAgent(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + xstring UserNo = publiccode::GetUser().no; + + HCURSOR hCursor = 0; + //if(UserNo !=L"00603") + //{ + if (comdid == L"xmAnalysis") + { + hCursor = xutil::SetCursorWait(); + xstring str = dw_list.DataAnalysis(L""); + xaserverarg arg ; + + arg.AddArg(L"html", str); + + OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg); + xutil::RestoreCursor(hCursor); + return 1; + } + if (comdid == L"xmSaveAs") + { + dw_list.SaveAs(L""); + return 1; + } + //} + if (comdid == L"xmLookImage") + { + int row = dw_list.GetRow(); + xstring skuid = dw_list.GetGuid(row); + OnLookImage(skuid); + return 1; + } + if (comdid == L"xmTrans") + return OnTransData(); + if (comdid == L"xmQuery") + { + if (rptEle) + { + xstring argUrl = rptEle.getAttribute(L"arg"); + if (argUrl != L"") + { + xaserverarg ar ; + + ar.AddArg(L"argurl", argUrl); + if (argStr != L"") + ar.AddArg(L"arg", argStr); + OpenWindow(L"dev:xpage[view.total.arg.vx]", ar); + xstring arstr = ar.GetArgString(L"arg"); + if (arstr != L"" && ar.GetArgString(L"action") == L"ok") + { + argStr = arstr; + hCursor = xutil::SetCursorWait(); + OnRetrieve(rptEle.getAttribute(L"data"), argStr); + xutil::RestoreCursor(hCursor); + } + } + else + { + argStr = L""; + OnRetrieve(rptEle.getAttribute(L"data"), argStr); + } + } + return 1; + } + + return 0; + } + + int OnLookImage(xstring skuid) + { + HCURSOR hCursor = xutil::SetCursorWait(); + xaserverarg arg ; + arg.AddArg(L"guid", skuid); + OpenWindow(L"dev:xpage[ViewPictures.vx]", arg); + xutil::RestoreCursor(hCursor); + return 1; + } + + int SwitchReport(KXMLDOMElement e) + { + xstring dwname = e.getAttribute(L"template"); + xstring dataurl = e.getAttribute(L"data"); + xstring sheettype = e.getAttribute(L"reporttype"); + if (rptEle != e) + { + argStr = L""; + rptEle = e; + } + if (sheettype == L"") sheettype = L"report"; + SwitchLayer(L"dw_" + sheettype, L"report"); + if (sheettype == L"report")dw_list.openUrl(dwname); + + SetAgent(); + return 1; + } + + int OnCombboChanged(TEvent* evt, int lParam) + { + int h = xcombobox::GetCurSel(evt->command.hCtrl); + if (h > -1) + { + HCURSOR hCursor = xutil::SetCursorWait(); + KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h); + SwitchReport(e); + PostMessage(GetHWND(), 0x401, (WPARAM)L"xmQuery", 0); + //OnCmdDispatch(L"xmQuery"); + xutil::RestoreCursor(hCursor); + } + return 1; + } + + int OnTransData() + { + int ret =MessageBox(GetHWND(), L"是否更新数据?\n更新过程预计需要四十分钟,如果中间弹出等待时间过长的提示,请点击中间重试按钮,或等待到一定时间再点击", L"提示", 0x4 /*yesno*/); + if (ret != 6 /*IDYES */) return 1; + + xml x; + + HCURSOR hCursor = xutil::SetCursorWait(); + if (xurl::get(L"/sale/data/Total3/total/transdata", L"", x) != 1) + { + xutil::RestoreCursor(hCursor); + return 1; + } + else + { + xutil::RestoreCursor(hCursor); + alert(L"数据传输完成!"); + return 1; + } + + return 1; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, int param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnDWClick(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + xstring value = hdr.data; + xstring colname = hdr.colname; + int row = hdr.row; + + if (row < 1) return 1; + + xaserverarg arg; + /* + if(colname==L"SONo") + { + xstring SONo = dw_list.GetItemString(row,colname); + arg=new xaserverarg; + + arg.AddArg(L"EntityNo",SONo); + arg.AddArg(L"ReadOnly",L"true"); + OpenWindow(L"dev:xpage[base.maint.so.vx]",arg.getNativePointer()); + } + if(colname==L"InvoiceNo") + { + xstring InvoiceNo= dw_list.GetItemString(row,colname); + arg=new xaserverarg; + + arg.AddArg(L"EntityNo",InvoiceNo); + arg.AddArg(L"ReadOnly",L"true"); + OpenWindow(L"dev:xpage[maint.GDN3.vx]",arg.getNativePointer()); + } + if(colname==L"InvoiceNoEx") + { + xstring InvoiceNoEx= dw_list.GetItemString(row,colname); + arg=new xaserverarg; + + arg.AddArg(L"EntityNo",InvoiceNoEx); + arg.AddArg(L"invoiceno",InvoiceNoEx); + arg.AddArg(L"ReadOnly",L"true"); + OpenWindow(L"dev:xpage[maint.vatnotify.vx]",arg.getNativePointer()); + } + */ + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewExTotal2Win::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewExTotal2Win::OnSetFocus); + AttachEvent(L"cb_report", L"CBN_SELCHANGE", (FEvent)&ViewExTotal2Win::OnCombboChanged); + AttachEvent(L"dw_report", L"DWV_CLICKED", (FEvent)&ViewExTotal2Win::OnDWClick); + return 1; + } + + int OnRetrieve(xstring dataurl, xstring argstr) + { + if (!rptEle) return 0; + + dw_list.Reset(); + + xml x; + + xaserverarg arg ; + + arg.AddArg(L"arg", argstr); + trace(argstr); + + xstring sheettype = rptEle.getAttribute(L"reporttype"); + if (sheettype == L"") sheettype = L"report"; + if (xurl::get(dataurl, arg.GetString(), x) != 1) + { + //trace(L"\r\n--------" + x.text()); + dw_list.Redraw(); + return -1; + } + else + { + //xutil::SaveToFile(L"C:\\Temp\\Total3.xml",x.GetXml(),L"",L"",L""); + if (sheettype == L"report") + { + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + } + else if (sheettype == L"cell") + { + } + else if (sheettype == L"office") + { + dw_office.LoadTemplate(x, 0); + for (int i = 0; i < dw_office.GetSheetCount(); i++) + { + xcell sheet = dw_office.GetSheet(i); + sheet.SetReadOnly(true); + } + } + } + return 1; + } + + xml getReportSet(xstring category) + { + xml x; + + xaserverarg arg ; + + arg.AddArg(L"category", category); + if (xurl::get(L"/sale/data/Total3/reportset", arg.GetString(), x) != 1) + { + return 0; + } + return x; + } + + int onload() + { + SetArg(); + dw_list = GetControl(L"dw_report"); + dw_office = GetControl(L"dw_office"); + dw_cell = GetControl(L"dw_cell"); + dw_list.openUrl(L"/sale/view/Total3/template/sodetail"); + + argStr = L""; + + xcombobox xc = GetControl(L"cb_report"); + + m_category = L"total/business"; + //m_category = L"total/sample"; + if (GetWinParam()) { + xaserverarg arg =GetArg(); + + m_category = arg.GetArgString(L"category"); + } + xml x = getReportSet(m_category); + if (x) + { + KXMLDOMNodeList nlist = x.selectNodes(L"//reports/report"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement rpt = nlist.item(i); + xstring name = rpt.getAttribute(L"name"); + xc.AddItem(name, rpt); + if (i == 0) xc.SetText(name); + if (i == 0) rptEle = rpt; + } + } + OnAttachEvent(); + return 1; + } + + int onloaded() + { + SetAgent(); + + if (rptEle) + { + SwitchReport(rptEle); + //OnCmdDispatch(L"xmQuery"); + } + + return 1; + } + }; \ No newline at end of file -- Gitblit v1.9.3