unit u_op_manifest; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, bsSkinCtrls, DB,ADODB, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, IdMessage,DsWebService,SoapHTTPClient ,InvokeRegistry, IdExplicitTLSClientServerBase, IdSMTPBase,IdAttachmentFile, RxLookup; type Tfrm_op_manifest = class(TForm) bsSkinPanel1: TbsSkinPanel; bsSkinButton1: TbsSkinButton; bsSkinButton2: TbsSkinButton; bsSkinRadioGroup1: TbsSkinRadioGroup; t_op_seae1: TDataSource; t_op_ctn_edi: TADOQuery; strngfld_op_ctnDSDesigner2: TStringField; strngfld_op_ctnDSDesigner6: TStringField; strngfld_op_ctnDSDesigner7: TStringField; strngfld_op_ctnDSDesigner8: TStringField; intgrfld_op_ctnDSDesigner9: TIntegerField; strngfld_op_ctnDSDesigner10: TStringField; bcdfld_op_ctnDSDesigner11: TBCDField; bcdfld_op_ctnDSDesigner12: TBCDField; strngfld_op_ctnDSDesigner14: TStringField; t_op_ctn_ediDSDesigner: TStringField; t_op_ctn_ediPO: TStringField; t_op_ctn_ediSKU: TStringField; t_op_ctn_ediSKU2: TStringField; t_op_ctn_ediUN: TStringField; t_op_ctn_ediHTS: TStringField; t_op_ctn_ediDSDesigner2: TStringField; t_op_ctn_ediDSDesigner3: TBCDField; intgrfld_op_ctnDSDesigner5: TIntegerField; intgrfld_op_ctnTEU: TIntegerField; strngfld_op_ctnDSDesigner4: TStringField; strngfld_op_ctnDSDesigner3: TStringField; atncfld_op_ctnctn_id: TAutoIncField; strngfld_op_ctnDSDesigner: TStringField; t_op_ctn_ediDSDesigner4: TStringField; t_op_seae_edi: TADOQuery; t_op_ctn_detail_edi: TADOQuery; t_op_ctn_detail_edictn_id: TIntegerField; t_op_ctn_detail_ediDSDesigner: TIntegerField; t_op_ctn_detail_ediDSDesigner2: TStringField; t_op_ctn_detail_ediDSDesigner3: TBCDField; t_op_ctn_detail_ediDSDesigner4: TBCDField; t_op_ctn_detail_ediUN: TStringField; t_op_ctn_detail_ediHTS: TStringField; t_op_ctn_detail_ediDSDesigner5: TBCDField; SMTP1: TIdSMTP; IdMsg: TIdMessage; t_op_seae2: TDataSource; bsSkinCheckRadioBox1: TbsSkinCheckRadioBox; bsSkinGroupBox1: TbsSkinGroupBox; RxDBLookupCombo1: TRxDBLookupCombo; Label1: TLabel; Memo1: TMemo; t_op_ams: TADOQuery; procedure bsSkinButton1Click(Sender: TObject); procedure bsSkinButton2Click(Sender: TObject); private { Private declarations } mServiceSoap_Ds:DsWebServiceSoap; mHttpRIO_ds:THTTPRIO; public { Public declarations } bsNo:string; ifmaster:boolean; procedure CreateCustom(typeid:Integer); procedure CreateCustom_hbl(typeid:Integer); function CreateSIEdiFile_XML:TStrings; function CreateSIEdiFile_MBL:TStrings; function GetpkgsEdi(pkgs: String): String; function formatAfrstr(str:string):string; function GetCtnCode(ctnkind,ctnsize:String): String; procedure getwebservice_ds; end; var frm_op_manifest: Tfrm_op_manifest; implementation uses u_main,u_data_share, my_sys_function; {$R *.dfm} function Tfrm_op_manifest.GetCtnCode(ctnkind,ctnsize:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; ctnsize:=StringReplace(ctnsize,'''','''''',[rfReplaceAll]); try with aQuery do begin Close;SQL.Clear; SQL.Add('Select 海关EDI代码 EDI代码 from t_code_ctn where 箱型='''+ctnkind+''' and 尺寸='''+ctnsize+''''); Open; if not IsEmpty then Result:=Trim(FieldByName('EDI代码').asstring) else Result:=''; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_manifest.formatAfrstr(str: string): string; begin Result:=Trim(str); Result:=StringReplace(Result,'&','&',[rfReplaceAll]); Result:=StringReplace(Result,'<','<',[rfReplaceAll]); Result:=StringReplace(Result,'"','"',[rfReplaceAll]); Result:=StringReplace(Result,'>','>',[rfReplaceAll]); Result:=StringReplace(Result,'''',''',[rfReplaceAll]); end; function Tfrm_op_manifest.GetpkgsEdi(pkgs: String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select Edi代码 from t_code_package where 代码='''+pkgs+''''); Open; if IsEmpty then Result:='' else Result:=FieldByName('Edi代码').AsString; end; finally FreeAndNil(aQuery); end; end; procedure Tfrm_op_manifest.CreateCustom_hbl(typeid:Integer); var str,strbsno:widestring; i:integer; id:string; TempStr:TStringlist; aQuery,aQuery2,aQuerycuststr,aQueryCtnDetail,aQueryShipper:TADOQuery; function getcustedi(cust:string):string; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; result:=''; try aQuery.Close; aQuery.SQL.Text:='select EDI代码 from t_crm_client where 客户简称='''+cust+''''; aQuery.Open; if not aQuery.IsEmpty then result:=aQuery.fieldbyname('EDI代码').AsString; finally FreeAndNil(aQuery); end; end; function GetvesselEdi(avessel: String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select 船舶呼号 from t_code_vessel where 英文船名='''+avessel+''''); Open; if IsEmpty then Result:='a' else Result:=FieldByName('船舶呼号').AsString; end; finally FreeAndNil(aQuery); end; end; begin if 1=1 then begin if not t_op_seae_edi.active then t_op_seae_edi.Open; if not t_op_ctn_detail_edi.active then t_op_ctn_detail_edi.Open; try try TempStr:=TStringList.Create; aQuery:=CreateAdoQuery; aQuery2:=CreateAdoQuery; aQueryCtnDetail:=CreateAdoQuery; aQueryShipper:=CreateAdoQuery; aQuery.sql.Text:='select * from t_op_ctn_fendan where as_id=:as_id'; t_op_ctn_edi.close; t_op_ctn_edi.sql.Text:='select * from t_op_ctn_edi where 编号=:编号'; aQueryCtnDetail.sql.Text:='select * from t_op_ctn_detail where ctn_id=:ctn_id'; aQuerycuststr:=CreateAdoQuery; aQuerycuststr.sql.text:=' select 电话,国家,洲,城市 from t_crm_client where 客户简称=:客户简称'; aQueryShipper.sql.Text:='select * from t_code_edicode where 客户简称=:客户简称'; id:=get_id; t_op_seae_edi.Insert; t_op_seae_edi['编号']:=id; t_op_seae_edi['主编号']:=t_op_seae2.DataSet['编号']; t_op_seae_edi['EDI类型']:='CN'; t_op_seae_edi['EDI状态']:='未发送'; t_op_seae_edi['当前状态']:='未发送'; t_op_seae_edi['船代']:=bsSkinRadioGroup1.Items[bsSkinRadioGroup1.ItemIndex]; { case bsSkinRadioGroup1.ItemIndex of 0:t_op_seae_edi['船代']:='外代'; 1:t_op_seae_edi['船代']:='外运'; 2:t_op_seae_edi['船代']:='联代'; 3:t_op_seae_edi['船代']:='华港'; 4:t_op_seae_edi['船代']:='远大'; 5:t_op_seae_edi['船代']:='中远'; 6:t_op_seae_edi['船代']:='海丰'; 7:t_op_seae_edi['船代']:='振华'; 8:t_op_seae_edi['船代']:='中通' else t_op_seae_edi['船代']:=''; end; } t_op_seae_edi['录入人']:=employee; t_op_seae_edi['录入日期']:=now; t_op_seae_edi['业务编号']:=t_op_seae2.DataSet['业务编号']; t_op_seae_edi['主提单号']:=t_op_seae1.DataSet['主提单号']; t_op_seae_edi['场站']:=t_op_seae2.DataSet['场站']; t_op_seae_edi['分提单号']:=t_op_seae1.DataSet['分提单号']; t_op_seae_edi['付费方式']:=t_op_seae2.DataSet['付费方式']; t_op_seae_edi['签单地点']:=t_op_seae2.DataSet['签单地点']; t_op_seae_edi['发货人企业代码'] := t_op_seae1.DataSet['发货人企业代码']; t_op_seae_edi['发货人电话'] := t_op_seae1.DataSet['发货人联系电话']; t_op_seae_edi['发货人邮箱'] := t_op_seae1.DataSet['发货人邮箱']; t_op_seae_edi['发货人国家代码'] := t_op_seae1.DataSet['发货人国家代码']; t_op_seae_edi['收货人企业代码'] := t_op_seae1.DataSet['收货人企业代码']; t_op_seae_edi['收货人电话'] := t_op_seae1.DataSet['收货人联系电话']; t_op_seae_edi['收货人邮箱'] := t_op_seae1.DataSet['收货人邮箱']; t_op_seae_edi['收货人国家代码'] := t_op_seae1.DataSet['收货人国家代码']; t_op_seae_edi['通知人企业代码'] :=t_op_seae1.DataSet['通知人企业代码']; t_op_seae_edi['通知人电话'] := t_op_seae1.DataSet['通知人联系电话']; t_op_seae_edi['通知人邮箱'] := t_op_seae1.DataSet['通知人邮箱']; t_op_seae_edi['通知人国家代码'] := t_op_seae1.DataSet['通知人国家代码']; t_op_seae_edi['发货人代码']:=t_op_seae1.DataSet['发货人代码']; t_op_seae_edi['船公司代码']:=getcustedi(RxDBLookupCombo1.DisplayValues[1]); t_op_seae_edi['船公司']:=RxDBLookupCombo1.DisplayValues[1]; TempStr.Text:=t_op_seae1.DataSet.fieldbyname('发货人代码').AsString; if TempStr.Count>=1 then t_op_seae_edi['发货人名称']:=TempStr.Strings[0]; if TempStr.Count>=2 then t_op_seae_edi['发货人地址1']:=TempStr.Strings[1]; if TempStr.Count>=3 then t_op_seae_edi['发货人地址2']:=TempStr.Strings[2]; if TempStr.Count>=4 then t_op_seae_edi['发货人地址3']:=TempStr.Strings[3]; t_op_seae_edi['发货人']:=t_op_seae1.DataSet.FieldByName('发货人').AsString; if t_op_seae1.DataSet.FieldByName('发货人').AsString<>'' then begin aQueryShipper.Close; aQueryShipper.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('发货人').AsString; aQueryShipper.Open; if not aQueryShipper.IsEmpty then begin t_op_seae_edi.fieldbyname('发货人名称').AsString:=aQueryShipper.FieldByName('名称').AsString; t_op_seae_edi.fieldbyname('发货人地址1').AsString:=aQueryShipper.FieldByName('地址1').AsString; t_op_seae_edi.fieldbyname('发货人地址2').AsString:=aQueryShipper.FieldByName('地址2').AsString; t_op_seae_edi.fieldbyname('发货人地址3').AsString:=aQueryShipper.FieldByName('地址3').AsString; t_op_seae_edi.fieldbyname('发货人城市').AsString:=aQueryShipper.FieldByName('城市').AsString; t_op_seae_edi.fieldbyname('发货人邮编').AsString:=aQueryShipper.FieldByName('邮编').AsString; //t_op_seae_edi.fieldbyname('发货人国家代码').AsString:=aQueryShipper.FieldByName('国家代码').AsString; t_op_seae_edi.fieldbyname('发货人联系人').AsString:=aQueryShipper.FieldByName('联系人').AsString; // t_op_seae_edi.fieldbyname('发货人电话').AsString:=aQueryShipper.FieldByName('电话').AsString; t_op_seae_edi.fieldbyname('发货人州').AsString:=aQueryShipper.FieldByName('州').AsString; end else begin aQuerycuststr.close; aQuerycuststr.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('发货人').AsString; aQuerycuststr.Open; if not aQuerycuststr.IsEmpty then begin t_op_seae_edi['发货人城市']:=aQuerycuststr.fieldbyname('城市').AsString; // t_op_seae_edi['发货人国家代码']:=aQuerycuststr.fieldbyname('国家').AsString; // t_op_seae_edi['发货人电话']:=aQuerycuststr.fieldbyname('电话').AsString; t_op_seae_edi['发货人州']:=aQuerycuststr.fieldbyname('洲').AsString; end; end; end; TempStr.Text:=t_op_seae1.DataSet.fieldbyname('收货人代码').AsString; if TempStr.Count>=1 then t_op_seae_edi['收货人名称']:=TempStr.Strings[0]; if TempStr.Count>=2 then t_op_seae_edi['收货人地址1']:=TempStr.Strings[1]; if TempStr.Count>=3 then t_op_seae_edi['收货人地址2']:=TempStr.Strings[2]; if TempStr.Count>=4 then t_op_seae_edi['收货人地址3']:=TempStr.Strings[3]; t_op_seae_edi['收货人']:=t_op_seae1.DataSet.FieldByName('收货人').AsString; t_op_seae_edi['收货人代码']:=t_op_seae1.DataSet['收货人代码']; if t_op_seae1.DataSet.FieldByName('收货人').AsString<>'' then begin aQueryShipper.Close; aQueryShipper.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('收货人').AsString; aQueryShipper.Open; if not aQueryShipper.IsEmpty then begin t_op_seae_edi.fieldbyname('收货人名称').AsString:=aQueryShipper.FieldByName('名称').AsString; t_op_seae_edi.fieldbyname('收货人地址1').AsString:=aQueryShipper.FieldByName('地址1').AsString; t_op_seae_edi.fieldbyname('收货人地址2').AsString:=aQueryShipper.FieldByName('地址2').AsString; t_op_seae_edi.fieldbyname('收货人地址3').AsString:=aQueryShipper.FieldByName('地址3').AsString; t_op_seae_edi.fieldbyname('收货人城市').AsString:=aQueryShipper.FieldByName('城市').AsString; t_op_seae_edi.fieldbyname('收货人邮编').AsString:=aQueryShipper.FieldByName('邮编').AsString; //t_op_seae_edi.fieldbyname('收货人国家代码').AsString:=aQueryShipper.FieldByName('国家代码').AsString; t_op_seae_edi.fieldbyname('收货人联系人').AsString:=aQueryShipper.FieldByName('联系人').AsString; // t_op_seae_edi.fieldbyname('收货人电话').AsString:=aQueryShipper.FieldByName('电话').AsString; t_op_seae_edi.fieldbyname('收货人州').AsString:=aQueryShipper.FieldByName('州').AsString; end else begin aQuerycuststr.close; aQuerycuststr.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('收货人').AsString; aQuerycuststr.Open; if not aQuerycuststr.IsEmpty then begin t_op_seae_edi['收货人城市']:=aQuerycuststr.fieldbyname('城市').AsString; //t_op_seae_edi['收货人国家代码']:=aQuerycuststr.fieldbyname('国家').AsString; // t_op_seae_edi['收货人电话']:=aQuerycuststr.fieldbyname('电话').AsString; t_op_seae_edi['收货人州']:=aQuerycuststr.fieldbyname('洲').AsString; end; end; end; TempStr.Text:=t_op_seae1.DataSet.fieldbyname('通知人代码').AsString; if TempStr.Count>=1 then t_op_seae_edi['通知人名称']:=TempStr.Strings[0]; if TempStr.Count>=2 then t_op_seae_edi['通知人地址1']:=TempStr.Strings[1]; if TempStr.Count>=3 then t_op_seae_edi['通知人地址2']:=TempStr.Strings[2]; if TempStr.Count>=4 then t_op_seae_edi['通知人地址3']:=TempStr.Strings[3]; t_op_seae_edi['通知人']:=t_op_seae1.DataSet.FieldByName('通知人').AsString; t_op_seae_edi['通知人代码']:=t_op_seae1.DataSet['通知人代码']; if t_op_seae1.DataSet.FieldByName('通知人').AsString<>'' then begin aQueryShipper.Close; aQueryShipper.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('通知人').AsString; aQueryShipper.Open; if not aQueryShipper.IsEmpty then begin t_op_seae_edi.fieldbyname('通知人名称').AsString:=aQueryShipper.FieldByName('名称').AsString; t_op_seae_edi.fieldbyname('通知人地址1').AsString:=aQueryShipper.FieldByName('地址1').AsString; t_op_seae_edi.fieldbyname('通知人地址2').AsString:=aQueryShipper.FieldByName('地址2').AsString; t_op_seae_edi.fieldbyname('通知人地址3').AsString:=aQueryShipper.FieldByName('地址3').AsString; t_op_seae_edi.fieldbyname('通知人城市').AsString:=aQueryShipper.FieldByName('城市').AsString; t_op_seae_edi.fieldbyname('通知人邮编').AsString:=aQueryShipper.FieldByName('邮编').AsString; //t_op_seae_edi.fieldbyname('通知人国家代码').AsString:=aQueryShipper.FieldByName('国家代码').AsString; t_op_seae_edi.fieldbyname('通知人联系人').AsString:=aQueryShipper.FieldByName('联系人').AsString; // t_op_seae_edi.fieldbyname('通知人电话').AsString:=aQueryShipper.FieldByName('电话').AsString; t_op_seae_edi.fieldbyname('通知人州').AsString:=aQueryShipper.FieldByName('州').AsString; end else begin aQuerycuststr.close; aQuerycuststr.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('通知人').AsString; aQuerycuststr.Open; if not aQuerycuststr.IsEmpty then begin t_op_seae_edi['通知人城市']:=aQuerycuststr.fieldbyname('城市').AsString; // t_op_seae_edi['通知人国家代码']:=aQuerycuststr.fieldbyname('国家').AsString; // t_op_seae_edi['通知人电话']:=aQuerycuststr.fieldbyname('电话').AsString; t_op_seae_edi['通知人州']:=aQuerycuststr.fieldbyname('洲').AsString; end; end; end; t_op_seae_edi['船名']:=t_op_seae2.DataSet['船名']; t_op_seae_edi['船舶IMO']:=GetvesselEdi(t_op_seae2.DataSet.fieldbyname('船名').AsString); t_op_seae_edi['航次']:=t_op_seae2.DataSet['航次']; t_op_seae_edi['开船日期']:=t_op_seae2.DataSet['开船日期']; t_op_seae_edi['预抵日期']:=t_op_seae2.DataSet['预抵日期']; if typeid=3 then begin if t_op_seae1.DataSet['装港代码']='CNTAO' then begin t_op_seae_edi['装货港']:='QingQianWanGang'; t_op_seae_edi['装港代码']:='CNQWG/4258'; end else begin t_op_seae_edi['装货港']:=t_op_seae1.DataSet['装货港']; t_op_seae_edi['装港代码']:=t_op_seae1.DataSet['装港代码']; end; end else begin t_op_seae_edi['装货港']:=t_op_seae2.DataSet['装货港']; t_op_seae_edi['装港代码']:=t_op_seae2.DataSet['装港代码']; end; t_op_seae_edi['卸货港']:=t_op_seae2.DataSet['卸货港']; t_op_seae_edi['卸货代码']:=t_op_seae2.DataSet['卸货代码']; t_op_seae_edi['交货地点']:=t_op_seae2.DataSet['装货港']; t_op_seae_edi['交货代码']:=t_op_seae2.DataSet['装港代码']; t_op_seae_edi['目的地']:=t_op_seae2.DataSet['目的地']; t_op_seae_edi['目的代码']:=t_op_seae2.DataSet['目的地代码']; t_op_seae_edi['运输条款']:=t_op_seae2.DataSet['运输条款']; t_op_seae_edi['唛头']:=t_op_seae1.DataSet['唛头']; t_op_seae_edi['货物描述']:=t_op_seae1.DataSet['货物描述']; // t_op_seae_edi['箱号封号']:=t_op_seae1.DataSet['箱号封号']; t_op_seae_edi['件数']:=t_op_seae1.DataSet['件数']; t_op_seae_edi['包装']:=t_op_seae1.DataSet['包装']; t_op_seae_edi['重量']:=t_op_seae1.DataSet['重量']; t_op_seae_edi['尺码']:=t_op_seae1.DataSet['尺码']; t_op_seae_edi['危险品分类']:=t_op_seae2.DataSet['危险品分类']; t_op_seae_edi['危险品编号']:=t_op_seae2.DataSet['危险品编号']; t_op_seae_edi['冷藏通风量']:=t_op_seae2.DataSet['冷藏通风量']; t_op_seae_edi['温度单位']:=t_op_seae2.DataSet['温度单位']; t_op_seae_edi['设置温度']:=t_op_seae2.DataSet['设置温度']; t_op_seae_edi['最低温度']:=t_op_seae2.DataSet['最低温度']; t_op_seae_edi['最高温度']:=t_op_seae2.DataSet['最高温度']; t_op_seae_edi['货物标识']:=t_op_seae2.DataSet['货物标识']; t_op_seae_edi['运费协议号']:=t_op_seae2.DataSet['运费协议号']; t_op_seae_edi['湿度']:=t_op_seae2.DataSet['湿度']; t_op_seae_edi['订舱号码']:=t_op_seae2.DataSet['订舱单号']; t_op_seae_edi['传输目的']:='A'; if Pos('拼箱', t_op_seae2.DataSet.FieldByName('装运方式').AsString)>0 then begin t_op_seae_edi['装运类型']:='LCL'; t_op_seae_edi['是否最后分票']:=0; end else begin t_op_seae_edi['装运类型']:='FCL'; t_op_seae_edi['是否最后分票']:=1; end; t_op_seae_edi['运输方式']:=t_op_seae2.DataSet['运输方式']; t_op_seae_edi['文件类型']:='Master'; t_op_seae_edi.Post; aQuery.Close; aQuery.Parameters.ParamByName('as_id').Value:=t_op_seae1.DataSet.fieldbyname('as_id').AsString; aQuery.Open; t_op_ctn_edi.Close; t_op_ctn_edi.Parameters.ParamByName('编号').Value:=id; t_op_ctn_edi.Open; if aQuery.IsEmpty then begin aQuery.Close; aQuery.Parameters.ParamByName('as_id').Value:=t_op_seae1.DataSet.fieldbyname('as_id').AsString; aQuery.Open; end; aQuery.First; while not aQuery.Eof do begin t_op_ctn_edi.Insert; t_op_ctn_edi['编号']:=id; t_op_ctn_edi['代码']:=aQuery['代码']; t_op_ctn_edi['尺寸']:=aQuery['尺寸']; t_op_ctn_edi['箱型']:=aQuery['箱型']; t_op_ctn_edi['数量']:=1; t_op_ctn_edi['表现形式']:=aQuery['表现形式']; t_op_ctn_edi['箱号']:=aQuery['箱号']; t_op_ctn_edi['封号']:=aQuery['封号']; t_op_ctn_edi['件数']:=aQuery['件数']; t_op_ctn_edi['包装']:=aQuery['包装']; t_op_ctn_edi['重量']:=aQuery['重量']; t_op_ctn_edi['尺码']:=aQuery['尺码']; // t_op_ctn_edi['货描']:=aQuery['货物描述']; t_op_ctn_edi['唛头']:=aQuery['唛头']; if frm_data_share.t_code_ctn.Locate('代码',t_op_ctn_edi.fieldbyname('代码').asstring,[]) then begin if frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='20'then t_op_ctn_edi['TEU']:=1; if (frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='40')OR (frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='45')then t_op_ctn_edi['TEU']:=2; end; t_op_ctn_edi.Post; aQuery.Next; end; except on e:exception do begin ShowMessage(e.Message); end; end; finally FreeAndNil(TempStr); FreeAndNil(aQuery); FreeAndNil(aQuery2); FreeAndNil(aQuerycuststr); FreeAndNil(aQueryCtnDetail); FreeAndNil(aQueryShipper); end; end; end; procedure Tfrm_op_manifest.CreateCustom(typeid:Integer); var str,strbsno:widestring; i:integer; id:string; TempStr:TStringlist; aQuery,aQuery2,aQuerycuststr,aQueryCtnDetail,aQueryShipper:TADOQuery; function getcustedi(cust:string):string; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; result:=''; try aQuery.Close; aQuery.SQL.Text:='select EDI代码 from t_crm_client where 客户简称='''+cust+''''; aQuery.Open; if not aQuery.IsEmpty then result:=aQuery.fieldbyname('EDI代码').AsString; finally FreeAndNil(aQuery); end; end; function GetvesselEdi(avessel: String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select 船舶呼号 from t_code_vessel where 英文船名='''+avessel+''''); Open; if IsEmpty then Result:='a' else Result:=FieldByName('船舶呼号').AsString; end; finally FreeAndNil(aQuery); end; end; begin if 1=1 then begin if not t_op_seae_edi.active then t_op_seae_edi.Open; if not t_op_ctn_detail_edi.active then t_op_ctn_detail_edi.Open; try try TempStr:=TStringList.Create; aQuery:=CreateAdoQuery; aQuery2:=CreateAdoQuery; aQueryCtnDetail:=CreateAdoQuery; aQueryShipper:=CreateAdoQuery; aQuery.sql.Text:='select * from t_op_ctn where 编号=:编号'; t_op_ctn_edi.close; t_op_ctn_edi.sql.Text:='select * from t_op_ctn_edi where 编号=:编号'; aQueryCtnDetail.sql.Text:='select * from t_op_ctn_detail where ctn_id=:ctn_id'; aQuerycuststr:=CreateAdoQuery; aQuerycuststr.sql.text:=' select 电话,国家,洲,城市 from t_crm_client where 客户简称=:客户简称'; aQueryShipper.sql.Text:='select * from t_code_edicode where 客户简称=:客户简称'; id:=get_id; t_op_seae_edi.Insert; t_op_seae_edi['编号']:=id; t_op_seae_edi['主编号']:=t_op_seae1.DataSet['编号']; t_op_seae_edi['EDI类型']:='CN'; t_op_seae_edi['EDI状态']:='未发送'; t_op_seae_edi['当前状态']:='未发送'; t_op_seae_edi['船代']:=bsSkinRadioGroup1.Items[bsSkinRadioGroup1.ItemIndex]; { case bsSkinRadioGroup1.ItemIndex of 0:t_op_seae_edi['船代']:='外代'; 1:t_op_seae_edi['船代']:='外运'; 2:t_op_seae_edi['船代']:='联代'; 3:t_op_seae_edi['船代']:='华港'; 4:t_op_seae_edi['船代']:='远大'; 5:t_op_seae_edi['船代']:='中远'; 6:t_op_seae_edi['船代']:='海丰'; 7:t_op_seae_edi['船代']:='振华'; 8:t_op_seae_edi['船代']:='中通' else t_op_seae_edi['船代']:=''; end; } t_op_seae_edi['录入人']:=employee; t_op_seae_edi['录入日期']:=now; t_op_seae_edi['业务编号']:=t_op_seae1.DataSet['业务编号']; t_op_seae_edi['主提单号']:=t_op_seae1.DataSet['主提单号']; t_op_seae_edi['场站']:=t_op_seae1.DataSet['场站']; // t_op_seae_edi['分提单号']:=t_op_seae1.DataSet['分提单号']; t_op_seae_edi['付费方式']:=t_op_seae1.DataSet['付费方式']; t_op_seae_edi['签单地点']:=t_op_seae1.DataSet['签单地点']; t_op_ams.Close; t_op_ams.parameters[0].value:= t_op_seae1.DataSet['编号']; t_op_ams.open; t_op_seae_edi['发货人企业代码'] := t_op_ams['发货人企业代码']; t_op_seae_edi['发货人电话'] := t_op_ams['发货人联系电话']; t_op_seae_edi['发货人邮箱'] := t_op_ams['发货人邮箱']; t_op_seae_edi['发货人国家代码'] := t_op_ams['发货人国家代码']; t_op_seae_edi['收货人企业代码'] := t_op_ams['收货人企业代码']; t_op_seae_edi['收货人电话'] := t_op_ams['收货人联系电话']; t_op_seae_edi['收货人邮箱'] := t_op_ams['收货人邮箱']; t_op_seae_edi['收货人国家代码'] := t_op_ams['收货人国家代码']; t_op_seae_edi['通知人企业代码'] := t_op_ams['通知人企业代码']; t_op_seae_edi['通知人电话'] := t_op_ams['通知人联系电话']; t_op_seae_edi['通知人邮箱'] := t_op_ams['通知人邮箱']; t_op_seae_edi['通知人国家代码'] := t_op_ams['通知人国家代码']; t_op_seae_edi['发货人代码']:=t_op_seae1.DataSet['发货人代码']; t_op_seae_edi['船公司代码']:=getcustedi(RxDBLookupCombo1.DisplayValues[1]); t_op_seae_edi['船公司']:=RxDBLookupCombo1.DisplayValues[1]; TempStr.Text:=t_op_seae1.DataSet.fieldbyname('发货人代码').AsString; if TempStr.Count>=1 then t_op_seae_edi['发货人名称']:=TempStr.Strings[0]; if TempStr.Count>=2 then t_op_seae_edi['发货人地址1']:=TempStr.Strings[1]; if TempStr.Count>=3 then t_op_seae_edi['发货人地址2']:=TempStr.Strings[2]; if TempStr.Count>=4 then t_op_seae_edi['发货人地址3']:=TempStr.Strings[3]; t_op_seae_edi['发货人']:=t_op_seae1.DataSet.FieldByName('发货人').AsString; if t_op_seae1.DataSet.FieldByName('发货人').AsString<>'' then begin aQueryShipper.Close; aQueryShipper.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('发货人').AsString; aQueryShipper.Open; if not aQueryShipper.IsEmpty then begin t_op_seae_edi.fieldbyname('发货人名称').AsString:=aQueryShipper.FieldByName('名称').AsString; t_op_seae_edi.fieldbyname('发货人地址1').AsString:=aQueryShipper.FieldByName('地址1').AsString; t_op_seae_edi.fieldbyname('发货人地址2').AsString:=aQueryShipper.FieldByName('地址2').AsString; t_op_seae_edi.fieldbyname('发货人地址3').AsString:=aQueryShipper.FieldByName('地址3').AsString; t_op_seae_edi.fieldbyname('发货人城市').AsString:=aQueryShipper.FieldByName('城市').AsString; t_op_seae_edi.fieldbyname('发货人邮编').AsString:=aQueryShipper.FieldByName('邮编').AsString; // t_op_seae_edi.fieldbyname('发货人国家代码').AsString:=aQueryShipper.FieldByName('国家代码').AsString; t_op_seae_edi.fieldbyname('发货人联系人').AsString:=aQueryShipper.FieldByName('联系人').AsString; //t_op_seae_edi.fieldbyname('发货人电话').AsString:=aQueryShipper.FieldByName('电话').AsString; t_op_seae_edi.fieldbyname('发货人州').AsString:=aQueryShipper.FieldByName('州').AsString; end else begin aQuerycuststr.close; aQuerycuststr.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('发货人').AsString; aQuerycuststr.Open; if not aQuerycuststr.IsEmpty then begin t_op_seae_edi['发货人城市']:=aQuerycuststr.fieldbyname('城市').AsString; // t_op_seae_edi['发货人国家代码']:=aQuerycuststr.fieldbyname('国家').AsString; // t_op_seae_edi['发货人电话']:=aQuerycuststr.fieldbyname('电话').AsString; t_op_seae_edi['发货人州']:=aQuerycuststr.fieldbyname('洲').AsString; end; end; end; TempStr.Text:=t_op_seae1.DataSet.fieldbyname('收货人代码').AsString; if TempStr.Count>=1 then t_op_seae_edi['收货人名称']:=TempStr.Strings[0]; if TempStr.Count>=2 then t_op_seae_edi['收货人地址1']:=TempStr.Strings[1]; if TempStr.Count>=3 then t_op_seae_edi['收货人地址2']:=TempStr.Strings[2]; if TempStr.Count>=4 then t_op_seae_edi['收货人地址3']:=TempStr.Strings[3]; t_op_seae_edi['收货人']:=t_op_seae1.DataSet.FieldByName('收货人').AsString; t_op_seae_edi['收货人代码']:=t_op_seae1.DataSet['收货人代码']; if t_op_seae1.DataSet.FieldByName('收货人').AsString<>'' then begin aQueryShipper.Close; aQueryShipper.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('收货人').AsString; aQueryShipper.Open; if not aQueryShipper.IsEmpty then begin t_op_seae_edi.fieldbyname('收货人名称').AsString:=aQueryShipper.FieldByName('名称').AsString; t_op_seae_edi.fieldbyname('收货人地址1').AsString:=aQueryShipper.FieldByName('地址1').AsString; t_op_seae_edi.fieldbyname('收货人地址2').AsString:=aQueryShipper.FieldByName('地址2').AsString; t_op_seae_edi.fieldbyname('收货人地址3').AsString:=aQueryShipper.FieldByName('地址3').AsString; t_op_seae_edi.fieldbyname('收货人城市').AsString:=aQueryShipper.FieldByName('城市').AsString; t_op_seae_edi.fieldbyname('收货人邮编').AsString:=aQueryShipper.FieldByName('邮编').AsString; // t_op_seae_edi.fieldbyname('收货人国家代码').AsString:=aQueryShipper.FieldByName('国家代码').AsString; t_op_seae_edi.fieldbyname('收货人联系人').AsString:=aQueryShipper.FieldByName('联系人').AsString; // t_op_seae_edi.fieldbyname('收货人电话').AsString:=aQueryShipper.FieldByName('电话').AsString; t_op_seae_edi.fieldbyname('收货人州').AsString:=aQueryShipper.FieldByName('州').AsString; end else begin aQuerycuststr.close; aQuerycuststr.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('收货人').AsString; aQuerycuststr.Open; if not aQuerycuststr.IsEmpty then begin t_op_seae_edi['收货人城市']:=aQuerycuststr.fieldbyname('城市').AsString; // t_op_seae_edi['收货人国家代码']:=aQuerycuststr.fieldbyname('国家').AsString; // t_op_seae_edi['收货人电话']:=aQuerycuststr.fieldbyname('电话').AsString; t_op_seae_edi['收货人州']:=aQuerycuststr.fieldbyname('洲').AsString; end; end; end; TempStr.Text:=t_op_seae1.DataSet.fieldbyname('通知人代码').AsString; if TempStr.Count>=1 then t_op_seae_edi['通知人名称']:=TempStr.Strings[0]; if TempStr.Count>=2 then t_op_seae_edi['通知人地址1']:=TempStr.Strings[1]; if TempStr.Count>=3 then t_op_seae_edi['通知人地址2']:=TempStr.Strings[2]; if TempStr.Count>=4 then t_op_seae_edi['通知人地址3']:=TempStr.Strings[3]; t_op_seae_edi['通知人']:=t_op_seae1.DataSet.FieldByName('通知人').AsString; t_op_seae_edi['通知人代码']:=t_op_seae1.DataSet['通知人代码']; if t_op_seae1.DataSet.FieldByName('通知人').AsString<>'' then begin aQueryShipper.Close; aQueryShipper.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('通知人').AsString; aQueryShipper.Open; if not aQueryShipper.IsEmpty then begin t_op_seae_edi.fieldbyname('通知人名称').AsString:=aQueryShipper.FieldByName('名称').AsString; t_op_seae_edi.fieldbyname('通知人地址1').AsString:=aQueryShipper.FieldByName('地址1').AsString; t_op_seae_edi.fieldbyname('通知人地址2').AsString:=aQueryShipper.FieldByName('地址2').AsString; t_op_seae_edi.fieldbyname('通知人地址3').AsString:=aQueryShipper.FieldByName('地址3').AsString; t_op_seae_edi.fieldbyname('通知人城市').AsString:=aQueryShipper.FieldByName('城市').AsString; t_op_seae_edi.fieldbyname('通知人邮编').AsString:=aQueryShipper.FieldByName('邮编').AsString; // t_op_seae_edi.fieldbyname('通知人国家代码').AsString:=aQueryShipper.FieldByName('国家代码').AsString; t_op_seae_edi.fieldbyname('通知人联系人').AsString:=aQueryShipper.FieldByName('联系人').AsString; // t_op_seae_edi.fieldbyname('通知人电话').AsString:=aQueryShipper.FieldByName('电话').AsString; t_op_seae_edi.fieldbyname('通知人州').AsString:=aQueryShipper.FieldByName('州').AsString; end else begin aQuerycuststr.close; aQuerycuststr.Parameters.ParamByName('客户简称').Value:=t_op_seae1.DataSet.FieldByName('通知人').AsString; aQuerycuststr.Open; if not aQuerycuststr.IsEmpty then begin t_op_seae_edi['通知人城市']:=aQuerycuststr.fieldbyname('城市').AsString; // t_op_seae_edi['通知人国家代码']:=aQuerycuststr.fieldbyname('国家').AsString; // t_op_seae_edi['通知人电话']:=aQuerycuststr.fieldbyname('电话').AsString; t_op_seae_edi['通知人州']:=aQuerycuststr.fieldbyname('洲').AsString; end; end; end; t_op_seae_edi['船名']:=t_op_seae1.DataSet['船名']; t_op_seae_edi['船舶IMO']:=GetvesselEdi(t_op_seae1.DataSet.fieldbyname('船名').AsString); t_op_seae_edi['航次']:=t_op_seae1.DataSet['航次']; t_op_seae_edi['开船日期']:=t_op_seae1.DataSet['开船日期']; t_op_seae_edi['预抵日期']:=t_op_seae1.DataSet['预抵日期']; if typeid=3 then begin if t_op_seae1.DataSet['装港代码']='CNTAO' then begin t_op_seae_edi['装货港']:='QingQianWanGang'; t_op_seae_edi['装港代码']:='CNQWG/4258'; end else begin t_op_seae_edi['装货港']:=t_op_seae1.DataSet['装货港']; t_op_seae_edi['装港代码']:=t_op_seae1.DataSet['装港代码']; end; end else begin t_op_seae_edi['装货港']:=t_op_seae1.DataSet['装货港']; t_op_seae_edi['装港代码']:=t_op_seae1.DataSet['装港代码']; end; t_op_seae_edi['卸货港']:=t_op_seae1.DataSet['卸货港']; t_op_seae_edi['卸货代码']:=t_op_seae1.DataSet['卸货代码']; t_op_seae_edi['交货地点']:=t_op_seae1.DataSet['装货港']; t_op_seae_edi['交货代码']:=t_op_seae1.DataSet['装港代码']; t_op_seae_edi['目的地']:=t_op_seae1.DataSet['目的地']; t_op_seae_edi['目的代码']:=t_op_seae1.DataSet['目的地代码']; t_op_seae_edi['运输条款']:=t_op_seae1.DataSet['运输条款']; t_op_seae_edi['唛头']:=t_op_seae1.DataSet['唛头']; t_op_seae_edi['货物描述']:=t_op_seae1.DataSet['货物描述']; t_op_seae_edi['箱号封号']:=t_op_seae1.DataSet['箱号封号']; t_op_seae_edi['件数']:=t_op_seae1.DataSet['件数']; t_op_seae_edi['包装']:=t_op_seae1.DataSet['包装']; t_op_seae_edi['重量']:=t_op_seae1.DataSet['重量']; t_op_seae_edi['尺码']:=t_op_seae1.DataSet['尺码']; t_op_seae_edi['危险品分类']:=t_op_seae1.DataSet['危险品分类']; t_op_seae_edi['危险品编号']:=t_op_seae1.DataSet['危险品编号']; t_op_seae_edi['冷藏通风量']:=t_op_seae1.DataSet['冷藏通风量']; t_op_seae_edi['温度单位']:=t_op_seae1.DataSet['温度单位']; t_op_seae_edi['设置温度']:=t_op_seae1.DataSet['设置温度']; t_op_seae_edi['最低温度']:=t_op_seae1.DataSet['最低温度']; t_op_seae_edi['最高温度']:=t_op_seae1.DataSet['最高温度']; t_op_seae_edi['货物标识']:=t_op_seae1.DataSet['货物标识']; t_op_seae_edi['运费协议号']:=t_op_seae1.DataSet['运费协议号']; t_op_seae_edi['湿度']:=t_op_seae1.DataSet['湿度']; t_op_seae_edi['订舱号码']:=t_op_seae1.DataSet['订舱单号']; t_op_seae_edi['传输目的']:='A'; if Pos('拼箱', t_op_seae1.DataSet.FieldByName('装运方式').AsString)>0 then begin t_op_seae_edi['装运类型']:='LCL'; t_op_seae_edi['是否最后分票']:=0; end else begin t_op_seae_edi['装运类型']:='FCL'; t_op_seae_edi['是否最后分票']:=1; end; t_op_seae_edi['运输方式']:=t_op_seae1.DataSet['运输方式']; t_op_seae_edi['文件类型']:='Master'; t_op_seae_edi.Post; aQuery.Close; aQuery.Parameters.ParamByName('编号').Value:=t_op_seae1.DataSet.fieldbyname('编号').AsString; aQuery.Open; t_op_ctn_edi.Close; t_op_ctn_edi.Parameters.ParamByName('编号').Value:=id; t_op_ctn_edi.Open; if aQuery.IsEmpty then begin aQuery.Close; aQuery.Parameters.ParamByName('编号').Value:=t_op_seae1.DataSet.fieldbyname('主编号').AsString; aQuery.Open; end; aQuery.First; while not aQuery.Eof do begin t_op_ctn_edi.Insert; t_op_ctn_edi['编号']:=id; t_op_ctn_edi['代码']:=aQuery['代码']; t_op_ctn_edi['尺寸']:=aQuery['尺寸']; t_op_ctn_edi['箱型']:=aQuery['箱型']; t_op_ctn_edi['数量']:=1; t_op_ctn_edi['表现形式']:=aQuery['表现形式']; t_op_ctn_edi['箱号']:=aQuery['箱号']; t_op_ctn_edi['封号']:=aQuery['封号']; t_op_ctn_edi['件数']:=aQuery['件数']; t_op_ctn_edi['包装']:=aQuery['包装']; t_op_ctn_edi['重量']:=aQuery['重量']; t_op_ctn_edi['尺码']:=aQuery['尺码']; t_op_ctn_edi['货描']:=aQuery['货物描述']; t_op_ctn_edi['唛头']:=aQuery['唛头']; if frm_data_share.t_code_ctn.Locate('代码',t_op_ctn_edi.fieldbyname('代码').asstring,[]) then begin if frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='20'then t_op_ctn_edi['TEU']:=1; if (frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='40')OR (frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='45')then t_op_ctn_edi['TEU']:=2; end; t_op_ctn_edi.Post; aQuery.Next; end; except on e:exception do begin ShowMessage(e.Message); end; end; finally FreeAndNil(TempStr); FreeAndNil(aQuery); FreeAndNil(aQuery2); FreeAndNil(aQuerycuststr); FreeAndNil(aQueryCtnDetail); FreeAndNil(aQueryShipper); end; end; end; function Tfrm_op_manifest.CreateSIEdiFile_MBL:TStrings; var str:Tstringlist; Tempstr : TStrings; Temprslt : string; i,j,Count:integer; strsql,strRmain:string; rs,aQuery2:Tadoquery; wide_str:widestring; k:integer; strType,XType,TransType:string; strDatetime:string; SenderCode,ReciverCode:string; aAdoQuery,bAdoQuery:TAdoQuery; SendOp,SendTel:string; begin SendOp:=employee; SendTel:=frm_data_share.t_load_employee.fieldByName('固定电话').AsString; aAdoQuery:=CreateAdoQuery; SenderCode:=frm_data_share.t_sys_company.fieldByName('简称').AsString; ReciverCode:=''; strType:='9'; str:=Tstringlist.Create; str.Clear; str.Add('00:CN2101:'+t_op_seae_edi.fieldbyname('船代').asstring+':'+trim(strType)+':'+ SenderCode+':'+ReciverCode+':'+GetDatetime(datetimetostr(now),4)+':1.0'+':'+SendOp+':'+SendTel+#39); // Count:=0; str.Add ('10' +':'+t_op_seae_edi.fieldbyname('船舶IMO').asstring // 2 船舶IMO编号 +':'+ trim(t_op_seae_edi.fieldbyname('船名').AsString) //3船名 +':'+t_op_seae_edi.fieldbyname('船公司').asstring //4舶国籍代码 +':'+ trim(t_op_seae_edi.fieldbyname('航次').asstring) //5航次 +':' //6 航线代码 +':' //7 航线 +':' //8预计到达日期 +':'+ GetDatetime(t_op_seae_edi.fieldbyname('开船日期').asstring,1) //9 离港日期(船舶启运日期和时间) +':'+t_op_seae_edi.fieldbyname('装港代码').asstring // 10离港地点代码(船舶离境地海关代码) +':'+t_op_seae_edi.fieldbyname('装货港').asstring // 11 离港地点 +':' //12 下一挂港代码 +':' //13 下一挂港 +':' //14集装箱箱数 +':1' //15运输方式代码 +#39); str.Add('11' +':'+t_op_seae_edi.fieldbyname('船公司代码').AsString //2 船公司(承运人)代码 +':' //3 船公司(承运人) +':'+SenderCode //4舱单传输人名称 ??? +':'+trim(t_op_seae_edi.fieldbyname('场站').asstring) //5船舶代理企业代码 +':'+trim(t_op_seae_edi.fieldbyname('卸货代码').asstring) //6船舶抵达关境内第一个目的港代码 +':'+ GetDatetime(t_op_seae_edi.fieldbyname('预抵日期').asstring,1) //7船舶抵达关境内第一个目的港的日期和时间 + #39); xtype :=t_op_seae_edi.fieldbyname('付费方式').asstring; TransType:=t_op_seae_edi.fieldbyname('运输条款').asstring; str.add('12:' + trim(t_op_seae_edi.fieldbyname('主提单号').asstring) //2总提运单号 +':' //3 前程运输船名代码 +':' //4 前程运输船名 +':' //5 前程运输航次 +':'+trim(t_op_seae_edi.fieldbyname('交货代码').asstring) //6 收货地代码 +':'+ trim(t_op_seae_edi.fieldbyname('交货地点').asstring) //7收货地名称 +':'+ trim(t_op_seae_edi.fieldbyname('装港代码').asstring) //8装货港代码 +':'+ trim(t_op_seae_edi.fieldbyname('装货港').asstring) //9装货港 +':'+TransType //10运输条款 +':'+ XType //11付款方式(运费支付方法代码) +':'+ GetDatetime(t_op_seae_edi.fieldbyname('开船日期').asstring,1) //12 离港日期(船舶启运日期和时间) +':' //13检疫代码 +':' //14签发日期 +':' //15币种(金额类型代码) +':' //16 汇率 +':'+trim(t_op_seae_edi.fieldbyname('分提单号').asstring) //17 分提运单号 +':' +trim(t_op_seae_edi.fieldbyname('件数').asstring) //18 托运货物总件数 +':'+trim(GetpkgsEdi(t_op_seae_edi.fieldbyname('包装').asstring)) //19 包装种类代码 +':'+trim(t_op_seae_edi.fieldbyname('重量').asstring) //20 货物总毛重 +':' //21 货物体积 +':' //22 托运货物价值 +':' //23 码头作业指令代码 +':' //24 拆箱人代码 +':' //25 前一海关单证号 +':' //26 前一海关单证类型代码 +':001' //27 货物海关处理状态代码(1~99) +#39); str.add('13:' + trim(t_op_seae_edi.fieldbyname('卸货代码').asstring) //2卸货地代码 ??? +':'+ trim(t_op_seae_edi.fieldbyname('卸货港').asstring) //3卸货港 +':'+ trim(t_op_seae_edi.fieldbyname('目的代码').asstring) //4交货地代码 +':'+ trim(t_op_seae_edi.fieldbyname('目的地').asstring) //5交货地 + ':' // 6 中转港代码 + ':' // 7 中转港 + ':CN' // 8 提单签发地代码(货物托运地或者国家代码) +':' // 9 +':' // 10 +':' +GetDatetime(t_op_seae_edi.fieldbyname('预抵日期').asstring,0) // 11 +':' // 12 +':' // 13 +#39); str.add('16' +':'+ Changestr(t_op_seae_edi.fieldbyname('发货人企业代码').AsString) //2 发货人代码 +':'+ Changestr(t_op_seae_edi.fieldbyname('发货人名称').AsString) //3发货人名称 +':'+ Changestr(t_op_seae_edi.fieldbyname('发货人地址1').AsString) //4发货人地址(街道,邮箱) +':'+ Changestr(t_op_seae_edi.fieldbyname('发货人城市').AsString) //5 城市名称 +':' //6 省份代码 +':'+ Changestr(t_op_seae_edi.fieldbyname('发货人州').AsString) //7 省份名称 +':'+ Changestr(t_op_seae_edi.fieldbyname('发货人邮编').AsString) //8 邮政编码 +':'+ Changestr(t_op_seae_edi.fieldbyname('发货人国家代码').AsString) //9 国家代码 +':' //10 联系人 +':'+ Changestr(t_op_seae_edi.fieldbyname('发货人电话').AsString) //11 电话 +':'+ Changestr(t_op_seae_edi.fieldbyname('发货人邮箱').AsString) //12 发货人EMAIL +#39); str.add('17' +':'+ Changestr(t_op_seae_edi.fieldbyname('收货人企业代码').AsString) //2 收货人代码 +':'+ Changestr(t_op_seae_edi.fieldbyname('收货人名称').AsString) //3收货人名称 +':'+ Changestr(t_op_seae_edi.fieldbyname('收货人地址1').AsString) //4收货人地址(街道,邮箱) +':'+ Changestr(t_op_seae_edi.fieldbyname('收货人城市').AsString) //5 城市名称 +':' //6 省份代码 +':'+ Changestr(t_op_seae_edi.fieldbyname('收货人州').AsString) //7 省份名称 +':'+ Changestr(t_op_seae_edi.fieldbyname('收货人邮编').AsString) //8 邮政编码 +':'+ Changestr(t_op_seae_edi.fieldbyname('收货人国家代码').AsString) //9 国家代码 +':' //10 联系人 +':'+ Changestr(t_op_seae_edi.fieldbyname('收货人电话').AsString) //11 收货人电话 +':'+ Changestr(t_op_seae_edi.fieldbyname('收货人邮箱').AsString) //12 收货人EMAIL +':' ///13 收货人具体联系人名称 +':' ///14 收货人具体联系人电话 +':' ///15 收货人具体联系人EMAIL +':' ///16 收货人具体联系人传真 +#39); str.add('18' +':'+ Changestr(t_op_seae_edi.fieldbyname('通知人企业代码').AsString) //2 通知人代码 +':'+ Changestr(t_op_seae_edi.fieldbyname('通知人名称').AsString) //3通知人名称 +':'+ Changestr(t_op_seae_edi.fieldbyname('通知人地址1').AsString) //4通知人地址(街道,邮箱) +':'+ Changestr(t_op_seae_edi.fieldbyname('通知人城市').AsString) //5 城市名称 +':' //6 省份代码 +':'+ Changestr(t_op_seae_edi.fieldbyname('通知人州').AsString) //7 省份名称 +':'+ Changestr(t_op_seae_edi.fieldbyname('通知人邮编').AsString) //8 邮政编码 +':'+ Changestr(t_op_seae_edi.fieldbyname('通知人国家代码').AsString) //9 国家代码 +':' //10 联系人 +':'+ Changestr(t_op_seae_edi.fieldbyname('通知人电话').AsString) //11 通知人电话 +':'+ Changestr(t_op_seae_edi.fieldbyname('通知人邮箱').AsString) //11 通知人EMAIL +#39); str.Add ('41:1' //2货物序号 +':' //3货类代码 +':'+trim(t_op_seae_edi.fieldbyname('件数').asstring) //4 货物件数 +':'+trim(GetpkgsEdi(t_op_seae_edi.fieldbyname('包装').asstring)) //5 包装种类代码 +':'+trim(t_op_seae_edi.fieldbyname('包装').asstring) // 6 包装类型 +':'+trim(t_op_seae_edi.fieldbyname('重量').asstring) // 7货毛重 +':'+trim(t_op_seae_edi.fieldbyname('重量').asstring) // 8货净重 +':'+trim(t_op_seae_edi.fieldbyname('尺码').asstring) // 9货尺码 +':' // 10海关税则编号 +':' // 11海关手续代码 +':' // 12原产地代码 +#39); with aAdoQuery do begin Close;sql.Clear; sql.Add('select 箱号'); sql.Add('from t_op_ctn_edi'); sql.Add('where 编号=:编号'); Parameters.ParamByName('编号').Value:=t_op_seae_edi.fieldbyname('编号').asstring; Open;First; while not Eof do begin str.Add ('42' +':'+trim(fieldbyname('箱号').asstring) //2 箱号 +#39); Count:=Count+1; Next; end; end; if trim(t_op_seae_edi.FieldByName('货物标识').asstring)='D' then begin str.Add ('43:'+trim(t_op_seae_edi.fieldbyname('危险品分类').asstring) //2危险品分类 +':none' //3危险品页号 +':' +trim(t_op_seae_edi.fieldbyname('危险品编号').asstring) //4联合国危险品编号 +':none' //5危险品标签 +':' //6 危险货物闪点 +':' //7 船运危险品应急措施号 +':' //8 医疗急救指南号 +':' //9 应急联系 +':' //10 温度计量单位 +':' //11 设置温度 +':' //12 冷藏最低温度 +':' //13 冷藏最高温度 +':' //14 危险品联系人姓名 +':' //15 危险品联系人电话 +':' //16 危险品联系人EMAIL +':' //17 危险品联系人传真 +#39); end else if trim(t_op_seae_edi.FieldByName('货物标识').asstring)='R' then begin str.Add ('43:' //2危险品分类 +':' //3危险品页号 +':' //4联合国危险品编号 +':' //5危险品标签 +':' //6 危险货物闪点 +':' //7 船运危险品应急措施号 +':' //8 医疗急救指南号 +':' //9 应急联系 +':C' //10 温度计量单位 +':'+t_op_seae_edi.fieldbyname('设置温度').asstring //11 设置温度 +':' //12 冷藏最低温度 +':' //13 冷藏最高温度 +':' //14 危险品联系人姓名 +':' //15 危险品联系人电话 +':' //16 危险品联系人EMAIL +':' //17 危险品联系人传真 +#39); end; Temprslt:=Changestr(t_op_seae_edi.fieldbyname('唛头').asstring); Temprslt:=StringReplace(Temprslt,#13#10,' ',[rfReplaceAll]); str.Add ('44:' +Temprslt + #39); Temprslt:=Changestr(t_op_seae_edi.fieldbyname('货物描述').asstring); Temprslt:=StringReplace(Temprslt,#13#10,' ',[rfReplaceAll]); str.Add ('47:' + Temprslt+ ':' + #39); Count:=Count+10; strsql:='select * from t_op_ctn_edi ' +'WHERE 编号=' +#39+t_op_seae_edi.fieldbyname('编号').asstring+#39; try rs:=Tadoquery.Create(application); rs.Connection := frm_main.db; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; if not rs.IsEmpty then begin rs.First; while not rs.Eof do begin str.Add ('51:001' //2货物序号 +':'+trim(rs.fieldbyname('箱号').asstring) //3箱号 +':'+trim(rs.fieldbyname('封号').asstring) //4主铅封号 +':'+Trim(rs.fieldbyname('尺寸').asstring+rs.fieldbyname('箱型').asstring) //5集装箱尺寸类型 +':8' //6箱状态(重箱或者空箱标识代码) +':' +trim(IntToStr(rs.fieldbyname('件数').AsInteger)) //7箱内货物件数 +':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat)) //8箱内货重 +':0' //9箱皮重 +':'+trim(FloatToStr(rs.fieldbyname('尺码').AsFloat)) //10箱内货物尺码 +':'+trim(rs.fieldbyname('包装').asstring) //11 +':' //12 +':' //13 +':' // 14 +':' // 15 +':' // 16 +':2' // 17 +#39); str.Add ('52' +':'+trim(rs.fieldbyname('封号').asstring) //2 封志号 +':M' //3 封志类型 +':CA' //4 施加封志人 +#39); Count:=Count+1; rs.Next; end; end; rs.Close; rs.Destroy; except on e:exception do begin rs.Close; rs.Destroy; exit; end; end; str.Add ('99:'+ inttostr(Count+2)+#39); Result:=str; close; end; function Tfrm_op_manifest.CreateSIEdiFile_XML:TStrings; var str:Tstringlist; i,j,k,l,Count:integer; strsql,strRmain:string; rs:Tadoquery; wide_str:widestring; strType,XType,TransType:string; strDatetime,IMO:string; SenderCode,ReciverCode:string; alist,alisttemp:TStringList; begin SenderCode:=trim(get_parameters_value(302,'')) ; ReciverCode:=trim(get_parameters_value(303,'')) ; strType:='9'; str:=Tstringlist.Create; str.Clear; str.Add(''); // str.Add(''); str.Add(''); str.Add(''); // str.Add(''+SenderCode+trim(t_op_seae_edi.fieldbyname('主提单号').asstring)+GetDatetime(datetimetostr(now),3)+IntToStr(GetTickCount)+''); // str.Add(''+strType+''); // str.Add('MT2101'); // str.Add(''+SenderCode+''); // str.Add(''+ReciverCode+''); // str.Add(''+GetDatetime(datetimetostr(now),4)+''); // str.Add('1.0'); str.Add(''); // str.Add(''); // str.Add(''); // str.Add(''+SenderCode+''); str.Add(''); // str.Add(''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('装港代码').asstring)+''); str.Add(''); // str.Add(''); // str.Add(''+SenderCode+''); str.Add(''); // str.Add(''); // str.Add(''+t_op_seae_edi.fieldbyname('船公司代码').AsString+''); str.Add(''); // str.Add(''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('航次').asstring)+''); // str.Add('1'); // str.Add(''+trim(t_op_seae_edi.fieldbyname('船舶IMO').asstring)+''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('船名').AsString)+''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('卸货代码').asstring)+''); // str.Add(''+GetDatetime(t_op_seae_edi.fieldbyname('开船日期').asstring,1)+'086'+''); // str.Add(''+GetDatetime(t_op_seae_edi.fieldbyname('预抵日期').asstring,1)+'086'+''); str.Add(''); // str.Add(''); // str.Add(''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('主提单号').asstring)+''); if pos('FREIGHT PREPAID',trim(t_op_seae_edi.fieldbyname('付费方式').asstring)) >0 then xtype := 'PP' else if pos('FREIGHT COLLECT',trim(t_op_seae_edi.fieldbyname('付费方式').asstring)) >0 then xtype := 'CC' else xtype := 'PP'; if uppercase(t_op_seae_edi.fieldbyname('运输条款').asstring)='CY-CY' then TransType:='10' else if uppercase(t_op_seae_edi.fieldbyname('运输条款').asstring)='DOOR-DOOR' then TransType:='27' else if uppercase(t_op_seae_edi.fieldbyname('运输条款').asstring)='DOOR-PIER' then TransType:='28' else if uppercase(t_op_seae_edi.fieldbyname('运输条款').asstring)='PIER-DOOR' then TransType:='29' else TransType:='10'; // PIER TO PIER // str.Add(''+TransType+''); // { str.Add(''); // str.Add(''); str.Add(''); } str.Add(''); // { if trim(t_op_seae_edi.fieldbyname('分提单号').asstring)<>'' then begin str.Add(''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('分提单号').asstring)+''); str.Add(''); end else begin end; } // str.Add(''+trim(t_op_seae_edi.fieldbyname('尺码').asstring)+''); // // str.Add(''); // str.Add(''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('装港代码').asstring)+''); // str.Add(''+GetDatetime(t_op_seae_edi.fieldbyname('开船日期').asstring,1)+'086'+''); str.Add(''); // str.Add(''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('卸货代码').asstring)+''); // str.Add(''+GetDatetime(t_op_seae_edi.fieldbyname('预抵日期').asstring,0)+''); str.Add(''); // str.Add(''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('目的代码').asstring)+''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('目的地').asstring)+''); str.Add(''); { // str.Add(''); // str.Add('); str.Add('') } // str.Add(''); // str.Add(''+xtype+''); str.Add(''); // str.Add(''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('件数').asstring)+''); // str.Add(''+trim(GetpkgsEdi(t_op_seae_edi.fieldbyname('包装').asstring))+''); str.Add(''); // str.Add(''+trim(t_op_seae_edi.fieldbyname('重量').asstring)+''); { } // str.Add(''); // str.Add('10'); // str.Add(''+formatAfrstr(trim(t_op_seae_edi.fieldbyname('收货人名称').AsString))+''); // str.Add('
'); // str.Add(''+formatAfrstr(trim(t_op_seae_edi.fieldbyname('收货人地址1').AsString))+''); { } str.Add('
'); { } str.Add('
'); // str.Add(''); // str.Add('11'); // str.Add(''+formatAfrstr(trim(t_op_seae_edi.fieldbyname('发货人名称').AsString))+''); // str.Add('
'); // str.Add(''+trim(t_op_seae_edi.fieldbyname('发货人地址1').AsString)+''); { } str.Add('
'); { } str.Add('
'); // str.Add(''); // str.Add('13'); // str.Add(''+formatAfrstr(trim(t_op_seae_edi.fieldbyname('通知人名称').AsString))+''); // str.Add('
'); // str.Add(''+formatAfrstr(trim(t_op_seae_edi.fieldbyname('通知人地址1').AsString))+''); { } str.Add('
'); { } str.Add('
'); { } strsql:='select * from t_op_ctn_edi ' +'WHERE 编号=' +#39+t_op_seae_edi.fieldbyname('编号').asstring+#39; try rs:=CreateAdoQuery; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; if not rs.IsEmpty then begin rs.First; while not rs.Eof do begin // str.Add(''); // str.Add(''); // str.Add(''+rs.fieldbyname('箱号').asstring+''); str.Add(''); // str.Add(''+GetCtnCode(rs.fieldbyname('箱型').asstring,rs.fieldbyname('尺寸').asstring)+''); // str.Add('2'); // str.Add('5'); // str.Add('M/'+trim(rs.fieldbyname('封号').asstring)+''); str.Add(''); rs.Next; end; end; rs.Close; rs.Destroy; except on e:exception do begin rs.Close; rs.Destroy; exit; end; end; k:=1; alist:=TStringList.Create; alisttemp:=TStringList.Create; strsql:='select * from t_op_ctn_edi ' +'WHERE 编号=' +#39+t_op_seae_edi.fieldbyname('编号').asstring+#39; try rs:=CreateAdoQuery; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; if not rs.IsEmpty then begin rs.First; while not rs.Eof do begin // str.Add(''); // str.Add(''+inttostr(k)+''); // str.Add(''); // str.Add(''+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+''); // str.Add(''+trim(GetpkgsEdi(rs.fieldbyname('包装').asstring)) +''); alist.text:=''; if trim(rs.fieldbyname('唛头').asstring)<>'' then alist.text:=trim(rs.fieldbyname('唛头').asstring) else alist.text:=trim(t_op_seae_edi.fieldbyname('唛头').asstring); alisttemp.Clear; for l:=0 to alist.Count-1 do begin alisttemp.Add(formatAfrstr(alist[l])); end; // str.Add(''+alisttemp.text+''); str.Add(''); alist.text:=''; if trim(rs.fieldbyname('货描').asstring)<>'' then alist.text:=trim(rs.fieldbyname('货描').asstring) else alist.text:=trim(t_op_seae_edi.fieldbyname('货物描述').asstring); alisttemp.Clear; for l:=0 to alist.Count-1 do begin alisttemp.Add(formatAfrstr(alist[l])); end; // str.Add(''); // str.Add(''+alisttemp.text+''); // if trim(t_op_seae_edi.FieldByName('货物标识').asstring)='D' then begin str.Add(''+trim(t_op_seae_edi.fieldbyname('危险品编号').asstring)+''); end; // if trim(rs.fieldbyname('HTS号').asstring)<>'' then str.Add(''+rs.fieldbyname('HTS号').asstring+'') else begin if trim(t_op_seae_edi.fieldbyname('运输方式').asstring)<>'' then str.Add(''+trim(t_op_seae_edi.fieldbyname('运输方式').asstring)+''); end; str.Add(''); // { str.Add(''); // str.Add(''); str.Add(''); } // str.Add(''); // str.Add(''+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+''); str.Add(''); // str.Add(''); // str.Add(''+trim(rs.fieldbyname('箱号').asstring)+''); str.Add(''); // { str.Add(''); // str.Add(''); str.Add(''); } { // str.Add(''); // str.Add(''); str.Add(''); } // { str.Add(''); // str.Add(''); str.Add(''); } str.Add(''); k:=k+1; rs.Next; end; end; rs.Close; rs.Destroy; alist.Free; alisttemp.Free; except on e:exception do begin rs.Close; rs.Destroy; exit; end; end; str.Add('
'); // { str.Add(''); // str.Add(''); str.Add(''); } str.Add('
'); str.Add('
'); Result:=str; end; procedure Tfrm_op_manifest.getwebservice_ds; begin try mHttpRIO_ds:=THTTPRIO.Create(nil); mHttpRIO_ds.WSDLLocation:='http://122.4.79.84:8090/webservice/DsWebService.asmx?WSDL'; mHttpRIO_ds.URL:='http://122.4.79.84:8090/webservice/DsWebService.asmx'; mHttpRIO_ds.Port:='DsWebServiceSoap'; mHttpRIO_ds.Service:='DsWebService'; mHttpRIO_ds.HTTPWebNode.UseUTF8InHeader:=true; mServiceSoap_Ds:=mHttpRIO_ds as DsWebServiceSoap; InvRegistry.RegisterInvokeOptions(TypeInfo(DsWebServiceSoap),ioDocument );//就是这一行 { mHttpRIO_ds:=THTTPRIO.Create(nil); mHttpRIO_ds.WSDLLocation:='http://221.3.83.5:8090/webservice/DsWebService.asmx?WSDL'; mHttpRIO_ds.URL:='http://221.3.83.5:8090/webservice/DsWebService.asmx'; mHttpRIO_ds.Port:='DsWebServiceSoap'; mHttpRIO_ds.Service:='DsWebService'; mHttpRIO_ds.HTTPWebNode.UseUTF8InHeader:=true; mServiceSoap_Ds:=mHttpRIO_ds as DsWebServiceSoap; InvRegistry.RegisterInvokeOptions(TypeInfo(DsWebServiceSoap),ioDocument );//就是这一行 } except on E:Exception do begin ShowMessage(e.Message); exit; end; end; end; procedure Tfrm_op_manifest.bsSkinButton1Click(Sender: TObject); var s0,remarks:widestring; str_file:widestring; str_memo:Tmemo; Str:TStrings; SenderHandphone,SenderEmail, SenderFax:string; ScriptPath:String; begin if bsSkinCheckRadioBox1.Checked and (trim(Memo1.Text)<>'') then begin remarks:='更换船名航次' +#13#10+trim(Memo1.Text); end else if trim(Memo1.Text)<>'' then begin remarks:=trim(Memo1.Text); end; if bsSkinRadioGroup1.ItemIndex=-1 then begin ShowMessage('请选择船代'); end else begin if MessageDlg('确实要发送预配舱单到 ['+bsSkinRadioGroup1.Items[bsSkinRadioGroup1.ItemIndex]+'] 的吗?',mtWarning,[mbYes,mbNo],0)=mrYes then begin if ifmaster then CreateCustom(0) else CreateCustom_hbl(0); { str:=Tstringlist.Create; try Str:=CreateSIEdiFile_xml; s0:=Str.Text; finally FreeAndNil(Str) end; getwebservice_ds; if frm_data_share.t_sys_employee.locate('姓名',employee,[]) then begin SenderHandphone:=frm_data_share.t_sys_employee.fieldbyname('移动电话').asstring; SenderEmail:=frm_data_share.t_sys_employee.fieldbyname('邮箱').asstring; SenderFax:=frm_data_share.t_sys_employee.fieldbyname('传真').asstring; end; mServiceSoap_Ds.UpdateCustomMainfast(s0,'',trim(get_parameters_value(301,'')),employee,SenderHandphone,SenderEmail,SenderFax,t_op_seae1.dataset.fieldbyname('主提单号').asstring); } str:=Tstringlist.Create; try Str:=CreateSIEdiFile_mbl; ScriptPath:=ExtractFilePath(ParamStr(0))+'CustomFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); IF ifmaster THEN begin str_file:=ScriptPath +t_op_seae1.dataset.fieldbyname('主提单号').asstring+'-'+ FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.txt'; end else begin str_file:=ScriptPath +t_op_seae1.dataset.fieldbyname('分提单号').asstring+'-'+ FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.txt'; end; Str.SaveToFile(str_file); finally FreeAndNil(Str) end; str_memo:=Tmemo.create(application); str_memo.visible:=false; str_memo.Parent:=frm_op_manifest; str_memo.Lines.Add('公司名称:'+frm_data_share.t_sys_company.fieldByName('简称').AsString); str_memo.Lines.Add('申请人:'+employee); str_memo.Lines.Add('邮箱:'+frm_data_share.t_load_employee.fieldByName('邮箱').AsString); str_memo.Lines.Add('电话:'+frm_data_share.t_load_employee.fieldByName('固定电话').AsString); str_memo.Lines.Add('备注:'+remarks); IF ifmaster THEN str_memo.Lines.Add('主提单号:'+t_op_seae1.DataSet['主提单号']) else str_memo.Lines.Add('主提单号:'+t_op_seae1.DataSet['主提单号']+' 分提单号:'+t_op_seae1.DataSet['分提单号']); try if Trim(str_memo.lines.Text)<>'' then begin SMTP1.AuthType := satDefault; //(satNone, satDefault, satSASL); // SMTP1.AuthenticationType := atLogin; SMTP1.username:='admin@dongshengsoft.com'; SMTP1.Password :='ds!@#)(*'; SMTP1.Host :='smtpcom.263xmail.com'; SMTP1.Port :=25; try SMTP1.Connect; except on e : Exception do begin ShowMessage('连接邮箱出错:'+E.Message); end; end; if not SMTP1.Connected then begin Sleep(1000); SMTP1.Connect; end; try with IdMsg do begin body.Clear; // ContentType:='us-ascii'; // CharSet:='utf-8'; Body.Text :=str_memo.lines.Text; From.address :='admin@dongshengsoft.com'; Recipients.EMailAddresses :='dongshengsoft@dongshengsoft.com'; IF ifmaster THEN Subject:='申请发送 主提单号:'+t_op_seae1.DataSet['主提单号']+' 船代:'+t_op_seae_edi['船代'] ELSE Subject:='申请发送 主提单号:'+t_op_seae1.DataSet['主提单号']+' 分提单号:'+t_op_seae1.DataSet['分提单号']+' 船代:'+t_op_seae_edi['船代']; //showmessage(str_file); TIdAttachmentFile.Create(MessageParts,str_file); //TIdAttachment.Create(MessageParts,str_file); end; if not SMTP1.Connected then begin Sleep(1000); SMTP1.Connect; end; SMTP1.Send(IdMsg); MessageDlg('发送成功',mtConfirmation,[mbOK],0) finally SMTP1.Disconnect; end; end; except MessageDlg('发送失败,请电话申请注册:0532-83863830!',mtError,[mbOK],0); end; str_memo.free; frm_op_manifest.ModalResult:=mrOK; end; end; end; procedure Tfrm_op_manifest.bsSkinButton2Click(Sender: TObject); begin frm_op_manifest.ModalResult:=mrCancel; end; end.