unit U_Factory;

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, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges,
  dxBarBuiltInMenu, U_BaseList, cxPC;

type
  TfrmFactory = 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;
    DS_1: TDataSource;
    CDS_1: TClientDataSet;
    btnAdd: TToolButton;
    v2Column6: TcxGridDBColumn;
    v2Column1: TcxGridDBColumn;
    v2Column2: TcxGridDBColumn;
    Label1: TLabel;
    CoCode: TEdit;
    btnEdit: TToolButton;
    v2Column12: TcxGridDBColumn;
    CoAbbrName: TEdit;
    Label4: TLabel;
    v2Column15: TcxGridDBColumn;
    CDS_2: TClientDataSet;
    DS_2: TDataSource;
    v2Column3: TcxGridDBColumn;
    Label5: TLabel;
    v2Column4: TcxGridDBColumn;
    btnFollower: TToolButton;
    v2Column5: TcxGridDBColumn;
    Panel2: TPanel;
    GPM_1: TcxGridPopupMenu;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    v3Column3: TcxGridDBColumn;
    cxGridDBColumn1: TcxGridDBColumn;
    Tv2Column1: TcxGridDBColumn;
    cxGridLevel2: TcxGridLevel;
    GPM_2: TcxGridPopupMenu;
    Tv2Column2: TcxGridDBColumn;
    Tv2Column3: TcxGridDBColumn;
    CoBusinessType: TEdit;
    btnChk: TToolButton;
    btnReChk: TToolButton;
    cxTabControl1: TcxTabControl;
    ToolButton1: TToolButton;
    ToolButton8: TToolButton;
    Tv1Column1: TcxGridDBColumn;
    ToolButton2: 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 btnFollowerClick(Sender: TObject);
    procedure FactTypeChange(Sender: TObject);
    procedure Tv2Column2PropertiesEditValueChanged(Sender: TObject);
    procedure Tv2Column3PropertiesEditValueChanged(Sender: TObject);
    procedure CoCodeKeyPress(Sender: TObject; var Key: Char);
    procedure btnChkClick(Sender: TObject);
    procedure btnReChkClick(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton8Click(Sender: TObject);
    procedure CoCodeChange(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
  private
    { Private declarations }
    procedure InitGrid();
    procedure SetStatus();
  public
    FAuthority: string;
  end;

var
  frmFactory: TfrmFactory;

implementation

uses
  U_DataLink, U_RTFun, U_ZDYHelp, U_FactoryInput, U_UserSel, U_AttachmentUpload,
  U_FactoryImport;

{$R *.dfm}

procedure TfrmFactory.SetStatus();
begin
  btnFollower.Enabled := false;     //指定
  btnChk.Enabled := false;     //审核
  btnReChk.Enabled := false;     //撤销

  btnAdd.Enabled := false;     //新增
  btnEdit.Enabled := false;     //修改
  TBDel.Enabled := false;           //删除

  if Trim(FAuthority) = '管理' then
  begin
    btnFollower.Enabled := true;
    btnAdd.Enabled := true;
    case cxTabControl1.TabIndex of
      0:
        begin
          btnEdit.Enabled := true;
          TBDel.Enabled := true;
          btnChk.Enabled := true;
        end;
      1:
        begin
          btnReChk.Enabled := true;
        end;
      2:
        begin

        end;
    end;
  end
  else
  begin
    btnAdd.Enabled := true;
    case cxTabControl1.TabIndex of
      0:
        begin
          btnEdit.Enabled := true;
          TBDel.Enabled := true;
        end;
      1:
        begin

        end;
      2:
        begin

        end;
    end;
  end;
end;

procedure TfrmFactory.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 CoType=''供应商'' ' + (WSql));

      case cxTabControl1.TabIndex of
        0:
          begin
            sql.Add(' and  status=''0''');       //已审核是1，未审核是0
          end;
        1:
          begin
            sql.Add(' and  status=''1''');
          end;
        2:
          begin

          end;
      end;
      SQL.Add(' ORDER BY CoCode  ');
      Open;
    end;
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
    SCreateCDS(ADOQueryMain, CDS_1);
    SInitCDSData(ADOQueryMain, CDS_1);
    CDS_1.Locate('CoCode', FCoCode, []);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmFactory.FormDestroy(Sender: TObject);
begin
  inherited;
  frmFactory := nil;
end;

procedure TfrmFactory.FactTypeChange(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmFactory.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  Action := caFree;
end;

procedure TfrmFactory.TBCloseClick(Sender: TObject);
begin

  Close;
end;

procedure TfrmFactory.TBDelClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;
  if Application.MessageBox('确定要删除数据吗？', '提示', 32 + 4) <> IDYES then
    Exit;
  if not CDS_1.Locate('SSel', true, []) then
  begin
    Application.MessageBox('请选择数据!', '提示', 0);
    Exit;
  end;
  while CDS_1.Locate('SSel', true, []) do
  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;

    CDS_1.Delete;
  end;

end;

procedure TfrmFactory.FormShow(Sender: TObject);
begin
  inherited;
  FAuthority := self.fParameters1;
  ReadCxGrid(trim(self.Caption) + 'TV1', Tv1, '供应商管理');
  ReadCxGrid(trim(self.Caption) + 'TV2', Tv2, '供应商管理');
  SetStatus();

  InitGrid();

end;

procedure TfrmFactory.TBRafreshClick(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmFactory.ToolButton1Click(Sender: TObject);
begin

  WriteCxGrid(trim(self.Caption) + 'TV1', Tv1, '供应商管理');
  WriteCxGrid(trim(self.Caption) + 'TV2', Tv2, '供应商管理');

end;

procedure TfrmFactory.ToolButton2Click(Sender: TObject);
begin
  try
    frmFactoryImport := TfrmFactoryImport.Create(Application);
    with frmFactoryImport do
    begin
      if ShowModal = 1 then
      begin
        self.InitGrid();
      end;
    end;
  finally
    frmFactoryImport.Free;
  end;
end;

procedure TfrmFactory.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 TfrmFactory.CoCodeChange(Sender: TObject);
begin
  btnFind.Click;
end;

procedure TfrmFactory.CoCodeKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    InitGrid();
  end;
end;

procedure TfrmFactory.cxTabControl1Change(Sender: TObject);
begin
  SetStatus();
  TBRafresh.Click;
end;

procedure TfrmFactory.btnEditClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    exit;
  try
    frmFactoryInput := TfrmFactoryInput.Create(Application);
    with frmFactoryInput do
    begin
      FCOID := Trim(Self.CDS_1.fieldbyname('COID').AsString);
//      CoCode.ReadOnly:=True;
      if ShowModal = 1 then
      begin
        TBRafresh.Click;
      end;
    end;
  finally
    frmFactoryInput.Free;
  end;
end;

procedure TfrmFactory.btnAddClick(Sender: TObject);
begin
  try
    frmFactoryInput := TfrmFactoryInput.Create(Application);
    with frmFactoryInput do
    begin
      FCOID := '';
      if ShowModal = 1 then
      begin
        InitGrid();
      end;
    end;
  finally
    frmFactoryInput.Free;
  end;
end;

procedure TfrmFactory.TBuserClick(Sender: TObject);
var
  FuserName: string;
begin

end;

procedure TfrmFactory.Tv2Column2PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin
  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName);
  if Trim(mvalue) = '' then
  begin
    mvalue := '0';
  end;

  with CDS_1 do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;
  end;

  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update BS_Company set  ' + FFieldName + '=' + quotedstr(Trim(mvalue)));
    sql.Add('where  CoID=' + quotedstr(Trim(CDS_1.fieldbyname('CoID').AsString)));
    ExecSQL;
  end;
  tv2.Controller.EditingController.ShowEdit();
end;

procedure TfrmFactory.Tv2Column3PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin
  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName);
  if Trim(mvalue) = '' then
  begin
    mvalue := '0';
  end;

  with CDS_1 do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;
  end;

  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update BS_Company set  ' + FFieldName + '=' + quotedstr(Trim(mvalue)));
    sql.Add('where  CoID=' + quotedstr(Trim(CDS_1.fieldbyname('CoID').AsString)));
    ExecSQL;
  end;
  tv2.Controller.EditingController.ShowEdit();
end;

procedure TfrmFactory.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
  with ADOQueryTemp do
  begin
    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 TfrmFactory.btnFollowerClick(Sender: TObject);
var
  MFollower, MFollowId: string;
begin
  MFollower := '';
  MFollowId := '';
  if not CDS_1.Locate('SSel', true, []) then
  begin
    Application.MessageBox('请选择数据!', '提示', 0);
    Exit;
  end;

  try
    frmUserSel := TfrmUserSel.Create(Application);
    with frmUserSel do
    begin
      FMultiple := True;
      if ShowModal = 1 then
      begin
        while frmUserSel.CDS_1.Locate('SSel', True, []) do
        begin
          if MFollowId = '' then
          begin
            MFollowId := Trim(CDS_1.FieldByName('UserID').AsString);
            MFollower := Trim(CDS_1.FieldByName('UserName').AsString);
          end
          else
          begin
            MFollowId := MFollowId + ',' + Trim(CDS_1.FieldByName('UserID').AsString);
            MFollower := MFollower + ',' + Trim(CDS_1.FieldByName('UserName').AsString);
          end;

          frmUserSel.CDS_1.Delete;
        end;

        while Self.CDS_1.Locate('SSel', True, []) do
        begin
          with ADOQueryCmd do
          begin
            Close;
            SQL.Clear;
            sql.Add('update BS_Company set FollowId=' + quotedstr(trim(MFollowId)));
            sql.Add(' ,Follower=' + quotedstr(trim(MFollower)));
            sql.Add(' where COID=''' + Trim(Self.CDS_1.fieldbyname('COID').AsString) + '''');
            ExecSQL;
          end;
          Self.CDS_1.Delete;
        end;
        Self.InitGrid();
      end;
    end;
  finally
    frmUserSel.Free;
  end;

end;

procedure TfrmFactory.btnChkClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    exit;
  if not CDS_1.Locate('SSel', true, []) then
  begin
    Application.MessageBox('请选择数据!', '提示', 0);
    Exit;
  end;
  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 TfrmFactory.btnReChkClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    exit;
  if not CDS_1.Locate('SSel', true, []) then
  begin
    Application.MessageBox('请选择数据!', '提示', 0);
    Exit;
  end;
  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 TfrmFactory.ToolButton8Click(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;

end.

