unit u_op_ctn; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, bsSkinCtrls, BusinessSkinForm, Grids, Wwdbigrd, Wwdbgrid, StdCtrls, wwdblook, DB, ADODB, Mask, wwdbedit, Wwdotdot, Wwdbcomb; type Tfrm_op_ctn = class(TForm) bsBusinessSkinForm1: TbsBusinessSkinForm; wwDBGrid1: TwwDBGrid; wwDBLookupCombo1: TwwDBLookupCombo; wwDBLookupCombo2: TwwDBLookupCombo; t_op_ctn: TADOQuery; t_op_ctn1: TDataSource; Memo1: TMemo; Memo2: TMemo; Memo3: TMemo; Memo4: TMemo; bsSkinPanel1: TbsSkinPanel; bsSkinButton1: TbsSkinButton; bsSkinButton2: TbsSkinButton; bsSkinButton4: TbsSkinButton; bsSkinButton3: TbsSkinButton; bsSkinButton6: TbsSkinButton; bsSkinButton5: TbsSkinButton; btnMarks: TbsSkinButton; btnDesc: TbsSkinButton; atncfld_op_ctnctn_id: TAutoIncField; strngfld_op_ctnDSDesigner2: TStringField; strngfld_op_ctnDSDesigner3: TStringField; strngfld_op_ctnDSDesigner4: TStringField; intgrfld_op_ctnDSDesigner5: TIntegerField; intgrfld_op_ctnTEU: TIntegerField; strngfld_op_ctnDSDesigner6: TStringField; strngfld_op_ctnDSDesigner7: TStringField; strngfld_op_ctnDSDesigner8: TStringField; intgrfld_op_ctnDSDesigner9: TIntegerField; strngfld_op_ctnDSDesigner10: TStringField; bcdfld_op_ctnDSDesigner11: TBCDField; bcdfld_op_ctnDSDesigner12: TBCDField; strngfld_op_ctnDSDesigner13: TStringField; strngfld_op_ctnDSDesigner14: TStringField; strngfld_op_ctnDSDesigner1: TStringField; bcdfld_op_ctnDSDesigner15: TBCDField; t_op_ctnDSDesigner: TStringField; t_op_ctnDSDesigner2: TStringField; procedure t_op_ctnAfterInsert(DataSet: TDataSet); procedure t_op_ctnBeforePost(DataSet: TDataSet); procedure bsSkinButton1Click(Sender: TObject); procedure bsSkinButton2Click(Sender: TObject); procedure bsSkinButton4Click(Sender: TObject); procedure bsSkinButton3Click(Sender: TObject); procedure bsSkinButton5Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure wwDBLookupCombo1Change(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure bsSkinButton6Click(Sender: TObject); procedure t_op_ctnBeforeDelete(DataSet: TDataSet); procedure t_op_ctnBeforeEdit(DataSet: TDataSet); procedure t_op_ctnAfterPost(DataSet: TDataSet); procedure btnDescClick(Sender: TObject); procedure btnMarksClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frm_op_ctn: Tfrm_op_ctn; frm_op_ctn_type:boolean; op_ctn_limited:string; implementation uses u_data_share, my_sys_function, u_op_seae, u_op_seai, u_main; {$R *.dfm} procedure Tfrm_op_ctn.t_op_ctnAfterInsert(DataSet: TDataSet); begin t_op_ctn['编号']:=t_op_ctn.DataSource.DataSet['编号']; t_op_ctn['数量']:=1; end; procedure Tfrm_op_ctn.t_op_ctnBeforePost(DataSet: TDataSet); var aQuery:TADOQuery; begin if frm_data_share.t_code_ctn.Locate('代码',t_op_ctn.fieldbyname('代码').asstring,[]) then begin t_op_ctn['表现形式']:=frm_data_share.t_code_ctn['表现形式']; if frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='20'then t_op_ctn['TEU']:=1*t_op_ctn.FieldByName('数量').asinteger; if (frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='40')OR (frm_data_share.t_code_ctn.FieldByName('尺寸').asstring='45')then t_op_ctn['TEU']:=2*t_op_ctn.FieldByName('数量').asinteger; end else begin t_op_ctn['代码']:=''; t_op_ctn['表现形式']:=''; t_op_ctn['箱型']:=''; t_op_ctn['尺寸']:=''; end; table_before_post(t_op_ctn,'代码'); table_before_post(t_op_ctn,'数量'); if not frm_data_share.t_code_line_ctn.active then frm_data_share.t_code_line_ctn.Open; if frm_data_share.t_code_line_ctn.IsEmpty then exit; if t_op_ctn.fieldbyname('表现形式').OldValue<>null then if (t_op_ctn.fieldbyname('表现形式').OldValue<>t_op_ctn.fieldbyname('表现形式').Value) or (t_op_ctn.fieldbyname('数量').OldValue<>t_op_ctn.fieldbyname('数量').Value) then if (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型1').asstring),t_op_ctn.fieldbyname('表现形式').OldValue)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型2').asstring),t_op_ctn.fieldbyname('表现形式').OldValue)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型3').asstring),t_op_ctn.fieldbyname('表现形式').OldValue)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型4').asstring),t_op_ctn.fieldbyname('表现形式').OldValue)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型5').asstring),t_op_ctn.fieldbyname('表现形式').OldValue)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型6').asstring),t_op_ctn.fieldbyname('表现形式').OldValue)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型2').asstring),t_op_ctn.fieldbyname('表现形式').Value)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型3').asstring),t_op_ctn.fieldbyname('表现形式').Value)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型4').asstring),t_op_ctn.fieldbyname('表现形式').Value)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型5').asstring),t_op_ctn.fieldbyname('表现形式').Value)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型6').asstring),t_op_ctn.fieldbyname('表现形式').Value)>0) or (Pos(trim(frm_data_share.t_code_line_ctn.fieldbyname('运价箱型1').asstring),t_op_ctn.fieldbyname('表现形式').Value)>0) then begin aQuery:=CreateAdoQuery; try with aQuery do begin Close;SQL.Clear; SQL.Add('Select * from t_ch_fee where 系统费用=1'); sql.add(' and 编号='''+t_op_ctn.FieldByName('编号').AsString+''''); Open; if not IsEmpty then begin MessageDlg('系统已经引入系统费用,如要箱型和箱量请先删除系统费用!',mtWarning,[mbOK],0); Abort; end; end; finally FreeAndNil(aQuery); end; end; end; procedure Tfrm_op_ctn.bsSkinButton1Click(Sender: TObject); begin t_op_ctn.insert; end; procedure Tfrm_op_ctn.bsSkinButton2Click(Sender: TObject); begin table_post(t_op_ctn); end; procedure Tfrm_op_ctn.bsSkinButton4Click(Sender: TObject); begin table_delete(t_op_ctn); end; procedure Tfrm_op_ctn.bsSkinButton3Click(Sender: TObject); begin table_cancel(t_op_ctn); end; procedure Tfrm_op_ctn.bsSkinButton5Click(Sender: TObject); begin close; end; procedure Tfrm_op_ctn.FormShow(Sender: TObject); begin t_op_ctn.open; if frm_op_ctn_type then bsSkinButton6.Enabled:=true; frm_data_share.t_code_ctn.requery; frm_data_share.t_code_package.requery; end; procedure Tfrm_op_ctn.wwDBLookupCombo1Change(Sender: TObject); begin if (t_op_ctn.State=dsedit)or(t_op_ctn.State=dsinsert) then begin if frm_data_share.t_code_ctn.Locate('代码',wwDBLookupCombo1.text,[]) then begin t_op_ctn['表现形式']:=frm_data_share.t_code_ctn['表现形式']; t_op_ctn['箱型']:=frm_data_share.t_code_ctn['箱型']; t_op_ctn['尺寸']:=frm_data_share.t_code_ctn['尺寸']; end else begin t_op_ctn['表现形式']:=''; t_op_ctn['箱型']:=''; t_op_ctn['尺寸']:=''; end; end; end; procedure Tfrm_op_ctn.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=frm_close_query(t_op_ctn); end; procedure Tfrm_op_ctn.bsSkinButton6Click(Sender: TObject); var bok:Tbookmark; if_first:boolean; begin if t_op_ctn.IsEmpty then exit; if op_ctn_limited='0001'then begin op_befor_post(frm_op_seae.t_op_seae,op_ctn_limited); end else begin op_befor_post(frm_op_seai.t_op_seai,op_ctn_limited); end; t_op_ctn.First; if_first:=true; bok:=t_op_ctn.GetBookmark; while not t_op_ctn.Eof do begin if if_first then begin memo1.Lines.Text:=t_op_ctn.fieldbyname('箱号').asstring+'/'+t_op_ctn.fieldbyname('封号').asstring; memo2.Lines.Text:=t_op_ctn.fieldbyname('件数').asstring+t_op_ctn.fieldbyname('包装').asstring; memo3.Lines.Text:=t_op_ctn.fieldbyname('重量').asstring+'KGS'; memo4.Lines.Text:=t_op_ctn.fieldbyname('尺码').asstring+'CBM'; if_first:=false; end else begin // memo1.Lines.Add(' '); memo1.Lines.Add(t_op_ctn.fieldbyname('箱号').asstring+'/'+t_op_ctn.fieldbyname('封号').asstring); memo2.Lines.Add(' '); memo2.Lines.Add(t_op_ctn.fieldbyname('件数').asstring+t_op_ctn.fieldbyname('包装').asstring); memo3.Lines.Add(' '); memo3.Lines.Add(t_op_ctn.fieldbyname('重量').asstring+'KGS'); memo4.Lines.Add(' '); memo4.Lines.Add(t_op_ctn.fieldbyname('尺码').asstring+'CBM'); end; t_op_ctn.next; end; t_op_ctn.DataSource.DataSet.edit; t_op_ctn.DataSource.DataSet['箱号封号']:=memo1.Lines.Text; t_op_ctn.DataSource.DataSet['件数包装']:=memo2.Lines.Text; t_op_ctn.DataSource.DataSet['货物重量']:=memo3.Lines.Text; t_op_ctn.DataSource.DataSet['货物尺码']:=memo4.Lines.Text; t_op_ctn.DataSource.DataSet.post; t_op_ctn.GotoBookmark(bok); end; procedure Tfrm_op_ctn.t_op_ctnBeforeDelete(DataSet: TDataSet); begin if t_op_ctn.RecordCount=1 then begin if t_op_ctn.DataSource.DataSet.FieldByName('装运方式').asstring='整箱' then begin showmessage('业务集装箱不能为空,你不能删除!!'); abort; end; end; if op_ctn_limited='0001'then begin op_befor_post(frm_op_seae.t_op_seae,op_ctn_limited); end else begin op_befor_post(frm_op_seai.t_op_seai,op_ctn_limited); end; end; procedure Tfrm_op_ctn.t_op_ctnBeforeEdit(DataSet: TDataSet); begin if op_ctn_limited='0001'then begin op_befor_post(frm_op_seae.t_op_seae,op_ctn_limited); end else begin op_befor_post(frm_op_seai.t_op_seai,op_ctn_limited); end; end; procedure Tfrm_op_ctn.t_op_ctnAfterPost(DataSet: TDataSet); begin update_ctn(t_op_ctn); if CheckCtnTotalEquelItems(TADOQuery(t_op_ctn1.dataset)) then begin if MessageDlg('装箱明细件、重、尺不等于装箱总数,是否更新?',mtWarning,mbOKCancel,0)=mrok then begin bsSkinButton6.OnClick(nil); end; // abort; end; end; procedure Tfrm_op_ctn.btnDescClick(Sender: TObject); begin frm_main.view_momo(t_op_ctn1,'货物描述'); end; procedure Tfrm_op_ctn.btnMarksClick(Sender: TObject); begin frm_main.view_momo(t_op_ctn1,'唛头'); end; end.