LiFan
2024-06-26 f3dad0971f9c573ad3052dc29351c277719170ae
jrj/project/business/GDN3.list.cpp
@@ -37,9 +37,9 @@
   //process tree
//查找当前树项的顶级目录
   int LookupTopFolder(HTREEVIEW hItem)
   HTREEITEM LookupTopFolder(HTREEITEM hItem)
   {
      int hRoot = tv_folder.GetRootItem();
      HTREEITEM hRoot = tv_folder.GetRootItem();
      while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
      return hItem;
   }
@@ -62,38 +62,42 @@
      return 1;
   }
   int ExpandCatChildFolder(HTREEVIEW hItem, KXMLDOMElement ele, int image)
   int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image)
   {
      KXMLDOMNodeList nlist = ele.SelectNodes(L"item");
      int len = nlist.length;
      KXMLDOMNodeList nlist = ele.selectNodes(L"item");
      int len = nlist.length();
      if (len > 0) tv_folder.SetItemChild(hItem, 1);
      for (int i = 0; i < len; i++)
      {
         KXMLDOMElement e = nlist.item(i);
         xstring name = e.getAttribute(L"name");
         int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);
         KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
         string name = e.getAttribute(L"name");
         HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, image);
         ExpandCatChildFolder(h, e, 35);
      }
      return 1;
   }
   int ExpandFolderItem(HTREEVIEW hItem, xstring no)
   int ExpandFolderItem(HTREEITEM hItem, xstring no)
   {
      //xml x = ViewObject::RetrieveData(urlTree,L"no",no);
      xml x = xml::Make();
      /*xml x = xml::Make();
      xaserverarg arg = xaserverarg::Make();
      arg.AddArg(L"no", no);
      xaserver::ExecXQuery(GetServerUrl(), L"[customerfolder.gdn.sql.xq]", arg.GetString(), x);
      */
      KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(), L"[customerfolder.gdn.sql.xq]", L"id", no);
      if (!x) return 0;
      KXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes(L"/data/item");
      int len = nlist.length;
      KXMLDOMNodeList nlist = x.selectNodes(L"/data/item");
      int len = nlist.length();
      for (int i = 0; i < len; i++)
      {
         KXMLDOMElement e = nlist.item(i);
         xstring name = e.getAttribute(L"name");
         int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
         KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
         string name = e.getAttribute(L"name");
         HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, 35);
         ExpandCatChildFolder(h, e, 35);
      }
      x.Free();
@@ -101,33 +105,34 @@
   }
   //树展开
   int OnTreeExpanding(ref TNotifyEvent evt, int p)
   int OnTreeExpanding(TEvent* evt, int p)
   {
      ref NMTREEVIEW nmtv = evt.pnmh;
      HTREEVIEW hItem = nmtv.itemNew.hItem;
      int hTopItem = LookupTopFolder(hItem);
      NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
      HTREEITEM hItem = nmtv.itemNew.hItem;
      HTREEITEM hTopItem = LookupTopFolder(hItem);
      xstring name = tv_folder.GetItemLabel(hTopItem);
      int child = tv_folder.GetChildItem(hItem);
      HTREEITEM child = tv_folder.GetChildItem(hItem);
      KXMLDOMElement e = tv_folder.GetItemData(hItem);
      KXMLDOMElement& e = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
      if (!child)ExpandFolderItem(hItem, e.getAttribute(L"no"));
      return 1;
   }
   int  ExpandChildFolder(HTREEVIEW hItem, KXMLDOMElement pElement)
   int  ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement)
   {
      KXMLDOMNodeList nlist = pElement.SelectNodes(L"Item");
      int len = nlist.length;
      KXMLDOMNodeList nlist = pElement.selectNodes(L"Item");
      int len = nlist.length();
      for (int i = 0; i < len; i++)
      {
         KXMLDOMElement e = nlist.item(i);
         xstring name = e.getAttribute(L"name");
         KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
         string 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);
         tv_folder.SetItemChild(h, 1);
         if (sImage) image = sImage.toInt();
         HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, image);
         if (child != L"no") tv_folder.SetItemChild(h, 1);
         ExpandChildFolder(h, e);
      }
      return 1;
@@ -141,7 +146,7 @@
      return 1;
   }
   int OnTreeSelChanged(ref TNotifyEvent evt, int p)
   int OnTreeSelChanged(TEvent* evt, LPARAM p)
   {
      if (changeddlb) return 1;
      return OnPreRetrieve();
@@ -153,20 +158,20 @@
   {
      if (updateItem == L"del")
      {
         int DelRow = this.dw_list.GetRow();
         this.dw_list.DeleteRow(DelRow);
         int DelRow = dw_list.GetRow();
         dw_list.DeleteRow(DelRow);
      }
      else if (updateItem == L"setstate")
      {
         int row = this.dw_list.GetRow();
         int row = dw_list.GetRow();
         if (row < 1) return 1;
         KXMLDOMElement ele = this.dw_list.GetRowElement(row);
         KXMLDOMElement ele = dw_list.GetRowElement(row);
         xstring id = GetEntityIDName(1);
         xstring entity = ele.selectSingleNode(id).text();
         SetAgent(L"list", entity);
         if (arg.GetArgString(L"state") != L"")
            //this.dw_list.SetItemString(row, L"ApprovalStatus", arg.GetArgString(L"state"));
            //dw_list.SetItemString(row, L"ApprovalStatus", arg.GetArgString(L"state"));
            dw_list.SetItemString(row, L"ApplyStatus", arg.GetArgString(L"state"));
         if (arg.GetArgString(L"billstatus") != L"")
         {
@@ -176,7 +181,7 @@
            dw_list.SetItemDisplayString(row, L"ApprovalStatus", statusName);
         }
         this.dw_list.Redraw();
         dw_list.Redraw();
      }
      return 1;
@@ -195,14 +200,14 @@
   {
      if (readed) return 1;
      HTREEVIEW hItem = tv_folder.GetSelectedItem();
      HTREEITEM hItem = tv_folder.GetSelectedItem();
      if (hItem <= 0)
      {
         hItem = tv_folder.GetRootItem();
         if (hItem <= 0)  return 1;
      }
      int    hCursor = xutil::SetCursorWait();
      KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
      HCURSOR hCursor = xutil::SetCursorWait();
      KXMLDOMElement& e1 = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
      xstring no = e1.getAttribute(L"no");
      //xml x = 0;
      //x = ViewObject::RetrieveData(myDataUrl,L"no",no,L"QueryTxt", m_QueryTxt,L"rows",rows);
@@ -211,6 +216,7 @@
      arg.AddArg(L"no", no);
      arg.AddArg(L"QueryTxt", m_QueryTxt);
      arg.AddArg(L"rows", rows);
      trace(no + L"***" + m_QueryTxt + L"***" + rows);
      /*if(DeptName==L"跟单部"){
         dw_list.DwRetrieve(GetServerUrl(),L"[list.creator.gdn.sql.xq]",arg.GetString());
@@ -231,15 +237,16 @@
   int OnPreRetrieve()
   {
      HTREEVIEW hItem = tv_folder.GetSelectedItem();
      HTREEITEM hItem = tv_folder.GetSelectedItem();
      if (hItem <= 0) return 1;
      int hCursor = xutil::SetCursorWait();
      KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
      HCURSOR hCursor = xutil::SetCursorWait();
      KXMLDOMElement& e1 = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
      xstring no = e1.getAttribute(L"no");
      xml x = 0;
      trace(L"\r\n" + no + L"\r\n" + m_QueryTxt);
      x = ViewObject::RetrieveData(myDataUrl, L"no", no, L"QueryTxt", m_QueryTxt, L"rows", rows);
      KXMLDOMDocument x = ViewObject::RetrieveData(myDataUrl, L"no", no, L"QueryTxt", m_QueryTxt, L"rows", rows);
      if (x)
      {
         dw_list.Retrieve(x);
@@ -270,7 +277,7 @@
      //dw_source.DwRetrieve(GetServerUrl(),L"[source.gdn.sql.xq]",L"EntityID",  EntityID );
      xml x = ViewObject::RetrieveData(L"/sale/data/GDN/source/maintex1", L"GDNID", EntityID);
      KXMLDOMDocument x = ViewObject::RetrieveData(L"/sale/data/GDN/source/maintex1", L"GDNID", EntityID);
      if (x)
         dw_source.Retrieve(x);
      else
@@ -278,7 +285,7 @@
      dw_source.Redraw();
      dw_source.SetReadOnly(true);
      xml x1 = ViewObject::RetrieveData(L"/sale/data/Custom3/maint/custom/data", L"invno", InvoiceNo);
      KXMLDOMDocument x1 = ViewObject::RetrieveData(L"/sale/data/Custom3/maint/custom/data", L"invno", InvoiceNo);
      if (x1)
         dw_custom.Retrieve(x1);
      else
@@ -292,15 +299,14 @@
      return 1;
   }
   int OnRowChanged(ref TNotifyEvent evt, int p)
   int OnRowChanged(TEvent* evt, LPARAM p)
   {
      //fixed one event only one process
      listwin::OnRowChanged(evt, p);
      ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
      DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
      int row = hdr.row;
      int    hCursor = xutil::SetCursorWait();
      HCURSOR    hCursor = xutil::SetCursorWait();
      RetrieveDetail(row);
      xutil::RestoreCursor(hCursor);
@@ -328,9 +334,9 @@
      xml x = ViewObject::RetrieveData(L"/sale/data/Gdn/checksource",L"invno",InvoiceNo);
      if(!x) return 1;
      if(x.GetXmlDoc().selectSingleNode(L"error"))
      if(x.selectSingleNode(L"error"))
      {
         alert(x.GetXmlDoc().selectSingleNode(L"error").text);
         alert(x.selectSingleNode(L"error").text);
         return 0;
      }
@@ -342,7 +348,7 @@
         xml supplier_x = ViewObject::RetrieveData(L"/sale/data/SupplierV3/entity/FindBySaleType",L"id", s);
         if(supplier_x)
         {
            if(supplier_x.GetXmlDoc().text != L"业务员")
            if(supplier_x.text != L"业务员")
               {
               alert(L"当前角色不是业务员不能新增单子,请重新选择角色");
               return 0;
@@ -355,10 +361,10 @@
   int OnSearch()
   {
      xaserverarg arg = new xaserverarg;
      arg.setNativePointer(arg.CreateInstance());
      xaserverarg& arg = *new xaserverarg;
      arg.AddArg(L"text", searchStr);
      OpenWindow(L"dev:xpage[search.dialog.vx]", cast(arg as int));
      OpenWindow(L"dev:xpage[search.dialog.vx]", (LPARAM)&arg);
      xstring str = arg.GetArgString(L"text");
      if (str != searchStr)
      {
@@ -374,7 +380,7 @@
      if (comdid == L"action:bill.refresh")
      {
         changeddlb = 1;
         int RItem = tv_folder.GetRootItem();
         HTREEITEM RItem = tv_folder.GetRootItem();
         while (tv_folder.GetChildItem(RItem))
            tv_folder.DeleteItem(tv_folder.GetChildItem(RItem));
         ExpandFolderItem(RItem, L"Category:Customer");
@@ -395,8 +401,8 @@
      else if (comdid.find(L"bill.print") > 0)
      {
         xstring EntityIDS = dw_list.GetGuid(dw_list.GetRow());
         xml xs = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudge", L"GDNID", EntityIDS);
         xstring Results1 = xs.GetXmlDoc().text();
         KXMLDOMDocument xs = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudge", L"GDNID", EntityIDS);
         xstring Results1 = xs.text();
         if (Results1 != L"")
         {
            alert(Results1);
@@ -412,10 +418,10 @@
         if (publiccode::GetUser().name != L"admin")
         {
            xstring s = publiccode::GetUser().id;
            xml supplier_x = ViewObject::RetrieveData(L"/sale/data/SupplierV3/entity/FindBySaleType", L"id", s);
            KXMLDOMDocument supplier_x = ViewObject::RetrieveData(L"/sale/data/SupplierV3/entity/FindBySaleType", L"id", s);
            if (supplier_x)
            {
               if (supplier_x.GetXmlDoc().text != L"跟单")
               if (supplier_x.text() != L"跟单")
               {
                  alert(L"当前角色不是跟单员不能新增单子,请重新选择角色");
                  return 0;
@@ -426,11 +432,11 @@
      else if (comdid == L"action:bill.GDNDelay")
      {
         xstring EntityIDEx = dw_list.GetGuid(dw_list.GetRow());
         xaserverarg argEx = new xaserverarg;
         xaserverarg& argEx = *new xaserverarg;
         argEx.setNativePointer(argEx.CreateInstance());
         trace(EntityIDEx);
         argEx.AddArg(L"GDNID", EntityIDEx);
         OpenWindow(L"dev:xpage[GDNDelay.vx]", cast(argEx as int));
         OpenWindow(L"dev:xpage[GDNDelay.vx]", (LPARAM)&argEx);
         return 1;
      }
      else if (comdid == L"action:bill.check.ask")
@@ -443,32 +449,32 @@
         }
         xstring EntityID = dw_list.GetGuid(dw_list.GetRow());
         xml xx = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudge", L"GDNID", EntityID);
         xstring Results = xx.GetXmlDoc().text();
         KXMLDOMDocument xx = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudge", L"GDNID", EntityID);
         xstring Results = xx.text();
         if (Results != L"")
         {
            alert(Results);
            return 0;
         }
         xml xx2 = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudgeEx", L"GDNID", EntityID);
         xstring Results2 = xx2.GetXmlDoc().text();
         KXMLDOMDocument xx2 = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudgeEx", L"GDNID", EntityID);
         xstring Results2 = xx2.text();
         if (Results2 != L"")
         {
            alert(Results2);
            return 0;
         }
         xml xx3 = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudgeExS", L"GDNID", EntityID);
         xstring Results3 = xx3.GetXmlDoc().text();
         KXMLDOMDocument xx3 = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudgeExS", L"GDNID", EntityID);
         xstring Results3 = xx3.text();
         if (Results3 != L"")
         {
            alert(Results3);
            return 0;
         }
         xml xx4 = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudgeAmount", L"GDNID", EntityID);
         xstring Results4 = xx4.GetXmlDoc().text();
         KXMLDOMDocument xx4 = ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNJudgeAmount", L"GDNID", EntityID);
         xstring Results4 = xx4.text();
         if (Results4 != L"")
         {
            alert(Results4);
@@ -476,18 +482,18 @@
         }
         /*xml xx5= ViewObject::RetrieveData(L"/sale/data/GDN/GetGDNCost",L"GDNID",EntityID);
         xstring Results5=xx5.GetXmlDoc().text();
         xstring Results5=xx5.text();
         if(Results5 !=L"")
         {
            alert(Results5);
            return 0;
         }*/
         xaserverarg arg = new xaserverarg;
         xaserverarg& arg = *new xaserverarg;
         arg.setNativePointer(arg.CreateInstance());
         trace(EntityID);
         arg.AddArg(L"GDNID", EntityID);
         OpenWindow(L"dev:xpage[GDNDelay.vx]", cast(arg as int));
         OpenWindow(L"dev:xpage[GDNDelay.vx]", (LPARAM)&arg);
      }
      else if (comdid == L"action:bill.SourceRemark") return OnSourceRemark();
@@ -498,18 +504,18 @@
   int OnSourceRemark()
   {
      xstring name = L"出运明细单";
      xml x = ViewObject::RetrieveData(L"/sale/data/TradeFinance3/GetSetUpRemarks", L"Type", name);
      KXMLDOMNodeList items = x.GetXmlDoc().selectNodes(L"data/Item");
      KXMLDOMDocument 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 = new xaserverarg;
      xaserverarg& arg1 = *new xaserverarg;
      arg1.setNativePointer(arg1.CreateInstance());
      arg1.AddArg(L"value", Content);
      OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg1.getNativePointer());
      OpenWindow(L"dev:xpage[memo.edit.new.vx]", (LPARAM)&arg1);
      return 1;
   }
@@ -518,8 +524,8 @@
   {
      int row = dw_list.GetRow();
      xstring GDNID = dw_list.GetGuid(row);
      xml x = ViewObject::RetrieveData(L"/sale/data/GDN/CheckCDLine", L"GDNID", GDNID);
      xstring  r = x.GetXmlDoc().text();
      KXMLDOMDocument x = ViewObject::RetrieveData(L"/sale/data/GDN/CheckCDLine", L"GDNID", GDNID);
      xstring  r = x.text();
      int r1 = r.toInt();
      if (x)
      {
@@ -536,8 +542,8 @@
   {
      int row = dw_list.GetRow();
      xstring GDNID = dw_list.GetGuid(row);
      xml x = ViewObject::RetrieveData(L"/sale/data/GDN/CheckGW", L"GDNID", GDNID);
      xstring  r = x.GetXmlDoc().text();
      KXMLDOMDocument x = ViewObject::RetrieveData(L"/sale/data/GDN/CheckGW", L"GDNID", GDNID);
      xstring  r = x.text();
      int r1 = r.toInt();
      if (x)
      {
@@ -552,17 +558,16 @@
   //xcombobox下拉
   int OnSelectDdlb(ref TNotifyEvent evt, int p)
   int OnSelectDdlb(TEvent* evt, LPARAM p)
   {
      changeddlb = 1;
      int wid = ddlb_1.GetId();
      int CB_GETCURSEL = 0x0147;
      int nIndex = win32::SendMessage(wid, CB_GETCURSEL, 0, 0);
      int nIndex = SendMessageW(HWND(), CB_GETCURSEL, 0, 0);
      KXMLDOMElement e = ddlb_1.GetElement();
      KXMLDOMElement e2 = e.selectSingleNode(L"item[" + (nIndex + 1).toString() + L"]");
      KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]");
      xstring no = e2.selectSingleNode(L"@element").text();
      HTREEVIEW hItem = tv_folder.GetRootItem();
      HTREEITEM hItem = tv_folder.GetRootItem();
      while (tv_folder.GetChildItem(hItem))
         tv_folder.DeleteItem(tv_folder.GetChildItem(hItem));
@@ -572,13 +577,12 @@
      return 1;
   }
   int OnSelectDataShowDdlb(ref TNotifyEvent evt, int p)
   int OnSelectDataShowDdlb(TEvent* evt, LPARAM p)
   {
      int wid = cbx_datashow.GetId();
      int CB_GETCURSEL = 0x0147;
      int nIndex = win32::SendMessage(wid, CB_GETCURSEL, 0, 0);
      int nIndex = SendMessageW(HWND(), CB_GETCURSEL, 0, 0);
      KXMLDOMElement e = cbx_datashow.GetElement();
      KXMLDOMElement e2 = e.selectSingleNode(L"item[" + (nIndex + 1).toString() + L"]");
      KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]");
      rows = e2.selectSingleNode(L"@rows").text();
      OnPreRetrieve();
@@ -586,19 +590,19 @@
   }
   int AttachEvent()
   int PostOnAttachEvent()
   {
      AttachEvent(L"tv_folder", L"TVN_SELCHANGED", OnTreeSelChanged); //树选择
      //AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING",OnTreeExpanding); //树展开
      AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", OnRowChanged);
      AttachEvent(L"cbx_1", L"CBN_SELCHANGE", OnSelectDdlb);
      AttachEvent(L"cbx_datashow", L"CBN_SELCHANGE", OnSelectDataShowDdlb);
      AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&GDN3list::OnTreeSelChanged); //树选择
      //AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING",(FEvent)&GDN3list::OnTreeExpanding); //树展开
      AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&GDN3list::OnRowChanged);
      AttachEvent(L"cbx_1", L"CBN_SELCHANGE", (FEvent)&GDN3list::OnSelectDdlb);
      AttachEvent(L"cbx_datashow", L"CBN_SELCHANGE", (FEvent)&GDN3list::OnSelectDataShowDdlb);
      return 1;
   }
   virtual xstring GetTemplateUrl()
   {
      return "/sale/view/GDN/template/GDN/ListEx";
      return L"/sale/view/GDN/template/GDN/ListEx";
   }
   int onload()
   {
@@ -666,7 +670,7 @@
   int onloaded()
   {
      HTREEVIEW hItem = tv_folder.GetRootItem();
      HTREEITEM hItem = tv_folder.GetRootItem();
      ExpandFolderItem(hItem, L"Category:Customer");
      tv_folder.ExpandItem(hItem);
      tv_folder.ItemFocus(hItem);
@@ -678,7 +682,7 @@
      //attach my control event
      AttachEvent();
      PostOnAttachEvent();
      readed = false;
@@ -702,7 +706,7 @@
         arg.AddArg(L"ReadOnly", L"false");
      }
      HTREEVIEW hItem = tv_folder.GetCaretItem();
      HTREEITEM hItem = tv_folder.GetCaretItem();
      if (hItem <= 0) return 1;
      KXMLDOMElement e = tv_folder.GetItemData(hItem);
      xstring  no = e.getAttribute(L"no");