use "system.vl" use "win.vl" use "maint.vl" use "file.vl" use "dev:vm[xcell.vm]" unit vbusiness.entity [ TestingCompanyMaint is extend maint; about TestingCompanyMaint [ field: [ msxml::IXMLDOMDocument m_configDoc; string m_userid; string m_username; string ContactID; xdwtable__ dw_base; xcell__ dw_cell; ] method: [ int alert(string str) { //win__::MessageBox(this.GetHWND(),str,"Ìáʾ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 = ""; dw_cell.SetCellProps(2,2,strnew); return 0; } int OnSetFocus(ref TNotifyEvent evt,int p) { SetAgent("maint"); return 1; } string GetGuid(){ return TApp::GetGuid(); } int OnClear(){ if(this.m_EntityID ==""){ 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","20"); 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()); } else { setCellReadOnly(); } return 0; } int OnAddrow() { dw_base = new xdwtable__; dw_base.setNativePointer(this.GetControl("dw_base")); xdwtable__ dw = new xdwtable__; dw.setNativePointer(dw_base.GetCurTable()); string dw_n=dw.GetDwName(); if(dw_n=="item") { dw.InsertRow(0); int rows = dw.GetRowCount(); dw.SetRow(rows); } return 1; } int OnInsertRow() { dw_base = new xdwtable__; dw_base.setNativePointer(this.GetControl("dw_base")); xdwtable__ dw = new xdwtable__; dw.setNativePointer(dw_base.GetCurTable()); string dw_n=dw.GetDwName(); if(dw_n=="item") { int row=dw.GetRow(); if(row<1) return 0; dw.InsertRow(row); dw.SetRow(row); } return 1; } int OnDeleteRow() { dw_base = new xdwtable__; dw_base.setNativePointer(this.GetControl("dw_base")); xdwtable__ dw = new xdwtable__; dw.setNativePointer(dw_base.GetCurTable()); string dw_n=dw.GetDwName(); if(dw_n=="item") { int row=dw.GetRow(); if(row<1) return 0; /*string del = dw.GetItemString(row,8); if(del!="") { if(m_dels=="") { m_dels=del; } else { string temp=m_dels; m_dels=del + "|" + temp; //+= "|"+del; } }*/ dw.DeleteRow(row); dw.SetRow(row - 1); } return 1; } string 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) { trace(x.GetXml()); return ""; } msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; if(e) { string code = e.text; trace(code); return "P"+code; } return "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.SetItemString(1,"ShipNo",getGoodsNo()); } xdwtable__ dwcon = new xdwtable__; dwcon.setNativePointer(dw_base.FindDwTable("item",0)); int i; for(i=1;i<=dwcon.GetRowCount();i++) { string aTemp; string aName = dwcon.GetItemString(i,"ContacterName",0); trace(aName); if (aName=="" || aName== nil) { 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); trace(aTemp); if(aTemp !="" && aTemp != nil) { alert("ÁªÏµÈËÃû³Æ±ØÌ"); return -1; } } else{ string ContactID = dwcon.GetItemString(i,"ContactID",0); if (ContactID=="" || ContactID== nil) { dwcon.SetItemString(i,"ContactID",GetGuid()); dwcon.SetItemString(i,"PCStatus","1"); dw_base.SetItemString(1,"PrimaryContactID",dwcon.GetItemString(1,"ContactID")); } } } return 1; } int OnSave() { dw_base = new xdwtable__; dw_base.setNativePointer(this.GetControl("dw_base")); string SName = dw_base.GetItemString(1,"Name"); if(SName==""){ alert("ÇëÊäÈë´¬¹«Ë¾Ãû³Æ£¡"); 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); if (getUrl("/sale/data/LogisticsCode/entity/shipcompany/save",arg.GetString(),x) != 1) { trace("error:"+x.GetXml()); alert("±£´æÊ§°Ü!"); return 0; } else { trace(x.GetXml()); if(x.GetXmlDoc().selectSingleNode("error")) { alert("±£´æ³ö´í2!"); return 0; } alert("±£´æ³É¹¦!"); dw_base.ResetUpdateStatus(); setCellReadOnly(); } dw_base.Redraw(); //m_dels=""; return 0; } int OnCmdDispatch(string comdid) { trace(comdid); if(comdid.find("action:bill.row.add",0)>=0) { OnAddrow(); } else if(comdid.find("bill.row.insert",0)>=0) { OnInsertRow(); } else if(comdid.find("bill.row.delete",0)>=0) { OnDeleteRow(); } else if(comdid.find("bill.save",0)>=0) { trace(1); dw_base.AcceptText(); OnSave(); } return 0; } int OnXCommand(ref TXCommandEvent evt,int p) { return OnCmdDispatch(evt.pStrID); } int OnCellChanged(ref TNotifyEvent evt,int p) { dw_base = new xdwtable__; dw_base.setNativePointer(this.GetControl("dw_base")); ref DWNMHDR hdr = evt.pnmh; string colname=hdr.colname; //trace(colname); if(colname=="ShipNo") { string 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")) { alert("ÇëÊäÈëÊý×Ö£¡"); return 0; } } return 1; } int OnAttachEvent() { AttachEvent("WM_XCOMMAND",OnXCommand); AttachEvent("WM_SETFOCUS",OnSetFocus); AttachEvent("dw_base","DWV_ITEMCHANGED",OnCellChanged); return 0; } int onload() { OnAttachEvent(); //if(!m_configDoc) return -1; maint::onload(); OnClear(); } ] ] ]