xj qian
2024-06-25 7123990b31c90e0767eb6cee50c92fa6459cea62
jrj/project/business/Supplier.maint.cpp
@@ -1,5 +1,17 @@
class maintSupplierv3 : public maint
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xlayersheet.hpp>
#include "vbusiness/vframe/maint.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
class __declspec(dllexport) maintSupplierv3 : public maint
{
public:
   xdwtable dw_base;
   xdwtable dw_kpinfo;
   xdwtable dw_visitp;
@@ -7,16 +19,24 @@
   xdwgrid dw_supgoods;
   xlayersheet m_layer;
   xlayersheet xsheet;            
   //string xpage;
   string m_diffstr;
   vcontrol vc;
   //xstring xpage;
   xstring m_diffstr;
   string str_replace(string s, string a, string b, int k)
public:
   maintSupplierv3(void* implPtr, HWND hWnd) :maint(implPtr, hWnd) {}
public:
   static maintSupplierv3* CreateInstance(void* implPtr, void* hWnd)
   {
      maintSupplierv3* pWin = new maintSupplierv3(implPtr, (HWND)hWnd);
      return pWin;
   }
   xstring str_replace(xstring s, xstring a, xstring b, int k)
   {
      int i = s.find(a,k);         
      if (i > -1)
      {
         string tmp;
         xstring tmp;
         if(i==0)
            tmp = b + s.mid(i + a.length(), s.length());
         else if (i + a.length() == s.length())
@@ -26,21 +46,21 @@
         str_replace(tmp, a, b, i + b.length() + 1);
      }
      else
         return ""+s;
         return L""+s;
   }         
   string str_replace(string s, string a, string b)
   xstring str_replace(xstring s, xstring a, xstring b)
   {
      return str_replace( s,  a, b, 0);
   }         
   int SetAttributeByxml(xml x,string nodename,string action,string status)
   int SetAttributeByxml(xml x,xstring nodename,xstring action,xstring status)
   {   
      msxml::IXMLDOMElement e;
      msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().selectNodes("//"+nodename+"");
      KXMLDOMElement e;
      KXMLDOMNodeList nlist = x.selectNodes(L"//"+nodename+L"");
      if(nlist)
      {   
   
         int nlen = nlist.length;
         int nlen = nlist.length();
         int i;
         for(i=0;   i<nlen;   i++)
         {
@@ -52,14 +72,14 @@
      }                  
   }
      
   int SetAttributeByaddress(xml x,string nodename,string action,string status)
   int SetAttributeByaddress(xml x,xstring nodename,xstring action,xstring status)
   {   
      msxml::IXMLDOMElement e;
      msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().selectNodes("//"+nodename+"");
      KXMLDOMElement e;
      KXMLDOMNodeList nlist = x.selectNodes(L"//"+nodename+L"");
      if(nlist)
      {   
   
         int nlen = nlist.length;
         int nlen = nlist.length();
         int i;
         for(i=0;   i<nlen;   i++)
         {
@@ -77,229 +97,229 @@
      dw_kpinfo.AcceptText();
      dw_visitp.AcceptText();
      //xdwtable__ dw_base = new xdwtable__;
      //dw_base.setNativePointer(this.GetControl("dw_base"));
      xdwtable dw = dw_base.FindDwTable("Supplier",0);
      string sStatus = dw.GetItemString(1,"Status",0);
      //dw_base.setNativePointer(this.GetControl(L"dw_base"));
      xdwtable dw = dw_base.FindDwTable(L"Supplier",0);
      xstring sStatus = dw.GetItemString(1,L"Status");
      int slen = sStatus.length();
      
      //if (slen >1)
      
      string AdvantageProduct = dw_base.GetItemString(1,"AdvantageProduct");
      if(AdvantageProduct.rtrim()=="" )
      xstring AdvantageProduct = dw_base.GetItemString(1,L"AdvantageProduct");
      if(AdvantageProduct.rtrim()==L"" )
      {
            alert("优势产品为空!");
            alert(L"优势产品为空!");
            return  -1;
      }
      string FactoryForPaperCard = dw_base.GetItemString(1,"FactoryForPaperCard");
      string FactoryForPart = dw_base.GetItemString(1,"FactoryForPart");
      string FactoryForPacking = dw_base.GetItemString(1,"FactoryForPacking");
      string FactoryForItem = dw_base.GetItemString(1,"FactoryForItem");
      string FactoryForMake = dw_base.GetItemString(1,"FactoryForMake");
      xstring FactoryForPaperCard = dw_base.GetItemString(1,L"FactoryForPaperCard");
      xstring FactoryForPart = dw_base.GetItemString(1,L"FactoryForPart");
      xstring FactoryForPacking = dw_base.GetItemString(1,L"FactoryForPacking");
      xstring FactoryForItem = dw_base.GetItemString(1,L"FactoryForItem");
      xstring FactoryForMake = dw_base.GetItemString(1,L"FactoryForMake");
         
      if(FactoryForPaperCard !="Y" && FactoryForPart  !="Y" && FactoryForPacking  !="Y" && FactoryForItem  !="Y" && FactoryForMake  !="Y")
      if(FactoryForPaperCard !=L"Y" && FactoryForPart  !=L"Y" && FactoryForPacking  !=L"Y" && FactoryForItem  !=L"Y" && FactoryForMake  !=L"Y")
      {
            alert("供应商分组为空!");
            alert(L"供应商分组为空!");
            return  -1;
      }
         
      if(sStatus=="")
      if(sStatus==L"")
      {
         alert("供应商状态输入有误!");
         alert(L"供应商状态输入有误!");
         return -1;
      }
      string sPartyNo = dw.GetItemString(1,"PartyNo",0);
      if (sPartyNo=="" )
      xstring sPartyNo = dw.GetItemString(1,L"PartyNo");
      if (sPartyNo==L"" )
         {
            //sPartyNo = publiccode::GetIdentityNo("Party2");
            sPartyNo = publiccode::GetIdentityNo("Party2");
            dw.SetItemString(1,"PartyNo",sPartyNo);
            //alert("供应商编号为空!");
            //sPartyNo = publiccode::GetIdentityNo(L"Party2");
            sPartyNo = publiccode::GetIdentityNo(L"Party2");
            dw.SetItemString(1,L"PartyNo",sPartyNo);
            //alert(L"供应商编号为空!");
            //return -1;
      }
      
      string ShortName = dw.GetItemString(1,"ShortName",0);
      if(ShortName.rtrim()=="" )
      xstring ShortName = dw.GetItemString(1,L"ShortName");
      if(ShortName.rtrim()==L"" )
      {
            alert("供应商简称为空!");
            alert(L"供应商简称为空!");
            return -1;
      }
      string YearEstablished = dw_base.GetItemString(1,"YearEstablished");
      if(YearEstablished.rtrim()=="" )
      xstring YearEstablished = dw_base.GetItemString(1,L"YearEstablished");
      if(YearEstablished.rtrim()==L"" )
      {
            alert("成立时间为空!");
            alert(L"成立时间为空!");
            return -1;
      }
      string LegalPerson = dw_base.GetItemString(1,"LegalPerson");
      if(LegalPerson.rtrim()=="" )
      xstring LegalPerson = dw_base.GetItemString(1,L"LegalPerson");
      if(LegalPerson.rtrim()==L"" )
      {
            alert("法人代表为空!");
            alert(L"法人代表为空!");
            return -1;
      }
         
      string ThirdPartyReport = dw_base.GetItemString(1,"ThirdPartyReport");
      if(ThirdPartyReport.rtrim()=="" )
      xstring ThirdPartyReport = dw_base.GetItemString(1,L"ThirdPartyReport");
      if(ThirdPartyReport.rtrim()==L"" )
      {
            alert("验厂报告为空!");
            alert(L"验厂报告为空!");
            return -1;
      }
      string SupplierSource = dw_base.GetItemString(1,"SupplierSource");
      if(SupplierSource.rtrim()=="" )
      xstring SupplierSource = dw_base.GetItemString(1,L"SupplierSource");
      if(SupplierSource.rtrim()==L"" )
      {
            alert("供应商来源为空!");
            alert(L"供应商来源为空!");
            return -1;
      }
      string Address = dw_base.GetItemString(1,"Address");
      if(Address.rtrim()=="" )
      xstring Address = dw_base.GetItemString(1,L"Address");
      if(Address.rtrim()==L"" )
      {
            alert("供应商地址为空!");
            alert(L"供应商地址为空!");
            return -1;
      }
      string bAddress = dw_base.GetItemString(1,"bAddress");
      if(bAddress.rtrim()=="" )
      xstring bAddress = dw_base.GetItemString(1,L"bAddress");
      if(bAddress.rtrim()==L"" )
      {
            alert("寄件地址为空!");
            alert(L"寄件地址为空!");
            return -1;
      }
      
      
      string sName = dw.GetItemString(1,"Name",0)+"";
      xstring sName = dw.GetItemString(1,L"Name")+L"";
      sName.rtrim();
      //sName = str_replace(sName," ","");
      if (sName=="")
      //sName = str_replace(sName,L" ",L"");
      if (sName==L"")
         {
            alert("供应商名称为空!");
            alert(L"供应商名称为空!");
            return -1;
      }
      else
      {
         xaserverarg arg=new xaserverarg;
         xaserverarg arg;
         arg.setNativePointer(arg.CreateInstance());      
         arg.AddArg("stype", "Party2");
         arg.AddArg("svalue", sName);
         arg.AddArg(L"stype", L"Party2");
         arg.AddArg(L"svalue", sName);
      
         xml x = new xml;
         x.setNativePointer(x.CreateInstance());
         msxml::IXMLDOMDocument xdoc = x.GetXmlDoc();
         xml x ;
         KXMLDOMDocument xdoc = x;
         dw_base.DwUpdateAllTo(xdoc);
         //msxml::IXMLDOMElement e= x.GetXmlDoc().documentElement;
         //var n = x.GetXmlDoc().selectSingleNode("Supplier[@update.new='1']");
         //KXMLDOMElement e= x.GetXmlDoc().documentElement;
         //var n = x.GetXmlDoc().selectSingleNode(L"Supplier[@update.new='1']");
         //if (n)
         if (!maint::m_EntityID)
         {
            arg.AddArg("operate", "update.new");
            arg.AddArg(L"operate", L"update.new");
         }
         else
         {
            arg.AddArg("operate", "update.modify");
            arg.AddArg(L"operate", L"update.modify");
         }
         string sguid=x.GetXmlDoc().selectSingleNode("Supplier/@guid").text;
         arg.AddArg("sguid", sguid);
         //alert(sguid,"->",maint::m_EntityID);
         xstring sguid=x.selectSingleNode(L"Supplier/@guid").text();
         arg.AddArg(L"sguid", sguid);
         //alert(sguid,L"->",maint::m_EntityID);
         bool lbRepeated = publiccode::IsRepeated(arg); 
         if (lbRepeated)
         {
            alert("供应商名称有重复!");
            alert(L"供应商名称有重复!");
            return -1;
         }
      }
      
      /*dw = dw_basegy.FindDwTable("Supplier",0);
      string suserid = xaserver::GetUserId();//publiccode::GetUserInfo().id;
      string susername = publiccode::GetUser(suserid).name;
      string sdate = publiccode::GetCurrentDate();
      dw.SetItemString(1,"ModifierID",suserid);//Party
      dw.SetItemDisplayString(1,"ModifierID",susername);//Party
      dw.SetItemString(1,"ModifyDate",sdate);*/
      /*dw = dw_basegy.FindDwTable(L"Supplier",0);
      xstring suserid = xaserver::GetUserId();//publiccode::GetUserInfo().id;
      xstring susername = publiccode::GetUser(suserid).name;
      xstring sdate = publiccode::GetCurrentDate();
      dw.SetItemString(1,L"ModifierID",suserid);//Party
      dw.SetItemDisplayString(1,L"ModifierID",susername);//Party
      dw.SetItemString(1,L"ModifyDate",sdate);*/
      
      int i;
      dw =  dw_base.FindDwTable("item",0);
      dw =  dw_base.FindDwTable(L"item",0);
      for(i=1;i<=dw.GetRowCount();i++)
      {
         string aTemp;
         string aName = dw.GetItemString(i,"Name",0);
         if (aName=="" )
         xstring aTemp;
         xstring aName = dw.GetItemString(i,L"Name");
         if (aName==L"" )
         {
            aTemp=dw.GetItemString(i,"JobTitle",0)+dw.GetItemString(i,"Gender",0)+dw.GetItemString(i,"Mobile",0)+dw.GetItemString(i,"TEL",0)+dw.GetItemString(i,"Email",0)+dw.GetItemString(i,"IM",0)+dw.GetItemString(i,"Remark",0);
            if(aTemp !="")
            aTemp=dw.GetItemString(i,L"JobTitle")+dw.GetItemString(i,L"Gender")+dw.GetItemString(i,L"Mobile")+dw.GetItemString(i,L"TEL")+dw.GetItemString(i,L"Email")+dw.GetItemString(i,L"IM")+dw.GetItemString(i,L"Remark");
            if(aTemp !=L"")
            {
               alert("联系人名称必填!");
               alert(L"联系人名称必填!");
               return -1;
            }                  
         }
         else
         {
            string aStatus;
            aStatus = dw.GetItemString(i,"Status",0);
            if (aStatus=="")
            xstring aStatus;
            aStatus = dw.GetItemString(i,L"Status");
            if (aStatus==L"")
            {
               dw.SetItemString(i,"Status","1");
               dw.SetItemString(i,L"Status",L"1");
            }
         }
      }
      
      /*dw.setNativePointer(dw_base.FindDwTable("item2",0));
      /*dw.setNativePointer(dw_base.FindDwTable(L"item2",0));
      for(i=1;i<=dw.GetRowCount();i++)
      {
         string bTemp;
         bTemp=dw.GetItemString(i,"AddressName",0)+dw.GetItemString(i,"Address",0);
         if(bTemp !="" && bTemp != nil)
         xstring bTemp;
         bTemp=dw.GetItemString(i,L"AddressName",0)+dw.GetItemString(i,L"Address",0);
         if(bTemp !=L"" && bTemp != nil)
         {
            if (dw.GetItemString(i,"Status",0)=="" || dw.GetItemString(i,"Status",0)==nil)
               dw.SetItemString(i,"Status","1");
            if (dw.GetItemString(i,"IdentifyAddressFlag",0)=="" || dw.GetItemString(i,"IdentifyAddressFlag",0)==nil)
               dw.SetItemString(i,"IdentifyAddressFlag","N");
            if (dw.GetItemString(i,"PrimaryFlag",0)=="" || dw.GetItemString(i,"PrimaryFlag",0)==nil)
               dw.SetItemString(i,"PrimaryFlag","N");
            if (dw.GetItemString(i,L"Status",0)==L"" || dw.GetItemString(i,L"Status",0)==nil)
               dw.SetItemString(i,L"Status",L"1");
            if (dw.GetItemString(i,L"IdentifyAddressFlag",0)==L"" || dw.GetItemString(i,L"IdentifyAddressFlag",0)==nil)
               dw.SetItemString(i,L"IdentifyAddressFlag",L"N");
            if (dw.GetItemString(i,L"PrimaryFlag",0)==L"" || dw.GetItemString(i,L"PrimaryFlag",0)==nil)
               dw.SetItemString(i,L"PrimaryFlag",L"N");
         }
      }*/
      
      dw = dw_kpinfo.FindDwTable("item3",0);
      dw = dw_kpinfo.FindDwTable(L"item3",0);
      for(i=1;i<=dw.GetRowCount();i++)
      {
         string cTemp;
         string cName = dw.GetItemString(i,"BankName",0);
         if (cName=="" )
         xstring cTemp;
         xstring cName = dw.GetItemString(i,L"BankName");
         if (cName==L"" )
         {
            cTemp=dw.GetItemString(i,"BankAccountNo",0)+dw.GetItemString(i,"City",0);
            if(cTemp !="")
            cTemp=dw.GetItemString(i,L"BankAccountNo")+dw.GetItemString(i,L"City");
            if(cTemp !=L"")
            {
               alert("银行名称必填!");
               alert(L"银行名称必填!");
               return -1;
            }
         }
         cName = dw.GetItemString(i,"BankAccountNo",0);
         if (cName=="" )
         cName = dw.GetItemString(i,L"BankAccountNo");
         if (cName==L"" )
         {
            cTemp=dw.GetItemString(i,"BankName",0)+dw.GetItemString(i,"City",0);
            if(cTemp !="" )
            cTemp=dw.GetItemString(i,L"BankName")+dw.GetItemString(i,L"City");
            if(cTemp !=L"" )
            {
               alert("银行账号必填!");
               alert(L"银行账号必填!");
               return -1;
            }
         }               
         else {
            if (dw.GetItemString(i,"Status",0)=="" )
               dw.SetItemString(i,"Status","1");
            if (dw.GetItemString(i,L"Status")==L"" )
               dw.SetItemString(i,L"Status",L"1");
            }
      }
         
      dw = dw_kpinfo.FindDwTable("Party",0);
      dw = dw_kpinfo.FindDwTable(L"Party",0);
      if (dw)
      {
         xdwtable dw_b = dw_kpinfo.FindDwTable("item3",0);
         xdwtable dw_b = dw_kpinfo.FindDwTable(L"item3",0);
         for(i=1;i<=dw.GetRowCount();i++)
         {
            string skName = dw.GetItemString(i,"Name",0);
            if (skName=="" )
            xstring skName = dw.GetItemString(i,L"Name");
            if (skName==L"" )
            {
               int j;
               for(j=1;j<=dw_b.GetRowCount();j++)
               {
                  string kTemp = dw_b.GetItemString(j,"BankName",0)+dw_b.GetItemString(j,"BankAccountNo",0)+"";
                  if(kTemp !="" )
                  xstring kTemp = dw_b.GetItemString(j,L"BankName")+dw_b.GetItemString(j,L"BankAccountNo")+L"";
                  if(kTemp !=L"" )
                  {
                     alert("开票单位名称为空!");
                     alert(L"开票单位名称为空!");
                     return -1;
                  }                           
               }                  
@@ -307,22 +327,22 @@
         }
      }
                  
      xdwtable dw_pc = dw_base.FindDwTable("item");
      xdwtable dw_pc = dw_base.FindDwTable(L"item");
      for(int h =1; h <= dw_pc.GetRowCount();h++)
      {
         if(dw_pc.GetItemString(h,"Name")=="")
         if(dw_pc.GetItemString(h,L"Name")==L"")
         {
            alert("请输入联系人姓名!");
            alert(L"请输入联系人姓名!");
               return -1;
         }
         if(dw_pc.GetItemString(h,"Mobile")=="")
         if(dw_pc.GetItemString(h,L"Mobile")==L"")
         {
            alert("请输入联系人手机号!");
            alert(L"请输入联系人手机号!");
            return -1;
         }
         if(dw_pc.GetItemString(h,"IM")=="")
         if(dw_pc.GetItemString(h,L"IM")==L"")
         {
            alert("请输入联系人QQ号!");
            alert(L"请输入联系人QQ号!");
            return -1;
         }
      }
@@ -331,10 +351,10 @@
   int OnChangeRowNo(xdwtable dw,int row)
   {
      dw.SetItemString(1, "SeqNo", "1");
      dw.SetItemString(1, L"SeqNo", L"1");
      int i;
      for (i=row; i<=dw.GetRowCount(); i++)
         dw.SetItemString(i, "SeqNo", i.toString());
         dw.SetItemString(i, L"SeqNo", xstring(i));
      return 1;
   }            
                  
@@ -343,53 +363,53 @@
      if (!m_layer) return 0;            
      int h=m_layer.GetSheetIndex();
      int nindex = h+1;
      msxml::IXMLDOMElement n = maint::m_configDoc.selectSingleNode("//maint/group[@for='dwviev']/dwview["+nindex.toString()+"]");
      string sname= n.selectSingleNode("@name").text;
      string stype=n.selectSingleNode("@type").text;
      if (stype == "dwtable")
      KXMLDOMElement n = maint::m_configDoc.selectSingleNode(L"//maint/group[@for='dwviev']/dwview["+xstring(nindex)+L"]");
      xstring sname= n.selectSingleNode(L"@name").text();
      xstring stype=n.selectSingleNode(L"@type").text();
      if (stype == L"dwtable")
      {
         int row;
         int crow;
         xdwtable dw_obj = this.GetControl(sname);
         xdwtable dw_obj = GetControl(sname);
         xdwtable dw = dw_obj.GetCurTable();
         string dw_n=dw.GetDwName();
         if(dw_n=="item" || dw_n=="item2" || dw_n=="item3" || dw_n=="item4")
         xstring dw_n=dw.GetDwName();
         if(dw_n==L"item" || dw_n==L"item2" || dw_n==L"item3" || dw_n==L"item4")
         {
            row = dw.InsertRow(-1);
            if(dw_n=="item2" || dw_n=="item3" || dw_n=="item4")
            if(dw_n==L"item2" || dw_n==L"item3" || dw_n==L"item4")
            {                        
               OnChangeRowNo(dw,dw.GetRowCount());                     
            }   
      
         //alert(row.toString());
            //dw.SetItemString(row,"Status","Y");
            //dw.SetItemString(row,L"Status",L"Y");
         }
         if (dw_n=="item3ooo")
         if (dw_n==L"item3ooo")
         {
            dw = dw_obj.FindDwTable("Party",0);
            dw = dw_obj.FindDwTable(L"Party",0);
            crow = dw.GetRow();
            string scName;
            xstring scName;
            if (crow >0)
               scName = dw.GetItemString(crow,"Name",0);
               scName = dw.GetItemString(crow,L"Name");
            row = dw.InsertRow(-1);
            if (scName !="" )
               dw.SetItemString(dw.GetRowCount(),"Name",scName);
            if (scName !=L"" )
               dw.SetItemString(dw.GetRowCount(),L"Name",scName);
         }
         if (dw_n=="Party")
         if (dw_n==L"Party")
         {
            row = dw.InsertRow(-1);
            crow = dw.GetRow();
         //alert(crow.toString());
            dw.SetItemString(crow,"loadpic","上传图片");
            dw.SetItemString(crow,"dispic","查看");
            dw.SetItemString(crow,L"loadpic",L"上传图片");
            dw.SetItemString(crow,L"dispic",L"查看");
         }
      }
      else if (stype=="dwgrid")
      else if (stype==L"dwgrid")
      {
         xdwgrid dw_objx = new xdwgrid;
         dw_objx = this.GetControl(sname);
         dw_objx = GetControl(sname);
         int xrow = dw_objx.InsertRow(-1);
         //dw_objx.SetItemString(xrow,"Status","Y");
         //dw_objx.SetItemString(xrow,L"Status",L"Y");
      }
      
      return 1;
@@ -400,31 +420,31 @@
      if (!m_layer) return 0;            
      int h=m_layer.GetSheetIndex();
      int nindex = h+1;
      msxml::IXMLDOMElement n = maint::m_configDoc.selectSingleNode("//maint/group[@for='dwviev']/dwview["+nindex.toString()+"]");
      string sname= n.selectSingleNode("@name").text;
      string stype=n.selectSingleNode("@type").text;
      if (stype=="dwtable")
      KXMLDOMElement n = maint::m_configDoc.selectSingleNode(L"//maint/group[@for='dwviev']/dwview["+ xstring(nindex) +L"]");
      xstring sname= n.selectSingleNode(L"@name").text();
      xstring stype=n.selectSingleNode(L"@type").text();
      if (stype==L"dwtable")
      {
         int row;
         int crow;
         xdwtable dw_obj = this.GetControl(sname);
         xdwtable dw_obj = GetControl(sname);
         xdwtable dw = dw_obj.GetCurTable();
         string dw_n=dw.GetDwName();
         if(dw_n=="item" || dw_n=="item2" || dw_n=="item3" || dw_n=="item4")
         xstring dw_n=dw.GetDwName();
         if(dw_n==L"item" || dw_n==L"item2" || dw_n==L"item3" || dw_n==L"item4")
         {
            row=dw.GetRow();
            if (row == 1) row = 0;
            crow = dw.InsertRow(row);
            //dw.SetItemString(crow,"Status","Y");
            //dw.SetItemString(crow,L"Status",L"Y");
         }
         if (dw_n=="Party")
         if (dw_n==L"Party")
         {
            row=dw.GetRow();
            if (row == 1) row = 0;
            crow = dw.InsertRow(row);
            crow = dw.GetRow();
            dw.SetItemString(crow,"loadpic","上传图片");
            dw.SetItemString(crow,"dispic","查看");
            dw.SetItemString(crow,L"loadpic",L"上传图片");
            dw.SetItemString(crow,L"dispic",L"查看");
         }
      }
      return 1;
@@ -435,17 +455,17 @@
      if (!m_layer) return 0;            
      int h=m_layer.GetSheetIndex();
      int nindex = h+1;
      msxml::IXMLDOMElement n = maint::m_configDoc.selectSingleNode("//maint/group[@for='dwviev']/dwview["+nindex.toString()+"]");
      string sname= n.selectSingleNode("@name").text;
      string stype=n.selectSingleNode("@type").text;
      if (stype=="dwtable")
      KXMLDOMElement n = maint::m_configDoc.selectSingleNode(L"//maint/group[@for='dwviev']/dwview["+ xstring(nindex) +L"]");
      xstring sname= n.selectSingleNode(L"@name").text();
      xstring stype=n.selectSingleNode(L"@type").text();
      if (stype==L"dwtable")
      {
         int row;
         
         xdwtable dw_obj = this.GetControl(sname);
         xdwtable dw_obj = GetControl(sname);
         xdwtable dw = dw_obj.GetCurTable();
         string dw_n=dw.GetDwName();
         if(dw_n=="item" || dw_n=="item2" || dw_n=="item3" || dw_n=="item4"|| dw_n=="Party")
         xstring dw_n=dw.GetDwName();
         if(dw_n==L"item" || dw_n==L"item2" || dw_n==L"item3" || dw_n==L"item4"|| dw_n==L"Party")
         {
            row=dw.GetRow();
            //if(row != 1)
@@ -453,7 +473,7 @@
               dw.DeleteRow(row);
            //}
         }
         if (dw_n=="Party0")
         if (dw_n==L"Party0")
         {
            row=dw.GetRow();
            //if(row != 1)
@@ -465,70 +485,70 @@
      return 1;
   }
   string onpartyadjust(string val)
   xstring onpartyadjust(xstring val)
   {
      xml x = new xml;
      x.setNativePointer(x.CreateInstance());
      xaserverarg arg = new xaserverarg;
      xml x;
      xaserverarg arg;
      arg.setNativePointer(arg.CreateInstance());
      arg.AddArg("content",val);
      arg.AddArg(L"content",val);
      //alert(val);
      //string sguid = xdoc.selectSingleNode("@guid").text;
      string suserid = xaserver::GetUserId();
      string sdate = publiccode::GetCurrentDate();
      //arg.AddArg("sguid",sguid);
      arg.AddArg("suserid",suserid);
      arg.AddArg("sdate",sdate);
      if (url::post("/sale/data/"+GetEntityName(1)+"/pref/partyadjust",arg.GetString(),x) != 1)
      //xstring sguid = xdoc.selectSingleNode(L"@guid").text();
      xstring suserid = xaserver::GetUserId();
      xstring sdate = publiccode::GetCurrentDate();
      //arg.AddArg(L"sguid",sguid);
      arg.AddArg(L"suserid",suserid);
      arg.AddArg(L"sdate",sdate);
      if (xurl::post(L"/sale/data/"+GetEntityName(1)+L"/pref/partyadjust",arg.GetString(),x) != 1)
      {
         alert(x.GetXmlDoc().text);
         alert(x.text());
         return val;
      }else   
      {
         string s = x.GetXml();
         xstring s = x.xml();
      //alert(s);
         return s;
      }
   }
            
   string GetEntityData(int pr)
   xstring GetEntityData(LPARAM pr)
   {
      string val;
      xml x = new xml;
      x.setNativePointer(x.CreateInstance());
      msxml::IXMLDOMDocument xdoc = x.GetXmlDoc();
      msxml::IXMLDOMNodeList nlist = maint::m_configDoc.SelectNodes("//maint/group[@for='dwviev']/dwview[@name !='dw_check' and @name !='dw_supgoods']");
      xstring val;
      xml x ;
      KXMLDOMDocument xdoc = x;
      KXMLDOMNodeList nlist = maint::m_configDoc.selectNodes(L"//maint/group[@for='dwviev']/dwview[@name !='dw_check' and @name !='dw_supgoods']");
      int  index;
      int  nlen = nlist.length;
      int  nlen = nlist.length();
      if(nlen>0)
      {
         for(index=0;index<nlen;index++)
         {
            msxml::IXMLDOMElement e  =  nlist.item(index);
            string sname= e.selectSingleNode("@name").text;
            string stype=e.selectSingleNode("@type").text;
            if (stype=="dwtable")
            KXMLDOMElement e  =  nlist.item(index);
            xstring sname= e.selectSingleNode(L"@name").text();
            xstring stype=e.selectSingleNode(L"@type").text();
            if (stype==L"dwtable")
            {
               xdwtable dw_obj = this.GetControl(sname);
               xdwtable dw_obj = GetControl(sname);
               dw_obj.AcceptText();
               if (index==0)
               {
                  //Address
                  xml xdd = new xml;
                  xdd.setNativePointer(xdd.CreateInstance());
                  string bAddressID = ""+dw_base.GetItemString(1,"bAddressID");
                  if (bAddressID==" ")
                  xml xdd ;
                  xstring bAddressID = L""+dw_base.GetItemString(1,L"bAddressID");
                  if (bAddressID==L" ")
                  {
                     dw_base.SetItemString(1,"bAddressID",publiccode::GetGuid());
                     dw_base.SetItemString(1,"bAddressName","邮寄地址");
                     dw_base.SetItemString(1,"bStatus","1");
                     dw_base.SetItemString(1,"bPrimaryFlag","N");
                     dw_base.SetItemString(1,"bIdentifyAddressFlag","N");
                     dw_base.DwUpdateAllTo(xdd.GetXmlDoc());
                     string bAddress = ""+dw_base.GetItemString(1,"bAddress");
                     if ( bAddress !="")
                        SetAttributeByaddress(xdd,"bAddress","update.new","1");
                     xdoc = xdd.GetXmlDoc();
                     dw_base.SetItemString(1,L"bAddressID",publiccode::GetGuid());
                     dw_base.SetItemString(1,L"bAddressName",L"邮寄地址");
                     dw_base.SetItemString(1,L"bStatus",L"1");
                     dw_base.SetItemString(1,L"bPrimaryFlag",L"N");
                     dw_base.SetItemString(1,L"bIdentifyAddressFlag",L"N");
                     dw_base.DwUpdateAllTo(xdd);
                     xstring bAddress = L""+dw_base.GetItemString(1,L"bAddress");
                     if ( bAddress !=L"")
                        SetAttributeByaddress(xdd,L"bAddress",L"update.new",L"1");
                     KXMLDOMDocument   xdoc = xdd;
                  }
                  else
                     {dw_obj.DwUpdateAllTo(xdoc);
@@ -539,8 +559,8 @@
                  xml__ xchk = new xml__;
                  xchk.setNativePointer(xchk.CreateInstance());
                  dw_obj.DwUpdateAllTo(xchk.GetXmlDoc()); 
                  SetAttributeByaddress(xchk,"item3","update.modify","1");
                  SetAttributeByaddress(xchk,"isdeleted","update.modify","1");
                  SetAttributeByaddress(xchk,L"item3",L"update.modify",L"1");
                  SetAttributeByaddress(xchk,L"isdeleted",L"update.modify",L"1");
                  xdoc = xchk.GetXmlDoc();
               }*/
               else
@@ -548,7 +568,7 @@
            }
            else
            {
               xdwgrid dw_objx = this.GetControl(sname);
               xdwgrid dw_objx = GetControl(sname);
               dw_objx.AcceptText();
               dw_objx.DwUpdateAllTo(xdoc);
            }
@@ -563,13 +583,13 @@
      return "";
      /*xml__ x1 = new xml__;
      x1.setNativePointer(x1.CreateInstance());
      x1.LoadXml("<a/>");
      msxml::IXMLDOMElement ele = x1.GetXmlDoc();
      var root = xdoc.getElementsByTagName("Name").item(0);
      x1.LoadXml(L"<a/>");
      KXMLDOMElement ele = x1.GetXmlDoc();
      var root = xdoc.getElementsByTagName(L"Name").item(0);
      root.appendChild(ele);*/
      val = xdoc.xml ;
      val = xdoc.xml() ;
      //alert(val);
      val = onpartyadjust(xdoc.xml);
      val = onpartyadjust(xdoc.xml());
      //alert(val);
      return val;
   }
@@ -579,88 +599,88 @@
      return 0;
   }
   int ProcessFlowAction0(string comdid, int pr)
   int ProcessFlowAction0(xstring comdid, int pr)
   {
      string action = comdid.mid(comdid.find("action:",0)+7,9999);
      xaserverarg arg = new xaserverarg ;
      arg.setNativePointer(arg.CreateInstance());
      xml x = new xml;
      x.setNativePointer(xml ::CreateInstance());
      xstring action = comdid.mid(comdid.find(L"action:",0)+7,9999);
      xaserverarg& arg = *new xaserverarg;
      xml x ;
      string aurl = "/workflow/query/actioninfo/"+action;
      xstring aurl = L"/workflow/query/actioninfo/"+action;
      if(url::get(aurl, "", x) != 1)
      if(xurl::get(aurl, L"", x) != 1)
         return -1;
      int nlen ;
      int i = 0;
      string name;
      string worknode;
      string how;
      string state;
      msxml::IXMLDOMElement e;
      xstring name;
      xstring worknode;
      xstring how;
      xstring state;
      KXMLDOMElement e;
      //参数要求
      msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().selectNodes("//params/param");
      nlen = nlist.length;
      KXMLDOMNodeList nlist = x.selectNodes(L"//params/param");
      nlen = nlist.length();
      for(i=0;   i<nlen;   i++)
      {
         e = nlist.item(i);
         name = e.selectSingleNode("@name").text;
         how = e.selectSingleNode("@how").text;
         if(how=="EntityID")
         name = e.selectSingleNode(L"@name").text();
         how = e.selectSingleNode(L"@how").text();
         if(how==L"EntityID")
            arg.AddArg(name, GetEntityID(pr));
         else if(how=="Entity" || how == "EntityData")
         else if(how==L"Entity" || how == L"EntityData")
            arg.AddArg(name, GetEntityData(pr));
         //"CHeckAskMsg"
         //"CHeckMsg"
      }
      arg.AddArg("action.entity",GetEntityName(pr));
      arg.AddArg(L"action.entity",GetEntityName(pr));
      //动作
      if (x.GetXmlDoc().selectSingleNode("//view.action[1]"))
      if (x.selectSingleNode(L"//view.action[1]"))
      {
         msxml::IXMLDOMElement n = x.GetXmlDoc().selectSingleNode("//view.action[1]");
         KXMLDOMElement n = x.selectSingleNode(L"//view.action[1]");
         if(n)
         {
            
            name = n.selectSingleNode("@name").text;
            //worknode = n.selectSingleNode("@worknode").text;
            name = n.selectSingleNode(L"@name").text();
            //worknode = n.selectSingleNode(L"@worknode").text();
            worknode = GetEntityWorkNode(pr,name);
            arg.AddArg("do",name);
            arg.AddArg(L"do",name);
            if(worknode !="")
            if(worknode !=L"")
            {
               openUrl(worknode,arg);
               openUrl(worknode,&arg);
            }
            else
            {
               alert("Warn: Please configure worknode for action "+ name +".");
               alert(L"Warn: Please configure worknode for action "+ name +L".");
               return 1;
            }
         } 
      }
      else
      {
         //url::post("/workflow/action/Supplier/bill.update",arg.GetString(),x);
         xml x1 = new xml;
         x1.setNativePointer(x1.CreateInstance());
         //if (url::post("/workflow/action/"+GetEntityName(pr)+"/"+action,arg.GetString(),x1) != 1)
         if(url::post("/sale/data/SupplierV3/entity/owner/save", arg.GetString(),x)!=1)
         //url::post(L"/workflow/action/Supplier/bill.update",arg.GetString(),x);
         xml x1 ;
         //if (url::post(L"/workflow/action/"+GetEntityName(pr)+L"/"+action,arg.GetString(),x1) != 1)
         if(xurl::post(L"/sale/data/SupplierV3/entity/owner/save", arg.GetString(),x)!=1)
         {
            if (x1.GetXmlDoc())
            if (x1.xml())
            {
               string error = x1.GetXmlDoc().text;
               xstring error = x1.text();
               //alert(error);
            }
         }            
         else
         {
            //alert(x1.GetXml());
            if(x1.GetXmlDoc().selectSingleNode("error"))
            if(x1.selectSingleNode(L"error"))
            {
               alert("保存出错2!");
               alert(L"保存出错2!");
               return 0;            
            }
         }
         win32::MessageBox(GetHWND(),"保存成功!","提示",0);
         MessageBoxW(GetHWND(),L"保存成功!",L"提示",0);
         dw_base.ResetUpdateStatus();
         dw_kpinfo.ResetUpdateStatus();
         dw_visitp.ResetUpdateStatus();
@@ -671,27 +691,27 @@
         
   int r1()
   {
         msxml::IXMLDOMNodeList nlist = maint::m_configDoc.SelectNodes("//maint/group[@for='dwviev']/dwview");
         KXMLDOMNodeList nlist = maint::m_configDoc.selectNodes(L"//maint/group[@for='dwviev']/dwview");
         int  index;
         int  nlen = nlist.length;
         int  nlen = nlist.length();
         if(nlen>0)
         {
            for(index=0;index<nlen;index++)
            {
               msxml::IXMLDOMElement e  =  nlist.item(index);
               string sname= e.selectSingleNode("@name").text;
               string stype=e.selectSingleNode("@type").text;
               if (stype=="dwtable")
               KXMLDOMElement e  =  nlist.item(index);
               xstring sname= e.selectSingleNode(L"@name").text();
               xstring stype=e.selectSingleNode(L"@type").text();
               if (stype==L"dwtable")
               {
                  xdwtable dw_obj = this.GetControl(sname);
                  xdwtable dw_obj = GetControl(sname);
               
                  xaserverarg arg = new xaserverarg;
                  arg.setNativePointer(arg.CreateInstance());
                  arg.AddArg("EntityID", this.GetEntityID(1));
                  xaserverarg& arg = *new xaserverarg;
                  arg.AddArg(L"EntityID", GetEntityID(1));
               
                  xml x1 = new xml;
                  x1.setNativePointer(xml ::CreateInstance());
                  string dataUrl = "/sale/data/"+GetEntityName(1)+"/entity/maint" ;
                  xml x1 ;
                  xstring dataUrl = L"/sale/data/"+GetEntityName(1)+L"/entity/maint" ;
                  getUrl(dataUrl,arg.GetString(),x1);
                  dw_obj.Retrieve(x1);
                  
@@ -705,26 +725,26 @@
   
   int r2()
   {      
         xml x = new xml;
         x.setNativePointer(x.CreateInstance());
         msxml::IXMLDOMDocument xdoc = x.GetXmlDoc();
         xml x;
         KXMLDOMDocument xdoc = x;
      
         //dw_base.DwUpdateAllTo(xdoc);
         msxml::IXMLDOMNodeList nlist = maint::m_configDoc.SelectNodes("//maint/group[@for='dwviev']/dwview");
         KXMLDOMNodeList nlist = maint::m_configDoc.selectNodes(L"//maint/group[@for='dwviev']/dwview");
         int  index;
         int  nlen = nlist.length;
         int  nlen = nlist.length();
         if(nlen>0)
         {
            for(index=0;index<nlen;index++)
            {
               msxml::IXMLDOMElement e  =  nlist.item(index);
               string sname= e.selectSingleNode("@name").text;
               string stype=e.selectSingleNode("@type").text;
               if (stype=="dwtable")
               KXMLDOMElement e  =  nlist.item(index);
               xstring sname= e.selectSingleNode(L"@name").text();
               xstring stype=e.selectSingleNode(L"@type").text();
               if (stype==L"dwtable")
               {
                  xdwtable dw_obj = this.GetControl(sname);
                  xdwtable dw_obj = GetControl(sname);
                  dw_obj.DwUpdateAllToDiff(xdoc);
                  m_diffstr = xdoc.xml;
                  m_diffstr = xdoc.xml();
                  //alert(m_diffstr);
                  break;
               }
@@ -736,26 +756,26 @@
   
   int r3()
   {
         if(m_diffstr=="") return 1;
         xml x = new xml;
         x.setNativePointer(x.CreateInstance());
         x.LoadXml(m_diffstr);
         msxml::IXMLDOMDocument xdoc = x.GetXmlDoc();
         if(m_diffstr==L"") return 1;
         xml x ;
         x.loadXML(m_diffstr);
         KXMLDOMDocument xdoc = x;
      
         //dw_base.DwUpdateAllTo(xdoc);
         msxml::IXMLDOMNodeList nlist = maint::m_configDoc.SelectNodes("//maint/group[@for='dwviev']/dwview");
         KXMLDOMNodeList nlist = maint::m_configDoc.selectNodes(L"//maint/group[@for='dwviev']/dwview");
         int  index;
         int  nlen = nlist.length;
         int  nlen = nlist.length();
         if(nlen>0)
         {
            for(index=0;index<nlen;index++)
            {
               msxml::IXMLDOMElement e  =  nlist.item(index);
               string sname= e.selectSingleNode("@name").text;
               string stype=e.selectSingleNode("@type").text;
               if (stype=="dwtable")
               KXMLDOMElement e  =  nlist.item(index);
               xstring sname= e.selectSingleNode(L"@name").text();
               xstring stype=e.selectSingleNode(L"@type").text();
               if (stype==L"dwtable")
               {
                  xdwtable dw_obj = this.GetControl(sname);
                  xdwtable dw_obj = GetControl(sname);
                  dw_obj.RetrieveDiff(xdoc);
                  dw_obj.Redraw();
                  break;
@@ -768,9 +788,9 @@
               
   int test()
   {
      xml x = new xml;
      x.setNativePointer(x.CreateInstance());
      dw_kpinfo.DwUpdateAllTo(x.GetXmlDoc());
      xml x ;
      dw_kpinfo.DwUpdateAllTo(x);
      //dw_visitp.dwUpdateAllTo(x.GetXmlDoc());
      //dw_kpinfo.ClearAdvanceString(1,1);
      //dw_kpinfo.ClearNoteString(1,1);
@@ -780,13 +800,13 @@
      //dw_kpinfo.ExpandMarginRow(2,1);
      //dw_kpinfo.ExpandRow(2,3);
      //dw_kpinfo.GetDwType(); ???
      //string s = dw_kpinfo.GetDwXPath(); //Supplier
      //msxml::IXMLDOMElement e = dw_kpinfo.GetElement(); //alert(e.xml); <xcell state="run" name="dw_kpinfo"/>
      //string s = dw_kpinfo.GetGuid(1);
      //string s = dw_kpinfo.GetHtml(); ???
      //xstring s = dw_kpinfo.GetDwXPath(); //Supplier
      //KXMLDOMElement e = dw_kpinfo.GetElement(); //alert(e.xml); <xcell state=L"run" name=L"dw_kpinfo"/>
      //xstring s = dw_kpinfo.GetGuid(1);
      //xstring s = dw_kpinfo.GetHtml(); ???
      //int i = dw_kpinfo.GetId();
      //int i = dw_kpinfo.GetXNode();
      //dw_kpinfo.SetGuid(1,"5CF56D30-C02C-4CC0-971B-57894236816A");
      //dw_kpinfo.SetGuid(1,L"5CF56D30-C02C-4CC0-971B-57894236816A");
   }
   int OnMoveup()
@@ -796,21 +816,21 @@
      if (!m_layer) return 0;            
      int h=m_layer.GetSheetIndex();
      int nindex = h+1;
      msxml::IXMLDOMElement n = maint::m_configDoc.selectSingleNode("//maint/group[@for='dwviev']/dwview["+nindex.toString()+"]");
      string sname= n.selectSingleNode("@name").text;
      string stype=n.selectSingleNode("@type").text;
      if (stype=="dwtable")
      KXMLDOMElement n = maint::m_configDoc.selectSingleNode(L"//maint/group[@for='dwviev']/dwview["+xstring(nindex)+L"]");
      xstring sname= n.selectSingleNode(L"@name").text();
      xstring stype=n.selectSingleNode(L"@type").text();
      if (stype==L"dwtable")
      {
         xdwtable dw_obj = this.GetControl(sname);
         xdwtable dw_obj = GetControl(sname);
         xdwtable dw = dw_obj.GetCurTable();
         string dw_n=dw.GetDwName();
         if(dw_n=="item3")
         xstring dw_n=dw.GetDwName();
         if(dw_n==L"item3")
         {
            int row=dw.GetRow();
            if (row == 1) row = 0;
            int crow = dw.InsertRow(row);
            //dw.
            //dw.SetItemString(crow,"Status","Y");
            //dw.SetItemString(crow,L"Status",L"Y");
         }
      }
      return 1;
@@ -822,26 +842,26 @@
   
   int xxx()
   {
      //msxml::IXMLDOMElement xframeElement =  GetElement();
      //msxml::IXMLDOMNode xpage = xframeElement.selectSingleNode("//xpage");
      //KXMLDOMElement xframeElement =  GetElement();
      //KXMLDOMNode xpage = xframeElement.selectSingleNode(L"//xpage");
      //alert(xframeElement.xml);               
      /*string xfNodeAgentArea  = "layers";
      /*xstring xfNodeAgentArea  = L"layers";
      xnode__ anode = GetAgentNode(xfNodeAgentArea);
      msxml::IXMLDOMElement xframeElement =  GetElement();
      KXMLDOMElement xframeElement =  GetElement();
      alert(anode.GetXml());
      msxml::IXMLDOMNode layers = xframeElement.selectSingleNode("//layers");
      msxml::IXMLDOMNodeList nlist;
      KXMLDOMNode layers = xframeElement.selectSingleNode(L"//layers");
      KXMLDOMNodeList nlist;
      int  index;
      int  nlen;
      msxml::IXMLDOMElement ele;
      KXMLDOMElement ele;
      if(layers)
      {
         nlist = layers.SelectNodes(".//layer");
         nlen = nlist.length;
      alert("nlen=",nlen.toString());
         nlist = layers.SelectNodes(L".//layer");
         nlen = nlist.length();
      alert(L"nlen=L",nlen.toString());
      }
      //string tools;
      //xstring tools;
      //SetAgentNodeContent(anode, tools);*/
      return 1;
   }
@@ -850,24 +870,24 @@
   {
      int rec =OnPreSave();
      if (rec== -1)   return 0;
      ProcessFlowAction0("action:bill.update",1);
      ProcessFlowAction0(L"action:bill.update",1);
      return 1;
   }
   int PreOnCmdDispatch(string comdid)
   int PreOnCmdDispatch(xstring comdid)
   {
      if(comdid=="action:xxx") return xxx();
      if(comdid=="retrieve") return r1();
      if(comdid=="retrievediff") return r3();
      if(comdid=="updatediff") return r2();
      if(comdid=="test") return test();
      if(comdid==L"action:xxx") return xxx();
      if(comdid==L"retrieve") return r1();
      if(comdid==L"retrievediff") return r3();
      if(comdid==L"updatediff") return r2();
      if(comdid==L"test") return test();
            
      //<action id="bill.update" caption="保存"  scene="maint"/>
      if(comdid.find("action:bill.update",0)>=0)
      //<action id=L"bill.update" caption=L"保存"  scene=L"maint"/>
      if(comdid.find(L"action:bill.update",0)>=0)
      {
         string suserid = xaserver::GetUserId();
         xstring suserid = xaserver::GetUserId();
         PUser pp = publiccode::GetUser(suserid);
         string userno = pp.no;
         if(userno !="admin")
         xstring userno = pp.no;
         if(userno !=L"admin")
         {
            int rec =OnPreSave();
            if (rec== -1)   return 0;//返回0——不在执行以下代码;返回其他——执行以下代码。
@@ -875,19 +895,21 @@
         ProcessFlowAction0(comdid,1);
         return 1;
      }
      if(comdid.find("action:bill.addrow",0)>=0) OnAddRow();
      if(comdid.find("action:bill.insertrow",0)>=0) OnInsertRow();
      if(comdid.find("action:bill.deleterow",0)>=0) OnDeleteRow();
      if(comdid.find("action:bill.moveup",0)>=0) OnMoveup();
      if(comdid.find("action:bill.movedown",0)>=0) OnMovedown();
      if(comdid.find(L"action:bill.addrow",0)>=0) OnAddRow();
      if(comdid.find(L"action:bill.insertrow",0)>=0) OnInsertRow();
      if(comdid.find(L"action:bill.deleterow",0)>=0) OnDeleteRow();
      if(comdid.find(L"action:bill.moveup",0)>=0) OnMoveup();
      if(comdid.find(L"action:bill.movedown",0)>=0) OnMovedown();
      
      return 1;
   }
   int OnDoubleClicked(ref TNotifyEvent evt,int p)
   int OnDoubleClicked(TEvent* evt,int p)
   {
      ref DWNMHDR  hdr = evt.pnmh;
      int row = hdr.row;
      DWNMHDR* hdr = (DWNMHDR*)evt->notify.pnmh;
      int row = hdr->row;
      /*if(row < 1 || row > list::dw_list.GetRowCount()) 
         return 1;
      
@@ -896,186 +918,193 @@
      int i;
      for (i=0; i < s; i++){
         combobox cb = new combobox;
         cb.setNativePointer(this.GetControl("value"+i.ToString()));
         cb.setNativePointer(this.GetControl(L"value"+i.ToString()));
         if(hwnd == cb.GetId())
            break;
      }*/               
      return 1;
   }
   
   int OnItemChangedkp(ref TNotifyEvent evt,int p)
   int OnItemChangedkp(TEvent* evt,int p)
   {
      ref DWNMHDR  hdr = evt.pnmh;
      string colname=hdr.colname;
      string coldata = hdr.data;
      int row = hdr.row;
      DWNMHDR* hdr = (DWNMHDR*)evt->notify.pnmh;
      xstring colname = hdr->colname;
      xstring value = hdr->data;
      int row = hdr->row;
      
      xdwtable dw = dw_kpinfo.FindDwTable("item3",0);
      xdwtable dw = dw_kpinfo.FindDwTable(L"item3",0);
      if (dw)
      {
         row=dw.GetRow();
         string sdate = publiccode::GetCurrentDate();
         dw.SetItemString(row,"ModifyDate",sdate);
         xstring sdate = publiccode::GetCurrentDate();
         dw.SetItemString(row,L"ModifyDate",sdate);
      }
      
   }
   
   int OnItemChanged3(ref TNotifyEvent evt,int p)
   int OnItemChanged3(TEvent* evt,int p)
   {
      ref DWNMHDR  hdr = evt.pnmh;
      string colname=hdr.colname;
      string coldata = hdr.data;
      int row = hdr.row;
      if(colname=="DeveloperID")
      DWNMHDR* hdr = (DWNMHDR*)evt->notify.pnmh;
      xstring colname = hdr->colname;
      xstring coldata = hdr->data;
      xstring value = hdr->data;
      int row = hdr->row;
      if(colname==L"DeveloperID")
      {
         xml x = new xml;
         x.setNativePointer(xml ::CreateInstance());
         xaserverarg arg = new xaserverarg;
         xaserverarg arg ;
         arg.setNativePointer(arg.CreateInstance());
         arg.AddArg("guid",coldata);
         if (url::get("/sale/data/"+GetEntityName(1)+"/pref/getAssignment",arg.GetString(),x) == 1)
         arg.AddArg(L"guid",coldata);
         if (xurl::get(L"/sale/data/"+GetEntityName(1)+L"/pref/getAssignment",arg.GetString(),x) == 1)
         {
            msxml::IXMLDOMElement e=x.GetXmlDoc().documentElement;
            string sOrgID = e.selectSingleNode("OrgID").text;
            string sOrgName = e.selectSingleNode("OrgName").text;
            dw_basegy.SetItemString(1,"devOrgID",sOrgID);
            dw_basegy.SetItemDisplayString(1,"devOrgID",sOrgName);
            KXMLDOMElement e=x.documentElement();
            xstring sOrgID = e.selectSingleNode(L"OrgID").text();
            xstring sOrgName = e.selectSingleNode(L"OrgName").text();
            dw_basegy.SetItemString(1,L"devOrgID",sOrgID);
            dw_basegy.SetItemDisplayString(1,L"devOrgID",sOrgName);
         }
      }
      if(colname=="CreatorID")
      if(colname==L"CreatorID")
      {
         xml x2 = new xml;
         x2.setNativePointer(xml ::CreateInstance());
         xaserverarg arg2 = new xaserverarg;
         xml x2 ;
         xaserverarg arg2 ;
         arg2.setNativePointer(arg2.CreateInstance());
         arg2.AddArg("guid",coldata);
         if (url::get("/sale/data/"+GetEntityName(1)+"/pref/getAssignment",arg2.GetString(),x2) == 1)
         arg2.AddArg(L"guid",coldata);
         if (xurl::get(L"/sale/data/"+GetEntityName(1)+L"/pref/getAssignment",arg2.GetString(),x2) == 1)
         {
            msxml::IXMLDOMElement e2=x2.GetXmlDoc().documentElement;
            string sOrgID2 = e2.selectSingleNode("OrgID").text;
            string sOrgName2 = e2.selectSingleNode("OrgName").text;
            dw_basegy.SetItemString(1,"OrgID",sOrgID2);
            dw_basegy.SetItemDisplayString(1,"OrgID",sOrgName2);
            KXMLDOMElement e2=x2.documentElement();
            xstring sOrgID2 = e2.selectSingleNode(L"OrgID").text();
            xstring sOrgName2 = e2.selectSingleNode(L"OrgName").text();
            dw_basegy.SetItemString(1,L"OrgID",sOrgID2);
            dw_basegy.SetItemDisplayString(1,L"OrgID",sOrgName2);
         }
      }
      return 1;
   }
      
   int OnItemChanged(ref TNotifyEvent evt,int p)
   int OnItemChanged(TEvent* evt, int p)
   {
      ref DWNMHDR  hdr = evt.pnmh;
      string colname=hdr.colname;
      string coldata = hdr.data;
      int row = hdr.row;
      if(colname=="DeveloperID")
      DWNMHDR* hdr = (DWNMHDR*)evt->notify.pnmh;
      xstring colname = hdr->colname;
      xstring coldata = hdr->data;
      xstring value = hdr->data;
      int row = hdr->row;
      if(colname==L"DeveloperID")
      {
         xml x = new xml;
         x.setNativePointer(xml ::CreateInstance());
         xaserverarg arg = new xaserverarg;
         xml x ;
         xaserverarg arg;
         arg.setNativePointer(arg.CreateInstance());
         arg.AddArg("guid",coldata);
         if (url::get("/sale/data/"+GetEntityName(1)+"/pref/getAssignment",arg.GetString(),x) == 1)
         arg.AddArg(L"guid",coldata);
         if (xurl::get(L"/sale/data/"+GetEntityName(1)+L"/pref/getAssignment",arg.GetString(),x) == 1)
         {
            msxml::IXMLDOMElement e=x.GetXmlDoc().documentElement;
            string sOrgID = e.selectSingleNode("OrgID").text;
            string sOrgName = e.selectSingleNode("OrgName").text;
            dw_base.SetItemString(1,"devOrgID",sOrgID);
            dw_base.SetItemDisplayString(1,"devOrgID",sOrgName);
            KXMLDOMElement e=x.documentElement();
            xstring sOrgID = e.selectSingleNode(L"OrgID").text();
            xstring sOrgName = e.selectSingleNode(L"OrgName").text();
            dw_base.SetItemString(1,L"devOrgID",sOrgID);
            dw_base.SetItemDisplayString(1,L"devOrgID",sOrgName);
         }
      }
      if(colname=="CreatorID")
      if(colname==L"CreatorID")
      {
         xml x2 = new xml;
         x2.setNativePointer(xml ::CreateInstance());
         xaserverarg arg2 = new xaserverarg;
         xml x2;
         xaserverarg arg2 ;
         arg2.setNativePointer(arg2.CreateInstance());
         arg2.AddArg("guid",coldata);
         if (url::get("/sale/data/"+GetEntityName(1)+"/pref/getAssignment",arg2.GetString(),x2) == 1)
         arg2.AddArg(L"guid",coldata);
         if (xurl::get(L"/sale/data/"+GetEntityName(1)+L"/pref/getAssignment",arg2.GetString(),x2) == 1)
         {
            msxml::IXMLDOMElement e2=x2.GetXmlDoc().documentElement;
            string sOrgID2 = e2.selectSingleNode("OrgID").text;
            string sOrgName2 = e2.selectSingleNode("OrgName").text;
            dw_base.SetItemString(1,"OrgID",sOrgID2);
            dw_base.SetItemDisplayString(1,"OrgID",sOrgName2);
            KXMLDOMElement e2=x2.documentElement();
            xstring sOrgID2 = e2.selectSingleNode(L"OrgID").text();
            xstring sOrgName2 = e2.selectSingleNode(L"OrgName").text();
            dw_base.SetItemString(1,L"OrgID",sOrgID2);
            dw_base.SetItemDisplayString(1,L"OrgID",sOrgName2);
         }
      }
      if(colname=="isdeleted")
      if(colname==L"isdeleted")
      {
         //xml xchk = new xml;
         //xchk.setNativePointer(xchk.CreateInstance());      
         //var xdoc = xchk.GetXmlDoc();
         // dw_kpinfo.DwUpdateAllTo(xdoc);
         //SetAttributeByxml(xchk,"isdeleted","update.modify","1");
         //dw_kpinfo.SetColumnProp("isdeleted","update.modify","1");
         //SetAttributeByxml(xchk,L"isdeleted",L"update.modify",L"1");
         //dw_kpinfo.SetColumnProp(L"isdeleted",L"update.modify",L"1");
         //xdwtable dw = new xdwtable;
         //dw.setNativePointer(dw_kpinfo.FindDwTable("item3",0));
         //dw.SetItemString(row,"isdeleted",coldata);
         //dw.setNativePointer(dw_kpinfo.FindDwTable(L"item3",0));
         //dw.SetItemString(row,L"isdeleted",coldata);
      }
      if(colname == "ProvinceCode" || colname == "City" || colname == "District")
      if(colname == L"ProvinceCode" || colname == L"City" || colname == L"District")
      {
         if(colname == "ProvinceCode")
         if(colname == L"ProvinceCode")
         {
            dw_base.SetItemString(row,"City","");
            dw_base.SetItemString(row,"District","");
            dw_base.SetItemDisplayString(row,"City","");
            dw_base.SetItemDisplayString(row,"District","");
            dw_base.SetItemString(row,L"City",L"");
            dw_base.SetItemString(row,L"District",L"");
            dw_base.SetItemDisplayString(row,L"City",L"");
            dw_base.SetItemDisplayString(row,L"District",L"");
         }
         if(colname == "City")
         if(colname == L"City")
         {
            dw_base.SetItemString(row,"District","");
            dw_base.SetItemDisplayString(row,"District","");
            dw_base.SetItemString(row,L"District",L"");
            dw_base.SetItemDisplayString(row,L"District",L"");
         }
         string provinceCode = dw_base.GetItemDisplayString(row,"ProvinceCode");
         string city = dw_base.GetItemDisplayString(row,"City");
         string district = dw_base.GetItemDisplayString(row,"District");
         dw_base.SetItemString(row,"Address",provinceCode+city+district);
         dw_base.SetItemString(row,"bAddress",provinceCode+city+district);
         xstring provinceCode = dw_base.GetItemDisplayString(row,L"ProvinceCode");
         xstring city = dw_base.GetItemDisplayString(row,L"City");
         xstring district = dw_base.GetItemDisplayString(row,L"District");
         dw_base.SetItemString(row,L"Address",provinceCode+city+district);
         dw_base.SetItemString(row,L"bAddress",provinceCode+city+district);
      }
      if(colname == "Address")
      if(colname == L"Address")
      {
         dw_base.SetItemString(row,"bAddress",dw_base.GetItemString(1,"Address"));
         dw_base.SetItemString(row,L"bAddress",dw_base.GetItemString(1,L"Address"));
      }
      xdwtable dw = dw_base.FindDwTable("Supplier",0);
      xdwtable dw = dw_base.FindDwTable(L"Supplier",0);
      if (dw)
      {
         string suserid = xaserver::GetUserId();//publiccode::GetUserInfo().id;
         string susername = publiccode::GetUser(suserid).name;
         string sdate = publiccode::GetCurrentDate();
         dw.SetItemString(1,"ModifierID",suserid);//Party
         dw.SetItemDisplayString(1,"ModifierID",susername);//Party
         dw.SetItemString(1,"ModifyDate",sdate);
         xstring suserid = xaserver::GetUserId();//publiccode::GetUserInfo().id;
         xstring susername = publiccode::GetUser(suserid).name;
         xstring sdate = publiccode::GetCurrentDate();
         dw.SetItemString(1,L"ModifierID",suserid);//Party
         dw.SetItemDisplayString(1,L"ModifierID",susername);//Party
         dw.SetItemString(1,L"ModifyDate",sdate);
      }
      
      return 1;
   }
         
   //---------
   int UpLoad(string name)
   int UpLoad(xstring name)
   {
      string str = name.mid(0,2);
      xstring str = name.mid(0,2);
      str = str.upper();
      //alert(str);
      int ret1 = xaserver::Upload("supplier"+str, name+".jpg", this.GetHWND(),"",false);
      int ret1 = xaserver::Upload(L"supplier"+str, name+L".jpg", GetHWND(),L"",false);
      //alert(ret1);
      return ret1;
   }                           
   
   int OnkpItemClick(ref TNotifyEvent evt,int p)
   int OnkpItemClick(TEvent* evt, int p)
   {
      xdwtable dw = dw_kpinfo.FindDwTable("Party",0);
      xdwtable dw = dw_kpinfo.FindDwTable(L"Party",0);
      /*xdwtable__ dw1 = new xdwtable__;
      dw1.setNativePointer(dw_base.FindDwTable("item3",0));   */
      ref DWNMHDR  hdr = evt.pnmh;
      string value = hdr.data;
      dw1.setNativePointer(dw_base.FindDwTable(L"item3",0));   */
      DWNMHDR* hdr = (DWNMHDR*)evt->notify.pnmh;
      xstring value = hdr->data;
      int row = dw.GetRow();// hdr.row;
      string xrow = row.toString();
      xaserverarg arg=new xaserverarg;
      arg.setNativePointer(arg.CreateInstance());
      xstring xrow = xstring(row);
      xaserverarg& arg=*new xaserverarg;
      
      if(value == "上传图片")
      if(value == L"上传图片")
      {
         string strguid = publiccode::GetGuid();
         xstring strguid = publiccode::GetGuid();
         //alert(strguid);
         int ret1 =UpLoad(strguid);
         if(ret1  == -1)
@@ -1083,59 +1112,59 @@
         
         if(ret1  == 0)
         {
            alert("上传图片失败");
            alert(L"上传图片失败");
            return -1;
         }
         else
         {   
            alert("上传图片成功");
            string strimage=dw.GetItemString(row,"ImageList1");
            alert(L"上传图片成功");
            xstring strimage=dw.GetItemString(row,L"ImageList1");
            //alert(strimage);               
            if(strimage=="")
               strimage="<ImageList></ImageList>";
            xml y=new xml;
            y.setNativePointer(xml::CreateInstance());
            y.LoadXml(strimage);
            if(strimage==L"")
               strimage=L"<ImageList></ImageList>";
            xml y;
            y.loadXML(strimage);
            msxml::IXMLDOMElement ele= y.GetXmlDoc().documentElement;
            KXMLDOMElement ele= y.documentElement();
            xml x=new xml;
            x.setNativePointer(xml::CreateInstance());
            string xx = "<ImageList><image>"+strguid+".jpg</image></ImageList>";
            x.LoadXml(xx);
            msxml::IXMLDOMElement e=  x.GetXmlDoc().selectSingleNode("//image");
            xml x;
            xstring xx = L"<ImageList><image>"+strguid+L".jpg</image></ImageList>";
            x.loadXML(xx);
            KXMLDOMElement e=  x.selectSingleNode(L"//image");
            ele.appendChild(e);               
            dw.SetItemString(row,"ImageList1",ele.xml);
            dw.SetItemString(row,L"ImageList1",ele.xml());
            //dw.Redraw();
         }   
      }
      if(value == "查看")
      if(value == L"查看")
      {      
         arg.AddArg("src",dw.GetItemString(row,"ImageList1"));
         int pa = arg.getNativePointer();
         openUrl("/sale/view/"+GetEntityName(1)+"/xpage/supplierattachment/picture", pa);
         //alert(arg.GetArgString("src"));
         dw.SetItemString(row,"ImageList1",arg.GetArgString("src"));
         arg.AddArg(L"src",dw.GetItemString(row,L"ImageList1"));
         openUrl(L"/sale/view/" + GetEntityName(1) + L"/xpage/supplierattachment/picture", &arg);
         //alert(arg.GetArgString(L"src"));
         dw.SetItemString(row,L"ImageList1",arg.GetArgString(L"src"));
      }
      return 1;
   }
   int OnItemClick(ref TNotifyEvent evt,int p)
   int OnItemClick(TEvent* evt, int p)
   {
      ref DWNMHDR  hdr1 = trust(evt.pnmh as ref DWNMHDR);
      string colname1= hdr1.colname;
      xstring colname1= hdr1.colname;
      
      ref DWNMHDR  hdr = evt.pnmh;
      string value = hdr.data;
      DWNMHDR* hdr = (DWNMHDR*)evt->notify.pnmh;
      xstring value = hdr->data;
      //alert(value);
      //xdwtable dw = dw_base.FindDwTable("item2",0);
      //xdwtable dw1 = dw_base.FindDwTable("item3",0);
      xaserverarg arg=new xaserverarg;
      arg.setNativePointer(arg.CreateInstance());
      //xdwtable dw = dw_base.FindDwTable(L"item2",0);
      //xdwtable dw1 = dw_base.FindDwTable(L"item3",0);
      xaserverarg& arg=*new xaserverarg;
      
      /*if(value == "上传附件")
      /*if(value == L"上传附件")
      {
         string strguid = publiccode::GetGuid();
         xstring strguid = publiccode::GetGuid();
         //alert(strguid);
         int ret1 = UpLoad(strguid);
         if(ret1  == -1)
@@ -1143,110 +1172,110 @@
         
         if(ret1  == 0)
         {
            alert("上传附件失败");
            alert(L"上传附件失败");
            return -1;
         }
         else
         {   
            alert("上传附件成功");
            string strimage=dw_base.GetItemString(1,"ImageList1");
            alert(L"上传附件成功");
            xstring strimage=dw_base.GetItemString(1,L"ImageList1");
            //alert(strimage);               
            if(strimage=="")
               strimage="<ImageList></ImageList>";
            if(strimage==L"")
               strimage=L"<ImageList></ImageList>";
            xml y=new xml;
            y.setNativePointer(xml::CreateInstance());
            y.LoadXml(strimage);
            msxml::IXMLDOMElement ele= y.GetXmlDoc().documentElement;
            KXMLDOMElement ele= y.GetXmlDoc().documentElement;
         
            xml x=new xml;
            x.setNativePointer(xml::CreateInstance());
            string xx = "<ImageList><image>"+strguid+".jpg</image></ImageList>";
            xstring xx = L"<ImageList><image>"+strguid+L".jpg</image></ImageList>";
            x.LoadXml(xx);
            msxml::IXMLDOMElement e=  x.GetXmlDoc().selectSingleNode("//image");
            KXMLDOMElement e=  x.GetXmlDoc().selectSingleNode(L"//image");
            ele.appendChild(e);               
            dw_base.SetItemString(1,"ImageList1",ele.xml);
            dw_base.SetItemString(1,L"ImageList1",ele.xml);
            dw_base.Redraw();
            //alert(ele.xml);
         }   
      }
      if(value == "查看")
      if(value == L"查看")
      {   
         arg.AddArg("src",dw_base.GetItemString(1,"ImageList1"));
         //alert(dw_base.GetItemString(1,"ImageList1"));
         arg.AddArg(L"src",dw_base.GetItemString(1,L"ImageList1"));
         //alert(dw_base.GetItemString(1,L"ImageList1"));
         int pa = arg.getNativePointer();
         //alert(GetEntityName(1));
         openUrl("/sale/view/"+GetEntityName(1)+"/xpage/supplierattachment/picture", pa);
         //alert(arg.GetArgString("src"));
         openUrl(L"/sale/view/"+GetEntityName(1)+L"/xpage/supplierattachment/picture", pa);
         //alert(arg.GetArgString(L"src"));
         arg.setNativePointer(pa);   
         dw_base.SetItemString(1,"ImageList1",arg.GetArgString("src"));
         dw_base.SetItemString(1,L"ImageList1",arg.GetArgString(L"src"));
      }*/
      /*else if(value == "产品信息")
      /*else if(value == L"产品信息")
      {               
         int start=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex("MainProducts"));
         int start=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex(L"MainProducts"));
         dw_base.ExpandCellRow(start,start + dw.GetRowCount() +1);
      }
      else if(value == "设备产能")
      else if(value == L"设备产能")
      {   
         int start1=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex("MainProducts"));
         int begin=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex("DeveloperID"));
         int start1=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex(L"MainProducts"));
         int begin=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex(L"DeveloperID"));
         dw_base.ExpandCellRow(start1 + dw.GetRowCount() +3,begin -2);
         //dw_base.ExpandMarginRow(-22,-20);
      }*/
      if(value == "供应商资料附件")
      if(value == L"供应商资料附件")
      {   
         arg.AddArg("entityid",dw_base.GetGuid(1));
         arg.AddArg("ApplyStatus",dw_base.GetItemString(1,"ApplyStatus"));
         int p3=cast(arg as int) ;
         OpenWindow("dev:xpage[maint.Document.Supplier.v3.vx]", p3);
         arg.AddArg(L"entityid",dw_base.GetGuid(1));
         arg.AddArg(L"ApplyStatus",dw_base.GetItemString(1,L"ApplyStatus"));
         OpenWindow(L"dev:xpage[maint.Document.Supplier.v3.vx]", (LPARAM)&arg);
      }   
      if(value == "验厂报告附件")
      if(value == L"验厂报告附件")
      {   
         arg.AddArg("entityid",dw_base.GetGuid(1));
         arg.AddArg("ApplyStatus",dw_base.GetItemString(1,"ApplyStatus"));
         int p7=cast(arg as int) ;
         OpenWindow("dev:xpage[maint.Document.SupplierEx.v3.vx]", p7);
         arg.AddArg(L"entityid",dw_base.GetGuid(1));
         arg.AddArg(L"ApplyStatus",dw_base.GetItemString(1,L"ApplyStatus"));
         OpenWindow(L"dev:xpage[maint.Document.SupplierEx.v3.vx]", (LPARAM)&arg);
      }
      else if(value == "合作信息")
      else if(value == L"合作信息")
      {   
         int start2=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex("Status"));
         int start2=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex(L"Status"));
         dw_base.ExpandCellRow(start2,start2 +1);
         //dw_base.ExpandMarginRow(-22,-20);
      }
      if (colname1 == "ThirdPartyReport")
      if (colname1 == L"ThirdPartyReport")
         {
            xaserverarg arg1 = new xaserverarg;
            xaserverarg& arg1 = *new xaserverarg;
            arg1.setNativePointer(arg.CreateInstance());
            int p2=cast(arg1 as int) ;
            dw_base.SetItemString(1,"ThirdPartyReport","");
            OpenWindow("dev:xpage[Inspection.Supplie.vx]", p2);
            string str1 = arg1.GetArgString("ThirdPartyReport");
            if(str1 != ""){
               dw_base.SetItemString(1,"ThirdPartyReport",str1);
            dw_base.SetItemString(1,L"ThirdPartyReport",L"");
            OpenWindow(L"dev:xpage[Inspection.Supplie.vx]", (LPARAM)&arg1);
            xstring str1 = arg1.GetArgString(L"ThirdPartyReport");
            if(str1 != L""){
               dw_base.SetItemString(1,L"ThirdPartyReport",str1);
               dw_base.Redraw();
            }
         }
      if (colname1 == "PayType")
      if (colname1 == L"PayType")
         {
            xaserverarg arg2 = new xaserverarg;
            xaserverarg& arg2 =* new xaserverarg;
            arg2.setNativePointer(arg.CreateInstance());
            int p1=cast(arg2 as int) ;
            OpenWindow("dev:xpage[paymen.Supplier.vx]", p1);
            string str = arg2.GetArgString("PayType");
            if(str != ""){
               dw_base.SetItemString(1,"PayType",str);
            OpenWindow(L"dev:xpage[paymen.Supplier.vx]", (LPARAM)&arg2);
            xstring str = arg2.GetArgString(L"PayType");
            if(str != L""){
               dw_base.SetItemString(1,L"PayType",str);
               dw_base.Redraw();
            }
         }
      return 1;
   }         
   
   int OnSheetChanged(ref TNotifyEvent evt,int p)
   int OnSheetChanged(TEvent* evt, int p)
   {
      string suserid = xaserver::GetUserId();
      xstring suserid = xaserver::GetUserId();
      PUser pp = publiccode::GetUser(suserid);
      string userno = pp.no;
      if (userno == "admin" )
      xstring userno = pp.no;
      if (userno == L"admin" )
      {
         dw_base.SetReadOnly(false);                  
         dw_kpinfo.SetReadOnly(false);
@@ -1259,65 +1288,65 @@
      }
   }
   
   int OnItemClickExS(ref TNotifyEvent evt,int p)
   int OnItemClickExS(TEvent* evt, int p)
   {
      xdwtable dw = dw_visitp.FindDwTable("item4",0);
      xdwtable dw = dw_visitp.FindDwTable(L"item4",0);
   
      
      ref DWNMHDR  hdr = cast(evt.pnmh as ref DWNMHDR);
      string value = hdr.data;
      xstring value = hdr.data;
      int row = hdr.row;
      //alert(value);
      xaserverarg arg=new xaserverarg;
      xaserverarg& arg=*new xaserverarg;
      arg.setNativePointer(arg.CreateInstance());               
      
      if(value == "附件上传")
      if(value == L"附件上传")
      {
         if(dw.GetGuid(dw.GetRow())=="")
         if(dw.GetGuid(dw.GetRow())==L"")
         {
            alert("保存后在上传!");
            alert(L"保存后在上传!");
            return 1;
         }
         
         arg.AddArg("entityid",dw.GetGuid(dw.GetRow()));
         //arg.AddArg("ApplyStatus",dw_base.GetItemString(1,"ApplyStatus"));
         int p4=cast(arg as int) ;
         OpenWindow("dev:xpage[maint.Document.Customer.v3.vx]", p4);
         arg.AddArg(L"entityid",dw.GetGuid(dw.GetRow()));
         //arg.AddArg(L"ApplyStatus",dw_base.GetItemString(1,L"ApplyStatus"));
         OpenWindow(L"dev:xpage[maint.Document.Customer.v3.vx]", (LPARAM)&arg);
         return 1;
      }
         
      if(value == "人员")
      if(value == L"人员")
      {
         xaserverarg arg2 = new xaserverarg;
         xaserverarg& arg2 = *new xaserverarg;
         arg2.setNativePointer(arg2.CreateInstance());   
         xaserverarg parg2 = GetParam();
         OpenWindow("dev:xpage[SupplierUserGroupPersonSelect.vx]",cast(arg2 as int));
         OpenWindow(L"dev:xpage[SupplierUserGroupPersonSelect.vx]", (LPARAM)&arg2);
         
         if(arg2.GetArgString("comdid")=="xmOk")
         if(arg2.GetArgString(L"comdid")==L"xmOk")
         {
            string data = arg2.GetArgString("data");
            xml x2 = new xml;
            x2.setNativePointer(xml::CreateInstance());
            x2.LoadXml(data);
            msxml::IXMLDOMNodeList nodes = x2.GetXmlDoc().selectNodes("/root/item");
            trace(x2.GetXml());
            xstring data = arg2.GetArgString(L"data");
            xml x2;
            
            int len = nodes.length;
            x2.loadXML(data);
            KXMLDOMNodeList nodes = x2.selectNodes(L"/root/item");
            trace(x2.xml());
            int len = nodes.length();
         
            string Names = "";
            xstring Names = L"";
            for(int i=0;i<len; i++)
            {
               msxml::IXMLDOMElement t= nodes.item(i);
               KXMLDOMElement t= nodes.item(i);
               
               if(t.getAttribute("Name"))
               if(t.getAttribute(L"Name"))
               {
                  string Name = t.getAttribute("Name");
                  if(Names=="")
                  xstring Name = t.getAttribute(L"Name");
                  if(Names==L"")
                     Names = Name;
                  else if(Names.find(Name) < 0) Names+=","+Name;
                  else if(Names.find(Name) < 0) Names+=L",L"+Name;
               }
            }
            dw.SetItemString(dw.GetRow(),"ItemType",Names);
            dw.SetItemString(dw.GetRow(),L"ItemType",Names);
                  
         }
         return 1;
@@ -1328,41 +1357,41 @@
                  
   int PostOnAttachEvent()
   {
      AttachEvent("dw_base","DWV_CLICKED",OnItemClick);
      //AttachEvent("tab_1", "LYSN_SELECTEDSHEET",OnSheetChanged);
      AttachEvent("dw_kpinfo","DWV_CLICKED",OnkpItemClick);
      AttachEvent("dw_kpinfo","DWV_ITEMCHANGED",OnItemChangedkp);
      AttachEvent("dw_base","DWV_ITEMCHANGED",OnItemChanged);
      AttachEvent("dw_basegy","DWV_ITEMCHANGED",OnItemChanged3);
      AttachEvent("dw_visitp","DWV_CLICKED",OnItemClickExS);
      AttachEvent(L"dw_base",L"DWV_CLICKED", (FEvent)&maintSupplierv3::OnItemClick);
      //AttachEvent(L"tab_1", L"LYSN_SELECTEDSHEET",(FEvent)&maintSupplierv3::OnSheetChanged);
      AttachEvent(L"dw_kpinfo",L"DWV_CLICKED", (FEvent)&maintSupplierv3::OnkpItemClick);
      AttachEvent(L"dw_kpinfo",L"DWV_ITEMCHANGED", (FEvent)&maintSupplierv3::OnItemChangedkp);
      AttachEvent(L"dw_base",L"DWV_ITEMCHANGED", (FEvent)&maintSupplierv3::OnItemChanged);
      AttachEvent(L"dw_basegy",L"DWV_ITEMCHANGED", (FEvent)&maintSupplierv3::OnItemChanged3);
      AttachEvent(L"dw_visitp",L"DWV_CLICKED", (FEvent)&maintSupplierv3::OnItemClickExS);
      return 1;
   }      
      
   int OnInit()
   {
      dw_base = this.GetControl("dw_base");
      dw_base = GetControl(L"dw_base");
      dw_base.SetColHeaderHeight(16);      
      dw_kpinfo = this.GetControl("dw_kpinfo");
      dw_kpinfo = GetControl(L"dw_kpinfo");
      dw_kpinfo.SetColHeaderHeight(16);   
      dw_visitp = this.GetControl("dw_visitp");
      dw_visitp = GetControl(L"dw_visitp");
      dw_visitp.SetColHeaderHeight(16);   
      
      //xdwtable dw_check = this.GetControl("dw_check");
      //xdwtable dw_check = this.GetControl(L"dw_check");
      //dw_check.SetColHeaderHeight(16);               
      //dw_check.SetReadOnly(true);
      dw_basegy = this.GetControl("dw_basegy");
      dw_supgoods = this.GetControl("dw_supgoods");
      m_layer = GetControl("tab_1");
      xsheet = GetControl("tab_1");
      dw_basegy = GetControl(L"dw_basegy");
      dw_supgoods = GetControl(L"dw_supgoods");
      m_layer = GetControl(L"tab_1");
      xsheet = GetControl(L"tab_1");
      
      //string  userno = xaserver::GetUserNo();
      string ApplyStatus=dw_base.GetItemString(1,"ApplyStatus");
      //xstring  userno = xaserver::GetUserNo();
      xstring ApplyStatus=dw_base.GetItemString(1,L"ApplyStatus");
      
      //if(userno !="00601" && userno !="admin" && userno !="00701")
      //if(userno !=L"00601" && userno !=L"admin" && userno !=L"00701")
      //{
         //alert(ApplyStatus);
         if(ApplyStatus =="已批准")
         if(ApplyStatus ==L"已批准")
         {
            dw_visitp.SetReadOnly(false);   
         }
@@ -1370,31 +1399,31 @@
            
      if (!maint::m_EntityID)
      {
         string suserid = xaserver::GetUserId();
         string susername = publiccode::GetUser(suserid).name;
         string sdate = publiccode::GetCurrentDate();
         string sAddressID = publiccode::GetGuid();
         dw_base.SetItemString(1,"CreatorID",suserid);//Party
         dw_base.SetItemDisplayString(1,"CreatorID",susername);
         dw_base.SetItemString(1,"CreateDate",sdate);
         //string sCountryCode = dw.GetItemString(1,"CountryCode",0);
         //if (sCountryCode=="" || sCountryCode== nil)
         dw_base.SetItemString(1,"CountryCode","142");
         dw_base.SetItemDisplayString(1,"CountryCode","中国");
         dw_base.SetItemString(1,"Status","1");
         dw_base.SetItemString(1,"Type","2");//PartyAccount  供应商
         dw_base.SetItemString(1,"aIdentifyAddressFlag","Y");//PartyAddress  主地址
         dw_base.SetItemString(1,"aPrimaryFlag","Y");
         dw_base.SetItemString(1,"aStatus","1");
         dw_base.SetItemString(1,"bAddressID",sAddressID);//PartyAddress  寄件地址
         dw_base.SetItemString(1,"bAddressName","寄件地址");
         dw_base.SetItemString(1,"bIdentifyAddressFlag","N");
         dw_base.SetItemString(1,"bPrimaryFlag","N");
         dw_base.SetItemString(1,"bStatus","1");
         xstring suserid = xaserver::GetUserId();
         xstring susername = publiccode::GetUser(suserid).name;
         xstring sdate = publiccode::GetCurrentDate();
         xstring sAddressID = publiccode::GetGuid();
         dw_base.SetItemString(1,L"CreatorID",suserid);//Party
         dw_base.SetItemDisplayString(1,L"CreatorID",susername);
         dw_base.SetItemString(1,L"CreateDate",sdate);
         //xstring sCountryCode = dw.GetItemString(1,L"CountryCode",0);
         //if (sCountryCode==L"" || sCountryCode== nil)
         dw_base.SetItemString(1,L"CountryCode",L"142");
         dw_base.SetItemDisplayString(1,L"CountryCode",L"中国");
         dw_base.SetItemString(1,L"Status",L"1");
         dw_base.SetItemString(1,L"Type",L"2");//PartyAccount  供应商
         dw_base.SetItemString(1,L"aIdentifyAddressFlag",L"Y");//PartyAddress  主地址
         dw_base.SetItemString(1,L"aPrimaryFlag",L"Y");
         dw_base.SetItemString(1,L"aStatus",L"1");
         dw_base.SetItemString(1,L"bAddressID",sAddressID);//PartyAddress  寄件地址
         dw_base.SetItemString(1,L"bAddressName",L"寄件地址");
         dw_base.SetItemString(1,L"bIdentifyAddressFlag",L"N");
         dw_base.SetItemString(1,L"bPrimaryFlag",L"N");
         dw_base.SetItemString(1,L"bStatus",L"1");
         //dw_base.ResetUpdateStatus();
         //dw_check.SetItemDisplayString(1,"BusinessLicenceFlag","营业执照");
         //dw_check.SetItemDisplayString(1,"TaxRegistrationFlag","税务登记证复印件");
         //dw_check.SetItemDisplayString(1,"OrganizationCodeFlag","组织机构代码");
         //dw_check.SetItemDisplayString(1,L"BusinessLicenceFlag",L"营业执照");
         //dw_check.SetItemDisplayString(1,L"TaxRegistrationFlag",L"税务登记证复印件");
         //dw_check.SetItemDisplayString(1,L"OrganizationCodeFlag",L"组织机构代码");
      }
      //dw_base.SetColHeaderHeight(0);
      //dw_base.SetRowSelectorWidth(0);
@@ -1412,14 +1441,14 @@
      //PostOnAttachEvent();
      maint::onloaded();   
      OnInit();
      string suserid = xaserver::GetUserId();
      xstring suserid = xaserver::GetUserId();
      PUser p = publiccode::GetUser(suserid);
      string deptname = p.deptname;
      string userno = p.no;
      string jobname=p.jobname;
      string ApplyStatusEx=dw_base.GetItemString(1,"ApplyStatus");
      xstring deptname = p.deptname;
      xstring userno = p.no;
      xstring jobname=p.jobname;
      xstring ApplyStatusEx=dw_base.GetItemString(1,L"ApplyStatus");
      //alert(ApplyStatusEx);
      if (userno == "admin" ||userno == "00601" || userno == "00701" || ApplyStatusEx=="修改")
      if (userno == L"admin" ||userno == L"00601" || userno == L"00701" || ApplyStatusEx==L"修改")
      {
         dw_base.SetReadOnly(false);                  
         dw_kpinfo.SetReadOnly(false);
@@ -1430,26 +1459,26 @@
         dw_kpinfo.SetReadOnly(true);   
         //dw_visitp.SetReadOnly(true);
      }
      /*if(deptname != "产品供应部" && userno != "admin")
      /*if(deptname != L"产品供应部" && userno != L"admin")
      {
         xdwtable dw = dw_base.FindDwTable("item2",0);
         int start=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex("MainProducts"));
         xdwtable dw = dw_base.FindDwTable(L"item2",0);
         int start=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex(L"MainProducts"));
   alert(start.toString());
         //dw_base.ExpandCellRow(start,dw.GetRowCount());
   alert("2");
         int start1=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex("MainProducts"));
         int begin=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex("DeveloperID"));
   alert("2");
   alert(L"2");
         int start1=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex(L"MainProducts"));
         int begin=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex(L"DeveloperID"));
   alert(L"2");
         //dw_base.ExpandCellRow(start1 + dw.GetRowCount() +3,begin -2);
         int start2=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex("Status"));
   alert("2");
         int start2=dw_base.GetCellRowFromRowColumn(1,dw_base.GetColumnIndex(L"Status"));
   alert(L"2");
         //dw_base.ExpandCellRow(start2,start2 +1);
      
         //dw_kpinfo.openUrl("/sale/view/Supplier/template/supplier/kpinfo2");
         //dw_kpinfo.openUrl(L"/sale/view/Supplier/template/supplier/kpinfo2");
         //maint::OnRetrieve();
      }*/
      /*if (userno == "admin" )
      /*if (userno == L"admin" )
      {
         dw_base.SetReadOnly(false);                  
         dw_kpinfo.SetReadOnly(false);                  
@@ -1459,7 +1488,7 @@
         dw_kpinfo.SetReadOnly(true);   
      }
      dw_supgoods.SetReadOnly(true);
      if(jobname=="业务部经理" || jobname == "业务经理" || jobname == "业务主管" || jobname == "业务组长" || userno == "admin")
      if(jobname==L"业务部经理" || jobname == L"业务经理" || jobname == L"业务主管" || jobname == L"业务组长" || userno == L"admin")
      {   
         xsheet.SetSheetState(4,1);//显示产品库            
      }