unit u_op_seae_edi_custom_hgydt; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, IdFTP, IdFTPCommon, Dialogs, BusinessSkinForm, StdCtrls, bsSkinCtrls, inifiles, DB, ADODB, VCLUnZip, VCLZip, bsSkinBoxCtrls, DsWebService, SoapHTTPClient, InvokeRegistry, IdBaseComponent, IdComponent, IdTCPConnection,IdMultipartFormData, IdTCPClient, IdHTTP; type Tfrm_op_seae_edi_custom_hgydt = class(TForm) t_op_ctn: TADOQuery; t_op_ctn1: TDataSource; t_op_ams: TADOQuery; bsSkinPanel1: TbsSkinPanel; VCLZip1: TVCLZip; SaveDialog1: TSaveDialog; Label9: TLabel; Label8: TLabel; Label3: TLabel; Label2: TLabel; Label15: TLabel; Label12: TLabel; Label11: TLabel; Label10: TLabel; Label1: TLabel; Edit9: TEdit; Edit8: TEdit; Edit3: TEdit; Edit2: TEdit; Edit12: TEdit; Edit11: TEdit; Edit10: TEdit; Edit1: TEdit; ComboBox1: TComboBox; bsSkinRadioGroup1: TbsSkinRadioGroup; bsSkinGroupBox1: TbsSkinGroupBox; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; bsSkinCheckListBox1: TbsSkinCheckListBox; bsSkinButton5: TbsSkinButton; bsSkinButton4: TbsSkinButton; bsSkinButton3: TbsSkinButton; bsSkinButton2: TbsSkinButton; bsSkinButton1: TbsSkinButton; bsBusinessSkinForm1: TbsBusinessSkinForm; bsSkinCheckRadioBox2: TbsSkinCheckRadioBox; IdHTTP1: TIdHTTP; Label13: TLabel; Edit13: TEdit; Label14: TLabel; Edit14: TEdit; Memo1: TMemo; Label16: TLabel; Memo2: TMemo; Label17: TLabel; procedure bsSkinButton2Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure bsSkinButton1Click(Sender: TObject); procedure bsSkinButton4Click(Sender: TObject); procedure bsSkinRadioGroup1Click(Sender: TObject); procedure bsSkinButton5Click(Sender: TObject); procedure bsSkinButton3Click(Sender: TObject); private mServiceSoap_Ds: DsWebServiceSoap; mHttpRIO_ds: THTTPRIO; 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 CreateSIEdiFile_MBL: TStrings; function CreateSIEdiFile_XML: 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 Changestr(str: widestring): string; function isEditrue_Multi(DataSet: TDataSet): boolean; function CreateSIEdiFile_XML_Multi: TStrings; function CreateSIEdiFile_XML_Del: TStrings; { Private declarations } public { Public declarations } function GetPortStr(Port: string): string; function GetPPCC(aFree: string): string; function GetCntrSize(code, Cntr: string): string; function Getport(code, port: string): string; function GetCarrCustomNO(sanme: string): string; function GetCtnCode(ctnkind, ctnsize: string): string; function formatAfrstr(str: string): string; function formattel(str:string):string; procedure getwebservice_ds; procedure SaveUTF8File(AContent:string;AFileName: string); end; var frm_op_seae_edi_custom_hgydt: Tfrm_op_seae_edi_custom_hgydt; implementation uses u_main, my_sys_function, u_data_share, u_op_seae_edi_data; {$R *.dfm} procedure Tfrm_op_seae_edi_custom_hgydt.SaveUTF8File(AContent:string;AFileName: string); var ffileStream:TFileStream; futf8Bytes: string; S: string; begin ffileStream:=TFileStream.Create(AFileName,fmCreate); futf8Bytes:= UTF8Encode(AContent); S:=#$EF#$BB#$BF; ffileStream.Write(S[1],Length(S)); ffileStream.Write(futf8Bytes[1],Length(futf8Bytes)); ffileStream.Free; end; function Tfrm_op_seae_edi_custom_hgydt.formatAfrstr(str: string): string; begin Result := Trim(str); Result := StringReplace(Result, '&', '&', [rfReplaceAll]); Result := StringReplace(Result, '<', '<', [rfReplaceAll]); Result := StringReplace(Result, '"', '"', [rfReplaceAll]); Result := StringReplace(Result, '>', '>', [rfReplaceAll]); Result := StringReplace(Result, '''', ''', [rfReplaceAll]); end; function Tfrm_op_seae_edi_custom_hgydt.GetCtnCode(ctnkind, ctnsize: string): string; var aQuery: TADOQuery; sl:TStringList; begin aQuery := CreateAdoQuery; ctnsize := StringReplace(ctnsize, '''', '''''', [rfReplaceAll]); Result := ''; sl:=TStringList.Create; try sl.Assign(Memo1.Lines); Result:=sl.Values[ctnsize+ctnkind]; if (Result='') then begin 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; end; finally FreeAndNil(aQuery); FreeAndNil(sl); end; end; function Tfrm_op_seae_edi_custom_hgydt.Changestr(str: widestring): string; var i: integer; strC: widestring; begin strC := ''; for i := 1 to length(str) do begin if ((str[i] = #39) or (str[i] = ':') or (str[i] = '''') or (str[i] = '+') or (str[i] = '?')) then begin strC := strC + '?' + str[i]; end else begin strC := strC + str[i]; end; end; result := strC; end; function Tfrm_op_seae_edi_custom_hgydt.GetCarrCustomNO(sanme: string): string; var aQuery: TADOQuery; begin result := ''; aQuery := CreateAdoQuery; try with aQuery do begin Close; SQL.Clear; SQL.Add('Select 客户简称,海关编码 from t_crm_client where 客户简称=:客户简称'); Parameters.ParamByName('客户简称').Value := sanme; Open; if (not IsEmpty) and (FieldByName('海关编码').AsString <> '') then begin Result := FieldByName('海关编码').AsString; end; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_custom_hgydt.GetPPCC(aFree: string): string; var aQuery: TADOQuery; begin result := ''; aQuery := CreateAdoQuery; try with aQuery do begin Close; SQL.Clear; SQL.Add('Select 代码 from t_code_FREE where 付费方式=:FREE'); Parameters.ParamByName('FREE').Value := aFree; Open; if (not IsEmpty) and (FieldByName('代码').AsString <> '') then begin Result := FieldByName('代码').AsString; end; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_custom_hgydt.GetCntrSize(code, Cntr: string): string; var aQuery: TADOQuery; begin result := Cntr; aQuery := CreateAdoQuery; try with aQuery do begin Close; SQL.Clear; SQL.Add('Select EDI代码 from t_code_ctn where 代码=''' + code + ''''); Open; if (not IsEmpty) and (FieldByName('EDI代码').AsString <> '') then begin Result := FieldByName('EDI代码').AsString; end; end; finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_custom_hgydt.Getport(code, port: string): string; var aQuery: TADOQuery; begin result := port; aQuery := CreateAdoQuery; try with aQuery do begin Close; SQL.Clear; SQL.Add('Select 港口名称 from t_code_edi_port where EDI代码=''' + code + ''''); Open; if (not IsEmpty) and (FieldByName('港口名称').AsString <> '') then begin Result := FieldByName('港口名称').AsString; end; end; if Pos(',', Result) > 0 then Result := Copy(Result, 1, Pos(',', Result) - 1); finally FreeAndNil(aQuery); end; end; function Tfrm_op_seae_edi_custom_hgydt.GetPortStr(Port: string): string; begin if Pos(',', Port) > 0 then Result := Copy(Port, 1, Pos(',', Port) - 1) else Result := Port; end; function Tfrm_op_seae_edi_custom_hgydt.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_custom_hgydt.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_custom_hgydt.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_custom_hgydt.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_custom_hgydt.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 < NewStrs.Count then begin Result := Result + NewStrs.Strings[i]; end; if i < mCount - 1 then Result := Result + ':'; end; finally FreeAndNil(NewStrs); end; end; function Tfrm_op_seae_edi_custom_hgydt.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; procedure Tfrm_op_seae_edi_custom_hgydt.bsSkinButton2Click(Sender: TObject); begin close; end; procedure Tfrm_op_seae_edi_custom_hgydt.FormShow(Sender: TObject); var inifile1: Tinifile; begin inifile1 := Tinifile.Create(ExtractFilePath(application.ExeName) + 'main.ini'); edit1.text := inifile1.ReadString('customHGYDT', 'SEND', ''); edit2.text := inifile1.ReadString('customHGYDT', 'RECIEVE', ''); edit3.text := inifile1.ReadString('customHGYDT', 'SENDNAME', ''); edit4.text := inifile1.ReadString('customHGYDT', 'FTPSERVER', ''); edit5.text := inifile1.ReadString('customHGYDT', 'FTPPATH', '/'); edit6.text := inifile1.ReadString('customHGYDT', 'FTPNAME', ''); edit7.text := inifile1.ReadString('customHGYDT', 'FTPPASS', ''); edit8.text := inifile1.ReadString('customHGYDT', 'SENDDEPT', ''); edit9.text := inifile1.ReadString('customHGYDT', 'SENDATTN', ''); edit10.text := inifile1.ReadString('customHGYDT', 'SENDTEL', ''); edit11.text := inifile1.ReadString('customHGYDT', 'SENDFAX', ''); edit12.text := inifile1.ReadString('customHGYDT', 'SENDEMAIL', ''); edit13.text:=inifile1.ReadString('customHGYDT','ESINAME',''); edit14.text:=inifile1.ReadString('customHGYDT','ESIPASS',''); if FileExists(ExtractFilePath(Application.ExeName)+'CNTRSTR.txt') then Memo1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'CNTRSTR.txt'); ComboBox1.text := inifile1.ReadString('customHGYDT', 'SENDFILETYPE', 'txt'); inifile1.free; if frm_op_seae_edi_data.dxDBGrid1.SelectedCount>1 then bsSkinCheckRadioBox2.Checked:=True else bsSkinCheckRadioBox2.Checked:=False; if (Memo1.text='') then begin frm_data_share.t_code_ctn.First; while not frm_data_share.t_code_ctn.Eof do begin Memo1.Lines.Add(frm_data_share.t_code_ctn.fieldbyname('尺寸').asstring+frm_data_share.t_code_ctn.fieldbyname('箱型').asstring+'='+frm_data_share.t_code_ctn.fieldbyname('EDI代码').asstring); frm_data_share.t_code_ctn.Next; end; end; //82916891 谢 end; procedure Tfrm_op_seae_edi_custom_hgydt.bsSkinButton1Click(Sender: TObject); var Str: TStrings; inifile1: Tinifile; i: integer; numunzipped: integer; fileType: string; begin if bsSkinRadioGroup1.ItemIndex = 0 then fileType := '-9' else if bsSkinRadioGroup1.ItemIndex = 1 then fileType := '-2' else if bsSkinRadioGroup1.ItemIndex = 2 then fileType := '-3' else if bsSkinRadioGroup1.ItemIndex = 3 then fileType := '-5' else if bsSkinRadioGroup1.ItemIndex = 4 then fileType := '-0' else if bsSkinRadioGroup1.ItemIndex = 5 then fileType := '-11' else fileType := '-9'; { 9 主要 2 增加 3 删除 5 更新 0 次要 11 指令 } inifile1 := Tinifile.Create(ExtractFilePath(application.ExeName) + 'main.ini'); inifile1.WriteString('customHGYDT', 'SEND', edit1.text); inifile1.WriteString('customHGYDT', 'RECIEVE', edit2.text); inifile1.WriteString('customHGYDT', 'SENDNAME', edit3.text); inifile1.WriteString('customHGYDT', 'FTPSERVER', edit4.text); inifile1.WriteString('customHGYDT', 'FTPPATH', edit5.text); inifile1.WriteString('customHGYDT', 'FTPNAME', edit6.text); inifile1.WriteString('customHGYDT', 'FTPPASS', edit7.text); inifile1.WriteString('customHGYDT', 'SENDDEPT', edit8.text); inifile1.WriteString('customHGYDT', 'SENDATTN', edit9.text); inifile1.WriteString('customHGYDT', 'SENDTEL', edit10.text); inifile1.WriteString('customHGYDT', 'SENDFAX', edit11.text); inifile1.WriteString('customHGYDT', 'SENDEMAIL', edit12.text); inifile1.WriteString('customHGYDT', 'SENDFILETYPE', ComboBox1.text); inifile1.WriteString('customHGYDT', 'CNTRSTR',Memo1.Text); Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'CNTRSTR.txt'); // inifile1.WriteString('customWAIDAI','ESINAME',edit13.text); // inifile1.WriteString('customWAIDAI','ESIPASS',edit14.text); inifile1.free; Str := Tstringlist.Create; try if (ComboBox1.Text = '') or (ComboBox1.Text = 'txt') then Str := CreateSIEdiFile_MBL else begin if (fileType='-3') then begin Str :=CreateSIEdiFile_XML_Del; end else begin if bsSkinCheckRadioBox2.Checked then Str := CreateSIEdiFile_XML_Multi else Str := CreateSIEdiFile_xml; end; 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_edi_data.t_op_seae.fieldbyname('主提单号').asstring; if (ComboBox1.Text = '') or (ComboBox1.Text = 'txt') then SaveDialog1.Filter := '*.txt|*.txt' else SaveDialog1.Filter := '*.xml|*.xml'; if SaveDialog1.Execute then begin if (ComboBox1.Text = '') or (ComboBox1.Text = 'txt') then Str.SaveToFile(SaveDialog1.FileName + fileType + '.txt') else begin // if (fileType='-3') then begin SaveUTF8File(Str.Text,SaveDialog1.FileName + fileType + '.xml'); end else begin Str.SaveToFile(SaveDialog1.FileName + fileType + '.xml'); end; end; if ComboBox1.Text = 'xml' then with VCLZip1 do begin FilesList.Add(SaveDialog1.FileName + fileType + '.xml'); zipname := frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring + fileType + '.zip'; DoAll := false; DestDir := ExtractFilePath(SaveDialog1.GetNamePath); RecreateDirs := false; RetainAttributes := true; numunzipped := Zip; end; //VCLZip.l showmessage('文件生成成功!'); end else begin showmessage('文件生成失败!'); exit; end; finally FreeAndNil(Str) end; close; end; function Tfrm_op_seae_edi_custom_hgydt.isEditrue(DataSet: TDataSet): boolean; var cntrs, substr: string; i, c: Integer; begin result := true; if trim(Edit1.text) = '' then begin result := false; MessageDlg('发送方代码不能为空', mtWarning, [mbOk], 0); end; if trim(Edit2.text) = '' then begin result := false; MessageDlg('接受方代码不能为空', mtWarning, [mbOk], 0); end; c := 0; if bsSkinRadioGroup1.ItemIndex = 3 then begin for i := 0 to bsSkinCheckListBox1.Items.Count - 1 do begin if bsSkinCheckListBox1.Checked[i] then begin c := c + 1; end; end; if c <= 0 then begin ShowMessage('修改原因不能为空,请在下面选择原因'); result := false; end else if c > 4 then begin ShowMessage('最多只能选择4个原因'); result := false; end; end; if DataSet.fieldbyname('船公司代码').AsString = '' then begin result := false; MessageDlg('船公司海关代码不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('主提单号').asstring) = '' then begin result := false; MessageDlg('提单号不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('付费方式').asstring) = '' then begin result := false; MessageDlg('付费方式不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('船名').asstring) = '' then begin result := false; MessageDlg('船名不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('航次').asstring) = '' then begin result := false; MessageDlg('航次不能为空', mtWarning, [mbOk], 0); end; { if trim(DataSet.fieldbyname('装港代码').asstring) = '' then begin result := false; MessageDlg('装港代码不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('装货港').asstring) = '' then begin result := false; MessageDlg('装货港不能为空', mtWarning, [mbOk], 0); end; } if trim(DataSet.fieldbyname('开船日期').asstring) = '' then begin result := false; MessageDlg('开船日期不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('预抵日期').asstring) = '' then begin result := false; MessageDlg('预抵日期不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('卸货代码').asstring) = '' then begin result := false; MessageDlg('卸货代码不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('目的地').asstring) = '' then begin result := false; MessageDlg('目的地不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('签单地点').asstring) = '' then begin result := false; MessageDlg('签单地点不能为空', mtWarning, [mbOk], 0); end; { if trim(DataSet.fieldbyname('发货人企业代码').asstring) = '' then begin result := false; MessageDlg('发货人企业代码不能为空', mtWarning, [mbOk], 0); end; } if (trim(DataSet.fieldbyname('发货人电话').asstring) = '') and (trim(DataSet.fieldbyname('发货人邮箱').asstring) = '') then begin result := false; MessageDlg('发货人电话邮箱不能为空', mtWarning, [mbOk], 0); end; substr := trim(DataSet.fieldbyname('收货人名称').asstring); substr := StringReplace(substr, ' ', '', [rfReplaceAll]); substr := UpperCase(substr); if ((Length(substr) >= 7) and (Copy(substr, 1, 7) = 'TOORDER')) or ((Length(substr) >= 10) and (Copy(substr, 1, 10) = 'TOTHEORDER')) then begin { if trim(DataSet.fieldbyname('通知人企业代码').asstring) = '' then begin result := false; MessageDlg('通知人企业代码不能为空', mtWarning, [mbOk], 0); end; } if trim(DataSet.fieldbyname('通知人国家代码').asstring) = '' then begin result := false; MessageDlg('通知人国家代码不能为空', mtWarning, [mbOk], 0); end; end else begin { if trim(DataSet.fieldbyname('收货人企业代码').asstring) = '' then begin result := false; MessageDlg('收货人企业代码不能为空', mtWarning, [mbOk], 0); end; } if (trim(DataSet.fieldbyname('收货人电话').asstring) = '') and (trim(DataSet.fieldbyname('收货人邮箱').asstring) = '') then begin result := false; MessageDlg('收货人电话邮箱不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('收货人国家代码').asstring) = '' then begin result := false; MessageDlg('收货人国家代码不能为空', mtWarning, [mbOk], 0); end; end; if trim(GetpkgsEdi(DataSet.fieldbyname('包装').asstring)) = '' then begin result := false; MessageDlg('包装EDI代码不存在!', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('货物描述').asstring) = '' then begin result := false; MessageDlg('货物描述不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('唛头').asstring) = '' then begin result := false; MessageDlg('唛头不能为空', mtWarning, [mbOk], 0); end; if DataSet.fieldbyname('件数').asinteger = 0 then begin result := false; MessageDlg('件数不能为空', mtWarning, [mbOk], 0); end; if DataSet.fieldbyname('重量').asFloat = 0 then begin result := false; MessageDlg('总重量不能为空', mtWarning, [mbOk], 0); end; { if DataSet.fieldbyname('尺码').asFloat = 0 then begin result := false; MessageDlg('总尺码不能为空', mtWarning, [mbOk], 0); end; } if trim(DataSet.fieldbyname('货物标识').asstring) = '' then begin result := false; MessageDlg('货物标识不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('货物标识').asstring) = '' then begin result := false; MessageDlg('货物标识不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.FieldByName('货物标识').asstring) = 'D' then begin if Trim(DataSet.fieldbyname('危险品分类').asstring) = '' then begin result := false; MessageDlg('危险品等级不能为空', mtWarning, [mbOk], 0); end; if Trim(DataSet.fieldbyname('危险品编号').asstring) = '' then begin result := false; MessageDlg('危险品编号不能为空', mtWarning, [mbOk], 0); end; if GetStrNum(Trim(DataSet.fieldbyname('危险品编号').asstring)) <> 4 then begin result := false; MessageDlg('危险品编号必须是4位数字', mtWarning, [mbOk], 0); end; end; if trim(DataSet.FieldByName('货物标识').asstring) = 'R' then begin if Trim(DataSet.fieldbyname('设置温度').asstring) = '' then begin result := false; MessageDlg('设置温度不能为空', mtWarning, [mbOk], 0); end; end; t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value := DataSet.fieldbyname('编号').asstring; t_op_ctn.open; if t_op_ctn.IsEmpty then begin result := false; MessageDlg('集装箱不能为空', mtWarning, [mbOk], 0); 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); end; if Trim(t_op_ctn.fieldbyname('封号').asstring) = '' then begin result := false; MessageDlg('封号不能为空!', mtWarning, [mbOk], 0); end; t_op_ctn.Next; end; if iszhongwen(DataSet.fieldbyname('发货人代码').AsString) then begin result := false; MessageDlg('发货人不能有中文字符!', mtWarning, [mbOk], 0); end; if iszhongwen(DataSet.fieldbyname('收货人代码').AsString) then begin result := false; MessageDlg('收货人不能有中文字符!', mtWarning, [mbOk], 0); end; if iszhongwen(DataSet.fieldbyname('通知人代码').AsString) then begin result := false; MessageDlg('通知人不能有中文字符!', mtWarning, [mbOk], 0); end; if iszhongwen(DataSet.fieldbyname('唛头').AsString) then begin result := false; MessageDlg('唛头不能有中文字符!', mtWarning, [mbOk], 0); end; if iszhongwen(DataSet.fieldbyname('货物描述').AsString) then begin result := false; MessageDlg('货物描述不能有中文字符!', mtWarning, [mbOk], 0); end; end; //2018-8-3 function Tfrm_op_seae_edi_custom_hgydt.isEditrue_Multi(DataSet: TDataSet): boolean; var cntrs, substr: string; i, c: Integer; begin result := true; if trim(Edit1.text) = '' then begin result := false; MessageDlg('发送方代码不能为空', mtWarning, [mbOk], 0); end; if trim(Edit2.text) = '' then begin result := false; MessageDlg('接受方代码不能为空', mtWarning, [mbOk], 0); end; c := 0; if bsSkinRadioGroup1.ItemIndex = 3 then begin for i := 0 to bsSkinCheckListBox1.Items.Count - 1 do begin if bsSkinCheckListBox1.Checked[i] then begin c := c + 1; end; end; if c <= 0 then begin ShowMessage('修改原因不能为空,请在下面选择原因'); result := false; end else if c > 4 then begin ShowMessage('最多只能选择4个原因'); result := false; end; end; DataSet.First; while not DataSet.Eof do begin if DataSet.fieldbyname('船公司代码').AsString = '' then begin result := false; MessageDlg('船公司海关代码不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('主提单号').asstring) = '' then begin result := false; MessageDlg('提单号不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('付费方式').asstring) = '' then begin result := false; MessageDlg('付费方式不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('船名').asstring) = '' then begin result := false; MessageDlg('船名不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('航次').asstring) = '' then begin result := false; MessageDlg('航次不能为空', mtWarning, [mbOk], 0); end; { if trim(DataSet.fieldbyname('装港代码').asstring) = '' then begin result := false; MessageDlg('装港代码不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('装货港').asstring) = '' then begin result := false; MessageDlg('装货港不能为空', mtWarning, [mbOk], 0); end; } if trim(DataSet.fieldbyname('开船日期').asstring) = '' then begin result := false; MessageDlg('开船日期不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('预抵日期').asstring) = '' then begin result := false; MessageDlg('预抵日期不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('卸货代码').asstring) = '' then begin result := false; MessageDlg('卸货代码不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('目的地').asstring) = '' then begin result := false; MessageDlg('目的地不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('签单地点').asstring) = '' then begin result := false; MessageDlg('签单地点不能为空', mtWarning, [mbOk], 0); end; { if trim(DataSet.fieldbyname('发货人企业代码').asstring) = '' then begin result := false; MessageDlg('发货人企业代码不能为空', mtWarning, [mbOk], 0); end; } if (trim(DataSet.fieldbyname('发货人电话').asstring) = '') and (trim(DataSet.fieldbyname('发货人邮箱').asstring) = '') then begin result := false; MessageDlg('发货人电话邮箱不能为空', mtWarning, [mbOk], 0); end; substr := trim(DataSet.fieldbyname('收货人名称').asstring); substr := StringReplace(substr, ' ', '', [rfReplaceAll]); substr := UpperCase(substr); if ((Length(substr) >= 7) and (Copy(substr, 1, 7) = 'TOORDER')) or ((Length(substr) >= 10) and (Copy(substr, 1, 10) = 'TOTHEORDER')) then begin { if trim(DataSet.fieldbyname('通知人企业代码').asstring) = '' then begin result := false; MessageDlg('通知人企业代码不能为空', mtWarning, [mbOk], 0); end; } if trim(DataSet.fieldbyname('通知人国家代码').asstring) = '' then begin result := false; MessageDlg('通知人国家代码不能为空', mtWarning, [mbOk], 0); end; end else begin { if trim(DataSet.fieldbyname('收货人企业代码').asstring) = '' then begin result := false; MessageDlg('收货人企业代码不能为空', mtWarning, [mbOk], 0); end; } if (trim(DataSet.fieldbyname('收货人电话').asstring) = '') and (trim(DataSet.fieldbyname('收货人邮箱').asstring) = '') then begin result := false; MessageDlg('收货人电话邮箱不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('收货人国家代码').asstring) = '' then begin result := false; MessageDlg('收货人国家代码不能为空', mtWarning, [mbOk], 0); end; end; if trim(GetpkgsEdi(DataSet.fieldbyname('包装').asstring)) = '' then begin result := false; MessageDlg('包装EDI代码不存在!', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('货物描述').asstring) = '' then begin result := false; MessageDlg('货物描述不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('唛头').asstring) = '' then begin result := false; MessageDlg('唛头不能为空', mtWarning, [mbOk], 0); end; if DataSet.fieldbyname('件数').asinteger = 0 then begin result := false; MessageDlg('件数不能为空', mtWarning, [mbOk], 0); end; if DataSet.fieldbyname('重量').asFloat = 0 then begin result := false; MessageDlg('总重量不能为空', mtWarning, [mbOk], 0); end; { if DataSet.fieldbyname('尺码').asFloat = 0 then begin result := false; MessageDlg('总尺码不能为空', mtWarning, [mbOk], 0); end; } if trim(DataSet.fieldbyname('货物标识').asstring) = '' then begin result := false; MessageDlg('货物标识不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.fieldbyname('货物标识').asstring) = '' then begin result := false; MessageDlg('货物标识不能为空', mtWarning, [mbOk], 0); end; if trim(DataSet.FieldByName('货物标识').asstring) = 'D' then begin if Trim(DataSet.fieldbyname('危险品分类').asstring) = '' then begin result := false; MessageDlg('危险品等级不能为空', mtWarning, [mbOk], 0); end; if Trim(DataSet.fieldbyname('危险品编号').asstring) = '' then begin result := false; MessageDlg('危险品编号不能为空', mtWarning, [mbOk], 0); end; if GetStrNum(Trim(DataSet.fieldbyname('危险品编号').asstring)) <> 4 then begin result := false; MessageDlg('危险品编号必须是4位数字', mtWarning, [mbOk], 0); end; end; if trim(DataSet.FieldByName('货物标识').asstring) = 'R' then begin if Trim(DataSet.fieldbyname('设置温度').asstring) = '' then begin result := false; MessageDlg('设置温度不能为空', mtWarning, [mbOk], 0); end; { if Trim(DataSet.fieldbyname('冷藏通风量').asstring)='' then begin result:=false; MessageDlg('冷藏通风量不能为空',mtWarning,[mbOk],0); exit; end; } end; t_op_ctn.close; t_op_ctn.Parameters.ParamByName('编号').Value := DataSet.fieldbyname('编号').asstring; t_op_ctn.open; if t_op_ctn.IsEmpty then begin result := false; MessageDlg('集装箱不能为空', mtWarning, [mbOk], 0); 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); end; if Trim(t_op_ctn.fieldbyname('封号').asstring) = '' then begin result := false; MessageDlg('封号不能为空!', mtWarning, [mbOk], 0); end; t_op_ctn.Next; end; if iszhongwen(DataSet.fieldbyname('发货人代码').AsString) then begin result := false; MessageDlg('发货人不能有中文字符!', mtWarning, [mbOk], 0); end; if iszhongwen(DataSet.fieldbyname('收货人代码').AsString) then begin result := false; MessageDlg('收货人不能有中文字符!', mtWarning, [mbOk], 0); end; if iszhongwen(DataSet.fieldbyname('通知人代码').AsString) then begin result := false; MessageDlg('通知人不能有中文字符!', mtWarning, [mbOk], 0); end; if iszhongwen(DataSet.fieldbyname('唛头').AsString) then begin result := false; MessageDlg('唛头不能有中文字符!', mtWarning, [mbOk], 0); end; if iszhongwen(DataSet.fieldbyname('货物描述').AsString) then begin result := false; MessageDlg('货物描述不能有中文字符!', mtWarning, [mbOk], 0); end; DataSet.Next; end; //end of dataset end; function Tfrm_op_seae_edi_custom_hgydt.CreateSIEdiFile_MBL: TStrings; var str: Tstringlist; Tempstr: TStrings; Temprslt: string; i, j, Count: integer; strsql, strRmain: string; rs, aQuery2: Tadoquery; wide_str: widestring; k: integer; inifile1: Tinifile; strType, XType, TransType: string; strDatetime, IMO: string; SenderCode, ReciverCode: string; begin if not isEditrue(frm_op_seae_edi_data.t_op_seae) then begin Exit; end; 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 := '5' else if bsSkinRadioGroup1.ItemIndex = 4 then strType := '0' else if bsSkinRadioGroup1.ItemIndex = 5 then strType := '11' else strType := '9'; {9 主要 2 增加 3 删除 5 更新 0 次要 11 指令} // ShowMessage(IntToStr(frm_op_seae_edi_data.dxdbgrid1.SelectedCount)); if frm_op_seae_edi_data.dxdbgrid1.SelectedCount <= 1 then begin str := Tstringlist.Create; str.Clear; str.Add('00:MT2101::' + trim(strType) + ':' + SenderCode + ':' + ReciverCode + ':' + GetDatetime(datetimetostr(now), 4) + ':1.0' + ':' + SenderCode + GetDatetime(datetimetostr(now), 4) + #39); // Count := 0; str.Add('10' + ':' + frm_op_seae_edi_data.t_op_seae.fieldbyname('船舶IMO').asstring // 2 船舶IMO编号 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('船名').AsString) //3船名 + ':' //4舶国籍代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('航次').asstring) //5航次 + ':' //6 航线代码 + ':' //7 航线 + ':' //8预计到达日期 + ':' + GetDatetime(DateToStr(frm_op_seae_edi_data.t_op_seae.fieldbyname('开船日期').AsDateTime+5), 1) + '086'//9 离港日期(船舶启运日期和时间) + ':CNQGD/4218' //+ frm_op_seae_edi_data.t_op_seae.fieldbyname('装港代码').asstring // 10离港地点代码(船舶离境地海关代码) + ':CNQGD' //+ frm_op_seae_edi_data.t_op_seae.fieldbyname('装货港').asstring // 11 离港地点 + ':' //12 下一挂港代码 + ':' //13 下一挂港 + ':1' //14运输方式代码 + #39); str.Add('11' + ':' + frm_op_seae_edi_data.t_op_seae.fieldbyname('船公司代码').AsString //2 船公司(承运人)代码 + ':' //3 船公司(承运人) + ':' + SenderCode //4舱单传输人名称 ??? + ':' //5船舶代理企业代码 + ':' + GetDatetime(DateToStr(frm_op_seae_edi_data.t_op_seae.fieldbyname('开船日期').AsDateTime+5), 3) //6物装载运输工具时间 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('卸货代码').asstring) //7船舶抵达关境内第一个目的港代码 + ':' + GetDatetime(DateToStr(frm_op_seae_edi_data.t_op_seae.fieldbyname('预抵日期').AsDateTime+5), 3)//8船舶抵达关境内第一个目的港的日期和时间 + #39); if pos('FREIGHT PREPAID', trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('付费方式').asstring)) > 0 then XType := 'PP' else if pos('FREIGHT COLLECT', trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('付费方式').asstring)) > 0 then XType := 'CC' else XType := 'PP'; if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'CY-CY' then TransType := '10' else if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'DOOR-DOOR' then TransType := '27' else if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'DOOR-PIER' then TransType := '28' else if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'PIER-DOOR' then TransType := '29' else TransType := '10'; // PIER TO PIER str.add('12:' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring) //2总提运单号 + ':' //3 前程运输船名代码 + ':' //4 前程运输船名 + ':' //5 前程运输航次 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('目的代码').asstring) //6 收货地代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('目的地').asstring) //7收货地名称 + ':CNQGD/4218' //+ trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('装港代码').asstring) //8装货港代码 + ':CNQGD' //+ trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('装货港').asstring) //9装货港 + ':' + TransType //10运输条款 + ':' + XType //11付款方式(运费支付方法代码) + ':' + GetDatetime(frm_op_seae_edi_data.t_op_seae.fieldbyname('开船日期').asstring, 1) + '086'//12 离港日期(船舶启运日期和时间) + ':' //13检疫代码 + ':' //14签发日期 + ':' //15币种(金额类型代码) + ':' //16 汇率 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('分提单号').asstring) //17 分提运单号 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('件数').asstring) //18 托运货物总件数 + ':' + trim(GetpkgsEdi(frm_op_seae_edi_data.t_op_seae.fieldbyname('包装').asstring)) //19 包装种类代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('重量').asstring) //20 货物总毛重 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('尺码').asstring) //21 货物体积 + ':' //22 托运货物价值 + ':' //23 码头作业指令代码 + ':' //24 拆箱人代码 + ':' //25 前一海关单证号 + ':' //26 前一海关单证类型代码 + ':001' //27 货物海关处理状态代码(1~99) + #39); str.add('13:' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('卸货代码').asstring) //2卸货地代码 ??? + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('卸货港').asstring) //3卸货港 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('目的代码').asstring) //4交货地代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('目的地').asstring) //5交货地 + ':' // 6 中转港代码 + ':' // 7 中转港 + ':' // 8 提单签发地代码(货物托运地或者国家代码) + ':' // 9 + ':' // 10 + ':' + GetDatetime(frm_op_seae_edi_data.t_op_seae.fieldbyname('预抵日期').asstring, 0) // 11 + ':' // 12 + ':' // 13 + #39); str.add('16' + ':' //2 发货人代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人名称').AsString) //3发货人名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人地址1').AsString) //4发货人地址(街道,邮箱) + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人城市').AsString) //5 城市名称 + ':' //6 省份代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人州').AsString) //7 省份名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人邮编').AsString) //8 邮政编码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人国家代码').AsString) //9 国家代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人电话').AsString) //10 发货人电话 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人联系人').AsString) //11 发货人EMAIL + ':' ///12 发货人传真 + #39); str.add('17' + ':' //2 收货人代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人名称').AsString) //3收货人名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人地址1').AsString) //4收货人地址(街道,邮箱) + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人城市').AsString) //5 城市名称 + ':' //6 省份代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人州').AsString) //7 省份名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人邮编').AsString) //8 邮政编码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人国家代码').AsString) //9 国家代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人电话').AsString) //10 收货人电话 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人联系人').AsString) //11 收货人EMAIL + ':' ///12 收货人传真 + ':' ///13 收货人具体联系人名称 + ':' ///14 收货人具体联系人电话 + ':' ///15 收货人具体联系人EMAIL + ':' ///16 收货人具体联系人传真 + #39); str.add('18' + ':' //2 通知人代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人名称').AsString) //3通知人名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人地址1').AsString) //4通知人地址(街道,邮箱) + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人城市').AsString) //5 城市名称 + ':' //6 省份代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人州').AsString) //7 省份名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人邮编').AsString) //8 邮政编码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人国家代码').AsString) //9 国家代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人电话').AsString) //10 通知人电话 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人联系人').AsString) //11 通知人EMAIL + ':' ///12 通知人传真 + #39); str.add('30' + ':' //2 + ':' //3 + ':' //4 + ':' //5 + #39); str.add('31' + ':' //2 + ':' //3 + ':' //4 + ':' //5 + ':' //6 + ':' //7 + #39); str.Add('41:1' //2货物序号 + ':' //3货类代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('件数').asstring) //4 货物件数 + ':' + trim(GetpkgsEdi(frm_op_seae_edi_data.t_op_seae.fieldbyname('包装').asstring)) //5 包装种类代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('包装').asstring) // 6 包装类型 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('重量').asstring) // 7货毛重 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('重量').asstring) // 8货净重 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('尺码').asstring) // 9货尺码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输方式').asstring) // 10海关税则编号 运输方式 + ':' // 11海关手续代码 + ':' // 12原产地代码 + #39); if trim(frm_op_seae_edi_data.t_op_seae.FieldByName('货物标识').asstring) = 'D' then begin str.Add('43:' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品分类').asstring) //2危险品分类 + ':none' //3危险品页号 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品编号').asstring) //4联合国危险品编号 + ':none' //5危险品标签 + ':' //6 危险货物闪点 + ':' //7 船运危险品应急措施号 + ':' //8 医疗急救指南号 + ':' //9 应急联系 + ':' //10 温度计量单位 + ':' //11 设置温度 + ':' //12 冷藏最低温度 + ':' //13 冷藏最高温度 + ':' //14 危险品联系人姓名 + ':' //15 危险品联系人电话 + ':' //16 危险品联系人EMAIL + ':' //17 危险品联系人传真 + #39); end else if trim(frm_op_seae_edi_data.t_op_seae.FieldByName('货物标识').asstring) = 'R' then begin str.Add('43:' //2危险品分类 + ':' //3危险品页号 + ':' //4联合国危险品编号 + ':' //5危险品标签 + ':' //6 危险货物闪点 + ':' //7 船运危险品应急措施号 + ':' //8 医疗急救指南号 + ':' //9 应急联系 + ':C' //10 温度计量单位 + ':' + frm_op_seae_edi_data.t_op_seae.fieldbyname('设置温度').asstring //11 设置温度 + ':' //12 冷藏最低温度 + ':' //13 冷藏最高温度 + ':' //14 危险品联系人姓名 + ':' //15 危险品联系人电话 + ':' //16 危险品联系人EMAIL + ':' //17 危险品联系人传真 + #39); end else begin str.Add('43:' //2危险品分类 + ':' //3危险品页号 + ':' //4联合国危险品编号 + ':' //5危险品标签 + ':' //6 危险货物闪点 + ':' //7 船运危险品应急措施号 + ':' //8 医疗急救指南号 + ':' //9 应急联系 + ':' //10 温度计量单位 + ':' //11 设置温度 + ':' //12 冷藏最低温度 + ':' //13 冷藏最高温度 + ':' //14 危险品联系人姓名 + ':' //15 危险品联系人电话 + ':' //16 危险品联系人EMAIL + ':' //17 危险品联系人传真 + #39); end; Temprslt := Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('唛头').asstring); Temprslt := StringReplace(Temprslt, #13#10, ' ', [rfReplaceAll]); str.Add('44:' + Temprslt + #39); Temprslt := Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('货物描述').asstring); Temprslt := StringReplace(Temprslt, #13#10, ' ', [rfReplaceAll]); str.Add('47:' + Temprslt + #39); Count := Count + 10; strsql := 'select * from t_op_ctn_edi ' + 'WHERE 编号=' + #39 + frm_op_seae_edi_data.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 str.Add('51' + ':' + trim(rs.fieldbyname('箱号').asstring) //2箱号 + ':' + trim(rs.fieldbyname('封号').asstring) //3主铅封号 + ':' + GetCtnCode(rs.fieldbyname('箱型').asstring, rs.fieldbyname('尺寸').asstring) //4集装箱尺寸类型 、、GetCtnCode + ':8' //5箱状态(重箱或者空箱标识代码) + ':' + trim(IntToStr(rs.fieldbyname('件数').AsInteger)) //6箱内货物件数 + ':' + trim(FloatToStr(rs.fieldbyname('重量').AsFloat)) //7箱内货重 + ':0' //8箱皮重 + ':' + trim(FloatToStr(rs.fieldbyname('尺码').AsFloat)) //9箱内货物尺码 + ':' //10 + ':' //11 + ':' //12 + ':' // 13 + ':' // 14 + ':' // 15 + ':2' // 16 + #39); str.Add('52' + ':M' //3 封志类型 + ':CA' //4 施加封志人 + ':' + trim(rs.fieldbyname('封号').asstring) //2 封志号 + #39); Count := Count + 1; rs.Next; end; end; rs.Close; rs.Destroy; except on e: exception do begin rs.Close; rs.Destroy; exit; end; end; str.Add('99:' + inttostr(Count + 2) + #39); frm_op_seae_edi_data.t_op_seae.Edit; frm_op_seae_edi_data.t_op_seae.FieldByName('EDI状态').AsString := '已发送'; frm_op_seae_edi_data.t_op_seae.Post; end else begin str := Tstringlist.Create; str.Clear; str.Add('00:MT2101::' + trim(strType) + ':' + SenderCode + ':' + ReciverCode + ':' + GetDatetime(datetimetostr(now), 4) + ':1.0' + ':' + SenderCode + GetDatetime(frm_op_seae_edi_data.t_op_seae.fieldbyname('开船日期').asstring, 1) + #39); Count := 0; str.Add('10' + ':' + frm_op_seae_edi_data.t_op_seae.fieldbyname('船舶IMO').asstring // 2 船舶IMO编号 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('船名').AsString) //3船名 + ':' //4舶国籍代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('航次').asstring) //5航次 + ':' //6 航线代码 + ':' //7 航线 + ':' //8预计到达日期 + ':' + GetDatetime(frm_op_seae_edi_data.t_op_seae.fieldbyname('开船日期').asstring, 1) + '086'//9 离港日期(船舶启运日期和时间) + ':CNQGD/4218'// + frm_op_seae_edi_data.t_op_seae.fieldbyname('装港代码').asstring // 10离港地点代码(船舶离境地海关代码) + ':CNQGD' //+ frm_op_seae_edi_data.t_op_seae.fieldbyname('装货港').asstring // 11 离港地点 + ':' //12 下一挂港代码 + ':' //13 下一挂港 + ':1' //14运输方式代码 + #39); str.Add('11' + ':' + frm_op_seae_edi_data.t_op_seae.fieldbyname('船公司代码').AsString //2 船公司(承运人)代码 + ':' //3 船公司(承运人) + ':' + SenderCode //4舱单传输人名称 ??? + ':' //5船舶代理企业代码 + ':' + GetDatetime(frm_op_seae_edi_data.t_op_seae.fieldbyname('开船日期').asstring, 3) //6物装载运输工具时间 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('卸货代码').asstring) //7船舶抵达关境内第一个目的港代码 + ':' + GetDatetime(frm_op_seae_edi_data.t_op_seae.fieldbyname('预抵日期').asstring, 3)//8船舶抵达关境内第一个目的港的日期和时间 + #39); if pos('FREIGHT PREPAID', trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('付费方式').asstring)) > 0 then XType := 'PP' else if pos('FREIGHT COLLECT', trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('付费方式').asstring)) > 0 then XType := 'CC' else XType := 'PP'; for k := 0 to frm_op_seae_edi_data.dxdbgrid1.SelectedCount - 1 do begin frm_op_seae_edi_data.t_op_seae.GotoBookmark(pointer(frm_op_seae_edi_data.dxdbgrid1.selectedrows[k])); if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'CY-CY' then TransType := '10' else if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'DOOR-DOOR' then TransType := '27' else if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'DOOR-PIER' then TransType := '28' else if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'PIER-DOOR' then TransType := '29' else TransType := '10'; // PIER TO PIER str.add('12:' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring) //2总提运单号 + ':' //3 前程运输船名代码 + ':' //4 前程运输船名 + ':' //5 前程运输航次 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('目的代码').asstring) //6 收货地代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('目的地').asstring) //7收货地名称 + ':CNQGD/4218'// + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('装港代码').asstring) //8装货港代码 + ':CNQGD' //+ trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('装货港').asstring) //9装货港 + ':' + TransType //10运输条款 + ':' + XType //11付款方式(运费支付方法代码) + ':' + GetDatetime(frm_op_seae_edi_data.t_op_seae.fieldbyname('开船日期').asstring, 1) + '086'//12 离港日期(船舶启运日期和时间) + ':' //13检疫代码 + ':' //14签发日期 + ':' //15币种(金额类型代码) + ':' //16 汇率 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('分提单号').asstring) //17 分提运单号 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('件数').asstring) //18 托运货物总件数 + ':' + trim(GetpkgsEdi(frm_op_seae_edi_data.t_op_seae.fieldbyname('包装').asstring)) //19 包装种类代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('重量').asstring) //20 货物总毛重 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('尺码').asstring) //21 货物体积 + ':' //22 托运货物价值 + ':' //23 码头作业指令代码 + ':' //24 拆箱人代码 + ':' //25 前一海关单证号 + ':' //26 前一海关单证类型代码 + ':001' //27 货物海关处理状态代码(1~99) + #39); str.add('13:' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('卸货代码').asstring) //2卸货地代码 ??? + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('卸货港').asstring) //3卸货港 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('目的代码').asstring) //4交货地代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('目的地').asstring) //5交货地 + ':' // 6 中转港代码 + ':' // 7 中转港 + ':' // 8 提单签发地代码(货物托运地或者国家代码) + ':' // 9 + ':' // 10 + ':' + GetDatetime(frm_op_seae_edi_data.t_op_seae.fieldbyname('预抵日期').asstring, 0) // 11 + ':' // 12 + ':' // 13 + #39); str.add('16' + ':' //2 发货人代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人名称').AsString) //3发货人名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人地址1').AsString) //4发货人地址(街道,邮箱) + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人城市').AsString) //5 城市名称 + ':' //6 省份代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人州').AsString) //7 省份名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人邮编').AsString) //8 邮政编码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人国家代码').AsString) //9 国家代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人电话').AsString) //10 发货人电话 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人联系人').AsString) //11 发货人EMAIL + ':' ///12 发货人传真 + #39); str.add('17' + ':' //2 收货人代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人名称').AsString) //3收货人名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人地址1').AsString) //4收货人地址(街道,邮箱) + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人城市').AsString) //5 城市名称 + ':' //6 省份代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人州').AsString) //7 省份名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人邮编').AsString) //8 邮政编码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人国家代码').AsString) //9 国家代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人电话').AsString) //10 收货人电话 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人联系人').AsString) //11 收货人EMAIL + ':' ///12 收货人传真 + ':' ///13 收货人具体联系人名称 + ':' ///14 收货人具体联系人电话 + ':' ///15 收货人具体联系人EMAIL + ':' ///16 收货人具体联系人传真 + #39); str.add('18' + ':' //2 通知人代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人名称').AsString) //3通知人名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人地址1').AsString) //4通知人地址(街道,邮箱) + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人城市').AsString) //5 城市名称 + ':' //6 省份代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人州').AsString) //7 省份名称 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人邮编').AsString) //8 邮政编码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人国家代码').AsString) //9 国家代码 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人电话').AsString) //10 通知人电话 + ':' + Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人联系人').AsString) //11 通知人EMAIL + ':' ///12 通知人传真 + #39); str.add('30' + ':' //2 + ':' //3 + ':' //4 + ':' //5 + #39); str.add('31' + ':' //2 + ':' //3 + ':' //4 + ':' //5 + ':' //6 + ':' //7 + #39); str.Add('41:1' //2货物序号 + ':' //3货类代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('件数').asstring) //4 货物件数 + ':' + trim(GetpkgsEdi(frm_op_seae_edi_data.t_op_seae.fieldbyname('包装').asstring)) //5 包装种类代码 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('包装').asstring) // 6 包装类型 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('重量').asstring) // 7货毛重 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('重量').asstring) // 8货净重 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('尺码').asstring) // 9货尺码 + ':' // 10海关税则编号 + ':' // 11海关手续代码 + ':' // 12原产地代码 + #39); if trim(frm_op_seae_edi_data.t_op_seae.FieldByName('货物标识').asstring) = 'D' then begin str.Add('43:' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品分类').asstring) //2危险品分类 + ':none' //3危险品页号 + ':' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品编号').asstring) //4联合国危险品编号 + ':none' //5危险品标签 + ':' //6 危险货物闪点 + ':' //7 船运危险品应急措施号 + ':' //8 医疗急救指南号 + ':' //9 应急联系 + ':' //10 温度计量单位 + ':' //11 设置温度 + ':' //12 冷藏最低温度 + ':' //13 冷藏最高温度 + ':' //14 危险品联系人姓名 + ':' //15 危险品联系人电话 + ':' //16 危险品联系人EMAIL + ':' //17 危险品联系人传真 + #39); end else if trim(frm_op_seae_edi_data.t_op_seae.FieldByName('货物标识').asstring) = 'R' then begin str.Add('43:' //2危险品分类 + ':' //3危险品页号 + ':' //4联合国危险品编号 + ':' //5危险品标签 + ':' //6 危险货物闪点 + ':' //7 船运危险品应急措施号 + ':' //8 医疗急救指南号 + ':' //9 应急联系 + ':C' //10 温度计量单位 + ':' + frm_op_seae_edi_data.t_op_seae.fieldbyname('设置温度').asstring //11 设置温度 + ':' //12 冷藏最低温度 + ':' //13 冷藏最高温度 + ':' //14 危险品联系人姓名 + ':' //15 危险品联系人电话 + ':' //16 危险品联系人EMAIL + ':' //17 危险品联系人传真 + #39); end else begin str.Add('43:' //2危险品分类 + ':' //3危险品页号 + ':' //4联合国危险品编号 + ':' //5危险品标签 + ':' //6 危险货物闪点 + ':' //7 船运危险品应急措施号 + ':' //8 医疗急救指南号 + ':' //9 应急联系 + ':' //10 温度计量单位 + ':' //11 设置温度 + ':' //12 冷藏最低温度 + ':' //13 冷藏最高温度 + ':' //14 危险品联系人姓名 + ':' //15 危险品联系人电话 + ':' //16 危险品联系人EMAIL + ':' //17 危险品联系人传真 + #39); end; Temprslt := Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('唛头').asstring); Temprslt := StringReplace(Temprslt, #13#10, ' ', [rfReplaceAll]); str.Add('44:' + Temprslt + #39); Temprslt := Changestr(frm_op_seae_edi_data.t_op_seae.fieldbyname('货物描述').asstring); Temprslt := StringReplace(Temprslt, #13#10, ' ', [rfReplaceAll]); str.Add('47:' + Temprslt + #39); Count := Count + 10; strsql := 'select * from t_op_ctn_edi ' + 'WHERE 编号=' + #39 + frm_op_seae_edi_data.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 str.Add('51' + ':' + trim(rs.fieldbyname('箱号').asstring) //2箱号 + ':' + trim(rs.fieldbyname('封号').asstring) //3主铅封号 + ':' + GetCtnCode(rs.fieldbyname('箱型').asstring, rs.fieldbyname('尺寸').asstring) //4集装箱尺寸类型 、、GetCtnCode + ':8' //5箱状态(重箱或者空箱标识代码) + ':' + trim(IntToStr(rs.fieldbyname('件数').AsInteger)) //6箱内货物件数 + ':' + trim(FloatToStr(rs.fieldbyname('重量').AsFloat)) //7箱内货重 + ':0' //8箱皮重 + ':' + trim(FloatToStr(rs.fieldbyname('尺码').AsFloat)) //9箱内货物尺码 + ':' //10 + ':' //11 + ':' //12 + ':' // 13 + ':' // 14 + ':' // 15 + ':2' // 16 + #39); str.Add('52' + ':M' //3 封志类型 + ':CA' //4 施加封志人 + ':' + trim(rs.fieldbyname('封号').asstring) //2 封志号 + #39); Count := Count + 1; { if rs.fieldbyname('hts号').asstring<>'' then begin str.Add ('53' +':M' //3 封志类型 +':CA' //4 施加封志人 +':'+trim(rs.fieldbyname('封号').asstring) //2 封志号 +#39); Count:=Count+1; end; } rs.Next; end; end; rs.Close; rs.Destroy; except on e: exception do begin rs.Close; rs.Destroy; exit; end; end; frm_op_seae_edi_data.t_op_seae.Edit; frm_op_seae_edi_data.t_op_seae.FieldByName('EDI状态').AsString := '已发送'; frm_op_seae_edi_data.t_op_seae.Post; end; str.Add('99:' + inttostr(Count + 2) + #39); end; Result := str; close; end; // function Tfrm_op_seae_edi_custom_hgydt.CreateSIEdiFile_XML: TStrings; var str: Tstringlist; i, j, Count: integer; strsql, strRmain: string; rs: Tadoquery; wide_str: widestring; k: integer; inifile1: Tinifile; strType, XType, TransType: string; strDatetime, IMO: string; SenderCode, ReciverCode: string; alist: TStringList; begin if not isEditrue(frm_op_seae_edi_data.t_op_seae) then begin Exit; end; 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 := '5' else if bsSkinRadioGroup1.ItemIndex = 4 then strType := '0' else if bsSkinRadioGroup1.ItemIndex = 5 then strType := '11' else strType := '9'; if frm_op_seae_edi_data.dxdbgrid1.SelectedCount <= 1 then begin str := Tstringlist.Create; str.Clear; str.Add(''); // str.Add(''); str.Add(''); str.Add(''); // str.Add('' + SenderCode + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring) + GetDatetime(datetimetostr(now), 4) + ''); // str.Add('' + strType + ''); // str.Add('MT2101'); // str.Add('' + SenderCode + ''); // str.Add('' + ReciverCode + ''); // str.Add('' + GetDatetime(datetimetostr(now), 4) + ''); // str.Add('1.0'); str.Add(''); // str.Add(''); // str.Add(''); // str.Add('' + SenderCode + ''); str.Add(''); // str.Add(''); // str.Add('CNQGD/4218'); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('装港代码').asstring) + ''); str.Add(''); // str.Add(''); // str.Add('' + SenderCode + ''); str.Add(''); // str.Add(''); // str.Add('' + frm_op_seae_edi_data.t_op_seae.fieldbyname('船公司代码').AsString + ''); str.Add(''); // str.Add(''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('航次').asstring) + ''); // str.Add('1'); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('船舶IMO').asstring) + ''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('船名').AsString) + ''); { // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('卸货代码').asstring) + ''); // str.Add('' + GetDatetime(DateToStr(frm_op_seae_edi_data.t_op_seae.fieldbyname('开船日期').AsDateTime+5), 1) + '086' + ''); // str.Add('' + GetDatetime(DateToStr(frm_op_seae_edi_data.t_op_seae.fieldbyname('预抵日期').AsDateTime+5),1)+ '086' + ''); } str.Add(''); // str.Add(''); // str.Add(''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring) + ''); // if bsSkinRadioGroup1.ItemIndex = 3 then begin for i := 0 to bsSkinCheckListBox1.Items.Count - 1 do begin if bsSkinCheckListBox1.Checked[i] then begin str.Add('' + COPY(bsSkinCheckListBox1.Items[i], 1, Pos(':', bsSkinCheckListBox1.Items[i]) - 1) + ''); end; end; end; if pos('FREIGHT PREPAID', trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('付费方式').asstring)) > 0 then XType := 'PP' else if pos('FREIGHT COLLECT', trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('付费方式').asstring)) > 0 then XType := 'CC' else XType := 'PP'; if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'CY-CY' then TransType := '10' else if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'DOOR-DOOR' then TransType := '27' else if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'DOOR-PIER' then TransType := '28' else if uppercase(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输条款').asstring) = 'PIER-DOOR' then TransType := '29' else TransType := '10'; // PIER TO PIER // str.Add('' + TransType + ''); // { str.Add(''); // str.Add(''); str.Add(''); } str.Add(''); // if trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('分提单号').asstring) <> '' then begin str.Add(''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('分提单号').asstring) + ''); str.Add(''); end else begin { str.Add(''); // str.Add(''); str.Add(''); } end; // // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('尺码').asstring) + ''); // // str.Add(''); // str.Add(''); // // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('装港代码').asstring) + ''); str.Add('CNQGD/4218'); // str.Add(''+FormatDateTime('yyyymmdd',frm_op_seae_edi_data.t_op_seae.fieldbyname('开船日期').AsDateTime+15) + '120000'); // str.Add(''); str.Add(''); // str.Add(''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('卸货代码').asstring) + ''); // // str.Add(''); // str.Add('' + GetDatetime(DateToStr(frm_op_seae_edi_data.t_op_seae.fieldbyname('预抵日期').AsDateTime+5), 0) + ''); str.Add(''); // str.Add(''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('目的代码').asstring) + ''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('目的地').asstring) + ''); str.Add(''); if trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('分提单号').asstring) <> '' then begin str.Add(''); // str.Add('CN37'); str.Add(''); end else begin str.Add(''); // str.Add('CNTAO'); str.Add(''); end; { // str.Add(''); // str.Add('); str.Add('') } str.Add('001'); // str.Add(''); // str.Add('' + XType + ''); str.Add(''); // str.Add(''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('件数').asstring) + ''); // str.Add('' + trim(GetpkgsEdi(frm_op_seae_edi_data.t_op_seae.fieldbyname('包装').asstring)) + ''); str.Add(''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('重量').asstring) + ''); { } // str.Add(''); // // str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人企业代码').AsString)) + ''); // str.Add(''); // str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人名称').AsString)) + ''); // str.Add('
'); // str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人地址1').AsString)) + ''); { } str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人国家代码').AsString)) + ''); str.Add('
'); if (frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人电话').AsString <> '') or (frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人邮箱').AsString <> '') then begin // str.Add(''); // if (frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人电话').AsString <> '') then begin str.Add('' + formatAfrstr(trim(formattel(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人电话').AsString))) + ''); // str.Add('TE'); end else begin str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('收货人邮箱').AsString)) + ''); // str.Add('EM'); end; str.Add(''); end; { } str.Add('
'); // str.Add(''); // // str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人企业代码').AsString)) + ''); // str.Add(''); // str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人名称').AsString)) + ''); // str.Add('
'); // str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人地址1').AsString)) + ''); { } str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人国家代码').AsString)) + ''); str.Add('
'); if (frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人电话').AsString <> '') or (frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人邮箱').AsString <> '') then begin // str.Add(''); // if (frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人电话').AsString <> '') then begin str.Add('' + formatAfrstr(trim(formattel(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人电话').AsString))) + ''); // str.Add('TE'); end else begin str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人邮箱').AsString)) + ''); // str.Add('EM'); end; str.Add(''); end; { } str.Add('
'); // str.Add(''); // // str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人企业代码').AsString)) + ''); // str.Add(''); // str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人名称').AsString)) + ''); // str.Add('
'); // str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人地址1').AsString)) + ''); { } str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('通知人国家代码').AsString)) + ''); str.Add('
'); { } if (frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人电话').AsString <> '') or (frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人邮箱').AsString <> '') then begin // str.Add(''); // if (frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人电话').AsString <> '') then begin str.Add('' + formatAfrstr(trim(formattel(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人电话').AsString))) + ''); // str.Add('TE'); end else begin str.Add('' + formatAfrstr(trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('发货人邮箱').AsString)) + ''); // str.Add('EM'); end; str.Add(''); end; str.Add('
'); { } strsql := 'select * from t_op_ctn_edi ' + 'WHERE 编号=' + #39 + frm_op_seae_edi_data.t_op_seae.fieldbyname('编号').asstring + #39; try rs := CreateAdoQuery; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; if not rs.IsEmpty then begin rs.First; while not rs.Eof do begin // str.Add(''); // str.Add(''); // str.Add('' + rs.fieldbyname('箱号').asstring + ''); str.Add(''); // str.Add('' + GetCtnCode(rs.fieldbyname('箱型').asstring, rs.fieldbyname('尺寸').asstring) + ''); // str.Add('2'); // if rs.FieldByName('重箱整箱标志').AsString='重箱' then str.Add('5') else str.Add('8'); // if trim(rs.fieldbyname('施封人').asstring) = '' then begin str.Add('M/' + trim(rs.fieldbyname('封号').asstring) + ''); end else begin str.Add('M/' + trim(rs.fieldbyname('封号').asstring) + ''); end; str.Add(''); rs.Next; end; end; rs.Close; rs.Destroy; except on e: exception do begin rs.Close; rs.Destroy; exit; end; end; k := 1; alist := TStringList.Create; strsql := 'select * from t_op_ctn_edi ' + 'WHERE 编号=' + #39 + frm_op_seae_edi_data.t_op_seae.fieldbyname('编号').asstring + #39; try rs := CreateAdoQuery; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; if not rs.IsEmpty then begin rs.First; while not rs.Eof do begin // str.Add(''); // str.Add('' + inttostr(k) + ''); // str.Add(''); // str.Add('' + trim(IntToStr(rs.fieldbyname('件数').AsInteger)) + ''); // str.Add('' + trim(GetpkgsEdi(rs.fieldbyname('包装').asstring)) + ''); alist.text := ''; if trim(rs.fieldbyname('唛头').asstring) <> '' then alist.text := trim(rs.fieldbyname('唛头').asstring) else alist.text := trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('唛头').asstring); // str.Add('' + formatAfrstr(alist.text) + ''); str.Add(''); alist.text := ''; if trim(rs.fieldbyname('货描').asstring) <> '' then alist.text := trim(rs.fieldbyname('货描').asstring) else alist.text := trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('货物描述').asstring); // str.Add(''); // str.Add('' + formatAfrstr(alist.text) + ''); // if trim(frm_op_seae_edi_data.t_op_seae.FieldByName('货物标识').asstring) = 'D' then begin str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品编号').asstring) + ''); end; // if trim(rs.fieldbyname('HTS号').asstring) <> '' then str.Add('' + rs.fieldbyname('HTS号').asstring + '') else begin if trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输方式').asstring) <> '' then str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('运输方式').asstring) + ''); end; str.Add(''); // { str.Add(''); // str.Add(''); str.Add(''); } // str.Add(''); // str.Add('' + trim(FloatToStr(rs.fieldbyname('重量').AsFloat)) + ''); str.Add(''); // str.Add(''); // str.Add('' + trim(rs.fieldbyname('箱号').asstring) + ''); str.Add(''); // { str.Add(''); // str.Add(''); str.Add(''); } { // str.Add(''); // str.Add(''); str.Add(''); } // { str.Add(''); // str.Add(''); str.Add(''); } str.Add(''); k := k + 1; rs.Next; end; end; rs.Close; rs.Destroy; alist.Free; except on e: exception do begin rs.Close; rs.Destroy; exit; end; end; str.Add('
'); // { str.Add(''); // str.Add(''); str.Add(''); } str.Add('
'); str.Add('
'); frm_op_seae_edi_data.t_op_seae.Edit; frm_op_seae_edi_data.t_op_seae.FieldByName('EDI状态').AsString := '已发送'; frm_op_seae_edi_data.t_op_seae.Post; end; Result := str; end; //2018-8-2 添加支持多票业务 function Tfrm_op_seae_edi_custom_hgydt.CreateSIEdiFile_XML_Multi: TStrings; var str: Tstringlist; i, j, Count: integer; strsql, strRmain: string; rs: Tadoquery; wide_str: widestring; k: integer; inifile1: Tinifile; strType, XType, TransType: string; strDatetime, IMO: string; SenderCode, ReciverCode: string; alist: TStringList; datacount, tmpint: Integer; aQuery: TADOQuery; bsnostr: WideString; begin //打开多票业务 for i := 0 to frm_op_seae_edi_data.dxDBGrid1.SelectedCount - 1 do begin frm_op_seae_edi_data.t_op_seae.GotoBookmark(pointer(frm_op_seae_edi_data.dxDBGrid1.selectedrows[i])); if bsnostr = '' then bsnostr := '''' + frm_op_seae_edi_data.t_op_seae.fieldbyname('编号').AsString + '''' else bsnostr := bsnostr + ',' + '''' + frm_op_seae_edi_data.t_op_seae.fieldbyname('编号').AsString + ''''; end; aQuery := CreateAdoQuery; with aQuery do begin Close; SQL.Clear; SQL.Add('select * from t_op_seae_edi where 编号 in (' + bsnostr + ')'); Open; end; //检查多票业务是否合法 if not isEditrue_Multi(aQuery) then begin Exit; end; 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 := '5' else if bsSkinRadioGroup1.ItemIndex = 4 then strType := '0' else if bsSkinRadioGroup1.ItemIndex = 5 then strType := '11' else strType := '9'; str := Tstringlist.Create; str.Clear; str.Add(''); // str.Add(''); str.Add(''); str.Add(''); // str.Add('' + SenderCode + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring) + GetDatetime(datetimetostr(now), 4) + ''); // str.Add('' + strType + ''); // str.Add('MT2101'); // str.Add('' + SenderCode + ''); // str.Add('' + ReciverCode + ''); // str.Add('' + GetDatetime(datetimetostr(now), 4) + ''); // str.Add('1.0'); str.Add(''); // str.Add(''); // str.Add(''); // str.Add('' + ReciverCode + ''); str.Add(''); // str.Add(''); // str.Add('CNQGD/4218'); str.Add(''); // str.Add(''); // str.Add('' + SenderCode + ''); str.Add(''); // str.Add(''); // str.Add('' + SenderCode+ ''); str.Add(''); // str.Add(''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('航次').asstring) + ''); // str.Add('1'); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('船舶IMO').asstring) + ''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('船名').AsString) + ''); { // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('卸货代码').asstring) + ''); // str.Add('' + GetDatetime(DateToStr(frm_op_seae_edi_data.t_op_seae.fieldbyname('开船日期').AsDateTime+5), 1) + '086' + ''); // str.Add('' + GetDatetime(DateToStr(frm_op_seae_edi_data.t_op_seae.fieldbyname('预抵日期').AsDateTime+5), 1) + '086' + ''); } str.Add(''); //此处开始添加多票业务 aQuery.First; while not aQuery.Eof do begin // str.Add(''); // str.Add(''); // str.Add('' + trim(aQuery.fieldbyname('主提单号').asstring) + ''); // if bsSkinRadioGroup1.ItemIndex = 3 then begin for i := 0 to bsSkinCheckListBox1.Items.Count - 1 do begin if bsSkinCheckListBox1.Checked[i] then begin str.Add('' + COPY(bsSkinCheckListBox1.Items[i], 1, Pos(':', bsSkinCheckListBox1.Items[i]) - 1) + ''); end; end; end; if pos('FREIGHT PREPAID', trim(aQuery.fieldbyname('付费方式').asstring)) > 0 then XType := 'PP' else if pos('FREIGHT COLLECT', trim(aQuery.fieldbyname('付费方式').asstring)) > 0 then XType := 'CC' else XType := 'PP'; if uppercase(aQuery.fieldbyname('运输条款').asstring) = 'CY-CY' then TransType := '10' else if uppercase(aQuery.fieldbyname('运输条款').asstring) = 'DOOR-DOOR' then TransType := '27' else if uppercase(aQuery.fieldbyname('运输条款').asstring) = 'DOOR-PIER' then TransType := '28' else if uppercase(aQuery.fieldbyname('运输条款').asstring) = 'PIER-DOOR' then TransType := '29' else TransType := '10'; // PIER TO PIER // str.Add('' + TransType + ''); str.Add(''); // if trim(aQuery.fieldbyname('分提单号').asstring) <> '' then begin str.Add(''); // str.Add('' + trim(aQuery.fieldbyname('分提单号').asstring) + ''); str.Add(''); end; { // str.Add('' + trim(aQuery.fieldbyname('尺码').asstring) + ''); } // str.Add(''); // str.Add('CNQGD/4218'); // // str.Add('' + GetDatetime(DateToStr(aQuery.fieldbyname('开船日期').AsDateTime+5), 1) + '086' + ''); str.Add(''+FormatDateTime('yyyymmdd',aQuery.fieldbyname('开船日期').AsDateTime+15) + '120000'); str.Add(''); // str.Add(''); // str.Add('' + trim(aQuery.fieldbyname('卸货代码').asstring) + ''); // // str.Add('' + GetDatetime(DateToStr(aQuery.fieldbyname('开船日期').AsDateTime+10), 0) + ''); // str.Add(''); str.Add(''); // str.Add(''); // str.Add('' + trim(aQuery.fieldbyname('目的代码').asstring) + ''); // str.Add('' + trim(aQuery.fieldbyname('目的地').asstring) + ''); str.Add(''); if trim(aQuery.fieldbyname('分提单号').asstring) <> '' then begin str.Add(''); // str.Add('CN37'); str.Add(''); end else begin str.Add(''); // str.Add('CNTAO'); str.Add(''); end; str.Add('001'); // str.Add(''); // str.Add('' + XType + ''); str.Add(''); // str.Add(''); // str.Add('' + trim(aQuery.fieldbyname('件数').asstring) + ''); // str.Add('' + trim(GetpkgsEdi(aQuery.fieldbyname('包装').asstring)) + ''); str.Add(''); // str.Add('' + trim(aQuery.fieldbyname('重量').asstring) + ''); // str.Add(''); // // str.Add(''); // str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('收货人名称').AsString)) + ''); // str.Add('
'); // str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('收货人地址1').AsString)) + ''); str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('收货人国家代码').AsString)) + ''); str.Add('
'); if (aQuery.fieldbyname('收货人电话').AsString <> '') or (aQuery.fieldbyname('收货人邮箱').AsString <> '') then begin // str.Add(''); // if (aQuery.fieldbyname('收货人电话').AsString <> '') then begin str.Add('' + formatAfrstr(trim(formattel(aQuery.fieldbyname('收货人电话').AsString))) + ''); // str.Add('TE'); end else begin str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('收货人邮箱').AsString)) + ''); // str.Add('EM'); end; str.Add(''); end; str.Add('
'); // str.Add(''); // // str.Add(''); // str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('发货人名称').AsString)) + ''); // str.Add('
'); // str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('发货人地址1').AsString)) + ''); str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('发货人国家代码').AsString)) + ''); str.Add('
'); if (aQuery.fieldbyname('发货人电话').AsString <> '') or (aQuery.fieldbyname('发货人邮箱').AsString <> '') then begin // str.Add(''); // if (aQuery.fieldbyname('发货人电话').AsString <> '') then begin str.Add('' + formatAfrstr(trim(formattel(aQuery.fieldbyname('发货人电话').AsString))) + ''); // str.Add('TE'); end else begin str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('发货人邮箱').AsString)) + ''); // str.Add('EM'); end; str.Add(''); end; str.Add('
'); // str.Add(''); // // str.Add(''); // str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('通知人名称').AsString)) + ''); // str.Add('
'); // str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('通知人地址1').AsString)) + ''); str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('通知人国家代码').AsString)) + ''); str.Add('
'); if (aQuery.fieldbyname('通知人电话').AsString <> '') or (aQuery.fieldbyname('通知人邮箱').AsString <> '') then begin // str.Add(''); // if (aQuery.fieldbyname('通知人电话').AsString <> '') then begin str.Add('' + formatAfrstr(trim(formattel(aQuery.fieldbyname('通知人电话').AsString))) + ''); // str.Add('TE'); end else begin str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('通知人邮箱').AsString)) + ''); // str.Add('EM'); end; str.Add(''); end; str.Add('
'); if trim(aQuery.FieldByName('货物标识').asstring) = 'D' then begin str.Add(''); str.Add('' + formatAfrstr(trim(formattel(aQuery.fieldbyname('危险品联系人').AsString))) + ''); str.Add(''); str.Add('' + formatAfrstr(trim(aQuery.fieldbyname('危险品电话').AsString)) + ''); // str.Add('TE'); str.Add(''); str.Add(''); END; strsql := 'select * from t_op_ctn_edi ' + 'WHERE 编号=' + #39 + aQuery.fieldbyname('编号').asstring + #39; try rs := CreateAdoQuery; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; if not rs.IsEmpty then begin rs.First; while not rs.Eof do begin // str.Add(''); // str.Add(''); // str.Add('' + rs.fieldbyname('箱号').asstring + ''); str.Add(''); // str.Add('' + GetCtnCode(rs.fieldbyname('箱型').asstring, rs.fieldbyname('尺寸').asstring) + ''); // str.Add('2'); // if rs.FieldByName('重箱整箱标志').AsString='重箱' then str.Add('5') else str.Add('8'); // if trim(rs.fieldbyname('施封人').asstring) = '' then begin str.Add('M/' + trim(rs.fieldbyname('封号').asstring) + ''); end else begin str.Add('M/' + trim(rs.fieldbyname('封号').asstring) + ''); end; str.Add(''); rs.Next; end; end; rs.Close; rs.Destroy; except on e: exception do begin rs.Close; rs.Destroy; exit; end; end; k := 1; alist := TStringList.Create; strsql := 'select * from t_op_ctn_edi ' + 'WHERE 编号=' + #39 + aQuery.fieldbyname('编号').asstring + #39; try rs := CreateAdoQuery; rs.sql.clear; rs.sql.add(strsql); rs.Open; rs.First; if not rs.IsEmpty then begin rs.First; while not rs.Eof do begin // str.Add(''); // str.Add('' + inttostr(k) + ''); // str.Add(''); // str.Add('' + trim(IntToStr(rs.fieldbyname('件数').AsInteger)) + ''); // str.Add('' + trim(GetpkgsEdi(rs.fieldbyname('包装').asstring)) + ''); alist.text := ''; if trim(rs.fieldbyname('唛头').asstring) <> '' then alist.text := trim(rs.fieldbyname('唛头').asstring) else alist.text := trim(aQuery.fieldbyname('唛头').asstring); // str.Add('' + formatAfrstr(alist.text) + ''); str.Add(''); alist.text := ''; if trim(rs.fieldbyname('货描').asstring) <> '' then alist.text := trim(rs.fieldbyname('货描').asstring) else alist.text := trim(aQuery.fieldbyname('货物描述').asstring); // str.Add(''); // str.Add('' + formatAfrstr(alist.text) + ''); // if trim(aQuery.FieldByName('货物标识').asstring) = 'D' then begin str.Add('' + trim(aQuery.fieldbyname('危险品编号').asstring) + ''); end; // if trim(rs.fieldbyname('HTS号').asstring) <> '' then str.Add('' + rs.fieldbyname('HTS号').asstring + '') else begin if trim(aQuery.fieldbyname('运输方式').asstring) <> '' then str.Add('' + trim(aQuery.fieldbyname('运输方式').asstring) + ''); end; str.Add(''); // { str.Add(''); // str.Add(''); str.Add(''); } // str.Add(''); // str.Add('' + trim(FloatToStr(rs.fieldbyname('重量').AsFloat)) + ''); str.Add(''); // str.Add(''); // str.Add('' + trim(rs.fieldbyname('箱号').asstring) + ''); str.Add(''); str.Add(''); k := k + 1; rs.Next; end; end; rs.Close; rs.Destroy; alist.Free; except on e: exception do begin rs.Close; rs.Destroy; exit; end; end; str.Add('
'); aQuery.Next; end; // { str.Add(''); // str.Add(''); str.Add(''); } str.Add('
'); str.Add('
'); with aQuery do begin Close; SQL.Clear; SQL.Add('update t_op_seae_edi set EDI状态=''已发送'' where 编号 in ('+bsnostr+')'); ExecSQL; end; FreeAndNil(aQuery); { frm_op_seae_edi_data.t_op_seae.Edit; frm_op_seae_edi_data.t_op_seae.FieldByName('EDI状态').AsString := '已发送'; frm_op_seae_edi_data.t_op_seae.Post; } Result := str; end; function Tfrm_op_seae_edi_custom_hgydt.GetCntrEdi(cntrsize: string): string; var aQuery: TADOQuery; SL:TStringList; 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_custom_hgydt.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_custom_hgydt.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_custom_hgydt.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_custom_hgydt.bsSkinButton4Click(Sender: TObject); begin if frm_op_seae_edi_custom_hgydt.Height = 349 then frm_op_seae_edi_custom_hgydt.Height := 200 else begin frm_op_seae_edi_custom_hgydt.Height := 349; bsSkinCheckListBox1.Visible := False; bsSkinGroupBox1.Visible := True; end; end; procedure Tfrm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1Click(Sender: TObject); begin if bsSkinRadioGroup1.ItemIndex = 3 then begin frm_op_seae_edi_custom_hgydt.Height := 550; bsSkinCheckListBox1.Visible := True; bsSkinGroupBox1.Visible := False; Memo2.Visible:=false; Label17.Visible:=false; Memo1.Visible:=false; Label16.Visible:=false; end else if bsSkinRadioGroup1.ItemIndex = 2 then begin frm_op_seae_edi_custom_hgydt.Height := 350; bsSkinCheckListBox1.Visible := False; bsSkinGroupBox1.Visible := False; Memo2.Visible:=True; Label17.Visible:=True; Memo1.Visible:=false; Label16.Visible:=false; end else begin frm_op_seae_edi_custom_hgydt.Height := 350; bsSkinCheckListBox1.Visible := False; Memo2.Visible:=false; Label17.Visible:=false; Memo1.Visible:=True; Label16.Visible:=True; end; end; procedure Tfrm_op_seae_edi_custom_hgydt.getwebservice_ds; begin try mHttpRIO_ds := THTTPRIO.Create(nil); mHttpRIO_ds.WSDLLocation := 'http://221.3.83.5:8090/webservice/DsWebService.asmx?WSDL'; mHttpRIO_ds.URL := 'http://221.3.83.5:8090/webservice/DsWebService.asmx'; mHttpRIO_ds.Port := 'DsWebServiceSoap'; mHttpRIO_ds.Service := 'DsWebService'; mHttpRIO_ds.HTTPWebNode.UseUTF8InHeader := true; mServiceSoap_Ds := mHttpRIO_ds as DsWebServiceSoap; InvRegistry.RegisterInvokeOptions(TypeInfo(DsWebServiceSoap), ioDocument); //就是这一行 except on E: Exception do begin ShowMessage(e.Message); exit; end; end; end; procedure Tfrm_op_seae_edi_custom_hgydt.bsSkinButton5Click(Sender: TObject); var MultiPartFormDataStream: TIdMultiPartFormDataStream; Str: TStrings; inifile1: Tinifile; i: integer; numunzipped: integer; fileType,ScriptPath,mblno: string; str_file:widestring; IdHTTP1:TIdHTTP; begin if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 0 then fileType := '-9' else if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 1 then fileType := '-2' else if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 2 then fileType := '-3' else if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 3 then fileType := '-5' else if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 4 then fileType := '-0' else if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 5 then fileType := '-11' else fileType := '-9'; inifile1 := Tinifile.Create(ExtractFilePath(application.ExeName) + 'main.ini'); inifile1.WriteString('customHGYDT', 'SEND', frm_op_seae_edi_custom_hgydt.edit1.text); inifile1.WriteString('customHGYDT', 'RECIEVE', frm_op_seae_edi_custom_hgydt.edit2.text); inifile1.WriteString('customHGYDT', 'SENDNAME', frm_op_seae_edi_custom_hgydt.edit3.text); inifile1.WriteString('customHGYDT', 'FTPSERVER', frm_op_seae_edi_custom_hgydt.edit4.text); inifile1.WriteString('customHGYDT', 'FTPPATH', frm_op_seae_edi_custom_hgydt.edit5.text); inifile1.WriteString('customHGYDT', 'FTPNAME', frm_op_seae_edi_custom_hgydt.edit6.text); inifile1.WriteString('customHGYDT', 'FTPPASS', frm_op_seae_edi_custom_hgydt.edit7.text); inifile1.WriteString('customHGYDT', 'SENDDEPT', frm_op_seae_edi_custom_hgydt.edit8.text); inifile1.WriteString('customHGYDT', 'SENDATTN', frm_op_seae_edi_custom_hgydt.edit9.text); inifile1.WriteString('customHGYDT', 'SENDTEL', frm_op_seae_edi_custom_hgydt.edit10.text); inifile1.WriteString('customHGYDT', 'SENDFAX', frm_op_seae_edi_custom_hgydt.edit11.text); inifile1.WriteString('customHGYDT', 'SENDEMAIL', frm_op_seae_edi_custom_hgydt.edit12.text); inifile1.WriteString('customHGYDT', 'SENDFILETYPE', frm_op_seae_edi_custom_hgydt.ComboBox1.text); inifile1.WriteString('customHGYDT','ESINAME',frm_op_seae_edi_custom_hgydt.edit13.text); inifile1.WriteString('customHGYDT','ESIPASS',frm_op_seae_edi_custom_hgydt.edit14.text); Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'CNTRSTR.txt'); inifile1.free; Str := Tstringlist.Create; try if (frm_op_seae_edi_custom_hgydt.ComboBox1.Text = '') or (frm_op_seae_edi_custom_hgydt.ComboBox1.Text = 'txt') then Str := frm_op_seae_edi_custom_hgydt.CreateSIEdiFile_MBL else begin if frm_op_seae_edi_custom_hgydt.bsSkinCheckRadioBox2.Checked then Str := frm_op_seae_edi_custom_hgydt.CreateSIEdiFile_XML_Multi else Str := frm_op_seae_edi_custom_hgydt.CreateSIEdiFile_xml; end; for i := 0 to Str.Count - 1 do begin if frm_op_seae_edi_custom_hgydt.IsZhongwen(Str[i]) then begin if MessageDlg('此票业务可能含有中文字符或其他不规范字符,确实要继续上传吗!', mtWarning, [mbYes, mbNo], 0) = mrNo then exit; end; end; ScriptPath:=ExtractFilePath(ParamStr(0))+'EDIFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); if (frm_op_seae_edi_custom_hgydt.ComboBox1.Text = '') or (frm_op_seae_edi_custom_hgydt.ComboBox1.Text = 'txt') then begin str_file:=ScriptPath +frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+ fileType+'.txt'; Str.SaveToFile(str_file); end else begin str_file:=ScriptPath +frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+ fileType+'.xml'; if (fileType='-3') then begin SaveUTF8File(Str.Text,str_file); end else begin Str.SaveToFile(str_file); end; // Str.SaveToFile(str_file); end; mblno:=frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring+'(一点通)'; TDsThread.create(str_file,'WLXXDR','',frm_op_seae_edi_custom_hgydt.Edit13.Text,frm_op_seae_edi_custom_hgydt.Edit14.Text); // TMyThread.create(str_file,'text/xml','WLXXDR',frm_op_seae_edi_custom_hgydt.Edit14.Text,mblno,'dzka'); { MultiPartFormDataStream := TIdMultiPartFormDataStream.Create; IdHTTP1:=TIdHTTP.Create(Application); mblno:= frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring; try IdHttp1.Request.Accept := '*/*'; IdHttp1.Request.AcceptLanguage:='zh-CN'; IdHttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType; MultiPartFormDataStream.AddFormField('username',frm_op_seae_edi_custom_hgydt.Edit13.Text); MultiPartFormDataStream.AddFormField('password',frm_op_seae_edi_custom_hgydt.Edit14.Text); MultiPartFormDataStream.AddFormField('action','dzka'); MultiPartFormDataStream.AddFormField('encode','1'); MultiPartFormDataStream.AddFile('filename',str_file,'text/xml'); MultiPartFormDataStream.Position := 0; ShowMessage(mblno+'---'+UnicodeToChinese(IdHTTP1.Post('http://47.94.19.3:8111/cdpost.ashx', MultiPartFormDataStream))); finally MultiPartFormDataStream.Free; FreeAndNil(IdHTTP1); end; } finally FreeAndNil(Str) end; close; end; procedure Tfrm_op_seae_edi_custom_hgydt.bsSkinButton3Click( Sender: TObject); //function PlateThreadFun(p: Pointer): Integer; stdcall; var MultiPartFormDataStream: TIdMultiPartFormDataStream; Str: TStrings; inifile1: Tinifile; i: integer; numunzipped: integer; fileType,ScriptPath,mblno: string; str_file:widestring; IdHTTP1:TIdHTTP; begin if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 0 then fileType := '-9' else if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 1 then fileType := '-2' else if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 2 then fileType := '-3' else if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 3 then fileType := '-5' else if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 4 then fileType := '-0' else if frm_op_seae_edi_custom_hgydt.bsSkinRadioGroup1.ItemIndex = 5 then fileType := '-11' else fileType := '-9'; inifile1 := Tinifile.Create(ExtractFilePath(application.ExeName) + 'main.ini'); inifile1.WriteString('customHGYDT', 'SEND', frm_op_seae_edi_custom_hgydt.edit1.text); inifile1.WriteString('customHGYDT', 'RECIEVE', frm_op_seae_edi_custom_hgydt.edit2.text); inifile1.WriteString('customHGYDT', 'SENDNAME', frm_op_seae_edi_custom_hgydt.edit3.text); inifile1.WriteString('customHGYDT', 'FTPSERVER', frm_op_seae_edi_custom_hgydt.edit4.text); inifile1.WriteString('customHGYDT', 'FTPPATH', frm_op_seae_edi_custom_hgydt.edit5.text); inifile1.WriteString('customHGYDT', 'FTPNAME', frm_op_seae_edi_custom_hgydt.edit6.text); inifile1.WriteString('customHGYDT', 'FTPPASS', frm_op_seae_edi_custom_hgydt.edit7.text); inifile1.WriteString('customHGYDT', 'SENDDEPT', frm_op_seae_edi_custom_hgydt.edit8.text); inifile1.WriteString('customHGYDT', 'SENDATTN', frm_op_seae_edi_custom_hgydt.edit9.text); inifile1.WriteString('customHGYDT', 'SENDTEL', frm_op_seae_edi_custom_hgydt.edit10.text); inifile1.WriteString('customHGYDT', 'SENDFAX', frm_op_seae_edi_custom_hgydt.edit11.text); inifile1.WriteString('customHGYDT', 'SENDEMAIL', frm_op_seae_edi_custom_hgydt.edit12.text); inifile1.WriteString('customHGYDT', 'SENDFILETYPE', frm_op_seae_edi_custom_hgydt.ComboBox1.text); inifile1.WriteString('customHGYDT','ESINAME',frm_op_seae_edi_custom_hgydt.edit13.text); inifile1.WriteString('customHGYDT','ESIPASS',frm_op_seae_edi_custom_hgydt.edit14.text); Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'CNTRSTR.txt'); inifile1.free; Str := Tstringlist.Create; try if (frm_op_seae_edi_custom_hgydt.ComboBox1.Text = '') or (frm_op_seae_edi_custom_hgydt.ComboBox1.Text = 'txt') then Str := frm_op_seae_edi_custom_hgydt.CreateSIEdiFile_MBL else begin if (fileType='-3') then begin Str := frm_op_seae_edi_custom_hgydt.CreateSIEdiFile_XML_Del; end else begin if frm_op_seae_edi_custom_hgydt.bsSkinCheckRadioBox2.Checked then Str := frm_op_seae_edi_custom_hgydt.CreateSIEdiFile_XML_Multi else Str := frm_op_seae_edi_custom_hgydt.CreateSIEdiFile_xml; end; end; for i := 0 to Str.Count - 1 do begin if frm_op_seae_edi_custom_hgydt.IsZhongwen(Str[i]) then begin if MessageDlg('此票业务可能含有中文字符或其他不规范字符,确实要继续上传吗!', mtWarning, [mbYes, mbNo], 0) = mrNo then exit; end; end; ScriptPath:=ExtractFilePath(ParamStr(0))+'EDIFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); if (frm_op_seae_edi_custom_hgydt.ComboBox1.Text = '') or (frm_op_seae_edi_custom_hgydt.ComboBox1.Text = 'txt') then begin str_file:=ScriptPath +frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring+'%'+frm_op_seae_edi_data.t_op_seae.fieldbyname('船名').asstring +'%'+frm_op_seae_edi_data.t_op_seae.fieldbyname('航次').asstring+'%' +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+ fileType+'.txt'; Str.SaveToFile(str_file); end else begin if (fileType='-3') then begin str_file:=ScriptPath +frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring+'delete.xml'; SaveUTF8File(Str.Text,str_file); end else begin str_file:=ScriptPath +frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring+'%'+frm_op_seae_edi_data.t_op_seae.fieldbyname('船名').asstring +'%'+frm_op_seae_edi_data.t_op_seae.fieldbyname('航次').asstring+'%' +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+ fileType+'.xml'; Str.SaveToFile(str_file); end; // end; // mblno:=frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring+'(一点通)'; // TMyThread.create(str_file,'text/xml',frm_op_seae_edi_custom_hgydt.Edit13.Text,frm_op_seae_edi_custom_hgydt.Edit14.Text,mblno,'dzka'); TDsThread.create(str_file,'WLXX','',frm_op_seae_edi_custom_hgydt.Edit13.Text,frm_op_seae_edi_custom_hgydt.Edit14.Text); { MultiPartFormDataStream := TIdMultiPartFormDataStream.Create; IdHTTP1:=TIdHTTP.Create(Application); mblno:= frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring; try IdHttp1.Request.Accept := '*/*'; IdHttp1.Request.AcceptLanguage:='zh-CN'; IdHttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType; MultiPartFormDataStream.AddFormField('username',frm_op_seae_edi_custom_hgydt.Edit13.Text); MultiPartFormDataStream.AddFormField('password',frm_op_seae_edi_custom_hgydt.Edit14.Text); MultiPartFormDataStream.AddFormField('action','dzka'); MultiPartFormDataStream.AddFormField('encode','1'); MultiPartFormDataStream.AddFile('filename',str_file,'text/xml'); MultiPartFormDataStream.Position := 0; ShowMessage(mblno+'---'+UnicodeToChinese(IdHTTP1.Post('http://47.94.19.3:8111/cdpost.ashx', MultiPartFormDataStream))); finally MultiPartFormDataStream.Free; FreeAndNil(IdHTTP1); end; } finally FreeAndNil(Str) end; close; end; { procedure Tfrm_op_seae_edi_custom_hgydt.bsSkinButton3Click( Sender: TObject); var ID: DWORD; begin if hThread>0 then begin showmessage('有进程正在发送,不能发送!'); Exit; end; try hThread := CreateThread(nil, 0, @PlateThreadFun, nil, CREATE_SUSPENDED, ID); ResumeThread(hThread); except if hThread>0 then TerminateThread(hThread,0); end; end; } function Tfrm_op_seae_edi_custom_hgydt.formattel(str: string): string; begin Result := Trim(str); Result := StringReplace(Result, '+', '', [rfReplaceAll]); Result := StringReplace(Result, '-', '', [rfReplaceAll]); end; function Tfrm_op_seae_edi_custom_hgydt.CreateSIEdiFile_XML_Del: TStrings; var str: Tstringlist; i, j, Count: integer; strsql, strRmain: string; rs: Tadoquery; wide_str: widestring; k: integer; inifile1: Tinifile; strType, XType, TransType: string; strDatetime, IMO: string; SenderCode, ReciverCode: string; alist: TStringList; datacount, tmpint: Integer; aQuery: TADOQuery; bsnostr: WideString; begin //打开多票业务 for i := 0 to frm_op_seae_edi_data.dxDBGrid1.SelectedCount - 1 do begin frm_op_seae_edi_data.t_op_seae.GotoBookmark(pointer(frm_op_seae_edi_data.dxDBGrid1.selectedrows[i])); if bsnostr = '' then bsnostr := '''' + frm_op_seae_edi_data.t_op_seae.fieldbyname('编号').AsString + '''' else bsnostr := bsnostr + ',' + '''' + frm_op_seae_edi_data.t_op_seae.fieldbyname('编号').AsString + ''''; end; aQuery := CreateAdoQuery; with aQuery do begin Close; SQL.Clear; SQL.Add('select * from t_op_seae_edi where 编号 in (' + bsnostr + ')'); Open; end; //检查多票业务是否合法 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 := '5' else if bsSkinRadioGroup1.ItemIndex = 4 then strType := '0' else if bsSkinRadioGroup1.ItemIndex = 5 then strType := '11' else strType := '9'; str := Tstringlist.Create; str.Clear; str.Add(''); str.Add(''); str.Add(''); // str.Add('' + SenderCode + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('主提单号').asstring) + GetDatetime(datetimetostr(now), 4) + ''); // str.Add('' + strType + ''); // str.Add('MT2101'); // str.Add('' + SenderCode + ''); // str.Add('' + ReciverCode + ''); // str.Add('' + GetDatetime(datetimetostr(now), 4) + ''); // str.Add('1.0'); str.Add(''); // str.Add(''); // str.Add(''); // str.Add('' + SenderCode + ''); str.Add(''); // str.Add(''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('航次').asstring) + ''); // str.Add('' + trim(frm_op_seae_edi_data.t_op_seae.fieldbyname('船舶IMO').asstring) + ''); str.Add(''); //此处开始添加多票业务 aQuery.First; while not aQuery.Eof do begin // str.Add(''); // str.Add(''); // str.Add('' + trim(aQuery.fieldbyname('主提单号').asstring) + ''); str.Add('999'); str.Add(''); // if trim(aQuery.fieldbyname('分提单号').asstring) <> '' then begin str.Add(''); // str.Add('' + trim(aQuery.fieldbyname('分提单号').asstring) + ''); str.Add(''); end; str.Add(''); aQuery.Next; end; str.Add(''); str.Add('' + trim(Memo2.Lines.CommaText) + ''); str.Add('' + employee+ ''); str.Add('' + empmobil + ''); str.Add('' + trim(Memo2.Lines.CommaText) + ''); str.Add(''); str.Add(''); str.Add(''); with aQuery do begin Close; SQL.Clear; SQL.Add('update t_op_seae_edi set EDI状态=''已发送'' where 编号 in ('+bsnostr+')'); ExecSQL; end; FreeAndNil(aQuery); Result := str; end; end.