unit U_Customer; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB, cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls, cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit, cxTextEdit, cxDBLookupComboBox, ComObj, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, U_BaseList, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, cxPC, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client, cxContainer; type TfrmCustomer = class(TfrmBaseList) ToolBar1: TToolBar; TBRafresh: TToolButton; TBDel: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; ADOQueryMain: TADOQuery; Label3: TLabel; CoName: TcxTextEdit; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; cxGridLevel1: TcxGridLevel; GPM_1: TcxGridPopupMenu; DS_1: TDataSource; CDS_1: TClientDataSet; btnAdd: TToolButton; v2Column6: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column2: TcxGridDBColumn; v2Column7: TcxGridDBColumn; Label1: TLabel; CoCode: TcxTextEdit; v2Column10: TcxGridDBColumn; btnEdit: TToolButton; Label2: TLabel; Salesman: TcxTextEdit; country: TcxTextEdit; Label4: TLabel; v2Column15: TcxGridDBColumn; CDS_2: TClientDataSet; DS_2: TDataSource; btnSaleser: TToolButton; v2Column3: TcxGridDBColumn; OpenDialog1: TOpenDialog; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Panel2: TPanel; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; v3Column3: TcxGridDBColumn; cxGridDBColumn1: TcxGridDBColumn; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; Tv2Column1: TcxGridDBColumn; v3Column2: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; cxTabControl1: TcxTabControl; btnChk: TToolButton; btnReChk: TToolButton; btnTallyer: TToolButton; Tv1Column5: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; ToolButton1: TToolButton; GPM_2: TcxGridPopupMenu; ToolButton3: TToolButton; Tv1Column7: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure btnEditClick(Sender: TObject); procedure btnAddClick(Sender: TObject); procedure TBuserClick(Sender: TObject); procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure btnSaleserClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure CoCodeKeyPress(Sender: TObject; var Key: Char); procedure btnChkClick(Sender: TObject); procedure btnReChkClick(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure btnTallyerClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure CoCodePropertiesChange(Sender: TObject); private fFlileFlag: string; { Private declarations } procedure InitGrid(); procedure SetStatus(); public FAuthority: string; end; var frmCustomer: TfrmCustomer; implementation uses U_DataLink, U_RTFun, U_ZDYHelp, U_CustomerInput, U_CustInput, U_UserSel, U_AttachmentUpload; {$R *.dfm} procedure TfrmCustomer.SetStatus(); begin btnSaleser.Visible := false; //指定 btnTallyer.Visible := false; //指定 btnChk.Visible := false; //审核 btnReChk.Visible := false; //撤销 btnAdd.Visible := false; //新增 btnEdit.Visible := false; //修改 TBDel.Visible := false; //删除 if Trim(FAuthority) = '管理' then begin btnSaleser.Visible := true; btnTallyer.Visible := true; btnAdd.Visible := true; case cxTabControl1.TabIndex of 0: begin btnEdit.Visible := true; TBDel.Visible := true; btnChk.Visible := true; end; 1: begin // btnEdit.Visible := true; btnReChk.Visible := true; end; 2: begin end; end; end else begin btnAdd.Visible := true; case cxTabControl1.TabIndex of 0: begin btnEdit.Visible := true; TBDel.Visible := true; end; 1: begin end; 2: begin end; end; end; end; procedure TfrmCustomer.InitGrid(); var SqlStr, FilterStr: string; begin FilterStr := SGetFilters(Panel1, 1, 2); SqlStr := ' select * from BS_Company where CoType=''客户'' and Valid=''Y'' '; case cxTabControl1.TabIndex of 0: begin SqlStr := SqlStr + ' and status=''0'''; //已审核是1,未审核是0 end; 1: begin SqlStr := SqlStr + ' and status=''1'''; end; end; if Trim(FAuthority) = '录入' then begin SqlStr := SqlStr + ' and ( SalesId=' + quotedstr(trim(DCode)) + ' or exists (select * from [dbo].[F_Tool_SplitString](TallyId,'','') X where X.RTValue =' + quotedstr(trim(DCode)) + '))'; end; SqlStr := SqlStr + ' ORDER BY CoCode '; InitCDSData(ADOQueryMain, CDS_1, Tv1, SqlStr, FilterStr, 'CoCode'); end; procedure TfrmCustomer.FormDestroy(Sender: TObject); begin inherited; frmCustomer := nil; end; procedure TfrmCustomer.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmCustomer.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmCustomer.TBDelClick(Sender: TObject); var RTValues: TArray; begin if CDS_1.IsEmpty then exit; RTValues := SelTVKey(Tv1, ['COID']); if RTValues[0] = '' then begin Application.MessageBox('请选择数据!', '提示', 0); Exit; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('exec P_BS_Com_Del @COID=' + quotedstr(RTValues[0])); sql.Add(',@DCode=' + quotedstr(trim(DCode))); sql.Add(',@DName=' + quotedstr(trim(DName))); ExecSQL; end; InitGrid(); end; procedure TfrmCustomer.FormShow(Sender: TObject); begin inherited; fFlileFlag := UserDataFlag + 'HX'; FAuthority := self.fParameters1; ReadCxGrid(trim(self.caption) + 'Tv1', Tv1, '客户管理'); ReadCxGrid(trim(self.caption) + 'Tv2', Tv2, '客户管理'); HiddenTVColumn(Tv1, 'COID'); SetStatus(); InitGrid(); end; procedure TfrmCustomer.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmCustomer.ToolButton1Click(Sender: TObject); begin WriteCxGrid(trim(self.caption) + 'Tv1', Tv1, '客户管理'); WriteCxGrid(trim(self.caption) + 'Tv2', Tv2, '客户管理'); end; procedure TfrmCustomer.ToolButton3Click(Sender: TObject); begin if CDS_1.IsEmpty then Exit; try frmAttachmentUpload := TfrmAttachmentUpload.Create(Application); with frmAttachmentUpload do begin if (Trim(FAuthority) = '录入') or (Trim(FAuthority) = '管理') then FEditAuthority := True; fkeyNO := Trim(Self.CDS_1.fieldbyname('Coid').AsString); fType := '客户'; if ShowModal = 1 then begin end; end; finally frmAttachmentUpload.Free; end; end; procedure TfrmCustomer.CoCodeKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin InitGrid(); end; end; procedure TfrmCustomer.CoCodePropertiesChange(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); end; end; procedure TfrmCustomer.cxTabControl1Change(Sender: TObject); begin SetStatus(); TBRafresh.Click; end; procedure TfrmCustomer.btnEditClick(Sender: TObject); begin if CDS_1.IsEmpty then exit; try frmCustInput := TfrmCustInput.Create(Application); with frmCustInput do begin fFlileFlag := self.fFlileFlag; FCOID := Trim(Self.CDS_1.fieldbyname('COID').AsString); if ShowModal = 1 then begin TBRafresh.Click; end; end; finally frmCustInput.Free; end; end; procedure TfrmCustomer.btnTallyerClick(Sender: TObject); var MTallyId, MTallyer: string; RTValues: TArray; begin if CDS_1.IsEmpty then exit; RTValues := SelTVKey(Tv1, ['COID']); if RTValues[0] = '' then begin Application.MessageBox('请选择数据!', '提示', 0); Exit; end; MTallyId := ''; MTallyer := ''; try frmUserSel := TfrmUserSel.Create(Application); with frmUserSel do begin Fdept := '理单'; FMultiple := True; if ShowModal = 1 then begin while frmUserSel.CDS_1.Locate('SSel', True, []) do begin MTallyId := MTallyId + Trim(CDS_1.FieldByName('UserID').AsString) + ','; MTallyer := MTallyer + Trim(CDS_1.FieldByName('UserName').AsString) + ','; frmUserSel.CDS_1.Delete; end; end; end; finally frmUserSel.Free; end; if MTallyId = '' then Exit; MTallyId := copy(MTallyId, 1, Length(MTallyId) - 1); MTallyer := copy(MTallyer, 1, Length(MTallyer) - 1); with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update BS_Company set TallyId=' + quotedstr(trim(MTallyId))); sql.Add(' ,Tallyer=' + quotedstr(trim(MTallyer))); sql.Add('where EXISTS(select X.RTValue from [dbo].[F_Tool_SplitString](' + QuotedStr(RTValues[0]) + ','','') X where BS_Company.CoID=X.RTValue ) '); ExecSQL; end; InitGrid(); end; procedure TfrmCustomer.btnChkClick(Sender: TObject); var RTValues: TArray; begin if CDS_1.IsEmpty then exit; RTValues := SelTVKey(Tv1, ['COID']); if RTValues[0] = '' then begin Application.MessageBox('请选择数据!', '提示', 0); Exit; end; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update BS_Company SET status=''1'',Chktime=getdate(),Chker=' + quotedstr(trim(DName))); sql.Add('where EXISTS(select X.RTValue from [dbo].[F_Tool_SplitString](' + QuotedStr(RTValues[0]) + ','','') X where BS_Company.CoID=X.RTValue ) '); execsql; end; application.MessageBox('审核成功!', '提示信息'); TBRafresh.Click; except application.MessageBox('审核失败!', '提示信息', 0); end; end; procedure TfrmCustomer.btnReChkClick(Sender: TObject); var RTValues: TArray; begin if CDS_1.IsEmpty then exit; RTValues := SelTVKey(Tv1, ['COID']); if RTValues[0] = '' then begin Application.MessageBox('请选择数据!', '提示', 0); Exit; end; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update BS_Company SET status=''0'',Chktime=null,Chker=null '); sql.Add('where EXISTS(select X.RTValue from [dbo].[F_Tool_SplitString](' + QuotedStr(RTValues[0]) + ','','') X where BS_Company.CoID=X.RTValue ) '); execsql; end; application.MessageBox('撤销审核成功!', '提示信息'); TBRafresh.Click; except application.MessageBox('撤销审核失败!', '提示信息', 0); end; end; procedure TfrmCustomer.btnAddClick(Sender: TObject); begin try frmCustInput := TfrmCustInput.Create(Application); with frmCustInput do begin FCOID := ''; fFlileFlag := self.fFlileFlag; if ShowModal = 1 then begin InitGrid(); end; end; finally frmCustInput.Free; end; end; procedure TfrmCustomer.TBuserClick(Sender: TObject); var FuserName: string; begin end; procedure TfrmCustomer.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin with ADOQueryTemp do begin Filtered := False; Close; SQL.Clear; sql.Add(' select * from BS_Company_contact where COID=' + quotedstr(Trim(CDS_1.FieldByName('COID').AsString))); Open; end; SCreateCDS(ADOQueryTemp, CDS_2); SInitCDSData(ADOQueryTemp, CDS_2); end; procedure TfrmCustomer.btnSaleserClick(Sender: TObject); var MSaleser, MSalesId: string; RTValues: TArray; begin if CDS_1.IsEmpty then exit; RTValues := SelTVKey(Tv1, ['COID']); if RTValues[0] = '' then begin Application.MessageBox('请选择数据!', '提示', 0); Exit; end; try frmUserSel := TfrmUserSel.Create(Application); with frmUserSel do begin Fdept := '业务'; if ShowModal = 1 then begin MSalesId := Trim(CDS_1.fieldbyname('UserID').AsString); MSaleser := Trim(CDS_1.fieldbyname('UserName').AsString); end; end; finally frmUserSel.Free; end; if MSalesId = '' then Exit; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update BS_Company set Saleser=' + quotedstr(trim(MSaleser))); sql.Add(' ,SalesId=' + quotedstr(trim(MSalesId))); sql.Add('where EXISTS(select X.RTValue from [dbo].[F_Tool_SplitString](' + QuotedStr(RTValues[0]) + ','','') X where BS_Company.CoID=X.RTValue ) '); ExecSQL; end; initgrid(); end; procedure TfrmCustomer.FormCreate(Sender: TObject); begin inherited; FAuthority := trim(fParameters1); end; end.