use "system.vl"
use "win.vl"
use "maint.vl"
use "file.vl"
use "dev:vm[xcell.vm]"
unit vbusiness.entity
[
ForwarderMaint is extend maint;
about ForwarderMaint
[
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,"ForwarderID",GetGuid());
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,"AddressID",GetGuid());
dw_base.SetItemString(1,"PADIdentifyAddressFlag","Y");
dw_base.SetItemString(1,"PADPrimaryFlag","Y");
//dw_base.SetItemString(1,"BankAccountID",GetGuid());
dw_base.SetItemString(1,"Type","5");
dw_base.SetItemString(1,"EnterName",m_userid);
dw_base.SetItemDisplayString(1,"EnterName",m_username);
dw_base.SetItemString(1,"CreateDate",TApp::GetCurDate());
/*xdwtable__ dw = new xdwtable__;
dw.setNativePointer(dw_base.GetCurTable());
xdwtable__ dwcon = new xdwtable__;
dwcon.setNativePointer(dw.FindDwTable("Contacters",0));
dwcon.SetItemString(1,"ContactID",GetGuid());
dwcon.SetItemString(1,"PCStatus","1");*/
//dw_base.SetItemString(1,"EBankAccountID",GetGuid());
//dw_base.SetItemString(1,"CBankAccountID",GetGuid());
/*xdwtable__ dweon = new xdwtable__;
dweon.setNativePointer(dw_base.FindDwTable("item1",0));
xdwtable__ dwcon = new xdwtable__;
dwcon.setNativePointer(dw_base.FindDwTable("item2",0));
dweon.SetItemString(1,"EPBAStatus","Y");
dwcon.SetItemString(1,"CPBAStatus","Y");
dweon.SetItemString(1,"ECurrencyCode","USD");
dwcon.SetItemString(1,"CCurrencyCode","RMB");*/
dw_base.SetItemString(1,"ForwarderType","1");
dw_base.SetItemDisplayString(1,"ForwarderType","Ô¤¸¶»õ");
//dw_base.SetItemString(1,"PrimaryContactID",dwcon.GetItemString(1,"ContactID"));
}
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);
}
//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/PartyNo",arg.GetString(),x) != 1)
{
trace(x.GetXml());
return "";
}
msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
if(e)
{
string code = e.text;
trace(code);
return "F"+code;
}
return "F1000";
}
int OnPreSave()
{
dw_base.AcceptText();
dw_base = new xdwtable__;
dw_base.setNativePointer(this.GetControl("dw_base"));
string ForwarderNo = dw_base.GetItemString(1,"ForwarderNo",0);
if (ForwarderNo=="" || ForwarderNo== nil)
{
dw_base.SetItemString(1,"ForwarderNo",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)+dwcon.GetItemString(i,"fz",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","Y");
dw_base.SetItemString(1,"PrimaryContactID",dwcon.GetItemString(1,"ContactID"));
}
}
}
xdwtable__ dwcon2 = new xdwtable__;
dwcon2.setNativePointer(dw_base.FindDwTable("item2",0));
int k;
for (k=1;k <= dwcon2.GetRowCount();k++)
{
string sPBABankName2 = dwcon2.GetItemString(k,"CBank");
string sPBABankAccountNo2 = dwcon2.GetItemString(k,"CBankNo");
if (sPBABankName2 == nil) sPBABankName2 = "";
if (sPBABankAccountNo2 == nil) sPBABankAccountNo2 = "";
string sPBAAll2 = sPBABankName2 + sPBABankAccountNo2;
if (sPBAAll2 != "")
{
if (sPBABankName2 == "")
{
alert("ÈËÃñ±ÒÒøÐÐÃû³Æ²»ÄÜΪ¿Õ");
return -1;
}
if (sPBABankAccountNo2 == "")
{
alert("ÈËÃñ±ÒÒøÐÐÕË»§²»ÄÜΪ¿Õ");
return -1;
}
dwcon2.SetItemString(k,"CPBAStatus","Y");
dwcon2.SetItemString(k,"CCurrencyCode","RMB");
dwcon2.SetItemString(k,"CBankAccountID",GetGuid());
if(dwcon2.GetItemString(k,"CBankAccountID")!="" && this.m_EntityID =="")
{
dw_base.SetItemString(1,"CBkAccountID",dwcon2.GetItemString(k,"CBankAccountID"));
}
}
}
xdwtable__ dwcon1 = new xdwtable__;
dwcon1.setNativePointer(dw_base.FindDwTable("item1",0));
int j;
for (j=1;j <= dwcon1.GetRowCount();j++)
{
string sPBABankName1 = dwcon1.GetItemString(j,"EBank");
string sPBABankAccountNo1 = dwcon1.GetItemString(j,"EBankNo");
if (sPBABankName1 == nil) sPBABankName1 = "";
if (sPBABankAccountNo1 == nil) sPBABankAccountNo1 = "";
string sPBAAll1 = sPBABankName1 + sPBABankAccountNo1;
if (sPBAAll1 != "")
{
if (sPBABankName1 == "")
{
alert("ÃÀ½ðÒøÐÐÃû³Æ²»ÄÜΪ¿Õ");
return -1;
}
if (sPBABankAccountNo1 == "")
{
alert("ÃÀ½ðÒøÐÐÕË»§²»ÄÜΪ¿Õ");
return -1;
}
dwcon1.SetItemString(j,"EPBAStatus","Y");
dwcon1.SetItemString(j,"ECurrencyCode","USD");
dwcon1.SetItemString(j,"EBankAccountID",GetGuid());
if(dwcon1.GetItemString(j,"EBankAccountID")!="" && this.m_EntityID =="")
{
dw_base.SetItemString(1,"EBkAccountID",dwcon1.GetItemString(j,"EBankAccountID"));
}
}
}
return 1;
}
int OnPostSave()
{
dw_base = new xdwtable__;
dw_base.setNativePointer(this.GetControl("dw_base"));
xaserverarg__ args = new xaserverarg__;
args.setNativePointer(args.CreateInstance());
xml__ x = new xml__;
x.setNativePointer(xml__::CreateInstance());
dw_base.DwUpdateAllTo(x.GetXmlDoc());
//trace(x.GetXml());
//Ö÷ÁªÏµÈË
string spGuid;
msxml::IXMLDOMElement e;
var list = x.GetXmlDoc().selectNodes("//item");
int nlen = list.length;
int i;
for(i=0; i");
//trace(spGuid);
xml__ x1 = new xml__;
x1.setNativePointer(x1.CreateInstance());
if (getUrl("/sale/data/SupplierSubmit/pref/primarycontact",args.GetString(),x) != 1)
{
string error = x1.GetXmlDoc().text;
trace(error);
return 0;
}
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","Forwarder.dbmap");
//arg.AddArg("m_dels",m_dels);
if (getUrl("/sale/data/LogisticsCode/entity/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();
OnPostSave();
}
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;
string coldata = hdr.data;
trace(colname);
if(colname=="ForwarderNo")
{
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;
}
}
//Ö»ÄÜѡһ¸öÖ÷ÁªÏµÈË
else if (colname == "PPrimaryFlag" && coldata == "Y")
{
xdwtable__ dw_pc;
dw_pc = new xdwtable__;
dw_pc.setNativePointer(dw_base.FindDwTable("item"));
if (dw_pc)
{
int i;
for (i=1;i <= dw_pc.GetRowCount();i++)
{
if (i != hdr.row)
dw_pc.SetItemString(i,"PPrimaryFlag","N");
}
}
}
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();
}
]
]
]