unit u_op_seae_teshusales; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, dxExEdtr, XPMenu, Menus, dxDBTLCl, dxGrClms, dxDBCtrl, dxDBGrid, dxTL, dxCntner, DB, ADODB, Mask, wwdbedit, Wwdotdot, Wwdbcomb, wwdblook, RxLookup, wwdbdatetimepicker, StdCtrls, bsSkinCtrls, ExtCtrls, ComCtrls, bsSkinTabs, DBCtrls,DateUtils; type Tfrm_op_seae_teshusales = class(TForm) bsSkinButton13: TbsSkinButton; bsSkinButton1: TbsSkinButton; PopupMenu2: TPopupMenu; N16: TMenuItem; XPMenu1: TXPMenu; t_op_seaesel: TADOQuery; ds_op_seaesel1: TDataSource; pm1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; bsSkinPanel2: TbsSkinPanel; bsSkinPanel3: TbsSkinPanel; bsSkinButton3: TbsSkinButton; bsSkinButton7: TbsSkinButton; bsSkinButton8: TbsSkinButton; t_op_bill: TADOQuery; ds_op_bill1: TDataSource; bsSkinPageControl1: TbsSkinPageControl; bskntbsht1: TbsSkinTabSheet; bskntbsht2: TbsSkinTabSheet; dxDBGrid2: TdxDBGrid; dxDBGrid2Column2: TdxDBGridColumn; dxDBGrid2Column3: TdxDBGridColumn; dxDBGrid2Column4: TdxDBGridColumn; dxDBGrid2Column5: TdxDBGridColumn; dxDBGrid2Column6: TdxDBGridColumn; bsSkinPanel4: TbsSkinPanel; dxDBGrid3: TdxDBGrid; dxDBGridMaskColumn4: TdxDBGridMaskColumn; dxDBGridMaskColumn7: TdxDBGridMaskColumn; dxDBGridMaskColumn13: TdxDBGridMaskColumn; dxDBGridMaskColumn14: TdxDBGridMaskColumn; dxDBGridMaskColumn15: TdxDBGridMaskColumn; dxDBGridDateColumn1: TdxDBGridDateColumn; dxDBGridMaskColumn17: TdxDBGridMaskColumn; dxDBGridMaskColumn24: TdxDBGridMaskColumn; dxDBGridMaskColumn57: TdxDBGridMaskColumn; dxDBGridMaskColumn58: TdxDBGridMaskColumn; dxDBGridMaskColumn61: TdxDBGridMaskColumn; PopupMenu1: TPopupMenu; MenuItem1: TMenuItem; bsSkinButton5: TbsSkinButton; bsSkinButton9: TbsSkinButton; RxDBLookupCombo4: TRxDBLookupCombo; Label4: TLabel; DBEdit9: TDBEdit; DBEdit10: TDBEdit; Label7: TLabel; Label12: TLabel; wwDBDateTimePicker5: TwwDBDateTimePicker; PopupMenu3: TPopupMenu; MenuItem2: TMenuItem; dxDBGrid2Column7: TdxDBGridColumn; Label13: TLabel; DBEdit1: TDBEdit; Label14: TLabel; bsSkinPanel5: TbsSkinPanel; Panel1: TPanel; bsSkinButton11: TbsSkinButton; Label17: TLabel; wwDBDateTimePicker6: TwwDBDateTimePicker; Label18: TLabel; wwDBDateTimePicker7: TwwDBDateTimePicker; Label19: TLabel; Label20: TLabel; dxDBGrid2Column8: TdxDBGridColumn; dxDBGrid2Column9: TdxDBGridColumn; dxDBGrid3Column12: TdxDBGridColumn; dxDBGrid3Column13: TdxDBGridColumn; dxDBGrid3Column14: TdxDBGridColumn; dxDBGrid3Column15: TdxDBGridColumn; Label21: TLabel; Label22: TLabel; RxDBLookupCombo5: TRxDBLookupCombo; wwDBDateTimePicker8: TwwDBDateTimePicker; Label23: TLabel; Label24: TLabel; RxDBLookupCombo7: TRxDBLookupCombo; wwDBDateTimePicker9: TwwDBDateTimePicker; Label15: TLabel; DBEdit2: TDBEdit; Label25: TLabel; DBEdit3: TDBEdit; Label26: TLabel; RxDBLookupCombo8: TRxDBLookupCombo; dxDBGrid2Column10: TdxDBGridColumn; dxDBGrid2Column11: TdxDBGridColumn; Label27: TLabel; dxDBGrid2Column12: TdxDBGridColumn; bsSkinButton38: TbsSkinButton; dxDBGrid2Column13: TdxDBGridColumn; dxDBGrid2Column14: TdxDBGridColumn; dxDBGrid2Column15: TdxDBGridColumn; Label1: TLabel; DBMemo1: TDBMemo; Label29: TLabel; DBMemo2: TDBMemo; DataSource1: TDataSource; ADOQuery1: TADOQuery; Label2: TLabel; RxDBLookupCombo31: TRxDBLookupCombo; dxDBGrid2Column16: TdxDBGridColumn; bsSkinButton12: TbsSkinButton; t_op_bill_items1: TDataSource; t_op_bill_items: TADOQuery; bsSkinTabSheet3: TbsSkinTabSheet; dxDBGrid4: TdxDBGrid; dxDBGrid4Column1: TdxDBGridColumn; dxDBGrid4Column2: TdxDBGridColumn; dxDBGrid4Column3: TdxDBGridColumn; dxDBGrid4Column4: TdxDBGridColumn; wwDBDateTimePicker10: TwwDBDateTimePicker; Label32: TLabel; RxDBLookupCombo1: TRxDBLookupCombo; RxDBLookupCombo2: TRxDBLookupCombo; RxDBLookupCombo3: TRxDBLookupCombo; Label35: TLabel; dxDBGrid2Column17: TdxDBGridColumn; Label36: TLabel; DBMemo3: TDBMemo; dxDBGrid2Column18: TdxDBGridColumn; dxDBGrid2Column19: TdxDBGridColumn; Label37: TLabel; DBEdit4: TDBEdit; Label38: TLabel; Label39: TLabel; Label40: TLabel; Label41: TLabel; DBEdit5: TDBEdit; DBEdit6: TDBEdit; DBEdit7: TDBEdit; DBEdit8: TDBEdit; Label42: TLabel; DBEdit11: TDBEdit; DBEdit12: TDBEdit; Label43: TLabel; DBEdit13: TDBEdit; DBEdit14: TDBEdit; Label44: TLabel; Label45: TLabel; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure bsSkinButton5Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure bsSkinButton9Click(Sender: TObject); procedure bsSkinButton7Click(Sender: TObject); procedure bsSkinButton8Click(Sender: TObject); procedure bsSkinButton38Click(Sender: TObject); procedure dxDBGrid2Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure t_op_billBeforeEdit(DataSet: TDataSet); procedure bsSkinButton12Click(Sender: TObject); procedure t_op_billBeforePost(DataSet: TDataSet); procedure RxDBLookupCombo1Enter(Sender: TObject); procedure RxDBLookupCombo1Exit(Sender: TObject); procedure dxDBGrid2CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); private { Private declarations } public { Public declarations } function UpdateBillStatus(bsStStatus:string):Boolean; end; var frm_op_seae_teshusales: Tfrm_op_seae_teshusales; implementation uses my_sys_function, u_main; {$R *.dfm} function Tfrm_op_seae_teshusales.UpdateBillStatus(bsStStatus:string):Boolean; var aAdoQuery,aAdoQuerySelect:TAdoQuery; begin {var aAdoQuery:TAdoQuery; begin result:=False; aAdoQuery:=CreateAdoQuery; with aAdoQuery do try Close;Sql.Clear; SQL.Add('select count(编号) c from t_op_fangdan'); SQL.Add('where 编号=:编号'); Parameters.ParamByName('编号').Value:=BsNo; Open; if aAdoQuery.FieldByName('c').AsInteger=0 then begin Close;Sql.Clear; SQL.Add('Insert into t_op_fangdan (编号, 放单状态,申请人,申请日期)'); SQL.Add('values (:编号,:放单状态,:申请人,:申请日期)'); Parameters.ParamByName('编号').Value:=BsNo; Parameters.ParamByName('放单状态').Value:='申请放单'; Parameters.ParamByName('申请人').Value:=employee; Parameters.ParamByName('申请日期').Value:=date; ExecSQL; end; finally aAdoQuery.Free; end; } result:=False; aAdoQuery:=CreateAdoQuery; aAdoQuerySelect:=CreateAdoQuery; with t_op_seaesel do try Open;First; while not eof do begin aAdoQuerySelect.Close;aAdoQuerySelect.Sql.Clear; aAdoQuerySelect.SQL.Add('select count(编号) c from t_op_fangdan'); aAdoQuerySelect.SQL.Add('where 编号=:编号'); aAdoQuerySelect.Parameters.ParamByName('编号').Value:=fieldByName('编号').AsString; aAdoQuerySelect.Open; if aAdoQuerySelect.FieldByName('c').AsInteger=0 then begin aAdoQuery.Close;aAdoQuery.Sql.Clear; aAdoQuery.SQL.Add('Insert into t_op_fangdan (编号, 放单状态)'); aAdoQuery.SQL.Add('values (:编号,:放单状态)'); aAdoQuery.Parameters.ParamByName('编号').Value:=fieldByName('编号').AsString; aAdoQuery.Parameters.ParamByName('放单状态').Value:=bsStStatus; aAdoQuery.ExecSQL; end else begin aAdoQuery.Close;aAdoQuery.Sql.Clear; aAdoQuery.SQL.Add('Update t_op_fangdan set 放单状态=:放单状态'); aAdoQuery.SQL.Add('where 编号=:编号'); aAdoQuery.Parameters.ParamByName('编号').Value:=fieldByName('编号').AsString; aAdoQuery.Parameters.ParamByName('放单状态').Value:=bsStStatus; aAdoQuery.ExecSQL; end; Next; end; finally aAdoQuery.Free; aAdoQuerySelect.Free; end; end; procedure Tfrm_op_seae_teshusales.FormClose(Sender: TObject; var Action: TCloseAction); begin frm_op_seae_teshusales.Hide; frm_op_seae_teshusales.ManualFloat(frm_op_seae_teshusales.BoundsRect ); frm_main.freeTabs('frm_op_seae_teshusales'); action:=cafree; frm_op_seae_teshusales:=nil; end; procedure Tfrm_op_seae_teshusales.bsSkinButton5Click(Sender: TObject); var aQuery:TADOQuery; begin if t_op_bill.IsEmpty then exit; aQuery:=CreateAdoQuery; try with aQuery do begin close;SQL.Clear; sql.add('select 特殊放单提醒,特殊放单条件 from t_crm_client where 客户简称='''+t_op_bill.FieldByName('委托单位').AsString+''''); open; if not IsEmpty then begin if FieldByName('特殊放单提醒').AsString='是' then begin if MessageDlg(t_op_bill.FieldByName('委托单位').AsString+'有特殊放单条件,特殊放单条件为:'+fieldbyname('特殊放单条件').AsString+#13#10+'确实要放单吗?',mtWarning,[mbyes,mbno],0)<>mryes then begin exit; end; end; end; end; finally FreeAndNil(aQuery); end; if not t_op_bill.FieldByName('业务审核日期').IsNull then begin showmessage('已经审核!!'); end else begin if trim(t_op_bill.FieldByName('备注').asstring)='' then begin showmessage('特放说明不能为空,不能保存!'); exit; end; if Length(trim(t_op_bill.FieldByName('备注').asstring))<12 then begin showmessage('特放说明不能少于6个汉字,不能保存!'); exit; end; if t_op_bill.FieldByName('保函承诺日期').AsDateTime-now>20 then begin ShowMessage('保函承诺日期不能超过20天!'); exit; end; if (t_op_bill.FieldByName('特批标志').AsInteger=1) and (trim(t_op_bill.FieldByName('特批原因').asstring)='') then begin ShowMessage('此客户已连续两次违约,需要违约特批必须填写违约的原因!'); exit; end; t_op_bill.edit; t_op_bill['状态']:='销售审核'; t_op_bill['业务审核日期']:=date; t_op_bill['业务审核']:=employee; t_op_bill.post; UpdateBillStatus('销售审核'); with t_op_seaesel do begin First; while not eof do begin InsertSeaeStatus(FieldByName('编号').AsString,'销售审核',employee,FormatDateTime('YYYY-MM-DD',Now)); Next; end; end; t_op_bill.Refresh; end; end; procedure Tfrm_op_seae_teshusales.FormShow(Sender: TObject); begin t_op_bill.Parameters.ParamByName('业务审核').Value:=employee; t_op_bill.Open; t_op_seaesel.Open; t_op_bill_items.Open; ADOQuery1.Open; if t_op_bill.FieldByName('特批标志').AsInteger=1 then begin Label35.Visible:=True; Label35.Caption:='此特放需要特批!'; end else begin label35.Visible:=false; Label35.Caption:=''; end; end; procedure Tfrm_op_seae_teshusales.bsSkinButton9Click(Sender: TObject); var str:string; begin if t_op_bill.IsEmpty then exit; if t_op_bill.FieldByName('业务审核日期').IsNull then begin showmessage('没有审核,不用取消审核!!'); end else if (not t_op_bill.FieldByName('业务审核日期').IsNull) and t_op_bill.FieldByName('签单日期').IsNull then begin t_op_bill.edit; t_op_bill['状态']:='新建签单'; t_op_bill['业务审核日期']:=null; t_op_bill.post; UpdateBillStatus('申请放单'); with t_op_seaesel do begin First; while not eof do begin DelteSeaeStatus(fieldbyname('编号').AsString,'销售审核'); Next; end; end; t_op_bill.Refresh; end else showmessage('主管已经审核不能取消审核,主管取消审核后才可以审核!'); end; procedure Tfrm_op_seae_teshusales.bsSkinButton7Click(Sender: TObject); begin if t_op_bill.IsEmpty then exit; t_op_bill.Cancel; end; procedure Tfrm_op_seae_teshusales.bsSkinButton8Click(Sender: TObject); begin Close; end; procedure Tfrm_op_seae_teshusales.bsSkinButton38Click(Sender: TObject); begin t_op_bill.Refresh; end; procedure Tfrm_op_seae_teshusales.dxDBGrid2Click(Sender: TObject); begin if t_op_bill.FieldByName('特批标志').AsInteger=1 then begin Label35.Visible:=True; Label35.Caption:='此特放需要特批!'; end else begin label35.Visible:=false; Label35.Caption:=''; end; bsSkinPageControl1.ActivePageIndex:=1; end; procedure Tfrm_op_seae_teshusales.N16Click(Sender: TObject); begin grid_save_xls(dxdbgrid2); end; procedure Tfrm_op_seae_teshusales.t_op_billBeforeEdit(DataSet: TDataSet); begin if (t_op_bill.FieldByName('状态').AsString='副总审核') or (t_op_bill.FieldByName('状态').AsString='主管审核') then begin ShowMessage('当前状态'+t_op_bill.FieldByName('状态').AsString+'不能修改'); abort; end; end; procedure Tfrm_op_seae_teshusales.bsSkinButton12Click(Sender: TObject); var aDate:TDateTime; aAdoQuery:TAdoQuery; AccoutDesc:string; begin if t_op_bill.FieldByName('状态').AsString='新建签单' then begin t_op_bill_items.First; while not t_op_bill_items.Eof do begin t_op_bill_items.Delete; end; aDate:=returngetzqdate(t_op_bill.FieldByName('委托单位').Asstring,Date); AccoutDesc:=getzq(t_op_bill.FieldByName('委托单位').Asstring); //ShowMessage(datetostr(aDate)); aAdoQuery:=CreateAdoQuery; with aAdoQuery do try Close;sql.Clear; sql.Add('select '); sql.Add('SUBSTRING(CONVERT(char(15),会计期间,111),1,7) 欠费月份'); sql.Add(',sum(应收RMB-已收RMB) AMTRMB,sum(应收USD-已收USD) AMTUSD'); sql.Add('from v_op_bscard '); sql.Add('where 委托单位=:委托单位 and 合计应收<>合计已收 and 会计期间<:aDate'); sql.Add('Group by SUBSTRING(CONVERT(char(15),会计期间,111),1,7)'); Parameters.ParamByName('委托单位').Value:=t_op_bill.FieldByName('委托单位').Asstring; Parameters.ParamByName('aDate').Value:=aDate; Open;First; while not eof do begin t_op_bill_items.Insert; t_op_bill_items.FieldByName('BILL_ID').AsInteger:=t_op_bill.FieldByName('BILL_ID').AsInteger; t_op_bill_items.FieldByName('欠费月份').AsString:=FieldByName('欠费月份').Asstring; t_op_bill_items.FieldByName('AMTRMB').AsFloat:=FieldByName('AMTRMB').AsFloat; t_op_bill_items.FieldByName('AMTUSD').AsFloat:=FieldByName('AMTUSD').AsFloat; t_op_bill_items.FieldByName('账期').AsString:=AccoutDesc; t_op_bill_items.post; Next; end; finally Free; end; end; sys_print('特放保函',2,ds_op_bill1,nil,nil,nil, ds_op_seaesel1,nil,nil,nil,ds_op_bill1,t_op_bill_items1,nil); end; procedure Tfrm_op_seae_teshusales.t_op_billBeforePost(DataSet: TDataSet); begin table_before_post(t_op_bill,'特放分析'); table_before_post(t_op_bill,'保函承诺日期'); if trim(t_op_bill.FieldByName('备注').asstring)='' then begin showmessage('特放说明不能为空,不能保存!'); abort; end; if Length(trim(t_op_bill.FieldByName('备注').asstring))<12 then begin showmessage('特放说明不能少于6个汉字,不能保存!'); abort; end; if t_op_bill.FieldByName('保函承诺日期').AsDateTime-now>20 then begin ShowMessage('保函承诺日期不能超过20天!'); abort; end; if (t_op_bill.FieldByName('特批标志').AsInteger=1) and (trim(t_op_bill.FieldByName('特批原因').asstring)='') then begin ShowMessage('此客户已连续两次违约,需要违约特批必须填写违约的原因!'); abort; end; { if (t_op_bill.FieldByName('申请特放正本').AsInteger=0) and (t_op_bill.FieldByName('申请特放电放').AsInteger=0) then begin ShowMessage('申请特放数量正本和电放不能为0!'); abort; end; } end; procedure Tfrm_op_seae_teshusales.RxDBLookupCombo1Enter(Sender: TObject); begin TRxDBLookupCombo(Sender).LookupDisplay:='代码;姓名'; end; procedure Tfrm_op_seae_teshusales.RxDBLookupCombo1Exit(Sender: TObject); begin TRxDBLookupCombo(Sender).LookupDisplay:='姓名'; end; procedure Tfrm_op_seae_teshusales.dxDBGrid2CustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont; var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean); var sValues : string; begin if not VarIsNull(ANode.Values[dxDBGrid2Column19.Index]) then begin sValues :=ANode.Values[dxDBGrid2Column19.Index]; if StrToIntDef(sValues,0) = 1 then afont.Color:=$00C080FF; end; if not VarIsNull(ANode.Values[dxDBGrid2Column18.Index]) then begin sValues :=ANode.Values[dxDBGrid2Column18.Index]; if StrToIntDef(sValues,0) = 1 then afont.Color:=clred; end; end; end.