unit u_op_seae_edi_hyundai; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,IdFTP,IdFTPCommon, Dialogs, BusinessSkinForm, StdCtrls, bsSkinCtrls,inifiles, DB, ADODB, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase; type Tfrm_op_seae_edi_hyundai = class(TForm) bsBusinessSkinForm1: TbsBusinessSkinForm; Label2: TLabel; Edit2: TEdit; Edit1: TEdit; Label1: TLabel; SaveDialog1: TSaveDialog; bsSkinButton1: TbsSkinButton; bsSkinButton2: TbsSkinButton; bsSkinButton3: TbsSkinButton; t_op_ctn: TADOQuery; t_op_ctn1: TDataSource; bsSkinRadioGroup1: TbsSkinRadioGroup; Label3: TLabel; Edit3: TEdit; bsSkinRadioGroup2: TbsSkinRadioGroup; bsSkinButton4: TbsSkinButton; bsSkinGroupBox1: TbsSkinGroupBox; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; t_op_ams: TADOQuery; t_op_ams1: TDataSource; bsSkinCheckRadioBox2: TbsSkinCheckRadioBox; t_op_seae_assistant: TADOQuery; Label8: TLabel; Edit8: TEdit; Label9: TLabel; Edit9: TEdit; Label10: TLabel; Edit10: TEdit; Label11: TLabel; Edit11: TEdit; Label12: TLabel; Edit12: TEdit; t_op_edictn: TADOQuery; Label13: TLabel; Label14: TLabel; Edit13: TEdit; Edit14: TEdit; Label15: TLabel; Edit15: TEdit; Label16: TLabel; Edit16: TEdit; Label17: TLabel; Edit17: TEdit; bsSkinButton5: TbsSkinButton; bsSkinButton6: TbsSkinButton; bsSkinGroupBox2: TbsSkinGroupBox; Label18: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Edit18: TEdit; Edit19: TEdit; Edit20: TEdit; Edit21: TEdit; bsSkinGroupBox3: TbsSkinGroupBox; Label22: TLabel; Label23: TLabel; Label24: TLabel; Label25: TLabel; Edit22: TEdit; Edit23: TEdit; Edit24: TEdit; Edit25: TEdit; bsSkinButton8: TbsSkinButton; Edit26: TEdit; Label26: TLabel; IdFTP1: TIdFTP; CheckBox1: TCheckBox; procedure bsSkinButton2Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure bsSkinButton1Click(Sender: TObject); procedure bsSkinButton3Click(Sender: TObject); procedure bsSkinButton4Click(Sender: TObject); procedure bsSkinButton5Click(Sender: TObject); procedure bsSkinButton6Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private function isEditrue(DataSet:TDataSet): boolean; function GetStrNum(str:String):integer; function FormatListString(Old:TStrings;mCount,Strlength:integer):String; function FormatEdiString(str:String;Strlength:integer=0):String; function CreateEdiFile:TStrings; function CreateZHUEdiFile:TStrings; function CreateSIEdiFile:TStrings; function CreateVgmEdiFile:TStrings; function CreateSIZHUEdiFile:TStrings; function GetCntrEdi(cntrsize: String):String; function GetpkgsEdi(pkgs:String):String; function GetlineEdi(aline:String):String; function GetvesselEdi(avessel:String):String; function GetLengthword(var s: String; l: Integer;str:String): String; procedure GetLengthTString(var sl:TStringList;l:integer); function IsZhongwen(Str:String):Boolean; function GetCtnGoods(bsno:String):String; { Private declarations } public { Public declarations } MblLength:integer; IntMarksRowCount:integer; IntGoodsRowCount:integer; end; var frm_op_seae_edi_hyundai: Tfrm_op_seae_edi_hyundai; implementation uses u_op_seae, u_main, my_sys_function, u_data_share, u_op_seae_assistant; {$R *.dfm} function Tfrm_op_seae_edi_hyundai.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) then begin if bytetype(Str[i],1)<>mbsinglebyte then begin Result:=True; Exit; end; end; end; function Tfrm_op_seae_edi_hyundai.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 ( not (str[i] in [' ',';',',','.',':','/','(',')','?','+','-'])) 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_hyundai.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_hyundai.FormatEdiString(str:String;Strlength:integer=0):String; var i:integer; strC:widestring; begin strC:=''; for i:=1 to length(str) do begin if ((str[i]=#39) or (str[i]=':') or (str[i]='+') or (str[i]='?') or (str[i]=';')) then begin strC:=strC+'?'+str[i]; end else begin strC:=strC+str[i]; end; end; result:=strC; end; function Tfrm_op_seae_edi_hyundai.FormatListString(Old:TStrings;mCount,Strlength:integer):String; var i:integer; NewStrs:TStrings; mStr:String; begin Result:=''; NewStrs:=TStringList.Create; for i:=0 to old.Count-1 do begin if Length(old.Strings[i])<=Strlength then begin NewStrs.Add(old.Strings[i]); end else begin mStr:=old.Strings[i]; while length(mStr)>Strlength do begin newStrs.Add(copy(mStr,1,Strlength)); system.Delete(mStr,1,Strlength); end; newStrs.Add(mStr); end; end; try for i:=0 to mCount-1 do begin if i'' then IntMarksRowCount:=StrToInt(Trim(Edit15.Text)) else IntMarksRowCount:=9; if Trim(Edit16.Text)<>'' then IntGoodsRowCount:=StrToInt(Trim(Edit16.Text)) else IntGoodsRowCount:=5; if Trim(Edit17.Text)<>'' then MblLength:=StrToInt(Trim(Edit17.Text)) else MblLength:=2; str:=Tstringlist.Create; try if Trim(frm_op_seae.t_op_seae.fieldbyname('装运方式').asstring)='整箱' then if bsSkinRadioGroup2.ItemIndex=1 then Str:=CreateSIEdiFile else Str:=CreateEdiFile else if Pos('主票',(frm_op_seae.t_op_seae.fieldbyname('装运方式').asstring))>0 then if bsSkinRadioGroup2.ItemIndex=1 then Str:=CreateSIZHUEdiFile else Str:=CreateZHUEdiFile else begin Exit; end; for i:=0 to Str.Count-1 do begin if IsZhongwen(Str[i]) then begin if MessageDlg('此票业务可能含有中文字符或其他不规范字符,确实要继续上传吗!',mtWarning,[mbYes,mbNo],0)=mrNo then exit; end; end; SaveDialog1.FileName:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring; if SaveDialog1.Execute then begin str.SaveToFile(SaveDialog1.FileName+'.txt'); showmessage('文件生成成功!'); end else begin showmessage('文件生成失败!'); exit; end; finally FreeAndNil(Str) end; close; end; function Tfrm_op_seae_edi_hyundai.isEditrue(DataSet:TDataSet): boolean; var cntrs,cntrGoods:String; begin result:=true; if trim(DataSet.fieldbyname('主提单号').asstring)='' then begin result:=false; MessageDlg('提单号不能为空',mtWarning,[mbOk],0); exit; end; if trim(DataSet.fieldbyname('付费方式').asstring)='' then begin result:=false; MessageDlg('付费方式不能为空',mtWarning,[mbOk],0); exit; end; if trim(DataSet.fieldbyname('船名').asstring)='' then begin result:=false; MessageDlg('船名不能为空',mtWarning,[mbOk],0); exit; end; if trim(DataSet.fieldbyname('航次').asstring)='' then begin result:=false; MessageDlg('航次不能为空',mtWarning,[mbOk],0); exit; end; if trim(DataSet.fieldbyname('船名').asstring)<>'' then begin if (GetvesselEdi(trim(DataSet.fieldbyname('船名').asstring)))='' then begin result:=false; MessageDlg('船舶呼号不能为空',mtWarning,[mbOk],0); exit; end; end; if trim(DataSet.fieldbyname('装港代码').asstring)='' then begin result:=false; MessageDlg('装港代码不能为空',mtWarning,[mbOk],0); exit; end; if trim(DataSet.fieldbyname('装货港').asstring)='' then begin result:=false; MessageDlg('装货港不能为空',mtWarning,[mbOk],0); exit; end; { if trim(DataSet.fieldbyname('总价').asstring)='' then begin result:=false; MessageDlg('第一层包装皮重不能为空',mtWarning,[mbOk],0); exit; end; } if trim(DataSet.fieldbyname('开船日期').asstring)='' then begin result:=false; MessageDlg('开船日期不能为空',mtWarning,[mbOk],0); exit; end; if trim(DataSet.fieldbyname('交货代码').asstring)='' then begin result:=false; MessageDlg('交货代码不能为空',mtWarning,[mbOk],0); exit; end; if trim(DataSet.fieldbyname('卸货代码').asstring)='' then begin result:=false; MessageDlg('卸货代码不能为空',mtWarning,[mbOk],0); exit; end; if trim(DataSet.fieldbyname('交货地点').asstring)='' then begin result:=false; MessageDlg('交货地点不能为空',mtWarning,[mbOk],0); exit; end; if trim(DataSet.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 bsSkinRadioGroup2.ItemIndex=1 then begin if trim(t_op_ams.fieldbyname('SI备注').asstring)='' then begin result:=false; MessageDlg('SI备注不能为空',mtWarning,[mbOk],0); exit; end; end else begin if trim(frm_op_seae.t_op_seae.fieldbyname('EDI备注').asstring)='' then begin result:=false; MessageDlg('EDI备注不能为空',mtWarning,[mbOk],0); exit; end; end; } if trim(DataSet.fieldbyname('签单地点').asstring)='' then begin result:=false; MessageDlg('签单地点不能为空',mtWarning,[mbOk],0); exit; end; if trim(GetpkgsEdi(DataSet.fieldbyname('包装').asstring))='' then begin result:=false; MessageDlg('包装EDI代码不存在!',mtWarning,[mbOk],0); exit; end; if trim(DataSet.fieldbyname('货物描述').asstring)='' then begin result:=false; MessageDlg('货物描述不能为空',mtWarning,[mbOk],0); exit; end; if trim(DataSet.fieldbyname('唛头').asstring)='' then begin result:=false; MessageDlg('唛头不能为空',mtWarning,[mbOk],0); exit; end; if DataSet.fieldbyname('件数').asinteger=0 then begin result:=false; MessageDlg('件数不能为空',mtWarning,[mbOk],0); exit; end; if DataSet.fieldbyname('重量').asFloat=0 then begin result:=false; MessageDlg('总重量不能为空',mtWarning,[mbOk],0); exit; end; if DataSet.fieldbyname('尺码').asFloat=0 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)='D' then begin if Trim(frm_op_seae.t_op_seae.fieldbyname('危险品分类').asstring)='' then begin result:=false; MessageDlg('危险品等级不能为空',mtWarning,[mbOk],0); exit; end; if Trim(frm_op_seae.t_op_seae.fieldbyname('危险品编号').asstring)='' then begin result:=false; MessageDlg('危险品编号不能为空',mtWarning,[mbOk],0); exit; end; if GetStrNum(Trim(frm_op_seae.t_op_seae.fieldbyname('危险品编号').asstring))<>4 then begin result:=false; MessageDlg('危险品编号必须是4位数字',mtWarning,[mbOk],0); exit; end; end; if trim(frm_op_seae.t_op_seae.FieldByName('货物标识').asstring)='R' then begin if Trim(frm_op_seae.t_op_seae.fieldbyname('设置温度').asstring)='' then begin result:=false; MessageDlg('设置温度不能为空',mtWarning,[mbOk],0); exit; end; if Trim(frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring)='' then begin result:=false; MessageDlg('冷藏通风量不能为空',mtWarning,[mbOk],0); exit; end; { if 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; 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 bsSkinRadioGroup2.ItemIndex=1 then begin t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; 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 if Trim(t_op_ctn.fieldbyname('箱号').asstring)='' then begin result:=false; MessageDlg('箱号不能为空!',mtWarning,[mbOk],0); exit; end; if Trim(t_op_ctn.fieldbyname('封号').asstring)='' then begin result:=false; MessageDlg('封号不能为空!',mtWarning,[mbOk],0); exit; end; t_op_ctn.Next; end; end; if iszhongwen(frm_op_seae.t_op_seae.fieldbyname('EDI备注').AsString) then begin result:=false; MessageDlg('EDI备注不能有中文字符!',mtWarning,[mbOk],0); exit; end; if iszhongwen(dataset.fieldbyname('发货人代码').AsString) then begin result:=false; MessageDlg('发货人不能有中文字符!',mtWarning,[mbOk],0); exit; end; if iszhongwen(dataset.fieldbyname('收货人代码').AsString) then begin result:=false; MessageDlg('收货人不能有中文字符!',mtWarning,[mbOk],0); exit; end; if iszhongwen(dataset.fieldbyname('通知人代码').AsString) then begin result:=false; MessageDlg('通知人不能有中文字符!',mtWarning,[mbOk],0); exit; end; if iszhongwen(t_op_ams.fieldbyname('AMS发货人').AsString) then begin result:=false; MessageDlg('第二通知人不能有中文字符!',mtWarning,[mbOk],0); exit; end; if iszhongwen(dataset.fieldbyname('唛头').AsString) then begin result:=false; MessageDlg('唛头不能有中文字符!',mtWarning,[mbOk],0); exit; end; if iszhongwen(dataset.fieldbyname('货物描述').AsString) then begin result:=false; MessageDlg('货物描述不能有中文字符!',mtWarning,[mbOk],0); exit; end; end; function Tfrm_op_seae_edi_hyundai.CreateEdiFile:TStrings; var str,sl,sl1:Tstringlist; i,j,Count,l,M:integer; strsql,strRmain,strtemp,S,strSoc:string; rs:Tadoquery; wide_str:widestring; k:integer; strType:string; strDatetime:string; SenderCode,ReciverCode:string; function GetRemarksString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('EDI备注').AsString); GetLengthTString(TempStr,35); Result:='17:'; Result:=Result+FormatListString(TempStr,5,35)+''''; finally FreeAndNil(TempStr); end; end; function GetShipperString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('发货人代码').AsString); GetLengthTString(TempStr,35); Result:='20:'; Result:=Result+':'; Result:=Result+FormatListString(TempStr,6,35)+''''; finally FreeAndNil(TempStr); end; end; function GetConsigneString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('收货人代码').AsString); GetLengthTString(TempStr,35); Result:='21:'; Result:=Result+':'; Result:=Result+FormatListString(TempStr,6,35)+''''; finally FreeAndNil(TempStr); end; end; function GetNOTIFYString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('通知人代码').AsString); GetLengthTString(TempStr,35); Result:='22:'; Result:=Result+':'; Result:=Result+FormatListString(TempStr,6,35)+''''; finally FreeAndNil(TempStr); end; end; function GetAMSSHIPPERString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(t_op_ams.fieldbyname('AMS发货人').AsString); GetLengthTString(TempStr,35); Result:='23:'; Result:=Result+':'; Result:=Result+FormatListString(TempStr,6,35)+''''; finally FreeAndNil(TempStr); end; end; function GetMARKSString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('唛头').AsString); GetLengthTString(TempStr,15); Result:='44:'; Result:=Result+FormatListString(TempStr,10,15)+''''; finally FreeAndNil(TempStr); end; end; { function GetCARGODESCRIPTIONString:String; var TempStr:TStrings; i:integer; begin TempStr:=TStringList.Create; try TempStr.Text:=frm_op_seae.t_op_seae.fieldbyname('货物描述').AsString; for i:=0 to TempStr.Count-1 do begin if i=0 then Result:='47:'+FormatEdiString(TempStr.Strings[i],70) else Result:=Result+':'+FormatEdiString(TempStr.Strings[i],70); end; Result:=Result+''''; finally FreeAndNil(TempStr); end; end; } begin if not isEditrue(frm_op_seae.t_op_seae) then exit; SenderCode:=trim(edit1.Text) ; ReciverCode:=trim(edit2.Text) ; if bsSkinRadioGroup1.ItemIndex=0 then strType:='9' else if bsSkinRadioGroup1.ItemIndex=1 then strType:='2' else if bsSkinRadioGroup1.ItemIndex=2 then strType:='3' else if bsSkinRadioGroup1.ItemIndex=3 then strType:='4' else strType:='9'; str:=Tstringlist.Create; sl:=Tstringlist.Create; sl1:=Tstringlist.Create; str.Clear; str.Add('00:IFTMBF:BOOKING:'+trim(strType)+':'+ SenderCode+':'+ReciverCode+':'+GetDatetime(datetimetostr(now),1)+#39); Count:=0; str.Add ('02:'+ trim(frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring)+':' + trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring) +':' + trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring) +':' + trim(t_op_ams.fieldbyname('订舱人说明').asstring) +':' + 'HMM:' + ':::::::' + '::' + trim(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+':' +':'+ #39); IF (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)<>'正本') and (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)<>'电子提单') then //提单类型 strtemp:='EXP' else strtemp:='ORI'; str.add('03:'+strtemp+':' +':' + trim(frm_op_seae.t_op_seae.fieldbyname('签单地点').asstring) +':' + GetDatetime(trim(frm_op_seae.t_op_seae.fieldbyname('签单日期').asstring),0)+':' + get_fenshu(trim(frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring),MblLength)+':' + trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring) +':' + trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)+':' + trim(t_op_ams.fieldbyname('美国AMS标志').asstring) +':' + trim(t_op_ams.fieldbyname('加拿大AMS标志').asstring) +#39); str.Add('11:' + trim(GetvesselEdi(frm_op_seae.t_op_seae.fieldbyname('船名').asstring))+':' + trim(frm_op_seae.t_op_seae.fieldbyname('船名').asstring) +':' + trim(frm_op_seae.t_op_seae.fieldbyname('航次').asstring)+':' +'::' + ReciverCode +':' + '::::::' +#39); //船舶经营人 str.Add ('12:'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring)+':' +':' +':' +trim(frm_op_seae.t_op_seae.fieldbyname('交货代码').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('交货地点').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring) +#39); if frm_data_share.t_code_free.locate('付费方式',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring,[]) then begin str.Add ('14:'+frm_data_share.t_code_free.fieldbyname('代码').asstring+':' +trim(frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)+#39); str.Add('15:' +'::' +trim(frm_data_share.t_code_free.fieldbyname('代码').asstring)+':' +'::' + '::::' +#39); //船舶经营人 end else begin str.Add ('14:'+'P'+':' +trim(frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)+#39); str.Add('15:' +'::' +'P:' +'::' + '::::' +#39); //船舶经营人 end; Str.Add(GetRemarksString); Str.Add(GetShipperString); Str.Add(GetConsigneString); Str.Add(GetNOTIFYString); if (t_op_ams.fieldbyname('AMS发货人').AsString<>'') then Str.Add(GetAMSSHIPPERString); { str.Add ('20:'+':' +Changestr(frm_op_seae.t_op_seae.fieldbyname('发货人代码').asstring) +#39); str.Add ('21:'+':' +Changestr(frm_op_seae.t_op_seae.fieldbyname('收货人代码').asstring) +#39); str.Add ('22:'+':' +Changestr(frm_op_seae.t_op_seae.fieldbyname('通知人代码').asstring) +#39); } str.Add ('41:1:'+trim(frm_op_seae.t_op_seae.fieldbyname('运输方式').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('货物标识').asstring)+':' // 货物标识 S/R/D/O +trim(frm_op_seae.t_op_seae.fieldbyname('件数').asstring) +':' +trim(GetpkgsEdi(frm_op_seae.t_op_seae.fieldbyname('包装').asstring))+':' +trim(frm_op_seae.t_op_seae.fieldbyname('包装').asstring) +':' //第一层包装说明 +trim(frm_op_seae.t_op_seae.fieldbyname('总价').asstring) +':' //第一层包装说明 +trim(frm_op_seae.t_op_seae.fieldbyname('尺码').asstring) +'::::::' // 第一层包装皮重 +trim(frm_op_seae.t_op_seae.fieldbyname('重量').asstring) +':::' // 第一层包装尺码 +#39); IF trim(frm_op_seae.t_op_seae.fieldbyname('货物标识').asstring)='R' THEN BEGIN str.Add ('43:' // 危险品、冷冻 +':' +':' +':' +':' +':' +':' +':' +'::' +trim(frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring) +':' +'C:' +trim(frm_op_seae.t_op_seae.fieldbyname('设置温度').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('最低温度').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('最高温度').asstring) +':' +'::::' +#39); END; IF trim(frm_op_seae.t_op_seae.fieldbyname('货物标识').asstring)='D'THEN BEGIN str.Add ('43:' // 危险品、冷冻 +trim(frm_op_seae.t_op_seae.fieldbyname('危险品分类').asstring) +':' +':' +trim(frm_op_seae.t_op_seae.fieldbyname('危险品编号').asstring) +':' +':' +':' +':' +':' +'::' +':' +':' +':' +':' +':::::' +#39); END; Str.Add(GetMARKSString); sl1.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('货物描述').AsString); GetLengthTString(sl1,47); sl.text:=''; for L:=0 to sl1.Count-1 do begin if Trim(sl1.Strings[L])<>'' then sl.Add(sl1.Strings[L]); end; M:=1; for L:=0 to sl.Count-1 do begin if M<=5 then begin if M=1 then begin s:='47:'+sl.Strings[L]+':'; end else begin if M=5 then s:=s+sl.Strings[L] else s:=s+sl.Strings[L]+':'; end; end else begin S:=S+''''; Str.Add(S); M:=1; s:='47:'+sl.Strings[L]+':'; end; M:=M+1; end; S:=S+''''; Str.Add(S); // Str.Add(GetCARGODESCRIPTIONString); Count:=Count+11; strRmain:=''; if (frm_op_seae.t_op_seae.fieldbyname('是否自有箱').AsBoolean) then strSoc:='Y' else strSoc:='N'; if trim(frm_op_seae.t_op_seae.fieldbyname('装运方式').asstring)='整箱' then begin if frm_data_share.t_crm_client_changzhan.locate('客户简称',frm_op_seae.t_op_seae.fieldbyname('场站').asstring,[])then begin strRmain:=strRmain+'F:'+':'+':'+frm_data_share.t_crm_client_changzhan.fieldbyname('EDI代码').asstring+':'+':'+strSoc+#39; end else begin strRmain:=strRmain+'F:'+':'+':'+':'+':'+strSoc+#39; end; strsql:='select 编号,代码,sum(数量) as 数量 from t_op_ctn group by 编号,代码 having 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; try rs:=Tadoquery.Create(application); rs.Connection := frm_main.db; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; while not rs.Eof do begin str.Add ('48:'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring))+':'+ trim(rs.fieldbyname('数量').asstring)+':'+ strRmain); Count:=Count+1; rs.Next; end; { strsql:='select * from t_op_ctn where 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; rs.Close; rs.sql.clear; rs.sql.add(strsql); rs.Open; if not rs.IsEmpty then begin if rs.FieldByName('件数').AsInteger>0 then begin rs.First; while not rs.Eof do begin str.Add ('51:'+trim(rs.fieldbyname('箱号').asstring)+':'+Trim(GetCntrEdi(rs.fieldbyname('尺寸').asstring,rs.fieldbyname('箱型').asstring))+':'+ trim(rs.fieldbyname('封号').asstring)+':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+':'+'''' ); rs.Next; end; end; end; } rs.Close; rs.Destroy; except on e:exception do begin rs.Close; rs.Destroy; exit; end; end; end else begin if frm_data_share.t_crm_client_changzhan.locate('客户简称',frm_op_seae.t_op_seae.fieldbyname('场站').asstring,[])then begin strRmain:=strRmain+'L:'+':'+':'+frm_data_share.t_crm_client_changzhan.fieldbyname('EDI代码').asstring+':'+':'+strSoc+#39; end else begin strRmain:=strRmain+'L:'+':'+':'+':'+':'+strSoc+#39; end; str.Add('48:'+':'+':'+strRmain); Count:=Count+1; end; str.Add('90:' + trim(Edit1.text)+':' + trim(edit3.text) +':' + trim(edit8.text)+':' + trim(edit9.text)+':' + trim(edit10.text)+':' + trim(edit11.text)+':' + trim(edit12.text) +#39); I:=str.Count; str.Add('99:'+intToStr(i+1)+''''); Result:=str; end; function Tfrm_op_seae_edi_hyundai.CreateZHUEdiFile:TStrings; var str,sl,sl1:Tstringlist; i,j,Count,l,M:integer; first:Boolean; strsql,strRmain,strtemp,strhead,strSoc:string; rs,aQuery:Tadoquery; wide_str:widestring; k:integer; strType,s:string; strDatetime:string; SenderCode,ReciverCode:string; function GetRemarksString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('EDI备注').AsString); GetLengthTString(TempStr,70); Result:='17:'; Result:=Result+FormatListString(TempStr,5,70)+''''; finally FreeAndNil(TempStr); end; end; function GetShipperString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(aQuery.fieldbyname('发货人代码').AsString); GetLengthTString(TempStr,35); Result:='20:'; Result:=Result+':'; Result:=Result+FormatListString(TempStr,6,35)+''''; finally FreeAndNil(TempStr); end; end; function GetConsigneString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(aQuery.fieldbyname('收货人代码').AsString); GetLengthTString(TempStr,35); Result:='21:'; Result:=Result+':'; Result:=Result+FormatListString(TempStr,6,35)+''''; finally FreeAndNil(TempStr); end; end; function GetNOTIFYString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(aQuery.fieldbyname('通知人代码').AsString); GetLengthTString(TempStr,35); Result:='22:'; Result:=Result+':'; Result:=Result+FormatListString(TempStr,6,35)+''''; finally FreeAndNil(TempStr); end; end; function GetMARKSString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(aQuery.fieldbyname('唛头').AsString); GetLengthTString(TempStr,35); Result:='44:'; Result:=Result+FormatListString(TempStr,10,35)+''''; finally FreeAndNil(TempStr); end; end; begin SenderCode:=trim(edit1.Text) ; ReciverCode:=trim(edit2.Text) ; if bsSkinRadioGroup1.ItemIndex=0 then strType:='9' else if bsSkinRadioGroup1.ItemIndex=1 then strType:='2' else if bsSkinRadioGroup1.ItemIndex=2 then strType:='3' else if bsSkinRadioGroup1.ItemIndex=3 then strType:='4' else strType:='9'; str:=Tstringlist.Create; sl:=Tstringlist.Create; sl1:=Tstringlist.Create; str.Clear; str.Add('00:IFTMBF:BOOKING:'+trim(strType)+':'+ SenderCode+':'+ReciverCode+':'+GetDatetime(datetimetostr(now),1)+#39); Count:=0; aQuery:=CreateAdoQuery; try aQuery.Close;aQuery.sql.Clear; aQuery.SQL.Add('select * from t_op_seae where 主编号=:编号 and 主编号<>编号'); aQuery.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; aQuery.Open; if not aQuery.IsEmpty then begin if not isEditrue(aQuery) then exit; aQuery.first; first:=true; while not aQuery.eof do begin if first then begin str.Add ('02:'+ trim(frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring)+':' + trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring) +':' + trim(aQuery.fieldbyname('运输条款').asstring) +'::' + 'HMM:' + ':::::::' + '::' + trim(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+':' +':'+ #39); end else begin str.Add ('02:'+ trim(aQuery.fieldbyname('业务编号').asstring)+':' + trim(aQuery.fieldbyname('主提单号').asstring) +':' + trim(aQuery.fieldbyname('运输条款').asstring) +':' + trim(t_op_ams.fieldbyname('订舱人说明').asstring) +':' + 'HMM:' + ':::::::' + '::' + trim(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+':' +':'+ #39); { str.Add ('02:'+ trim(aQuery.fieldbyname('业务编号').asstring)+':' + trim(aQuery.fieldbyname('主提单号').asstring) +':' + trim(aQuery.fieldbyname('运输条款').asstring) +'::' + ReciverCode +':' + ':::::::' + trim(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+':' +':::'+ #39); } end; IF (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)<>'正本') and (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)<>'电子提单') then //提单类型 strtemp:='EXP' else strtemp:='ORI'; str.add('03:'+strtemp+':' +':' + trim(aQuery.fieldbyname('签单地点').asstring) +':' + GetDatetime(trim(aQuery.fieldbyname('签单日期').asstring),0)+':' + get_fenshu(trim(aQuery.fieldbyname('提单份数').asstring),MblLength)+':' + trim(aQuery.fieldbyname('预付地点').asstring) +':' + trim(aQuery.fieldbyname('预付地点').asstring) +#39); str.Add('11:' + trim(frm_op_seae.t_op_seae.fieldbyname('发货人编号').asstring)+':' + trim(aQuery.fieldbyname('船名').asstring) +':' + trim(aQuery.fieldbyname('航次').asstring)+':' +'::' + ReciverCode +':' + '::::::' +#39); //船舶经营人 str.Add ('12:'+trim(aQuery.fieldbyname('装港代码').asstring)+':' +trim(aQuery.fieldbyname('装货港').asstring)+':' +trim(aQuery.fieldbyname('装港代码').asstring)+':' +trim(aQuery.fieldbyname('装货港').asstring)+':' +trim(aQuery.fieldbyname('卸货代码').asstring) +':' +trim(aQuery.fieldbyname('卸货港').asstring)+':' +':' +':' +trim(aQuery.fieldbyname('交货代码').asstring) +':' +trim(aQuery.fieldbyname('交货地点').asstring) +':' +trim(aQuery.fieldbyname('目的地代码').asstring) +':' +trim(aQuery.fieldbyname('目的地').asstring) +#39); if frm_data_share.t_code_free.locate('付费方式',aQuery.fieldbyname('付费方式').asstring,[]) then begin str.Add ('14:'+frm_data_share.t_code_free.fieldbyname('代码').asstring+':' +trim(aQuery.fieldbyname('付费方式').asstring)+#39); str.Add('15:' +'::' +trim(frm_data_share.t_code_free.fieldbyname('代码').asstring)+':' +'::' + '::::' +#39); //船舶经营人 end else begin str.Add ('14:'+'P'+':' +trim(aQuery.fieldbyname('付费方式').asstring)+#39); str.Add('15:' +'::' +'P:' +'::' + '::::' +#39); //船舶经营人 end; Str.Add(GetRemarksString); Str.Add(GetShipperString); Str.Add(GetConsigneString); Str.Add(GetNOTIFYString); str.Add ('41:1:'+trim(aQuery.fieldbyname('运输方式').asstring)+':' +trim(aQuery.fieldbyname('货物标识').asstring)+':' // 货物标识 S/R/D/O +trim(aQuery.fieldbyname('件数').asstring) +':' +trim(GetpkgsEdi(aQuery.fieldbyname('包装').asstring))+':' +trim(aQuery.fieldbyname('包装').asstring) +':' //第一层包装说明 +trim(aQuery.fieldbyname('总价').asstring) +':' //第一层包装说明 +trim(aQuery.fieldbyname('尺码').asstring) +'::::::' // 第一层包装皮重 +trim(aQuery.fieldbyname('重量').asstring) +':::' // 第一层包装尺码 +#39); IF trim(aQuery.fieldbyname('货物标识').asstring)='R'THEN BEGIN str.Add ('43:' // 危险品、冷冻 +':' +':' +':' +':' +':' +':' +':' +'::' +trim(aQuery.fieldbyname('冷藏通风量').asstring) +':' +'C:' +trim(aQuery.fieldbyname('设置温度').asstring) +':' +trim(aQuery.fieldbyname('最低温度').asstring) +':' +trim(aQuery.fieldbyname('最高温度').asstring) +':' +'::::' +#39); END; IF trim(aQuery.fieldbyname('货物标识').asstring)='D'THEN BEGIN str.Add ('43:' // 危险品、冷冻 +trim(aQuery.fieldbyname('危险品分类').asstring) +':' +':' +trim(aQuery.fieldbyname('危险品编号').asstring) +':' +':' +':' +':' +':' +'::' +':' +':' +':' +':' +':::::' +#39); END; Str.Add(GetMARKSString); // Str.Add(GetCARGODESCRIPTIONString); sl1.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('货物描述').AsString); GetLengthTString(sl1,70); sl.text:=''; for L:=0 to sl1.Count-1 do begin if Trim(sl1.Strings[L])<>'' then sl.Add(sl1.Strings[L]); end; M:=1; for L:=0 to sl.Count-1 do begin if M<=5 then begin if M=1 then begin s:='47:'+FormatEdiString(sl.Strings[L],0)+':'; end else begin if M=5 then s:=s+FormatEdiString(sl.Strings[L],0) else s:=s+FormatEdiString(sl.Strings[L],0)+':'; end; end else begin S:=S+''''; Str.Add(S); M:=1; s:='47:'+FormatEdiString(sl.Strings[L],0)+':'; end; M:=M+1; end; S:=S+''''; Str.Add(S); Count:=Count+11; strRmain:=''; if (frm_op_seae.t_op_seae.fieldbyname('是否自有箱').AsBoolean) then strSoc:='Y' else strSoc:='N'; if first then strRmain:=strRmain+'L:'+':'+':'+':'+':'+'N'+#39 else strRmain:=strRmain+'L:'+trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring)+':'+':'+':'+':'+strSoc+#39; strsql:='select 编号,代码,sum(数量) as 数量 from t_op_ctn group by 编号,代码 having 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; try rs:=Tadoquery.Create(application); rs.Connection := frm_main.db; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; while not rs.Eof do begin str.Add ('48:'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring))+':'+ trim(rs.fieldbyname('数量').asstring)+':'+ strRmain); Count:=Count+1; rs.Next; end; { strsql:='select * from t_op_ctn where 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; rs.Close; rs.sql.clear; rs.sql.add(strsql); rs.Open; if not rs.IsEmpty then begin if rs.FieldByName('件数').AsInteger>0 then begin rs.First; while not rs.Eof do begin str.Add ('51:'+trim(rs.fieldbyname('箱号').asstring)+':'+Trim(GetCntrEdi(rs.fieldbyname('尺寸').asstring,rs.fieldbyname('箱型').asstring))+':'+ trim(rs.fieldbyname('封号').asstring)+':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+':'+'''' ); rs.Next; end; end; end; } rs.Close; rs.Destroy; except on e:exception do begin rs.Close; rs.Destroy; exit; end; end; aQuery.Next; first:=False; end; end; finally FreeAndNil(aQuery); end; str.Add('90:' + trim(Edit1.text)+':' + trim(edit3.text) +':' + trim(edit8.text)+':' + trim(edit9.text)+':' + trim(edit10.text)+':' + trim(edit11.text)+':' + trim(edit12.text) +#39); I:=str.Count; str.Add('99:'+intToStr(i+1)+''''); Result:=str; end; function Tfrm_op_seae_edi_hyundai.CreateSIEdiFile:TStrings; var str,sl,sl1:Tstringlist; i,j,Count,l,M:integer; strsql,strRmain,strtemp,S,fenshu,strSoc:string; rs:Tadoquery; wide_str,str_shr,str_con,str_not:widestring; k:integer; strType:string; strDatetime:string; SenderCode,ReciverCode:string; firstcon:boolean; function GetAMSSHIPPERString:String; var TempStr:TStringList; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(t_op_ams.fieldbyname('AMS发货人').AsString); GetLengthTString(TempStr,35); Result:='23:'; Result:=Result+':'; Result:=Result+FormatListString(TempStr,6,35)+''''; finally FreeAndNil(TempStr); end; end; function GetRemarksString:String; var TempStr:TStringlist; begin TempStr:=TStringList.Create; try if not bsSkinCheckRadioBox2.Checked then TempStr.Text:=FormatEdiString(t_op_ams.fieldbyname('SI备注').AsString) else TempStr.Text:=FormatEdiString(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('EDI备注').AsString); GetLengthTString(TempStr,70); Result:='17:'; Result:=Result+FormatListString(TempStr,5,70)+''''; finally FreeAndNil(TempStr); end; end; begin SenderCode:=trim(edit1.Text) ; ReciverCode:=trim(edit2.Text) ; if bsSkinRadioGroup1.ItemIndex=0 then strType:='9' else if bsSkinRadioGroup1.ItemIndex=1 then strType:='2' else if bsSkinRadioGroup1.ItemIndex=2 then strType:='3' else if bsSkinRadioGroup1.ItemIndex=3 then strType:='4' else strType:='9'; if Trim(Edit15.Text)<>'' then IntMarksRowCount:=StrToInt(Trim(Edit15.Text)) else IntMarksRowCount:=9; if Trim(Edit16.Text)<>'' then IntGoodsRowCount:=StrToInt(Trim(Edit16.Text)) else IntGoodsRowCount:=5; if Trim(Edit17.Text)<>'' then MblLength:=StrToInt(Trim(Edit17.Text)) else MblLength:=2; str:=Tstringlist.Create; sl:=Tstringlist.Create; sl1:=Tstringlist.Create; if bsSkinCheckRadioBox2.Checked then with t_op_seae_assistant do begin Close; SQL.Clear; SQL.Add('select * from t_op_seae_assistant where AS_ID='''+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('AS_ID').AsString+''''); open; end; str.Clear; str.Add('00:IFTMIN:Shipping Request:'+trim(strType)+':'+ SenderCode+':'+ReciverCode+':'+GetDatetime(datetimetostr(now),1)+#39); Count:=0; if not bsSkinCheckRadioBox2.Checked then //主单 begin str.Add ('02:'+ trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring)+':' + trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring) +':' + trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring) +':' + trim(t_op_ams.fieldbyname('订舱人说明').asstring) +':' + 'HMM:' + ':::::::' + '::' + trim(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+':' +':'+ #39); IF (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='正本') or (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='电子提单') then begin //提单类型 strtemp:='ORI'; fenshu:=get_fenshu(trim(frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring),MblLength); end else begin strtemp:='EXP'; fenshu:='0'; end; end else begin str.Add ('02:'+ trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring)+':' + trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('主提单号').asstring) +':' + trim(frm_op_seae.t_op_seae.fieldbyname('运输条款').asstring) +':' + trim(t_op_ams.fieldbyname('订舱人说明').asstring) +':' + 'HMM:' + ':::::::' + '::' + trim(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+':' +':'+ #39); IF (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='正本') or (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='电子提单') then begin //提单类型 strtemp:='ORI'; fenshu:=get_fenshu(trim(frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring),MblLength); end else begin strtemp:='EXP'; fenshu:='0'; end; end; str.add('03:'+strtemp+':' +':' + trim(frm_op_seae.t_op_seae.fieldbyname('签单地点').asstring) +':' + GetDatetime(trim(frm_op_seae.t_op_seae.fieldbyname('签单日期').asstring),0)+':' + get_fenshu(trim(frm_op_seae.t_op_seae.fieldbyname('提单份数').asstring),MblLength)+':' + trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring)+':' + trim(frm_op_seae.t_op_seae.fieldbyname('预付地点').asstring)+':' + trim(t_op_ams.fieldbyname('美国AMS标志').asstring) +':' + trim(t_op_ams.fieldbyname('加拿大AMS标志').asstring) +#39); str.Add('11:' + trim(GetvesselEdi(frm_op_seae.t_op_seae.fieldbyname('船名').asstring))+':' + trim(frm_op_seae.t_op_seae.fieldbyname('船名').asstring) +':' + trim(frm_op_seae.t_op_seae.fieldbyname('航次').asstring)+':' +'::' + ReciverCode +':' + '::::::' +#39); //船舶经营人 str.Add ('12:'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring)+':' +':' +':' +trim(frm_op_seae.t_op_seae.fieldbyname('交货代码').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('交货地点').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring) +#39); if frm_data_share.t_code_free.locate('付费方式',frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring,[]) then begin str.Add ('14:'+frm_data_share.t_code_free.fieldbyname('代码').asstring+':' +trim(frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)+#39); str.Add('15:' +'::' +trim(frm_data_share.t_code_free.fieldbyname('代码').asstring)+':' +'::' + '::::' +#39); //船舶经营人 end else begin str.Add ('14:'+'P'+':' +trim(frm_op_seae.t_op_seae.fieldbyname('付费方式').asstring)+#39); str.Add('15:' +'::' +'P:' +'::' + '::::' +#39); //船舶经营人 end; Str.Add(GetRemarksString); if (bsSkinCheckRadioBox2.Checked) and (not t_op_seae_assistant.IsEmpty) then sl1.Text:=FormatEdiString(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('发货人代码').asstring) else sl1.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('发货人代码').asstring); GetLengthTString(sl1,35); strtemp:='20::'+sl1[0]+':'; if sl1.Count>=2 then strtemp:=strtemp+sl1[1]; if (sl1.Count>=3) and (sl1.Count<=6) then begin for j:=2 to sl1.Count-1 do begin strtemp:=strtemp+':'+sl1[j] end; end; if sl1.Count>6 then begin for j:=2 to 4 do begin strtemp:=strtemp+':'+sl1[j] end; s:=''; strtemp:=strtemp+':'+GetLengthword(s,34,sl1[5])+'+'; Str_shr:='+'+S; for j:=6 to sl1.Count-1 do begin Str_shr:=Str_shr+' '+sl1[j] end; { strtemp:=strtemp+':'+Copy(sl1[4],1,34)+'*'; Str_shr:='*'+Copy(sl1[4],34,1); for j:=5 to sl1.Count-1 do begin Str_shr:=Str_shr+' '+sl1[j] end; } end; strtemp:=strtemp+#39; str.Add(strtemp); count:=count+1; if (bsSkinCheckRadioBox2.Checked) and (not t_op_seae_assistant.IsEmpty) then sl1.Text:=FormatEdiString(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('收货人代码').asstring) else sl1.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('收货人代码').asstring); GetLengthTString(sl1,35); strtemp:='21::'+sl1[0]+':'; if sl1.Count>=2 then strtemp:=strtemp+sl1[1]; if (sl1.Count>=3) and (sl1.Count<=6) then begin for j:=2 to sl1.Count-1 do begin strtemp:=strtemp+':'+sl1[j] end; end; if sl1.Count>6 then begin for j:=2 to 4 do begin strtemp:=strtemp+':'+sl1[j] end; s:=''; strtemp:=strtemp+':'+GetLengthword(s,33,sl1[5])+'++'; Str_con:='++'+S; for j:=6 to sl1.Count-1 do begin Str_con:=Str_con+' '+sl1[j] end; { strtemp:=strtemp+':'+Copy(sl1[4],1,33)+'**'; Str_con:='**'+Copy(sl1[4],33,2); for j:=5 to sl1.Count-1 do begin Str_con:=Str_con+' '+sl1[j] end; } end; strtemp:=strtemp+#39; str.Add(strtemp); count:=count+1; if (bsSkinCheckRadioBox2.Checked) and (not t_op_seae_assistant.IsEmpty) then sl1.Text:=FormatEdiString(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('通知人代码').asstring) else sl1.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('通知人代码').asstring); GetLengthTString(sl1,35); strtemp:='22::'+sl1[0]+':'; if sl1.Count>=2 then strtemp:=strtemp+sl1[1]; if (sl1.Count>=3) and (sl1.Count<=6) then begin for j:=2 to sl1.Count-1 do begin strtemp:=strtemp+':'+sl1[j] end; end; if sl1.Count>6 then begin for j:=2 to 4 do begin strtemp:=strtemp+':'+sl1[j] end; s:=''; strtemp:=strtemp+':'+GetLengthword(s,32,sl1[5])+'+++'; Str_not:='+++'+S; for j:=6 to sl1.Count-1 do begin Str_not:=Str_not+' '+sl1[j] end; { strtemp:=strtemp+':'+Copy(sl1[4],1,32)+'***'; Str_not:='***'+Copy(sl1[4],32,3); for j:=5 to sl1.Count-1 do begin Str_not:=Str_not+' '+sl1[j] end; } end; strtemp:=strtemp+#39; str.Add(strtemp); count:=count+1; if (frm_op_seae.t_op_seae.fieldbyname('第二通知人').asstring<>'') then begin sl1.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('第二通知人').asstring); GetLengthTString(sl1,35); strtemp:='23::'+sl1[0]+':'; if sl1.Count>=2 then strtemp:=strtemp+sl1[1]; if (sl1.Count>=3) and (sl1.Count<=6) then begin for j:=2 to sl1.Count-1 do begin strtemp:=strtemp+':'+sl1[j] end; end; if sl1.Count>6 then begin for j:=2 to 4 do begin strtemp:=strtemp+':'+sl1[j] end; s:=''; strtemp:=strtemp+':'+GetLengthword(s,33,sl1[5])+'++'; Str_con:='++'+S; for j:=6 to sl1.Count-1 do begin Str_con:=Str_con+' '+sl1[j] end; end; strtemp:=strtemp+#39; str.Add(strtemp); count:=count+1; end; if (t_op_ams.fieldbyname('AMS发货人').AsString<>'') then Str.Add(GetAMSSHIPPERString); if not bsSkinCheckRadioBox2.Checked then begin str.Add ('41:1:'+trim(frm_op_seae.t_op_seae.fieldbyname('运输方式').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('货物标识').asstring)+':' // 货物标识 S/R/D/O +trim(frm_op_seae.t_op_seae.fieldbyname('件数').asstring) +':' +trim(GetpkgsEdi(frm_op_seae.t_op_seae.fieldbyname('包装').asstring))+':' +trim(frm_op_seae.t_op_seae.fieldbyname('包装').asstring) +':' //第一层包装说明 +trim(frm_op_seae.t_op_seae.fieldbyname('总价').asstring) +':' //第一层包装说明 +trim(frm_op_seae.t_op_seae.fieldbyname('尺码').asstring) +'::::::' // 第一层包装皮重 +trim(frm_op_seae.t_op_seae.fieldbyname('重量').asstring) +':::' // 第一层包装尺码 +#39); end else begin str.Add ('41:1:'+trim(frm_op_seae.t_op_seae.fieldbyname('运输方式').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('货物标识').asstring)+':' // 货物标识 S/R/D/O +trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('件数').asstring) +':' +trim(GetpkgsEdi(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('包装').asstring))+':' +trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('包装').asstring) +':' //第一层包装说明 +trim(frm_op_seae.t_op_seae.fieldbyname('总价').asstring) +':' //第一层包装说明 +trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('尺码').asstring) +'::::::' // 第一层包装皮重 +trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('重量').asstring) +':::' // 第一层包装尺码 +#39); end; IF trim(frm_op_seae.t_op_seae.fieldbyname('货物标识').asstring)='R' THEN BEGIN str.Add ('43:' // 危险品、冷冻 +':' +':' +':' +':' +':' +':' +':' +'::' +trim(frm_op_seae.t_op_seae.fieldbyname('冷藏通风量').asstring) +':' +'C:' +trim(frm_op_seae.t_op_seae.fieldbyname('设置温度').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('最低温度').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('最高温度').asstring) +':' +'::::' +#39); END; IF trim(frm_op_seae.t_op_seae.fieldbyname('货物标识').asstring)='D'THEN BEGIN str.Add ('43:' // 危险品、冷冻 +trim(frm_op_seae.t_op_seae.fieldbyname('危险品分类').asstring) +':' +':' +trim(frm_op_seae.t_op_seae.fieldbyname('危险品编号').asstring) +':' +':' +':' +':' +':' +'::' +':' +':' +':' +':' +':::::' +#39); END; if (bsSkinCheckRadioBox2.Checked) and (not t_op_seae_assistant.IsEmpty) then sl.Text:=FormatEdiString(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('唛头').asstring) else sl.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('唛头').AsString); GetLengthTString(sl,35); M:=1; for L:=0 to sl.Count-1 do begin if M<=IntMarksRowCount then begin if M=1 then begin s:='44:'+sl.Strings[L]+':'; end else begin if M=IntMarksRowCount then s:=s+sl.Strings[L] else s:=s+sl.Strings[L]+':'; end; end else begin S:=S+''''; Str.Add(S); M:=1; s:='44:'+sl.Strings[L]+':'; end; M:=M+1; end; S:=S+''''; Str.Add(S); { LJP for L:=0 to sl.Count-1 do begin if M<=10 then begin if M=1 then begin s:='44:'+sl.Strings[L]+':'; end else begin if M=10 then s:=s+sl.Strings[L] else s:=s+sl.Strings[L]+':'; end; end else begin S:=S+''''; Str.Add(S); M:=1; s:='44:'+sl.Strings[L]+':'; end; M:=M+1; end; S:=S+''''; Str.Add(S); } if (bsSkinCheckRadioBox2.Checked) and (not frm_op_seae_assistant.t_op_seae_assistant.IsEmpty) then sl1.Text:=FormatEdiString(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('货物描述').asstring) else sl1.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('货物描述').AsString); if str_shr<>'' then begin sl1.Add(str_shr) end; if str_con<>'' then begin sl1.Add(str_con) end; if str_not<>'' then begin sl1.Add(str_not) end; GetLengthTString(sl1,70); sl.text:=''; for L:=0 to sl1.Count-1 do begin sl.Add(sl1.Strings[L]); end; M:=1; for L:=0 to sl.Count-1 do begin if M<=IntGoodsRowCount then begin if M=1 then begin s:='47:'+sl.Strings[L]+':'; end else begin if M=IntGoodsRowCount then s:=s+sl.Strings[L] else s:=s+sl.Strings[L]+':'; end; end else begin S:=S+''''; Str.Add(S); M:=1; s:='47:'+sl.Strings[L]+':'; end; M:=M+1; end; S:=S+''''; Str.Add(S); // Str.Add(GetCARGODESCRIPTIONString); Count:=Count+11; strRmain:=''; if (frm_op_seae.t_op_seae.fieldbyname('是否自有箱').AsBoolean) then strSoc:='Y' else strSoc:='N'; if trim(frm_op_seae.t_op_seae.fieldbyname('装运方式').asstring)='整箱' then begin if frm_data_share.t_crm_client_changzhan.locate('客户简称',frm_op_seae.t_op_seae.fieldbyname('场站').asstring,[])then begin if not bsSkinCheckRadioBox2.Checked then strRmain:=strRmain+'F:'+':'+':'+frm_data_share.t_crm_client_changzhan.fieldbyname('EDI代码').asstring+':'+':'+strSoc+#39 else strRmain:=strRmain+'L:'+trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring)+':'+':'+frm_data_share.t_crm_client_changzhan.fieldbyname('EDI代码').asstring+':'+':'+'N'+#39; end else begin if not bsSkinCheckRadioBox2.Checked then strRmain:=strRmain+'F:'+':'+':'+':'+':'+strSoc+#39 else strRmain:=strRmain+'L:'+trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring)+':'+':'+':'+':'+strSoc+#39; end; if not bsSkinCheckRadioBox2.Checked then begin strsql:='select 编号,代码,sum(数量) as 数量 from t_op_ctn group by 编号,代码 having 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; end else begin strsql:='select as_id,代码,sum(数量) as 数量 from t_op_ctn_fendan group by as_id,代码 having as_id=' +#39+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('as_id').asstring+#39; end; try rs:=Tadoquery.Create(application); rs.Connection := frm_main.db; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; while not rs.Eof do begin str.Add ('48:'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring))+':'+ trim(rs.fieldbyname('数量').asstring)+':'+ strRmain); Count:=Count+1; rs.Next; end; if not bsSkinCheckRadioBox2.Checked then begin strsql:='select * from t_op_ctn where 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; end else begin strsql:='select * from t_op_ctn_fendan where as_id=' +#39+frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('as_id').asstring+#39; end; rs.Close; rs.sql.clear; rs.sql.add(strsql); rs.Open; firstcon:=true; if not rs.IsEmpty then begin rs.First; while not rs.Eof do begin if pos('FR',rs.fieldbyname('箱型').asstring)>0 then begin if firstcon then str.Add ('51:'+trim(rs.fieldbyname('箱号').asstring)+':'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring)) +':NIL'+':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+'::' +trim(floatToStr(rs.fieldbyname('尺码').Asfloat))+':'+'''') else str.Add ('51:'+trim(rs.fieldbyname('箱号').asstring)+':'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring)) +':NIL'+':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+'::' +trim(floatToStr(rs.fieldbyname('尺码').Asfloat))+':'+''''); end else begin if firstcon then str.Add ('51:'+trim(rs.fieldbyname('箱号').asstring)+':'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring))+':'+ trim(rs.fieldbyname('封号').asstring)+':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+'::' +trim(floatToStr(rs.fieldbyname('尺码').Asfloat))+':'+'''') else str.Add ('51:'+trim(rs.fieldbyname('箱号').asstring)+':'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring))+':'+ trim(rs.fieldbyname('封号').asstring)+':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+'::' +trim(floatToStr(rs.fieldbyname('尺码').Asfloat))+':'+''''); end; firstcon:=false; rs.Next; end; if not bsSkinCheckRadioBox2.Checked then begin with t_op_edictn do begin Close; SQL.Clear; SQL.Add('select d.件数,d.HTS,d.重量,d.货物描述,d.包装,d.尺码,c.箱号,c.封号 from t_op_ctn_detail d left join t_op_ctn c on (c.ctn_id=d.ctn_id) where c.编号='''+frm_op_seae.t_op_seae.fieldbyname('编号').AsString+''''); open; if not IsEmpty then begin first; while not eof do begin str.Add ('53:'+trim(fieldbyname('箱号').asstring)+':'+trim(fieldbyname('HTS').asstring)+':'+trim(FormatEdiString(fieldbyname('货物描述').asstring)) +':'+trim(GetpkgsEdi(fieldbyname('包装').asstring))+':'+trim(IntToStr(fieldbyname('件数').AsInteger))+':' +trim(FloatToStr(fieldbyname('重量').AsFloat))+''''); next; end; end else begin rs.First; while not rs.Eof do begin str.Add ('53:'+trim(rs.fieldbyname('箱号').asstring)+':'+frm_op_seae.t_op_seae.fieldbyname('运输方式').asstring+':'+trim(rs.fieldbyname('品名').asstring)+':'+trim(GetpkgsEdi(rs.fieldbyname('包装').asstring)) +':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+''''); rs.Next; end; end; end; end else begin rs.First; while not rs.Eof do begin str.Add ('53:'+trim(rs.fieldbyname('箱号').asstring)+':'+trim(frm_op_seae_assistant.t_op_seae_assistant.fieldbyname('HS编码').asstring)+':'+trim(FormatEdiString(rs.fieldbyname('品名').asstring)) +':'+trim(GetpkgsEdi(rs.fieldbyname('包装').asstring))+':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':' +trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+''''); rs.Next; end; end; { with t_op_edictn do begin Close; SQL.Clear; SQL.Add('select * from t_op_edictn where 编号='''+frm_op_seae.t_op_seae.fieldbyname('编号').AsString+''''); open; if not IsEmpty then begin first; while not eof do begin str.Add ('53:'+trim(fieldbyname('箱号').asstring)+':'+trim(fieldbyname('HTS').asstring)+':'+trim(fieldbyname('货物描述').asstring) +':'+trim(GetpkgsEdi(fieldbyname('包装').asstring))+':'+trim(IntToStr(fieldbyname('件数').AsInteger))+':' +trim(FloatToStr(fieldbyname('重量').AsFloat))+':'+trim(fieldbyname('货值').asstring)+':'+trim(fieldbyname('金额类型代码').Asstring)+''''); next; end; end else begin rs.First; while not rs.Eof do begin str.Add ('53:'+trim(rs.fieldbyname('箱号').asstring)+'::'+trim(rs.fieldbyname('品名').asstring)+':'+trim(GetpkgsEdi(rs.fieldbyname('包装').asstring)) +trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+''''); rs.Next; end; end; end; } end; rs.Close; rs.Destroy; except on e:exception do begin rs.Close; rs.Destroy; exit; end; end; end else begin if frm_data_share.t_crm_client_changzhan.locate('客户简称',frm_op_seae.t_op_seae.fieldbyname('场站').asstring,[])then begin strRmain:=strRmain+'L:'+':'+':'+frm_data_share.t_crm_client_changzhan.fieldbyname('EDI代码').asstring+':'+':'+strSoc+#39; end else begin strRmain:=strRmain+'L:'+':'+':'+':'+':'+'N'+#39; end; str.Add('48:'+':'+':'+strRmain); Count:=Count+1; end; str.Add('90:' + trim(Edit1.text)+':' + trim(edit3.text) +':' + trim(edit8.text)+':' + trim(edit9.text)+':' + trim(edit10.text)+':' + trim(edit11.text)+':' + trim(edit12.text) +#39); I:=str.Count; str.Add('99:'+intToStr(i+1)+''''); Result:=str; end; function Tfrm_op_seae_edi_hyundai.CreateSIZHUEdiFile:TStrings; var sl,sl1,str:Tstringlist; i,j,Count,l,M:integer; first:Boolean; strsql,strRmain,strtemp:string; rs,aQuery:Tadoquery; wide_str,str_shr,str_con,str_not:widestring; k:integer; strType,s:string; strDatetime:string; SenderCode,ReciverCode:string; function GetRemarksString:String; var TempStr:TStringlist; begin TempStr:=TStringList.Create; try TempStr.Text:=FormatEdiString(t_op_ams.fieldbyname('SI备注').AsString); GetLengthTString(TempStr,70); Result:='17:'; Result:=Result+FormatListString(TempStr,5,70)+''''; finally FreeAndNil(TempStr); end; end; begin SenderCode:=trim(edit1.Text) ; ReciverCode:=trim(edit2.Text) ; if bsSkinRadioGroup1.ItemIndex=0 then strType:='9' else if bsSkinRadioGroup1.ItemIndex=1 then strType:='2' else if bsSkinRadioGroup1.ItemIndex=2 then strType:='3' else if bsSkinRadioGroup1.ItemIndex=3 then strType:='4' else strType:='9'; str:=Tstringlist.Create; sl:=Tstringlist.Create; sl1:=Tstringlist.Create; str.Clear; str.Add('00:IFTMIN:BOOKING:'+trim(strType)+':'+ SenderCode+':'+ReciverCode+':'+GetDatetime(datetimetostr(now),1)+#39); Count:=0; aQuery:=CreateAdoQuery; try aQuery.Close;aQuery.sql.Clear; aQuery.SQL.Add('select * from t_op_seae where 主编号=:编号 and 主编号<>编号'); aQuery.Parameters.ParamByName('编号').Value:=frm_op_seae.t_op_seae.fieldbyname('编号').asstring; aQuery.Open; if not aQuery.IsEmpty then begin if not isEditrue(aQuery) then exit; aQuery.first; first:=true; while not aQuery.eof do begin if bsSkinCheckRadioBox2.Checked then with t_op_seae_assistant do begin Close; SQL.Clear; SQL.Add('select * from t_op_seae_assistant where 编号='''+aQuery.fieldbyname('编号').AsString+''''); open; end; if first then begin str.Add ('02:'+ trim(frm_op_seae.t_op_seae.fieldbyname('业务编号').asstring)+':' + trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring) +':' + trim(aQuery.fieldbyname('运输条款').asstring) +'::' + 'HMM:' + ':::::::' + '::' + trim(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+':' +':'+ #39); end else begin str.Add ('02:'+ trim(aQuery.fieldbyname('业务编号').asstring)+':' + trim(aQuery.fieldbyname('主提单号').asstring) +':' + trim(aQuery.fieldbyname('运输条款').asstring) +':' + trim(t_op_ams.fieldbyname('订舱人说明').asstring) +':' + 'HMM:' + ':::::::' + '::' + trim(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+':' +':'+ #39); { str.Add ('02:'+ trim(aQuery.fieldbyname('业务编号').asstring)+':' + trim(aQuery.fieldbyname('主提单号').asstring) +':' + trim(aQuery.fieldbyname('运输条款').asstring) +'::' + ReciverCode +':' + ':::::::' + trim(frm_op_seae.t_op_seae.fieldbyname('运费协议号').asstring)+':' +':::'+ #39); } end; IF (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='正本') or (trim(frm_op_seae.t_op_seae.fieldbyname('签单方式').asstring)='电子提单') then //提单类型 strtemp:='ORI' else strtemp:='EXP'; str.add('03:'+strtemp+':' +':' + trim(aQuery.fieldbyname('签单地点').asstring) +':' + GetDatetime(trim(aQuery.fieldbyname('签单日期').asstring),0)+':' + get_fenshu(trim(aQuery.fieldbyname('提单份数').asstring),MblLength)+':' + trim(aQuery.fieldbyname('预付地点').asstring) +':' + trim(aQuery.fieldbyname('预付地点').asstring) +#39); str.Add('11:' + trim(frm_op_seae.t_op_seae.fieldbyname('发货人编号').asstring)+':' + trim(aQuery.fieldbyname('船名').asstring) +':' + trim(aQuery.fieldbyname('航次').asstring)+':' +'::' + ReciverCode +':' + '::::::' +#39); //船舶经营人 str.Add ('12:'+trim(aQuery.fieldbyname('装港代码').asstring)+':' +trim(aQuery.fieldbyname('装货港').asstring)+':' +trim(aQuery.fieldbyname('装港代码').asstring)+':' +trim(aQuery.fieldbyname('装货港').asstring)+':' +trim(aQuery.fieldbyname('卸货代码').asstring) +':' +trim(aQuery.fieldbyname('卸货港').asstring)+':' +':' +':' +trim(aQuery.fieldbyname('交货代码').asstring) +':' +trim(aQuery.fieldbyname('交货地点').asstring) +':' +trim(aQuery.fieldbyname('目的地代码').asstring) +':' +trim(aQuery.fieldbyname('目的地').asstring) +#39); if frm_data_share.t_code_free.locate('付费方式',aQuery.fieldbyname('付费方式').asstring,[]) then begin str.Add ('14:'+frm_data_share.t_code_free.fieldbyname('代码').asstring+':' +trim(aQuery.fieldbyname('付费方式').asstring)+#39); str.Add('15:' +'::' +trim(frm_data_share.t_code_free.fieldbyname('代码').asstring)+':' +'::' + '::::' +#39); //船舶经营人 end else begin str.Add ('14:'+'P'+':' +trim(aQuery.fieldbyname('付费方式').asstring)+#39); str.Add('15:' +'::' +'P:' +'::' + '::::' +#39); //船舶经营人 end; Str.Add(GetRemarksString); if (bsSkinCheckRadioBox2.Checked) and (not t_op_seae_assistant.IsEmpty) then sl1.Text:=FormatEdiString(t_op_seae_assistant.fieldbyname('收货人代码').asstring) else sl1.Text:=FormatEdiString(aQuery.fieldbyname('发货人代码').asstring); GetLengthTString(sl1,35); strtemp:='20::'+sl1[0]+':'; if sl1.Count>=2 then strtemp:=strtemp+sl1[1]; if (sl1.Count>=3) and (sl1.Count<=5) then begin for j:=2 to sl1.Count-1 do begin strtemp:=strtemp+':'+sl1[j] end; end; if sl1.Count>5 then begin for j:=2 to 3 do begin strtemp:=strtemp+':'+sl1[j] end; strtemp:=strtemp+':'+Copy(sl1[4],1,34)+'+'; Str_shr:='+'+Copy(sl1[4],34,1); for j:=5 to sl1.Count-1 do begin Str_shr:=Str_shr+' '+sl1[j] end; end; strtemp:=strtemp+#39; str.Add(strtemp); count:=count+1; if (bsSkinCheckRadioBox2.Checked) and (not t_op_seae_assistant.IsEmpty) then sl1.Text:=FormatEdiString(t_op_seae_assistant.fieldbyname('收货人代码').asstring) else sl1.Text:=FormatEdiString(aQuery.fieldbyname('收货人代码').asstring); GetLengthTString(sl1,35); strtemp:='21::'+sl1[0]+':'; if sl1.Count>=2 then strtemp:=strtemp+sl1[1]; if (sl1.Count>=3) and (sl1.Count<=5) then begin for j:=2 to sl1.Count-1 do begin strtemp:=strtemp+':'+sl1[j] end; end; if sl1.Count>5 then begin for j:=2 to 3 do begin strtemp:=strtemp+':'+sl1[j] end; strtemp:=strtemp+':'+Copy(sl1[4],1,33)+'++'; Str_con:='++'+Copy(sl1[4],33,2); for j:=5 to sl1.Count-1 do begin Str_con:=Str_con+' '+sl1[j] end; end; strtemp:=strtemp+#39; str.Add(strtemp); count:=count+1; if (bsSkinCheckRadioBox2.Checked) and (not t_op_seae_assistant.IsEmpty) then sl1.Text:=FormatEdiString(t_op_seae_assistant.fieldbyname('通知人代码').asstring) else sl1.Text:=FormatEdiString(aQuery.fieldbyname('通知人代码').asstring); GetLengthTString(sl1,35); strtemp:='22::'+sl1[0]+':'; if sl1.Count>=2 then strtemp:=strtemp+sl1[1]; if (sl1.Count>=3) and (sl1.Count<=5) then begin for j:=2 to sl1.Count-1 do begin strtemp:=strtemp+':'+sl1[j] end; end; if sl1.Count>5 then begin for j:=2 to 3 do begin strtemp:=strtemp+':'+sl1[j] end; strtemp:=strtemp+':'+Copy(sl1[4],1,32)+'+++'; Str_not:='+++'+Copy(sl1[4],32,3); for j:=5 to sl1.Count-1 do begin Str_not:=Str_not+' '+sl1[j] end; end; strtemp:=strtemp+#39; str.Add(strtemp); count:=count+1; str.Add ('41:1:'+trim(aQuery.fieldbyname('运输方式').asstring)+':' +trim(aQuery.fieldbyname('货物标识').asstring)+':' // 货物标识 S/R/D/O +trim(aQuery.fieldbyname('件数').asstring) +':' +trim(GetpkgsEdi(aQuery.fieldbyname('包装').asstring))+':' +trim(aQuery.fieldbyname('包装').asstring) +':' //第一层包装说明 +trim(aQuery.fieldbyname('总价').asstring) +':' //第一层包装说明 +trim(aQuery.fieldbyname('尺码').asstring) +'::::::' // 第一层包装皮重 +trim(aQuery.fieldbyname('重量').asstring) +':::' // 第一层包装尺码 +#39); IF trim(aQuery.fieldbyname('货物标识').asstring)='R'THEN BEGIN str.Add ('43:' // 危险品、冷冻 +':' +':' +':' +':' +':' +':' +':' +'::' +trim(aQuery.fieldbyname('冷藏通风量').asstring) +':' +'C:' +trim(aQuery.fieldbyname('设置温度').asstring) +':' +trim(aQuery.fieldbyname('最低温度').asstring) +':' +trim(aQuery.fieldbyname('最高温度').asstring) +':' +'::::' +#39); END; IF trim(aQuery.fieldbyname('货物标识').asstring)='D'THEN BEGIN str.Add ('43:' // 危险品、冷冻 +trim(aQuery.fieldbyname('危险品分类').asstring) +':' +':' +trim(aQuery.fieldbyname('危险品编号').asstring) +':' +':' +':' +':' +':' +'::' +':' +':' +':' +':' +':::::' +#39); END; if (bsSkinCheckRadioBox2.Checked) and (not t_op_seae_assistant.IsEmpty) then sl.Text:=FormatEdiString(t_op_seae_assistant.fieldbyname('唛头').asstring) else sl.Text:=FormatEdiString(aQuery.fieldbyname('唛头').AsString); GetLengthTString(sl,35); M:=1; for L:=0 to sl.Count-1 do begin if M<=10 then begin if M=1 then begin s:='44:'+FormatEdiString(sl.Strings[L],0)+':'; end else begin if M=10 then s:=s+FormatEdiString(sl.Strings[L],0) else s:=s+FormatEdiString(sl.Strings[L],0)+':'; end; end else begin S:=S+''''; Str.Add(S); M:=1; s:='44:'+FormatEdiString(sl.Strings[L],0)+':'; end; M:=M+1; end; S:=S+''''; Str.Add(S); if (bsSkinCheckRadioBox2.Checked) and (not t_op_seae_assistant.IsEmpty) then sl1.Text:=FormatEdiString(t_op_seae_assistant.fieldbyname('货物描述').asstring) else sl1.Text:=FormatEdiString(aQuery.fieldbyname('货物描述').AsString); GetLengthTString(sl1,45); sl.text:=''; for L:=0 to sl1.Count-1 do begin sl.Add(sl1.Strings[L]); end; if str_shr<>'' then begin sl.Add(str_shr) end; if str_con<>'' then begin sl.Add(str_con) end; if str_not<>'' then begin sl.Add(str_not) end; M:=1; for L:=0 to sl.Count-1 do begin if M<=5 then begin if M=1 then begin s:='47:'+FormatEdiString(sl.Strings[L],0)+':'; end else begin if M=5 then s:=s+FormatEdiString(sl.Strings[L],0) else s:=s+FormatEdiString(sl.Strings[L],0)+':'; end; end else begin S:=S+''''; Str.Add(S); M:=1; s:='47:'+FormatEdiString(sl.Strings[L],0)+':'; end; M:=M+1; end; S:=S+''''; Str.Add(S); Count:=Count+11; strRmain:=''; if first then strRmain:=strRmain+'L:'+':'+':'+':'+':'+'N'+#39 else strRmain:=strRmain+'L:'+trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring)+':'+':'+':'+':'+'N'+#39; strsql:='select 编号,代码,sum(数量) as 数量 from t_op_ctn group by 编号,代码 having 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; try rs:=Tadoquery.Create(application); rs.Connection := frm_main.db; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; while not rs.Eof do begin str.Add ('48:'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring))+':'+ trim(rs.fieldbyname('数量').asstring)+':'+ strRmain); Count:=Count+1; rs.Next; end; strsql:='select * from t_op_ctn where 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; rs.Close; rs.sql.clear; rs.sql.add(strsql); rs.Open; if not rs.IsEmpty then begin if rs.FieldByName('件数').AsInteger>0 then begin rs.First; while not rs.Eof do begin if pos('FR',rs.fieldbyname('箱型').asstring)>0 then begin str.Add ('51:'+trim(rs.fieldbyname('箱号').asstring)+':'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring)) +':NIL'+':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+'::' +trim(floatToStr(rs.fieldbyname('尺码').Asfloat))+':'+'''' ); end else begin str.Add ('51:'+trim(rs.fieldbyname('箱号').asstring)+':'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring))+':'+ trim(rs.fieldbyname('封号').asstring)+':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger))+':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat))+'::' +trim(floatToStr(rs.fieldbyname('尺码').Asfloat))+':'+'''' ); end; rs.Next; end; end; end; rs.Close; rs.Destroy; except on e:exception do begin rs.Close; rs.Destroy; exit; end; end; aQuery.Next; first:=False; end; end; finally FreeAndNil(aQuery); end; str.Add('90:' + trim(Edit1.text)+':' + trim(edit3.text) +':' + trim(edit8.text)+':' + trim(edit9.text)+':' + trim(edit10.text)+':' + trim(edit11.text)+':' + trim(edit12.text) +#39); I:=str.Count; str.Add('99:'+intToStr(i+1)+''''); Result:=str; end; function Tfrm_op_seae_edi_hyundai.GetCntrEdi(cntrsize: String):String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select Edi代码 from t_code_ctn where 代码='''+cntrsize+''''); Open; if IsEmpty then Result:='' else Result:=FieldByName('Edi代码').AsString; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_hyundai.GetpkgsEdi(pkgs: String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select Edi代码 from t_code_package where 代码='''+pkgs+''''); Open; if IsEmpty then Result:='' else Result:=FieldByName('Edi代码').AsString; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_hyundai.GetlineEdi(aline: String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select Edi代码 from t_code_trade where 航线='''+aline+''''); Open; if IsEmpty then Result:='' else Result:=FieldByName('Edi代码').AsString; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_hyundai.GetvesselEdi(avessel: String): String; var aQuery:TADOQuery; begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select 船舶呼号 from t_code_vessel where 英文船名='''+avessel+''''); Open; if IsEmpty then Result:='' else Result:=FieldByName('船舶呼号').AsString; end; finally FreeAndNil(aQuery); end; end; procedure Tfrm_op_seae_edi_hyundai.bsSkinButton3Click(Sender: TObject); var IdFTP1:TIdFTP; str:widestring; str_file:widestring; ftpar,ftpname,ftppass,ftppath,ScriptPath:String; StrL:TStrings; inifile1:Tinifile; i,i_soi:integer; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE:string; edi:WideString; begin i_soi:=0; inifile1:=Tinifile.Create(ExtractFilePath(application.ExeName)+'main.ini'); inifile1.WriteString('EDI','HYUNDAISEND',edit1.text); inifile1.WriteString('EDI','HYUNDAIRECIEVE',edit2.text); inifile1.WriteString('EDI','HYUNDAISENDNAME',edit3.text); inifile1.WriteString('EDI','HYUNDAIFTPSERVER',edit4.text); inifile1.WriteString('EDI','HYUNDAIFTPPATH',edit5.text); inifile1.WriteString('EDI','HYUNDAIFTPNAME',edit6.text); inifile1.WriteString('EDI','HYUNDAIFTPPASS',edit7.text); inifile1.WriteString('EDI','HYUNDAISENDDEPT',edit8.text); inifile1.WriteString('EDI','HYUNDAISENDATTN',edit9.text); inifile1.WriteString('EDI','HYUNDAISENDTEL',edit10.text); inifile1.WriteString('EDI','HYUNDAISENDFAX',edit11.text); inifile1.WriteString('EDI','HYUNDAISENDEMAIL',edit12.text); inifile1.WriteString('EDI','HYUNDAIESINAME',edit13.text); inifile1.WriteString('EDI','HYUNDAIESIPASS',edit14.text); inifile1.WriteString('EDI','JHCZFTPSERVER',edit22.text); inifile1.WriteString('EDI','JHCZFTPPATH',edit23.text); inifile1.WriteString('EDI','JHCZFTPNAME',edit24.text); inifile1.WriteString('EDI','JHCZFTPPASS',edit25.text); inifile1.free; ScriptPath:=ExtractFilePath(ParamStr(0))+'EDIFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); if (TbsSkinButton(Sender).Tag=100) then begin ftpar:=Trim(edit22.Text); if ftpar='' then begin MessageDlg('请设置FTP地址!',mtWarning,[mbOk],0); exit; end; ftpname:=Trim(edit24.Text); if ftpar='' then begin MessageDlg('请设置FTP用户名!',mtWarning,[mbOk],0); exit; end; ftppass:=Trim(edit25.Text); if ftpar='' then begin MessageDlg('请设置FTP密码!',mtWarning,[mbOk],0); exit; end; ftppath:=Trim(edit23.Text); end else begin ftpar:=Trim(edit4.Text); if ftpar='' then begin MessageDlg('请设置FTP地址!',mtWarning,[mbOk],0); exit; end; if bsSkinRadioGroup2.ItemIndex=1 then begin ftpname:=Trim(edit13.Text); if ftpar='' then begin MessageDlg('请设置FTP用户名!',mtWarning,[mbOk],0); exit; end; ftppass:=Trim(edit14.Text); if ftpar='' then begin MessageDlg('请设置FTP密码!',mtWarning,[mbOk],0); exit; end; end else begin ftpname:=Trim(edit6.Text); if ftpar='' then begin MessageDlg('请设置FTP用户名!',mtWarning,[mbOk],0); exit; end; ftppass:=Trim(edit7.Text); if ftpar='' then begin MessageDlg('请设置FTP密码!',mtWarning,[mbOk],0); exit; end; end; ftppath:=Trim(edit5.Text); end; 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; try if Trim(frm_op_seae.t_op_seae.fieldbyname('装运方式').asstring)='整箱' then if bsSkinRadioGroup2.ItemIndex=1 then StrL:=CreateSIEdiFile else StrL:=CreateEdiFile else if Pos('主票',(frm_op_seae.t_op_seae.fieldbyname('装运方式').asstring))>0 then if bsSkinRadioGroup2.ItemIndex=1 then StrL:=CreateSIZHUEdiFile else StrL:=CreateZHUEdiFile else begin Exit; end; for i:=0 to StrL.Count-1 do begin if IsZhongwen(StrL[i]) then begin if MessageDlg('此票业务可能含有中文字符或其他不规范字符,确实要继续上传吗!',mtWarning,[mbYes,mbNo],0)=mrNo then exit; end; end; strL.SaveToFile(str); edi:=StrL.Text; finally FreeAndNil(StrL) 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 bsSkinRadioGroup2.ItemIndex=0 then SIO:='SO' else SIO:='SI'; if bsSkinRadioGroup2.ItemIndex=0 then ORG:='ORG' else ORG:='AMEND'; MBL:='主单'; MBLNO:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring; CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); except deletefile(str); showmessage('文件上传错误!'); i_soi:=1; end; idftp1.Free; if (TbsSkinButton(Sender).Tag=100) then if i_soi=0 then UpdateSOIStatus(bsSkinRadioGroup2.ItemIndex,frm_op_seae.t_op_seae.fieldbyname('编号').asstring); end; procedure Tfrm_op_seae_edi_hyundai.bsSkinButton4Click(Sender: TObject); begin if frm_op_seae_edi_hyundai.Height=650 then frm_op_seae_edi_hyundai.Height:=245 else frm_op_seae_edi_hyundai.Height:=650; end; procedure Tfrm_op_seae_edi_hyundai.bsSkinButton5Click(Sender: TObject); var Str:TStrings; i:integer; begin // if not isEditrue(frm_op_seae.t_op_seae) then exit; try Str:=CreateVgmEdiFile; for i:=0 to Str.Count-1 do begin if IsZhongwen(Str[i]) then begin if MessageDlg('此票业务可能含有中文字符或其他不规范字符,确实要继续上传吗!',mtWarning,[mbYes,mbNo],0)=mrNo then exit; end; end; SaveDialog1.FileName:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring; if SaveDialog1.Execute then begin str.SaveToFile(SaveDialog1.FileName+'.txt'); showmessage('文件生成成功!'); end else begin showmessage('文件生成失败!'); exit; end; finally FreeAndNil(Str) end; end; function Tfrm_op_seae_edi_hyundai.CreateVgmEdiFile:TStrings; var str,sl:Tstringlist; i,j,Count,l,M:integer; strsql,strRmain,strtemp,S,fenshu:string; rs:Tadoquery; wide_str,str_shr,str_con,str_not:widestring; k:integer; strType,SM:string; strDatetime:string; SenderCode,ReciverCode,shipname,shipaddr:string; firstcon:boolean; begin SenderCode:=trim(edit1.Text) ; ReciverCode:=trim(edit2.Text) ; if bsSkinRadioGroup1.ItemIndex=0 then strType:='9' else if bsSkinRadioGroup1.ItemIndex=1 then strType:='2' else if bsSkinRadioGroup1.ItemIndex=2 then strType:='3' else if bsSkinRadioGroup1.ItemIndex=3 then strType:='4' else strType:='9'; if Trim(Edit15.Text)<>'' then IntMarksRowCount:=StrToInt(Trim(Edit15.Text)) else IntMarksRowCount:=9; if Trim(Edit16.Text)<>'' then IntGoodsRowCount:=StrToInt(Trim(Edit16.Text)) else IntGoodsRowCount:=5; if Trim(Edit17.Text)<>'' then MblLength:=StrToInt(Trim(Edit17.Text)) else MblLength:=2; str:=Tstringlist.Create; sl:=Tstringlist.Create; str.Clear; str.Add('00:IFTVGM:BOOKING:'+trim(strType)+':'+ SenderCode+':'+ReciverCode+':'+GetDatetime(datetimetostr(now),1)+#39); Count:=0; str.Add ('02:'+ trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring)+':' + trim(frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring) +#39); str.Add('11:' + trim(GetvesselEdi(frm_op_seae.t_op_seae.fieldbyname('船名').asstring))+':' + trim(frm_op_seae.t_op_seae.fieldbyname('船名').asstring) +':' + trim(frm_op_seae.t_op_seae.fieldbyname('航次').asstring)+#39); //船舶经营人 str.Add ('12:'+trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('装港代码').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('装货港').asstring)+':' +trim(frm_op_seae.t_op_seae.fieldbyname('卸货代码').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('卸货港').asstring)+':' +':' +':' +trim(frm_op_seae.t_op_seae.fieldbyname('交货代码').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('交货地点').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('目的地代码').asstring) +':' +trim(frm_op_seae.t_op_seae.fieldbyname('目的地').asstring) +#39); Count:=Count+4; if 1=1 then begin strsql:='select * from t_op_ctn where 编号=' +#39+frm_op_seae.t_op_seae.fieldbyname('编号').asstring+#39; try rs:=Tadoquery.Create(application); rs.Connection := frm_main.db; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; if not rs.IsEmpty then begin rs.First; while not rs.Eof do begin if (rs.fieldbyname('称重方式').asstring<>'') or (rs.fieldbyname('称重方式').asstring<>'无') then begin if Trim(rs.fieldbyname('称重方式').asstring)='累加' then SM:='SM2' else if Trim(rs.fieldbyname('称重方式').asstring)='总重' then SM:='SM1'; str.Add ('51:'+trim(rs.fieldbyname('箱号').asstring) //2 +':'+Trim(GetCntrEdi(rs.fieldbyname('代码').asstring)) //3 +':'+trim(rs.fieldbyname('封号').asstring) // 4 +':'+trim(IntToStr(rs.fieldbyname('件数').AsInteger)) //5 +':'+trim(FloatToStr(rs.fieldbyname('重量').AsFloat)) //6 +'::' +trim(floatToStr(rs.fieldbyname('尺码').Asfloat)) //78 +'::::::' //9-14 +':'+rs.fieldbyname('称重重量').asstring //15 +':'+GetDatetime(rs.fieldbyname('VGM称重日期').asString,1) //16 +':'+SM //17 +':'+rs.fieldbyname('称重地点').asString //18 +''''); sl.Text:=FormatEdiString(frm_op_seae.t_op_seae.fieldbyname('发货人代码').asstring); shipname:=''; if sl.Count>=1 then shipname:=Copy(sl[0],1,20); shipaddr:=''; if sl.Count>=2 then shipaddr:=sl[1]; str.Add ('58:'+shipname //2 +':'+shipaddr //3 +':'+rs.fieldbyname('VGM联系人').asString // 4 +':'+'' //5 +':'+rs.fieldbyname('VGM联系联系方式').asString //6 +':'+'' //7 +':' +rs.fieldbyname('VGM签名').asString //8 +':' +'certificate ID' //9 +''''); end; rs.Next; end; end; rs.Close; rs.Destroy; except on e:exception do begin rs.Close; rs.Destroy; exit; end; end; end; I:=str.Count; str.Add('99:'+intToStr(i+1)+''''); Result:=str; end; procedure Tfrm_op_seae_edi_hyundai.bsSkinButton6Click(Sender: TObject); var IdFTP1:TIdFTP; str:widestring; str_file:widestring; ftpar,ftpname,ftppass,ftppath,ScriptPath:String; StrL:TStrings; i,i_soi:integer; SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE:string; edi,PORTSTR:WideString; begin i_soi:=0; ScriptPath:=ExtractFilePath(ParamStr(0))+'EDIFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); ftpar:=Trim(edit18.Text); if ftpar='' then begin MessageDlg('请设置FTP地址!',mtWarning,[mbOk],0); exit; end; ftpname:=Trim(edit20.Text); if ftpar='' then begin MessageDlg('请设置FTP用户名!',mtWarning,[mbOk],0); exit; end; ftppass:=Trim(edit21.Text); if ftpar='' then begin MessageDlg('请设置FTP密码!',mtWarning,[mbOk],0); exit; end; ftppath:=Trim(edit19.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; try StrL:=CreateVGMEdiFile; for i:=0 to StrL.Count-1 do begin if IsZhongwen(StrL[i]) then begin if MessageDlg('此票业务可能含有中文字符或其他不规范字符,确实要继续上传吗!',mtWarning,[mbYes,mbNo],0)=mrNo then exit; end; end; strL.SaveToFile(str); edi:=StrL.Text; finally FreeAndNil(StrL) end; PORTSTR:=Edit26.Text; if (Trim(PORTSTR)='') then PORTSTR:='21'; try IdFTP1:=TIdFTP.Create(application); with idftp1 do begin Username:=ftpname; Password:=ftppass; Host:=ftpar; Passive:=True; port:=StrToInt(PORTSTR); Connect; end; idftp1.ChangeDir(ftppath); idftp1.TransferType:=ftBinary; idftp1.Put(str,str_file); idftp1.Disconnect; showmessage('文件上传成功!'); // if bsSkinRadioGroup2.ItemIndex=0 then SIO:='SO' else SIO:='SI'; SIO:='VGM'; if bsSkinRadioGroup2.ItemIndex=0 then ORG:='ORG' else ORG:='AMEND'; MBL:='主单'; MBLNO:=frm_op_seae.t_op_seae.fieldbyname('主提单号').asstring; CARR:=frm_op_seae.t_op_seae.fieldbyname('船公司').asstring; CORP:=frm_op_seae.t_op_seae.fieldbyname('委托单位').asstring; EMP:=employee; EMPDAE:=FormatDateTime('YYYY-MM-DD hh:mm:ss',now); ETD:=FormatDateTime('YYYY-MM-DD',frm_op_seae.t_op_seae.fieldbyname('开船日期').value); Insertt_op_Edi_Log(SIO,ORG,MBL,CARR,MBLNO,ETD,CORP,EMP,EMPDAE,str,edi); except deletefile(str); showmessage('文件上传错误!'); i_soi:=1; end; idftp1.Free; end; procedure Tfrm_op_seae_edi_hyundai.FormClose(Sender: TObject; var Action: TCloseAction); var inifile1:Tinifile; begin inifile1:=Tinifile.Create(ExtractFilePath(application.ExeName)+'main.ini'); inifile1.WriteString('EDI','HYUNDAISEND',edit1.text); inifile1.WriteString('EDI','HYUNDAIRECIEVE',edit2.text); inifile1.WriteString('EDI','HYUNDAISENDNAME',edit3.text); inifile1.WriteString('EDI','HYUNDAIFTPSERVER',edit4.text); inifile1.WriteString('EDI','HYUNDAIFTPPATH',edit5.text); inifile1.WriteString('EDI','HYUNDAIFTPNAME',edit6.text); inifile1.WriteString('EDI','HYUNDAIFTPPASS',edit7.text); inifile1.WriteString('EDI','HYUNDAISENDDEPT',edit8.text); inifile1.WriteString('EDI','HYUNDAISENDATTN',edit9.text); inifile1.WriteString('EDI','HYUNDAISENDTEL',edit10.text); inifile1.WriteString('EDI','HYUNDAISENDFAX',edit11.text); inifile1.WriteString('EDI','HYUNDAISENDEMAIL',edit12.text); inifile1.WriteString('EDI','HYUNDAIESINAME',edit13.text); inifile1.WriteString('EDI','HYUNDAIESIPASS',edit14.text); inifile1.WriteString('EDI','HYUNDAIVGMFTPSERVER',edit18.text); inifile1.WriteString('EDI','HYUNDAIVGMFTPPATH',edit19.text); inifile1.WriteString('EDI','HYUNDAIVGMFTPUSERNAME',edit20.text); inifile1.WriteString('EDI','HYUNDAIVGMFTPPASSWORD',edit21.text); inifile1.WriteString('EDI','HYUNDAIVGMFTPPORT',edit26.text); inifile1.WriteString('EDI','JHCZFTPSERVER',edit22.text); inifile1.WriteString('EDI','JHCZFTPPATH',edit23.text); inifile1.WriteString('EDI','JHCZFTPNAME',edit24.text); inifile1.WriteString('EDI','JHCZFTPPASS',edit25.text); inifile1.free; end; function Tfrm_op_seae_edi_hyundai.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; end.