xj qian
2024-06-27 727e730495ac7b61bcd1fa3fd9fab5bb0f54baed
jrj/project/business/quote.enquiry.cpp
@@ -3,6 +3,9 @@
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/ximageview.hpp>
#include <xcontrol/xcell.hpp>
#include <adt/xarray.hpp>
#include <win32/xfile.hpp>
#include <wobject/xdouble.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
@@ -1053,7 +1056,7 @@
         itemStr += L"<ItemName>" + dw_cell.GetItemString(row, colItemName) + L"</ItemName>";
         itemStr += L"<ItemCName>" + dw_cell.GetItemString(row, colItemCName) + L"</ItemCName>";
         itemStr += L"<ItemSpec>" + dw_cell.GetItemString(row, colItemSpec) + L"</ItemSpec>";
         itemStr += L"<RowNo>" + (row - startRow + 1).toString() + L"</RowNo>";
         itemStr += L"<RowNo>" + xstring(row - startRow + 1) + L"</RowNo>";
         itemStr += L"<Purchor>" + dw_cell.GetItemString(row, colBuyer) + L"</Purchor>";
         itemStr += L"<Package>" + dw_cell.GetItemString(row, colPackage) + L"</Package>";
         itemStr += L"<NWT>" + dw_cell.GetItemString(row, colNW) + L"</NWT>";
@@ -1327,18 +1330,17 @@
      arg4.setNativePointer(xaserverarg::CreateInstance());
      trace(items);
      arg4.AddArg(L"value", items);
      OpenWindow(L"dev:xpage[QuoteFilePurched.vx]", cast(arg4 as int));
      OpenWindow(L"dev:xpage[QuoteFilePurched.vx]", arg4);
      if (arg4.GetArgString(L"process") != L"ok") return 1;
      items = arg4.GetArgString(L"value");
      xml x0 ;
      x0.setNativePointer(xml::CreateInstance());
      x0.loadXML(items);
      KXMLDOMNodeList ts = x0.selectNodes(L"data/Item[IsSend='1']");
      int len = ts.length();
      if (len < 1) return L"";
      if (len < 1) return 0;
      xstring content = L"";
      xstring sdate = publiccode::GetCurrentDate();
@@ -1471,7 +1473,7 @@
      {
         trace(L"\r\ntaskid:" + taskid + L" finished:" + finished);
         ProcessSendMessage(myurl, L"", content, datacontent, true);
         win32::PostMessage(GetFrameWindow().GetHWND(), 0x401, L"xmRefreshTask", 0);
         PostMessage(GetFrameWindow().GetHWND(), 0x401, (WPARAM)L"xmRefreshTask", 0);
      }
      return 1;
@@ -1534,7 +1536,7 @@
      arg4.setNativePointer(xaserverarg::CreateInstance());
      trace(items);
      arg4.AddArg(L"value", items);
      OpenWindow(L"dev:xpage[QuoteFilePurch.vx]", cast(arg4 as int));
      OpenWindow(L"dev:xpage[QuoteFilePurch.vx]", arg4);
      if (arg4.GetArgString(L"process") != L"ok") return 1;
      items = arg4.GetArgString(L"value");
@@ -1630,14 +1632,12 @@
      xstring items = GetPurchItems();
      xaserverarg arg4 ;
      arg4.setNativePointer(xaserverarg::CreateInstance());
      arg4.AddArg(L"value", items);
      OpenWindow(L"dev:xpage[QuoteFilePurch.vx]", cast(arg4 as int));
      OpenWindow(L"dev:xpage[QuoteFilePurch.vx]", arg4);
      if (arg4.GetArgString(L"process") != L"ok") return 1;
      items = arg4.GetArgString(L"value");
      xml x0 ;
      x0.setNativePointer(xml::CreateInstance());
      x0.loadXML(items);
      KXMLDOMNodeList ts1 = x0.selectNodes(L"data/Item");
      int len1 = ts1.length();
@@ -1780,6 +1780,7 @@
         }
      }
      int purchercol1 = 0;
      //update purch
      if (1 == 0)
      {
@@ -1810,8 +1811,9 @@
         headrow1 = row2;
         startrow1 = headrow1 + 1;
         int purchercol1 = getItemCol(cell1, headrow1, L"采购人员");
         purchercol1 = getItemCol(cell1, headrow1, L"采购人员");
      }
      //Clear
      if (1 == 1)
@@ -1833,7 +1835,7 @@
            supplier = dw_cell.GetItemString(lastrow, purchercol);
            if (supplier != username)
            {
               KXMLDOMNode n1 = x0.selectSingleNode(L"data/Item[IsSend='1' and Purchor='" + supplier + L"' and RowNo='" + (lastrow - row + 1).toString() + L"']");
               KXMLDOMNode n1 = x0.selectSingleNode(L"data/Item[IsSend='1' and Purchor='" + supplier + L"' and RowNo='" + xstring(lastrow - row + 1) + L"']");
               if (n1)
               {
                  xstring rowid = getRowID(dw_cell, lastrow);
@@ -2028,7 +2030,7 @@
      arg4.setNativePointer(xaserverarg::CreateInstance());
      trace(items);
      arg4.AddArg(L"value", items);
      OpenWindow(L"dev:xpage[QuoteFilePurch.vx]", cast(arg4 as int));
      OpenWindow(L"dev:xpage[QuoteFilePurch.vx]", arg4);
      if (arg4.GetArgString(L"process") != L"ok") return 1;
      items = arg4.GetArgString(L"value");
@@ -2055,7 +2057,6 @@
      }
      xml x0 ;
      x0.setNativePointer(xml::CreateInstance());
      x0.loadXML(items);
      while (supplier != L"")
@@ -2200,7 +2201,7 @@
      xml x = ViewObject::RetrieveData(L"/sale/data/TO/template/param", L"TemplateID", id);
      xml sheet ;
      sheet.loadXML(x.selectSingleNode(L"data/*").xml);
      sheet.loadXML(x.selectSingleNode(L"data/*").xml());
      dw_cell.LoadTemplate(sheet);
      dw_cell.Redraw();
@@ -2319,7 +2320,7 @@
         return L"";
      }
      xstring appPath = GetModuleTmpPath();
      xstring appPath = xutil::GetModuleTmpPath();
      xaserver::CreateDirectory(appPath);
      ret = xaserver::DownLoadFile(GetServerUrl(), L"/business/products/chanpin/" + str + L"/" + name, name, appPath + L"/" + name);
      if (ret < 0)
@@ -2559,7 +2560,7 @@
      dw_cell.SetCellProps(row, colPhoto, props);
      dw_cell.SetCellProps(row, colPhoto1, props);
      xstring appPath = GetModuleTmpPath();
      xstring appPath = xutil::GetModuleTmpPath();
      xstring guid = ViewObject::GetGuid();
      xstring filename1 = UploadImage(guid);
      if (filename1 != L"")
@@ -2586,7 +2587,7 @@
      return 1;
   }
   int GetOpenFileNames(StringArray items, xstring initFileName, xstring filter, xstring ext)
   int GetOpenFileNames(xarray<xstring>& items, xstring initFileName, xstring filter, xstring ext)
   {
      //xstring path = GetOpenFileName(L"",
      //      "JPEG 文件(*.jpg)\0*.jpg;*.jpeg;*.png;*.gif;*.bmp\0全部文件(*.*)\0*.*\0",
@@ -2636,7 +2637,7 @@
      ofn.nFileExtension = 0;
      //debugbreak();
      if (file::GetOpenFileName(ofn))
      if (xfile::GetOpenFileName(ofn))
      {
         int pos = ofn.nFileOffset & 0xffff;
         xstring path = szPath;
@@ -2646,22 +2647,18 @@
         }
         else
         {
            int start = cast(szPath as int);
            wchar_t* start = szPath;
            start += pos * 2;
            xstring str = cast(start  as xstring);
            xstring str = start;
            while (true)
            {
               if (str == L"")break;
               items.push_back(path + L"/" + str);
               start += (str.length() + 1) * 2;
               str = cast(start  as xstring);
               str = start;
            }
         }
      }
      delete szFileName;
      delete szPath;
      delete ofn;
      return items.length();
   }
@@ -2678,12 +2675,11 @@
      int LastRow = dw_cell.GetValidRow();
      if (row < startRow) return  0;
      xstring appPath = GetModuleTmpPath();
      StringArray items;
      items = StringArray::make();
      xstring appPath = xutil::GetModuleTmpPath();
      xarray<xstring> items;
      GetOpenFileNames(items, L"",
         "JPEG 文件(*.jpg)\0*.jpg;*.jpeg;*.png;*.gif;*.bmp\0全部文件(*.*)\0*.*\0",
         "jpg");
         L"JPEG 文件(*.jpg)\0*.jpg;*.jpeg;*.png;*.gif;*.bmp\0全部文件(*.*)\0*.*\0",
         L"jpg");
      if (items.length() < 1) return 1;
      int sRow = row;
@@ -2756,12 +2752,11 @@
      dw_cell.SetCellProps(row, colPhoto, props);
      dw_cell.SetCellProps(row, colPhoto1, props);
      xstring appPath = GetModuleTmpPath();
      StringArray items;
      items = StringArray::make();
      xstring appPath = xutil::GetModuleTmpPath();
      xarray<xstring> items;
      GetOpenFileNames(items, L"",
         L"JPEG 文件(*.jpg)\0*.jpg;*.jpeg;*.png;*.gif;*.bmp\0全部文件(*.*)\0*.*\0",
         "jpg");
         L"jpg");
      if (items.length() < 1) return 1;
      for (int i = 0; i < items.length(); i++)
@@ -2857,7 +2852,7 @@
         double colFOBPriceEx = fobprice.toDouble();
         double colFOBPriceS;
         colFOBPriceS = colFOBPriceEx.round(2);
         colFOBPriceS = xdouble(colFOBPriceEx).round(2);
         xstring colFOBPriceS1 = xstring(colFOBPriceS);
         xstring colFOBPriceS2 = colFOBPriceS1.left(colFOBPriceS1.find(L"."));
         xstring colFOBPriceS3 = colFOBPriceS1.mid(colFOBPriceS1.find(L"."), colFOBPriceS1.length());
@@ -2875,7 +2870,7 @@
            xaserverarg argx ;
            argx.setNativePointer(argx.CreateInstance());
            argx.AddArg(L"GoodsNo", dw_cell.GetItemString(row, colItemNo));
            OpenWindow(L"dev:xpage[CustomerItemNoList.vx]", cast(argx as int));
            OpenWindow(L"dev:xpage[CustomerItemNoList.vx]", argx);
            if (argx.GetArgString(L"action") != L"ok") return 1;
            xml x1 ;
@@ -2919,7 +2914,10 @@
                     dw_cell.SetItemString(row, colQtyPerPack, str2 + L"/" + str1);
                  }
                  else
                  {
                     xstring str1 = goods.selectSingleNode(L"//PackingRate[1]").text();
                     dw_cell.SetItemString(row, colQtyPerPack, str1);
                  }
               }
               ProcessItemImage(dw_cell.GetItemString(row, colSKUNo), row);
               //ProcessItemImage1(dw_cell.GetItemString(row,colItemNo),row);
@@ -2973,7 +2971,7 @@
            //if(qty2 !=L"") qty = qty*qty2.toDouble();
            qty = qty2.toDouble();
            double ttl = 65.0 * qty / v;
            dw_cell.SetItemString(row, col40HQ, ttl.toInt().toString());
            dw_cell.SetItemString(row, col40HQ, xstring((int)ttl));
         }
      }
@@ -3106,9 +3104,9 @@
      return 1;
   }
   int OnItemChanged(TEvent*, LPARAM p)
   int OnItemChanged(TEvent* evt, LPARAM p)
   {
      ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
      DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
      xstring colname = hdr.colname;
      xstring value = hdr.data;
      int row = hdr.row;
@@ -3129,7 +3127,7 @@
      int startRow = getItemHeadRow(dw_cell);
      //没有找到商品行的标题
      if (startRow < 1) return L"";
      if (startRow < 1) return 0;
      startRow++;
      int colItemNo = getItemCol(dw_cell, startRow - 1, L"我司型号,ItemNo");
@@ -3253,13 +3251,12 @@
   int ProcessItemImage(xstring goodsno, int row)
   {
      xml xp ;
      xp.setNativePointer(xml::CreateInstance());
      xaserverarg arg_pic ;
      arg_pic.setNativePointer(arg_pic.CreateInstance());
      arg_pic.AddArg(L"SKUNo", goodsno);
      ximageview im = GetControl(L"frame:im1");
      im.ResetEx();
      im.Reset();
      xstring res = L"/sale/data/productlibrary3/pref/picture/imagelistskuno";
      if (xurl::get(res, arg_pic.GetString(), xp) != 1)
      {
@@ -3313,13 +3310,12 @@
   int ProcessItemImage1(xstring goodsno, int row)
   {
      xml xp ;
      xp.setNativePointer(xml::CreateInstance());
      xaserverarg arg_pic ;
      arg_pic.setNativePointer(arg_pic.CreateInstance());
      arg_pic.AddArg(L"GoodsNo", goodsno);
      ximageview im = GetControl(L"frame:im1");
      im.ResetEx();
      im.Reset();
      xstring res = L"/sale/data/ProductLibrary3/pref/picture/imagelistItemNo";
      if (xurl::get(res, arg_pic.GetString(), xp) != 1)
      {
@@ -3345,7 +3341,7 @@
            im.AddImages(picname,goodsno);*/
            if (ip == 0)
            {
               xstring appPath = GetModuleTmpPath();
               xstring appPath = xutil::GetModuleTmpPath();
               xaserver::CreateDirectory(appPath);
               xaserver::DownLoadFile(GetServerUrl(), L"/business/products/chanpin/" + id.left(2) + L"/" + name, name, appPath + L"/" + name);
@@ -3464,19 +3460,18 @@
      }
      else if (comdid == L"xmRefreshTask1")
      {
         win32::PostMessage(GetFrameWindow().GetHWND(), 0x401, L"xmRefreshTask", 0);
         PostMessage(GetFrameWindow().GetHWND(), 0x401, L"xmRefreshTask", 0);
         return 1;
      }
      else if (comdid == L"xmFileOpen" || comdid == L"xmOpen" || comdid == L"xmNew")
      {
         xstring suserid = publiccode::GetUser().id;
         xaserverarg args ;
         args.setNativePointer(args.CreateInstance());
         if (comdid == L"xmNew")
            OpenWindow(L"dev:xpage[TONewSelectDlg.vx]", cast(args as int));
            OpenWindow(L"dev:xpage[TONewSelectDlg.vx]", args);
         else
            OpenWindow(L"dev:xpage[TOSelectDlg.vx]", cast(args as int));
            OpenWindow(L"dev:xpage[TOSelectDlg.vx]", args);
         fileid = args.GetArgString(L"id");
         templateID = args.GetArgString(L"templateID");
         xstring myaction = args.GetArgString(L"action");
@@ -3501,7 +3496,7 @@
         args.AddArg(L"src", L"data/QuoteFile/" + suserid);
         args.AddArg(L"process", L"path");
         OpenWindow(L"dev:xpage[trade.document.selectdlg.vx]", cast(args as int));
         OpenWindow(L"dev:xpage[trade.document.selectdlg.vx]", args);
         if (args.GetArgString(L"result") == L"ok")
         {
            xstring u = args.GetArgString(L"src");
@@ -3509,11 +3504,11 @@
            
            xaserver::LoadUrl(GetServerUrl(), u, L"", x);
            trace(x.xml());
            dw_cell.LoadTemplateEx(x.documentElement);
            dw_cell.LoadTemplateEx(x.documentElement());
            dw_cell.Redraw();
            filename = args.GetArgString(L"filename");
            fileid = args.GetArgString(L"ID");
            win32::SetWindowText(GetHWND(), L"报价文件:" + filename);
            SetWindowText(GetHWND(), L"报价文件:" + filename);
         }
         return 1;
      }
@@ -3523,7 +3518,7 @@
         dw_cell.Redraw();
         filename = L"";
         fileid = L"";
         win32::SetWindowText(GetHWND(), L"报价文件:[new]");
         SetWindowText(GetHWND(), L"报价文件:[new]");
         return 1;
      }
      else if (comdid == L"xmFileSave" || comdid == L"xmSave")
@@ -3560,6 +3555,7 @@
         if (action == L"purch")
         {
            int crow = dw_cell.GetRow();
            xstring cmd = comdid.mid(3, comdid.length());
            if (getRowID(dw_cell, crow) == L"") SendCtrlCmd(dw_cell, cmd);
            return 1;
         }
@@ -3658,12 +3654,13 @@
            Item += L"<ModifyDate>" + sdate + L"</ModifyDate>";
            Item += L"</Item>";
         }
         if (hasNew)
         {
            xstring newItem = L"<data>" + Item + L"</data>";
            trace(newItem);
            if (OnSaveNewItem(newItem) == -1) return 1;
            if (hasNew)
            {
               xstring newItem = L"<data>" + Item + L"</data>";
               trace(newItem);
               if (OnSaveNewItem(newItem) == -1) return 1;
            }
         }
      }
@@ -3687,7 +3684,7 @@
      }
      else
      {
         xstring str = x.documentElement.getAttribute(L"text");
         xstring str = x.documentElement().getAttribute(L"text");
         if (str == L"true")
         {
            dw_goods.ResetUpdateStatus();
@@ -3875,7 +3872,7 @@
         if (pos >= 0)
         {
            pos1 = content.find(L"</display>", pos);
            str = content.mid(pos1 + L"</display>".length(), 9999999);
            str = content.mid(pos1 + xstring(L"</display>").length(), 9999999);
            content = content.left(pos) + str;
         }
         else
@@ -3911,7 +3908,7 @@
         if (pos >= 0)
         {
            pos1 = content.find(L"</display>", pos);
            str = content.mid(pos1 + L"</display>".length(), 9999999);
            str = content.mid(pos1 + xstring(L"</display>").length(), 9999999);
            content = content.left(pos) + str;
         }
         else
@@ -3991,7 +3988,6 @@
      xml x ;
      xaserverarg args ;
      args.setNativePointer(args.CreateInstance());
      args.AddArg(L"myurl", myurl);
      args.AddArg(L"name", sfilename);
      args.AddArg(L"filepath", sname);
@@ -4023,9 +4019,9 @@
      return 1;
   }
   int OnCellClicked(TEvent*, LPARAM p)
   int OnCellClicked(TEvent* evt, LPARAM p)
   {
      ref DWNMHDR dwhdr = cast(evt.pnmh as ref DWNMHDR);
      DWNMHDR& dwhdr=*(DWNMHDR*)evt->notify.pnmh;
      int row = dwhdr.row;
      int col = dwhdr.col;
      //xstring col = dwhdr.colname;
@@ -4061,7 +4057,7 @@
      if (row < startRow + 1) return 1;
      startRow++;
      trace(xstring(row) + L"---" + (startRow - 1).toString());
      trace(xstring(row) + L"---" + xstring(startRow - 1));
      int colItemNo = getItemCol(dw_cell, startRow - 1, L"我司型号,ItemNo");
      int colCustomerItemNo = getItemCol(dw_cell, startRow - 1, L"客户型号,Customer ItemNo,Customer Item No");
@@ -4129,13 +4125,13 @@
            xstring pitems = L"";
            for (int i = 0; i < count; i++)
            {
               pitems += L"&lt;row&gt;&lt;显示列&gt;" + items.item(i).selectSingleNode(L"Name").text + L"&lt;/显示列&gt;&lt;数据列&gt;"
                  + items.item(i).selectSingleNode(L"Name").text + L"&lt;/数据列&gt;&lt;/row&gt;";
               pitems += (xstring)L"&lt;row&gt;&lt;显示列&gt;" + items.item(i).selectSingleNode(L"Name").text() + L"&lt;/显示列&gt;&lt;数据列&gt;"
                  + items.item(i).selectSingleNode(L"Name").text() + L"&lt;/数据列&gt;&lt;/row&gt;";
            }
            xstring prop = L"<cellprop searchcolumn='' celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='' cellvisibleex='' cellvisible='' cellneeddata='' cellvalid='' cellinitial='' cellsource='' fontstyle='' windowurl=''>" +
               "<edit edittype='ddlb' ddlbdataurl='' ddlbxml='&lt;data&gt;" + pitems + L"&lt;/data&gt;'/>" +
               "</cellprop>";
            xstring prop = (xstring)L"<cellprop searchcolumn='' celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='' cellvisibleex='' cellvisible='' cellneeddata='' cellvalid='' cellinitial='' cellsource='' fontstyle='' windowurl=''>" +
               L"<edit edittype='ddlb' ddlbdataurl='' ddlbxml='&lt;data&gt;" + pitems + L"&lt;/data&gt;'/>" +
               L"</cellprop>";
            dw_cell.SetCellProps(row, col, prop);
         }
      }
@@ -4199,24 +4195,24 @@
         {
            if (dw_cell.GetItemString(row, col) == L"")
               dw_cell.SetItemString(row, col, L" ");
            xstring prop2 = L"<cellprop searchcolumn='' celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='' cellvisibleex='' cellvisible='' cellneeddata='' cellvalid='' cellinitial='' cellsource='' fontstyle='' windowurl=''>" +
               "<edit edittype='query' dddwxpageurl='' dddwdataurl='xquery:[Convert.quickcode.xq]?id=Supplier' dddwtemplateurl='dev:sheet[Supplier.v3.tpl/List]' dddwdatacolumn='Name' dddwdisplaycolumn='Name' dddwwidth='' dddwheight='' dddwautoselect='N' dddwshowbutton='否' dddwcanedit='是'/>" +
               "</cellprop>";
            xstring prop2 = (xstring)L"<cellprop searchcolumn='' celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='' cellvisibleex='' cellvisible='' cellneeddata='' cellvalid='' cellinitial='' cellsource='' fontstyle='' windowurl=''>" +
               L"<edit edittype='query' dddwxpageurl='' dddwdataurl='xquery:[Convert.quickcode.xq]?id=Supplier' dddwtemplateurl='dev:sheet[Supplier.v3.tpl/List]' dddwdatacolumn='Name' dddwdisplaycolumn='Name' dddwwidth='' dddwheight='' dddwautoselect='N' dddwshowbutton='否' dddwcanedit='是'/>" +
               L"</cellprop>";
            dw_cell.SetCellProps(row, col, prop2);
            dw_cell.Redraw();
         }
         else if (col == colTyp1 || col == colTyp || col == colTyp2 || col == colTyp3)
         {
            xstring pitems1 = L"";
            pitems1 += L"&lt;row&gt;&lt;显示列&gt;成品&lt;/显示列&gt;&lt;数据列&gt;"
            pitems1 += (xstring)L"&lt;row&gt;&lt;显示列&gt;成品&lt;/显示列&gt;&lt;数据列&gt;"
               + L"成品&lt;/数据列&gt;&lt;/row&gt;";
            pitems1 += L"&lt;row&gt;&lt;显示列&gt;散货&lt;/显示列&gt;&lt;数据列&gt;"
            pitems1 += (xstring)L"&lt;row&gt;&lt;显示列&gt;散货&lt;/显示列&gt;&lt;数据列&gt;"
               + L"散货&lt;/数据列&gt;&lt;/row&gt;";
            pitems1 += L"&lt;row&gt;&lt;显示列&gt;包装&lt;/显示列&gt;&lt;数据列&gt;"
            pitems1 += (xstring)L"&lt;row&gt;&lt;显示列&gt;包装&lt;/显示列&gt;&lt;数据列&gt;"
               + L"包装&lt;/数据列&gt;&lt;/row&gt;";
            xstring prop1 = L"<cellprop searchcolumn='' celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='' cellvisibleex='' cellvisible='' cellneeddata='' cellvalid='' cellinitial='' cellsource='' fontstyle='' windowurl=''>" +
               "<edit edittype='ddlb' ddlbdataurl='' ddlbxml='&lt;data&gt;" + pitems1 + L"&lt;/data&gt;'/>" +
               "</cellprop>";
            xstring prop1 = (xstring)L"<cellprop searchcolumn='' celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='' cellvisibleex='' cellvisible='' cellneeddata='' cellvalid='' cellinitial='' cellsource='' fontstyle='' windowurl=''>" +
               L"<edit edittype='ddlb' ddlbdataurl='' ddlbxml='&lt;data&gt;" + pitems1 + L"&lt;/data&gt;'/>" +
               L"</cellprop>";
            dw_cell.SetCellProps(row, col, prop1);
         }
      }
@@ -4229,9 +4225,9 @@
   }
   int OnCellClicked1(TEvent*, LPARAM p)
   int OnCellClicked1(TEvent* evt, LPARAM p)
   {
      ref DWNMHDR dwhdr = cast(evt.pnmh as ref DWNMHDR);
      DWNMHDR dwhdr = *(DWNMHDR*)evt->notify.pnmh;
      int row = dwhdr.row;
      int col = dwhdr.col;
      //xstring col = dwhdr.colname;
@@ -4248,7 +4244,7 @@
      if (row < startRow + 1) return 1;
      startRow++;
      trace(xstring(row) + L"---" + (startRow - 1).toString());
      trace(xstring(row) + L"---" + xstring(startRow - 1));
      int colItemNo = getItemCol(dw_cell, startRow - 1, L"我司型号,ItemNo");
      int colCustomerItemNo = getItemCol(dw_cell, startRow - 1, L"客户型号,Customer ItemNo,Customer Item No");
@@ -4302,13 +4298,13 @@
            xstring pitems = L"";
            for (int i = 0; i < count; i++)
            {
               pitems += L"&lt;row&gt;&lt;显示列&gt;" + items.item(i).selectSingleNode(L"Name").text + L"&lt;/显示列&gt;&lt;数据列&gt;"
                  + items.item(i).selectSingleNode(L"Name").text + L"&lt;/数据列&gt;&lt;/row&gt;";
               pitems += (xstring)L"&lt;row&gt;&lt;显示列&gt;" + items.item(i).selectSingleNode(L"Name").text() + L"&lt;/显示列&gt;&lt;数据列&gt;"
                  + items.item(i).selectSingleNode(L"Name").text() + L"&lt;/数据列&gt;&lt;/row&gt;";
            }
            xstring prop = L"<cellprop searchcolumn='' celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='' cellvisibleex='' cellvisible='' cellneeddata='' cellvalid='' cellinitial='' cellsource='' fontstyle='' windowurl=''>" +
               "<edit edittype='ddlb' ddlbdataurl='' ddlbxml='&lt;data&gt;" + pitems + L"&lt;/data&gt;'/>" +
               "</cellprop>";
            xstring prop = (xstring)L"<cellprop searchcolumn='' celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='' cellvisibleex='' cellvisible='' cellneeddata='' cellvalid='' cellinitial='' cellsource='' fontstyle='' windowurl=''>" +
               L"<edit edittype='ddlb' ddlbdataurl='' ddlbxml='&lt;data&gt;" + pitems + L"&lt;/data&gt;'/>" +
               L"</cellprop>";
            dw_cell.SetCellProps(row, col, prop);
         }
         if (col == colPackage)
@@ -4326,7 +4322,7 @@
            xaserverarg argx ;
            argx.setNativePointer(argx.CreateInstance());
            argx.AddArg(L"GoodsNo", dw_cell.GetItemString(ARow, colItemNo));
            OpenWindow(L"dev:xpage[CustomerItemNoList.vx]", cast(argx as int));
            OpenWindow(L"dev:xpage[CustomerItemNoList.vx]", argx);
            if (argx.GetArgString(L"action") != L"ok")
            {
               ARow = row;
@@ -4394,11 +4390,12 @@
      {
         /*计算体积*/
         xstring desc = dw_cell.GetItemString(ARow, colVolDesc);
         double v = 0.0;
         if (desc == L"")
            dw_cell.SetItemString(ARow, colVol, L"");
         else
         {
            double v = calcVol(desc) / 1000000.00;
            v = calcVol(desc) / 1000000.00;
            xstring str = xstring(v);
            if (str.find(L".") >= 0)   str = str.left(str.find(L".") + 5);
            dw_cell.SetItemString(ARow, colVol, str);
@@ -4420,7 +4417,7 @@
            if (qty1 != L"") qty = qty1.toDouble();
            if (qty2 != L"") qty = qty * qty2.toDouble();
            double ttl = 65.0 * qty / v;
            dw_cell.SetItemString(ARow, col40HQ, ttl.toInt().toString());
            dw_cell.SetItemString(ARow, col40HQ, xstring((int)ttl));
         }
      }
@@ -4468,8 +4465,8 @@
            pitems1 += (xstring)L"&lt;row&gt;&lt;显示列&gt;包装&lt;/显示列&gt;&lt;数据列&gt;"
               + L"包装&lt;/数据列&gt;&lt;/row&gt;";
            xstring prop1 = (xstring)L"<cellprop searchcolumn='' celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='' cellvisibleex='' cellvisible='' cellneeddata='' cellvalid='' cellinitial='' cellsource='' fontstyle='' windowurl=''>" +
               "<edit edittype='ddlb' ddlbdataurl='' ddlbxml='&lt;data&gt;" + pitems1 + L"&lt;/data&gt;'/>" +
               "</cellprop>";
               L"<edit edittype='ddlb' ddlbdataurl='' ddlbxml='&lt;data&gt;" + pitems1 + L"&lt;/data&gt;'/>" +
               L"</cellprop>";
            dw_cell.SetCellProps(row, col, prop1);
         }
@@ -4539,7 +4536,7 @@
      xstring sh = doc.GetXml();
      int p = cast(sh as int);
      win32::SendMessage(m_winHwnd, 0x401, p, 0);
      SendMessage(m_winHwnd, 0x401, p, 0);
      */
      return 1;
   }
@@ -4553,18 +4550,18 @@
   int OnAttachListon()
   {
      //绑定工具条点击事件
      AttachEvent(L"WM_XCOMMAND", OnXCommand);
      AttachEvent(L"WM_XCOMMAND", (FEvent)&QuoteFileView::OnXCommand);
      //获取焦点事件,用于重置工具条
      AttachEvent(L"WM_SETFOCUS", OnSetFocus);
      AttachEvent(L"WM_SETFOCUS", (FEvent)&QuoteFileView::OnSetFocus);
      AttachEvent(L"frame:im1", L"IMG_LDBCLICK", OnImgDBClicked);
      AttachEvent(L"frame:im1", L"IMG_LDBCLICK", (FEvent)&QuoteFileView::OnImgDBClicked);
      AttachEvent(L"dw_base", L"DWV_ITEMCHANGED", OnItemChanged);
      AttachEvent(L"dw_goods", L"DWV_ROWFOCUSCHANGED", OnRowChanged);
      AttachEvent(L"dw_base", L"DWV_ITEMCHANGED", (FEvent)&QuoteFileView::OnItemChanged);
      AttachEvent(L"dw_goods", L"DWV_ROWFOCUSCHANGED", (FEvent)&QuoteFileView::OnRowChanged);
      AttachEvent(L"dw_cell", L"DWV_CLICKED", OnCellClicked);
      AttachEvent(L"dw_cell", L"CELL_ITEMCHANGED", OnCellItemChanged);
      AttachEvent(L"dw_cell", L"CELL_SELECTCHANGED", OnCellSelectChanged);
      AttachEvent(L"dw_cell", L"DWV_CLICKED", (FEvent)&QuoteFileView::OnCellClicked);
      AttachEvent(L"dw_cell", L"CELL_ITEMCHANGED", (FEvent)&QuoteFileView::OnCellItemChanged);
      AttachEvent(L"dw_cell", L"CELL_SELECTCHANGED", (FEvent)&QuoteFileView::OnCellSelectChanged);
      return 1;
   }
@@ -4739,9 +4736,8 @@
      xstring templ = L"";
      taskid = L"";
      xaserverarg  arg;
      if (GetParam()) {
         arg ;
         arg.setNativePointer(GetParam());
      if (GetWinParam()) {
         arg = GetArg();
         templ = arg.GetArgString(L"template");
         entityID = arg.GetArgString(L"EntityID");
         taskid = arg.GetArgString(L"TaskID");
@@ -4797,7 +4793,7 @@
         dw_cell.openUrl(templateurl);
         */
         //win32::SetWindowText(GetHWND(),L"报价文件:[new]");
         //SetWindowText(GetHWND(),L"报价文件:[new]");
      }
      ARow = 0;
@@ -4842,7 +4838,7 @@
         }
      }
      OnAttachEvent();
      OnAttachListon();
      filename = L"";
      /*   #define LayerFlow_None         0x00000001      //not layer space
@@ -4964,7 +4960,7 @@
      xaserverarg arg ;
      arg.setNativePointer(xaserverarg::CreateInstance());
      arg.AddArg(L"value", content);
      OpenWindow(L"dev:xpage[QuoteSupplierItem.vx]", cast(arg as int));
      OpenWindow(L"dev:xpage[QuoteSupplierItem.vx]", arg);
      return 1;
   }
@@ -4972,15 +4968,14 @@
   bool hasParty(xstring name)
   {
      xml x ;
      xaserverarg arg ;
      arg.setNativePointer(xaserverarg::CreateInstance());
      arg.AddArg(L"Name", name);
      if (getUrl(L"/sale/data/SupplierV3/HasParty", arg.GetString(), x) != 1)
      {
         alert(L"error:" + x.xml());
         alert((xstring)L"error:" + x.xml());
      }
      xstring count = x.documentElement.getAttribute(L"count");
      xstring count = x.documentElement().getAttribute(L"count");
      if (count != L"0") return true;
      return false;
@@ -4988,14 +4983,13 @@
   int LoadPurcher()
   {
      purcher ;
      purcher.setNativePointer(xml::CreateInstance());
      xml purcher ;
      xaserverarg arg ;
      arg.setNativePointer(xaserverarg::CreateInstance());
      arg.AddArg(L"id", L"采购员");
      if (getUrl(L"/sale/data/Quote/Purcher", arg.GetString(), purcher) != 1)
      {
         alert(L"error:" + purcher.GetXml());
         alert((xstring)L"error:" + purcher.xml());
      }
      return 1;
   }
@@ -5018,9 +5012,8 @@
      LoadPurcher();
      xaserverarg  arg;
      if (GetParam()) {
         arg ;
         arg.setNativePointer(GetParam());
      if (GetWinParam()) {
         arg = GetArg();
         if (arg.GetArgString(L"bill.purchor") == L"1") OnNextPurch();
      }
      return 1;