unit U_PKInPutQT;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxControls,
  cxGridCustomView, cxGrid, cxMemo, cxRichEdit, ComCtrls, cxContainer,
  cxTextEdit, cxMaskEdit, cxButtonEdit, StdCtrls, ToolWin, DBClient, ADODB,
  ExtCtrls, BtnEdit, cxDropDownEdit, cxCalendar, cxGridCustomPopupMenu,
  cxGridPopupMenu, cxSplitter;

type
  TfrmPKInPutQT = class(TForm)
    ToolBar1: TToolBar;
    TBSave: TToolButton;
    TBClose: TToolButton;
    ADOTemp: TADOQuery;
    ADOCmd: TADOQuery;
    DataSource1: TDataSource;
    Order_Sub: TClientDataSet;
    ADOQuery1: TADOQuery;
    cxGridPopupMenu1: TcxGridPopupMenu;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Column6: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1Column22: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    v1Column1: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1Column11: TcxGridDBColumn;
    ToolButton2: TToolButton;
    v1Column12: TcxGridDBColumn;
    v1Column13: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBSaveClick(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure v1Column11PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1Column7PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure ToolButton2Click(Sender: TObject);
    procedure v1Column8PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1Column6PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1Column2PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
  private
    FXS:Integer;
    procedure InitData();
    procedure ZDYHelp(FButn:TcxButtonEdit;LType:string);
    function  SaveData():Boolean;
    procedure GetMaxConNO();
    { Private declarations }
  public
    PState,PCopyInt:Integer;
    FMainId,FConNo,FConType,FYLType:String;

    { Public declarations }
  end;

var
  frmPKInPutQT: TfrmPKInPutQT;

implementation
uses
  U_DataLink,U_ZDYHelp,U_RTFun,U_GYSList,U_ZDYHelpSel, U_ModuleNote,
  U_GYSSelList;

{$R *.dfm}

procedure TfrmPKInPutQT.TBCloseClick(Sender: TObject);
begin
  Close;
  WriteCxGrid('资金审批录入其他',Tv1,'财务管理');
end;

procedure TfrmPKInPutQT.InitData();
var
  fsj:String;
begin
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
     sql.Add(' select A.* ');
     SQL.Add(' from YF_Money_PaiKuan A ');
    sql.Add(' where A.PKId='''+Trim(FMainId)+'''');
    Open;
  end;
  SCreateCDS20(ADOQuery1,Order_Sub);
  SInitCDSData20(ADOQuery1,Order_Sub);

end;

procedure TfrmPKInPutQT.ZDYHelp(FButn:TcxButtonEdit;LType:string);
begin
end;

procedure TfrmPKInPutQT.FormShow(Sender: TObject);
begin
  ReadCxGrid('资金审批录入其他',Tv1,'财务管理');
  InitData();
end;
procedure TfrmPKInPutQT.GetMaxConNO();
begin

end;
function TfrmPKInPutQT.SaveData():Boolean;
var
  maxno,FSQID:String;
begin
  try
    Result:=False;
    ADOCmd.Connection.BeginTrans;
    //保存主表
    Order_Sub.DisableControls;
    with Order_Sub do
    begin
      First;
      while not Eof do
      begin
        with ADOTemp do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from YF_Money_PaiKuan where PKID='''+Trim(Order_Sub.fieldbyname('PKID').AsString)+'''');
          Open;
        end;
        FSQID:=Trim(ADOTemp.fieldbyname('PKID').AsString);
        if Trim(FSQID)='' then
        begin
          if GetLSNo(ADOCmd,maxno,'SS','YF_Money_PaiKuan',4,1)=False then
          begin
            Order_Sub.EnableControls;
            ADOCmd.Connection.RollbackTrans;
            Application.MessageBox('取规则流水号失败!','提示',0);
            Exit;
          end;
        end else
        begin
          maxno:=Trim(FSQID);
        end;
        with ADOCmd do
        begin
          Close;
          sql.Clear;
          SQL.Add('select * from YF_Money_PaiKuan where PKID='''+Trim(maxno)+'''');
          Open;
        end;
        with ADOCmd do
        begin
          if Trim(FSQID)='' then
          begin
            Append;
          end
          else begin
            Edit;
          end;
          FieldByName('PKID').Value:=Trim(maxno);
          RTSetSaveDataCDS(ADOCmd,Tv1,Order_Sub,'YF_Money_PaiKuan',0) ;
          FieldByName('HZType').Value:='其他';
          if Trim(Order_Sub.fieldbyname('BZType').AsString)='人民币' then
          begin
            FieldByName('HuiLv').Value:=1;
          end;
          FieldByName('FactoryNo').Value:=Order_Sub.fieldbyname('FactoryNo').Value;
          if PState=1 then
          begin
            FieldByName('Chker').Value:=Null;
            FieldByName('ChkStatus').Value:=Null;
            FieldByName('ChkNote').Value:=Null;
            FieldByName('ChkTime').Value:=Null;
          end;

          if Trim(FSQID)='' then
          begin
            FieldByName('Filler').Value:=Trim(DName);
          end else
          begin
            FieldByName('Editer').Value:=Trim(DName);
            FieldByName('EditTime').Value:=SGetServerDateTime(ADOTemp);
          end;
          Post;
        end;
        with ADOTemp do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from YF_Money_PaiKuan where PKNO='+Trim(Order_Sub.fieldbyname('PKNO').AsString));
          sql.Add(' and Convert(varchar(4),PKDate,120)='''+Trim(FormatDateTime('yyyy',Order_Sub.fieldbyname('PKDate').AsDateTime))+'''');
          Open;
        end;
        if ADOTemp.RecordCount>1 then
        begin
          Result:=False;
          ADOCmd.Connection.RollbackTrans;
          Order_Sub.EnableControls;
          Application.MessageBox(PChar('编号: '+
                                       Trim(Order_Sub.fieldbyname('PKNO').AsString)+
                                       ' 不能重复录入!'),'提示',0);
          Exit;
        end;
        with ADOTemp do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from YF_Money_PaiKuan where ');
          sql.Add(' FactoryName='''+Trim(Order_Sub.fieldbyname('FactoryName').AsString)+'''');
          sql.Add(' and isnull(ComTaiTou,'''')='''+Trim(Order_Sub.fieldbyname('ComTaiTou').AsString)+'''');
          sql.Add(' and isnull(FactoryNameOther,'''')='''+Trim(Order_Sub.fieldbyname('FactoryNameOther').AsString)+'''');
          sql.Add(' and isnull(PayMent,'''')='''+Trim(Order_Sub.fieldbyname('PayMent').AsString)+'''');
          sql.Add(' and  PKDate='''+Trim(Order_Sub.fieldbyname('PKDate').AsString)+'''');
          Open;
        end;
        if ADOTemp.RecordCount>1 then
        begin
          Result:=False;
          ADOCmd.Connection.RollbackTrans;
          Order_Sub.EnableControls;
          Application.MessageBox(PChar('供应商:'+
                                       Trim(Order_Sub.fieldbyname('FactoryName').AsString)+
                                       Trim(FormatDateTime('yyyy-MM-dd',Order_Sub.fieldbyname('FactoryName').AsDateTime))+
                                       '日期的排款数据不能重复录入!'),'提示',0);
          Exit;
        end;
        Edit;
        FieldByName('PKID').Value:=Trim(maxno);

        Next;
      end;
    end;
    Order_Sub.EnableControls;
    ADOCmd.Connection.CommitTrans;
    Result:=True;
  except
    Result:=False;
    ADOCmd.Connection.RollbackTrans;
    Application.MessageBox('保存失败！','提示',0);
  end;
end;

procedure TfrmPKInPutQT.TBSaveClick(Sender: TObject);
begin
  ToolBar1.SetFocus;
  if Order_Sub.IsEmpty then
  begin
    Application.MessageBox('明细不能为空！','提示',0);
    exit;
  end;
  if Order_Sub.Locate('PKNO',null,[]) then
  begin
    Application.MessageBox('编号不能为空!','提示',0);
    Exit;
  end;
  if Order_Sub.Locate('PKDate',null,[]) then
  begin
    Application.MessageBox('日期不能为空!','提示',0);
    Exit;
  end;
  if Order_Sub.Locate('FactoryName',null,[]) then
  begin
    Application.MessageBox('供应商不能为空!','提示',0);
    Exit;
  end;
  if Order_Sub.Locate('PKName',null,[]) then
  begin
    Application.MessageBox('品名不能为空!','提示',0);
    Exit;
  end;
  if Order_Sub.Locate('PayMent',null,[]) then
  begin
    Application.MessageBox('支付方式不能为空!','提示',0);
    Exit;
  end;
  if Order_Sub.Locate('PKMoney',null,[]) then
  begin
    Application.MessageBox('申请金额不能为空!','提示',0);
    Exit;
  end;
  if Order_Sub.Locate('ComTaiTou',null,[]) then
  begin
    Application.MessageBox('付款单位不能为空!','提示',0);
    Exit;
  end;
  if Order_Sub.Locate('BZType',null,[]) then
  begin
    Application.MessageBox('币种不能为空!','提示',0);
    Exit;
  end;
  if Order_Sub.Locate('JBPerson',null,[]) then
  begin
    Application.MessageBox('经办人不能为空!','提示',0);
    Exit;
  end;
  if SaveData() then
  begin
    Application.MessageBox('保存成功！','提示',0);
    ModalResult:=1;
  end;

end;

procedure TfrmPKInPutQT.ToolButton3Click(Sender: TObject);
begin
  with Order_Sub do
  begin
    Append;
    FieldByName('PKDate').Value:=Trim(FormatDateTime('yyyy-MM-dd',Now));
    Post;
  end;
end;

procedure TfrmPKInPutQT.ToolButton4Click(Sender: TObject);
begin
  if Order_Sub.IsEmpty then Exit;
  if Trim(Order_Sub.fieldbyname('PKId').AsString)<>'' then
  begin
    if Application.MessageBox('确定要删除数据吗？','提示',32+4)<>IDYES then Exit;
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete YF_Money_PaiKuan where PKId='''+Trim(Order_Sub.fieldbyname('PKId').AsString)+'''');
      ExecSQL;
    end;
  end;
  Order_Sub.Delete;
end;

procedure TfrmPKInPutQT.v1Column11PropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
begin
  try
    frmZDYHelp:=TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag:='GSTT';
      flagname:='公司抬头';
      V1ZdyStr1.Visible:=True;
      V1ZdyStr2.Visible:=True;
      V1ZdyStr3.Visible:=True;
      V1ZdyStr4.Visible:=True;
      V1ZdyStr1.Caption:='简称';
      V1ZdyStr2.Caption:='电话';
      V1ZdyStr3.Caption:='传真';
      V1ZdyStr4.Caption:='地址';
      frmZDYHelp.Align:=alClient;
      if ShowModal=1 then
      begin
        with Self.Order_Sub do
        begin
          Edit;
          FieldByName('ComTaiTou').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString);
        end;
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmPKInPutQT.v1Column7PropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
begin
  try
    frmZDYHelp:=TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag:='PKPayMent';
      flagname:='支付方式';
      if ShowModal=1 then
      begin
        with Self.Order_Sub do
        begin
          Edit;
          FieldByName('PayMent').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString);
        end;
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmPKInPutQT.ToolButton2Click(Sender: TObject);
begin
  try
    frmModuleNote:=TfrmModuleNote.Create(Application);
    with frmModuleNote do
    begin
      flag:='资金审批(其他)';
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmModuleNote.Free;
  end;
end;

procedure TfrmPKInPutQT.v1Column8PropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
begin
  try
    frmZDYHelp:=TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag:='PKName';
      flagname:='品名';
      if ShowModal=1 then
      begin
        with Self.Order_Sub do
        begin
          Edit;
          FieldByName('PKName').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString);
        end;
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmPKInPutQT.v1Column6PropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
begin
  try
    frmGYSSelList:=TfrmGYSSelList.Create(Application);
    with frmGYSSelList do
    begin
      if ShowModal=1 then
      begin
        with Self.Order_Sub do
        begin
          Edit;
          FieldByName('FactoryNo').Value:=Trim(frmGYSSelList.Order_Main.fieldbyname('ZKID').AsString);
          FieldByName('FactoryName').Value:=Trim(frmGYSSelList.Order_Main.fieldbyname('KHName').AsString);
          //Post;
        end;
      end;
    end;
  finally
    frmGYSSelList.Free;
  end;
end;

procedure TfrmPKInPutQT.v1Column2PropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
begin
  try
    frmZDYHelp:=TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag:='JBPerson';
      flagname:='经办人';
      if ShowModal=1 then
      begin
        with Self.Order_Sub do
        begin
          Edit;
          FieldByName('JBPerson').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString);
        end;
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

end.
