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 if rs.FieldByName('重箱整箱标志').AsString='拼箱' then str.Add('7')
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;
senddgdata:TSendDGData;
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+'(一点通)';
senddgdata.dgConPerson:=frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品联系人').asstring;
senddgdata.dgTel:=frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品电话').asstring;
senddgdata.dgClass:=frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品分类').asstring;
senddgdata.temperature:=frm_op_seae_edi_data.t_op_seae.fieldbyname('设置温度').asstring;
senddgdata.temUnit:=frm_op_seae_edi_data.t_op_seae.fieldbyname('温度单位').asstring;
senddgdata.humidity:='';
senddgdata.vent:=frm_op_seae_edi_data.t_op_seae.fieldbyname('冷藏通风量').asstring;
senddgdata.dgNo:=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,senddgdata);
// 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;
senddgdata:TSendDGData;
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');
senddgdata.dgConPerson:=frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品联系人').asstring;
senddgdata.dgTel:=frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品电话').asstring;
senddgdata.dgClass:=frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品分类').asstring;
senddgdata.temperature:=frm_op_seae_edi_data.t_op_seae.fieldbyname('设置温度').asstring;
senddgdata.temUnit:=frm_op_seae_edi_data.t_op_seae.fieldbyname('温度单位').asstring;
senddgdata.humidity:='';
senddgdata.vent:=frm_op_seae_edi_data.t_op_seae.fieldbyname('冷藏通风量').asstring;
senddgdata.dgNo:=frm_op_seae_edi_data.t_op_seae.fieldbyname('危险品编号').asstring;
TDsThread.create(str_file,'WLXX','',frm_op_seae_edi_custom_hgydt.Edit13.Text,frm_op_seae_edi_custom_hgydt.Edit14.Text,senddgdata);
{
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.