LiFan
2024-07-16 6a4764ee747fff45d89ef48f98873d6409e4f85e
jrj/project/business/BasicCode/ShipcompanyMaint.cpp
@@ -1,67 +1,72 @@
use "system.vl"
use "win.vl"
use "maint.vl"
use "file.vl"
use "dev:vm[xcell.vm]"
unit vbusiness.entity
[
   ShipcompanyMaint is extend maint;
   about ShipcompanyMaint
   [
      field:
      [
         msxml::IXMLDOMDocument m_configDoc;
         string m_userid;
         string m_username;
         string ContactID;
         xdwtable__ dw_base;
         xcell__ dw_cell;
      ]
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
      
      method:
      [
         int alert(string str)
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
class __declspec(dllexport) ShipcompanyMaint : public xframe
         {
            //win__::MessageBox(this.GetHWND(),str,"提示22:",0);
public:
   KXMLDOMDocument m_configDoc;
   xstring m_userid;
   xstring m_username;
   xstring ContactID;
   xdwtable dw_base;
   xcell dw_cell;
public:
   ShipcompanyMaint(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
public:
   static ShipcompanyMaint* CreateInstance(void* implPtr, void* hWnd)
   {
      ShipcompanyMaint* pWin = new ShipcompanyMaint(implPtr, (HWND)hWnd);
      return pWin;
   }
   int alert(xstring str)
   {
      //win::MessageBox(GetHWND(),str,L"提示22:",0);
            TApp::alert(this,str);
            return 0;
         }         
         int setCellReadOnly()
         {      
            dw_base = new xdwtable__;
            dw_base.setNativePointer(this.GetControl("dw_base"));
            dw_cell = new xcell__;
            dw_cell.setNativePointer(dw_base.QueryItem("ixcell"));
            string strnew = "<cellprop celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='保护' cellvisibleex='' cellvisible='' cellvalid='' cellinitial=''/>";
      dw_base = new xdwtable;
      dw_base.setNativePointer(GetControl(L"dw_base"));
      dw_cell = new xcell;
      dw_cell.setNativePointer(dw_base.QueryItem(L"ixcell"));
      xstring strnew = L"<cellprop celltype='' cellformatex='' cellformat='' cellprotectex='' cellprotect='保护' cellvisibleex='' cellvisible='' cellvalid='' cellinitial=''/>";
            dw_cell.SetCellProps(2,2,strnew);         
            return 0;
         }      
         int OnSetFocus(ref TNotifyEvent evt,int p)
   int OnSetFocus(TEvent* evt, LPARAM p)
         {
            SetAgent("maint");
      SetAgent(L"maint");
            return 1;
         }      
         string GetGuid(){
   xstring GetGuid() {
            return TApp::GetGuid();         
         }               
         int OnClear(){
            if(this.m_EntityID ==""){
      if (m_EntityID == L"") {
               m_userid = TApp::GetUserInfo().id;
               m_username = TApp::GetUserInfo().name;                  
               dw_base = new xdwtable__;
               dw_base.setNativePointer(this.GetControl("dw_base"));
               dw_base.SetItemString(1,"PartyID",GetGuid());
               dw_base.SetItemString(1,"PStatus","1");
               dw_base.SetItemDisplayString(1,"PStatus","有效");
               dw_base.SetItemString(1,"CreatorID",m_userid);
               dw_base.SetItemString(1,"PADStatus","1");
               dw_base.SetItemString(1,"Type","6");
               dw_base.SetItemString(1,"AddressID",GetGuid());
               dw_base.SetItemString(1,"PADIdentifyAddressFlag","Y");
               dw_base.SetItemString(1,"PrimaryFlag","Y");
               dw_base.SetItemString(1,"EnterName",m_userid);
               dw_base.SetItemDisplayString(1,"EnterName",m_username);
               dw_base.SetItemString(1,"CreateDate",TApp::GetCurDate());
         dw_base = new xdwtable;
         dw_base.setNativePointer(GetControl(L"dw_base"));
         dw_base.SetItemString(1, L"PartyID", GetGuid());
         dw_base.SetItemString(1, L"PStatus", L"1");
         dw_base.SetItemDisplayString(1, L"PStatus", L"有效");
         dw_base.SetItemString(1, L"CreatorID", m_userid);
         dw_base.SetItemString(1, L"PADStatus", L"1");
         dw_base.SetItemString(1, L"Type", L"6");
         dw_base.SetItemString(1, L"AddressID", GetGuid());
         dw_base.SetItemString(1, L"PADIdentifyAddressFlag", L"Y");
         dw_base.SetItemString(1, L"PrimaryFlag", L"Y");
         dw_base.SetItemString(1, L"EnterName", m_userid);
         dw_base.SetItemDisplayString(1, L"EnterName", m_username);
         dw_base.SetItemString(1, L"CreateDate", TApp::GetCurDate());
            }
            else
            {
@@ -72,12 +77,12 @@
         int OnAddrow()
         {   
            dw_base = new xdwtable__;
            dw_base.setNativePointer(this.GetControl("dw_base"));
            xdwtable__ dw =  new xdwtable__;
      dw_base = new xdwtable;
      dw_base.setNativePointer(GetControl(L"dw_base"));
      xdwtable dw = new xdwtable;
            dw.setNativePointer(dw_base.GetCurTable());
            string dw_n=dw.GetDwName();
            if(dw_n=="item")
      xstring dw_n = dw.GetDwName();
      if (dw_n == L"item")
            {   
               dw.InsertRow(0);
               int rows = dw.GetRowCount();
@@ -87,12 +92,12 @@
         }
         int OnInsertRow()
         {
            dw_base = new xdwtable__;
            dw_base.setNativePointer(this.GetControl("dw_base"));
            xdwtable__ dw =  new xdwtable__;
      dw_base = new xdwtable;
      dw_base.setNativePointer(GetControl(L"dw_base"));
      xdwtable dw = new xdwtable;
            dw.setNativePointer(dw_base.GetCurTable());
            string dw_n=dw.GetDwName();
            if(dw_n=="item")
      xstring dw_n = dw.GetDwName();
      if (dw_n == L"item")
            {
               int row=dw.GetRow();
               if(row<1) return 0;               
@@ -104,27 +109,27 @@
         int OnDeleteRow()
         {   
            dw_base = new xdwtable__;
            dw_base.setNativePointer(this.GetControl("dw_base"));
            xdwtable__ dw =  new xdwtable__;
      dw_base = new xdwtable;
      dw_base.setNativePointer(GetControl(L"dw_base"));
      xdwtable dw = new xdwtable;
            dw.setNativePointer(dw_base.GetCurTable());
            string dw_n=dw.GetDwName();
            if(dw_n=="item")
      xstring dw_n = dw.GetDwName();
      if (dw_n == L"item")
            {
               int row=dw.GetRow();
               if(row<1) return 0;
               /*string del = dw.GetItemString(row,8);
               if(del!="")
         /*xstring del = dw.GetItemString(row,8);
         if(del!=L"")
               {
                  if(m_dels=="")
            if(m_dels==L"")
                  {   
                     m_dels=del;                  
                  }      
                  else 
                  {   
                     string temp=m_dels;
                     m_dels=del + "|" + temp;
                  //+= "|"+del;
               xstring temp=m_dels;
               m_dels=del + L"|" + temp;
            //+= L"|"+del;
                  }   
               }*/            
@@ -133,61 +138,61 @@
            }
            return 1;
         }
         string getGoodsNo()
   xstring getGoodsNo()
         {
            xml__ x=new xml__;
            x.setNativePointer(xml__::CreateInstance());
            xaserverarg__ arg=new xaserverarg__;
            arg.setNativePointer(arg.CreateInstance());
            if (getUrl("/sale/data/LogisticsCode/pref/shipcompany/PartyNo",arg.GetString(),x) != 1)
      xml x;
      xaserverarg arg;
      if (getUrl(L"/sale/data/LogisticsCode/pref/shipcompany/PartyNo", arg.GetString(), x) != 1)
            {
               trace(x.GetXml());
               return "";
         trace(x.xml());
         return L"";
            }         
            msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
      KXMLDOMElement e = x.documentElement();
            if(e)
            {
               string code = e.text;
         xstring code = e.text();
            trace(code);
               return "P"+code;
         return L"P" + code;
            }
            return "P1000";
      return  L"P1000";
         }            
         int OnPreSave()
         {   
            dw_base.AcceptText();               
            dw_base = new xdwtable__;
            dw_base.setNativePointer(this.GetControl("dw_base"));
            string ShipNo = dw_base.GetItemString(1,"ShipNo",0);
            if (ShipNo=="" || ShipNo== nil)
      dw_base = new xdwtable;
      dw_base.setNativePointer(GetControl(L"dw_base"));
      xstring ShipNo = dw_base.GetItemString(1, L"ShipNo");
      if (ShipNo == L"")
               {
               dw_base.SetItemString(1,"ShipNo",getGoodsNo());
         dw_base.SetItemString(1, L"ShipNo", getGoodsNo());
            }            
            xdwtable__ dwcon =  new xdwtable__;
            dwcon.setNativePointer(dw_base.FindDwTable("item",0));
      xdwtable dwcon = new xdwtable;
      dwcon.setNativePointer(dw_base.FindDwTable(L"item", 0));
            int i;            
            for(i=1;i<=dwcon.GetRowCount();i++)
            {
               string aTemp;
               string aName = dwcon.GetItemString(i,"ContacterName",0);
         xstring aTemp;
         xstring aName = dwcon.GetItemString(i, L"ContacterName");
               trace(aName);
               if (aName=="" || aName== nil)
         if (aName == L"")
               {
                  aTemp=dwcon.GetItemString(i,"Mobile",0)+dwcon.GetItemString(i,"TEL",0)+dwcon.GetItemString(i,"Fax",0)+dwcon.GetItemString(i,"Email",0)+dwcon.GetItemString(i,"PCRemark",0);
            aTemp = dwcon.GetItemString(i, L"Mobile") + dwcon.GetItemString(i, L"TEL") + dwcon.GetItemString(i, L"Fax") + dwcon.GetItemString(i, L"Email") + dwcon.GetItemString(i, L"PCRemark");
                  trace(aTemp);
                  if(aTemp !="" && aTemp != nil)
            if (aTemp != L"")
                  {
                     alert("联系人名称必填!");
               alert(L"联系人名称必填!");
                     return -1;
                  }
               }
               else{
                     string ContactID = dwcon.GetItemString(i,"ContactID",0);
                     if (ContactID=="" || ContactID== nil)
            xstring ContactID = dwcon.GetItemString(i, L"ContactID");
            if (ContactID == L"")
                     {   
                        dwcon.SetItemString(i,"ContactID",GetGuid());
                        dwcon.SetItemString(i,"PCStatus","1");
                        dw_base.SetItemString(1,"PrimaryContactID",dwcon.GetItemString(1,"ContactID"));
               dwcon.SetItemString(i, L"ContactID", GetGuid());
               dwcon.SetItemString(i, L"PCStatus", L"1");
               dw_base.SetItemString(1, L"PrimaryContactID", dwcon.GetItemString(1, L"ContactID"));
                     }   
                  
@@ -199,93 +204,93 @@
         int OnSave()
         {   
               
            dw_base = new xdwtable__;
            dw_base.setNativePointer(this.GetControl("dw_base"));
            string SName = dw_base.GetItemString(1,"Name");
            if(SName==""){
               alert("请输入船公司名称!");
      dw_base = new xdwtable;
      dw_base.setNativePointer(GetControl(L"dw_base"));
      xstring SName = dw_base.GetItemString(1, L"Name");
      if (SName == L"") {
         alert(L"请输入船公司名称!");
               return -1;
            }
            int rec =OnPreSave();
            if (rec== -1)   return -1;               
            xml__ x=new xml__;
            x.setNativePointer(xml__::CreateInstance());
            dw_base.DwUpdateAllTo(x.GetXmlDoc());
            trace(x.GetXml());
            xaserverarg__ arg=new xaserverarg__;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("content",x.GetXml());
            arg.AddArg("dbmap","Shipcompany.dbmap");
            //arg.AddArg("m_dels",m_dels);
      xml x;
         
            if (getUrl("/sale/data/LogisticsCode/entity/shipcompany/save",arg.GetString(),x) != 1)
      dw_base.DwUpdateAllTo(x);
      trace(x.xml());
      xaserverarg arg;
      arg.AddArg(L"content", x.xml());
      arg.AddArg(L"dbmap", L"Shipcompany.dbmap");
      //arg.AddArg(L"m_dels",m_dels);
      if (getUrl(L"/sale/data/LogisticsCode/entity/shipcompany/save", arg.GetString(), x) != 1)
            {
               trace("error:"+x.GetXml());
               alert("保存失败!");
         trace(L"error:" + (xstring)x.xml());
         alert(L"保存失败!");
               return 0;
            }                  
            else
            {   
               trace(x.GetXml());
               if(x.GetXmlDoc().selectSingleNode("error"))
         trace(x.xml());
         if (x.selectSingleNode(L"error"))
               {
                  alert("保存出错2!");
            alert(L"保存出错2!");
                  return 0;            
               }
               alert("保存成功!");
         alert(L"保存成功!");
               dw_base.ResetUpdateStatus();
               setCellReadOnly();                     
            }
            dw_base.Redraw();
            //m_dels="";
      //m_dels=L"";
            return 0;
         }               
         int OnCmdDispatch(string comdid)
   int OnCmdDispatch(xstring comdid)
         {
            trace(comdid);
            if(comdid.find("action:bill.row.add",0)>=0) {
      if (comdid.find(L"action:bill.row.add", 0) >= 0) {
               OnAddrow();
            }
            else if(comdid.find("bill.row.insert",0)>=0) {
      else if (comdid.find(L"bill.row.insert", 0) >= 0) {
               OnInsertRow();                      
            }
            else if(comdid.find("bill.row.delete",0)>=0) {
      else if (comdid.find(L"bill.row.delete", 0) >= 0) {
               OnDeleteRow();
            }
            else if(comdid.find("bill.save",0)>=0) {
               trace(1);
      else if (comdid.find(L"bill.save", 0) >= 0) {
         //trace(1);
               dw_base.AcceptText();
               OnSave();
            }               
            return 0;
         }
         int OnXCommand(ref TXCommandEvent evt,int p)
   int OnXCommand(TEvent* evt, LPARAM param)
         {
            return OnCmdDispatch(evt.pStrID);
      return OnCmdDispatch(evt->xcommand.pStrID);
         }
         int OnCellChanged(ref TNotifyEvent evt,int p)
   int OnCellChanged(TEvent* evt, LPARAM p)
         {   
            dw_base = new xdwtable__;
            dw_base.setNativePointer(this.GetControl("dw_base"));
            ref DWNMHDR  hdr = evt.pnmh;
            string colname=hdr.colname;
      dw_base = new xdwtable;
      dw_base.setNativePointer(GetControl(L"dw_base"));
      DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
      xstring colname = hdr.colname;
            //trace(colname);
            if(colname=="ShipNo")
      if (colname == L"ShipNo")
            {
               string cspec = dw_base.GetItemString(1,1);
         xstring cspec = dw_base.GetItemString(1, 1);
               trace(cspec);
               string SpecRule="^\\d*$";
               xaserverarg__ args = new xaserverarg__;
               args.setNativePointer(args.CreateInstance());
               args.AddArg("CSpec",cspec);
               args.AddArg("SpecRule",SpecRule);
               xml__  x= new xml__;
               x.setNativePointer(xml__::CreateInstance());
               getUrl("/sale/data/LogisticsCode/pref/forwarderno/check",args.GetString(),x);
               if(x.GetXmlDoc().selectSingleNode("root/spec"))
         xstring SpecRule = L"^\\d*$";
         xaserverarg args;
         args.AddArg(L"CSpec", cspec);
         args.AddArg(L"SpecRule", SpecRule);
         xml  x;
         getUrl(L"/sale/data/LogisticsCode/pref/forwarderno/check", args.GetString(), x);
         if (x.selectSingleNode(L"root/spec"))
               {  
                  alert("请输入数字!");
            alert(L"请输入数字!");
                  return 0;
               }
               
@@ -294,10 +299,10 @@
         }         
         int OnAttachEvent()
         {
            AttachEvent("WM_XCOMMAND",OnXCommand);
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent("dw_base","DWV_ITEMCHANGED",OnCellChanged);
            return 0;
      AttachEvent(L"WM_XCOMMAND", (FEvent)&ShipcompanyMaint::OnXCommand);
      AttachEvent(L"WM_SETFOCUS", (FEvent)&ShipcompanyMaint::OnSetFocus);
      AttachEvent(L"dw_base", L"DWV_ITEMCHANGED", (FEvent)&ShipcompanyMaint::OnCellChanged);
      return 1;
         }
               
         int onload()
@@ -311,6 +316,4 @@
            OnClear();
         
         }
      ]
   ]
]
};