unit u_rp_zl_seai; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, dxExEdtr, DB, ADODB, StdCtrls, wwdbdatetimepicker, bsSkinCtrls, dxDBGrid, dxTL, dxDBCtrl, dxCntner, ComCtrls, bsSkinTabs, ExtCtrls, Menus; type Tfrm_rp_zl_seai = class(TForm) Panel1: TPanel; bsSkinPageControl1: TbsSkinPageControl; bsSkinTabSheet1: TbsSkinTabSheet; bsSkinPageControl2: TbsSkinPageControl; bsSkinTabSheet3: TbsSkinTabSheet; dxDBGrid1: TdxDBGrid; dxDBGrid1Column1: TdxDBGridMaskColumn; dxDBGrid1Column2: TdxDBGridColumn; dxDBGrid1Column3: TdxDBGridColumn; dxDBGrid1Column4: TdxDBGridColumn; dxDBGrid1Column5: TdxDBGridColumn; dxDBGrid1Column6: TdxDBGridColumn; dxDBGrid1Column7: TdxDBGridColumn; dxDBGrid1Column8: TdxDBGridColumn; bsSkinTabSheet4: TbsSkinTabSheet; dxDBGrid2: TdxDBGrid; dxDBGridMaskColumn1: TdxDBGridMaskColumn; dxDBGridColumn1: TdxDBGridColumn; dxDBGridColumn2: TdxDBGridColumn; dxDBGridColumn3: TdxDBGridColumn; dxDBGridColumn4: TdxDBGridColumn; dxDBGridColumn5: TdxDBGridColumn; dxDBGridColumn6: TdxDBGridColumn; dxDBGridColumn7: TdxDBGridColumn; bsSkinTabSheet2: TbsSkinTabSheet; bsSkinPageControl3: TbsSkinPageControl; bsSkinTabSheet5: TbsSkinTabSheet; dxDBGrid3: TdxDBGrid; dxDBGridMaskColumn2: TdxDBGridMaskColumn; dxDBGridColumn8: TdxDBGridColumn; dxDBGridColumn9: TdxDBGridColumn; dxDBGridColumn10: TdxDBGridColumn; dxDBGridColumn11: TdxDBGridColumn; dxDBGridColumn12: TdxDBGridColumn; dxDBGridColumn13: TdxDBGridColumn; dxDBGridColumn14: TdxDBGridColumn; bsSkinTabSheet6: TbsSkinTabSheet; dxDBGrid4: TdxDBGrid; dxDBGridMaskColumn3: TdxDBGridMaskColumn; dxDBGridColumn15: TdxDBGridColumn; dxDBGridColumn16: TdxDBGridColumn; dxDBGridColumn17: TdxDBGridColumn; dxDBGridColumn18: TdxDBGridColumn; dxDBGridColumn19: TdxDBGridColumn; dxDBGridColumn20: TdxDBGridColumn; dxDBGridColumn21: TdxDBGridColumn; p_accept_client: TADOStoredProc; p_accept_client1: TDataSource; p_accept_sales: TADOStoredProc; p_accept_sales1: TDataSource; p_pay_client: TADOStoredProc; p_pay_client1: TDataSource; p_pay_sales: TADOStoredProc; p_pay_sales1: TDataSource; bsSkinPanel2: TbsSkinPanel; bsSkinButton10: TbsSkinButton; bsSkinButton9: TbsSkinButton; bsSkinButton5: TbsSkinButton; bsSkinCheckRadioBox2: TbsSkinCheckRadioBox; bsSkinCheckRadioBox1: TbsSkinCheckRadioBox; bsSkinPanel1: TbsSkinPanel; Label1: TLabel; wwDBDateTimePicker1: TwwDBDateTimePicker; Label2: TLabel; wwDBDateTimePicker2: TwwDBDateTimePicker; PopupMenu2: TPopupMenu; N16: TMenuItem; SaveDialog: TSaveDialog; procedure bsSkinButton5Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure bsSkinButton10Click(Sender: TObject); procedure bsSkinButton9Click(Sender: TObject); procedure bsSkinPanel2Resize(Sender: TObject); procedure dxDBGrid1ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); procedure dxDBGrid2ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); procedure dxDBGrid3ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); procedure dxDBGrid4ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); procedure FormShow(Sender: TObject); procedure N16Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frm_rp_zl_seai: Tfrm_rp_zl_seai; implementation uses u_main, my_sys_function, u_data_share; {$R *.dfm} procedure Tfrm_rp_zl_seai.bsSkinButton5Click(Sender: TObject); begin close; end; procedure Tfrm_rp_zl_seai.FormClose(Sender: TObject; var Action: TCloseAction); begin frm_rp_zl_seai.Hide; frm_rp_zl_seai.ManualFloat(frm_rp_zl_seai.BoundsRect ); frm_main.freeTabs('frm_rp_zl_seai'); action:=cafree; frm_rp_zl_seai:=nil; end; procedure Tfrm_rp_zl_seai.bsSkinButton10Click(Sender: TObject); var str_accept,str_pay:widestring; str_date:string; begin if bsSkinCheckRadioBox1.Checked then str_date:='会计期间' else str_date:='进口日期'; str_accept:='where t_ch_fee.金额<>t_ch_fee.结算金额 and t_ch_fee.类型='+''''+'收'+''''; str_pay:='where t_ch_fee.金额<>t_ch_fee.结算金额 and t_ch_fee.类型='+''''+'付'+''''; if wwDBDateTimePicker1.Text<>''then begin str_accept:=str_accept+' and t_op_seai.'+str_date+'>='+''''+wwDBDateTimePicker1.Text+''''; str_pay:=str_pay+' and t_op_seai.'+str_date+'>='+''''+wwDBDateTimePicker1.Text+''''; end; if wwDBDateTimePicker2.Text<>''then begin str_accept:=str_accept+' and t_op_seai.'+str_date+'<='+''''+wwDBDateTimePicker2.Text+''''; str_pay:=str_pay+' and t_op_seai.'+str_date+'<='+''''+wwDBDateTimePicker2.Text+''''; end; str_accept:=str_accept+' and '+open_data('0034','t_op_seai.'+'揽货人','t_op_seai.'+'操作员','t_op_seai.'+'客服员','t_op_seai.报关操作','t_op_seai.报检操作'); str_pay:=str_pay+' and '+open_data('0034','t_op_seai.'+'揽货人','t_op_seai.'+'操作员','t_op_seai.'+'客服员','t_op_seai.报关操作','t_op_seai.报检操作'); p_accept_client.close; p_accept_client.Parameters.ParamByName('SQLStr').value:= 'select t_ch_fee.客户名称,' +'sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=30 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未收一月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=60' +' and datediff(day,t_op_seai.'+str_date+',getdate())>30 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未收二月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=90' +' and datediff(day,t_op_seai.'+str_date+',getdate())>60 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未收三月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=180' +' and datediff(day,t_op_seai.'+str_date+',getdate())>90 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未收半年,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=360' +' and datediff(day,t_op_seai.'+str_date+',getdate())>180 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未收一年,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())>360 ' +' then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 一年以上,' +' sum((t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率) as 所有未收' +' from t_ch_fee inner join t_op_seai on t_ch_fee.编号=t_op_seai.编号 ' +str_accept +' group by t_ch_fee.客户名称 order by t_ch_fee.客户名称'; p_accept_client.Open; p_pay_client.close; p_pay_client.Parameters.ParamByName('SQLStr').value:= 'select t_ch_fee.客户名称,' +'sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=30 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未付一月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=60' +' and datediff(day,t_op_seai.'+str_date+',getdate())>30 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未付二月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=90' +' and datediff(day,t_op_seai.'+str_date+',getdate())>60 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未付三月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=180' +' and datediff(day,t_op_seai.'+str_date+',getdate())>90 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未付半年,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=360' +' and datediff(day,t_op_seai.'+str_date+',getdate())>180 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未付一年,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())>360 ' +' then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 一年以上,' +' sum((t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率) as 所有未付' +' from t_ch_fee inner join t_op_seai on t_ch_fee.编号=t_op_seai.编号 ' +str_pay +' group by t_ch_fee.客户名称 order by t_ch_fee.客户名称'; p_pay_client.Open; p_accept_sales.close; p_accept_sales.Parameters.ParamByName('SQLStr').value:= 'select t_op_seai.揽货人,' +'sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=30 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未收一月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=60' +' and datediff(day,t_op_seai.'+str_date+',getdate())>30 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未收二月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=90' +' and datediff(day,t_op_seai.'+str_date+',getdate())>60 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未收三月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=180' +' and datediff(day,t_op_seai.'+str_date+',getdate())>90 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未收半年,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=360' +' and datediff(day,t_op_seai.'+str_date+',getdate())>180 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未收一年,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())>360 ' +' then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 一年以上,' +' sum((t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率) as 所有未收' +' from t_ch_fee inner join t_op_seai on t_ch_fee.编号=t_op_seai.编号 ' +str_accept +' group by t_op_seai.揽货人 order by t_op_seai.揽货人'; p_accept_sales.Open; p_pay_sales.close; p_pay_sales.Parameters.ParamByName('SQLStr').value:= 'select t_op_seai.揽货人,' +'sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=30 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未付一月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=60' +' and datediff(day,t_op_seai.'+str_date+',getdate())>30 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未付二月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=90' +' and datediff(day,t_op_seai.'+str_date+',getdate())>60 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未付三月,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=180' +' and datediff(day,t_op_seai.'+str_date+',getdate())>90 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未付半年,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())<=360' +' and datediff(day,t_op_seai.'+str_date+',getdate())>180 then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 未付一年,' +' sum(case when datediff(day,t_op_seai.'+str_date+',getdate())>360 ' +' then (t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率' +' else 0 end) as 一年以上,' +' sum((t_ch_fee.金额-t_ch_fee.结算金额)*t_ch_fee.汇率) as 所有未付' +' from t_ch_fee inner join t_op_seai on t_ch_fee.编号=t_op_seai.编号 ' +str_pay +' group by t_op_seai.揽货人 order by t_op_seai.揽货人'; p_pay_sales.Open; end; procedure Tfrm_rp_zl_seai.bsSkinButton9Click(Sender: TObject); begin sys_print('海运进口帐龄',2,nil,nil,nil,nil,p_accept_client1,p_accept_sales1,p_pay_client1,p_pay_sales1,nil,nil,nil); end; procedure Tfrm_rp_zl_seai.bsSkinPanel2Resize(Sender: TObject); var i:integer; begin i:=round((bsSkinPanel2.Width-bsSkinPanel1.Width)/5); bsSkinCheckRadioBox2.Width:=i; bsSkinCheckRadioBox1.Width:=i; bsSkinButton10.Width:=i; bsSkinButton9.Width:=i; bsSkinButton5.Width:=i; end; procedure Tfrm_rp_zl_seai.dxDBGrid1ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); begin Column_sort_pro(Column,p_accept_client,'客户名称'); end; procedure Tfrm_rp_zl_seai.dxDBGrid2ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); begin Column_sort_pro(Column,p_accept_sales,'揽货人'); end; procedure Tfrm_rp_zl_seai.dxDBGrid3ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); begin Column_sort_pro(Column,p_pay_client,'客户名称'); end; procedure Tfrm_rp_zl_seai.dxDBGrid4ColumnSorting(Sender: TObject; Column: TdxDBTreeListColumn; var Allow: Boolean); begin Column_sort_pro(Column,p_pay_sales,'揽货人'); end; procedure Tfrm_rp_zl_seai.FormShow(Sender: TObject); begin if frm_data_share.t_load_employee.FieldByName('应收').asboolean then begin bsSkinTabSheet1.TabVisible:=true; end else begin bsSkinTabSheet1.TabVisible:=false; end; if frm_data_share.t_load_employee.FieldByName('应付').asboolean then begin bsSkinTabSheet2.TabVisible:=true; end else begin bsSkinTabSheet2.TabVisible:=false; end; end; procedure Tfrm_rp_zl_seai.N16Click(Sender: TObject); begin with SaveDialog do begin DefaultExt :='xls'; Filter := '(*.xls)|*.xls'; if Execute then begin if bsSkinTabSheet3.Showing then dxDBGrid1.SaveToXLS(FileName,true) else if bsSkinTabSheet4.Showing then dxDBGrid2.SaveToXLS(FileName,true) else if bsSkinTabSheet5.Showing then dxDBGrid3.SaveToXLS(FileName,true) else if bsSkinTabSheet6.Showing then dxDBGrid4.SaveToXLS(FileName,true); end; end; end; end.