unit u_op_seae_edi_swi; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, BusinessSkinForm, bsSkinCtrls, StdCtrls,inifiles, DB, ADODB,IdFTP,IdFTPCommon, ExtCtrls,IdHTTP,superobject,ActiveX,IdMultipartFormData,IdGlobalProtocols; type TCarrier = Record //消息客户端消息结构 EdiNo :String; CarrierName :String; end; Tfrm_op_seae_edi_swi = class(TForm) Label2: TLabel; Label1: TLabel; Edit2: TEdit; Edit1: TEdit; bsSkinButton1: TbsSkinButton; bsSkinButton2: TbsSkinButton; bsBusinessSkinForm1: TbsBusinessSkinForm; SaveDialog1: TSaveDialog; Label3: TLabel; Label4: TLabel; Edit3: TEdit; Edit4: TEdit; t_op_ctn: TADOQuery; Label5: TLabel; Label6: TLabel; Label7: TLabel; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; RadioGroup1: TRadioGroup; bsSkinButton3: TbsSkinButton; bsSkinButton4: TbsSkinButton; GroupBox1: TGroupBox; Label8: TLabel; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Label9: TLabel; Label10: TLabel; Edit11: TEdit; Label11: TLabel; t_op_edi: TADOQuery; Label12: TLabel; Edit12: TEdit; RadioGroup3: TRadioGroup; bsck: TbsSkinCheckRadioBox; t_op_edictn: TADOQuery; bsSkinCheckRadioBox1: TbsSkinCheckRadioBox; bsSkinButton7: TbsSkinButton; bsSkinButton5: TbsSkinButton; GroupBox2: TGroupBox; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Edit15: TEdit; Edit16: TEdit; Edit17: TEdit; Edit18: TEdit; Label13: TLabel; Edit13: TEdit; bsSkinButton6: TbsSkinButton; CheckBox1: TCheckBox; CheckBox2: TCheckBox; procedure bsSkinButton1Click(Sender: TObject); procedure FormShow(Sender: TObject); function get_txtBooking(str:Tstringlist):integer; function get_txtSI(str:Tstringlist):integer; function get_goods(str:widestring):widestring; function get_txtvgm_cargo(str:Tstringlist):integer; // function get_txtvgm_intrra(str:Tstringlist):integer; procedure bsSkinButton3Click(Sender: TObject); function isEditrue:boolean; function GetCtnCode(ctnkind,ctnsize:String):String; function GetPkgCode(Pkg:String):String; function GetPort(PortID:String): String; function GetLoadPortEdiID(Port:String): String; function GetPortEdiID(Port:String): String; function GetPortEdiIDBYEDICODE(Port:String): String; function GetShipEdiNO(Ship:String): String; function Changestr(str:widestring):string; function GetCtnGoods(bsno:String):String; function get_txtvgm_intrra(str:Tstringlist):integer; function GetLengthword(var s: String; l: Integer;str:String): String; procedure GetLengthTString(var sl:TStringList;l:integer); function GetStrNum(str:String):integer; function GetCharNum(str:String):integer; function IsZhongwen(Str:String):Boolean; procedure bsSkinButton4Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure bsSkinButton7Click(Sender: TObject); procedure bsSkinButton5Click(Sender: TObject); procedure bsSkinButton6Click(Sender: TObject); private { Private declarations } public { Public declarations } aCarrier:TCarrier; SelectCarrier:Boolean; function ControlLines(LinesCount,CorpTypeid,BsTypeid:Integer;SName:string):String; function GetCarrier(i:integer):TCarrier; function get_txtvgm_cma(str:Tstringlist):integer; function CreateSIEdiFile_MBL:string; end; var frm_op_seae_edi_swi: Tfrm_op_seae_edi_swi; implementation uses u_op_seae, my_sys_function, u_main, u_data_share, u_op_seae_assistant; {$R *.dfm} function Tfrm_op_seae_edi_swi.get_txtvgm_intrra(str:Tstringlist):integer; var str_all,sl:Tstringlist; i,count:integer; SM,Carrer:string; begin i:=0; Carrer:='SWI'; str_all:=Tstringlist.Create; count:=0; str.Add('UNB+UNOC:3+'+Edit1.TEXT+':ZZZ+'+'INTTRA' +':ZZZ+'+GetDatetime(datetimetostr(now),2)+'+' +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); str.Add('UNH+001+VERMAS:D:16A:UN:1.0'+#39); count:=count+1; if RadioGroup3.ItemIndex=0 then str.Add('BGM+VGM+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+9'+#39) //9原始 5 更新 else if RadioGroup3.ItemIndex=2 then str.Add('BGM+VGM+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+1'+#39) //9原始 5 更新 else str.Add('BGM+VGM+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+5'+#39); //9原始 5 更新 count:=count+1; str.Add('DTM+137:'+GetDatetime(datetimetostr(now),1)+':203'+#39); count:=count+1; str.Add('NAD+TB+'+Edit1.TEXT+'::192++'+Edit1.TEXT+#39); count:=count+1; str.Add('CTA+IC+:'+edit7.text+''''); count:=count+1; str.Add('COM+'+Edit5.text+':TE'+#39); count:=count+1; t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; t_op_ctn.open; t_op_ctn.first; while not t_op_ctn.eof do begin if (t_op_ctn.fieldbyname('称重方式').asstring<>'') or (t_op_ctn.fieldbyname('称重方式').asstring<>'无') then begin i:=i+1; str.Add('EQD+CN+'+t_op_ctn.fieldbyname('箱号').asstring+':6346:5'+#39); //数量 count:=count+1; str.Add('RFF+BN:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; str.Add('RFF+AOW:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; str.Add('SEL+'+t_op_ctn.fieldbyname('封号').asstring+'+CA'+#39); count:=count+1; str.Add('MEA+AAE+VGM+KGM:'+t_op_ctn.fieldbyname('称重重量').asstring+#39); ////累加 无 count:=count+1; str.Add('DTM+798:'+GetDatetime(datetimetostr(now),2)+'203'+#39); //// count:=count+1; if Trim(t_op_ctn.fieldbyname('称重方式').asstring)='累加' then SM:='SM2' else if Trim(t_op_ctn.fieldbyname('称重方式').asstring)='总重' then SM:='SM1'; str.Add('DOC+SHP:VGM:306+'+SM+#39); ////累加 无 count:=count+1; str.Add('DTM+225:'+GetDatetime(datetimetostr(now),2)+'203'+#39); //// count:=count+1; str.Add('NAD+SPC+++'+Changestr(Edit2.Text)+#39); ////累加 无 count:=count+1; str.Add('CTA+RP+:'+UpperCase(Edit1.TEXT)+#39); count:=count+1; str.Add('NAD+CA+'+GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)+'::192++SWI'+#39); count:=count+1; str.Add('NAD+CZ+'+Edit1.TEXT+'::192++'+Edit2.TEXT+#39); count:=count+1; // str.Add('UNT+31+'+IntToStr(i)+#39); //count:=count+1; end; t_op_ctn.next; end; result:=count; end; function Tfrm_op_seae_edi_swi.GetCarrier(i:integer):TCarrier; begin Result.EdiNo:='SWI'; Result.CarrierName:='SWI LINE'; end; function Tfrm_op_seae_edi_swi.ControlLines(LinesCount,CorpTypeid,BsTypeid:Integer;SName:string):String; begin Result:=''; if LinesCount>5 then begin case CorpTypeid of 0:begin case BsTypeid of 0: Result:=SName+'详细信息超过5行,超出部分请在基本信息货描中填写格式为:*加多出部分'; 1: Result:=SName+'详细信息超过5行,超出部分请在装箱明细最后一个货描中填写格式为:*加多出部分'; end; end; 1:begin case BsTypeid of 0: Result:=SName+'详细信息超过5行,超出部分请在基本信息货描中填写格式为:**加多出部分'; 1: Result:=SName+'详细信息超过5行,超出部分请在装箱明细最后一个货描中填写格式为:**加多出部分'; end; end; 2:begin case BsTypeid of 0: Result:=SName+'详细信息超过5行,超出部分请在基本信息货描中填写格式为:***加多出部分'; 1: Result:=SName+'详细信息超过5行,超出部分请在装箱明细最后一个货描中填写格式为:***加多出部分'; end; end; 3:begin case BsTypeid of 0: Result:=SName+'详细信息不能超过5行'; 1: Result:=SName+'详细信息不能超过5行'; end; end; end; end; end; function Tfrm_op_seae_edi_swi.GetCtnGoods(bsno:String):String; var at_op_ctn,at_op_ctndetail :TADOQuery; ctnlist:TStringList; b_ctncount:Boolean; begin result:=''; at_op_ctn:=CreateAdoQuery; at_op_ctndetail:=CreateAdoQuery; ctnlist:=TStringList.Create; ctnlist.Clear; with at_op_ctn do begin Close;SQL.Clear; SQL.Add('select ctn_id from t_op_ctn'); SQL.Add('where 编号=:bsno'); Parameters.ParamByName('bsno').Value:=bsno; open;First; while not eof do begin ctnlist.Add(FieldByName('ctn_id').AsString); Next; end; end; if Trim(ctnlist.CommaText)<>'' then with at_op_ctndetail do begin Close;SQL.Clear; SQL.Add('select count(ctn_id) ctn_id from t_op_ctn_detail'); SQL.Add('where ctn_id in ('+ctnlist.CommaText+')'); Open; if FieldByName('ctn_id').AsInteger>0 then b_ctncount:=True; end; if b_ctncount then begin with at_op_ctndetail do begin Close;SQL.Clear; SQL.Add('select ctn_id,sum(件数)件数,sum(重量) 重量,sum(尺码) 尺码 from t_op_ctn_detail'); SQL.Add('where ctn_id=:ctn_id'); SQL.Add('Group by ctn_id'); end; with at_op_ctn do begin Close;SQL.Clear; SQL.Add('select ctn_id,件数,重量,尺码 from t_op_ctn'); SQL.Add('where 编号=:bsno'); Parameters.ParamByName('bsno').Value:=bsno; open;First; while not eof do begin at_op_ctndetail.Close; at_op_ctndetail.Parameters.ParamByName('ctn_id').Value:=FieldByName('ctn_id').AsInteger; at_op_ctndetail.Open; if at_op_ctndetail.FieldByName('件数').AsInteger<>FieldByName('件数').AsInteger then begin if Trim(result)='' then result:='分箱件数合计:'+at_op_ctndetail.FieldByName('件数').AsString+'不等于箱总件数:'+FieldByName('件数').AsString else result:=result+#13#10+'分箱件数合计:'+at_op_ctndetail.FieldByName('件数').AsString+'不等于箱总件数:'+FieldByName('件数').AsString; end; if at_op_ctndetail.FieldByName('重量').AsFloat<>FieldByName('重量').AsFloat then begin if Trim(result)='' then result:='分箱重量合计:'+at_op_ctndetail.FieldByName('重量').AsString+'不等于箱总重量:'+FieldByName('重量').AsString else result:=result+#13#10+'分箱重量合计:'+at_op_ctndetail.FieldByName('重量').AsString+'不等于箱总重量:'+FieldByName('重量').AsString; end; if at_op_ctndetail.FieldByName('尺码').AsFloat<>FieldByName('尺码').AsFloat then begin if Trim(result)='' then result:='分箱尺码合计:'+at_op_ctndetail.FieldByName('尺码').AsString+'不等于箱总尺码:'+FieldByName('尺码').AsString else result:=result+#13#10+'分箱尺码合计:'+at_op_ctndetail.FieldByName('尺码').AsString+'不等于箱总尺码:'+FieldByName('尺码').AsString; end; Next; end; end; end; try finally at_op_ctn.Free; at_op_ctndetail.Free; end; end; function Tfrm_op_seae_edi_swi.isEditrue: boolean; var cntrs,s,Edis,cntrGoods,Goods,Lines:String; sl:TStringList; i:integer; begin result:=true; SelectCarrier:=False; sl:=TStringList.Create; t_op_edi.Close; t_op_edi.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; t_op_edi.Open; if Edit1.Text='' then begin if trim(Edis)='' then Edis:='发送方代码' else Edis:=Edis+','+'发送方代码'; end; if Edit2.Text='' then begin if trim(Edis)='' then Edis:='发送方名称' else Edis:=Edis+','+'发送方名称'; end; if Edit3.Text='' then begin if trim(Edis)='' then Edis:='接受方代码' else Edis:=Edis+','+'接受方代码'; end; if Edit4.Text='' then begin if trim(Edis)='' then Edis:='接受方名称' else Edis:=Edis+','+'接受方名称'; end; if Edit5.Text='' then begin if trim(Edis)='' then Edis:='固定电话' else Edis:=Edis+','+'固定电话'; end; if Edit7.Text='' then begin if trim(Edis)='' then Edis:='联系人' else Edis:=Edis+','+'联系人'; end; if Edit6.Text='' then begin if trim(Edis)='' then Edis:='邮件地址' else Edis:=Edis+','+'邮件地址'; end; if Edit12.Text='' then begin if trim(Edis)='' then Edis:='邮件地址' else Edis:=Edis+','+'邮件地址'; end; if trim(Edis)<>'' then begin result:=false; MessageDlg(trim(Edis)+'不能为空',mtWarning,[mbOk],0); // exit; end; if not bsck.Checked then begin if trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring)='' then begin result:=false; MessageDlg('提单号不能为空',mtWarning,[mbOk],0); end; end else begin if trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring)='' then begin result:=false; MessageDlg('分单提单号不能为空',mtWarning,[mbOk],0); // exit; end; end; if trim(frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)='' then begin result:=false; MessageDlg('付费方式不能为空',mtWarning,[mbOk],0); // exit; end; if RadioGroup1.ItemIndex=1 then begin if trim(frm_op_seae.t_op_seae.fieldbyname('船名').asstring)='' then begin result:=false; MessageDlg('船名不能为空',mtWarning,[mbOk],0); // exit; end; if trim(frm_op_seae.t_op_seae.fieldbyname('航次').asstring)='' then begin result:=false; MessageDlg('航次不能为空',mtWarning,[mbOk],0); // exit; end; end; if trim(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)='' then begin result:=false; MessageDlg('船公司不能为空',mtWarning,[mbOk],0); // exit; end else begin if GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)='' then begin result:=false; MessageDlg('船公司EDI代码不能为空',mtWarning,[mbOk],0); // exit; end; end; aCarrier:=GetCarrier(0); if aCarrier.EdiNo<>GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring) then begin if MessageDlg('选择的船公司为:'+aCarrier.CarrierName+' 系统录入的船公司为:'+frm_op_seae.t_op_seae.fieldbyname('船公司').asstring+#13#10+',要以选择的船公司发送吗?',mtWarning,[mbyes,mbno],0)=mryes then begin SelectCarrier:=true; end; end; if not bsck.Checked then begin if trim(frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString)='' then begin { if MessageDlg('注意EDI备注为空,继续发送吗?',mtWarning,[mbyes,mbno],0)=mrNO then begin result:=false; end; } end; if pos(':',frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString)>0 then begin // result:=false; //MessageDlg('EDI备注中不能有 : 字符',mtWarning,[mbOk],0); end; end else begin if trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('EDI备注').asString)='' then begin { if MessageDlg('注意EDI备注为空,继续发送吗?',mtWarning,[mbyes,mbno],0)=mrNO then begin result:=false; end; } end; if pos(':',frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('EDI备注').asString)>0 then begin //result:=false; //MessageDlg('EDI备注中不能有 : 字符',mtWarning,[mbOk],0); // exit; end; end; if not bsck.Checked then begin if Length(trim(frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString))>315 then begin ShowMessage('EDI备注不能超过314个字符'); result:=false; end; if bsSkinCheckRadioBox1.Checked then begin if Pos('PLEASE BOOK OCEAN CARRIER',trim(frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString))<=0 then begin ShowMessage('请在EDI备注中输入:PLEASE BOOK OCEAN CARRIER - 船公司名称'); begin result:=false; end; end; end; end else begin if Length(trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('EDI备注').asString))>315 then begin ShowMessage('EDI备注不能超过314个字符'); result:=false; end; if bsSkinCheckRadioBox1.Checked then begin if Pos('PLEASE BOOK OCEAN CARRIER',trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('EDI备注').asString))<=0 then begin ShowMessage('请在EDI备注中输入:PLEASE BOOK OCEAN CARRIER - 船公司名称'); begin result:=false; end; end; end; end; { if trim(frm_op_seae.t_op_seae.fieldbyname('总价').asstring)='' then begin result:=false; MessageDlg('第一层包装皮重不能为空',mtWarning,[mbOk],0); exit; end; } sl.Clear; if t_op_edi.fieldbyname('所在国家').AsString<>'' then begin sl.Text:=Changestr(t_op_edi.fieldbyname('AMS发货人').asstring); if (sl.Count>5) then begin result:=false; MessageDlg('EDI信息中发货人不能超过5行!',mtWarning,[mbOk],0); end; for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin MessageDlg('EDI信息中发货人中有中文字符或TAB键!',mtWarning,[mbOk],0); result:=false; // Exit; end; if Length(sl[i])>45 then begin result:=false; MessageDlg('EDI信息中发货人中每行字符不能超过45个字符!',mtWarning,[mbOk],0); // exit; end; end; Lines:=ControlLines(sl.Count,0,0,'AMS发货人'); //LinesCount,CorpTypeid,BsTypeid:Integer;SName:string if Lines<>'' then begin result:=false; MessageDlg('EDI信息中'+Lines+'!',mtWarning,[mbOk],0); // Exit; end; end else begin sl.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('发货人代码').asstring); if (sl.Count>5) then begin result:=false; MessageDlg('EDI信息中发货人不能超过5行!',mtWarning,[mbOk],0); end; for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('EDI信息中发货人中有中文字符或TAB键!',mtWarning,[mbOk],0); // Exit; end; if Length(sl[i])>45 then begin result:=false; MessageDlg('发货人中每行字符不能超过45个字符!',mtWarning,[mbOk],0); // exit; end; end; Lines:=ControlLines(sl.Count,0,0,'发货人'); //LinesCount,CorpTypeid,BsTypeid:Integer;SName:string if Lines<>'' then begin result:=false; MessageDlg('EDI信息中'+Lines+'!',mtWarning,[mbOk],0); // Exit; end; end; if bsck.Checked then begin sl.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('发货人代码').asstring); if (sl.Count>5) then begin result:=false; MessageDlg('EDI信息中发货人不能超过5行!',mtWarning,[mbOk],0); end; for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('分单EDI信息中发货人中有中文字符或TAB键!',mtWarning,[mbOk],0); // Exit; end; if Length(sl[i])>45 then begin result:=false; MessageDlg('分单发货人中每行字符不能超过45个字符!',mtWarning,[mbOk],0); // exit; end; end; Lines:=ControlLines(sl.Count,0,1,'发货人'); //LinesCount,CorpTypeid,BsTypeid:Integer;SName:string if Lines<>'' then begin result:=false; MessageDlg('分单EDI信息中'+Lines+'!',mtWarning,[mbOk],0); // Exit; end; end; sl.Clear; if t_op_edi.fieldbyname('所在国家').AsString<>'' then begin sl.Text:=Changestr(t_op_edi.fieldbyname('AMS收货人').asstring); for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('EDI信息中收货人中有中文字符或TAB键!',mtWarning,[mbOk],0); // Exit; end; if Length(sl[i])>45 then begin result:=false; MessageDlg('EDI信息中收货人中每行字符不能超过45个字符!',mtWarning,[mbOk],0); // exit; end; end; Lines:=ControlLines(sl.Count,1,0,'AMS收货人'); //LinesCount,CorpTypeid,BsTypeid:Integer;SName:string if Lines<>'' then begin result:=false; MessageDlg('EDI信息中'+Lines+'!',mtWarning,[mbOk],0); // Exit; end; end else begin sl.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('收货人代码').asstring); if (sl.Count>5) then begin result:=false; MessageDlg('EDI信息中收货人不能超过5行!',mtWarning,[mbOk],0); end; for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('EDI信息中收货人中有中文字符或TAB键!',mtWarning,[mbOk],0); // Exit; end; if Length(sl[i])>45 then begin result:=false; MessageDlg('收货人中每行字符不能超过45个字符!',mtWarning,[mbOk],0); // exit; end; end; Lines:=ControlLines(sl.Count,1,0,'收货人'); //LinesCount,CorpTypeid,BsTypeid:Integer;SName:string if Lines<>'' then begin result:=false; MessageDlg('EDI信息中'+Lines+'!',mtWarning,[mbOk],0); // Exit; end; end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='CY-DOOR' then begin IF frm_op_seae.t_op_seae.fieldbyname('DOOR地址').asstring='' then begin result:=false; MessageDlg('运输条款为:CY-DOOR,SHIPPING TO地址不能为空 ',mtWarning,[mbOk],0); // exit; end; sl.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('DOOR地址').asstring); for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('EDI信息中SHIPPING TO地址中有中文字符或TAB键!',mtWarning,[mbOk],0); end; if Length(sl[i])>35 then begin result:=false; MessageDlg('SHIPPING TO地址中每行字符不能超过35个字符!',mtWarning,[mbOk],0); // exit; end; end; end; if bsck.Checked then begin sl.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('收货人代码').asstring); if (sl.Count>5) then begin result:=false; MessageDlg('EDI信息中收货人不能超过5行!',mtWarning,[mbOk],0); end; for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('分单EDI信息中收货人中有中文字符或TAB键!',mtWarning,[mbOk],0); // exit; end; if Length(sl[i])>35 then begin result:=false; MessageDlg('分单收货人中每行字符不能超过35个字符!',mtWarning,[mbOk],0); // exit; end; end; Lines:=ControlLines(sl.Count,1,1,'收货人'); //LinesCount,CorpTypeid,BsTypeid:Integer;SName:string if Lines<>'' then begin result:=false; MessageDlg('分单EDI信息中'+Lines+'!',mtWarning,[mbOk],0); // Exit; end; end; sl.Clear; if t_op_edi.fieldbyname('所在国家').AsString<>'' then begin sl.Text:=Changestr(t_op_edi.fieldbyname('AMS通知人').asstring); if (sl.Count>5) then begin result:=false; MessageDlg('EDI信息中通知人不能超过5行!',mtWarning,[mbOk],0); end; for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin MessageDlg('EDI信息中通知人中有中文字符或TAB键!',mtWarning,[mbOk],0); end; if Length(sl[i])>45 then begin result:=false; MessageDlg('EDI信息中通知人中每行字符不能超过45个字符!',mtWarning,[mbOk],0); // exit; end; end; Lines:=ControlLines(sl.Count,2,0,'AMS通知人'); //LinesCount,CorpTypeid,BsTypeid:Integer;SName:string if Lines<>'' then begin result:=false; MessageDlg('EDI信息中'+Lines+'!',mtWarning,[mbOk],0); // Exit; end; end else begin sl.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('通知人代码').asstring); if (sl.Count>5) then begin result:=false; MessageDlg('EDI信息中通知人不能超过5行!',mtWarning,[mbOk],0); end; for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('EDI信息中通知人中有中文字符或TAB键!',mtWarning,[mbOk],0); end; if Length(sl[i])>45 then begin result:=false; MessageDlg('通知人中每行字符不能超过45个字符!',mtWarning,[mbOk],0); // exit; end; end; Lines:=ControlLines(sl.Count,2,0,'通知人'); //LinesCount,CorpTypeid,BsTypeid:Integer;SName:string if Lines<>'' then begin result:=false; MessageDlg('EDI信息中'+Lines+'!',mtWarning,[mbOk],0); // Exit; end; end; if bsck.Checked then begin sl.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('通知人代码').asstring); if (sl.Count>5) then begin result:=false; MessageDlg('EDI信息中通知人不能超过5行!',mtWarning,[mbOk],0); end; for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('分单EDI信息中通知人中有中文字符或TAB键!',mtWarning,[mbOk],0); end; if Length(sl[i])>45 then begin result:=false; MessageDlg('分单通知人中每行字符不能超过45个字符!',mtWarning,[mbOk],0); // exit; end; end; Lines:=ControlLines(sl.Count,2,1,'通知人'); //LinesCount,CorpTypeid,BsTypeid:Integer;SName:string if Lines<>'' then begin result:=false; MessageDlg('分单EDI信息中'+Lines+'!',mtWarning,[mbOk],0); // Exit; end; end; sl.Clear; sl.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('唛头').asstring); for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('EDI信息中唛头有中文字符或TAB键!',mtWarning,[mbOk],0); end; if Length(sl[i])>35 then begin result:=false; MessageDlg('唛头中每行字符不能超过35个字符!',mtWarning,[mbOk],0); // exit; end; end; sl.Clear; sl.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('货物描述').asstring); for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('EDI信息中货物描述有中文字符或TAB键!',mtWarning,[mbOk],0); end; end; if bsck.Checked then begin sl.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('唛头').asstring); for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('分单EDI信息中唛头中有中文字符或TAB键!',mtWarning,[mbOk],0); end; if Length(sl[i])>35 then begin result:=false; MessageDlg('分单唛头中每行字符不能超过35个字符!',mtWarning,[mbOk],0); // exit; end; end; end; if bsck.Checked then begin sl.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('货物描述').asstring); for i:=0 to sl.Count-1 do begin if IsZhongwen(sl[i]) then begin result:=false; MessageDlg('分单EDI信息中货物描述中有中文字符或TAB键!',mtWarning,[mbOk],0); end; end; end; FreeAndNil(sl); if trim(GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring))='' then begin result:=false; MessageDlg('装港代码不能为空',mtWarning,[mbOk],0); end; if Length(trim(GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring)))<>5 then begin result:=false; MessageDlg('装港代码必须为5个字符',mtWarning,[mbOk],0); end; { if trim(GetLoadPortEdiID(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring))='' then begin result:=false; MessageDlg('装港代码不能为空,请在起运维护 EDI代码',mtWarning,[mbOk],0); exit; end; } if trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)='' then begin result:=false; MessageDlg('启运港不能为空',mtWarning,[mbOk],0); // exit; end; if trim(frm_op_seae.t_op_seae.fieldbyname('开船日期').asstring)='' then begin result:=false; MessageDlg('开船日期不能为空',mtWarning,[mbOk],0); // exit; end; if frm_op_seae.t_op_seae.fieldbyname('开船日期').asDateTime<(now-120) then begin result:=false; MessageDlg('开船日期必须在今日的120天内!',mtWarning,[mbOk],0); // exit; end; if RadioGroup1.ItemIndex=1 then begin if trim(frm_op_seae.t_op_seae.fieldbyname('船名').asstring)='' then begin result:=false; MessageDlg('船名不能为空',mtWarning,[mbOk],0); // exit; end; if trim(frm_op_seae.t_op_seae.fieldbyname('航次').asstring)='' then begin result:=false; MessageDlg('航次不能为空',mtWarning,[mbOk],0); // exit; end; end; { if trim(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring)='' then begin result:=false; MessageDlg('目的地代码不能为空',mtWarning,[mbOk],0); end; if Length(trim(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring))<>5 then begin result:=false; MessageDlg('目的地代码必须为5个字符',mtWarning,[mbOk],0); end; if trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring)='' then begin result:=false; MessageDlg('目的地不能为空',mtWarning,[mbOk],0); //xit; end; } { if trim(frm_op_seae.t_op_seae.fieldbyname('交货地点').asstring)='' then begin result:=false; MessageDlg('交货地点不能为空',mtWarning,[mbOk],0); // exit; end; } if trim(GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring))='' then begin result:=false; MessageDlg('卸货代码不能为空',mtWarning,[mbOk],0); end; if Length(trim(GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring)))<>5 then begin result:=false; MessageDlg('卸货代码必须为五个字符',mtWarning,[mbOk],0); // exit; end; { if trim(GetPortEdiID(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring))='' then begin result:=false; MessageDlg('卸货代码不能为空',mtWarning,[mbOk],0); exit; end; } if trim(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring)='' then begin result:=false; MessageDlg('卸货港不能为空',mtWarning,[mbOk],0); // exit; end; if not bsck.Checked then begin if GetPkgCode(trim(frm_op_seae.t_op_seae.fieldbyname('包装').asstring))='' then begin result:=false; MessageDlg('包装代码不能为空',mtWarning,[mbOk],0); // exit; end; end else begin if GetPkgCode(trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('包装').asstring))='' then begin result:=false; MessageDlg('包装代码不能为空',mtWarning,[mbOk],0); // exit; end; end; if not bsck.Checked then begin if trim(frm_op_seae.t_op_seae.fieldbyname('货物描述').asstring)='' then begin result:=false; MessageDlg('货物描述不能为空',mtWarning,[mbOk],0); // exit; end; end else begin if trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('货物描述').asstring)='' then begin result:=false; MessageDlg('货物描述不能为空',mtWarning,[mbOk],0); // exit; end; end; if not bsck.Checked then begin if trim(frm_op_seae.t_op_seae.fieldbyname('唛头').asstring)='' then begin result:=false; MessageDlg('唛头不能为空',mtWarning,[mbOk],0); // exit; end; end else begin if trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('唛头').asstring)='' then begin result:=false; MessageDlg('唛头不能为空',mtWarning,[mbOk],0); // exit; end; end; if not bsck.Checked then begin if frm_op_seae.t_op_seae.fieldbyname('件数').asinteger=0 then begin result:=false; MessageDlg('件数不能为空',mtWarning,[mbOk],0); // exit; end; if frm_op_seae.t_op_seae.fieldbyname('重量').asfloat=0 then begin result:=false; MessageDlg('重量不能为空',mtWarning,[mbOk],0); // exit; end; if frm_op_seae.t_op_seae.fieldbyname('尺码').asfloat=0 then begin result:=false; MessageDlg('尺码不能为空',mtWarning,[mbOk],0); // exit; end; end else begin if frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('件数').asinteger=0 then begin result:=false; MessageDlg('件数不能为空',mtWarning,[mbOk],0); // exit; end; if frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('重量').asfloat=0 then begin result:=false; MessageDlg('重量不能为空',mtWarning,[mbOk],0); // exit; end; if frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('尺码').asfloat=0 then begin result:=false; MessageDlg('尺码不能为空',mtWarning,[mbOk],0); // exit; end; end; if (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='D') or (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='T') then begin if Trim(frm_op_seae.t_op_seae.fieldbyname('危险品分类').asstring)='' then begin result:=false; MessageDlg('危险品等级不能为空',mtWarning,[mbOk],0); // exit; end; if Trim(frm_op_seae.t_op_seae.fieldbyname('危险品编号').asstring)='' then begin result:=false; MessageDlg('危险品编号不能为空',mtWarning,[mbOk],0); // exit; end; if GetStrNum(Trim(frm_op_seae.t_op_seae.fieldbyname('危险品编号').asstring))<>4 then begin result:=false; MessageDlg('危险品编号必须是4位数字',mtWarning,[mbOk],0); // exit; end; end; if (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='R') OR (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='T') then begin if Trim(frm_op_seae.t_op_seae.fieldbyname('设置温度').asstring)='' then begin result:=false; MessageDlg('设置温度不能为空',mtWarning,[mbOk],0); // exit; end; if GetStrNum(trim(frm_op_seae.t_op_seae.fieldbyname('设置温度').asstring))<>3 then begin result:=false; MessageDlg('设置温度必须是3位数字',mtWarning,[mbOk],0); // exit; end; end; if Pos('PREPAID',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)>0 then if (trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)='') or (GetPortEdiID(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)='') then begin //付款地点代码 result:=false; MessageDlg('预付地点(或edi代码)不能为空',mtWarning,[mbOk],0); // exit; end; if Pos('COLLECT',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)>0 then if (trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring)='') or (frm_op_seae.t_op_seae.fieldbyname('到付地点代码').asstring='') then begin //付款地点代码 result:=false; MessageDlg('到付地点(或edi代码)不能为空',mtWarning,[mbOk],0); // exit; end; if RadioGroup1.ItemIndex=1 then begin if (trim(frm_op_seae.t_op_seae.fieldbyname('签单地点').asstring)='') or (GetPortEdiID(frm_op_seae.t_op_seae.fieldbyname('签单地点').asstring)='') then begin //签单地点代码 result:=false; MessageDlg('签单地点(或edi代码)不能为空',mtWarning,[mbOk],0); // exit; end; end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='' then begin result:=false; MessageDlg('运输条款不能为空',mtWarning,[mbOk],0); // exit; end; if trim(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)='' then begin //运输协议号 result:=false; MessageDlg('运费协议号不能为空',mtWarning,[mbOk],0); // exit; end; if not bsck.Checked then begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT t_op_ctn.编号,t_op_ctn.数量, t_code_ctn.EDI代码,t_op_ctn.尺寸,t_op_ctn.包装'); t_op_ctn.SQL.Add(',t_op_ctn.箱型,t_op_ctn.箱号,t_op_ctn.重量,t_op_ctn.封号,t_op_ctn.尺码,t_op_ctn.件数,t_op_ctn.品名'); t_op_ctn.SQL.Add('FROM t_op_ctn INNER JOIN'); t_op_ctn.SQL.Add('t_code_ctn ON t_op_ctn.代码 = t_code_ctn.代码'); t_op_ctn.SQL.Add('WHERE t_op_ctn.编号=:编号'); t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; end else begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT t_op_ctn_fendan.编号,t_op_ctn_fendan.数量, t_code_ctn.EDI代码,t_op_ctn_fendan.尺寸,t_op_ctn_fendan.包装'); t_op_ctn.SQL.Add(',t_op_ctn_fendan.箱型,t_op_ctn_fendan.箱号,t_op_ctn_fendan.重量,t_op_ctn_fendan.封号,t_op_ctn_fendan.尺码,t_op_ctn_fendan.件数,t_op_ctn_fendan.品名'); t_op_ctn.SQL.Add('FROM t_op_ctn_fendan INNER JOIN'); t_op_ctn.SQL.Add('t_code_ctn ON t_op_ctn_fendan.代码 = t_code_ctn.代码'); t_op_ctn.SQL.Add('WHERE t_op_ctn_fendan.as_id=:as_id'); t_op_ctn.Parameters.ParamByName('as_id').Value:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('as_id').asinteger; end; t_op_ctn.open; if t_op_ctn.IsEmpty then begin result:=false; MessageDlg('集装箱不能为空',mtWarning,[mbOk],0); // exit; end; t_op_ctn.first; while not t_op_ctn.eof do begin cntrs:=GetCtnCode(t_op_ctn.fieldByName('箱型').asString,t_op_ctn.fieldByName('尺寸').asString); if cntrs='' then begin result:=false; MessageDlg('集装箱类型EDI代码不存在!',mtWarning,[mbOk],0); // exit; end; if t_op_ctn.fieldByName('品名').asString='' then begin if Goods='' then Goods:=t_op_ctn.fieldByName('箱型').asString+t_op_ctn.fieldByName('尺寸').asString else Goods:=Goods+#13#10+t_op_ctn.fieldByName('箱型').asString+t_op_ctn.fieldByName('尺寸').asString; end; t_op_ctn.next; end; { if trim(Goods)<>'' then MessageDlg('注意'+#13#10+Goods+#13#10+'集装箱货物名称为空!',mtWarning,[mbOk],0); } if RadioGroup1.ItemIndex=1 then begin if t_op_edi.FieldByName('所在国家').asstring='USA' then begin if t_op_edi.FieldByName('舱单申报者').asstring='' then begin result:=false; MessageDlg('舱单申报者不能为空',mtWarning,[mbOk],0); // exit; end; if t_op_edi.FieldByName('舱单申报者').asstring='自己' then begin if t_op_edi.FieldByName('SCAC编号').asstring='' then begin result:=false; MessageDlg('SCAC编号不能为空',mtWarning,[mbOk],0); // exit; end; end; if t_op_edi.FieldByName('收货人邮编').asstring='' then begin result:=false; MessageDlg('收货人邮编不能为空',mtWarning,[mbOk],0); // exit; end; if t_op_edi.FieldByName('通知人邮编').asstring='' then begin result:=false; MessageDlg('通知人邮编不能为空',mtWarning,[mbOk],0); // exit; end; if Trim(frm_op_seae.t_op_seae.fieldbyname('运输方式').asstring)='' then begin //商品编码 result:=false; MessageDlg('商品编码不能为空',mtWarning,[mbOk],0); // exit; end; end; if t_op_edi.FieldByName('所在国家').asstring='CANADA' then begin if t_op_edi.FieldByName('舱单申报者').asstring='' then begin result:=false; MessageDlg('舱单申报者不能为空',mtWarning,[mbOk],0); // exit; end; if t_op_edi.FieldByName('舱单申报者').asstring='自己' then begin if t_op_edi.FieldByName('SCAC编号').asstring='' then begin result:=false; MessageDlg('SCAC编号不能为空',mtWarning,[mbOk],0); // exit; end; end; if t_op_edi.FieldByName('收货人邮编').asstring='' then begin result:=false; MessageDlg('收货人邮编不能为空',mtWarning,[mbOk],0); // exit; end; end; if t_op_edi.FieldByName('所在国家').asstring='BRAZIL' then begin if t_op_edi.FieldByName('收货人国家代码').asstring='' then begin result:=false; MessageDlg('收货人国家代码不能为空',mtWarning,[mbOk],0); // exit; end; if t_op_edi.FieldByName('收货人税号').asstring='' then begin result:=false; MessageDlg('收货人税号不能为空',mtWarning,[mbOk],0); // exit; end; if t_op_edi.FieldByName('收货人国家代码').asstring<>'BR' then begin if t_op_edi.FieldByName('通知人国家代码').asstring='' then begin result:=false; MessageDlg('通知人国家代码不能为空',mtWarning,[mbOk],0); // exit; end; if t_op_edi.FieldByName('通知人税号').asstring='' then begin result:=false; MessageDlg('通知人税号不能为空',mtWarning,[mbOk],0); // exit; end; end; if t_op_edi.FieldByName('货物NCM编号').asstring='' then begin result:=false; MessageDlg('货物NCM编号不能为空',mtWarning,[mbOk],0); // exit; end; end; cntrGoods:=GetCtnGoods(frm_op_seae.t_op_seae.fieldByName('编号').asString); if trim(cntrGoods)<>'' then begin result:=false; MessageDlg(cntrGoods,mtWarning,[mbOk],0); // exit; end; if not bsck.Checked then begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT t_op_ctn.编号,t_op_ctn.数量, t_code_ctn.EDI代码,t_op_ctn.尺寸,t_op_ctn.包装'); t_op_ctn.SQL.Add(',t_op_ctn.箱型,t_op_ctn.箱号,t_op_ctn.重量,t_op_ctn.封号,t_op_ctn.尺码,t_op_ctn.件数'); t_op_ctn.SQL.Add('FROM t_op_ctn INNER JOIN'); t_op_ctn.SQL.Add('t_code_ctn ON t_op_ctn.代码 = t_code_ctn.代码'); t_op_ctn.SQL.Add('WHERE t_op_ctn.编号=:编号'); t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; end else begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT t_op_ctn_fendan.编号,t_op_ctn_fendan.数量, t_code_ctn.EDI代码,t_op_ctn_fendan.尺寸,t_op_ctn_fendan.包装'); t_op_ctn.SQL.Add(',t_op_ctn_fendan.箱型,t_op_ctn_fendan.箱号,t_op_ctn_fendan.重量,t_op_ctn_fendan.封号,t_op_ctn_fendan.尺码,t_op_ctn_fendan.件数'); t_op_ctn.SQL.Add('FROM t_op_ctn_fendan INNER JOIN'); t_op_ctn.SQL.Add('t_code_ctn ON t_op_ctn_fendan.代码 = t_code_ctn.代码'); t_op_ctn.SQL.Add('WHERE t_op_ctn_fendan.as_id=:as_id'); t_op_ctn.Parameters.ParamByName('as_id').Value:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('as_id').asinteger; end; t_op_ctn.open; if t_op_ctn.IsEmpty then begin result:=false; MessageDlg('箱号封号不能为空',mtWarning,[mbOk],0); // exit; end; t_op_ctn.first; while not t_op_ctn.eof do begin cntrs:=t_op_ctn.fieldByName('箱号').asString; if GetCtnCode(t_op_ctn.fieldByName('箱型').asstring,t_op_ctn.fieldByName('尺寸').asstring)='' then begin result:=false; MessageDlg('集装箱类型EDI代码不存在!',mtWarning,[mbOk],0); // exit; end; if ((GetStrNum(cntrs))<>7) or ((GetcharNum(cntrs))<>4) then begin result:=false; MessageDlg('集装箱箱号不正确!',mtWarning,[mbOk],0); // exit; end; t_op_ctn.next; end; if t_op_edi.FieldByName('所在国家').asstring='巴西' then begin if frm_op_seae.t_op_seae.fieldByName('总价').asfloat=0 then begin result:=false; MessageDlg('箱皮重不能为空!',mtWarning,[mbOk],0); // exit; end; end; end; end; function Tfrm_op_seae_edi_swi.get_goods(str:widestring):widestring; var str_all:Tstringlist; r_str:widestring; i:integer; begin str:=Changestr(trim(str)); str_all:=Tstringlist.Create; str_all.Text:=str; for i:=0 to str_all.Count-1 do begin r_str:=r_str+' '+str_all[i]; end; result:=trim(r_str); end; function Tfrm_op_seae_edi_swi.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 SWIEDI 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_seae_edi_swi.GetPkgCode(Pkg:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select SWIEDI EDI代码 from t_code_package where 代码='''+pkg+''''); Open; if not IsEmpty then Result:=Trim(FieldByName('EDI代码').asstring) else Result:=''; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_swi.GetPort(PortID:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select 港口名称 英文名 from t_code_edi_port where EDI代码='''+PortID+''''); Open; if not IsEmpty then Result:=Trim(FieldByName('英文名').asstring) else Result:=''; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_swi.GetLoadPortEdiID(Port:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select EDI代码 from t_code_loaport where 英文名='''+Port+''''); Open; if not IsEmpty then Result:=Trim(FieldByName('EDI代码').asstring) else Result:=''; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_swi.GetPortEdiID(Port:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select SWIEDI EDI代码 from t_code_disport where 英文名='''+Port+''''); Open; if not IsEmpty then Result:=Trim(FieldByName('EDI代码').asstring) else Result:=''; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_swi.GetShipEdiNO(Ship:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select 代码,EDI代码,客户简称,客户全称,揽货人,录入人,录入日期 from t_crm_client'); SQL.Add('where 客户性质<>''目标'' and 船公司=1 and 客户简称='''+Ship+''''); SQL.Add('order by 代码'); Open; if not IsEmpty then Result:=Trim(FieldByName('EDI代码').asstring) else Result:=''; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_swi.Changestr(str:widestring):string; var i:integer; strC:widestring; begin strC:=''; for i:=1 to length(str) do begin if ((str[i]=#39) or (str[i]=':') or (str[i]='''') or (str[i]='+') or (str[i]='?')) then begin strC:=strC+'?'+str[i]; end else begin strC:=strC+str[i]; end; end; result:=strC; end; function Tfrm_op_seae_edi_swi.GetLengthword(var s: String; l: Integer;str:String): String; var i:Integer; b:Boolean; begin s:=''; if Length(str)<=l then begin result:=str; end else begin b:=true; s:=Copy(str,l+1,Length(str)-l); str:=Copy(str,1,l); result:=''; for i:=Length(str) downto 1 do begin if (str[i]<>' ') and b then s:=str[i]+s else begin b:=false; result:=str[i]+Result; end; end; s:=s+' '; end; end; procedure Tfrm_op_seae_edi_swi.GetLengthTString(var sl: TStringList; l: integer); var i:integer; str_head,S:String; Stemp:TStrings; begin Stemp:=TStringList.Create; try str_head:=''; S:=''; for i:=0 to sl.Count-1 do begin if sl[i]<>'' then stemp.add(GetLengthword(str_head,l,s+sl[i])); S:=Str_head; end; while S<>'' do begin stemp.add(GetLengthword(str_head,l,s)); S:=Str_head; end; SL.Assign(Stemp); finally FreeAndNil(Stemp); end; end; function Tfrm_op_seae_edi_swi.GetStrNum(str:String):integer; var i:integer; begin result:=0; if str='' then exit; for i:=1 to length(Str) do begin if str[i] in ['0','1','2','3','4','5','6','7','8','9'] then result:=result+1; end; end; function Tfrm_op_seae_edi_swi.GetCharNum(str:String):integer; var i:integer; begin result:=0; if str='' then exit; for i:=1 to length(Str) do begin if str[i] in ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] then result:=result+1; end; end; function Tfrm_op_seae_edi_swi.IsZhongwen(Str: String): Boolean; var i:Integer; begin Result:=false; if Str='' then Exit; for i:=1 to Length(Str) do begin if (Str[i]>Chr(127)) or (Str[i]=Chr(9)) then begin // if (Str[i]>Chr(127)) or (Str[i]=Chr(9)) or (Str[i]='<') or (Str[i]='>') then begin Result:=True; Exit; end; end; end; function Tfrm_op_seae_edi_swi.get_txtBooking(str:Tstringlist):integer; var str_all,sl:Tstringlist; j,Count,i,k:integer; str_guodu,str_shr,str_con,str_not,freightpayer:widestring; str_pay,Str_head:string; function CutVoyNo(VoyNo:String):String; begin if length(VoyNO)<3 then exit; if Pos('.',VoyNO)>0 then begin Result:=Copy(VoyNO,3,length(VoyNO)-2); end else Result:=VoyNO; end; begin str_all:=Tstringlist.Create; count:=0; str.Add('UNB+UNOC:2+'+Edit1.TEXT+':ZZZ+'+Edit3.TEXT +':ZZZ+'+GetDatetime(datetimetostr(now),2)+'+' +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); count:=count+1; str.Add('UNH+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+'+IFTMBF:D:99B:UN'+#39); count:=count+1; str.Add('BGM+335+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+'SO+9'+#39); //9原始 5 更新 count:=count+1; str.Add('CTA+IC+:'+edit7.text+''''); count:=count+1; str.Add('COM+'+Edit5.text+':TE'+#39); count:=count+1; str.Add('COM+'+Edit6.text+':EM'+#39); count:=count+1; str.Add('DTM+137:'+GetDatetime(datetimetostr(now),1)+':203'+#39); count:=count+1; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='' then begin showmessage('业务编号为:'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +'的业务运输条款没有输入!!'); result:=-1; exit; end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='DOOR-DOOR' then begin str.Add('TSR+27+2'+#39); end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='DOOR-CY' then begin str.Add('TSR+28+2'+#39); end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='CY-DOOR' then begin str.Add('TSR+29+2'+#39); end; if (trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='CY-CY') or (trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='CY-RAMP') then begin str.Add('TSR+30+2'+#39); end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='OTHER' then begin str.Add('TSR+30+2'+#39); end; count:=count+1; if Pos('PREPAID',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)>0 then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring); if Pos('COLLECT',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)>0 then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring); if not bsck.Checked then begin str.Add('FTX+AAI+++'+frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring +' Payable at '+str_pay+' '+ frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring+ ' '+frm_op_seae.t_op_seae.fieldbyname('件数').asstring+ trim(frm_op_seae.t_op_seae.fieldbyname('包装').asstring)+' '+Changestr(frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString)+#39); end else begin str.Add('FTX+AAI+++'+frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring +' Payable at '+str_pay+' '+ frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring+ ' '+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('件数').asstring+ trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('包装').asstring)+' '+Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('EDI备注').asString)+#39); end; count:=count+1; if frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring='FREIGHT PREPAID' then begin str.Add('LOC+73+'+GetPortEdiID(trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)) +'::6:'+trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)+#39); end else if frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring='FREIGHT COLLECT' then begin str.Add('LOC+73+'+trim(frm_op_seae.t_op_seae.fieldbyname('到付地点代码').asstring) +'::6:'+trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring)+#39); end else str.Add('LOC+73+'+GetPortEdiID(trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)) +'::6:'+trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)+#39); count:=count+1; str.Add('RFF+CT:'+Changestr(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+#39); // count:=count+1; str.Add('RFF+SI:'+frm_op_seae.t_op_seae.FieldByName('业务编号').AsString+#39); count:=count+1; if SelectCarrier then begin if Trim(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring)<>'' then begin if bsSkinCheckRadioBox1.Checked then str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring) +'+1++'+aCarrier.EdiNo+'+++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39) else str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring) +'+1+++++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39); count:=count+1; end else begin if bsSkinCheckRadioBox1.Checked then str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('航次').asstring) +'+1++'+aCarrier.EdiNo+'+++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39) else str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('航次').asstring) +'+1+++++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39); count:=count+1; end; end else begin if Trim(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring)<>'' then begin if bsSkinCheckRadioBox1.Checked then str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring) +'+1++'+GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)+'+++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39) else str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring) +'+1+++++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39); count:=count+1; end else begin if bsSkinCheckRadioBox1.Checked then str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('航次').asstring) +'+1++'+GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)+'+++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39) else str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('航次').asstring) +'+1+++++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39); count:=count+1; end; end; str.Add('LOC+9+'+GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)+#39); count:=count+1; str.Add('DTM+133:'+GetDatetime(datetimetostr(frm_op_seae.t_op_seae.fieldbyname('开船日期').asDatetime),0)+':102'+#39); count:=count+1; if (t_op_edi.FieldByName('收货地点').asstring<>'') then begin str.Add('LOC+88+'+GetPortEdiIDBYEDICODE(t_op_edi.FieldByName('收货代码').asstring) +':139:6:'+trim(t_op_edi.FieldByName('收货地点').asstring)+#39); count:=count+1; end else begin str.Add('LOC+88+'+GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)+#39); count:=count+1; end; str.Add('LOC+11+'+GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring) +':139:6:'+trim(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring)+#39); count:=count+1; if trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring)<>'' then begin str.Add('LOC+7+'+GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring) //? +':139:6:'+trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring)+#39); count:=count+1; end; str_all.Clear; str_head:=''; if not bsck.Checked then begin if t_op_edi.FieldByName('所在国家').asstring<>'' then begin str_all.Text:=Changestr(t_op_edi.fieldbyname('AMS发货人').asstring); end else begin str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('发货人代码').asstring); end; end else begin str_all.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('发货人代码').asstring); end; GetLengthTString(str_all,45); str_guodu:='NAD+CZ++'+str_all[0]+':'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; if str_all.Count>5 then begin for j:=2 to 3 do begin str_guodu:=str_guodu+':'+str_all[j] end; str_guodu:=str_guodu+':'+Copy(str_all[4],1,34)+'*'; Str_shr:='*'+Copy(str_all[4],34,1); for j:=5 to str_all.Count-1 do begin Str_shr:=Str_shr+' '+str_all[j] end; end; str_guodu:=str_guodu+#39; str.Add(str_guodu); count:=count+1; str_head:=''; str_all.Clear; if not bsck.Checked then begin if t_op_edi.FieldByName('所在国家').asstring<>'' then begin str_all.Text:=Changestr(t_op_edi.fieldbyname('AMS收货人').asstring); end else begin str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('收货人代码').asstring); end; end else begin str_all.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('收货人代码').asstring); end; GetLengthTString(str_all,45); str_guodu:='NAD+CN++'+str_all[0]+':'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; if str_all.Count>5 then begin for j:=2 to 3 do begin str_guodu:=str_guodu+':'+str_all[j] end; str_guodu:=str_guodu+':'+Copy(str_all[4],1,33)+'**'; Str_con:='**'+Copy(str_all[4],33,1); for j:=5 to str_all.Count-1 do begin Str_con:=Str_con+' '+str_all[j] end; end; if (t_op_edi.FieldByName('所在国家').asstring='美国') then begin str_guodu:=str_guodu+'+++'+t_op_edi.FieldByName('收货人邮编').asstring+#39; str.Add(str_guodu); end else if (t_op_edi.FieldByName('所在国家').asstring='加拿大') then begin str_guodu:=str_guodu+'+++'+t_op_edi.FieldByName('收货人邮编').asstring+'+CA'+#39; str.Add(str_guodu); end else if (t_op_edi.FieldByName('所在国家').asstring='巴西') then begin str_guodu:=str_guodu+'++++'+t_op_edi.FieldByName('收货人国家代码').asstring+#39; str.Add(str_guodu); str.Add('RFF+GN:'+t_op_edi.FieldByName('收货人税号').asstring+#39); // count:=count+1; end else begin str_guodu:=str_guodu+#39; str.Add(str_guodu); end; count:=count+1; str_head:=''; str_all.Clear; if not bsck.Checked then begin if t_op_edi.FieldByName('所在国家').asstring<>'' then begin str_all.Text:=Changestr(t_op_edi.fieldbyname('AMS通知人').asstring); end else begin str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('通知人代码').asstring); end; end else begin str_all.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('通知人代码').asstring); end; GetLengthTString(str_all,45); str_guodu:='NAD+NI++'+str_all[0]+':'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; if str_all.Count>5 then begin for j:=2 to 3 do begin str_guodu:=str_guodu+':'+str_all[j] end; str_guodu:=str_guodu+':'+Copy(str_all[4],1,32)+'***'; Str_not:='***'+Copy(str_all[4],32,1); for j:=5 to str_all.Count-1 do begin Str_not:=Str_not+' '+str_all[j] end; end; if (t_op_edi.FieldByName('所在国家').asstring='美国') then begin str_guodu:=str_guodu+'+++'+t_op_edi.FieldByName('通知人邮编').asstring+#39; str.Add(str_guodu); end else if (t_op_edi.FieldByName('所在国家').asstring='加拿大') then begin str_guodu:=str_guodu+#39; str.Add(str_guodu); end else if (t_op_edi.FieldByName('所在国家').asstring='巴西') then begin if t_op_edi.FieldByName('通知人国家代码').asstring<>'' then str_guodu:=str_guodu+'++++'+t_op_edi.FieldByName('通知人国家代码').asstring+#39 else str_guodu:=str_guodu+#39; str.Add(str_guodu); if t_op_edi.FieldByName('通知人税号').asstring<>'' then begin str.Add('RFF+GN:'+t_op_edi.FieldByName('通知人税号').asstring+#39); // count:=count+1; end; end else begin str_guodu:=str_guodu+#39; str.Add(str_guodu); end; count:=count+1; str.Add('NAD+CA+'+'SWI'+':160:86++'+'SWI'+#39); count:=count+1; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='DOOR-DOOR' then begin if not bsck.Checked then str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('发货人代码').asstring) else str_all.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('发货人代码').asstring); GetLengthTString(str_all,35); str_guodu:='NAD+SF++'+str_all[0]+':'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; if str_all.Count>5 then begin for j:=2 to 4 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; str_guodu:=str_guodu+#39; str.Add(str_guodu); count:=count+1; str.Add('CTA+IC+:'+edit7.text+''''); count:=count+1; str.Add('COM+'+Edit5.text+':TE'+#39); count:=count+1; str.Add('COM+'+Edit6.text+':EM'+#39); count:=count+1; str_head:=''; str_all.Clear; if not bsck.Checked then begin if t_op_edi.fieldbyname('所在国家').AsString<>'' then begin str_all.Text:=Changestr(t_op_edi.fieldbyname('AMS收货人').asstring); //t_op_edi end else begin str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('收货人代码').asstring); end; if (pos('TO ORDER',UpperCase(str_all.Text))>0) or (pos('SAME AS',UpperCase(str_all.Text))>0) then if t_op_edi.fieldbyname('所在国家').AsString<>'' then begin str_all.Text:=Changestr(t_op_edi.fieldbyname('通知人代码').asstring); end else begin str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('通知人代码').asstring); end; end else begin str_all.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('收货人代码').asstring); end; GetLengthTString(str_all,35); str_guodu:='NAD+ST++'+str_all[0]+':'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; if str_all.Count>5 then begin for j:=2 to 4 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; str_guodu:=str_guodu+#39; str.Add(str_guodu); count:=count+1; str.Add('CTA+IC+:'+edit7.text+''''); count:=count+1; str.Add('COM+'+Edit5.text+':TE'+#39); count:=count+1; str.Add('COM+'+Edit6.text+':EM'+#39); count:=count+1; end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='DOOR-CY' then begin str_all.Text:=Changestr(edit12.text); GetLengthTString(str_all,35); str_guodu:='NAD+SF++'+str_all[0]+'+'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; if str_all.Count>5 then begin for j:=2 to 4 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; str_guodu:=str_guodu+#39; str.Add(str_guodu); count:=count+1; str.Add('CTA+IC+:'+edit7.text+''''); count:=count+1; str.Add('COM+'+Edit5.text+':TE'+#39); count:=count+1; str.Add('COM+'+Edit6.text+':EM'+#39); count:=count+1; end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='CY-DOOR' then begin str_head:=''; str_all.Clear; str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('DOOR地址').asstring); GetLengthTString(str_all,35); str_guodu:='NAD+ST++'+str_all[0]+'+'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; if str_all.Count>5 then begin for j:=2 to 4 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; str_guodu:=str_guodu+#39; str.Add(str_guodu); count:=count+1; str.Add('CTA+IC+:'+edit7.text+''''); count:=count+1; str.Add('COM+'+Edit5.text+':TE'+#39); count:=count+1; str.Add('COM+'+Edit6.text+':EM'+#39); count:=count+1; end; str.Add('NAD+BP+2021015294+Smart International Logistics'+#39); count:=count+1; if (frm_op_seae.t_op_seae.fieldbyname('合同号').asstring<>'') then begin str.Add('NAD+ZZZ++'+frm_op_seae.t_op_seae.fieldbyname('合同号').asstring+#39); count:=count+1; end; if Pos('PREPAID',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)>0 then str.Add('CPI+4++P''') else if Pos('COLLECT',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)>0 then str.Add('CPI+4++C''') else str.Add('CPI+4++B'''); count:=count+1; if not bsck.Checked then begin str.Add('GID+1+'+frm_op_seae.t_op_seae.fieldbyname('件数').asstring+':'+ GetPkgCode(trim(frm_op_seae.t_op_seae.fieldbyname('包装').asstring))+'::6:'+frm_op_seae.t_op_seae.fieldbyname('包装').asstring+#39); //? end else begin str.Add('GID+1+'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('件数').asstring+':'+ GetPkgCode(trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('包装').asstring))+'::6:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('包装').asstring+#39); //? end; count:=count+1; sl:=TStringList.Create; try if not bsck.Checked then begin sl.text:=frm_op_seae.t_op_seae.fieldbyname('货物描述').asstring; end else begin sl.text:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('货物描述').asstring; end; for i:=0 to sl.Count-1 do begin str.Add('FTX+AAA+++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; finally FreeAndNil(sl); end; if Trim(str_shr)<>'' then begin str.Add('FTX+AAA+++'+ Str_shr+#39); count:=count+2; end; if Trim(str_con)<>'' then begin str.Add('FTX+AAA+++'+ Str_con+#39); count:=count+2; end; if Trim(str_not)<>'' then begin str.Add('FTX+AAA+++'+ Str_not+#39); count:=count+2; end; if not bsck.Checked then begin str.Add('MEA+AAE+G+KGM:'+frm_op_seae.t_op_seae.fieldbyname('重量').asstring+#39); count:=count+1; str.Add('MEA+AAE+AAW+MTQ:'+frm_op_seae.t_op_seae.fieldbyname('尺码').asstring+#39); count:=count+1; end else begin str.Add('MEA+AAE+G+KGM:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('重量').asstring+#39); count:=count+1; str.Add('MEA+AAE+AAW+MTQ:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('尺码').asstring+#39); count:=count+1; end; if Trim(t_op_edi.fieldbyname('货物NCM编号').asstring)<>'' then begin str.Add('RFF+ABT:'+t_op_edi.fieldbyname('货物NCM编号').asstring+#39); //? count:=count+1; end else begin end; if (t_op_edi.fieldbyname('超限箱标志').asstring='Y') then begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT * '); t_op_ctn.SQL.Add('FROM t_op_ctn '); t_op_ctn.SQL.Add('WHERE t_op_ctn.编号=:编号'); t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; t_op_ctn.Open; if (not t_op_ctn.IsEmpty) then begin str.Add('DIM+9+MTR:'+t_op_ctn.fieldbyname('长').AsString+':'+t_op_ctn.fieldbyname('宽').AsString+':'+t_op_ctn.fieldbyname('高').AsString+#39); //? count:=count+1; end; end; sl:=TStringList.Create; try if not bsck.Checked then begin sl.text:=frm_op_seae.t_op_seae.fieldbyname('唛头').asString; end else begin sl.text:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('唛头').asString; end; GetLengthTString(sl,35); for i:=0 to sl.Count-1 do begin str.Add('PCI++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; finally FreeAndNil(sl); end; if ((frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='D') OR (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='T')) then begin str.Add('DGS+IMD+'+frm_op_seae.t_op_seae.fieldbyname('危险品分类').asstring +'+'+frm_op_seae.t_op_seae.fieldbyname('危险品编号').asstring+#39); count:=count+1; str.Add('CTA+HG+:'+edit7.text+#39); count:=count+1; str.Add('COM+'+Edit5.text+':TE'+#39); count:=count+1; end; if not bsck.Checked then begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT t_op_ctn.编号,t_op_ctn.数量, t_code_ctn.EDI代码,t_op_ctn.尺寸,t_op_ctn.包装'); t_op_ctn.SQL.Add(',t_op_ctn.箱型,t_op_ctn.箱号,t_op_ctn.重量,t_op_ctn.封号,t_op_ctn.尺码,t_op_ctn.件数'); t_op_ctn.SQL.Add('FROM t_op_ctn INNER JOIN'); t_op_ctn.SQL.Add('t_code_ctn ON t_op_ctn.代码 = t_code_ctn.代码'); t_op_ctn.SQL.Add('WHERE t_op_ctn.编号=:编号'); t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; end else begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT t_op_ctn_fendan.编号,t_op_ctn_fendan.数量, t_code_ctn.EDI代码,t_op_ctn_fendan.尺寸,t_op_ctn_fendan.包装'); t_op_ctn.SQL.Add(',t_op_ctn_fendan.箱型,t_op_ctn_fendan.箱号,t_op_ctn_fendan.重量,t_op_ctn_fendan.封号,t_op_ctn_fendan.尺码,t_op_ctn_fendan.件数'); t_op_ctn.SQL.Add('FROM t_op_ctn_fendan INNER JOIN'); t_op_ctn.SQL.Add('t_code_ctn ON t_op_ctn_fendan.代码 = t_code_ctn.代码'); t_op_ctn.SQL.Add('WHERE t_op_ctn_fendan.as_id=:as_id'); t_op_ctn.close; t_op_ctn.Parameters.ParamByName('as_id').Value:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('as_id').asinteger; end; t_op_ctn.open; t_op_ctn.first; while not t_op_ctn.eof do begin if frm_op_seae.t_op_seae.fieldbyname('是否自有箱').asboolean then str.Add('EQD+CN++'+GetCtnCode(t_op_ctn.fieldbyname('箱型').asstring,t_op_ctn.fieldbyname('尺寸').asstring)+'+1'+#39) else str.Add('EQD+CN++'+GetCtnCode(t_op_ctn.fieldbyname('箱型').asstring,t_op_ctn.fieldbyname('尺寸').asstring)+'+2'+#39); //箱型 多箱型 count:=count+1; str.Add('EQN+'+t_op_ctn.fieldbyname('数量').asstring+#39); //数量 count:=count+1; str.Add('TMD+3++MM'+#39); //数量 count:=count+1; if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') OR (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='T') then begin if Trim(frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring)<>'' then begin str.Add('MEA+AAE+AAS+CBM:'+frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring+#39); count:=count+1; end; if Trim(frm_op_seae.t_op_seae.fieldbyname('湿度').asstring)<>'' then begin str.Add('MEA+AAE+AAO+HMD:'+frm_op_seae.t_op_seae.fieldbyname('湿度').asstring+#39); count:=count+1; end; end; if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') OR (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='T') then begin str.Add('TMP+2+'+frm_op_seae.t_op_seae.fieldbyname('设置温度').asstring+':CEL'+#39); count:=count+1; end; t_op_ctn.next; end; count:=count+1; result:=count; end; function Tfrm_op_seae_edi_swi.get_txtSI(str: Tstringlist): integer; //提单确认 var str_all,sl:Tstringlist; ctnlist:TStringList; j,Count,i,k,Lineno:integer; str_guodu,str_shr,str_con,str_not:widestring; str_pay,Str_head,str1,str2,CopyBillCount:string; aAdoQuery:TAdoQuery; function CutVoyNo(VoyNo:String):String; begin if length(VoyNO)<3 then exit; if Pos('.',VoyNO)>0 then begin Result:=Copy(VoyNO,3,length(VoyNO)-2); end else Result:=VoyNO; end; begin str_all:=Tstringlist.Create; count:=0; str.Add('UNB+UNOC:2+'+Edit1.TEXT+':ZZZ+'+Edit3.TEXT +':ZZZ+'+GetDatetime(datetimetostr(now),2)+'+' +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); count:=count+1; str.Add('UNH+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+'+IFTMIN:D:99B:UN'+#39); count:=count+1; if not bsck.checked then begin if RadioGroup3.ItemIndex=0 then str.Add('BGM+340+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+9'+#39) else str.Add('BGM+340+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+5'+#39); count:=count+1; end else begin if RadioGroup3.ItemIndex=0 then str.Add('BGM+340+'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring+'+9'+#39) else str.Add('BGM+340+'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring+'+5'+#39); count:=count+1; end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='' then begin showmessage('业务编号为:'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +'的业务运输条款没有输入!!'); result:=-1; exit; end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='DOOR-DOOR' then begin str.Add('TSR+27+2'+#39); end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='DOOR-CY' then begin str.Add('TSR+28+2'+#39); end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='CY-DOOR' then begin str.Add('TSR+29+2'+#39); end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='CY-CY' then begin str.Add('TSR+30+2'+#39); end; if trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring)='OTHER' then begin str.Add('TSR+30+2'+#39); end; count:=count+1; if Pos('PREPAID',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)>0 then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring); if Pos('COLLECT',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)>0 then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring); sl:=TStringList.Create; try if not bsck.checked then sl.text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString) else sl.text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('EDI备注').asString); for i:=0 to sl.Count-1 do begin str.Add('FTX+AAI+++'+sl.Strings[i]+''+#39); count:=count+1; end; finally FreeAndNil(sl); end; if (t_op_edi.FieldByName('所在国家').asstring='加拿大') then begin if (t_op_edi.FieldByName('SCAC编号').asstring<>'') then str.Add('FTX+CCI++MFS+1:CA:'+t_op_edi.FieldByName('SCAC编号').asstring+#39) else str.Add('FTX+CCI++MFS+5:CA'+#39); end; if (t_op_edi.FieldByName('所在国家').asstring='美国') then begin if (t_op_edi.FieldByName('SCAC编号').asstring<>'') then str.Add('FTX+CCI++MFS+1:US:'+t_op_edi.FieldByName('SCAC编号').asstring+#39) else str.Add('FTX+CCI++MFS+5:US'+#39); end; count:=count+1; if frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring='FREIGHT PREPAID' then begin str.Add('LOC+57+'+GetPortEdiID(trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)) +'::6:'+trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)+#39); end else if frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring='FREIGHT COLLECT' then begin str.Add('LOC+57+'+trim(frm_op_seae.t_op_seae.fieldbyname('到付地点代码').asstring) +'::6:'+trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring)+#39); end else str.Add('LOC+57+'+GetPortEdiID(trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)) +'::6:'+trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)+#39); count:=count+1; str.Add('LOC+73+'+GetPortEdiID(trim(frm_op_seae.t_op_seae.fieldbyname('签单地点').asstring)) +'::6:'+trim(frm_op_seae.t_op_seae.fieldbyname('签单地点').asstring)+#39); count:=count+1; if not bsck.checked then begin if t_op_edi.IsEmpty or (t_op_edi.FieldByName('定舱号').AsString='') then str.Add('RFF+BN:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39) else str.Add('RFF+BN:'+t_op_edi.FieldByName('定舱号').AsString+#39); // end; count:=count+1; end else begin str.Add('RFF+BN:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring+#39); count:=count+1; end; if not bsck.checked then begin str.Add('RFF+SI:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; end else begin str.Add('RFF+SI:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring+#39); count:=count+1; end; str.Add('RFF+CT:'+Changestr(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+#39); // count:=count+1; if (t_op_edi.FieldByName('所在国家').asstring='美国') then begin str.Add('REF+TN:'+Changestr(t_op_edi.FieldByName('ITN编号').asstring)+#39); count:=count+1; end; if Pos('PREPAID',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)>0 then str.Add('CPI+4++P''') else str.Add('CPI+4++C'''); count:=count+1; if SelectCarrier then begin if Trim(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring)<>'' then begin if bsSkinCheckRadioBox1.Checked then str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring) +'+1++'+aCarrier.EdiNo+'+++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39) else str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring) +'+1+++++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39); count:=count+1; end else begin if bsSkinCheckRadioBox1.Checked then str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('航次').asstring) +'+1++'+aCarrier.EdiNo+'+++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39) else str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('航次').asstring) +'+1+++++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39); count:=count+1; end; end else begin if Trim(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring)<>'' then begin if bsSkinCheckRadioBox1.Checked then str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring) +'+1++'+GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)+'+++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39) else str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('内部航次号').asstring) +'+1+++++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39); count:=count+1; end else begin if bsSkinCheckRadioBox1.Checked then str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('航次').asstring) +'+1++'+GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)+'+++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39) else str.Add('TDT+20+'+CutVoyNo(frm_op_seae.t_op_seae.fieldbyname('航次').asstring) +'+1+++++:::'+frm_op_seae.t_op_seae.fieldbyname('船名').asstring+#39); count:=count+1; end; end; str.Add('LOC+9+'+GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)+#39); count:=count+1; if (t_op_edi.FieldByName('收货地点').asstring<>'') then begin str.Add('LOC+88+'+GetPortEdiIDBYEDICODE(t_op_edi.FieldByName('收货代码').asstring) +':139:6:'+trim(t_op_edi.FieldByName('收货地点').asstring)+#39); count:=count+1; end else begin str.Add('LOC+88+'+GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)+#39); count:=count+1; end; str.Add('LOC+11+'+GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring) +':139:6:'+trim(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring)+#39); count:=count+1; if trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring)<>'' then begin str.Add('LOC+7+'+GetPortEdiIDBYEDICODE(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring) //? +':139:6:'+trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring)+#39); count:=count+1; end; str_all.Clear; str_head:=''; if not bsck.checked then begin if t_op_edi.FieldByName('所在国家').asstring<>'' then begin str_all.Text:=Changestr(t_op_edi.fieldbyname('AMS发货人').asstring); end else begin str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('发货人代码').asstring); end; end else begin str_all.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('发货人代码').asstring); end; GetLengthTString(str_all,45); str_guodu:='NAD+CZ+++'+str_all[0]+'+'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; if str_all.Count>5 then begin for j:=2 to 3 do begin str_guodu:=str_guodu+':'+str_all[j] end; str_guodu:=str_guodu+':'+Copy(str_all[4],1,34)+'*'; Str_shr:='*'+Copy(str_all[4],34,1); for j:=5 to str_all.Count-1 do begin Str_shr:=Str_shr+' '+str_all[j] end; end; str_guodu:=str_guodu+#39; str.Add(str_guodu); count:=count+1; str_head:=''; str_all.Clear; if not bsck.Checked then begin if t_op_edi.FieldByName('所在国家').asstring<>'' then begin str_all.Text:=Changestr(t_op_edi.fieldbyname('AMS收货人').asstring); end else begin str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('收货人代码').asstring); end; end else begin str_all.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('收货人代码').asstring); end; GetLengthTString(str_all,45); str_guodu:='NAD+CN+++'+str_all[0]+'+'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; if str_all.Count>5 then begin for j:=2 to 3 do begin str_guodu:=str_guodu+':'+str_all[j] end; str_guodu:=str_guodu+':'+Copy(str_all[4],1,33)+'**'; Str_con:='**'+Copy(str_all[4],33,1); for j:=5 to str_all.Count-1 do begin Str_con:=Str_con+' '+str_all[j] end; end; if (t_op_edi.FieldByName('所在国家').asstring='美国') then begin str_guodu:=str_guodu+'+++'+t_op_edi.FieldByName('收货人邮编').asstring+#39; str.Add(str_guodu); end else if (t_op_edi.FieldByName('所在国家').asstring='加拿大') then begin str_guodu:=str_guodu+'+++'+t_op_edi.FieldByName('收货人邮编').asstring+'+CA'+#39; str.Add(str_guodu); end else if (t_op_edi.FieldByName('所在国家').asstring='巴西') then begin str_guodu:=str_guodu+'++++'+t_op_edi.FieldByName('收货人国家代码').asstring+#39; str.Add(str_guodu); str.Add('RFF+GN:'+t_op_edi.FieldByName('收货人税号').asstring+#39); // count:=count+1; end else begin str_guodu:=str_guodu+#39; str.Add(str_guodu); end; count:=count+1; //代理 str_head:=''; str_all.Clear; str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('代理内容').asstring); IF str_all.Count>0 then begin GetLengthTString(str_all,35); str_guodu:='NAD+FW+++'+str_all[0]+'+'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; str_guodu:=str_guodu+#39; str.Add(str_guodu); count:=count+1; end; str_head:=''; str_all.Clear; if not bsck.checked then begin if t_op_edi.FieldByName('所在国家').asstring<>'' then begin str_all.Text:=Changestr(t_op_edi.fieldbyname('AMS通知人').asstring); end else begin str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('通知人代码').asstring); end; end else begin str_all.Text:=Changestr(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('通知人代码').asstring); end; GetLengthTString(str_all,45); str_guodu:='NAD+NI+++'+str_all[0]+'+'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; if str_all.Count>5 then begin for j:=2 to 3 do begin str_guodu:=str_guodu+':'+str_all[j] end; str_guodu:=str_guodu+':'+Copy(str_all[4],1,32)+'***'; Str_not:='***'+Copy(str_all[4],32,1); for j:=5 to str_all.Count-1 do begin Str_not:=Str_not+' '+str_all[j] end; end; if (t_op_edi.FieldByName('所在国家').asstring='美国') then begin str_guodu:=str_guodu+'+++'+t_op_edi.FieldByName('通知人邮编').asstring+#39; str.Add(str_guodu); end else if (t_op_edi.FieldByName('所在国家').asstring='加拿大') then begin str_guodu:=str_guodu+#39; str.Add(str_guodu); end else if (t_op_edi.FieldByName('所在国家').asstring='巴西') then begin if t_op_edi.FieldByName('通知人国家代码').asstring<>'' then str_guodu:=str_guodu+'++++'+t_op_edi.FieldByName('通知人国家代码').asstring+#39 else str_guodu:=str_guodu+#39; str.Add(str_guodu); if t_op_edi.FieldByName('通知人税号').asstring<>'' then begin str.Add('RFF+GN:'+t_op_edi.FieldByName('通知人税号').asstring+#39); // count:=count+1; end; end else begin str_guodu:=str_guodu+#39; str.Add(str_guodu); end; count:=count+1; if trim(frm_op_seae.t_op_seae.fieldbyname('第二通知人').asstring)<>'' then begin str_head:=''; str_all.Clear; str_all.Text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('第二通知人').asstring); GetLengthTString(str_all,35); str_guodu:='NAD+N1+++'+str_all[0]+'+'; if str_all.Count>=2 then str_guodu:=str_guodu+str_all[1]; if (str_all.Count>=3) and (str_all.Count<=5) then begin for j:=2 to str_all.Count-1 do begin str_guodu:=str_guodu+':'+str_all[j] end; end; str_guodu:=str_guodu+#39; str.Add(str_guodu); count:=count+1; end; if SelectCarrier then begin str.Add('NAD+CA+'+'SWI'+':160:86++'+'SWI'+#39); count:=count+1; end else begin str.Add('NAD+CA+'+'SWI'+':160:86++'+'SWI'+#39); count:=count+1; end; if frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring='ONE' then Str1:='1' else if frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring='TWO' then Str1:='2' else if frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring='THREE' then Str1:='3' else if frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring='FOUR' then Str1:='4' else if frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring='FIVE' then Str1:='5' else if frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring='SIX' then Str1:='6' else if frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring='SERVEN' then Str1:='7' else if frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring='EIGHT' then Str1:='8' else if frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring='NIGHT' then Str1:='9' else if frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring='TEN' then Str1:='10'; if frm_op_seae.t_op_seae.fieldbyname('副本提单份数').asstring='ONE' then CopyBillCount:='1' else if frm_op_seae.t_op_seae.fieldbyname('副本提单份数').asstring='TWO' then CopyBillCount:='2' else if frm_op_seae.t_op_seae.fieldbyname('副本提单份数').asstring='THREE' then CopyBillCount:='3' else if frm_op_seae.t_op_seae.fieldbyname('副本提单份数').asstring='FOUR' then CopyBillCount:='4' else if frm_op_seae.t_op_seae.fieldbyname('副本提单份数').asstring='FIVE' then CopyBillCount:='5' else if frm_op_seae.t_op_seae.fieldbyname('副本提单份数').asstring='SIX' then CopyBillCount:='6' else if frm_op_seae.t_op_seae.fieldbyname('副本提单份数').asstring='SERVEN' then CopyBillCount:='7' else if frm_op_seae.t_op_seae.fieldbyname('副本提单份数').asstring='EIGHT' then CopyBillCount:='8' else if frm_op_seae.t_op_seae.fieldbyname('副本提单份数').asstring='NIGHT' then CopyBillCount:='9' else if frm_op_seae.t_op_seae.fieldbyname('副本提单份数').asstring='TEN' then CopyBillCount:='10'; IF (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='正本') or (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='电子提单') then begin //提单类型 Str2:='706'; if frm_op_seae.t_op_seae.fieldbyname('运费').AsBoolean then str.Add('DOC+'+Str2+'+:27++'+Str1+#39) else str.Add('DOC+'+Str2+'+:26++'+Str1+#39); count:=count+1; if trim(CopyBillCount)<>'' then begin Str2:='707'; if frm_op_seae.t_op_seae.fieldbyname('运费').AsBoolean then str.Add('DOC+'+Str2+'+:27++'+CopyBillCount+#39) else str.Add('DOC+'+Str2+'+:26++'+CopyBillCount+#39); count:=count+1; end; end else if (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='海运单') or (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='Seaway') then begin Str2:='710'; if frm_op_seae.t_op_seae.fieldbyname('运费').AsBoolean then str.Add('DOC+'+Str2+'+:27++'+Str1+#39) else str.Add('DOC+'+Str2+'+:26++'+Str1+#39); count:=count+1; end else if (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='BILL COPY') or (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='电放') then begin Str2:='706'; if frm_op_seae.t_op_seae.fieldbyname('运费').AsBoolean then str.Add('DOC+'+Str2+'+:27++'+Str1+#39) else str.Add('DOC+'+Str2+'+:26++'+Str1+#39); count:=count+1; if Trim(CopyBillCount)<>'' then begin Str2:='707'; if frm_op_seae.t_op_seae.fieldbyname('运费').AsBoolean then str.Add('DOC+'+Str2+'+:27++'+CopyBillCount+#39) else str.Add('DOC+'+Str2+'+:26++'+CopyBillCount+#39); count:=count+1; end; end else if trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='HOUSE BILL' then begin Str2:='714'; if frm_op_seae.t_op_seae.fieldbyname('运费').AsBoolean then str.Add('DOC+'+Str2+'+:27++'+Str1+#39) else str.Add('DOC+'+Str2+'+:26++'+Str1+#39); count:=count+1; end else if trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='正副本' then begin Str2:='706'; if frm_op_seae.t_op_seae.fieldbyname('运费').AsBoolean then str.Add('DOC+'+Str2+'+:27++'+Str1+#39) else str.Add('DOC+'+Str2+'+:26++'+Str1+#39); count:=count+1; if Trim(CopyBillCount)<>'' then begin Str2:='707'; if frm_op_seae.t_op_seae.fieldbyname('运费').AsBoolean then str.Add('DOC+'+Str2+'+:27++'+CopyBillCount+#39) else str.Add('DOC+'+Str2+'+:26++'+CopyBillCount+#39); count:=count+1; end; end else begin Str2:='706'; if frm_op_seae.t_op_seae.fieldbyname('运费').AsBoolean then str.Add('DOC+'+Str2+'+:27++'+Str1+#39) else str.Add('DOC+'+Str2+'+:26++'+Str1+#39); // str.Add('DOC+'+Str2+'+++'+Str1+#39); count:=count+1; end; /// ctnlist:=TStringList.Create; ctnlist.Clear; with t_op_edictn do begin Close;SQL.Clear; SQL.Add('select ctn_id from t_op_ctn'); SQL.Add('where 编号=:bsno'); Parameters.ParamByName('bsno').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; open;First; while not eof do begin ctnlist.Add(FieldByName('ctn_id').AsString); Next; end; end; t_op_edictn.Close;t_op_edictn.SQL.Clear; t_op_edictn.SQL.Add('select * from t_op_ctn_detail'); t_op_edictn.SQL.Add('where ctn_id in ('+ctnlist.CommaText+')'); t_op_edictn.Open; if t_op_edictn.RecordCount<=0 then begin if not bsck.checked then begin str.Add('GID+1+'+frm_op_seae.t_op_seae.fieldbyname('件数').asstring+':'+ GetPkgCode(trim(frm_op_seae.t_op_seae.fieldbyname('包装').asstring))+'::6:'+frm_op_seae.t_op_seae.fieldbyname('包装').asstring+#39); //? count:=count+1; end else begin str.Add('GID+1+'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('件数').asstring+':'+ GetPkgCode(trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('包装').asstring))+'::6:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('包装').asstring+#39); //? count:=count+1; end; if RadioGroup1.ItemIndex=0 then begin sl:=TStringList.Create; try if not bsck.checked then sl.text:=frm_op_seae.t_op_seae.fieldbyname('货物描述').asstring else sl.text:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('货物描述').asstring; for i:=0 to sl.Count-1 do begin str.Add('FTX+AAA+++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; finally FreeAndNil(sl); end; end else begin sl:=TStringList.Create; try if not bsck.checked then sl.text:=frm_op_seae.t_op_seae.fieldbyname('货物描述').asstring else sl.text:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('货物描述').asstring; for i:=0 to sl.Count-1 do begin str.Add('FTX+AAA+++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; finally FreeAndNil(sl); end; if Trim(str_shr)<>'' then begin str.Add('FTX+AAA+++'+ Str_shr+#39); count:=count+2; end; if Trim(str_con)<>'' then begin str.Add('FTX+AAA+++'+ Str_con+#39); count:=count+2; end; if Trim(str_not)<>'' then begin str.Add('FTX+AAA+++'+ Str_not+#39); count:=count+2; end; end; if not bsck.checked then begin str.Add('MEA+AAE+WT+KGM:'+frm_op_seae.t_op_seae.fieldbyname('重量').asstring+#39); count:=count+1; str.Add('MEA+AAE+AAW+MTQ:'+frm_op_seae.t_op_seae.fieldbyname('尺码').asstring+#39); count:=count+1; end else begin str.Add('MEA+AAE+WT+KGM:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('重量').asstring+#39); count:=count+1; str.Add('MEA+AAE+AAW+MTQ:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('尺码').asstring+#39); count:=count+1; end; if (t_op_edi.fieldbyname('超限箱标志').asstring='Y') then begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT * '); t_op_ctn.SQL.Add('FROM t_op_ctn '); t_op_ctn.SQL.Add('WHERE t_op_ctn.编号=:编号'); t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; t_op_ctn.Open; if (not t_op_ctn.IsEmpty) then begin str.Add('DIM+9+MTR:'+t_op_ctn.fieldbyname('长').AsString+':'+t_op_ctn.fieldbyname('宽').AsString+':'+t_op_ctn.fieldbyname('高').AsString+#39); //? count:=count+1; end; end; sl:=TStringList.Create; try if not bsck.checked then sl.text:=frm_op_seae.t_op_seae.fieldbyname('唛头').asString else sl.text:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('唛头').asString; GetLengthTString(sl,35); for i:=0 to sl.Count-1 do begin str.Add('PCI++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; finally FreeAndNil(sl); end; if not bsck.Checked then begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT t_op_ctn.编号,t_op_ctn.数量, t_code_ctn.EDI代码,t_op_ctn.尺寸,t_op_ctn.包装'); t_op_ctn.SQL.Add(',t_op_ctn.箱型,t_op_ctn.箱号,t_op_ctn.重量,t_op_ctn.封号,t_op_ctn.尺码,t_op_ctn.件数'); t_op_ctn.SQL.Add('FROM t_op_ctn INNER JOIN'); t_op_ctn.SQL.Add('t_code_ctn ON t_op_ctn.代码 = t_code_ctn.代码'); t_op_ctn.SQL.Add('WHERE t_op_ctn.编号=:编号'); t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; end else begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT t_op_ctn_fendan.编号,t_op_ctn_fendan.数量, t_code_ctn.EDI代码,t_op_ctn_fendan.尺寸,t_op_ctn_fendan.包装'); t_op_ctn.SQL.Add(',t_op_ctn_fendan.箱型,t_op_ctn_fendan.箱号,t_op_ctn_fendan.重量,t_op_ctn_fendan.封号,t_op_ctn_fendan.尺码,t_op_ctn_fendan.件数'); t_op_ctn.SQL.Add('FROM t_op_ctn_fendan INNER JOIN'); t_op_ctn.SQL.Add('t_code_ctn ON t_op_ctn_fendan.代码 = t_code_ctn.代码'); t_op_ctn.SQL.Add('WHERE t_op_ctn_fendan.as_id=:as_id'); t_op_ctn.close; t_op_ctn.Parameters.ParamByName('as_id').Value:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('as_id').asinteger; end; t_op_ctn.open; t_op_ctn.first; while not t_op_ctn.eof do begin str.Add('SGP+'+t_op_ctn.fieldbyname('箱号').asstring+'+'+t_op_ctn.fieldbyname('件数').asstring+#39); //数量 count:=count+1; str.Add('MEA+AAE+WT+KGM:'+t_op_ctn.fieldbyname('重量').asstring+#39); count:=count+1; str.Add('MEA+AAE+AAW+MTQ:'+t_op_ctn.fieldbyname('尺码').asstring+#39); count:=count+1; t_op_ctn.next; end; end else //分箱明细 begin t_op_edictn.Close;t_op_edictn.SQL.Clear; t_op_edictn.SQL.Add('select hts,货物描述,包装,sum(件数)件数,sum(重量) 重量,sum(尺码) 尺码'); t_op_edictn.SQL.Add('from t_op_ctn_detail'); t_op_edictn.SQL.Add('where ctn_id in ('+ctnlist.CommaText+')'); t_op_edictn.SQL.Add('Group by hts,货物描述,包装'); t_op_edictn.SQL.Add('Order by min(id)'); t_op_edictn.Open; Lineno:=1; while not t_op_edictn.eof do begin str.Add('GID+'+Inttostr(Lineno)+'+'+t_op_edictn.fieldbyname('件数').asstring+':'+ GetPkgCode(trim(t_op_edictn.fieldbyname('包装').asstring))+'::6:'+t_op_edictn.fieldbyname('包装').asstring+#39); //? count:=count+1; str.Add('PIA+5+'+t_op_edictn.fieldbyname('hts').asstring+':HS'+#39); //? count:=count+1; sl:=TStringList.Create; try sl.text:=t_op_edictn.fieldbyname('货物描述').asstring; for i:=0 to sl.Count-1 do begin str.Add('FTX+AAA+++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; finally FreeAndNil(sl); end; str.Add('MEA+AAE+WT+KGM:'+t_op_edictn.fieldbyname('重量').asstring+#39); count:=count+1; str.Add('MEA+AAE+AAW+MTQ:'+t_op_edictn.fieldbyname('尺码').asstring+#39); count:=count+1; if Trim(t_op_edi.fieldbyname('货物NCM编号').asstring)<>'' then begin str.Add('RFF+ABT:'+t_op_edi.fieldbyname('货物NCM编号').asstring+#39); //? count:=count+1; end; if Lineno=1 then begin sl:=TStringList.Create; try if not bsck.Checked then sl.text:=frm_op_seae.t_op_seae.fieldbyname('唛头').asString else sl.text:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('唛头').asString; GetLengthTString(sl,35); for i:=0 to sl.Count-1 do begin str.Add('PCI++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; finally FreeAndNil(sl); end; end; aAdoQuery:=CreateAdoQuery; try aAdoQuery.Close;aAdoQuery.SQL.Clear; aAdoQuery.SQL.Add('select t_op_ctn.箱号,sum(t_op_ctn_detail.件数)件数,sum(t_op_ctn_detail.重量) 重量,sum(t_op_ctn_detail.尺码) 尺码'); aAdoQuery.SQL.Add('from t_op_ctn_detail'); aAdoQuery.SQL.Add('left Join t_op_ctn on t_op_ctn.ctn_id=t_op_ctn_detail.ctn_id'); aAdoQuery.SQL.Add('where t_op_ctn.编号=:编号 and t_op_ctn_detail.货物描述=:goods and t_op_ctn_detail.包装=:pkg and t_op_ctn_detail.hts=:hts'); aAdoQuery.SQL.Add('Group by t_op_ctn.箱号'); aAdoQuery.Parameters.ParamByName('goods').Value:=t_op_edictn.fieldbyname('货物描述').asstring; aAdoQuery.Parameters.ParamByName('pkg').Value:=t_op_edictn.fieldbyname('包装').asstring; aAdoQuery.Parameters.ParamByName('hts').Value:=t_op_edictn.fieldbyname('hts').asstring; aAdoQuery.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; aAdoQuery.Open; while not aAdoQuery.eof do begin str.Add('SGP+'+aAdoQuery.fieldbyname('箱号').asstring+'+'+aAdoQuery.fieldbyname('件数').asstring+#39); //数量 count:=count+1; str.Add('MEA+AAE+WT+KGM:'+aAdoQuery.fieldbyname('重量').asstring+#39); count:=count+1; str.Add('MEA+AAE+AAW+MTQ:'+aAdoQuery.fieldbyname('尺码').asstring+#39); count:=count+1; aAdoQuery.Next; end; finally aAdoQuery.Free; end; Lineno:=Lineno+1; t_op_edictn.Next; end; end; //// if ((frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='D') OR (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='T') ) then begin str.Add('DGS+IMD+'+frm_op_seae.t_op_seae.fieldbyname('危险品分类').asstring +'+'+frm_op_seae.t_op_seae.fieldbyname('危险品编号').asstring+#39); count:=count+1; str.Add('CTA+HG+:'+edit7.text+#39); count:=count+1; str.Add('COM+'+Edit5.text+':TE'+#39); count:=count+1; end; if not bsck.Checked then begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT t_op_ctn.编号,t_op_ctn.数量, t_code_ctn.EDI代码,t_op_ctn.尺寸,t_op_ctn.包装'); t_op_ctn.SQL.Add(',t_op_ctn.箱型,t_op_ctn.箱号,t_op_ctn.重量,t_op_ctn.封号,t_op_ctn.尺码,t_op_ctn.件数'); t_op_ctn.SQL.Add('FROM t_op_ctn INNER JOIN'); t_op_ctn.SQL.Add('t_code_ctn ON t_op_ctn.代码 = t_code_ctn.代码'); t_op_ctn.SQL.Add('WHERE t_op_ctn.编号=:编号'); t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; end else begin t_op_ctn.Close;t_op_ctn.SQL.Clear; t_op_ctn.SQL.Add('SELECT t_op_ctn_fendan.编号,t_op_ctn_fendan.数量, t_code_ctn.EDI代码,t_op_ctn_fendan.尺寸,t_op_ctn_fendan.包装'); t_op_ctn.SQL.Add(',t_op_ctn_fendan.箱型,t_op_ctn_fendan.箱号,t_op_ctn_fendan.重量,t_op_ctn_fendan.封号,t_op_ctn_fendan.尺码,t_op_ctn_fendan.件数'); t_op_ctn.SQL.Add('FROM t_op_ctn_fendan INNER JOIN'); t_op_ctn.SQL.Add('t_code_ctn ON t_op_ctn_fendan.代码 = t_code_ctn.代码'); t_op_ctn.SQL.Add('WHERE t_op_ctn_fendan.as_id=:as_id'); t_op_ctn.close; t_op_ctn.Parameters.ParamByName('as_id').Value:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('as_id').asinteger; end; t_op_ctn.open; t_op_ctn.first; while not t_op_ctn.eof do begin if frm_op_seae.t_op_seae.fieldbyname('是否自有箱').asboolean then str.Add('EQD+CN+'+t_op_ctn.fieldbyname('箱号').asstring+'+'+GetCtnCode(t_op_ctn.fieldbyname('箱型').asstring,t_op_ctn.fieldbyname('尺寸').asstring)+'+1'+#39) //数量 else str.Add('EQD+CN+'+t_op_ctn.fieldbyname('箱号').asstring+'+'+GetCtnCode(t_op_ctn.fieldbyname('箱型').asstring,t_op_ctn.fieldbyname('尺寸').asstring)+'+2'+#39); //数量 count:=count+1; str.Add('MEA+AAE+WT+KGM:'+t_op_ctn.fieldbyname('重量').asstring+#39); count:=count+1; str.Add('MEA+AAE+AAW+MTQ:'+t_op_ctn.fieldbyname('尺码').asstring+#39); count:=count+1; if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') OR (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='T') then begin if Trim(frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring)<>'' then begin str.Add('MEA+AAE+AAS+CBM:'+frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring+#39); count:=count+1; end; end; str.Add('SEL+'+t_op_ctn.fieldbyname('封号').asstring+'+SH'+#39); count:=count+1; if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') OR (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='T') then begin str.Add('TMP+2+'+frm_op_seae.t_op_seae.fieldbyname('设置温度').asstring+':CEL'+#39); count:=count+1; end; t_op_ctn.next; end; count:=count+1; result:=count; end; function Tfrm_op_seae_edi_swi.get_txtvgm_cma(str:Tstringlist):integer; var str_all,sl:Tstringlist; i,count:integer; SM,Carrer:string; begin i:=0; Carrer:='SWI'; str_all:=Tstringlist.Create; count:=0; str.Add('UNB+UNOC:3+'+Edit1.TEXT+':ZZZ+'+Carrer +':ZZZ+'+GetDatetime(datetimetostr(now),2)+'+' +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); count:=count+1; t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; t_op_ctn.open; t_op_ctn.first; while not t_op_ctn.eof do begin if (t_op_ctn.fieldbyname('称重方式').asstring<>'') or (t_op_ctn.fieldbyname('称重方式').asstring<>'无') then begin i:=i+1; str.Add('UNH+'+IntToStr(i)+'+VERMAS:D:16A:UN'+#39); count:=count+1; if RadioGroup3.ItemIndex=0 then str.Add('BGM+XXX+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+9'+#39) //9原始 5 更新 else str.Add('BGM+XXX+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+5'+#39); //9原始 5 更新 count:=count+1; str.Add('DTM+137:'+GetDatetime(datetimetostr(now),1)+':203'+#39); count:=count+1; str.Add('EQD+CN+'+t_op_ctn.fieldbyname('箱号').asstring+'+'+GetCtnCode(t_op_ctn.fieldbyname('箱型').asstring,t_op_ctn.fieldbyname('尺寸').asstring)+'+2'+#39); //数量 str.Add('RFF+BN:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); str.Add('MEA+AAE+VGM+KGM:'+t_op_ctn.fieldbyname('称重重量').asstring+#39); ////累加 无 count:=count+1; if Trim(t_op_ctn.fieldbyname('称重方式').asstring)='累加' then SM:='SM2' else if Trim(t_op_ctn.fieldbyname('称重方式').asstring)='总重' then SM:='SM1'; str.Add('DOC+'+SM+':VGM:306'+#39); ////累加 无 count:=count+1; str.Add('NAD+SPC+++'+Changestr(Edit2.Text)+#39); ////累加 无 count:=count+1; str.Add('UNT+9+'+IntToStr(i)+#39); count:=count+1; end; t_op_ctn.next; end; result:=i; end; procedure Tfrm_op_seae_edi_swi.bsSkinButton1Click(Sender: TObject); var str:Tstringlist; i,Count,get_Count,bill_count:integer; inifile1:Tinifile; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE:string; edi:WideString; begin if bsck.Checked then begin if frm_op_seae_assistant=nil then begin ShowMessage('请在(委托和提单)界面选择分单发送分单Edi'); exit; end end; str:=Tstringlist.Create; str.Clear; count:=0; bill_count:=0; if frm_op_seae.dxdbgrid1.SelectedCount>1 then begin for i:=0 to frm_op_seae.dxdbgrid1.SelectedCount-1 do begin frm_op_seae.t_op_seae.GotoBookmark(pointer(frm_op_seae.dxdbgrid1.selectedrows[i])); if not isEditrue then exit; if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_swi.get_txtSI(str) else get_Count:=frm_op_seae_edi_swi.get_txtBooking(str); if get_Count=-1 then exit else count:=count+get_Count; bill_count:=bill_count+1; end; str.Add('UNT+'+INTTOSTR(str.count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); str.Add('UNZ+'+inttostr(bill_count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end else begin if not isEditrue then exit; if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_swi.get_txtSI(str) else get_Count:=frm_op_seae_edi_swi.get_txtBooking(str); if get_Count=-1 then exit else count:=count+get_Count; str.Add('UNT+'+INTTOSTR(str.count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); str.Add('UNZ+1+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end; for i:=0 to Str.Count-1 do begin if IsZhongwen(Str[i]) then begin MessageDlg('此票业务有中文字符或TAB键,不能上传!'+#13#10+Str[i],mtWarning,[mbYes],0); exit; end; end; SaveDialog1.FileName:=frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+GetDatetime(datetimetostr(now),1); if SaveDialog1.Execute then begin str.SaveToFile(SaveDialog1.FileName+'.txt'); showmessage('文件生成成功!'); end else begin showmessage('文件生成失败!'); exit; end; end; procedure Tfrm_op_seae_edi_swi.FormShow(Sender: TObject); var inifile1:Tinifile; tmpstr:string; begin inifile1:=Tinifile.Create(ExtractFilePath(application.ExeName)+'main.ini'); edit1.text:=inifile1.ReadString('EDI','SEND_CODE',''); edit2.text:=inifile1.ReadString('EDI','SEND_NAME',''); edit3.text:=inifile1.ReadString('EDI','RECEIVE_CODE',''); edit4.text:=inifile1.ReadString('EDI','RECEIVE_NAME',''); edit5.text:=inifile1.ReadString('EDI','SEND_TEL',''); edit6.text:=inifile1.ReadString('EDI','SEND_MAIL',''); edit7.text:=inifile1.ReadString('EDI','SEND_ATTN',''); edit8.text:=inifile1.ReadString('EDI','FTPADD',''); edit9.text:=inifile1.ReadString('EDI','FTPNAME',''); edit10.text:=inifile1.ReadString('EDI','FTPPASS',''); edit11.text:=inifile1.ReadString('EDI','FTPPATH','/'); edit12.text:=inifile1.ReadString('EDI','ADDR',''); edit15.text:=inifile1.ReadString('EDI','FTPADDCMA',''); edit16.text:=inifile1.ReadString('EDI','FTPNAMECMA',''); Edit17.text:=inifile1.ReadString('EDI','FTPPASSCMA',''); Edit18.text:=inifile1.ReadString('EDI','FTPPATHCMA',''); tmpstr:=inifile1.ReadString('EDI','SEND_FTPPASSIVE_CMA','1'); if (tmpstr='1') then CheckBox1.checked else CheckBox1.checked:=False; tmpstr:=inifile1.ReadString('EDI','SEND_FTPSFTP_CMA','1'); if (tmpstr='1') then CheckBox2.checked:=true else CheckBox2.checked:=False; RadioGroup1.ItemIndex:=inifile1.ReadInteger('EDI','CMASEND_TYPE',0); // RadioGroup2.ItemIndex:=inifile1.ReadInteger('EDI','CMASEND_CA',0); // IF RadioGroup2.ItemIndex=8 THEN // bsSkinCheckRadioBox1.Checked:=True; inifile1.free; end; procedure Tfrm_op_seae_edi_swi.bsSkinButton3Click(Sender: TObject); begin if frm_op_seae_edi_swi.Width=650 then frm_op_seae_edi_swi.Width:=305 else frm_op_seae_edi_swi.Width:=650; end; procedure Tfrm_op_seae_edi_swi.bsSkinButton4Click(Sender: TObject); var IdFTP1:TIdFTP; str,dsstr:widestring; str_file:widestring; ftpar,ftpname,ftppass,ftppath,ScriptPath,strmsg:String; StrL:Tstringlist; i,Count,get_Count,bill_count,i_soi:integer; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE:string; edi,PostUrl:WideString; IdHttp : TIdHTTP; errmsg : string;//请求地址 ResponseStream : TStringStream; //返回信息 ResponseStr: string; RequestStr : string; //请求信息 RequestStream : TStringStream; jo: ISuperObject; k:Integer; sl:TStrings; MultiPartFormDataStream :TIdMultiPartFormDataStream; IdHTTP1:TIdHTTP; begin i_soi:=0; if bsck.Checked then begin if frm_op_seae_assistant=nil then begin ShowMessage('请在(委托和提单)界面发送分单Edi'); exit; end end; ScriptPath:=ExtractFilePath(ParamStr(0))+'EDIFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); ftpar:=Trim(Edit8.Text); if ftpar='' then begin MessageDlg('请设置FTP地址!',mtWarning,[mbOk],0); exit; end; ftpname:=Trim(Edit9.Text);; if ftpar='' then begin MessageDlg('请设置FTP用户名!',mtWarning,[mbOk],0); exit; end; ftppass:=Trim(Edit10.Text);; if ftpar='' then begin MessageDlg('请设置FTP密码!',mtWarning,[mbOk],0); exit; end; ftppath:=Trim(Edit11.Text);; str:=ScriptPath +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+FormatDateTime('ss',now)+FormatDateTime('zzz',now)+'.txt'; str_file:=frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+FormatDateTime('ss',now)+FormatDateTime('zzz',now)+'.txt'; StrL:=Tstringlist.Create; StrL.Clear; count:=0; bill_count:=0; if frm_op_seae.dxdbgrid1.SelectedCount>1 then begin for i:=0 to frm_op_seae.dxdbgrid1.SelectedCount-1 do begin frm_op_seae.t_op_seae.GotoBookmark(pointer(frm_op_seae.dxdbgrid1.selectedrows[i])); if not isEditrue then exit; if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_swi.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_swi.get_txtBooking(StrL); if get_Count=-1 then exit else count:=count+get_Count; bill_count:=bill_count+1; end; StrL.Add('UNT+'+INTTOSTR(StrL.count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); StrL.Add('UNZ+'+inttostr(bill_count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end else begin if not isEditrue then exit; if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_swi.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_swi.get_txtBooking(StrL); if get_Count=-1 then exit else count:=count+get_Count; StrL.Add('UNT+'+INTTOSTR(StrL.count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); StrL.Add('UNZ+1+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end; for i:=0 to StrL.Count-1 do begin if IsZhongwen(StrL[i]) then begin MessageDlg('此票业务有中文字符或TAB键或<>字符,不能上传!'+#13#10+Str[i],mtWarning,[mbYes],0); exit; end; end; StrL.SaveToFile(str); edi:=StrL.Text; IF (CheckBox2.Checked) THEN begin ResponseStream := TStringStream.Create(''); MultiPartFormDataStream := TIdMultiPartFormDataStream.Create; IdHTTP1:=TIdHTTP.Create(Application); try IdHttp1.Request.Accept := '*/*'; IdHttp1.Request.AcceptLanguage:='zh-CN'; IdHttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType; MultiPartFormDataStream.AddFile('filename',str,GetMIMETypeFromFile(str)); MultiPartFormDataStream.Position := 0; try if (RadioGroup1.ItemIndex=1) then IdHTTP1.Post(StringReplace(get_parameters_value(2125,''),'SftpFilesJF','SftpSiFilesSWIJF',[rfReplaceAll]), MultiPartFormDataStream,ResponseStream) else IdHTTP1.Post(StringReplace(get_parameters_value(2125,''),'SftpFilesJF','SftpFilesSWIJF',[rfReplaceAll]), MultiPartFormDataStream,ResponseStream); except on e : Exception do begin end; end; ResponseStr := ResponseStream.DataString; //获取网页返回的信息 ResponseStr := UTF8Decode(ResponseStr); //网页中的存在中文时,需要进行UTF8解码 jo:=so(ResponseStr); strmsg:=jo.O['Message'].AsString; if (jo.O['Success'].AsString='true') then begin Application.MessageBox(pchar('上传成功,'+strmsg),'提示:',mrOk); InsertSysLog('上传报文成功',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); if RadioGroup1.ItemIndex=0 then SIO:='SO' else SIO:='SI'; if RadioGroup3.ItemIndex=0 then ORG:='ORG' else ORG:='AMEND'; CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); end else begin deletefile(str); InsertSysLog('上传报文出错',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); showmessage('文件上传出现错误!'+strmsg); i_soi:=1; end; finally MultiPartFormDataStream.Free; FreeAndNil(IdHTTP1); FreeAndNil(ResponseStream); end; end else begin try IdFTP1:=TIdFTP.Create(application); with idftp1 do begin Username:=ftpname; Password:=ftppass; Host:=ftpar; Passive:=CheckBox1.Checked; Connect; end; idftp1.ChangeDir(ftppath); idftp1.TransferType:=ftBinary; idftp1.Put(str,str_file); idftp1.Disconnect; showmessage('文件上传成功!'); if RadioGroup1.ItemIndex=0 then SIO:='SO' else SIO:='SI'; if RadioGroup3.ItemIndex=0 then ORG:='ORG' else ORG:='AMEND'; IF bsck.Checked then begin MBL:='分单'; MBLNO:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring; if (MBLNO='') THEN MBLNO:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('业务编号').asstring; end else begin MBL:='主单'; MBLNO:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring; if (MBLNO='') THEN MBLNO:=frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring; end; CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); except on e : exception do begin MessageDlg('文件上传错误!'+e.message,mtError,[mbOk],0); deletefile(str); i_soi:=1; // showmessage('文件上传错误!'); end; end; idftp1.Free; end; if i_soi=0 then UpdateSOIStatus(RadioGroup1.ItemIndex,frm_op_seae.t_op_seae.fieldbyname('编号').asstring); close; end; procedure Tfrm_op_seae_edi_swi.FormClose(Sender: TObject; var Action: TCloseAction); VAR inifile1:TIniFile; begin inifile1:=Tinifile.Create(ExtractFilePath(application.ExeName)+'main.ini'); inifile1.WriteString('EDI','SEND_CODE',edit1.text); inifile1.WriteString('EDI','SEND_NAME',edit2.text); inifile1.WriteString('EDI','RECEIVE_CODE',edit3.text); inifile1.WriteString('EDI','RECEIVE_NAME',edit4.text); inifile1.WriteString('EDI','SEND_TEL',edit5.text); inifile1.WriteString('EDI','SEND_MAIL',edit6.text); inifile1.WriteString('EDI','SEND_ATTN',edit7.text); inifile1.WriteString('EDI','FTPADD',edit8.text); inifile1.WriteString('EDI','FTPNAME',edit9.text); inifile1.WriteString('EDI','FTPPASS',Edit10.text); inifile1.WriteString('EDI','FTPPATH',Edit11.text); inifile1.WriteString('EDI','ADDR',edit12.text); inifile1.WriteInteger('EDI','CMASEND_TYPE',RadioGroup1.ItemIndex); inifile1.WriteString('EDI','FTPADDCMA',edit15.text); inifile1.WriteString('EDI','FTPNAMECMA',edit16.text); inifile1.WriteString('EDI','FTPPASSCMA',Edit17.text); inifile1.WriteString('EDI','FTPPATHCMA',Edit18.text); if CheckBox1.checked then inifile1.WriteString('EDI','SEND_FTPPASSIVE_CMA','1'); if CheckBox2.checked then inifile1.WriteString('EDI','SEND_FTPSFTP_CMA','1') ELSE inifile1.WriteString('EDI','SEND_FTPSFTP_CMA','0'); inifile1.free; action:=cafree; frm_op_seae_edi_swi:=nil; end; function Tfrm_op_seae_edi_swi.get_txtvgm_cargo(str:Tstringlist):integer; var str_all,sl:Tstringlist; i,count:integer; SM,Carrer:string; begin i:=0; Carrer:='SWI'; str_all:=Tstringlist.Create; count:=0; str.Add('UNB+UNOA:2+'+Edit1.TEXT+':ZZ+'+'CARGOSMART' +':01+'+GetDatetime(datetimetostr(now),2)+'+' +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); str.Add('UNH+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+VERMAS:D:16A:UN'+#39); count:=count+1; if RadioGroup3.ItemIndex=0 then str.Add('BGM+XXX+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+9'+#39) //9原始 5 更新 else str.Add('BGM+XXX+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+5'+#39); //9原始 5 更新 count:=count+1; count:=count+1; t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; t_op_ctn.open; t_op_ctn.first; while not t_op_ctn.eof do begin if (t_op_ctn.fieldbyname('称重方式').asstring<>'') or (t_op_ctn.fieldbyname('称重方式').asstring<>'无') then begin i:=i+1; str.Add('DTM+137:'+GetDatetime(datetimetostr(now),1)+':203'+#39); count:=count+1; str.Add('NAD+CA+'+GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)+#39); count:=count+1; str.Add('EQD+CN+'+t_op_ctn.fieldbyname('箱号').asstring+#39); //数量 count:=count+1; str.Add('RFF+BM:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; str.Add('RFF+BN:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; str.Add('MEA+AAE+VGM+KGM:'+t_op_ctn.fieldbyname('称重重量').asstring+#39); ////累加 无 count:=count+1; if Trim(t_op_ctn.fieldbyname('称重方式').asstring)='累加' then SM:='SM2' else if Trim(t_op_ctn.fieldbyname('称重方式').asstring)='总重' then SM:='SM1'; str.Add('DOC+'+SM+':VGM:306'+#39); ////累加 无 count:=count+1; str.Add('NAD+SPC+++'+Changestr(Edit2.Text)+#39); ////累加 无 count:=count+1; str.Add('UNT+9+'+IntToStr(i)+#39); count:=count+1; end; t_op_ctn.next; end; result:=count; end; { function Tfrm_op_seae_edi_cma.get_txtvgm_intrra(str:Tstringlist):integer; var str_all,sl:Tstringlist; i,count:integer; SM,Carrer:string; begin i:=0; case RadioGroup2.ItemIndex of 0:Carrer:='MAEU'; 1:Carrer:='SAFM'; 2:Carrer:='MCPU'; end; str_all:=Tstringlist.Create; count:=0; str.Add('UNB+UNOC:3+'+Edit1.TEXT+':ZZZ+'+'INTTRA' +':ZZZ+'+GetDatetime(datetimetostr(now),2)+'+' +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); str.Add('UNH+001+VERMAS:D:16A:UN:0.8'+#39); count:=count+1; if RadioGroup3.ItemIndex=0 then str.Add('BGM+XXX+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+9'+#39) //9原始 5 更新 else str.Add('BGM+XXX+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+5'+#39); //9原始 5 更新 count:=count+1; count:=count+1; t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; t_op_ctn.open; t_op_ctn.first; while not t_op_ctn.eof do begin if (t_op_ctn.fieldbyname('称重方式').asstring<>'') or (t_op_ctn.fieldbyname('称重方式').asstring<>'无') then begin i:=i+1; str.Add('DTM+137:'+GetDatetime(datetimetostr(now),1)+':203'+#39); count:=count+1; str.Add('EQD+CN+'+t_op_ctn.fieldbyname('箱号').asstring+':6346:5'+#39); //数量 count:=count+1; str.Add('RFF+BN:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; str.Add('RFF+AOW:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; str.Add('MEA+AAE+VGM+KGM:'+t_op_ctn.fieldbyname('称重重量').asstring+#39); ////累加 无 count:=count+1; if Trim(t_op_ctn.fieldbyname('称重方式').asstring)='累加' then SM:='SM2' else if Trim(t_op_ctn.fieldbyname('称重方式').asstring)='总重' then SM:='SM1'; str.Add('DOC+'+SM+':VGM:306'+#39); ////累加 无 count:=count+1; str.Add('NAD+SPC+++'+Changestr(Edit2.Text)+#39); ////累加 无 count:=count+1; str.Add('NAD+CA+'+GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)+'::86++'+frm_op_seae.t_op_seae.fieldbyname('船公司').asstring+#39); count:=count+1; str.Add('UNT+9+'+IntToStr(i)+#39); count:=count+1; end; t_op_ctn.next; end; result:=count; end; } procedure Tfrm_op_seae_edi_swi.bsSkinButton7Click(Sender: TObject); var str:Tstringlist; i,Count,get_Count,bill_count:integer; inifile1:Tinifile; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE:string; edi:WideString; begin str:=Tstringlist.Create; str.Clear; count:=0; bill_count:=0; if frm_op_seae.dxdbgrid1.SelectedCount>1 then begin for i:=0 to frm_op_seae.dxdbgrid1.SelectedCount-1 do begin frm_op_seae.t_op_seae.GotoBookmark(pointer(frm_op_seae.dxdbgrid1.selectedrows[i])); get_Count:=frm_op_seae_edi_swi.get_txtvgm_cma(str); if get_Count=-1 then exit else count:=count+get_Count; bill_count:=bill_count+1; end; str.Add('UNZ+'+inttostr(count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end else begin get_Count:=frm_op_seae_edi_swi.get_txtvgm_cma(str); if get_Count=-1 then exit else count:=count+get_Count; str.Add('UNZ+'+inttostr(count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end; for i:=0 to Str.Count-1 do begin if IsZhongwen(Str[i]) then begin MessageDlg('此票业务有中文字符或TAB键,不能上传!'+#13#10+Str[i],mtWarning,[mbYes],0); exit; end; end; SaveDialog1.FileName:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+GetDatetime(datetimetostr(now),1); if SaveDialog1.Execute then begin str.SaveToFile(SaveDialog1.FileName+'.txt'); showmessage('文件生成成功!'); end else begin showmessage('文件生成失败!'); exit; end; end; {procedure Tfrm_op_seae_edi_cma.bsSkinButton7Click(Sender: TObject); var str:Tstringlist; i,Count,get_Count,bill_count:integer; inifile1:Tinifile; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE:string; edi:WideString; begin str:=Tstringlist.Create; str.Clear; count:=0; bill_count:=0; if frm_op_seae.dxdbgrid1.SelectedCount>1 then begin for i:=0 to frm_op_seae.dxdbgrid1.SelectedCount-1 do begin frm_op_seae.t_op_seae.GotoBookmark(pointer(frm_op_seae.dxdbgrid1.selectedrows[i])); get_Count:=frm_op_seae_edi_cma.get_txtvgm_intrra(str); if get_Count=-1 then exit else count:=count+get_Count; bill_count:=bill_count+1; end; str.Add('UNT+'+INTTOSTR(str.count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); str.Add('UNZ+'+inttostr(bill_count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end else begin get_Count:=frm_op_seae_edi_cma.get_txtvgm_intrra(str); if get_Count=-1 then exit else count:=count+get_Count; str.Add('UNT+'+INTTOSTR(str.count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); str.Add('UNZ+1+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end; for i:=0 to Str.Count-1 do begin if IsZhongwen(Str[i]) then begin MessageDlg('此票业务有中文字符或TAB键,不能上传!'+#13#10+Str[i],mtWarning,[mbYes],0); exit; end; end; SaveDialog1.FileName:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+GetDatetime(datetimetostr(now),1); if SaveDialog1.Execute then begin str.SaveToFile(SaveDialog1.FileName+'.txt'); showmessage('文件生成成功!'); end else begin showmessage('文件生成失败!'); exit; end; end; } procedure Tfrm_op_seae_edi_swi.bsSkinButton5Click(Sender: TObject); var IdFTP1:TIdFTP; str:widestring; str_file:widestring; ftpar,ftpname,ftppass,ftppath,ftppathSI,ScriptPath,strmsg:String; StrL:Tstringlist; i,Count,get_Count,bill_count,i_soi:integer; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE:string; edi:WideString; IdHttp : TIdHTTP; errmsg : string;//请求地址 ResponseStream : TStringStream; //返回信息 ResponseStr: string; RequestStr : string; //请求信息 RequestStream : TStringStream; jo: ISuperObject; k:Integer; sl:TStrings; MultiPartFormDataStream :TIdMultiPartFormDataStream; IdHTTP1:TIdHTTP; begin i_soi:=0; if bsck.Checked then begin if frm_op_seae_assistant=nil then begin ShowMessage('请在(委托和提单)界面发送分单Edi'); exit; end end; ScriptPath:=ExtractFilePath(ParamStr(0))+'EDIFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); ftpar:=Trim(Edit15.Text); str:=ScriptPath +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.txt'; str_file:=frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.txt'; StrL:=Tstringlist.Create; StrL.Clear; count:=0; bill_count:=0; if frm_op_seae.dxdbgrid1.SelectedCount>1 then begin for i:=0 to frm_op_seae.dxdbgrid1.SelectedCount-1 do begin frm_op_seae.t_op_seae.GotoBookmark(pointer(frm_op_seae.dxdbgrid1.selectedrows[i])); if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_swi.get_txtvgm_cma(StrL) else get_Count:=frm_op_seae_edi_swi.get_txtvgm_cma(StrL); if get_Count=-1 then exit else count:=count+get_Count; bill_count:=bill_count+1; end; StrL.Add('UNZ+'+inttostr(count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end else begin if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_swi.get_txtvgm_cma(StrL) else get_Count:=frm_op_seae_edi_swi.get_txtvgm_cma(StrL); if get_Count=-1 then exit else count:=count+get_Count; StrL.Add('UNZ+'+inttostr(count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); { str.Add('UNT+'+INTTOSTR(count)+'+1'+#39); str.Add('UNZ+1+100'+#39); } end; for i:=0 to StrL.Count-1 do begin if IsZhongwen(StrL[i]) then begin MessageDlg('此票业务有中文字符或TAB键或<>字符,不能上传!'+#13#10+Str[i],mtWarning,[mbYes],0); exit; end; end; StrL.SaveToFile(str); edi:=StrL.Text; IF (CheckBox2.Checked) THEN begin ResponseStream := TStringStream.Create(''); MultiPartFormDataStream := TIdMultiPartFormDataStream.Create; IdHTTP1:=TIdHTTP.Create(Application); try IdHttp1.Request.Accept := '*/*'; IdHttp1.Request.AcceptLanguage:='zh-CN'; IdHttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType; MultiPartFormDataStream.AddFile('filename',str,GetMIMETypeFromFile(str)); MultiPartFormDataStream.Position := 0; try if (RadioGroup1.ItemIndex=1) then IdHTTP1.Post(StringReplace(get_parameters_value(2125,''),'SftpFilesJF','SftpVgmFilesSWIJF',[rfReplaceAll]), MultiPartFormDataStream,ResponseStream) else IdHTTP1.Post(StringReplace(get_parameters_value(2125,''),'SftpFilesJF','SftpFilesSWIJF',[rfReplaceAll]), MultiPartFormDataStream,ResponseStream); except on e : Exception do begin end; end; ResponseStr := ResponseStream.DataString; //获取网页返回的信息 ResponseStr := UTF8Decode(ResponseStr); //网页中的存在中文时,需要进行UTF8解码 jo:=so(ResponseStr); strmsg:=jo.O['Message'].AsString; if (jo.O['Success'].AsString='true') then begin Application.MessageBox(pchar('上传成功,'+strmsg),'提示:',mrOk); InsertSysLog('上传报文成功',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); SIO:='VGM' { CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); } end else begin deletefile(str); InsertSysLog('上传报文出错',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); showmessage('文件上传出现错误!'+strmsg); i_soi:=1; end; finally MultiPartFormDataStream.Free; FreeAndNil(IdHTTP1); FreeAndNil(ResponseStream); end; end else begin edi:=StrL.Text; try IdFTP1:=TIdFTP.Create(application); with idftp1 do begin Username:=ftpname; Password:=ftppass; Host:=ftpar; Passive:=CheckBox1.Checked; Connect; end; case RadioGroup1.ItemIndex of 0:begin idftp1.ChangeDir(ftppath); end; 1:begin if (Trim(ftppathSI)<>'') then idftp1.ChangeDir(ftppathSI) else idftp1.ChangeDir(ftppath); end; end; // idftp1.ChangeDir(ftppath); idftp1.TransferType:=ftBinary; idftp1.Put(str,str_file); idftp1.Disconnect; showmessage('文件上传成功!'); { if RadioGroup1.ItemIndex=0 then SIO:='SO' else SIO:='SI'; } SIO:='VGM'; if RadioGroup3.ItemIndex=0 then ORG:='ORG' else ORG:='AMEND'; IF bsck.Checked then begin MBL:='分单'; MBLNO:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring; if (MBLNO='') THEN MBLNO:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('业务编号').asstring; end else begin MBL:='主单'; MBLNO:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring; if (MBLNO='') THEN MBLNO:=frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring; end; CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); except on e : exception do begin MessageDlg('文件上传错误!'+e.message,mtError,[mbOk],0); deletefile(str); i_soi:=1; // showmessage('文件上传错误!'); end; end; idftp1.Free; END; end; {procedure Tfrm_op_seae_edi_cma.bsSkinButton5Click(Sender: TObject); var IdFTP1:TIdFTP; str:widestring; str_file:widestring; ftpar,ftpname,ftppass,ftppath,ScriptPath:String; StrL:Tstringlist; i,Count,get_Count,bill_count,i_soi:integer; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE:string; edi:WideString; begin i_soi:=0; ScriptPath:=ExtractFilePath(ParamStr(0))+'EDIFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); ftpar:=Trim(Edit8.Text); if ftpar='' then begin MessageDlg('请设置FTP地址!',mtWarning,[mbOk],0); exit; end; ftpname:=Trim(Edit9.Text);; if ftpar='' then begin MessageDlg('请设置FTP用户名!',mtWarning,[mbOk],0); exit; end; ftppass:=Trim(Edit10.Text);; if ftpar='' then begin MessageDlg('请设置FTP密码!',mtWarning,[mbOk],0); exit; end; ftppath:=Trim(Edit11.Text);; str:=ScriptPath +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.txt'; str_file:=frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.txt'; StrL:=Tstringlist.Create; StrL.Clear; count:=0; bill_count:=0; if frm_op_seae.dxdbgrid1.SelectedCount>1 then begin for i:=0 to frm_op_seae.dxdbgrid1.SelectedCount-1 do begin get_Count:=frm_op_seae_edi_cma.get_txtvgm_intrra(StrL); count:=count+get_Count; bill_count:=bill_count+1; end; StrL.Add('UNT+'+INTTOSTR(StrL.count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); StrL.Add('UNZ+'+inttostr(bill_count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end else begin get_Count:=frm_op_seae_edi_cma.get_txtvgm_intrra(StrL); count:=count+get_Count; StrL.Add('UNT+'+INTTOSTR(StrL.count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); StrL.Add('UNZ+1+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end; StrL.SaveToFile(str); edi:=StrL.Text; try IdFTP1:=TIdFTP.Create(application); with idftp1 do begin Username:=ftpname; Password:=ftppass; Host:=ftpar; Connect; end; idftp1.ChangeDir(ftppath); idftp1.TransferType:=ftBinary; idftp1.Put(str,str_file); idftp1.Disconnect; showmessage('文件上传成功!'); // if RadioGroup1.ItemIndex=0 then SIO:='SO' else SIO:='SI'; if RadioGroup3.ItemIndex=0 then ORG:='ORG' else ORG:='AMEND'; IF bsck.Checked then begin MBL:='分单'; MBLNO:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring; end else begin MBL:='主单'; MBLNO:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring; end; CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); except on e : exception do begin MessageDlg('文件上传错误!'+e.message,mtError,[mbOk],0); deletefile(str); i_soi:=1; // showmessage('文件上传错误!'); end; end; idftp1.Free; end;} function Tfrm_op_seae_edi_swi.CreateSIEdiFile_MBL: string; var str,str2,codetype,codestr,strsql,typestr:string; aAdoQuery:TAdoQuery; isfirst:Boolean; TempStr:TStringlist; 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; if Result='' then result:=cust; finally FreeAndNil(aQuery); end; end; function getempemail(emp:string):string; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; result:=''; try aQuery.Close; aQuery.SQL.Text:='select 邮箱 from t_sys_employee where 姓名='''+emp+''''; aQuery.Open; if not aQuery.IsEmpty then result:=aQuery.fieldbyname('邮箱').AsString; finally FreeAndNil(aQuery); end; end; begin str:=str+'{'; str:=str+'"COMPANY_NAME":"'+frm_data_share.t_sys_company.fieldbyname('全称').AsString+'"'; str:=str+',"BOOKINGS":['; str:=str+'{'; aAdoQuery:=CreateAdoQuery; TempStr:=TStringList.Create; try if not bsck.checked then begin str:=str+'"BSNO":"'+ frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'"'; str:=str+',"CUST_NO":"'+ frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'"'; str:=str+',"MBLNO":"'+ frm_op_seae.t_op_seae.FieldByName('主提单号').asstring+'"'; str:=str+',"HBLNO":"'+ frm_op_seae.t_op_seae.FieldByName('分提单号').asstring+'"'; str:=str+',"CONTRACTNO":"'+ frm_op_seae.t_op_seae.FieldByName('运费协议号').asstring+'"'; str:=str+',"SHIPPER":"'+ StringReplace(frm_op_seae.t_op_seae.FieldByName('发货人代码').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"CONSIGNEE":"'+ StringReplace(frm_op_seae.t_op_seae.FieldByName('收货人代码').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"NOTIFYPARTY":"'+ StringReplace(frm_op_seae.t_op_seae.FieldByName('通知人代码').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"NOTIFYPARTY2":"'+ StringReplace(frm_op_seae.t_op_seae.FieldByName('第二通知人').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"YARD":"'+getcustedi(frm_op_seae.t_op_seae.FieldByName('场站').asstring)+'"'; str:=str+',"VESSEL":"'+ frm_op_seae.t_op_seae.FieldByName('船名').asstring+'"'; str:=str+',"VOYNO":"'+ frm_op_seae.t_op_seae.FieldByName('航次').asstring+'"'; str:=str+',"VoynoInner":"'+ frm_op_seae.t_op_seae.FieldByName('内部航次号').asstring+'"'; str:=str+',"ETD":"'+ frm_op_seae.t_op_seae.FieldByName('开船日期').asstring+'"'; str:=str+',"CLOSINGDATE":"'+ frm_op_seae.t_op_seae.FieldByName('截港日期').asstring+'"'; str:=str+',"CLOSEDOCDATE":"'+ frm_op_seae.t_op_seae.FieldByName('截单日期').asstring+'"'; str:=str+',"ETA":"'+ frm_op_seae.t_op_seae.FieldByName('预抵日期').asstring+'"'; str:=str+',"PLACERECEIPTID":""'; str:=str+',"PLACERECEIPT":""'; str:=str+',"PORTLOADID":"CNTAO"'; str:=str+',"PORTLOAD":"QINGDAO,CHINA"'; str:=str+',"PORTDISCHARGEID":"'+ frm_op_seae.t_op_seae.FieldByName('卸货代码').asstring+'"'; str:=str+',"PORTDISCHARGE":"'+ frm_op_seae.t_op_seae.FieldByName('卸货港').asstring+'"'; str:=str+',"PLACEDELIVERYID":"'+ frm_op_seae.t_op_seae.FieldByName('交货代码').asstring+'"'; str:=str+',"PLACEDELIVERY":"'+ frm_op_seae.t_op_seae.FieldByName('交货地点').asstring+'"'; str:=str+',"DESTINATIONID":"'+ frm_op_seae.t_op_seae.FieldByName('目的地代码').asstring+'"'; str:=str+',"DESTINATION":"'+ frm_op_seae.t_op_seae.FieldByName('目的地').asstring+'"'; str:=str+',"NOBILL":"'+ frm_op_seae.t_op_seae.FieldByName('提单份数').asstring+'"'; str:=str+',"COPYNOBILLL":"'+ frm_op_seae.t_op_seae.FieldByName('副本提单份数').asstring+'"'; str:=str+',"ISSUETYPE":"'+ frm_op_seae.t_op_seae.FieldByName('签单方式').asstring+'"'; str:=str+',"ISSUEDATE":"'+ frm_op_seae.t_op_seae.FieldByName('签单日期').asstring+'"'; str:=str+',"ISSUEPLACEID":"'+GetPortEdiID(trim(frm_op_seae.t_op_seae.fieldbyname('签单地点').asstring))+'"'; str:=str+',"ISSUEPLACE":"'+ frm_op_seae.t_op_seae.FieldByName('签单地点').asstring+'"'; str:=str+',"BLFRT":"'+ frm_op_seae.t_op_seae.FieldByName('付费方式').asstring+'"'; str:=str+',"PREPARDAT":"'+ frm_op_seae.t_op_seae.FieldByName('预付地点').asstring+'"'; str:=str+',"PAYABLEAT":"'+ frm_op_seae.t_op_seae.FieldByName('到付地点').asstring+'"'; str:=str+',"SERVICE":"'+ frm_op_seae.t_op_seae.FieldByName('运输条款').asstring+'"'; str:=str+',"MARKS":"'+StringReplace(frm_op_seae.t_op_seae.FieldByName('唛头').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"HSCODE":"'+ frm_op_seae.t_op_seae.FieldByName('运输方式').asstring+'"'; str:=str+',"DESCRIPTION":"'+ StringReplace(frm_op_seae.t_op_seae.FieldByName('货物描述').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"PKGS":'+ frm_op_seae.t_op_seae.FieldByName('件数').asstring; str:=str+',"KINDPKGS":"'+ frm_op_seae.t_op_seae.FieldByName('包装').asstring+'"'; str:=str+',"KGS":'+ frm_op_seae.t_op_seae.FieldByName('重量').asstring; str:=str+',"CBM":'+ frm_op_seae.t_op_seae.FieldByName('尺码').asstring; str:=str+',"CARRIER":"'+frm_op_seae.t_op_seae.FieldByName('船公司').asstring+'"'; str:=str+',"CARGOID":"'+ frm_op_seae.t_op_seae.FieldByName('货物标识').asstring+'"'; str:=str+',"DCLASS":"'+ frm_op_seae.t_op_seae.FieldByName('危险品分类').asstring+'"'; str:=str+',"DUNNO":"'+ frm_op_seae.t_op_seae.FieldByName('危险品编号').asstring+'"'; str:=str+',"DPAGE":""'; str:=str+',"DLABEL":""'; str:=str+',"LINKMAN":""'; if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') then str:=str+',"TEMPID":"C"' else str:=str+',"TEMPID":""'; str:=str+',"TEMPSET":"'+ frm_op_seae.t_op_seae.FieldByName('设置温度').asstring+'"'; str:=str+',"REEFERF":"'+ frm_op_seae.t_op_seae.FieldByName('冷藏通风量').asstring+'"'; str:=str+',"HUMIDITY":"'+ frm_op_seae.t_op_seae.FieldByName('湿度').asstring+'"'; if frm_op_seae.t_op_seae.fieldbyname('是否自有箱').asboolean then str:=str+',"ISCONTAINERSOC":true' else str:=str+',"ISCONTAINERSOC":false'; strsql:='select * from t_op_ams where 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; aAdoQuery.Close; aAdoQuery.SQL.Text:=strsql; aAdoQuery.Open; str:=str+',"REMARK":"'+aAdoQuery.FieldByName('SI备注').asstring+'"'; str:=str+',"EDIREMARK":"'+ frm_op_seae.t_op_seae.FieldByName('EDI备注').asstring+'"'; str:=str+',"YardRemark":"'+ frm_op_seae.t_op_seae.FieldByName('备注').asstring+'"'; str:=str+',"PONO":"'+ frm_op_seae.t_op_seae.FieldByName('委托编号').asstring+'"'; str:=str+',"TOTALNO":"'+ frm_op_seae.t_op_seae.FieldByName('件数大写').asstring+'"'; str:=str+',"TEMPMIN":"'+ frm_op_seae.t_op_seae.FieldByName('最低温度').asstring+'"'; str:=str+',"TEMPMAX":"'+ frm_op_seae.t_op_seae.FieldByName('最高温度').asstring+'"'; str:=str+',"OP":"'+ frm_op_seae.t_op_seae.FieldByName('客服员').asstring+'"'; str:=str+',"DOC":""'; str:=str+',"SALE":""'; str:=str+',"CUSTSERVICE":""'; str:=str+',"VGM_TIME":""'; str:=str+',"CUSTOMERNAME":"'+ frm_op_seae.t_op_seae.FieldByName('委托单位').asstring+'"'; str:=str+',"EMAIL":"'+getempemail(frm_op_seae.t_op_seae.FieldByName('操作员').asstring)+'"'; str:=str+',"FORWARDER":"'+ frm_op_seae.t_op_seae.FieldByName('货代公司').asstring+'"'; str:=str+',"SHIPAGENCY":""'; str:=str+',"CUSTOMSER":""'; str:=str+',"TRUCKER":""'; str:=str+',"AGENTID":""'; str:=str+',"CARRIERID":"'+ getcustedi(frm_op_seae.t_op_seae.FieldByName('船公司').asstring)+'"'; str:=str+',"YARDID":"'+ getcustedi(frm_op_seae.t_op_seae.FieldByName('场站').asstring)+'"'; str:=str+',"YardContract":"'+ frm_op_seae.t_op_seae.FieldByName('场站联系人').asstring+'"'; str:=str+',"CUSTOMERID":""'; str:=str+',"FORWARDERID":""'; str:=str+',"SHIPAGENCYID":"'+frm_op_seae.t_op_seae.FieldByName('船代').asstring+'"'; str:=str+',"CUSTOMSERID":""'; str:=str+',"TRUCKERID":""'; str:=str+',"AGENTNAME":""'; str:=str+',"WEITUO":""'; str:=str+',"EDIATTN":""'; str:=str+',"EDIATTNTEL":""'; str:=str+',"EDIATTNEMAIL":""'; str:=str+',"CONSIGNEEDOORADDR":""'; str:=str+',"SHIPPERDOORADDR":""'; str:=str+',"SCACCODE":""'; str:=str+',"ITNCODE":""'; str:=str+',"PREPARDAT_ID":"'+GetPortEdiID(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)+'"'; str:=str+',"PAYABLEAT_ID":"'+trim(frm_op_seae.t_op_seae.fieldbyname('到付地点代码').asstring)+'"'; if (frm_op_seae.t_op_seae.FieldByName('场站').asstring='港捷丰场站(FF)') or (frm_op_seae.t_op_seae.FieldByName('场站').asstring='捷丰场站') then begin if (frm_op_seae.t_op_seae.FieldByName('防伪').AsBoolean) then str:=str+',"FEE_SELF":true' else str:=str+',"FEE_SELF":false'; end else begin str:=str+',"FEE_SELF":true'; end; strsql:='select * from t_op_ctn where 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; aAdoQuery.Close; aAdoQuery.SQL.Text:=strsql; aAdoQuery.Open; aAdoQuery.First; str:=str+',"CtrnList":['; isfirst:=true; while not aAdoQuery.Eof do begin if (isfirst) then str:=str+'{' else str:=str+',{'; str:=str+'"CTNALL":"'+StringReplace(aAdoQuery.FieldByName('表现形式').asstring,'''','',[])+'"'; str:=str+',"CTNNUM":'+aAdoQuery.FieldByName('数量').asstring; str:=str+',"CNTRNO":"'+aAdoQuery.FieldByName('箱号').asstring+'"'; str:=str+',"SEALNO":"'+aAdoQuery.FieldByName('封号').asstring+'"'; str:=str+',"PKGS":"'+aAdoQuery.FieldByName('件数').asstring+'"'; str:=str+',"KINDPKGS":"'+aAdoQuery.FieldByName('包装').asstring+'"'; str:=str+',"KGS":"'+aAdoQuery.FieldByName('重量').asstring+'"'; str:=str+',"CBM":"'+aAdoQuery.FieldByName('尺码').asstring+'"'; str:=str+',"TAREWEIGHT":'+aAdoQuery.FieldByName('箱皮重').asstring; str:=str+',"WEIGHTYPE":"累加"'; str:=str+',"WEIGHKGS":'+aAdoQuery.FieldByName('称重重量').asstring; str:=str+',"REMARK":""'; str:=str+'}'; isfirst:=false; aAdoQuery.Next; end; str:=str+']'; end else begin str:=str+'"BSNO":"'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring+'"'; str:=str+',"CUST_NO":"'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring+'"'; str:=str+',"MBLNO":"'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring+'"'; str:=str+',"HBLNO":"'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('分提单号').asstring+'"'; str:=str+',"CONTRACTNO":"'+ frm_op_seae.t_op_seae.FieldByName('运费协议号').asstring+'"'; str:=str+',"SHIPPER":"'+ StringReplace(frm_op_seae_assistant.t_op_seae_assistant.FieldByName('发货人代码').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"CONSIGNEE":"'+ StringReplace(frm_op_seae_assistant.t_op_seae_assistant.FieldByName('收货人代码').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"NOTIFYPARTY":"'+ StringReplace(frm_op_seae_assistant.t_op_seae_assistant.FieldByName('通知人代码').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"NOTIFYPARTY2":"'+ StringReplace(frm_op_seae_assistant.t_op_seae_assistant.FieldByName('第二通知人').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"YARD":"'+getcustedi(frm_op_seae.t_op_seae.FieldByName('场站').asstring)+'"'; str:=str+',"VESSEL":"'+ frm_op_seae.t_op_seae.FieldByName('船名').asstring+'"'; str:=str+',"VOYNO":"'+ frm_op_seae.t_op_seae.FieldByName('航次').asstring+'"'; str:=str+',"VoynoInner":"'+ frm_op_seae.t_op_seae.FieldByName('内部航次号').asstring+'"'; str:=str+',"ETD":"'+ frm_op_seae.t_op_seae.FieldByName('开船日期').asstring+'"'; str:=str+',"CLOSINGDATE":"'+ frm_op_seae.t_op_seae.FieldByName('截港日期').asstring+'"'; str:=str+',"CLOSEDOCDATE":"'+ frm_op_seae.t_op_seae.FieldByName('截单日期').asstring+'"'; str:=str+',"ETA":"'+ frm_op_seae.t_op_seae.FieldByName('预抵日期').asstring+'"'; str:=str+',"PLACERECEIPTID":""'; str:=str+',"PLACERECEIPT":""'; str:=str+',"PORTLOADID":"CNTAO"'; str:=str+',"PORTLOAD":"QINGDAO,CHINA"'; str:=str+',"PORTDISCHARGEID":"'+ frm_op_seae.t_op_seae.FieldByName('卸货代码').asstring+'"'; str:=str+',"PORTDISCHARGE":"'+ frm_op_seae.t_op_seae.FieldByName('卸货港').asstring+'"'; str:=str+',"PLACEDELIVERYID":"'+ frm_op_seae.t_op_seae.FieldByName('交货代码').asstring+'"'; str:=str+',"PLACEDELIVERY":"'+ frm_op_seae.t_op_seae.FieldByName('交货地点').asstring+'"'; str:=str+',"DESTINATIONID":"'+ frm_op_seae.t_op_seae.FieldByName('目的地代码').asstring+'"'; str:=str+',"DESTINATION":"'+ frm_op_seae.t_op_seae.FieldByName('目的地').asstring+'"'; str:=str+',"NOBILL":"'+ frm_op_seae.t_op_seae.FieldByName('提单份数').asstring+'"'; str:=str+',"COPYNOBILLL":"'+ frm_op_seae.t_op_seae.FieldByName('副本提单份数').asstring+'"'; str:=str+',"ISSUETYPE":"'+ frm_op_seae.t_op_seae.FieldByName('签单方式').asstring+'"'; str:=str+',"ISSUEDATE":"'+ frm_op_seae.t_op_seae.FieldByName('签单日期').asstring+'"'; if (frm_op_seae.t_op_seae.fieldbyname('签单地点').asstring<>'') then begin str:=str+',"ISSUEPLACEID":"'+GetPortEdiID(trim(frm_op_seae.t_op_seae.fieldbyname('签单地点').asstring))+'"'; str:=str+',"ISSUEPLACE":"'+ frm_op_seae.t_op_seae.FieldByName('签单地点').asstring+'"'; end else begin str:=str+',"ISSUEPLACEID":"CNTAO"'; str:=str+',"ISSUEPLACE":"QINGDAO,CHINA"'; end; str:=str+',"BLFRT":"'+ frm_op_seae.t_op_seae.FieldByName('付费方式').asstring+'"'; str:=str+',"PREPARDAT":"'+ frm_op_seae.t_op_seae.FieldByName('预付地点').asstring+'"'; str:=str+',"PAYABLEAT":"'+ frm_op_seae.t_op_seae.FieldByName('到付地点').asstring+'"'; str:=str+',"SERVICE":"'+ frm_op_seae.t_op_seae.FieldByName('运输条款').asstring+'"'; str:=str+',"MARKS":"'+StringReplace(frm_op_seae_assistant.t_op_seae_assistant.FieldByName('唛头').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"HSCODE":"'+ frm_op_seae_assistant.t_op_seae_assistant.FieldByName('HS编码').asstring+'"'; str:=str+',"DESCRIPTION":"'+ StringReplace(frm_op_seae_assistant.t_op_seae_assistant.FieldByName('货物描述').asstring,'"','\"',[rfReplaceAll])+'"'; str:=str+',"PKGS":'+ frm_op_seae_assistant.t_op_seae_assistant.FieldByName('件数').asstring; str:=str+',"KINDPKGS":"'+frm_op_seae_assistant.t_op_seae_assistant.FieldByName('包装').asstring+'"'; str:=str+',"KGS":'+ frm_op_seae_assistant.t_op_seae_assistant.FieldByName('重量').asstring; str:=str+',"CBM":'+ frm_op_seae_assistant.t_op_seae_assistant.FieldByName('尺码').asstring; str:=str+',"CARRIER":"'+frm_op_seae.t_op_seae.FieldByName('船公司').asstring+'"'; str:=str+',"CARGOID":"'+ frm_op_seae.t_op_seae.FieldByName('货物标识').asstring+'"'; str:=str+',"DCLASS":"'+ frm_op_seae.t_op_seae.FieldByName('危险品分类').asstring+'"'; str:=str+',"DUNNO":"'+ frm_op_seae.t_op_seae.FieldByName('危险品编号').asstring+'"'; str:=str+',"DPAGE":""'; str:=str+',"DLABEL":""'; str:=str+',"LINKMAN":""'; if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') then str:=str+',"TEMPID":"C"' else str:=str+',"TEMPID":""'; str:=str+',"TEMPSET":"'+ frm_op_seae.t_op_seae.FieldByName('设置温度').asstring+'"'; str:=str+',"REEFERF":"'+ frm_op_seae.t_op_seae.FieldByName('冷藏通风量').asstring+'"'; str:=str+',"HUMIDITY":"'+ frm_op_seae.t_op_seae.FieldByName('湿度').asstring+'"'; if frm_op_seae.t_op_seae.fieldbyname('是否自有箱').asboolean then str:=str+',"ISCONTAINERSOC":true' else str:=str+',"ISCONTAINERSOC":false'; str:=str+',"REMARK":""'; str:=str+',"EDIREMARK":"'+frm_op_seae_assistant.t_op_seae_assistant.FieldByName('EDI备注').asstring+'"'; str:=str+',"PONO":"'+ frm_op_seae.t_op_seae.FieldByName('委托编号').asstring+'"'; str:=str+',"TOTALNO":"'+ frm_op_seae.t_op_seae.FieldByName('件数大写').asstring+'"'; str:=str+',"TEMPMIN":"'+ frm_op_seae.t_op_seae.FieldByName('最低温度').asstring+'"'; str:=str+',"TEMPMAX":"'+ frm_op_seae.t_op_seae.FieldByName('最高温度').asstring+'"'; str:=str+',"OP":"'+ frm_op_seae.t_op_seae.FieldByName('客服员').asstring+'"'; str:=str+',"DOC":""'; str:=str+',"SALE":""'; str:=str+',"CUSTSERVICE":""'; str:=str+',"VGM_TIME":""'; str:=str+',"CUSTOMERNAME":"'+ frm_op_seae.t_op_seae.FieldByName('委托单位').asstring+'"'; str:=str+',"EMAIL":"'+getempemail(frm_op_seae.t_op_seae.FieldByName('操作员').asstring)+'"'; str:=str+',"FORWARDER":"'+ frm_op_seae.t_op_seae.FieldByName('货代公司').asstring+'"'; str:=str+',"SHIPAGENCY":""'; str:=str+',"CUSTOMSER":""'; str:=str+',"TRUCKER":""'; str:=str+',"AGENTID":""'; str:=str+',"CARRIERID":"'+ getcustedi(frm_op_seae.t_op_seae.FieldByName('船公司').asstring)+'"'; str:=str+',"YARDID":"'+ getcustedi(frm_op_seae.t_op_seae.FieldByName('场站').asstring)+'"'; str:=str+',"CUSTOMERID":""'; str:=str+',"FORWARDERID":""'; str:=str+',"SHIPAGENCYID":"'+frm_op_seae.t_op_seae.FieldByName('船代').asstring+'"'; str:=str+',"CUSTOMSERID":""'; str:=str+',"TRUCKERID":""'; str:=str+',"AGENTNAME":""'; str:=str+',"WEITUO":""'; str:=str+',"EDIATTN":""'; str:=str+',"EDIATTNTEL":""'; str:=str+',"EDIATTNEMAIL":""'; str:=str+',"CONSIGNEEDOORADDR":""'; str:=str+',"SHIPPERDOORADDR":""'; str:=str+',"SCACCODE":""'; str:=str+',"ITNCODE":""'; str:=str+',"PREPARDAT_ID":"'+GetPortEdiID(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)+'"'; str:=str+',"PAYABLEAT_ID":"'+trim(frm_op_seae.t_op_seae.fieldbyname('到付地点代码').asstring)+'"'; if (frm_op_seae.t_op_seae.FieldByName('场站').asstring='港捷丰场站(FF)') or (frm_op_seae.t_op_seae.FieldByName('场站').asstring='捷丰场站') then begin if (frm_op_seae.t_op_seae.FieldByName('防伪').AsBoolean) then str:=str+',"FEE_SELF":true' else str:=str+',"FEE_SELF":false'; end else begin str:=str+',"FEE_SELF":true'; end; strsql:='select * from t_op_ctn_fendan where 编号=' +#39+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('as_id').asstring+#39; aAdoQuery.Close; aAdoQuery.SQL.Text:=strsql; aAdoQuery.Open; aAdoQuery.First; str:=str+',"CtrnList":['; isfirst:=true; while not aAdoQuery.Eof do begin if (isfirst) then str:=str+'{' else str:=str+',{'; str:=str+'"CTNALL":"'+StringReplace(aAdoQuery.FieldByName('表现形式').asstring,'''','',[])+'"'; str:=str+',"CTNNUM":'+aAdoQuery.FieldByName('数量').asstring; str:=str+',"CNTRNO":"'+aAdoQuery.FieldByName('箱号').asstring+'"'; str:=str+',"SEALNO":"'+aAdoQuery.FieldByName('封号').asstring+'"'; str:=str+',"PKGS":"'+aAdoQuery.FieldByName('件数').asstring+'"'; str:=str+',"KINDPKGS":"'+aAdoQuery.FieldByName('包装').asstring+'"'; str:=str+',"KGS":"'+aAdoQuery.FieldByName('重量').asstring+'"'; str:=str+',"CBM":"'+aAdoQuery.FieldByName('尺码').asstring+'"'; str:=str+',"TAREWEIGHT":0'; str:=str+',"WEIGHTYPE":"累加"'; str:=str+',"WEIGHKGS":0'; str:=str+',"REMARK":""'; str:=str+'}'; isfirst:=false; aAdoQuery.Next; end; str:=str+']'; end; if (frm_data_share.t_crm_client_all.Locate('客户简称',frm_op_seae.t_op_seae.FieldByName('委托单位').asstring,[])) then begin str:=str+',"CUSTOMER_INFO":{'; str:=str+'"CODENAME":"'+frm_data_share.t_crm_client_all.fieldbyname('代码').AsString+'"'; str:=str+',"SHORTNAME":"'+frm_data_share.t_crm_client_all.fieldbyname('客户简称').AsString+'"'; str:=str+',"DESCRIPTION":"'+frm_data_share.t_crm_client_all.fieldbyname('客户全称').AsString+'"'; str:=str+',"CONTRACT_LIST":['; if (frm_op_seae.t_op_seae.FieldByName('客户邮件方案').AsString<>'') then begin aAdoQuery.Close; aAdoQuery.SQL.Clear; aAdoQuery.SQL.Add('select * from t_code_cust_mailproject_detail where 方案代码='''+frm_op_seae.t_op_seae.FieldByName('客户邮件方案').AsString+''' and (单据类型=''入货通知'' or 单据类型=''提单及下货纸'' or 单据类型=''费用确认'' )'); aAdoQuery.Open; aAdoQuery.First; isfirst:=true; typestr:='BC'; while not aAdoQuery.Eof do begin if (isfirst) then str:=str+'{' else str:=str+',{'; str:=str+'"EMAIL":"'+aAdoQuery.FieldByName('收件人').asstring+'"'; if (aAdoQuery.FieldByName('单据类型').asstring='入货通知') then typestr:='BC'; if (aAdoQuery.FieldByName('单据类型').asstring='提单及下货纸') then typestr:='TD'; if (aAdoQuery.FieldByName('单据类型').asstring='费用确认') then typestr:='ZD'; str:=str+',"TYPE":"'+typestr+'"'; str:=str+'}'; isfirst:=false; aAdoQuery.Next; end; end; str:=str+']'; str:=str+'}'; end; str:=str+'}'; str:=str+']'; str:=str+'}'; finally FreeAndNil(aAdoQuery); FreeAndNil(TempStr); end; Result:=str; end; procedure Tfrm_op_seae_edi_swi.bsSkinButton6Click(Sender: TObject); var IdFTP1:TIdFTP; str,dsstr:widestring; str_file:widestring; ftpar,ftpname,ftppass,ftppath,ScriptPath:String; StrL:Tstringlist; i,Count,get_Count,bill_count,i_soi,z:integer; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,strmsg:string; edi,PostUrl:WideString; IdHttp : TIdHTTP; errmsg : string;//请求地址 ResponseStream : TStringStream; //返回信息 ResponseStr: string; RequestStr : string; //请求信息 RequestStream : TStringStream; jo: ISuperObject; k:Integer; sl:TStrings; MultiPartFormDataStream :TIdMultiPartFormDataStream; IdHTTP1:TIdHTTP; begin i_soi:=0; if bsck.Checked then begin if frm_op_seae_assistant=nil then begin ShowMessage('请在(委托和提单)界面发送分单Edi'); exit; end end; ScriptPath:=ExtractFilePath(ParamStr(0))+'EDIFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); ftpar:=Trim(Edit8.Text); if ftpar='' then begin MessageDlg('请设置FTP地址!',mtWarning,[mbOk],0); exit; end; ftpname:=Trim(Edit9.Text);; if ftpar='' then begin MessageDlg('请设置FTP用户名!',mtWarning,[mbOk],0); exit; end; ftppass:=Trim(Edit10.Text);; if ftpar='' then begin MessageDlg('请设置FTP密码!',mtWarning,[mbOk],0); exit; end; ftppath:=Trim(Edit11.Text);; StrL:=Tstringlist.Create; if frm_op_seae.dxdbgrid1.SelectedCount>1 then begin for i:=0 to frm_op_seae.dxdbgrid1.SelectedCount-1 do begin frm_op_seae.t_op_seae.GotoBookmark(pointer(frm_op_seae.dxdbgrid1.selectedrows[i])); StrL.Clear; count:=0; bill_count:=0; str:=ScriptPath +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+FormatDateTime('ss',now)+FormatDateTime('zzz',now)+'.txt'; str_file:=frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+FormatDateTime('ss',now)+FormatDateTime('zzz',now)+'.txt'; if not isEditrue then exit; if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_swi.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_swi.get_txtBooking(StrL); if get_Count=-1 then exit else count:=count+get_Count; StrL.Add('UNT+'+INTTOSTR(StrL.count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); StrL.Add('UNZ+1+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); for z:=0 to StrL.Count-1 do begin if IsZhongwen(StrL[z]) then begin MessageDlg('此票业务有中文字符或TAB键或<>字符,不能上传!'+#13#10+Str[z],mtWarning,[mbYes],0); exit; end; end; StrL.SaveToFile(str); edi:=StrL.Text; IF (CheckBox2.Checked) THEN begin ResponseStream := TStringStream.Create(''); MultiPartFormDataStream := TIdMultiPartFormDataStream.Create; IdHTTP1:=TIdHTTP.Create(Application); try IdHttp1.Request.Accept := '*/*'; IdHttp1.Request.AcceptLanguage:='zh-CN'; IdHttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType; MultiPartFormDataStream.AddFile('filename',str,GetMIMETypeFromFile(str)); MultiPartFormDataStream.Position := 0; try IdHTTP1.Post(StringReplace(get_parameters_value(2125,''),'SftpFilesJF','SftpFilesSWIJF',[rfReplaceAll]), MultiPartFormDataStream,ResponseStream); except on e : Exception do begin end; end; ResponseStr := ResponseStream.DataString; //获取网页返回的信息 ResponseStr := UTF8Decode(ResponseStr); //网页中的存在中文时,需要进行UTF8解码 jo:=so(ResponseStr); strmsg:=jo.O['Message'].AsString; if (jo.O['Success'].AsString='true') then begin // Application.MessageBox(pchar('上传成功,'+strmsg),'提示:',mrOk); InsertSysLog('上传报文成功',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); if RadioGroup1.ItemIndex=0 then SIO:='SO' else SIO:='SI'; if RadioGroup3.ItemIndex=0 then ORG:='ORG' else ORG:='AMEND'; CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); end else begin deletefile(str); InsertSysLog('上传报文出错',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); showmessage('文件上传出现错误!'+strmsg); i_soi:=1; end; finally MultiPartFormDataStream.Free; FreeAndNil(IdHTTP1); FreeAndNil(ResponseStream); end; end else begin try IdFTP1:=TIdFTP.Create(application); with idftp1 do begin Username:=ftpname; Password:=ftppass; Host:=ftpar; Connect; end; idftp1.ChangeDir(ftppath); idftp1.TransferType:=ftBinary; idftp1.Put(str,str_file); idftp1.Disconnect; idftp1.Free; if RadioGroup1.ItemIndex=0 then SIO:='SO' else SIO:='SI'; if RadioGroup3.ItemIndex=0 then ORG:='ORG' else ORG:='AMEND'; IF bsck.Checked then begin MBL:='分单'; MBLNO:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring; if (MBLNO='') THEN MBLNO:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('业务编号').asstring; end else begin MBL:='主单'; MBLNO:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring; if (MBLNO='') THEN MBLNO:=frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring; end; CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); except on e : exception do begin MessageDlg('文件上传错误!'+e.message,mtError,[mbOk],0); deletefile(str); i_soi:=1; // showmessage('文件上传错误!'); end; end; end; if i_soi=0 then UpdateSOIStatus(RadioGroup1.ItemIndex,frm_op_seae.t_op_seae.fieldbyname('编号').asstring); end; end else begin StrL.Clear; count:=0; bill_count:=0; str:=ScriptPath +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+FormatDateTime('ss',now)+FormatDateTime('zzz',now)+'.txt'; str_file:=frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+FormatDateTime('ss',now)+FormatDateTime('zzz',now)+'.txt'; if not isEditrue then exit; if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_swi.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_swi.get_txtBooking(StrL); if get_Count=-1 then exit else count:=count+get_Count; StrL.Add('UNT+'+INTTOSTR(StrL.count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); StrL.Add('UNZ+1+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); for i:=0 to StrL.Count-1 do begin if IsZhongwen(StrL[i]) then begin MessageDlg('此票业务有中文字符或TAB键或<>字符,不能上传!'+#13#10+Str[i],mtWarning,[mbYes],0); exit; end; end; StrL.SaveToFile(str); edi:=StrL.Text; IF (CheckBox2.Checked) THEN begin ResponseStream := TStringStream.Create(''); MultiPartFormDataStream := TIdMultiPartFormDataStream.Create; IdHTTP1:=TIdHTTP.Create(Application); try IdHttp1.Request.Accept := '*/*'; IdHttp1.Request.AcceptLanguage:='zh-CN'; IdHttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType; MultiPartFormDataStream.AddFile('filename',str,GetMIMETypeFromFile(str)); MultiPartFormDataStream.Position := 0; try if (RadioGroup1.ItemIndex=1) then IdHTTP1.Post(StringReplace(get_parameters_value(2125,''),'SftpFilesJF','SftpSiFilesSWIJF',[rfReplaceAll]), MultiPartFormDataStream,ResponseStream) else IdHTTP1.Post(StringReplace(get_parameters_value(2125,''),'SftpFilesJF','SftpFilesSWIJF',[rfReplaceAll]), MultiPartFormDataStream,ResponseStream); except on e : Exception do begin end; end; ResponseStr := ResponseStream.DataString; //获取网页返回的信息 ResponseStr := UTF8Decode(ResponseStr); //网页中的存在中文时,需要进行UTF8解码 jo:=so(ResponseStr); strmsg:=jo.O['Message'].AsString; if (jo.O['Success'].AsString='true') then begin // Application.MessageBox(pchar('上传成功,'+strmsg),'提示:',mrOk); InsertSysLog('上传报文成功',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); if RadioGroup1.ItemIndex=0 then SIO:='SO' else SIO:='SI'; if RadioGroup3.ItemIndex=0 then ORG:='ORG' else ORG:='AMEND'; CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); end else begin deletefile(str); InsertSysLog('上传报文出错',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); showmessage('文件上传出现错误!'+strmsg); i_soi:=1; end; finally MultiPartFormDataStream.Free; FreeAndNil(IdHTTP1); FreeAndNil(ResponseStream); end; end else begin try IdFTP1:=TIdFTP.Create(application); with idftp1 do begin Username:=ftpname; Password:=ftppass; Host:=ftpar; Passive:=CheckBox1.Checked; Connect; end; idftp1.ChangeDir(ftppath); idftp1.TransferType:=ftBinary; idftp1.Put(str,str_file); idftp1.Disconnect; if RadioGroup1.ItemIndex=0 then SIO:='SO' else SIO:='SI'; if RadioGroup3.ItemIndex=0 then ORG:='ORG' else ORG:='AMEND'; IF bsck.Checked then begin MBL:='分单'; MBLNO:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring; if (MBLNO='') THEN MBLNO:=frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('业务编号').asstring; end else begin MBL:='主单'; MBLNO:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring; if (MBLNO='') THEN MBLNO:=frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring; end; CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); except on e : exception do begin MessageDlg('文件上传错误!'+e.message,mtError,[mbOk],0); deletefile(str); i_soi:=1; // showmessage('文件上传错误!'); end; end; idftp1.Free; end; if i_soi=0 then UpdateSOIStatus(RadioGroup1.ItemIndex,frm_op_seae.t_op_seae.fieldbyname('编号').asstring); end; showmessage('文件上传成功!'); close; end; function Tfrm_op_seae_edi_swi.GetPortEdiIDBYEDICODE(Port: String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select SWIEDI EDI代码 from t_code_disport where EDI代码='''+Port+''''); Open; if not IsEmpty then Result:=Trim(FieldByName('EDI代码').asstring) else Result:=Port; end; finally FreeAndNil(aQuery); end; end; end.