unit u_op_seae_edi_msk_new; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, BusinessSkinForm, bsSkinCtrls, StdCtrls,inifiles, DB, ADODB,IdFTP,IdFTPCommon, ExtCtrls, bsSkinBoxCtrls, FtpCli,IdMultipartFormData,IdHTTP,IdGlobalProtocols,superobject; type Tfrm_op_seae_edi_msk_new = 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; RadioGroup2: TRadioGroup; t_op_edi: TADOQuery; Label12: TLabel; Edit12: TEdit; RadioGroup3: TRadioGroup; Label13: TLabel; Edit13: TEdit; bsck: TbsSkinCheckRadioBox; t_op_edictn: TADOQuery; bsSkinComboBox1: TbsSkinComboBox; bsSkinButton5: TbsSkinButton; bsSkinButton6: TbsSkinButton; FtpClient1: TFtpClient; CheckBox1: TCheckBox; bsSkinButton7: TbsSkinButton; t_op_dgform: TADOQuery; t_op_dgform_ctn: TADOQuery; bsSkinCheckRadioBox1: TbsSkinCheckRadioBox; procedure bsSkinButton1Click(Sender: TObject); procedure FormShow(Sender: TObject); function get_txtBooking(str:Tstringlist):integer; function get_txtBookingYT(str:Tstringlist):integer; function get_txtBookingBaK(str:Tstringlist):integer; function get_txtSI(str:Tstringlist):integer; function get_txtvgm(str:Tstringlist):integer; function get_goods(str:widestring):widestring; procedure bsSkinButton3Click(Sender: TObject); function isEditrue:boolean; function GetCtnCode(ctnkind,ctnsize:String):String; function GetCtnTypeCode(ctnsize:String):String; function GetPkgCode(Pkg:String):String; function GetPkgDgCode(Pkg:String):String; function GetPort(PortID:String): String; function GetPortEdiID(Port:String): String; function GetShipEdiNO(Ship:String): String; function Changestr(str:widestring):string; function GetCtnNumPkg(CtnNum:String):String; 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 RadioGroup2Click(Sender: TObject); procedure bsSkinComboBox1Change(Sender: TObject); procedure bsSkinButton6Click(Sender: TObject); procedure bsSkinButton5Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure bsSkinButton7Click(Sender: TObject); private { Private declarations } public { Public declarations } function GetCtnGoods(bsno:String):String; function ControlLines(LinesCount,CorpTypeid,BsTypeid:Integer;SName:string):String; function CreateSIEdiFile_MBL:string; end; var frm_op_seae_edi_msk_new: Tfrm_op_seae_edi_msk_new; implementation uses u_op_seae, my_sys_function, u_main, u_data_share, u_op_seae_assistant; {$R *.dfm} function Tfrm_op_seae_edi_msk_new.ControlLines(LinesCount,CorpTypeid,BsTypeid:Integer;SName:string):String; begin Result:=''; if LinesCount>5 then begin if RadioGroup2.ItemIndex=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; end; end else 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; end; end; end; end; function Tfrm_op_seae_edi_msk_new.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_msk_new.isEditrue: boolean; var cntrs,s,Edis,cntrGoods,Goods,Lines,ishaveinp:String; sl:TStringList; i:integer; begin result:=true; 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; t_op_dgform.Close; t_op_dgform.Parameters.ParamByName('BSNO').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; t_op_dgform.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); // 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 trim(frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)='' then begin result:=false; MessageDlg('付费方式不能为空',mtWarning,[mbOk],0); // exit; end; if Trim(GetIsDggoods(frm_op_seae.t_op_seae.fieldbyname('货物描述').asstring))<>'' then begin // result:=false; if MessageDlg('此票货货描存在船公司禁接品名,是否继续发送报文?',mtWarning,[mbYes,mbNo],0)<>mrYes then begin result:=false; end else begin end; // 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; 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); // exit; 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 trim(frm_op_seae.t_op_seae.fieldbyname('总价').asstring)='' then begin result:=false; MessageDlg('第一层包装皮重不能为空',mtWarning,[mbOk],0); exit; 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); end; end; if sl.Count>5 then begin result:=false; MessageDlg('第二通知人不能大于5行!',mtWarning,[mbOk],0); 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 MessageDlg('EDI信息中发货人中有中文字符或TAB键!',mtWarning,[mbOk],0); result:=false; // Exit; end; if Length(sl[i])>35 then begin result:=false; MessageDlg('EDI信息中发货人中每行字符不能超过35个字符!',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); 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,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); 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,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])>35 then begin result:=false; MessageDlg('EDI信息中收货人中每行字符不能超过35个字符!',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); 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,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); 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); 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])>35 then begin result:=false; MessageDlg('EDI信息中通知人中每行字符不能超过35个字符!',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); 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; 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); 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; 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(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring)='' then begin result:=false; MessageDlg('装港代码不能为空',mtWarning,[mbOk],0); // exit; 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-300) then begin result:=false; MessageDlg('开船日期必须在今日的300天内!',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; { if trim(GetPortEdiID(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); //xit; 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 trim(frm_op_seae.t_op_seae.fieldbyname('货物标识').asstring)='' 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); end; if Trim(frm_op_seae.t_op_seae.fieldbyname('危险品编号').asstring)='' then begin result:=false; MessageDlg('危险品编号不能为空',mtWarning,[mbOk],0); end; if GetStrNum(Trim(frm_op_seae.t_op_seae.fieldbyname('危险品编号').asstring))<>4 then begin result:=false; MessageDlg('危险品编号必须是4位数字',mtWarning,[mbOk],0); 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.长,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_fendan.长,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 (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='O') then begin if (t_op_ctn.FieldByName('长').AsFloat=0) then begin result:=false; MessageDlg('超限箱集装箱长不能为空',mtWarning,[mbOk],0); end; if (t_op_ctn.FieldByName('宽').AsFloat=0) then begin result:=false; MessageDlg('超限箱集装箱宽不能为空',mtWarning,[mbOk],0); end; if (t_op_ctn.FieldByName('高').AsFloat=0) then begin result:=false; MessageDlg('超限箱集装箱高不能为空',mtWarning,[mbOk],0); end; 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); } t_op_dgform.First; while not t_op_dgform.Eof do begin if trim(t_op_dgform.fieldbyname('PKGS').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Package Quantity(DG Form) 不能为空',mtWarning,[mbOk],0); end; if trim(t_op_dgform.fieldbyname('PACKINGCODE').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Package Code(DG Form) 不能为空',mtWarning,[mbOk],0); end; if trim(t_op_dgform.fieldbyname('CONTACT').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Contact Name(DG Form) 不能为空',mtWarning,[mbOk],0); end; if trim(t_op_dgform.fieldbyname('CONTACTTEL').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Contact Phone(DG Form) 不能为空',mtWarning,[mbOk],0); end; if trim(t_op_dgform.fieldbyname('WEIGHT').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Gross Weight(DG Form) 不能为空',mtWarning,[mbOk],0); end; if trim(t_op_dgform.fieldbyname('NET_WEIGHT').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Net Weight(DG Form) 不能为空',mtWarning,[mbOk],0); end; if trim(t_op_dgform.fieldbyname('UNNO').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Unno(DG Form) 不能为空',mtWarning,[mbOk],0); end; { if trim(t_op_dgform.fieldbyname('TECHNICAL_NAME').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Technical Name 不能为空',mtWarning,[mbOk],0); end; } if trim(t_op_dgform.fieldbyname('PROPER_SHIPPING_NAME').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Proper Shipping Name(DG Form) 不能为空',mtWarning,[mbOk],0); end; if trim(t_op_dgform.fieldbyname('IMO_CLASS').asstring)='' then begin //运输协议号 result:=false; MessageDlg('IMO Class(DG Form) 不能为空',mtWarning,[mbOk],0); end; { if trim(t_op_dgform.fieldbyname('PACKING_GROUP').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Packing Group(DG Form) 不能为空',mtWarning,[mbOk],0); end; } if trim(t_op_dgform.fieldbyname('EMS').asstring)='' then begin //运输协议号 result:=false; MessageDlg('EMS(DG Form) 不能为空',mtWarning,[mbOk],0); end; if trim(t_op_dgform.fieldbyname('MARINE_POLLUTANT').asstring)='' then begin //运输协议号 result:=false; MessageDlg('Marine Pollutant(DG Form) 不能为空',mtWarning,[mbOk],0); end; if (ishaveinp<>'') then begin if (t_op_dgform.fieldbyname('INNERPKGS').AsInteger<>0) then begin if (ishaveinp='N') then begin result:=false; MessageDlg('危品内包装必须一致!',mtWarning,[mbOk],0); end; end else begin if (ishaveinp='Y') then begin result:=false; MessageDlg('危品内包装必须一致!',mtWarning,[mbOk],0); end; end; end; if (t_op_dgform.fieldbyname('INNERPKGS').AsInteger<>0) then begin ishaveinp:='Y'; end else begin ishaveinp:='N'; end; t_op_dgform.Next; end; 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_msk_new.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_msk_new.GetCtnCode(ctnkind,ctnsize:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; ctnsize:=StringReplace(ctnsize,'''','''''',[rfReplaceAll]); try with aQuery do begin Close;SQL.Clear; SQL.Add('Select EDI代码 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_msk_new.GetCtnTypeCode(ctnsize:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; ctnsize:=StringReplace(ctnsize,'''','''''',[rfReplaceAll]); try with aQuery do begin Close;SQL.Clear; SQL.Add('Select EDI代码 from t_code_ctn where 表现形式='''+ctnsize+''''); Open; if not IsEmpty then Result:=Trim(FieldByName('EDI代码').asstring) else Result:=''; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_msk_new.GetPkgCode(Pkg:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select EDI代码 from t_code_package where 代码='''+pkg+''''); Open; if not IsEmpty then Result:=Trim(FieldByName('EDI代码').asstring) else Result:=''; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_msk_new.GetPkgDgCode(Pkg:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select 包装名称 from t_code_package_dg where DG代码='''+pkg+''''); Open; if not IsEmpty then Result:=Trim(FieldByName('包装名称').asstring) else Result:=''; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_msk_new.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_msk_new.GetPortEdiID(Port:String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select 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_msk_new.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_msk_new.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:=Trim(strC); end; function Tfrm_op_seae_edi_msk_new.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_msk_new.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_msk_new.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_msk_new.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_msk_new.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_msk_new.get_txtBooking(str:Tstringlist):integer; var str_all,sl:Tstringlist; j,Count,i,ctncount,fj,ctni:integer; str_guodu,str_shr,str_con,str_not:widestring; str_pay,Str_head,strtmp,strtmp2,tmpunno,sendcode,tmp,tmppkgroup: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 IF (bsSkinCheckRadioBox1.Checked) THEN begin Result:=get_txtBookingYT(str); EXIT; end; str_all:=Tstringlist.Create; str.Add('UNA:+.? '+#39); count:=0; sendcode:='MAEU'; if (RadioGroup2.ItemIndex=2) then sendcode:='MCPU'; str.Add('UNB+UNOC:1+'+Edit1.TEXT+':ZZZ+'+sendcode +':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; if RadioGroup3.ItemIndex=0 then str.Add('BGM+335+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+9'+#39) //9原始 5 更新 else str.Add('BGM+335+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+5'+#39); //9原始 5 更新 count:=count+1; str.Add('CTA+IC+:'+edit7.text+''''); 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' 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 trim(frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString)<>'' then begin if trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)<>'' then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring); if trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring)<>'' then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring); 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)+#39); count:=count+1; 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 if (sl.Strings[i]<>'') then begin str.Add('FTX+AAI+++'+sl.Strings[i]+''+#39); count:=count+1; end; end; finally FreeAndNil(sl); end; end; str.Add('RFF+BN:'+frm_op_seae.t_op_seae.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+CT:'+frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring+#39); // count:=count+1; 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; if Trim(t_op_edi.fieldbyname('PRICEOWNER').AsString)<>'' then begin if Length(t_op_edi.fieldbyname('PRICEOWNER').AsString)<=35 then str.Add('NAD+PO+++'+t_op_edi.fieldbyname('PRICEOWNER').AsString+#39) else str.Add('NAD+PO+++'+Copy(t_op_edi.fieldbyname('PRICEOWNER').AsString,1,35)+'+'+Copy(t_op_edi.fieldbyname('PRICEOWNER').AsString,35,35)+#39); count:=count+1; end; str.Add('LOC+9+'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring))+#39); count:=count+1; str.Add('LOC+88+'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+Changestr(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; str.Add('LOC+11+'+trim(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring) +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring))+#39); count:=count+1; str.Add('LOC+7+'+trim(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring) //? +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring))+#39); count:=count+1; str_all.Clear; str_head:=''; 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; GetLengthTString(str_all,35); 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 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; GetLengthTString(str_all,35); 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 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; GetLengthTString(str_all,35); 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)='DOOR-DOOR' then begin 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.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.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 Length(Edit2.text)<=35 then str.Add('NAD+FW+'+Edit13.TEXT+':160:86++'+Edit2.text+#39) else str.Add('NAD+FW+'+Edit13.TEXT+':160:86++'+Copy(Edit2.text,1,35)+'+'+Copy(Edit2.text,35,35)+#39); count:=count+1; if Length(Edit2.text)<=35 then str.Add('NAD+BA+'+Edit13.TEXT+':160:86++'+Edit2.text+#39) else str.Add('NAD+BA+'+Edit13.TEXT+':160:86++'+Copy(Edit2.text,1,35)+'+'+Copy(Edit2.text,35,35)+#39); 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; if (not t_op_dgform.IsEmpty) then begin ctncount:=1; t_op_dgform.First; while not t_op_dgform.Eof do begin strtmp:=''; if (t_op_dgform.fieldbyname('INNERPACKINGCODE').asstring<>'') then begin strtmp:='+'+t_op_dgform.fieldbyname('INNERPKGS').asstring+':'+t_op_dgform.fieldbyname('INNERPACKINGCODE').asstring+':67:6:'; end; str.Add('GID+'+inttostr(ctncount)+'+'+t_op_dgform.fieldbyname('PKGS').asstring+':'+ Trim(StringReplace(t_op_dgform.fieldbyname('PACKINGCODE').asstring,'无','',[]))+':67:6:'+strtmp+#39); //? count:=count+1; if RadioGroup1.ItemIndex=0 then begin sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.fieldbyname('货物描述').asstring; if (sl.Count>5)then begin for i:=0 to 4 do begin if (Changestr(sl.Strings[i])<>'') then begin str.Add('FTX+AAA+++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; end; end else begin for i:=0 to sl.Count-1 do begin if (Changestr(sl.Strings[i])<>'') then begin str.Add('FTX+AAA+++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; end; end; finally FreeAndNil(sl); end; if Trim(str_shr)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_shr+#39); count:=count+2; end; if Trim(str_con)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_con+#39); count:=count+2; end; if Trim(str_not)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_not+#39); count:=count+2; end; { 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('PCD+52:'+frm_op_seae.t_op_seae.fieldbyname('湿度').asstring+#39); count:=count+1; end; end; } end; str.Add('MEA+AAE+G+KGM:'+t_op_dgform.fieldbyname('WEIGHT').asstring+#39); count:=count+1; str.Add('MEA+AAE+AAL+KGM:'+t_op_dgform.fieldbyname('NET_WEIGHT').asstring+#39); count:=count+1; if (t_op_dgform.fieldbyname('NET_EXPLOSIVE_WEIGHT').asstring<>'') then begin str.Add('MEA+AAE+T19+KGM:'+t_op_dgform.fieldbyname('NET_EXPLOSIVE_WEIGHT').asstring+#39); count:=count+1; end; { if (t_op_dgform.fieldbyname('CAT').asstring<>'') then begin str.Add('MEA+AAE+CAT+CEL:'+Changestr(t_op_dgform.fieldbyname('CAT').asstring)+#39); count:=count+1; end; } if (t_op_dgform.fieldbyname('SADT').asstring<>'') then begin str.Add('MEA+AAE+SAD+CEL:'+Changestr(t_op_dgform.fieldbyname('SADT').asstring)+#39); count:=count+1; end; if t_op_dgform_ctn.Active then t_op_dgform_ctn.Close; t_op_dgform_ctn.Parameters.ParamByName('BSNO').Value:= t_op_dgform.fieldbyname('编号').Value; t_op_dgform_ctn.Parameters.ParamByName('PACKINGCODE').Value:= t_op_dgform.fieldbyname('PACKINGCODE').Value; t_op_dgform_ctn.Parameters.ParamByName('UNNO').Value:= t_op_dgform.fieldbyname('UNNO').Value; t_op_dgform_ctn.Parameters.ParamByName('IMO_CLASS').Value:= t_op_dgform.fieldbyname('IMO_CLASS').Value; t_op_dgform_ctn.Parameters.ParamByName('PROPER_SHIPPING_NAME').Value:= t_op_dgform.fieldbyname('PROPER_SHIPPING_NAME').Value; t_op_dgform_ctn.Parameters.ParamByName('NET_EXPLOSIVE_WEIGHT').Value:= t_op_dgform.fieldbyname('NET_EXPLOSIVE_WEIGHT').Value; t_op_dgform_ctn.Parameters.ParamByName('SADT').Value:= t_op_dgform.fieldbyname('SADT').Value; t_op_dgform_ctn.Parameters.ParamByName('NA_NO').Value:= t_op_dgform.fieldbyname('NA_NO').Value; t_op_dgform_ctn.Parameters.ParamByName('SUB_HAZARD1').Value:= t_op_dgform.fieldbyname('SUB_HAZARD1').Value; t_op_dgform_ctn.Parameters.ParamByName('IMDG').Value:= t_op_dgform.fieldbyname('IMDG').Value; t_op_dgform_ctn.Parameters.ParamByName('FLASH_POINT').Value:= t_op_dgform.fieldbyname('FLASH_POINT').Value; t_op_dgform_ctn.Parameters.ParamByName('PACKING_GROUP').Value:= t_op_dgform.fieldbyname('PACKING_GROUP').Value; t_op_dgform_ctn.Parameters.ParamByName('EMS').Value:= t_op_dgform.fieldbyname('EMS').Value; t_op_dgform_ctn.Parameters.ParamByName('TECHNICAL_NAME').Value:= t_op_dgform.fieldbyname('TECHNICAL_NAME').Value; t_op_dgform_ctn.Parameters.ParamByName('MARINE_POLLUTANT').Value:= t_op_dgform.fieldbyname('MARINE_POLLUTANT').Value; t_op_dgform_ctn.Parameters.ParamByName('REPORTABLE_QUANTIFY').Value:= t_op_dgform.fieldbyname('REPORTABLE_QUANTIFY').Value; t_op_dgform_ctn.Parameters.ParamByName('EXCEPTED_QUANTIFY').Value:= t_op_dgform.fieldbyname('EXCEPTED_QUANTIFY').Value; t_op_dgform_ctn.Parameters.ParamByName('TRANSPORT_IN_LIMITED_QUANTIFY').Value:= t_op_dgform.fieldbyname('TRANSPORT_IN_LIMITED_QUANTIFY').Value; t_op_dgform_ctn.Parameters.ParamByName('CONTROL_TEMPERATURE').Value:= t_op_dgform.fieldbyname('CONTROL_TEMPERATURE').Value; t_op_dgform_ctn.Parameters.ParamByName('EMERGENCY_TEMPERATURE').Value:= t_op_dgform.fieldbyname('EMERGENCY_TEMPERATURE').Value; t_op_dgform_ctn.Parameters.ParamByName('SUFFIX').Value:= t_op_dgform.fieldbyname('SUFFIX').Value; t_op_dgform_ctn.Parameters.ParamByName('IMDG_COPE_SEGREGATION_GROUP').Value:= t_op_dgform.fieldbyname('IMDG_COPE_SEGREGATION_GROUP').Value; t_op_dgform_ctn.Parameters.ParamByName('INNERPACKINGCODE').Value:= t_op_dgform.fieldbyname('INNERPACKINGCODE').Value; t_op_dgform_ctn.Parameters.ParamByName('SUB_HAZARD2').Value:= t_op_dgform.fieldbyname('SUB_HAZARD2').Value; t_op_dgform_ctn.Open; t_op_dgform_ctn.First; while not t_op_dgform_ctn.Eof do begin if (t_op_dgform_ctn.fieldbyname('箱号').asstring<>'') then begin str.Add('SGP+'+t_op_dgform_ctn.fieldbyname('箱号').asstring+'+6'+#39); //? count:=count+1; end else begin str.Add('SGP+'+t_op_dgform_ctn.fieldbyname('箱序号').asstring+'+'+t_op_dgform_ctn.fieldbyname('PKGS').AsString+#39); //? count:=count+1; end; str.Add('MEA+AAE+G+KGM:'+t_op_dgform_ctn.fieldbyname('WEIGHT').asstring+#39); count:=count+1; str.Add('MEA+AAE+AAL+KGM:'+t_op_dgform_ctn.fieldbyname('NET_WEIGHT').asstring+#39); count:=count+1; t_op_dgform_ctn.Next; end; strtmp:=Changestr(t_op_dgform.FieldByName('FLASH_POINT').asstring); if (strtmp<>'') then begin if (copy(strtmp,1,1)='-') then begin strtmp:=copy(strtmp,2,Length(strtmp)-1); while Length(strtmp)<3 do begin strtmp:='0'+strtmp; end; strtmp:='-'+strtmp; end else begin while Length(strtmp)<3 do begin strtmp:='0'+strtmp; end; end; strtmp:=strtmp+':CEL'; end; tmpunno:=t_op_dgform.FieldByName('UNNO').asstring; if pos('-',tmpunno)>0 then begin tmpunno:=Copy(tmpunno,1,pos('-',tmpunno)-1); end; strtmp2:= Changestr(t_op_dgform.FieldByName('SUB_HAZARD1').asstring); if (t_op_dgform.FieldByName('SUB_HAZARD2').asstring<>'') then strtmp2:=strtmp2+'/'+ Changestr(t_op_dgform.FieldByName('SUB_HAZARD2').asstring); tmppkgroup:=''; tmp:=t_op_dgform.FieldByName('PACKING_GROUP').asstring; if (tmp='I') THEN tmppkgroup:='1'; if (tmp='II') THEN tmppkgroup:='2'; if (tmp='III') THEN tmppkgroup:='3'; if (tmppkgroup='') and (tmp<>'无') then tmppkgroup:=tmp; str.Add('DGS+IMD+'+t_op_dgform.FieldByName('IMO_CLASS').asstring+':'+strtmp2+':'+t_op_dgform.FieldByName('IMDG').asstring+'+' +tmpunno+'+'+strtmp+'+'+tmppkgroup +'+'+StringReplace(t_op_dgform.FieldByName('EMS').asstring,',','',[])+#39); //? count:=count+1; if (t_op_dgform.fieldbyname('NA_NO').asstring<>'') then begin str.Add('DGS+CFR+'+t_op_dgform.FieldByName('IMO_CLASS').asstring+':'+strtmp2+':'+t_op_dgform.FieldByName('IMDG').asstring+'+' +t_op_dgform.FieldByName('NA_NO').asstring+'+'+strtmp+'+'+tmppkgroup +'+'+StringReplace(t_op_dgform.FieldByName('EMS').asstring,',','',[])+#39); //? count:=count+1; end else begin end; str.Add('FTX+AAD++PSN:122:ZZZ+'+Changestr(t_op_dgform.fieldbyname('PROPER_SHIPPING_NAME').asstring)+#39); count:=count+1; if (t_op_dgform.fieldbyname('TECHNICAL_NAME').asstring<>'') then begin str.Add('FTX+AAD++TN:122:ZZZ+'+Changestr(t_op_dgform.fieldbyname('TECHNICAL_NAME').asstring)+#39); count:=count+1; end; if (t_op_dgform.fieldbyname('MARINE_POLLUTANT').asstring<>'') then begin sl:=TStringList.Create; try sl.text:=t_op_dgform.fieldbyname('MARINE_POLLUTANT').asstring; for i:=0 to sl.Count-1 do begin str.Add('FTX+AAC++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; finally FreeAndNil(sl); end; end; if (t_op_dgform.fieldbyname('REPORTABLE_QUANTIFY').asstring='Reportable') then begin str.Add('FTX+AAC++1'+#39); count:=count+1; end; if (t_op_dgform.fieldbyname('EXCEPTED_QUANTIFY').asstring='Excepted') then begin str.Add('FTX+AAC++EQ'+#39); count:=count+1; end; if (t_op_dgform.fieldbyname('TRANSPORT_IN_LIMITED_QUANTIFY').asstring='Limited') then begin str.Add('FTX+AAC++TLQ'+#39); count:=count+1; end; if (t_op_dgform.fieldbyname('CONTROL_TEMPERATURE').asstring<>'') then begin str.Add('FTX+AAC++CTMP+'+Changestr(t_op_dgform.fieldbyname('CONTROL_TEMPERATURE').asstring)+':CEL'+#39); count:=count+1; end; if (t_op_dgform.fieldbyname('SUFFIX').asstring<>'') then begin str.Add('FTX+AAC++UNNOSUFFIX+'+t_op_dgform.fieldbyname('SUFFIX').asstring+#39); count:=count+1; end; if (t_op_dgform.fieldbyname('IMDG_COPE_SEGREGATION_GROUP').asstring<>'') then begin str.Add('FTX+AAC++SEG+IMDG CODE SEGREGATION GROUP-:'+t_op_dgform.fieldbyname('IMDG_COPE_SEGREGATION_GROUP').asstring+#39); count:=count+1; end; { if (t_op_dgform.fieldbyname('FUMIGANT').asstring<>'') then begin str.Add('FTX+AAC++FUMIGANT:'+Changestr(t_op_dgform.fieldbyname('FUMIGANT').asstring)+#39); count:=count+1; end; } str.Add('CTA+HE+:'+Changestr(t_op_dgform.fieldbyname('CONTACT').asstring)+#39); count:=count+1; str.Add('COM+'+Changestr(t_op_dgform.fieldbyname('CONTACTTEL').asstring)+':TE'+#39); count:=count+1; ctncount:=ctncount+1; t_op_dgform.Next; end; end else 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; if RadioGroup1.ItemIndex=0 then begin sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.fieldbyname('货物描述').asstring; if (sl.Count>5)then begin for i:=0 to 4 do begin if (Changestr(sl.Strings[i])<>'') then begin str.Add('FTX+AAA+++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; end; end else begin for i:=0 to sl.Count-1 do begin if (Changestr(sl.Strings[i])<>'') then begin str.Add('FTX+AAA+++'+Changestr(sl.Strings[i])+''+#39); count:=count+1; end; end; end; finally FreeAndNil(sl); end; if Trim(str_shr)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_shr+#39); count:=count+2; end; if Trim(str_con)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_con+#39); count:=count+2; end; if Trim(str_not)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_not+#39); count:=count+2; end; { if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') or (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('PCD+52:'+frm_op_seae.t_op_seae.fieldbyname('湿度').asstring+#39); count:=count+1; end; end; } { str.Add('FTX+AAA+++'+ get_goods(frm_op_seae.t_op_seae.fieldbyname('货物描述').asstring)+#39); count:=count+1; } end; 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; { sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.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 (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='D') OR (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; end; 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; ctncount:=1; while not t_op_ctn.eof do begin for ctni:=1 to t_op_ctn.fieldbyname('数量').asinteger do begin if (t_op_ctn.fieldbyname('箱号').AsString='') then begin if frm_op_seae.t_op_seae.fieldbyname('是否自有箱').asboolean then str.Add('EQD+CN+'+inttostr(ctncount)+'+'+t_op_ctn.fieldbyname('EDI代码').asstring+'+1'+#39) else str.Add('EQD+CN+'+inttostr(ctncount)+'+'+t_op_ctn.fieldbyname('EDI代码').asstring+'+2'+#39); //箱型 多箱型 count:=count+1; end else begin if frm_op_seae.t_op_seae.fieldbyname('是否自有箱').asboolean then str.Add('EQD+CN+'+t_op_ctn.fieldbyname('箱号').AsString+'+'+t_op_ctn.fieldbyname('EDI代码').asstring+'+1'+#39) else str.Add('EQD+CN+'+t_op_ctn.fieldbyname('箱号').AsString+'+'+t_op_ctn.fieldbyname('EDI代码').asstring+'+2'+#39); //箱型 多箱型 count:=count+1; end; // str.Add('EQN+'+t_op_ctn.fieldbyname('数量').asstring+#39); //数量 // count:=count+1; ctncount:=ctncount+1; if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='O') then begin str.Add('DIM+2+CMT:'+t_op_ctn.fieldbyname('长').asstring+':'+t_op_ctn.fieldbyname('宽').asstring+':'+t_op_ctn.fieldbyname('高').asstring+#39); count:=count+1; end; if trim(frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring)<>'' then begin 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('MEA+AAE+AAS+CBM:'+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')) AND (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; if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') OR (trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='T') then begin strtmp:=frm_op_seae.t_op_seae.fieldbyname('设置温度').asstring; if (copy(strtmp,1,1)='-') then begin strtmp:=copy(strtmp,2,Length(strtmp)-1); while Length(strtmp)<3 do begin strtmp:='0'+strtmp; end; strtmp:='-'+strtmp; end else begin while Length(strtmp)<3 do begin strtmp:='0'+strtmp; end; end; str.Add('TMP+2+'+strtmp+':CEL'+#39); count:=count+1; end; end; t_op_ctn.next; end; // count:=count+1; result:=count; end; function Tfrm_op_seae_edi_msk_new.get_txtBookingYT(str:Tstringlist):integer; var str_all,sl:Tstringlist; j,Count,i:integer; str_guodu,str_shr,str_con,str_not: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+UNOA:1+'+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; if RadioGroup3.ItemIndex=0 then str.Add('BGM+335+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+9'+#39) //9原始 5 更新 else str.Add('BGM+335+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+5'+#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('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' 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; { sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString; } if trim(frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString)<>'' then begin if trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)<>'' then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring); if trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring)<>'' then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring); 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)+#39); count:=count+1; 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; end; { finally FreeAndNil(sl); end; } { str.Add('CNT+7:'+frm_op_seae.t_op_seae.fieldbyname('重量').asstring+':KGM'''); count:=count+1; str.Add('CNT+11:'+frm_op_seae.t_op_seae.fieldbyname('件数').asstring+''''); count:=count+1; str.Add('CNT+15:'+frm_op_seae.t_op_seae.fieldbyname('尺码').asstring+':MTQ'''); 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+'+GetPortEdiID(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+'+trim(frm_op_seae.t_op_seae.fieldbyname('签单地点代码').asstring) +'::6:'+GetPort(trim(frm_op_seae.t_op_seae.fieldbyname('签单地点代码').asstring))+#39); count:=count+1; } { if not (frm_op_seae.t_op_seae.fieldbyname('放单日期').asDatetime<(now-120)) then begin ljp str.Add('DTM+95:'+GetDatetime(datetimetostr(frm_op_seae.t_op_seae.fieldbyname('放单日期').asDatetime),0)+':102'+#39); count:=count+1; end; } str.Add('RFF+BN:'+frm_op_seae.t_op_seae.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+ON:###NAD-CZ-ZZZ-['+frm_op_seae.t_op_seae.fieldbyname('发货人编码').asstring+']'+#39); count:=count+1; } str.Add('RFF+CT:'+frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring+#39); // count:=count+1; 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; 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; if Trim(t_op_edi.fieldbyname('PRICEOWNER').AsString)<>'' then begin if Length(t_op_edi.fieldbyname('PRICEOWNER').AsString)<=35 then str.Add('NAD+PO+++'+t_op_edi.fieldbyname('PRICEOWNER').AsString+#39) else str.Add('NAD+PO+++'+Copy(t_op_edi.fieldbyname('PRICEOWNER').AsString,1,35)+'+'+Copy(t_op_edi.fieldbyname('PRICEOWNER').AsString,35,35)+#39); count:=count+1; end; str.Add('LOC+9+'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+Changestr(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; str.Add('LOC+88+'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring))+#39); count:=count+1; str.Add('LOC+11+'+trim(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring) +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring))+#39); count:=count+1; str.Add('LOC+7+'+trim(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring) //? +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring))+#39); count:=count+1; str_all.Clear; str_head:=''; 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; GetLengthTString(str_all,35); 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 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; GetLengthTString(str_all,35); 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 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; GetLengthTString(str_all,35); 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)='DOOR-DOOR' 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; str_head:=''; str_all.Clear; 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; 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; 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; 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 Length(Edit2.text)<=35 then str.Add('NAD+FW+'+Edit13.TEXT+':160:86++'+Edit2.text+#39) else str.Add('NAD+FW+'+Edit13.TEXT+':160:86++'+Copy(Edit2.text,1,35)+'+'+Copy(Edit2.text,35,35)+#39); count:=count+1; if Length(Edit2.text)<=35 then str.Add('NAD+BA+'+Edit13.TEXT+':160:86++'+Edit2.text+#39) else str.Add('NAD+BA+'+Edit13.TEXT+':160:86++'+Copy(Edit2.text,1,35)+'+'+Copy(Edit2.text,35,35)+#39); 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('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; if RadioGroup1.ItemIndex=0 then begin sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.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+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_shr+#39); count:=count+2; end; if Trim(str_con)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_con+#39); count:=count+2; end; if Trim(str_not)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_not+#39); count:=count+2; end; if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') or (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('PCD+52:'+frm_op_seae.t_op_seae.fieldbyname('湿度').asstring+#39); count:=count+1; end; end; { str.Add('FTX+AAA+++'+ get_goods(frm_op_seae.t_op_seae.fieldbyname('货物描述').asstring)+#39); count:=count+1; } end; 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; sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.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 (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='D') OR (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; 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 frm_op_seae.t_op_seae.fieldbyname('是否自有箱').asboolean then str.Add('EQD+CN++'+t_op_ctn.fieldbyname('EDI代码').asstring+'+1'+#39) else str.Add('EQD+CN++'+t_op_ctn.fieldbyname('EDI代码').asstring+'+2'+#39); //箱型 多箱型 count:=count+1; str.Add('EQN+'+t_op_ctn.fieldbyname('数量').asstring+#39); //数量 count:=count+1; if trim(frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring)<>'' then begin if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') OR (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='T') then begin str.Add('MEA+AAE+AAS+CBM:'+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 (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_msk_new.get_txtBookingBAK(str:Tstringlist):integer; var str_all,sl:Tstringlist; j,Count,i:integer; str_guodu,str_shr,str_con,str_not: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; str.Add('UNA:+.?'+#39); count:=0; str.Add('UNB+UNOC:1+'+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; if RadioGroup3.ItemIndex=0 then str.Add('BGM+335+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+9'+#39) //9原始 5 更新 else str.Add('BGM+335+'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+'+5'+#39); //9原始 5 更新 count:=count+1; str.Add('CTA+IC+:'+edit7.text+''''); 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' 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; { sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString; } if trim(frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString)<>'' then begin if trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)<>'' then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring); if trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring)<>'' then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring); 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)+#39); count:=count+1; 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; end; str.Add('RFF+BN:'+frm_op_seae.t_op_seae.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+CT:'+frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring+#39); // count:=count+1; 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; 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; if Trim(t_op_edi.fieldbyname('PRICEOWNER').AsString)<>'' then begin if Length(t_op_edi.fieldbyname('PRICEOWNER').AsString)<=35 then str.Add('NAD+PO+++'+t_op_edi.fieldbyname('PRICEOWNER').AsString+#39) else str.Add('NAD+PO+++'+Copy(t_op_edi.fieldbyname('PRICEOWNER').AsString,1,35)+'+'+Copy(t_op_edi.fieldbyname('PRICEOWNER').AsString,35,35)+#39); count:=count+1; end; str.Add('LOC+9+'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+Changestr(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; str.Add('LOC+88+'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring))+#39); count:=count+1; str.Add('LOC+11+'+trim(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring) +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring))+#39); count:=count+1; str.Add('LOC+7+'+trim(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring) //? +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring))+#39); count:=count+1; str_all.Clear; str_head:=''; 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; GetLengthTString(str_all,35); 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 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; GetLengthTString(str_all,35); 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 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; GetLengthTString(str_all,35); 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)='DOOR-DOOR' then begin 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.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.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 Length(Edit2.text)<=35 then str.Add('NAD+FW+'+Edit13.TEXT+':160:86++'+Edit2.text+#39) else str.Add('NAD+FW+'+Edit13.TEXT+':160:86++'+Copy(Edit2.text,1,35)+'+'+Copy(Edit2.text,35,35)+#39); count:=count+1; if Length(Edit2.text)<=35 then str.Add('NAD+BA+'+Edit13.TEXT+':160:86++'+Edit2.text+#39) else str.Add('NAD+BA+'+Edit13.TEXT+':160:86++'+Copy(Edit2.text,1,35)+'+'+Copy(Edit2.text,35,35)+#39); 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('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; if RadioGroup1.ItemIndex=0 then begin sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.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+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_shr+#39); count:=count+2; end; if Trim(str_con)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_con+#39); count:=count+2; end; if Trim(str_not)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_not+#39); count:=count+2; end; 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('PCD+52:'+frm_op_seae.t_op_seae.fieldbyname('湿度').asstring+#39); count:=count+1; end; end; end; 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; sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.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 (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; 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 frm_op_seae.t_op_seae.fieldbyname('是否自有箱').asboolean then str.Add('EQD+CN++'+t_op_ctn.fieldbyname('EDI代码').asstring+'+1'+#39) else str.Add('EQD+CN++'+t_op_ctn.fieldbyname('EDI代码').asstring+'+2'+#39); //箱型 多箱型 count:=count+1; str.Add('EQN+'+t_op_ctn.fieldbyname('数量').asstring+#39); //数量 count:=count+1; if trim(frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring)<>'' then begin 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('MEA+AAE+AAS+CBM:'+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_msk_new.get_txtvgm(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('UNA:+.? '+#39); 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; function Tfrm_op_seae_edi_msk_new.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,CopyBillCount:widestring; str_pay,Str_head,str1,str2,SignWay: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; if not bsck.checked then begin str.Add('UNB+UNOA:2+'+Edit1.TEXT+':ZZZ+'+Edit3.TEXT +':ZZZ+'+GetDatetime(datetimetostr(now),2)+'+' +frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end else begin str.Add('UNB+UNOA:2+'+Edit1.TEXT+':ZZZ+'+Edit3.TEXT +':ZZZ+'+GetDatetime(datetimetostr(now),2)+'+' +frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring+#39); end; count:=count+1; if not bsck.checked then begin str.Add('UNH+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+'+IFTMIN:D:99B:UN'+#39); end else begin str.Add('UNH+'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring+'+IFTMIN:D:99B:UN'+#39); end; 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); 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)+#39); count:=count+1; 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)+#39); count:=count+1; end; 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 if (sl.Strings[i]<>'') then begin str.Add('FTX+AAI+++'+sl.Strings[i]+''+#39); count:=count+1; end; 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 not bsck.checked then begin str.Add('CNT+7:'+frm_op_seae.t_op_seae.fieldbyname('重量').asstring+':KGM'''); count:=count+1; str.Add('CNT+11:'+frm_op_seae.t_op_seae.fieldbyname('件数').asstring+''''); count:=count+1; str.Add('CNT+15:'+frm_op_seae.t_op_seae.fieldbyname('尺码').asstring+':MTQ'''); count:=count+1; end else begin str.Add('CNT+7:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('重量').asstring+':KGM'''); count:=count+1; str.Add('CNT+11:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('件数').asstring+''''); count:=count+1; str.Add('CNT+15:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('尺码').asstring+':MTQ'''); count:=count+1; end; 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+'+GetPortEdiID(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 sl:=TStringList.Create; try sl.text:=Changestr(frm_op_seae.t_op_seae.fieldbyname('拆单并单编号').asString); if sl.Count>0 then begin for i:=0 to sl.Count-1 do begin str.Add('RFF+BN:'+sl.Strings[i]+#39); count:=count+1; end; end else 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); count:=count+1; end; finally FreeAndNil(sl); end; end else begin str.Add('RFF+BN:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; end; if not bsck.checked then begin str.Add('RFF+BM:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; end else begin if frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring<>'' then begin str.Add('RFF+BM:'+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring+#39); count:=count+1; end; end; str.Add('RFF+CT:'+frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring+#39); // count:=count+1; if (t_op_edi.FieldByName('所在国家').asstring='美国') then begin str.Add('REF+TN:'+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; 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; { if Trim(t_op_edi.fieldbyname('PRICEOWNER').AsString)<>'' then begin if Length(t_op_edi.fieldbyname('PRICEOWNER').AsString)<=35 then str.Add('NAD+PO+++'+t_op_edi.fieldbyname('PRICEOWNER').AsString+#39) else str.Add('NAD+PO+++'+Copy(t_op_edi.fieldbyname('PRICEOWNER').AsString,1,35)+'+'+Copy(t_op_edi.fieldbyname('PRICEOWNER').AsString,35,35)+#39); count:=count+1; end; } str.Add('LOC+9+'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring))+#39); count:=count+1; str.Add('LOC+88+'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring))+#39); count:=count+1; str.Add('LOC+11+'+trim(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring) +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring))+#39); count:=count+1; str.Add('LOC+7+'+trim(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring) //? +':139:6:'+Changestr(trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring))+#39); count:=count+1; 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,35); 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,35); 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,35); 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; str.Add('NAD+CA+'+GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)+':160:86++'+frm_op_seae.t_op_seae.fieldbyname('船公司').asstring+#39); count:=count+1; if Length(Edit2.text)<=35 then str.Add('NAD+BA+'+Edit13.TEXT+':160:86++'+Edit2.text+#39) else str.Add('NAD+BA+'+Edit13.TEXT+':160:86++'+Copy(Edit2.text,1,35)+'+'+Copy(Edit2.text,35,35)+#39); 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; 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 not bsck.checked then SignWay:=trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring) else SignWay:=trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('签单方式').asstring); IF (SignWay='正本') OR (SignWay='电子提单') 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+'+++'+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+'+++'+CopyBillCount+#39); count:=count+1; end; end else if (SignWay='海运单') or (SignWay='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+'+++'+Str1+#39); count:=count+1; end else if (SignWay='BILL COPY') or (SignWay='电放') 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+'+++'+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+'+++'+CopyBillCount+#39); count:=count+1; end; end else if SignWay='HOUSE BILL' then begin Str2:='714'; str.Add('DOC+'+Str2+':::'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; end else if SignWay='正副本' 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+'+++'+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+'+++'+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+'+++'+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 Trim(frm_op_seae.t_op_seae.fieldbyname('运输方式').asstring)<>'' then begin // 商品编码 str.Add('PIA+5+'+frm_op_seae.t_op_seae.fieldbyname('运输方式').asstring+':HS'+#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 Trim(t_op_edi.fieldbyname('货物NCM编号').asstring)<>'' then begin str.Add('RFF+ABT:'+t_op_edi.fieldbyname('货物NCM编号').asstring+#39); //? count:=count+1; 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; 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; 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 (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 trim(frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring)<>'' then begin if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') OR (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; end; if (t_op_ctn.fieldbyname('箱型').asstring='TK') then str.Add('SEL+'+t_op_ctn.fieldbyname('封号').asstring+'+CA'+#39) else str.Add('SEL+'+'CN'+t_op_ctn.fieldbyname('封号').asstring+'+CA'+#39); count:=count+1; if (frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R') OR (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_msk.get_txtSI(str: Tstringlist): integer; //提单确认 var str_all,sl:Tstringlist; j,Count,i:integer; str_guodu,str_shr,str_con,str_not:widestring; str_pay,Str_head,str1,str2: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+UNOA: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 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; 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 trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)<>'' then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring); if trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring)<>'' then str_pay:=trim(frm_op_seae.t_op_seae.fieldbyname('到付地点').asstring); 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)+' '+frm_op_seae.t_op_seae.fieldbyname('EDI备注').asString+' '+#39); count:=count+1; sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.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; str.Add('CNT+7:'+frm_op_seae.t_op_seae.fieldbyname('重量').asstring+':KGM'''); count:=count+1; str.Add('CNT+11:'+frm_op_seae.t_op_seae.fieldbyname('件数').asstring+''''); count:=count+1; str.Add('CNT+15:'+frm_op_seae.t_op_seae.fieldbyname('尺码').asstring+':MTQ'''); 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+'+GetPortEdiID(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 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); count:=count+1; str.Add('RFF+BM:'+frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring+#39); count:=count+1; str.Add('RFF+CT:'+frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring+#39); // count:=count+1; if (t_op_edi.FieldByName('所在国家').asstring='美国') then begin str.Add('REF+TN:'+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; 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; str.Add('LOC+9+'+trim(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('LOC+88+'+trim(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('LOC+11+'+trim(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('LOC+7+'+trim(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring) //? +':139:6:'+trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring)+#39); count:=count+1; str_all.Clear; str_head:=''; 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; GetLengthTString(str_all,35); 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 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; GetLengthTString(str_all,35); 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 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; GetLengthTString(str_all,35); 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+'+GetShipEdiNO(frm_op_seae.t_op_seae.fieldbyname('船公司').asstring)+':160:86++'+frm_op_seae.t_op_seae.fieldbyname('船公司').asstring+#39); count:=count+1; str.Add('NAD+HI+'+Edit13.Text+':160:86++'+Edit2.text+#39); 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; 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 trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='正本' then begin //提单类型 Str2:='706'; str.Add('DOC+'+Str2+'+++'+Str1+#39); count:=count+1; end else if trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='海运单' then begin Str2:='710'; str.Add('DOC+'+Str2+'+++'+Str1+#39); count:=count+1; end else if trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='BILL COPY' then begin Str2:='707'; str.Add('DOC+'+Str2+'+++'+Str1+#39); count:=count+1; end else if trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='HOUSE BILL' then begin Str2:='714'; str.Add('DOC+'+Str2+'+++'+Str1+#39); count:=count+1; end else if trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='正副本' then begin Str2:='706'; str.Add('DOC+'+Str2+'+++'+Str1+#39); count:=count+1; Str2:='707'; str.Add('DOC+'+Str2+'+++'+'1'+#39); // str.Add('DOC+'+Str2+'+++'+frm_op_seae.t_op_seae.fieldbyname('副本份数').asstring+#39); count:=count+1; end else begin Str2:='706'; str.Add('DOC+'+Str2+'+++'+Str1+#39); count:=count+1; end; 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; if Trim(frm_op_seae.t_op_seae.fieldbyname('运输方式').asstring)<>'' then begin // 商品编码 str.Add('PIA+5+'+frm_op_seae.t_op_seae.fieldbyname('运输方式').asstring+':HS'+#39); //? count:=count+1; end; if RadioGroup1.ItemIndex=0 then begin sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.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 sl.text:=frm_op_seae.t_op_seae.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+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_shr+#39); count:=count+2; end; if Trim(str_con)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_con+#39); count:=count+2; end; if Trim(str_not)<>'' then begin str.Add('FTX+AAA+++'+ ' '+#39); str.Add('FTX+AAA+++'+ Str_not+#39); count:=count+2; end; end; 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; 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; sl:=TStringList.Create; try sl.text:=frm_op_seae.t_op_seae.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; 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 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; if frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='D' 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; 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 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' then begin str.Add('MEA+AAE+AAS+CBM:'+frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring+#39); count:=count+1; end; str.Add('SEL+'+t_op_ctn.fieldbyname('封号').asstring+'+CA'+#39); count:=count+1; if frm_op_seae.t_op_seae.FieldByName('货物标识').asstring='R' 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; } procedure Tfrm_op_seae_edi_msk_new.bsSkinButton1Click(Sender: TObject); var str:Tstringlist; i,Count,get_Count,bill_count:integer; inifile1:Tinifile; 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])); if not isEditrue then exit; if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_msk_new.get_txtSI(str) else get_Count:=frm_op_seae_edi_msk_new.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-1)+'+'+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_msk_new.get_txtSI(str) else get_Count:=frm_op_seae_edi_msk_new.get_txtBooking(str); if get_Count=-1 then exit else count:=count+get_Count; str.Add('UNT+'+INTTOSTR(str.count-1)+'+'+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_msk_new.FormShow(Sender: TObject); var inifile1:Tinifile; tmpstr:string; begin inifile1:=Tinifile.Create(ExtractFilePath(application.ExeName)+'main.ini'); edit1.text:=inifile1.ReadString('EDI','SEND_CODE_MSK',''); edit2.text:=inifile1.ReadString('EDI','SEND_NAME_MSK',''); edit3.text:=inifile1.ReadString('EDI','RECEIVE_CODE_MSK',''); edit4.text:=inifile1.ReadString('EDI','RECEIVE_NAME_MSK',''); edit5.text:=inifile1.ReadString('EDI','SEND_TEL_MSK',''); edit6.text:=inifile1.ReadString('EDI','SEND_MAIL_MSK',''); edit7.text:=inifile1.ReadString('EDI','SEND_ATTN_MSK',''); edit8.text:=inifile1.ReadString('EDI','FTPADD_MSK',''); edit9.text:=inifile1.ReadString('EDI','FTPNAME_MSK',''); edit10.text:=inifile1.ReadString('EDI','FTPPASS_MSK',''); edit11.text:=inifile1.ReadString('EDI','FTPPATH_MSK','/'); edit12.text:=inifile1.ReadString('EDI','ADDR_MSK',''); edit13.text:=inifile1.ReadString('EDI','SEND_MSKID',''); tmpstr:=inifile1.ReadString('EDI','SEND_FTPPASSIVE_MSK','1'); if (tmpstr='1') then CheckBox1.checked else CheckBox1.checked:=False; RadioGroup1.ItemIndex:=inifile1.ReadInteger('EDI','MSKSEND_TYPE',0); RadioGroup2.ItemIndex:=inifile1.ReadInteger('EDI','MSKSEND_CA',0); bsSkinComboBox1.ItemIndex:=inifile1.ReadInteger('EDI','MSKSEND_COM',0); tmpstr:=inifile1.ReadString('EDI','SEND_FTPMSKYT','0'); if (tmpstr='1') then bsSkinCheckRadioBox1.checked:=TRUE else bsSkinCheckRadioBox1.checked:=False; inifile1.free; end; procedure Tfrm_op_seae_edi_msk_new.FormClose(Sender: TObject; var Action: TCloseAction); VAR inifile1:TIniFile; begin inifile1:=Tinifile.Create(ExtractFilePath(application.ExeName)+'main.ini'); inifile1.WriteString('EDI','SEND_CODE_MSK',edit1.text); inifile1.WriteString('EDI','SEND_NAME_MSK',edit2.text); inifile1.WriteString('EDI','RECEIVE_CODE_MSK',edit3.text); inifile1.WriteString('EDI','RECEIVE_NAME_MSK',edit4.text); inifile1.WriteString('EDI','SEND_TEL_MSK',edit5.text); inifile1.WriteString('EDI','SEND_MAIL_MSK',edit6.text); inifile1.WriteString('EDI','SEND_ATTN_MSK',edit7.text); inifile1.WriteString('EDI','SEND_MSKID',edit13.text); inifile1.WriteString('EDI','FTPADD_MSK',edit8.text); inifile1.WriteString('EDI','FTPNAME_MSK',edit9.text); inifile1.WriteString('EDI','FTPPASS_MSK',Edit10.text); inifile1.WriteString('EDI','FTPPATH_MSK',Edit11.text); inifile1.WriteString('EDI','ADDR_MSK',edit12.text); inifile1.WriteInteger('EDI','MSKSEND_TYPE',RadioGroup1.ItemIndex); inifile1.WriteInteger('EDI','MSKSEND_CA',RadioGroup2.ItemIndex); inifile1.WriteInteger('EDI','MSKSEND_COM',bsSkinComboBox1.ItemIndex); if CheckBox1.checked then inifile1.WriteString('EDI','SEND_FTPPASSIVE_MSK','1') else inifile1.WriteString('EDI','SEND_FTPPASSIVE_MSK','0'); if bsSkinCheckRadioBox1.checked then inifile1.WriteString('EDI','SEND_FTPMSKYT','1') else inifile1.WriteString('EDI','SEND_FTPMSKYT','0'); inifile1.free; action:=cafree; frm_op_seae_edi_msk_new:=nil; end; procedure Tfrm_op_seae_edi_msk_new.bsSkinButton3Click(Sender: TObject); begin if frm_op_seae_edi_msk_new.Width=650 then frm_op_seae_edi_msk_new.Width:=305 else frm_op_seae_edi_msk_new.Width:=650; end; procedure Tfrm_op_seae_edi_msk_new.bsSkinButton4Click(Sender: TObject); var IdFTP1:TIdFTP; str:widestring; str_file:widestring; ftpar,ftpname,ftppass,ftppath,ScriptPath,ResponseStr,strmsg:String; StrL:Tstringlist; i,Count,get_Count,bill_count,i_soi:integer; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE:string; edi,dsstr,PostUrl:WideString; aQuery:TADOQuery; MultiPartFormDataStream :TIdMultiPartFormDataStream; IdHTTP1:TIdHTTP; ResponseStream : TStringStream; //返回信息 jo:ISuperobject; begin 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; if (RadioGroup1.ItemIndex=0) and (RadioGroup3.ItemIndex=0) then begin // if (RadioGroup2.ItemIndex=0) and (RadioGroup1.ItemIndex=0) then begin aQuery:=CreateAdoQuery; try with aQuery do begin close;SQL.Text:='select count(*) ct from t_op_Edi_Log where 主提单号='''+MBLNO+''' and 报文类型=''SO'' '; open; if FieldByName('ct').AsInteger>0 then begin MessageDlg('此票业务已发送订舱,不允许重新发送!',mtWarning,[mbYes],0); exit; end; end; finally FreeAndNil(aQuery); end; end; { if (RadioGroup1.ItemIndex=0) then begin if (frm_op_seae.t_op_seae.fieldbyname('订舱状态').asstring='已订舱') then if MessageDlg('此票业务已发送订舱,确实要重新发送吗!',mtWarning,[mbYes,mbNo],0)=mrNo then exit; end else begin if (frm_op_seae.t_op_seae.fieldbyname('确认状态').asstring='已确认') then if MessageDlg('此票业务已发送确认报文,确实要重新发送吗!',mtWarning,[mbYes,mbNo],0)=mrNo then exit; end; } 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) +FormatDateTime('ss',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)+'.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_msk_new.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_msk_new.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-1)+'+'+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_msk_new.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_msk_new.get_txtBooking(StrL); if get_Count=-1 then exit else count:=count+get_Count; StrL.Add('UNT+'+INTTOSTR(StrL.count-1)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); StrL.Add('UNZ+1+'+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 if MessageDlg('此票业务有中文字符或TAB键,确实要继续上传吗!'+#13#10+Str[i],mtWarning,[mbYes,mbNo],0)=mrNo then exit; end; end; StrL.SaveToFile(str); edi:=StrL.Text; 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(get_parameters_value(2125,''), 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('上传MSK报文成功',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); UpdateSOIStatus(RadioGroup1.ItemIndex,''); 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('上传MSK报文出错',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); showmessage('文件上传出现错误!'+strmsg); i_soi:=1; end; finally MultiPartFormDataStream.Free; FreeAndNil(IdHTTP1); FreeAndNil(ResponseStream); end; if i_soi=0 then begin Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); UpdateSOIStatus(RadioGroup1.ItemIndex,frm_op_seae.t_op_seae.fieldbyname('编号').asstring); if (RadioGroup1.ItemIndex=0) and (frm_op_seae.t_op_seae.FieldByName('签单编号').AsInteger=10) then begin dsstr:=dsstr+'{'; dsstr:=dsstr+'"orderNo":"'+frm_op_seae.t_op_seae.FieldByName('委托编号').AsString+'"'; dsstr:=dsstr+',"status":"N"'; dsstr:=dsstr+',"bookingId":"'+frm_op_seae.t_op_seae.FieldByName('业务编号').AsString+'"'; dsstr:=dsstr+',"bookingIdDate":"'+FormatDateTime('YYYY-MM-DD hh:mm:ss',frm_op_seae.t_op_seae.FieldByName('录入日期').asdatetime)+'"'; dsstr:=dsstr+'}'; PostUrl:=get_parameters_value(2124,'http://47.104.90.170:6857/api/clp/bookingMsgReceipt'); TDsHaierThread.create(PostUrl,dsstr,'',frm_op_seae.t_op_seae.FieldByName('主提单号').AsString); InsertSysLog('上传海尔回执',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring); end; dsstr:=CreateSIEdiFile_MBL(); PostUrl:=get_parameters_value(2121,'http://123.234.225.158:8901')+'/booking/ReceiveBookingData'; if (frm_op_seae.t_op_seae.FieldByName('船公司').asstring<>'东方海外') then begin TDsDjyThread.create(PostUrl,dsstr,''); InsertSysLog('上传大简云',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring); end; end; close; end; procedure Tfrm_op_seae_edi_msk_new.RadioGroup2Click(Sender: TObject); begin case RadioGroup2.ItemIndex of 0:begin Edit3.Text:='MAERSK'; Edit4.Text:='MAERSK'; end; 1:begin Edit3.Text:='SAFMARINE'; Edit4.Text:='SAFMARINE'; end; 2:begin Edit3.Text:='MCCQ'; Edit4.Text:='MCCQ'; end; end; end; procedure Tfrm_op_seae_edi_msk_new.bsSkinComboBox1Change(Sender: TObject); begin // case bsSkinComboBox1.ItemIndex of 0: begin Edit13.Text:='40600057097'; end; 1: begin Edit13.Text:='40600104858'; end; 2: begin Edit13.Text:='40600740009'; end; 3: begin Edit13.Text:='40600654130'; end; 5: begin Edit13.Text:='40604968560'; end; else Edit13.Text:='40600057097'; end; end; procedure Tfrm_op_seae_edi_msk_new.bsSkinButton6Click(Sender: TObject); var str:Tstringlist; i,Count,get_Count,bill_count:integer; inifile1:Tinifile; 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_msk_new.get_txtvgm(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_msk_new.get_txtvgm(str); if get_Count=-1 then exit else count:=count+get_Count; bill_count:=bill_count+1; 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('文件生成成功!'); UpdateVGMStatus(frm_op_seae.t_op_seae.fieldbyname('编号').asstring,'VGMTXT'); end else begin showmessage('文件生成失败!'); exit; end; end; procedure Tfrm_op_seae_edi_msk_new.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,strmsg,ResponseStr:string; edi:WideString; MultiPartFormDataStream :TIdMultiPartFormDataStream; IdHTTP1:TIdHTTP; ResponseStream : TStringStream; //返回信息 jo:ISuperobject; 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) +FormatDateTime('ss',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)+'.txt'; StrL:=Tstringlist.Create; StrL.Clear; count:=0; bill_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_msk_new.get_txtvgm(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 get_Count:=frm_op_seae_edi_msk_new.get_txtvgm(StrL); if get_Count=-1 then exit else count:=count+get_Count; bill_count:=bill_count+1; StrL.Add('UNZ+'+inttostr(count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); end; StrL.SaveToFile(str); edi:=StrL.Text; try 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(get_parameters_value(2125,''), 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); end else begin deletefile(str); showmessage('文件上传出现错误!'+strmsg); end; finally MultiPartFormDataStream.Free; FreeAndNil(IdHTTP1); FreeAndNil(ResponseStream); end; { 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'; } 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; 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); UpdateVGMStatus(frm_op_seae.t_op_seae.fieldbyname('编号').asstring,'VGMEDI'); except deletefile(str); showmessage('文件存储错误!'); i_soi:=1; end; // idftp1.Free; end; procedure Tfrm_op_seae_edi_msk_new.Button1Click(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; aQuery:TADOQuery; begin 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; if (RadioGroup1.ItemIndex=0) then begin // if (RadioGroup2.ItemIndex=0) and (RadioGroup1.ItemIndex=0) then begin aQuery:=CreateAdoQuery; try with aQuery do begin close;SQL.Text:='select count(*) ct from t_op_Edi_Log where 主提单号='''+MBLNO+''' and 报文类型=''SO'' '; open; if FieldByName('ct').AsInteger>0 then begin MessageDlg('此票业务已发送订舱,不允许重新发送!',mtWarning,[mbYes],0); exit; end; end; finally FreeAndNil(aQuery); end; end; { if (RadioGroup1.ItemIndex=0) then begin if (frm_op_seae.t_op_seae.fieldbyname('订舱状态').asstring='已订舱') then if MessageDlg('此票业务已发送订舱,确实要重新发送吗!',mtWarning,[mbYes,mbNo],0)=mrNo then exit; end else begin if (frm_op_seae.t_op_seae.fieldbyname('确认状态').asstring='已确认') then if MessageDlg('此票业务已发送确认报文,确实要重新发送吗!',mtWarning,[mbYes,mbNo],0)=mrNo then exit; end; } 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) +FormatDateTime('ss',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)+'.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_msk_new.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_msk_new.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_msk_new.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_msk_new.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); { 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 if MessageDlg('此票业务有中文字符或TAB键,确实要继续上传吗!'+#13#10+Str[i],mtWarning,[mbYes,mbNo],0)=mrNo then exit; end; end; StrL.SaveToFile(str); edi:=StrL.Text; try FtpClient1.UserName:=ftpname; FtpClient1.PassWord:=ftppass; FtpClient1.HostName:=ftpar; // FtpClient1.Passive:=CheckBox1.Checked; FtpClient1.MultiThreaded:=True; FtpClient1.Port:='21'; FtpClient1.DisplayFileFlag:=True; FtpClient1.Timeout:=5; try if (FtpClient1.Open) and (FtpClient1.User) and (FtpClient1.Pass) then begin //连接失败 frm_op_seae_edi_msk_new.Caption:='用户连接成功!'; FtpClient1.HostDirName:=ftppath; if FtpClient1.Cwd then end else begin showmessage('用户连接失败!'); end; except on e:exception do begin FtpClient1.Abort; frm_op_seae_edi_msk_new.Caption:='用户连接失败!'; end; end; if FtpClient1.Connected then begin try FtpClient1.TransferMode := ftpTransModeStream; FtpClient1.LocalFileName:=str; FtpClient1.HostFileName:= str_file; try if FtpClient1.Put then begin ShowMessage('上传成功'); UpdateSOIStatus(RadioGroup1.ItemIndex,''); // frm_op_seae_edi_jfyard.Caption:='上传成功!'; end; except FtpClient1.Abort; ShowMessage('上传失败!'); // frm_op_seae_edi_jfyard.Caption:='上传失败!'; i_soi:=1; end; finally FtpClient1.Abort; end; end; // 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); except deletefile(str); showmessage('文件存储错误!'); i_soi:=1; end; idftp1.Free; if i_soi=0 then begin Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); UpdateSOIStatus(RadioGroup1.ItemIndex,frm_op_seae.t_op_seae.fieldbyname('编号').asstring); end; close; end; procedure Tfrm_op_seae_edi_msk_new.bsSkinButton7Click(Sender: TObject); var IdFTP1:TIdFTP; str:widestring; str_file:widestring; ftpar,ftpname,ftppass,ftppath,ScriptPath,ResponseStr,strmsg:String; StrL:Tstringlist; i,j,Count,get_Count,bill_count,i_soi:integer; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE:string; edi,dsstr,PostUrl:WideString; aQuery:TADOQuery; MultiPartFormDataStream :TIdMultiPartFormDataStream; IdHTTP1:TIdHTTP; ResponseStream : TStringStream; //返回信息 jo:ISuperobject; begin 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; if (RadioGroup1.ItemIndex=0) and (RadioGroup3.ItemIndex=0) then begin aQuery:=CreateAdoQuery; try with aQuery do begin close;SQL.Text:='select count(*) ct from t_op_Edi_Log where 主提单号='''+MBLNO+''' and 报文类型=''SO'' '; open; if FieldByName('ct').AsInteger>0 then begin MessageDlg('此票业务已发送订舱,不允许重新发送!',mtWarning,[mbYes],0); exit; end; end; finally FreeAndNil(aQuery); end; end; 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); 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)+'.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)+'.txt'; if not isEditrue then exit; if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_msk_new.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_msk_new.get_txtBooking(StrL); if get_Count=-1 then exit else count:=count+get_Count; bill_count:=bill_count+1; StrL.Add('UNT+'+INTTOSTR(StrL.count-1)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); StrL.Add('UNZ+'+inttostr(bill_count)+'+'+frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring+#39); for j:=0 to StrL.Count-1 do begin if IsZhongwen(StrL[j]) then begin if MessageDlg('此票业务有中文字符或TAB键,确实要继续上传吗!'+#13#10+Str[j],mtWarning,[mbYes,mbNo],0)=mrNo then exit; end; end; StrL.SaveToFile(str); edi:=StrL.Text; 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(get_parameters_value(2125,''), 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('上传MSK报文成功',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); UpdateSOIStatus(RadioGroup1.ItemIndex,''); 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('上传MSK报文出错',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); showmessage('文件上传出现错误!'+strmsg); i_soi:=1; end; finally MultiPartFormDataStream.Free; FreeAndNil(IdHTTP1); FreeAndNil(ResponseStream); end; if i_soi=0 then begin Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); UpdateSOIStatus(RadioGroup1.ItemIndex,frm_op_seae.t_op_seae.fieldbyname('编号').asstring); end; if (RadioGroup1.ItemIndex=0) and (frm_op_seae.t_op_seae.FieldByName('签单编号').AsInteger=10) then begin dsstr:='{'; dsstr:=dsstr+'"orderNo":"'+frm_op_seae.t_op_seae.FieldByName('委托编号').AsString+'"'; dsstr:=dsstr+',"status":"N"'; dsstr:=dsstr+',"bookingId":"'+frm_op_seae.t_op_seae.FieldByName('业务编号').AsString+'"'; dsstr:=dsstr+',"bookingIdDate":"'+FormatDateTime('YYYY-MM-DD hh:mm:ss',frm_op_seae.t_op_seae.FieldByName('录入日期').asdatetime)+'"'; dsstr:=dsstr+'}'; PostUrl:=get_parameters_value(2124,'http://47.104.90.170:6857/api/clp/bookingMsgReceipt'); TDsHaierThread.create(PostUrl,dsstr,'',frm_op_seae.t_op_seae.FieldByName('主提单号').AsString); InsertSysLog('上传海尔回执',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring); end; dsstr:=CreateSIEdiFile_MBL(); PostUrl:=get_parameters_value(2121,'http://123.234.225.158:8901')+'/booking/ReceiveBookingData'; if (frm_op_seae.t_op_seae.FieldByName('船公司').asstring<>'东方海外') then begin TDsDjyThread.create(PostUrl,dsstr,''); InsertSysLog('上传大简云',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring); end; 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)+'.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)+'.txt'; if not isEditrue then exit; if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_msk_new.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_msk_new.get_txtBooking(StrL); if get_Count=-1 then exit else count:=count+get_Count; bill_count:=bill_count+1; if not isEditrue then exit; if RadioGroup1.ItemIndex=1 then get_Count:=frm_op_seae_edi_msk_new.get_txtSI(StrL) else get_Count:=frm_op_seae_edi_msk_new.get_txtBooking(StrL); if get_Count=-1 then exit else count:=count+get_Count; StrL.Add('UNT+'+INTTOSTR(StrL.count-1)+'+'+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 if MessageDlg('此票业务有中文字符或TAB键,确实要继续上传吗!'+#13#10+Str[i],mtWarning,[mbYes,mbNo],0)=mrNo then exit; end; end; StrL.SaveToFile(str); edi:=StrL.Text; 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(get_parameters_value(2125,''), 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('上传MSK报文成功',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); UpdateSOIStatus(RadioGroup1.ItemIndex,''); 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('上传MSK报文出错',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring+'---'+str); showmessage('文件上传出现错误!'+strmsg); i_soi:=1; end; finally MultiPartFormDataStream.Free; FreeAndNil(IdHTTP1); FreeAndNil(ResponseStream); end; if i_soi=0 then begin Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); UpdateSOIStatus(RadioGroup1.ItemIndex,frm_op_seae.t_op_seae.fieldbyname('编号').asstring); end; if (RadioGroup1.ItemIndex=0) and (frm_op_seae.t_op_seae.FieldByName('签单编号').AsInteger=10) then begin dsstr:='{'; dsstr:=dsstr+'"orderNo":"'+frm_op_seae.t_op_seae.FieldByName('委托编号').AsString+'"'; dsstr:=dsstr+',"status":"N"'; dsstr:=dsstr+',"bookingId":"'+frm_op_seae.t_op_seae.FieldByName('业务编号').AsString+'"'; dsstr:=dsstr+',"bookingIdDate":"'+FormatDateTime('YYYY-MM-DD hh:mm:ss',frm_op_seae.t_op_seae.FieldByName('录入日期').asdatetime)+'"'; dsstr:=dsstr+'}'; PostUrl:=get_parameters_value(2124,'http://47.104.90.170:6857/api/clp/bookingMsgReceipt'); TDsHaierThread.create(PostUrl,dsstr,'',frm_op_seae.t_op_seae.FieldByName('主提单号').AsString); InsertSysLog('上传海尔回执',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring); end; dsstr:=CreateSIEdiFile_MBL(); PostUrl:=get_parameters_value(2121,'http://123.234.225.158:8901')+'/booking/ReceiveBookingData'; if (frm_op_seae.t_op_seae.FieldByName('船公司').asstring<>'东方海外') then begin TDsDjyThread.create(PostUrl,dsstr,''); InsertSysLog('上传大简云',frm_op_seae.t_op_seae.FieldByName('业务编号').asstring); end; end; showmessage('文件上传成功!'); close; end; function Tfrm_op_seae_edi_msk_new.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+'"'; 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.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+'"'; 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_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; function Tfrm_op_seae_edi_msk_new.GetCtnNumPkg(CtnNum: String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select sum(PKGS) PKGS from t_op_dgform where 箱序号='+CtnNum+' and 编号='''+t_op_dgform.fieldbyname('编号').AsString+''''); Open; if not IsEmpty then Result:=Trim(FieldByName('PKGS').asstring) else Result:=''; end; finally FreeAndNil(aQuery); end; end; end.