use "system.vl" use "win.vl" use "maint.vl" use "file.vl" use "dev:vm[xcell.vm]" unit vbusiness.entity [ ExpressMaint is extend maint; about ExpressMaint [ field: [ msxml::IXMLDOMDocument m_configDoc; xdwtable__ dw_base; string m_userid; string m_username; string ContactID; 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; } string GetGuid(){ return TApp::GetGuid(); } int OnClear(){ if(this.m_EntityID ==""){ trace(1); 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,"PADStatus","1"); dw_base.SetItemString(1,"CreatorID",m_userid); dw_base.SetItemString(1,"AddressID",GetGuid()); dw_base.SetItemString(1,"PADIdentifyAddressFlag","Y"); dw_base.SetItemString(1,"PrimaryFlag","Y"); dw_base.SetItemString(1,"Type","8"); dw_base.SetItemString(1,"EnterName",m_userid); dw_base.SetItemDisplayString(1,"EnterName",m_username); dw_base.SetItemString(1,"CreateDate",TApp::GetCurDate()); dw_base.SetItemString(1,"PBAStatus","Y"); } return 0; } int OnSetFocus(ref TNotifyEvent evt,int p) { SetAgent("maint"); return 1; } 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); } //trace(m_dels); 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/express/PartyNo",arg.GetString(),x) != 1) { trace(x.GetXml()); return ""; } msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; if(e) { string code = e.text; trace(code); return "E"+code; } return "E1000"; } int OnPreSave() { dw_base.AcceptText(); dw_base = new xdwtable__; dw_base.setNativePointer(this.GetControl("dw_base")); string ExpressNo = dw_base.GetItemString(1,"ExpressNo",0); if (ExpressNo=="" || ExpressNo== nil) { dw_base.SetItemString(1,"ExpressNo",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); 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")); } } } xdwtable__ dwcon1 = new xdwtable__; dwcon1.setNativePointer(dw_base.FindDwTable("PartyBankAccount",0)); int j; for (j=1;j <= dwcon1.GetRowCount();j++) { string sPBABankName = dwcon1.GetItemString(j,"Bank"); string sPBABankAccountNo = dwcon1.GetItemString(j,"BankNo"); if (sPBABankName == nil) sPBABankName = ""; if (sPBABankAccountNo == nil) sPBABankAccountNo = ""; string sPBAAll = sPBABankName + sPBABankAccountNo; if (sPBAAll != "") { if (sPBABankName == "") { alert("ÒøÐÐÃû³Æ²»ÄÜΪ¿Õ"); return -1; } if (sPBABankAccountNo == "") { alert("ÒøÐÐÕË»§²»ÄÜΪ¿Õ"); return -1; } } } 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","Express.dbmap"); //arg.AddArg("m_dels",m_dels); if (getUrl("/sale/data/LogisticsCode/entity/express/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) { 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); 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=="ExpressNo") { 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() { dw_base = new xdwtable__; dw_base.setNativePointer(this.GetControl("dw_base")); OnAttachEvent(); //if(!m_configDoc) return -1; maint::onload(); OnClear(); } ] ] ]