LiFan
2024-10-29 db02064b0a296aaeab02780c892b3ce8e80012b1
jrj/project/business/Affair/Business5.cpp
@@ -1,12 +1,17 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "saleorder.view.vd"
use "publiccode.vutil.vbusiness.vd"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xcell.hpp>
unit trade
[
   class Business5Win :  public xframe
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
   class __declspec(dllexport) Business5Win :  public xframe
   {
   public:
      xdwgrid   dw_list;
      xdwgrid dw_processed;
      xdwgrid dw_message;
@@ -18,26 +23,35 @@
      int      hMessage;
      int      hTask;
   
      string    agentFor;
      string    selectname;
      xstring    agentFor;
      xstring    selectname;
      xwin      sheet;
   public:
      Business5Win(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
   public:
      static Business5Win* CreateInstance(void* implPtr, void* hWnd)
      {
         Business5Win* pWin = new Business5Win(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+"[@for='"+agentFor+"']/*");
            KXMLDOMElement xframeElement =  GetElement();
            KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[@for='"+agentFor+L"']/*");
            if(agent)
            {
               string s = agent.xml;
               m_agentNode =  SetAgentNodeContent (anode,s);
               xstring s = agent.xml();
               m_agentNode =  SetAgentNode (anode,s);
               //FillGoodsCarList();
            }
         }
@@ -45,7 +59,7 @@
      }
      //焦点激活处理函数
      int OnSetFocus(ref TEvent evt,int param)
      int OnSetFocus(TEvent* evt, LPARAM param)
      {
         //重置工具条
         SetAgent();
@@ -53,32 +67,33 @@
      }
      int RetrieveData()
      {
         if(selectname == "已处理任务")
         xml x;
         if(selectname == L"已处理任务")
         {
            xml x = ViewObject::RetrieveData("/sale/data/business/list/processedtask");
             x = ViewObject::RetrieveData(L"/sale/data/business/list/processedtask");
            dw_processed.Retrieve(x);
            dw_processed.Redraw();
            dw_processed.SetReadOnly(true);
         }else if(selectname == "收件箱")
         }else if(selectname == L"收件箱")
         {
            string UserNO= publiccode::GetUser().no;
            xstring UserNO= publiccode::GetUser().no;
            
            x = ViewObject::RetrieveData("/sale/data/business/list/inbox");
            x = ViewObject::RetrieveData(L"/sale/data/business/list/inbox");
            
            dw_message.Retrieve(x);
            dw_message.Redraw();
            dw_message.SetReadOnly(true);
         }
         else if(selectname == "发件箱")
         else if(selectname == L"发件箱")
         {
            x = ViewObject::RetrieveData("/sale/data/business/list/outbox");
            x = ViewObject::RetrieveData(L"/sale/data/business/list/outbox");
            dw_outbox.Retrieve(x);
            dw_outbox.Redraw();
            dw_outbox.SetReadOnly(true);
         }
         else if(selectname == "回收箱")
         else if(selectname == L"回收箱")
         {
            x = ViewObject::RetrieveData("/sale/data/business/list/Recovery");
            x = ViewObject::RetrieveData(L"/sale/data/business/list/Recovery");
            dw_Recovery.Retrieve(x);
            dw_Recovery.Redraw();
            dw_Recovery.SetReadOnly(true);
@@ -90,20 +105,20 @@
      {
         int MB_OKCANCEL = 1;
         int IDOK  = 1;
         int ret = win32::MessageBox(GetHWND(),"确认删除消息?","提示",MB_OKCANCEL);
         int ret =MessageBox(GetHWND(),L"确认删除消息?",L"提示",MB_OKCANCEL);
         if(ret == IDOK)
         {
            msxml::IXMLDOMElement ele = dw_message.GetRowElement(dw_message.GetRow());
            string TaskID = ele.getAttribute("guid");
            xml x = ViewObject::RetrieveData("/sale/data/business/message/delete","TaskID",TaskID);
            string status = x.GetXml();
            if(status.find("ok") == 1)
            KXMLDOMElement ele = dw_message.GetRowElement(dw_message.GetRow());
            xstring TaskID = ele.getAttribute(L"guid");
            xml x = ViewObject::RetrieveData(L"/sale/data/business/message/delete",L"TaskID",TaskID);
            xstring status = x.xml();
            if(status.find(L"ok") == 1)
            {
               alert("删除成功");
               alert(L"删除成功");
               RetrieveData();
            }else
            {
               alert("删除失败");
               alert(L"删除失败");
            }
            
         }
@@ -114,20 +129,20 @@
      {
         int MB_OKCANCEL = 1;
         int IDOK  = 1;
         int ret = win32::MessageBox(GetHWND(),"确认恢复消息?","提示",MB_OKCANCEL);
         int ret =MessageBox(GetHWND(),L"确认恢复消息?",L"提示",MB_OKCANCEL);
         if(ret == IDOK)
         {
            msxml::IXMLDOMElement ele = dw_Recovery.GetRowElement(dw_Recovery.GetRow());
            string TaskID = ele.getAttribute("guid");
            xml x = ViewObject::RetrieveData("/sale/data/business/Recovery/UpdateRecovery","TaskID",TaskID);
            string status = x.GetXml();
            if(status.find("ok") == 1)
            KXMLDOMElement ele = dw_Recovery.GetRowElement(dw_Recovery.GetRow());
            xstring TaskID = ele.getAttribute(L"guid");
            xml x = ViewObject::RetrieveData(L"/sale/data/business/Recovery/UpdateRecovery",L"TaskID",TaskID);
            xstring status = x.xml();
            if(status.find(L"ok") == 1)
            {
               alert("恢复成功");
               alert(L"恢复成功");
               RetrieveData();
            }else
            {
               alert("恢复失败");
               alert(L"恢复失败");
            }
            
         }
@@ -138,20 +153,20 @@
      {
         int MB_OKCANCEL = 1;
         int IDOK  = 1;
         int ret = win32::MessageBox(GetHWND(),"确认彻底删除消息?","提示",MB_OKCANCEL);
         int ret =MessageBox(GetHWND(),L"确认彻底删除消息?",L"提示",MB_OKCANCEL);
         if(ret == IDOK)
         {
            msxml::IXMLDOMElement ele = dw_Recovery.GetRowElement(dw_Recovery.GetRow());
            string TaskID = ele.getAttribute("guid");
            xml x = ViewObject::RetrieveData("/sale/data/business/Recovery/DeleteRecovery","TaskID",TaskID);
            string status = x.GetXml();
            if(status.find("ok") == 1)
            KXMLDOMElement ele = dw_Recovery.GetRowElement(dw_Recovery.GetRow());
            xstring TaskID = ele.getAttribute(L"guid");
            xml x = ViewObject::RetrieveData(L"/sale/data/business/Recovery/DeleteRecovery",L"TaskID",TaskID);
            xstring status = x.xml();
            if(status.find(L"ok") == 1)
            {
               alert("删除成功");
               alert(L"删除成功");
               RetrieveData();
            }else
            {
               alert("删除失败");
               alert(L"删除失败");
            }
            
         }
@@ -160,92 +175,97 @@
            
      int OnAdd()
      {
         OpenWindow("dev:xpage[message.business.vx]");
         if(selectname == "发件箱" || selectname == "草稿箱") RetrieveData();
         OpenWindow(L"dev:xpage[message.business.vx]");
         if(selectname == L"发件箱" || selectname == L"草稿箱") RetrieveData();
         return 1;
      }
            
            
      //命令发布函数
      int OnCmdDispatch(string comdid)
      int OnCmdDispatch(xstring comdid)
      {
         int ret = 0;
         if(comdid.find("action:",0)>=0)
         if(comdid.find(L"action:",0)>=0)
         {
            ret = win32::SendMessage(sheet.GetHWND(),0x401,comdid,0);
            ret =SendMessage(GetHWND(),0x401,(LPARAM)comdid,0);
         }
         if(comdid=="xmRefreshTask")
         if(comdid==L"xmRefreshTask")
         {
            trace("\r\n----refresh task--------");
            win32::SendMessage(sheet.GetHWND(),0x401,comdid,0);
            trace(L"\r\n----refresh task--------");
            SendMessage(GetHWND(),0x401,(LPARAM)comdid,0);
            return 1;
         }
         if(comdid=="xmRefresh")
         if(comdid==L"xmRefresh")
         {
            trace("\r\n----refresh--------");
            ret = win32::SendMessage(sheet.GetHWND(),0x401,comdid,0);
            trace(L"\r\n----refresh--------");
            ret =SendMessage(GetHWND(),0x401, (LPARAM)comdid,0);
         }
         if(comdid == "xmRertieve")
         if(comdid == L"xmRertieve")
         {
            RetrieveData();
            ret = 1;
         }
         if(comdid=="xmAdd")
         if(comdid==L"xmAdd")
         {
            OnAdd();
            ret = 1;
         }
         if(comdid == "xmDelete")
         if(comdid == L"xmDelete")
         {
            OnDelete();
            ret = 1;
         }
         if(comdid == "UpdateRecovery")
         if(comdid == L"UpdateRecovery")
         {
            OnUpdateRecovery();
            ret = 1;
         }
         if(comdid == "DeleteRecovery")
         if(comdid == L"DeleteRecovery")
         {
            OnDeleteRecovery();
            ret = 1;
         }
         if(comdid == "xmImage")
         if(comdid == L"xmImage")
         {
            int row = dw_message.GetRow();
            string PriceID = dw_message.GetItemString(row,"EntityID");
            xml x = ViewObject::RetrieveData("/sale/data/Enquiry/PriceList/GetSkunoByPriceID","PriceID",PriceID);
            msxml::IXMLDOMNodeList items = x.GetXmlDoc().selectNodes("data/Item");
            msxml::IXMLDOMNode t = items.item(0);
            string skunos =  t.selectSingleNode("skuno").text;
            xaserverarg arg_pic=new xaserverarg;
            arg_pic.setNativePointer(arg_pic.CreateInstance());
            arg_pic.AddArg("SKUNoList",skunos);
            arg_pic.AddArg("ParentWindow",GetHWND().toString());
            arg_pic.AddArg("OpenFlag","1");
            OpenWindow("dev:xpage[SKU.PictureView.Product3.vx]",cast(arg_pic as int));
            xstring PriceID = dw_message.GetItemString(row,L"EntityID");
            xml x = ViewObject::RetrieveData(L"/sale/data/Enquiry/PriceList/GetSkunoByPriceID",L"PriceID",PriceID);
            KXMLDOMNodeList items = x.selectNodes(L"data/Item");
            KXMLDOMNode t = items.item(0);
            xstring skunos =  t.selectSingleNode(L"skuno").text();
            xaserverarg arg_pic;
            arg_pic.AddArg(L"SKUNoList",skunos);
#if 0
            arg_pic.AddArg(L"ParentWindow", GetHWND());
#endif // 0
            arg_pic.AddArg(L"OpenFlag",L"1");
            OpenWindow(L"dev:xpage[SKU.PictureView.Product3.vx]",arg_pic );
            return 1;
         }
         else if(comdid == "xmSearchOne")
         else if(comdid == L"xmSearchOne")
         {
            OnSearchOne();
            return 1;
         }
         else if(comdid == "xmSearchTwo")
         else if(comdid == L"xmSearchTwo")
         {
            OnSearchTwo();
            return 1;
         }
         else if(comdid=="Lognew")
         else if(comdid==L"Lognew")
         {
            string EntityID = dw_processed.GetItemString(dw_processed.GetRow(),"EntityID");
            xstring EntityID = dw_processed.GetItemString(dw_processed.GetRow(),L"EntityID");
            //alert(EntityID);
   
            xaserverarg args=new xaserverarg;
            args.setNativePointer(args.CreateInstance());
            args.AddArg("EntityID",EntityID);
            //OpenWindow("dev:xpage[workflow.actionlog.vx]",cast(args as int));
            OpenWindow("dev:xpage[workflow.actionlog_vd.vx]",args.getNativePointer());
            xaserverarg args;
            args.AddArg(L"EntityID",EntityID);
            //OpenWindow(L"dev:xpage[workflow.actionlog.vx]",cast(args as int));
            OpenWindow(L"dev:xpage[workflow.actionlog_vd.vx]",args);
         
         
            
@@ -256,16 +276,16 @@
         
      int OnSearchOne()
      {
         string searchStr="";
         xaserverarg arg=new xaserverarg;
         arg.setNativePointer(arg.CreateInstance());
         arg.AddArg("text", searchStr);
         OpenWindow("dev:xpage[search.dialog.vx]", cast(arg as int));
         string str = arg.GetArgString("text");
         xstring searchStr=L"";
         xaserverarg arg;
         arg.AddArg(L"text", searchStr);
         OpenWindow(L"dev:xpage[search.dialog.vx]", arg);
         xstring str = arg.GetArgString(L"text");
         if(str != searchStr)
         {
            searchStr = str;
            dw_message.Filter("*",searchStr);
            dw_message.Filter(L"*",searchStr);
            return 1;
         }
         return 1;
@@ -273,37 +293,37 @@
         
      int OnSearchTwo()
      {
         string searchStr="";
         xaserverarg arg=new xaserverarg;
         arg.setNativePointer(arg.CreateInstance());
         arg.AddArg("text", searchStr);
         OpenWindow("dev:xpage[search.dialog.vx]", cast(arg as int));
         string str = arg.GetArgString("text");
         xstring searchStr=L"";
         xaserverarg arg;
         arg.AddArg(L"text", searchStr);
         OpenWindow(L"dev:xpage[search.dialog.vx]", arg);
         xstring str = arg.GetArgString(L"text");
         if(str != searchStr)
         {
            searchStr = str;
            dw_Recovery.Filter("*",searchStr);
            dw_Recovery.Filter(L"*",searchStr);
            return 1;
         }
         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 LookupTopFolder(int hItem)
      HTREEITEM LookupTopFolder(HTREEITEM hItem)
      {
         int hRoot = tv_folder.GetRootItem();
         while(tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
         HTREEITEM hRoot = tv_folder.GetRootItem();
         while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
         return hItem;
      }
      int ResetAgent(string agentAsk)
      int ResetAgent(xstring agentAsk)
      {
         if(agentFor != agentAsk)
         {
@@ -314,117 +334,117 @@
         return 1;
      }
      
      int OnTreeSelChanged(ref TNotifyEvent evt,int p)
      int OnTreeSelChanged(TEvent* evt, LPARAM p)
      {
         ref NMTREEVIEW nmtv = cast(evt.pnmh as NMTREEVIEW);
         int hItem = nmtv.itemNew.hItem;
         int hTopItem = LookupTopFolder(hItem);
         NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
         HTREEITEM hItem = nmtv.itemNew.hItem;
         HTREEITEM hTopItem = LookupTopFolder(hItem);
         
         string data = tv_folder.GetItemData(hItem);
         trace("\r\n"+data);
         //msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
         //if(e)trace(e.xml);
         xstring data = tv_folder.GetItemData(hItem);
         trace(L"\r\n"+data);
         //KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
         //if(e)trace(e.xml());
         string name = tv_folder.GetItemLabel(hTopItem);
         xstring name = tv_folder.GetItemLabel(hTopItem);
         selectname = tv_folder.GetItemLabel(hItem);
         if(selectname == "待处理任务")
         if(selectname == L"待处理任务")
         {
            SwitchLayer("sheet2","frame");
            sheet = GetChildWin("sheet2");
            ResetAgent("business1");
         }else if(selectname == "已处理任务")
            SwitchLayer(L"sheet2",L"frame");
            sheet = GetChildWin(L"sheet2");
            ResetAgent(L"business1");
         }else if(selectname == L"已处理任务")
         {
            SwitchLayer("sheet3","frame");
            SwitchLayer(L"sheet3",L"frame");
            RetrieveData();
            ResetAgent("business2");
         }else if(selectname == "收件箱")
            ResetAgent(L"business2");
         }else if(selectname == L"收件箱")
         {
            SwitchLayer("sheet4","frame");
            SwitchLayer(L"sheet4",L"frame");
            RetrieveData();
            ResetAgent("business3");
         }else if(selectname == "发件箱")
            ResetAgent(L"business3");
         }else if(selectname == L"发件箱")
         {
            SwitchLayer("sheet5","frame");
            SwitchLayer(L"sheet5",L"frame");
            RetrieveData();
            ResetAgent("business2");
            ResetAgent(L"business2");
         }
         else if(selectname == "事务")
         else if(selectname == L"事务")
         {
            SwitchLayer("sheet1","frame");
         }else if(selectname == "回收箱")
            SwitchLayer(L"sheet1",L"frame");
         }else if(selectname == L"回收箱")
         {
            SwitchLayer("sheet6","frame");
            SwitchLayer(L"sheet6",L"frame");
            RetrieveData();
            ResetAgent("business5");
            ResetAgent(L"business5");
         }
         return 1;
      }
      int OnRowChanged(ref TNotifyEvent evt,int p)
      int OnRowChanged(TEvent* evt, int p)
      {
         //fixed one event only one process
         ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
         DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
         int row = hdr.row;
         if(selectname == "已处理任务")
            msxml::IXMLDOMElement ele = dw_processed.GetRowElement(row);
         else if(selectname == "收件箱")
         KXMLDOMElement ele;
         if(selectname == L"已处理任务")
             ele = dw_processed.GetRowElement(row);
         else if(selectname == L"收件箱")
         {
            ele = dw_message.GetRowElement(row);
            string Subject = dw_message.GetItemString(row,"Subject");
            if(Subject.find("价格单") == -1)
            xstring Subject = dw_message.GetItemString(row,L"Subject");
            if(Subject.find(L"价格单") == -1)
            {
               ResetAgent("business3");
               ResetAgent(L"business3");
            }else{
               ResetAgent("business4");
               ResetAgent(L"business4");
            }
         }
         else if(selectname == "回收箱")
         else if(selectname == L"回收箱")
         {
            ele = dw_Recovery.GetRowElement(row);
            string SubjectOne = dw_Recovery.GetItemString(row,"Subject");
            xstring SubjectOne = dw_Recovery.GetItemString(row,L"Subject");
         }
         else if(selectname == "发件箱")
         else if(selectname == L"发件箱")
            ele = dw_outbox.GetRowElement(row);
         xaserverarg arg=new xaserverarg;
         arg.setNativePointer(arg.CreateInstance());
         trace(ele.xml);
         arg.AddArg("content",ele.xml);
         xml doc=new xml;
         doc.setNativePointer(xml::CreateInstance());
         if(getUrl("/sale/data/vpage/vstart/task",arg.GetString(),doc)!=1)
         xaserverarg arg;
         trace(ele.xml());
         arg.AddArg(L"content",ele.xml());
         xml doc=new xml;
         if(getUrl(L"/sale/data/vpage/vstart/task",arg.GetString(),doc)!=1)
         {
            trace("error->:"+doc.GetXml());
            trace((xstring)L"error->:"+doc.xml());
            return 0;
         }
         if(doc.GetXml() == "")
         if(doc.xml() == L"")
            return -1;
         //trace(doc.GetXml());
         htmlctrl ht = GetControl("taskinfo");
         ht.SetContent(doc.GetXml());
         //trace(doc.xml());
         htmlctrl ht = GetControl(L"taskinfo");
         ht.SetContent(doc.xml());
         ht.Redraw();
         return 1;
      }
      int OnItemAskStyle(ref TNotifyEvent evt,int p)
      int OnItemAskStyle(TEvent* evt, int p)
      {
         int DMS_CSSSTYLE = 0x8;
         ref DWASKSTYLENMHDR hdr = trust(evt.pnmh as ref DWASKSTYLENMHDR);
         int row = hdr.row;
         int col = hdr.col;
         string colname = hdr.colname;
         xstring colname = hdr.colname;
         int rows = dw_message.GetRowCount();
         if(row < 1 || row > rows)
         {
            return 1;
         }
         if(colname=="flowName" || colname=="Process" || colname=="sender" ||
         colname=="SendDate"||colname=="processer"||colname=="ProcessedDate"||
         colname=="Subject"||colname=="Content")
         if(colname==L"flowName" || colname==L"Process" || colname==L"sender" ||
         colname==L"SendDate"||colname==L"processer"||colname==L"ProcessedDate"||
         colname==L"Subject"||colname==L"Content")
         {
            string ReadedFlag = dw_message.GetItemString(row,"ReadedFlag");
            if(ReadedFlag != "Y")
            xstring ReadedFlag = dw_message.GetItemString(row,L"ReadedFlag");
            if(ReadedFlag != L"Y")
            {
               hdr.mask =  DMS_CSSSTYLE;
               //hdr.cssstyle = "color:#cccccc";
               hdr.cssstyle = "font-weight:700";
               //hdr.cssstyle = L"color:#cccccc";
               hdr.cssstyle = L"font-weight:700";
               
            }
         }
@@ -432,26 +452,26 @@
         return 1;
      }
            
      int OnDWClick(ref TNotifyEvent evt,int p)
      int OnDWClick(TEvent* evt, int p)
      {
         string UserNO=publiccode::GetUser().no;
         if(UserNO !="00701")
         xstring UserNO=publiccode::GetUser().no;
         if(UserNO !=L"00701")
         {
            ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
            string value = hdr.data;
            string colname = hdr.colname;
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xstring colname = hdr.colname;
            int row = hdr.row;
            msxml::IXMLDOMElement ele = dw_message.GetRowElement(row);
            string TaskID = ele.getAttribute("guid");
            string ReadedFlag = dw_message.GetItemString(row,"ReadedFlag");
            string flowName = dw_message.GetItemString(row,"flowName");
            if(ReadedFlag != "Y")
            KXMLDOMElement ele = dw_message.GetRowElement(row);
            xstring TaskID = ele.getAttribute(L"guid");
            xstring ReadedFlag = dw_message.GetItemString(row,L"ReadedFlag");
            xstring flowName = dw_message.GetItemString(row,L"flowName");
            if(ReadedFlag != L"Y")
            {
               xml x = ViewObject::RetrieveData("/sale/data/business/message/read","TaskID",TaskID);
               dw_message.SetItemString(row,"ReadedFlag","Y");
               if(ReadedFlag != "Y" && flowName == "价格单共享")
               xml x = ViewObject::RetrieveData(L"/sale/data/business/message/read",L"TaskID",TaskID);
               dw_message.SetItemString(row,L"ReadedFlag",L"Y");
               if(ReadedFlag != L"Y" && flowName == L"价格单共享")
               {
                  xml x1 = ViewObject::RetrieveData("/sale/data/business/Recovery/MessageStatus","TaskID",TaskID);
                  xml x1 = ViewObject::RetrieveData(L"/sale/data/business/Recovery/MessageStatus",L"TaskID",TaskID);
               }
               dw_message.Redraw();
               //RetrieveData();
@@ -461,93 +481,93 @@
         return 1;
      }
               
      int OpenShowroom1(ref TNotifyEvent evt,int p)
      int OpenShowroom1(TEvent* evt, int p)
         {
            ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
            string value = hdr.data;
            string colname = hdr.colname;
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xstring colname = hdr.colname;
            int row = hdr.row;
            msxml::IXMLDOMElement ele = dw_outbox.GetRowElement(row);
            string TaskID = ele.getAttribute("guid");
            string Category = dw_outbox.GetItemString(row,"flowName");
            if(Category=="普通"){
               xaserverarg arg2 = new xaserverarg;
               arg2.setNativePointer(arg2.CreateInstance());
            KXMLDOMElement ele = dw_outbox.GetRowElement(row);
            xstring TaskID = ele.getAttribute(L"guid");
            xstring Category = dw_outbox.GetItemString(row,L"flowName");
            if(Category==L"普通"){
               xaserverarg arg2;
               if(dw_outbox.GetRowCount() < 1) return 1;
               msxml::IXMLDOMElement ele1 = dw_outbox.GetRowElement(dw_outbox.GetRow());
               arg2.AddArg("EntityID",dw_outbox.GetItemString(dw_outbox.GetRow(),"EntityID"));
               arg2.AddArg("id",ele1.getAttribute("guid"));
               OpenWindow("dev:xpage[message.business.vx]", cast(arg2 as int));
               KXMLDOMElement ele1 = dw_outbox.GetRowElement(dw_outbox.GetRow());
               arg2.AddArg(L"EntityID",dw_outbox.GetItemString(dw_outbox.GetRow(),L"EntityID"));
               arg2.AddArg(L"id",ele1.getAttribute(L"guid"));
               OpenWindow(L"dev:xpage[message.business.vx]",arg2);
               return 1;
            }
            return 1;
         }
            
      int OpenShowroom(ref TNotifyEvent evt,int p)
         {
            ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
            string value = hdr.data;
            string colname = hdr.colname;
      int OpenShowroom(TEvent* evt, int p)
      {
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xstring colname = hdr.colname;
            int row = hdr.row;
            msxml::IXMLDOMElement ele = dw_message.GetRowElement(row);
            string TaskID = ele.getAttribute("guid");
            string Category = dw_message.GetItemString(row,"Category");
            if(Category=="货号申请"){
               int p1="" ;
               OpenWindow("dev:xpage[UserProductApply.vx]", p1);
            KXMLDOMElement ele = dw_message.GetRowElement(row);
            xstring TaskID = ele.getAttribute(L"guid");
            xstring Category = dw_message.GetItemString(row,L"Category");
            if(Category==L"货号申请"){
               int p1 ;
               OpenWindow(L"dev:xpage[UserProductApply.vx]", p1);
            }
            if(Category=="普通"){
               xaserverarg arg2 = new xaserverarg;
               arg2.setNativePointer(arg2.CreateInstance());
            if(Category==L"普通"){
               xaserverarg arg2;
               if(dw_message.GetRowCount() < 1) return 1;
               msxml::IXMLDOMElement ele1 = dw_message.GetRowElement(dw_message.GetRow());
               arg2.AddArg("EntityID",dw_message.GetItemString(dw_message.GetRow(),"EntityID"));
               arg2.AddArg("id",ele1.getAttribute("guid"));
               OpenWindow("dev:xpage[message.business.vx]", cast(arg2 as int));
               KXMLDOMElement ele1 = dw_message.GetRowElement(dw_message.GetRow());
               arg2.AddArg(L"EntityID",dw_message.GetItemString(dw_message.GetRow(),L"EntityID"));
               arg2.AddArg(L"id",ele1.getAttribute(L"guid"));
               OpenWindow(L"dev:xpage[message.business.vx]", arg2);
               return 1;
            }
            else if(Category=="报价单共享")
            else if(Category==L"报价单共享")
            {
               if(dw_message.GetRowCount() < 1) return 1;
               string No = dw_message.GetItemString(dw_message.GetRow(),"No");
               OpenWindow("dev:xpage[EnquiryEx.quote.vx]",cast(No as int));
               xstring No = dw_message.GetItemString(dw_message.GetRow(),L"No");
               OpenWindow(L"dev:xpage[EnquiryEx.quote.vx]",cast(No as int));
            }
            if(Category=="SupplierV3")
            if(Category==L"SupplierV3")
            {
               xaserverarg arg = new xaserverarg;
               arg.setNativePointer(arg.CreateInstance());
               xaserverarg arg;
               if(dw_message.GetRowCount() < 1) return 1;
               arg.AddArg("EntityID",dw_message.GetItemString(dw_message.GetRow(),"EntityID"));
               //OpenWindow("dev:xpage[maint.Owner.Supplier.v3.vx]",cast(arg as int));
               arg.AddArg("config","/sale/view/SupplierV3/config/supplier/open");
               OpenWindow("dev:xpage[maintex.Owner.Supplier.v3.vx]",arg.getNativePointer());
               arg.AddArg(L"EntityID",dw_message.GetItemString(dw_message.GetRow(),L"EntityID"));
               //OpenWindow(L"dev:xpage[maint.Owner.Supplier.v3.vx]",cast(arg as int));
               arg.AddArg(L"config",L"/sale/view/SupplierV3/config/supplier/open");
               OpenWindow(L"dev:xpage[maintex.Owner.Supplier.v3.vx]",arg);
            }
            if(Category=="供应商回退")
            if(Category==L"供应商回退")
            {
               xaserverarg arg1 = new xaserverarg;
               arg1.setNativePointer(arg1.CreateInstance());
               xaserverarg arg1;
               if(dw_message.GetRowCount() < 1) return 1;
               arg1.AddArg("EntityID",dw_message.GetItemString(dw_message.GetRow(),"EntityID"));
               OpenWindow("dev:xpage[maint.Owner.Supplier.v3.vx]",cast(arg1 as int));
               arg1.AddArg(L"EntityID",dw_message.GetItemString(dw_message.GetRow(),L"EntityID"));
               OpenWindow(L"dev:xpage[maint.Owner.Supplier.v3.vx]",arg1);
            }
            return 1;
         }
      int OnAttachEvent()
      {
         //绑定工具条点击事件
         AttachEvent("WM_XCOMMAND",OnXCommand);
         AttachEvent(L"WM_XCOMMAND", (FEvent)&Business5Win::OnXCommand);
         //获取焦点事件,用于重置工具条
         AttachEvent("WM_SETFOCUS",OnSetFocus);
         AttachEvent(L"WM_SETFOCUS", (FEvent)&Business5Win::OnSetFocus);
         //树选择
         AttachEvent("tv_folder", "TVN_SELCHANGED",OnTreeSelChanged);
         AttachEvent("dw_processed","DWV_ROWFOCUSCHANGED",OnRowChanged);
         AttachEvent("dw_message","DWV_ROWFOCUSCHANGED",OnRowChanged);
         AttachEvent("dw_outbox","DWV_ROWFOCUSCHANGED",OnRowChanged);
         AttachEvent("dw_Recovery","DWV_ROWFOCUSCHANGED",OnRowChanged);
         AttachEvent("dw_message","DWV_ASKSTYLE",OnItemAskStyle);
         AttachEvent("dw_message","DWV_CLICKED",OnDWClick);
         AttachEvent("dw_message","DWV_DOUBLECLICKED",OpenShowroom);
         AttachEvent("dw_outbox","DWV_DOUBLECLICKED",OpenShowroom1);
         AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&Business5Win::OnTreeSelChanged);
         AttachEvent(L"dw_processed",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
         AttachEvent(L"dw_message",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
         AttachEvent(L"dw_outbox",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
         AttachEvent(L"dw_Recovery",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
         AttachEvent(L"dw_message",L"DWV_ASKSTYLE", (FEvent)&Business5Win::OnItemAskStyle);
         AttachEvent(L"dw_message",L"DWV_CLICKED", (FEvent)&Business5Win::OnDWClick);
         AttachEvent(L"dw_message",L"DWV_DOUBLECLICKED", (FEvent)&Business5Win::OpenShowroom);
         AttachEvent(L"dw_outbox",L"DWV_DOUBLECLICKED", (FEvent)&Business5Win::OpenShowroom1);
         
         return 1;
      }
@@ -561,30 +581,30 @@
      
      int  InitialFolder()
      {
         msxml::IXMLDOMElement xframeElement =  GetElement();
         msxml::IXMLDOMElement e =  xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
         KXMLDOMElement xframeElement =  GetElement();
         KXMLDOMElement e =  xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
         
         //msxml::IXMLDOMElement e =  xframeElement.selectSingleNode("//xtree[@name='tv_folder']/data/item[@name='"+"']");
         //trace(e.xml);
         //KXMLDOMElement e =  xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/data/item[@name='"+L"']");
         //trace(e.xml());
         if(e)
            ExpandChildFolder(0,e);
         return 1;
      }
      
      int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
      int  ExpandChildFolder(int hItem, KXMLDOMElement pElement)
      {
         msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
         int len = nlist.length;
         KXMLDOMNodeList nlist = pElement.selectNodes(L"Item");
         int len = nlist.length();
         for (int i = 0; i < len; i++)
         {   
            msxml::IXMLDOMElement e = nlist.item(i);
            string name = e.getAttribute("name");
            string sImage = e.getAttribute("image");
            string child = e.getAttribute("child");
            KXMLDOMElement e = nlist.item(i);
            xstring name = e.getAttribute(L"name");
            xstring sImage = e.getAttribute(L"image");
            xstring child = e.getAttribute(L"child");
            int image = 15;
            if(sImage) image = sImage.toInt();
            int h= tv_folder.InsertChildItem(tv_folder.GetId(),hItem,name, trust(e as int),image);
            if(child !="no" ) tv_folder.SetItemChild(h,1);
            if(child !=L"no" ) tv_folder.SetItemChild(h,1);
            ExpandChildFolder(h,e);
         }
         return 1;            
@@ -592,18 +612,18 @@
      
      int AdjustTip()
      {
         xml x = ViewObject::RetrieveData("/sale/data/business/list/AdjustTipNotify");
         msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("/data/Item");
         msxml::IXMLDOMNode t = nlist.item(0);
         string informationQuantity =t.selectSingleNode("informationQuantity").text;
         tv_folder.SetItemLabel(hMessage, "消息"+"("+informationQuantity+")");
         xml x = ViewObject::RetrieveData(L"/sale/data/business/list/AdjustTipNotify");
         KXMLDOMNodeList nlist = x.selectNodes(L"/data/Item");
         KXMLDOMNode t = nlist.item(0);
         xstring informationQuantity =t.selectSingleNode(L"informationQuantity").text();
         tv_folder.SetItemLabel(hMessage, L"消息"+L"(L"+informationQuantity+L")L");
         
         xml x1 = ViewObject::RetrieveData("/sale/data/business/list/AdjustTipTask");
         //alert(x1.GetXml());
         msxml::IXMLDOMNodeList nlist1 = x1.GetXmlDoc().SelectNodes("/data/Item");
         msxml::IXMLDOMNode t1= nlist1.item(0);
         string informationQuantityTask =t1.selectSingleNode("informationQuantityTask").text;
         tv_folder.SetItemLabel(hTask, "任务"+"("+informationQuantityTask+")");
         xml x1 = ViewObject::RetrieveData(L"/sale/data/business/list/AdjustTipTask");
         //alert(x1.xml());
         KXMLDOMNodeList nlist1 = x1.selectNodes(L"/data/Item");
         KXMLDOMNode t1= nlist1.item(0);
         xstring informationQuantityTask =t1.selectSingleNode(L"informationQuantityTask").text();
         tv_folder.SetItemLabel(hTask, L"任务"+L"(L"+informationQuantityTask+L")L");
         
         /*select count(*) from bpm_task where typ='notify' and  process='N' 
         and charindex('|'+'00303'+'|','|' + rtrim(receiver) +'|')>=1*/
@@ -612,36 +632,36 @@
      
      int onload()
      {
         agentFor = "business";
         agentFor = L"business";
         OnAttachEvent();
         dw_list = GetControl("dw_list");
         dw_processed = GetControl("dw_processed");
         dw_processed.openUrl("/sale/view/Business3/template/processedtask");
         dw_processed.SetColumnState("EntityID",false);
         dw_processed.SetColumnState("Category",false);
         dw_list = GetControl(L"dw_list");
         dw_processed = GetControl(L"dw_processed");
         dw_processed.openUrl(L"/sale/view/Business3/template/processedtask");
         dw_processed.SetColumnState(L"EntityID",false);
         dw_processed.SetColumnState(L"Category",false);
         dw_message = GetControl("dw_message");
         dw_message.openUrl("/sale/view/Business3/template/message");
         dw_message = GetControl(L"dw_message");
         dw_message.openUrl(L"/sale/view/Business3/template/message");
         dw_message.SetAskStyle(true);
         dw_message.SetColumnState("EntityID",false);
         dw_message.SetColumnState("Category",false);
         dw_message.SetColumnState("ReadedFlag",false);
         dw_message.SetColumnState(L"EntityID",false);
         dw_message.SetColumnState(L"Category",false);
         dw_message.SetColumnState(L"ReadedFlag",false);
         
         dw_outbox = GetControl("dw_outbox");
         dw_outbox.openUrl("/sale/view/Business3/template/outbox");
         dw_outbox.SetColumnState("EntityID",false);
         dw_outbox = GetControl(L"dw_outbox");
         dw_outbox.openUrl(L"/sale/view/Business3/template/outbox");
         dw_outbox.SetColumnState(L"EntityID",false);
         
         dw_Recovery = GetControl("dw_Recovery");
         dw_Recovery.openUrl("/sale/view/Business3/template/message");
         dw_Recovery.SetColumnState("EntityID",false);
         dw_Recovery.SetColumnState("Category",false);
         dw_Recovery.SetColumnState("ReadedFlag",false);
         dw_Recovery.SetColumnState("No",false);
         dw_Recovery = GetControl(L"dw_Recovery");
         dw_Recovery.openUrl(L"/sale/view/Business3/template/message");
         dw_Recovery.SetColumnState(L"EntityID",false);
         dw_Recovery.SetColumnState(L"Category",false);
         dw_Recovery.SetColumnState(L"ReadedFlag",false);
         dw_Recovery.SetColumnState(L"No",false);
         
         
         tv_folder = GetControl("tv_folder");
         tv_folder = GetControl(L"tv_folder");
         tv_folder.SetLineAtRoot(true);
         sheet = GetChildWin("sheet1");
         sheet = GetChildWin(L"sheet1");
         
         int hItem = tv_folder.GetRootItem();
         tv_folder.ExpandItem(hItem);
@@ -665,5 +685,4 @@
         
         return 1;
      }      
   };
]
   };