LiFan
2024-07-10 b520858b7365095ec5926b7c1a16e4396d507747
jrj/project/business/Enquiry/ProductSchema.cpp
@@ -1,38 +1,51 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "base.view.vd"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xdatetimepick.hpp>
unit trade
[
   class ProductSchemaWin : public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
   class __declspec(dllexport) ProductSchemaWin : public xframe
   {
   public:
      xdwtable   dw_base;
      xdwgrid   dw_list;
      xnode   m_agentNode;   //Agent Condition
   public:
      ProductSchemaWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
   public:
      static ProductSchemaWin* CreateInstance(void* implPtr, void* hWnd)
      {
         ProductSchemaWin* pWin = new ProductSchemaWin(implPtr, (HWND)hWnd);
         return pWin;
      }
      int SetAgent()
      {
         string xfNodeAgentArea = "agentarea";
         xstring xfNodeAgentArea = L"agentarea";
         xnode anode = GetAgentNode(xfNodeAgentArea);
         if (m_agentNode)
         {
            SetAgentNodeContent(anode, m_agentNode);
            SetAgentNode(anode, m_agentNode);
         }
         else
         {
            msxml::IXMLDOMElement xframeElement = GetElement();
            msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*");
            KXMLDOMElement xframeElement = GetElement();
            KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
            if (agent)
            {
               string s = agent.xml;
               m_agentNode = SetAgentNodeContent(anode, s);
               xstring s = agent.xml();
               m_agentNode = SetAgentNode(anode, s);
            }
         }
         return 1;
      }
      //焦点激活处理函数
      int OnSetFocus(ref TEvent evt, int param)
      int OnSetFocus(TEvent* evt, LPARAM param)
      {
         //重置工具条
         SetAgent();
@@ -40,48 +53,48 @@
      }
      //命令发布函数
      int OnCmdDispatch(string comdid)
      int OnCmdDispatch(xstring comdid)
      {
         if (comdid == "xmAddRow")
         if (comdid == L"xmAddRow")
         {
            int row = dw_list.InsertRow(0);
            string sdate = publiccode::GetCurrentDate();
            dw_list.SetItemString(row, "SKUID", dw_base.GetItemString(1, "SKUID"));
            dw_list.SetItemDisplayString(row, "SKUID", dw_base.GetItemString(1, "SKUNo"));
            dw_list.SetItemString(row, "GoodsNo", dw_base.GetItemString(1, "GoodsNo"));
            dw_list.SetItemString(row, "CName", dw_base.GetItemString(1, "CName"));
            dw_list.SetItemString(row, "ProductQty", "1");
            dw_list.SetItemString(row, "PartQty", "1");
            dw_list.SetItemString(row, "CreateDate", sdate);
            xstring sdate = publiccode::GetCurrentDate();
            dw_list.SetItemString(row, L"SKUID", dw_base.GetItemString(1, L"SKUID"));
            dw_list.SetItemDisplayString(row, L"SKUID", dw_base.GetItemString(1, L"SKUNo"));
            dw_list.SetItemString(row, L"GoodsNo", dw_base.GetItemString(1, L"GoodsNo"));
            dw_list.SetItemString(row, L"CName", dw_base.GetItemString(1, L"CName"));
            dw_list.SetItemString(row, L"ProductQty", L"1");
            dw_list.SetItemString(row, L"PartQty", L"1");
            dw_list.SetItemString(row, L"CreateDate", sdate);
            return 1;
         }
         else if (comdid == "xmDeleteRow")
         else if (comdid == L"xmDeleteRow")
         {
            dw_list.DeleteRow(0);
            return 1;
         }
         else if (comdid == "xmClose")
         else if (comdid == L"xmClose")
         {
            CloseWindow();
            return 1;
         }
         else if (comdid == "xmSave")
         else if (comdid == L"xmSave")
         {
            return OnSave();
         }
         return 0;
      }
      int OnArgItemChanged(ref TNotifyEvent evt, int p)
      int OnArgItemChanged(TEvent* evt, LPARAM p)
      {
         ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
         string colname = hdr.colname;
         string value = hdr.data;
         DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
         xstring colname = hdr.colname;
         xstring value = hdr.data;
         string dwname = "dw_base";
         if (value != "")
         xstring dwname = L"dw_base";
         if (value != L"")
         {
            msxml::IXMLDOMNodeList nlist = GetElement().selectNodes("//*[@name='" + dwname + "']/trans[@for='" + colname + "']");
            KXMLDOMNodeList nlist = GetElement().selectNodes(L"//*[@name='" + dwname + L"']/trans[@for='" + colname + L"']");
            ViewObject::TransData(nlist, dw_base, hdr.row, colname, value);
         }
         OnRetrieve();
@@ -92,46 +105,47 @@
      int OnSave()
      {
         dw_list.AcceptText();
         xml  x = xml::Make();
         xaserverarg arg = xaserverarg::Make();
         dw_list.DwUpdateAllToEx(x.GetXmlDoc());
         xml  x ;
         xaserverarg arg;
         dw_list.DwUpdateAllToEx(x);
         arg.AddArg("content", x.GetXml());
         if (url::get("/sale/data/ProductLibrary3/update/product/schema", arg.GetString(), x) != 1)
         arg.AddArg(L"content", x.xml());
         if (xurl::get(L"/sale/data/ProductLibrary3/update/product/schema", arg.GetString(), x) != 1)
         {
            string error = x.GetXmlDoc().text;
            alert("err:" + error);
            x.Free();
            xstring error = x.text();
            alert(L"err:" + error);
            return -1;
         }
         string str = x.GetXmlDoc().documentElement.getAttribute("text");
         xstring str = x.documentElement().getAttribute(L"text");
         //alert(str);
         x.Free();
         if (str == "false")
         if (str == L"false")
         {
            alert("保存失败!");
            alert(L"保存失败!");
            return -1;
         }
         dw_list.ResetUpdateStatus();
         alert("保存成功!");
         alert(L"保存成功!");
         return 1;
      }
      //命令处理事件
      int OnXCommand(ref TXCommandEvent evt, int param)
      int OnXCommand(TEvent* evt, LPARAM param)
      {
         return OnCmdDispatch(evt.pStrID);
         return OnCmdDispatch(evt->xcommand.pStrID);
      }
      int OnAttachEvent()
      {
         //绑定工具条点击事件
         AttachEvent("WM_XCOMMAND", OnXCommand);
         AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductSchemaWin::OnXCommand);
         //获取焦点事件,用于重置工具条
         AttachEvent("WM_SETFOCUS", OnSetFocus);
         AttachEvent("dw_base", "DWV_ITEMCHANGED", OnArgItemChanged);
         AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductSchemaWin::OnSetFocus);
         AttachEvent(L"dw_base", L"DWV_ITEMCHANGED", (FEvent)&ProductSchemaWin::OnArgItemChanged);
         return 1;
      }
      int  OnRetrieve()
@@ -139,15 +153,15 @@
         dw_list.Reset();
         dw_list.Redraw();
         xml x = new xml;
         x.setNativePointer(xml::CreateInstance());
         xaserverarg arg = new xaserverarg;
         arg.setNativePointer(arg.CreateInstance());
         arg.AddArg("SKUID", dw_base.GetItemString(1, "SKUID"));
         //alert(dw_base.GetItemString(1,"SKUID"));
         if (getUrl("/sale/data/ProductLibrary3/ProductSchemaList", arg.GetString(), x) != 1)
         xml x ;
         xaserverarg arg;
         arg.AddArg(L"SKUID", dw_base.GetItemString(1, L"SKUID"));
         //alert(dw_base.GetItemString(1,L"SKUID"));
         if (getUrl(L"/sale/data/ProductLibrary3/ProductSchemaList", arg.GetString(), x) != 1)
         {
            trace(x.GetXmlDoc().text);
            trace(x.text());
            return -1;
         }
         else
@@ -160,12 +174,12 @@
      int onload()
      {
         dw_list = GetControl("dw_list");
         dw_list.openUrl("/sale/view/ProductLibrary/template/ProductSchema");
         dw_list.SetColumnState("CreateDate", false);
         dw_list = GetControl(L"dw_list");
         dw_list.openUrl(L"/sale/view/ProductLibrary/template/ProductSchema");
         dw_list.SetColumnState(L"CreateDate", false);
         dw_base = GetControl("dw_base");
         dw_base.openUrl("/sale/view/ProductLibrary/template/ProductArg");
         dw_base = GetControl(L"dw_base");
         dw_base.openUrl(L"/sale/view/ProductLibrary/template/ProductArg");
         dw_base.SetColHeaderHeight(0);
         dw_base.SetRowSelectorWidth(0);
         dw_base.SetHScrollState(false);
@@ -183,5 +197,4 @@
         return 1;
      }
   };
]
   };