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, dxScrollbarAnnotations;

type
  TfrmCustomer = class(TfrmBaseList)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBDel: TToolButton;
    TBClose: TToolButton;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    Panel1: TPanel;
    btnFind: TToolButton;
    ADOQueryMain: TADOQuery;
    Label3: TLabel;
    CoName: TEdit;
    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: TEdit;
    v2Column10: TcxGridDBColumn;
    btnEdit: TToolButton;
    Label2: TLabel;
    Saleser: TEdit;
    country: TEdit;
    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;
    Tv1Column1: TcxGridDBColumn;
    btnTallyer: TToolButton;
    Tv1Column5: TcxGridDBColumn;
    Tv1Column6: TcxGridDBColumn;
    ToolButton1: TToolButton;
    GPM_2: TcxGridPopupMenu;
    ToolButton3: TToolButton;
    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 btnFindClick(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 CoCodeChange(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.Enabled := false;     //ָ��
  btnTallyer.Enabled := false;     //ָ��
  btnChk.Visible := false;     //���
  btnReChk.Visible := false;     //����


  if Trim(FAuthority) = '����' then
  begin
    btnSaleser.Enabled := true;
    btnTallyer.Enabled := true;
  end;

end;

procedure TfrmCustomer.InitGrid();
var
  WSql, FCoCode: string;
begin
  WSql := SGetFilters(Panel1, 1, 2);
  if trim(WSql) <> '' then
  begin
    WSql := ' and ' + trim(WSql);
  end;
  if not CDS_1.IsEmpty then
    FCoCode := CDS_1.FieldByName('CoCode').AsString;

  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add(' select * from BS_Company  ');
      sql.Add(' where 1=1 ' + (WSql));
      sql.Add(' and CoType=''�ͻ�'' and Valid=''Y'' ');

      if Trim(FAuthority) = '¼��' then
      begin
        sql.Add(' and ( SalesId=' + quotedstr(trim(DCode)) + ' or exists (select * from [dbo].[F_Tool_SplitString](TallyId,'','') X where X.RTValue =' + quotedstr(trim(DCode)) + '))');
      end;

      case cxTabControl1.TabIndex of
        0:
          begin
            sql.Add(' and  status=''0''');
          end;
        1:
          begin
            sql.Add(' and  status=''1''');
          end;
      end;
      SQL.Add(' ORDER BY CoCode ');
    //  showmessage(sql.Text);
      Open;
    end;
    SCreateCDS(ADOQueryMain, CDS_1);
    SInitCDSData(ADOQueryMain, CDS_1);
    CDS_1.Locate('CoCode', FCoCode, []);
  finally
    ADOQueryMain.EnableControls;
  end;
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);
begin
  if CDS_1.IsEmpty then
    Exit;
  if Application.MessageBox('ȷ��Ҫɾ��������', '��ʾ', 32 + 4) <> IDYES then
    Exit;

  if Trim(CDS_1.fieldbyname('COID').AsString) <> '' then
  begin
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('exec P_BS_Com_Del @COID=' + quotedstr(trim(CDS_1.fieldbyname('COID').AsString)));
      sql.Add(',@DCode=' + quotedstr(trim(DCode)));
      sql.Add(',@DName=' + quotedstr(trim(DName)));
      ExecSQL;
    end;
  end;
  CDS_1.Delete;

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, '�ͻ�����');
  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.btnFindClick(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.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.CoCodeChange(Sender: TObject);
begin

  btnFind.Click;
end;

procedure TfrmCustomer.CoCodeKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    InitGrid();
  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;
begin
  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);
  while CDS_1.Locate('SSel', True, []) do
  begin
    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 COID=''' + Trim(CDS_1.fieldbyname('COID').AsString) + '''');
      ExecSQL;
    end;
    CDS_1.Delete;
  end;
  InitGrid();
end;

procedure TfrmCustomer.btnChkClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    exit;
  try
    with CDS_1 do
    begin
      DisableControls;
      First;
      while not eof do
      begin
        if fieldbyname('SSel').AsBoolean then
        begin
          with ADOQueryCmd do
          begin
            close;
            sql.Clear;
            sql.Add('update  BS_Company SET status=''1'',Chktime=getdate(),Chker=' + quotedstr(trim(DName)));
            sql.Add('where CoID=' + quotedstr(trim(CDS_1.fieldbyname('CoID').AsString)));
            execsql;
          end;
        end;
        next;
      end;
      First;
      EnableControls;
    end;
    application.MessageBox('��˳ɹ���', '��ʾ��Ϣ');
    TBRafresh.Click;
  except
    application.MessageBox('���ʧ�ܣ�', '��ʾ��Ϣ', 0);
  end;
end;

procedure TfrmCustomer.btnReChkClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    exit;
  try
    with CDS_1 do
    begin
      DisableControls;
      First;
      while not eof do
      begin
        if fieldbyname('SSel').AsBoolean then
        begin
          with ADOQueryCmd do
          begin
            close;
            sql.Clear;
            sql.Add('update  BS_Company SET status=''0'',Chktime=null,Chker=null ');
            sql.Add('where CoID=' + quotedstr(trim(CDS_1.fieldbyname('CoID').AsString)));
            execsql;
          end;
        end;
        next;
      end;
      First;
      EnableControls;
    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;
begin
  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 COID=''' + Trim(CDS_1.fieldbyname('COID').AsString) + '''');
    ExecSQL;
  end;

  initgrid();
end;

procedure TfrmCustomer.FormCreate(Sender: TObject);
begin
  inherited;
  FAuthority := trim(fParameters1);
end;

end.