From 5442aa2a75d2f40287ebeecd0afb9d1576661603 Mon Sep 17 00:00:00 2001 From: LiFan <2308045698@qq.com> Date: 星期四, 25 七月 2024 11:27:38 +0800 Subject: [PATCH] update --- jrj/project/business/Enquiry/Quick.Input.NewProductEx.cpp | 329 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ jrj/project/business/Enquiry/Entity.Product.Select.cpp | 4 jrj/ext-jrj/ext-jrj.vcxproj | 1 jrj/ext-jrj/ext-jrj.vcxproj.filters | 3 4 files changed, 335 insertions(+), 2 deletions(-) diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj index 29756db..61d00f1 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj +++ b/jrj/ext-jrj/ext-jrj.vcxproj @@ -494,6 +494,7 @@ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild> </ClCompile> + <ClCompile Include="..\project\business\Enquiry\Quick.Input.NewProductEx.cpp" /> <ClCompile Include="..\project\business\Enquiry\SKU.PictureView.Product3.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild> diff --git a/jrj/ext-jrj/ext-jrj.vcxproj.filters b/jrj/ext-jrj/ext-jrj.vcxproj.filters index 5c5be77..50b1619 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj.filters +++ b/jrj/ext-jrj/ext-jrj.vcxproj.filters @@ -1265,5 +1265,8 @@ <ClCompile Include="..\project\business\Expense\FreightExpenseList.cpp"> <Filter>project\business\Expense</Filter> </ClCompile> + <ClCompile Include="..\project\business\Enquiry\Quick.Input.NewProductEx.cpp"> + <Filter>project\business\Enquiry</Filter> + </ClCompile> </ItemGroup> </Project> \ No newline at end of file diff --git a/jrj/project/business/Enquiry/Entity.Product.Select.cpp b/jrj/project/business/Enquiry/Entity.Product.Select.cpp index 99ce155..268ae59 100644 --- a/jrj/project/business/Enquiry/Entity.Product.Select.cpp +++ b/jrj/project/business/Enquiry/Entity.Product.Select.cpp @@ -848,8 +848,8 @@ if (Name == L"") Name = e.getAttribute(L"cname"); arg.AddArg(L"No", No); arg.AddArg(L"CName", Name); - int p = arg; - OpenWindow(L"dev:xpage[Quick.Input.NewProductEx.vx]", p); + + OpenWindow(L"dev:xpage[Quick.Input.NewProductEx.vx]", arg); if (arg.GetArgString(L"data.modify") == L"1")RetrieveItem(hItem); return 1; } diff --git a/jrj/project/business/Enquiry/Quick.Input.NewProductEx.cpp b/jrj/project/business/Enquiry/Quick.Input.NewProductEx.cpp new file mode 100644 index 0000000..14f1a12 --- /dev/null +++ b/jrj/project/business/Enquiry/Quick.Input.NewProductEx.cpp @@ -0,0 +1,329 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xdatetimepick.hpp> +#include <adt/xarray.hpp> +#include <xcontrol/xcell.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + + +using xml = KXMLDOMDocument; + class __declspec(dllexport) QuickInputNewProductExWin : public xwin + { + public: + QuickInputNewProductExWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} + public: + static QuickInputNewProductExWin* CreateInstance(void* implPtr, void* hWnd) + { + return new QuickInputNewProductExWin(implPtr, (HWND)hWnd); + } + public: + xdwtable dw_detail; + xdwtable dw_props; + xdwtable dw_base; + + xdwgrid dw_list; + xnode m_agentNode; //Agent Condition + + xstring m_refno; + xaserverarg parg; + + 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; + } + + //读取产品树的子项 + xml RetrieveGoodsTreeChildItems(xstring sno) + { + xml x ; + + xaserverarg arg ; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"no",sno); + if(xurl::get(L"/sale/data/SO/goods/goodslib/ChildFolderList", arg.GetString(),x)!=1) + { + xstring error = x.text(); + //alert(error); + return 0; + }else + return x; + } + + //插入产品类项的子项 + int MakeGoodsFolder(xstring sno,int level ) + { + xcombobox cbx_type = GetControl(L"cbx_category"); + xml x = RetrieveGoodsTreeChildItems(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"no"); + + if(level == 1) + cbx_type.AddItem(no +L" "+ name); + else + cbx_type.AddItem(L" "+ no +L" " + name); + if(level ==1) + MakeGoodsFolder(no,level + 1); + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + SetAgent(); + return 1; + } + + xstring GetNo() + { + xstring typ=L"C"; + if(m_refno.left(1)==L"[") typ=L"N"; + + xml x; + + xaserverarg arg ; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"count", L"1" ); + arg.AddArg(L"type", typ ); + if(xurl::get(L"/sale/data/SO/goods/usegoods/goodslib/asknos", arg.GetString(),x)!=1)return L""; + return x.text(); + } + + int OnSave() + { + int row = 0; + for( row = 1;row <= dw_list.GetRowCount();row++) + { + if(dw_list.GetItemString(row,L"Cname") == L"") + { + alert(L"第"+xstring(row)+L"行请输入中文名称"); + return 0; + } + if(dw_list.GetItemString(row,L"PackingRate") == L"") + { + alert(L"第"+ xstring(row) +L"行请输入包装方式"); + return 0; + } + if(dw_list.GetItemString(row,L"InnerQty") == L"") + { + alert(L"第"+ xstring(row) +L"行请输入内装数"); + return 0; + } + if(dw_list.GetItemString(row,L"PackingRate") == L"") + { + alert(L"第"+ xstring(row) +L"行请输入外装数"); + return 0; + } + if(dw_list.GetItemString(row,L"PackageL") == L"") + { + alert(L"第"+ xstring(row) +L"行请输入长度"); + return 0; + } + if(dw_list.GetItemString(row,L"PackageW") == L"") + { + alert(L"第"+ xstring(row) +L"行请输入宽度"); + return 0; + } + if(dw_list.GetItemString(row,L"PackageH") == L"") + { + alert(L"第"+ xstring(row) +L"行请输入高度"); + return 0; + } + } + for(row = 1;row <= dw_list.GetRowCount();row++) + { + dw_list.SetItemString(row,L"No",GetNo()); + } + dw_list.Redraw(); + xml x ; + + dw_list.AcceptText(); + dw_list.DwUpdateAllToEx(x); + xaserverarg arg ; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"content",x.xml()); + if(xurl::get(L"/sale/data/ProductLibrary3/update/newestproduct", arg.GetString(),x)!=1) + { + xstring error = x.text(); + alert(error); + return 1; + }else + { + alert(L"保存成功!"); + dw_base.ResetUpdateStatus(); + dw_list.ResetUpdateStatus(); + if(parg)parg.AddArg(L"data.modify",L"1"); + } + return 1; + } + + int OnAddItem() + { + dw_list.InsertRow(0); + int row = dw_list.GetRowCount(); + xstring sdate = publiccode::GetCurrentDate(); + xstring suserid = publiccode::GetUser().id; + xstring categoryID = dw_base.GetItemString(1,L"CategoryID"); + xstring supplierID = dw_base.GetItemString(1,L"SupplierID"); + dw_list.SetItemString(row,L"FolderID",parg.GetArgString(L"guid")); + if(categoryID)dw_list.SetItemString(row,L"CategoryID",categoryID); + if(supplierID)dw_list.SetItemString(row,L"SupplierID",supplierID); + dw_list.SetItemString(row,L"CreateID",suserid); + dw_list.SetItemString(row,L"CreateDate",sdate); + dw_list.SetItemString(row,L"ModifierID",suserid); + dw_list.SetItemString(row,L"ModifyDate",sdate); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if(comdid == L"xmAdd") + { + OnAddItem(); + } + else if(comdid == L"xmDelete") + { + dw_list.DeleteRow(dw_list.GetRow()); + } + else if(comdid == L"xmSave") + { + OnSave(); + } + else if(comdid==L"xmCancel") + { + CloseWindow(); + return 1; + } + return 0; + } + + + int OnCategoryChanged(TEvent* evt, int lParam) + { + xstring id = L""; + xstring name = L""; + xcombobox cbx_type = GetControl(L"cbx_category"); + int h = cbx_type.GetCurSel(); + xstring str = cbx_type.GetLBText(h); + str = str.trim(); + return 1; + } + + + int OnItemChanged(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + xstring colname=hdr.colname; + xstring value = hdr.data; + int row = hdr.row; + + if(colname == L"CategoryID" || colname == L"SupplierID") + { + xstring categoryID = dw_base.GetItemString(1,L"CategoryID"); + xstring supplierID = dw_base.GetItemString(1,L"SupplierID"); + for(int i=1;i<=dw_list.GetRowCount();i++) + { + dw_list.SetItemString(i,L"CategoryID",categoryID); + dw_list.SetItemString(i,L"SupplierID",supplierID); + } + } + return 1; + } + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&QuickInputNewProductExWin::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&QuickInputNewProductExWin::OnSetFocus); + AttachEvent(L"dw_base",L"DWV_ITEMCHANGED", (FEvent)&QuickInputNewProductExWin::OnItemChanged); + AttachEvent(L"cbx_category",L"CBN_SELCHANGE", (FEvent)&QuickInputNewProductExWin::OnCategoryChanged); + return 1; + } + + int OnInit() + { + dw_base.SetItemString(1,L"CategoryID",L"EF37E57D-5833-4AF9-BA5E-01CCF39C1F20"); + dw_base.SetItemDisplayString(1,L"CategoryID",L"礼品"); + dw_base.Redraw(); + OnAddItem(); + return 1; + } + int onload() + { + SetArg(); + dw_base = GetControl(L"dw_base"); + dw_base.openUrl(L"/sale/view/ProductLibrary/template/newitemgroup"); + dw_base.SetColHeaderHeight(0); + dw_base.SetRowSelectorWidth(0); + dw_base.SetHScrollState(false); + dw_base.SetVScrollState(false); + dw_base.SetEditUpperMode(true); + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"/sale/view/ProductLibrary/template/newProductItem"); + dw_list.SetColumnState(L"CategoryID",false); + dw_list.SetColumnState(L"FolderID",false); + dw_list.SetColumnState(L"SupplierID",false); + dw_list.SetColumnState(L"CreateID",false); + dw_list.SetColumnState(L"CreateDate",false); + dw_list.SetColumnState(L"ModifierID",false); + dw_list.SetColumnState(L"ModifyDate",false); + + if(GetWinParam()) + { + + parg = GetArg(); + + xcombobox cbx_type = GetControl(L"cbx_category"); + xstring txt = parg.GetArgString(L"CategoryNo").trim() + L" " + parg.GetArgString(L"CName").trim(); + cbx_type.AddItem(txt, (LPARAM)parg.GetArgString(L"guid").c_str(true)); //leak + cbx_type.SetText(txt); + } + OnAttachEvent(); + OnInit(); + return 1; + } + + int onloaded() + { + + SetAgent(); + + return 1; + } + }; \ No newline at end of file -- Gitblit v1.9.3