unit U_PBGYSInPutMain;

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, cxDropDownEdit, cxPC, BtnEdit;

type
  TfrmPBGYSInPutMain = class(TForm)
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    Panel2: TPanel;
    KHNo: TEdit;
    Label15: TLabel;
    Label16: TLabel;
    Label13: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    LabKHName: TLabel;
    Label20: TLabel;
    KHAdd: TMemo;
    KHSJAdd: TMemo;
    KHLXR: TEdit;
    KHTel: TEdit;
    KHName: TEdit;
    KHNameJC: TEdit;
    Note: TEdit;
    Label1: TLabel;
    KHWX: TEdit;
    Label2: TLabel;
    KHEmail: TEdit;
    Label3: TLabel;
    KHJYFanWei: TEdit;
    ToolBar1: TToolBar;
    TBSave: TToolButton;
    TBClose: TToolButton;
    DS_HZ3: TDataSource;
    CDS_HZ3: TClientDataSet;
    LabKHType: TLabel;
    KHType: TBtnEditA;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBSaveClick(Sender: TObject);
    procedure KHTypeBtnClick(Sender: TObject);
  private
    { Private declarations }
    procedure InitGrid();
    function  SaveData():Boolean;
    procedure initBtnColor(panel12:TPanel);
  public
    { Public declarations }
    FKHMainid,FTSFlag,FKHFlag:String;
  end;
var
  frmPBGYSInPutMain: TfrmPBGYSInPutMain;

implementation
uses
  U_DataLink,U_RTFun,U_ZDYHelp,U_FjList_RZ,U_SCPerson;

{$R *.dfm}

procedure TfrmPBGYSInPutMain.InitGrid();
begin
  with ADOQueryTemp do
  begin
    Close;
    SQL.Clear;
    sql.Add('select * from KH_Main where KHMainID='''+Trim(FKHMainid)+'''');
    Open;
  end;
  //主表
  if ADOQueryTemp.IsEmpty=false then
    SCSHDataNew(ADOQueryTemp,Panel2,2);
end;

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

procedure TfrmPBGYSInPutMain.TBCloseClick(Sender: TObject);
begin
  Close; 
end;
procedure TfrmPBGYSInPutMain.FormShow(Sender: TObject);

begin
  KHName.SetFocus;
  InitGrid();
  if TBSave.Visible=False then
  begin
    initBtnColor(Panel2);
  end;
  if Trim(FKHFlag)='GYS' then
  begin
    LabKHName.Caption:='供 应 商';
    LabKHType.Visible:=True;
    KHType.Visible:=True;
    Self.Caption:='供应商信息录入';
  end else
  if Trim(FKHFlag)='KH' then
  begin
    LabKHName.Caption:='客    户';
    LabKHType.Visible:=False;
    KHType.Visible:=False;
    Self.Caption:='客户信息录入';
  end;
end;
procedure TfrmPBGYSInPutMain.initBtnColor(panel12:TPanel);
var
  i:Integer;
begin
  with panel12 do
  begin
    for i:=0 to panel12.ControlCount-1 do
    begin
      if Controls[i] is TEdit then
      begin
        TEdit(Controls[i]).Color:=clMenu;
        TEdit(Controls[i]).ReadOnly:=True;
      end else
      if Controls[i] is TMemo then
      begin
        TMemo(Controls[i]).Color:=clMenu;
        TMemo(Controls[i]).ReadOnly:=True;
      end  else
      if Controls[i] is TComboBox then
      begin
        TComboBox(Controls[i]).Color:=clMenu;
        TComboBox(Controls[i]).Enabled:=False;
      end;
    end;
  end;
end;

function TfrmPBGYSInPutMain.SaveData():Boolean;
var
  maxno,FGYSNO,maxnoYWY:String;
begin
  result:=false;
  try
    ADOQueryCmd.Connection.BeginTrans;
    if Trim(FKHMainid)='' then
    begin
      if GetLSNo(ADOQueryCmd,maxno,'KH','KH_Main',4,1)=False then
      begin
        Result:=False;
        ADOQueryCmd.Connection.RollbackTrans;
        Application.MessageBox('取最大ID失败GYSKH！','提示',0);
        Exit;
      end;
      if Trim(FKHFlag)='GYS' then
      begin
        //if GetLSNo(ADOQueryCmd,FGYSNO,Trim(KHType.TxtCode),'KH_Main',4,0)=False then
        if GetLSNo(ADOQueryCmd,FGYSNO,Trim('GY'),'KH_Main',4,0)=False then
        begin
          Result:=False;
          ADOQueryCmd.Connection.RollbackTrans;
          Application.MessageBox('取供应商最大号失败！','提示',0);
          Exit;
        end;
      end else
      if Trim(FKHFlag)='KH' then
      begin
        if GetLSNo(ADOQueryCmd,FGYSNO,'KH','KH_Main',4,0)=False then
        begin
          Result:=False;
          ADOQueryCmd.Connection.RollbackTrans;
          Application.MessageBox('取供应商最大号失败！','提示',0);
          Exit;
        end;
      end;

      KHNo.Text:=Trim(FGYSNO);
    end else
    begin
      maxno:=Trim(FKHMainid);
    end;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('select * from KH_Main where KHMainID='''+Trim(FKHMainid)+'''');
      Open;
    end;
    with ADOQueryCmd do
    begin
      If IsEmpty then
      begin
        Append;
        FieldByName('Filler').Value:=Trim(DName);
        FieldByName('Fillercode').Value:=Trim(DCode);
        FieldByName('FillTime').Value:=SGetServerDateTime(ADOQueryTemp);
      end
      else
      begin
        Edit;
        FieldByName('Editer').Value:=Trim(DName);
        FieldByName('EditerCode').Value:=Trim(DCode);
        FieldByName('Edittime').Value:=SGetServerDateTime(ADOQueryTemp);
      end;
      FieldByName('KHMainID').Value:=Trim(maxno);
      FieldByName('KHFlag').Value:=FKHFlag;
      RTSetsavedata(ADOQueryCmd,'KH_Main',Panel2,2);
      FieldByName('Valid').Value:='Y';
      Post;
    end;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from KH_Main where KHName='''+Trim(KHName.Text)+'''');
      sql.Add(' and KHFlag='''+Trim(FKHFlag)+''' and Valid=''Y'' ');
      Open;
    end;
    if ADOQueryCmd.RecordCount>1 then
    begin
      ADOQueryCmd.Connection.RollbackTrans;
      Application.MessageBox('全称重复!','提示',0);
      Exit;
    end;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from KH_Main where KHNameJC='''+Trim(KHNameJC.Text)+'''');
      sql.Add(' and KHFlag='''+Trim(FKHFlag)+''' and Valid=''Y'' ');
      Open;
    end;
    if ADOQueryCmd.RecordCount>1 then
    begin
      ADOQueryCmd.Connection.RollbackTrans;
      Application.MessageBox('简称重复!','提示',0);
      Exit;
    end;
    if Trim(FKHMainid)='' then
    begin
      if GetLSNo(ADOQueryCmd,maxnoYWY,'ZD','KH_Owner',3,1)=False then
      begin
        ADOQueryCmd.Connection.RollbackTrans;
        Application.MessageBox('取指定最大号失败!','提示',0);
        Exit;
      end;
      with ADOQueryCmd do
      begin
        Close;
        sql.Clear;
        sql.Add('select * from KH_Owner where 1=2');
        Open;
      end;
      with ADOQueryCmd do
      begin
        Append;
        FieldByName('KHMainId').Value:=Trim(maxno);
        FieldByName('KOID').Value:=Trim(maxnoYWY);
        FieldByName('UserId').Value:=Trim(DCode);
        FieldByName('UserName').Value:=Trim(DName);
        FieldByName('KOType').Value:='负责人';
        FieldByName('FillerCode').Value:=Trim(DCode);
        FieldByName('Filler').Value:=Trim(DName);
        FieldByName('Valid').Value:='Y';
        Post;
      end;
      with ADOQueryCmd do
      begin
        Close;
        sql.Clear;
        sql.Add('Update KH_Main Set FZR=dbo.F_Get_HZStr(KH_Main.KHMainId,''FZR'')');
        sql.Add(' where KHMainId='''+Trim(maxno)+'''');
        ExecSQL;
      end;
    end;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('Update CK_MYSC_CR Set KHName='''+trim(KHName.Text)+''' ');
      sql.Add(' where KHCode='''+Trim(KHNo.Text)+'''');
      ExecSQL;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    FKHMainid:=maxno;
    result:=true;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Result:=false;
    Application.MessageBox('数据保存失败!','提示',0);
    Exit;
  end;
end;

procedure TfrmPBGYSInPutMain.TBSaveClick(Sender: TObject);
begin
  Panel2.SetFocus;
  IF trim(KHName.Text)='' then
  begin
    application.MessageBox('全称不能为空！','提示信息',MB_ICONERROR);
    exit;
  end;
  if Trim(KHNameJC.Text)='' then
  begin
    application.MessageBox('简称不能为空！','提示信息',MB_ICONERROR);
    exit;
  end;
  if Trim(FKHFlag)='GYS' then
  begin
    if Trim(KHType.Text)='' then
    begin
      application.MessageBox('类型不能为空！','提示信息',MB_ICONERROR);
      exit;
    end;
  end;
  if Application.MessageBox('确定要保存数据吗？','提示',32+4)<>IDYES then Exit;
  if SaveData() then
  begin
    Application.MessageBox('保存成功!','提示',0);
    ModalResult:=1;
  end;
end;


procedure TfrmPBGYSInPutMain.KHTypeBtnClick(Sender: TObject);
begin
  {try
    frmZDYHelp:=TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag:='GYSType';
      flagname:='供应商类型';
      ViewFlag:=True;
      if ShowModal=1 then
      begin
        Self.KHType.Text:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString);
        Self.KHType.TxtCode:=Trim(ClientDataSet1.fieldbyname('Note').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end; }
  try
    frmSCPerson:=TfrmSCPerson.Create(Application);
    with frmSCPerson do
    begin
      FlagStr:='GYSType';
      if ShowModal=1 then
      begin
        Self.KHType.Text:=Trim(FSDPerson);
      end;
    end;
  finally
    frmSCPerson.Free;
  end;
end;

end.
