unit U_WJGMDList;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView,
  cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses,
  cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls,
  ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient,
  cxDropDownEdit, cxCheckBox, RM_Common, RM_Class, RM_e_Xls, RM_Dataset,
  RM_System, RM_GridReport, Menus, cxCalendar, cxButtonEdit, cxTextEdit, cxPC,
  cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu,
  dxSkinsCore, dxSkinsDefaultPainters, dxSkinscxPCPainter;

type
  TfrmWJGMDList = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBFind: TToolButton;
    TBExport: TToolButton;
    TBClose: TToolButton;
    Panel1: TPanel;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DataSource1: TDataSource;
    cxGridPopupMenu1: TcxGridPopupMenu;
    Label1: TLabel;
    Label2: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    CDS_Main: TClientDataSet;
    RM1: TRMGridReport;
    RMDBMain: TRMDBDataSet;
    RMXLSExport1: TRMXLSExport;
    RMDBHZ: TRMDBDataSet;
    CDS_HZ: TClientDataSet;
    CDS_PRT: TClientDataSet;
    TBDel: TToolButton;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    TBAdd: TToolButton;
    TBEdit: TToolButton;
    Label3: TLabel;
    Label4: TLabel;
    spcode: TEdit;
    Label7: TLabel;
    QCOrderNo: TEdit;
    cxGrid2: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Column6: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v1Column13: TcxGridDBColumn;
    v1Column15: TcxGridDBColumn;
    v1Column14: TcxGridDBColumn;
    v2Column1: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1Column1: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column11: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    v2Column6: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1Column16: TcxGridDBColumn;
    v1Column12: TcxGridDBColumn;
    cxGrid2Level1: TcxGridLevel;
    v1Column22: TcxGridDBColumn;
    ToolButton1: TToolButton;
    v1Column5: TcxGridDBColumn;
    v1Column18: TcxGridDBColumn;
    v1Column19: TcxGridDBColumn;
    v1Column20: TcxGridDBColumn;
    v1Column23: TcxGridDBColumn;
    v1Column24: TcxGridDBColumn;
    FactoryName: TComboBox;
    v1Column17: TcxGridDBColumn;
    cxTabControl1: TcxTabControl;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    Tv1Column1: TcxGridDBColumn;
    Tv1Column2: TcxGridDBColumn;
    Label5: TLabel;
    SPColor: TEdit;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure ConNoMChange(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TBFindClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure TBAddClick(Sender: TObject);
    procedure TBEditClick(Sender: TObject);
    procedure SPIDKeyPress(Sender: TObject; var Key: Char);
    procedure SPIDChange(Sender: TObject);
    procedure SPSpecChange(Sender: TObject);
    procedure FactoryNameChange(Sender: TObject);
    procedure spcodeChange(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure v1Column19PropertiesEditValueChanged(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
  private
    procedure InitGrid();
    { Private declarations }
  public
    canshu1, canshu2: string;
    { Public declarations }
  end;

var
  frmWJGMDList: TfrmWJGMDList;

implementation

uses
  U_DataLink, U_RTFun, U_WJGCKInPut, U_FjList_RZ;

{$R *.dfm}

procedure TfrmWJGMDList.FormDestroy(Sender: TObject);
begin
  frmWJGMDList := nil;
end;

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

procedure TfrmWJGMDList.FormCreate(Sender: TObject);
begin
  //cxGrid1.Align:=alClient;
  canshu1 := Trim(DParameters1);
  canshu2 := Trim(DParameters2);
  EndDate.DateTime := SGetServerDate10(ADOQueryTemp);
  BegDate.DateTime := EndDate.DateTime;
end;

procedure TfrmWJGMDList.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      sql.Clear;
      sql.Add(' select A.* ');
      sql.Add(',ISSC=cast((case when isnull((select count(WBID) from TP_File X where X.WBID=A.spid and X.TFType=''外加工入库''),0)>0 then 1 else 0 end) as bit)');
      SQL.Add(',MONEY1=(isnull(PRICE,0)*QTY+isnull(XIAOGANGFEI,0)+isnull(SHANGJIFEI,0))');
      sql.Add(' from CK_SXPB_CR A');
      sql.add(' where A.CRTime>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.DateTime)) + '''');
      sql.Add(' and A.CRTime<=''' + Trim(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1)) + '''');
      sql.Add(' and isnull(CKName,'''')=''外加工''');
      SQL.Add(' and CRFlag=''入库''  ');
      if cxTabControl1.TabIndex = 0 then
      begin
        SQL.Add('AND ChkStatus is NULL ');

      end
      else if cxTabControl1.TabIndex = 1 then
      begin
        SQL.Add('AND ChkStatus =''1'' ');
      end;
      if CANSHU1 <> '录入' then
      begin
        SQL.Add('AND (FILLER =' + QuotedStr(Trim(dname)));
        sql.Add('or (select lidan from JYOrder_Main c where c.orderno=a.qcorderno)=' + QuotedStr(Trim(dname)));
        sql.Add('or (select ywy from JYOrder_Main c where c.orderno=a.qcorderno)=' + QuotedStr(Trim(dname)));
        sql.Add(')');
      end;
      Open;
    end;
    SCreateCDS20(ADOQueryMain, CDS_Main);
    SInitCDSData20(ADOQueryMain, CDS_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmWJGMDList.TBRafreshClick(Sender: TObject);
begin
  BegDate.SetFocus;
  InitGrid();
end;

procedure TfrmWJGMDList.ConNoMChange(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
  end;
end;

procedure TfrmWJGMDList.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid(Self.Caption, Tv1, '外加工仓库1111');
  Close;
end;

procedure TfrmWJGMDList.FormShow(Sender: TObject);
var
  FSJ: string;
begin
  if Trim(CANSHU1) = '低权限' then
  begin
    v1Column19.Visible := False;
    v1Column19.Hidden := True;
    v1Column20.Visible := False;
    v1Column20.Hidden := True;
    v1Column23.Visible := False;
    v1Column23.Hidden := True;
    v1Column24.Visible := False;
    v1Column24.Hidden := True;

  end;
  if Trim(canshu2) = '查看' then
  begin
    TBAdd.Visible := False;
    TBDel.Visible := False;
    TBEdit.Visible := False;
  end
  else
  begin
    TBAdd.Visible := True;
    TBDel.Visible := True;
    TBEdit.Visible := True;
  end;
  if canshu1 = '录入' then
  begin
    ToolButton2.Visible := true;
  end;
  ReadCxGrid(Self.Caption, Tv1, '外加工仓库1111');

  FSJ := 'select distinct(FactoryName) Name from CK_SXPB_CR  order by FactoryName ';
  SInitComBoxBySql(ADOQueryCmd, FactoryName, False, FSJ);
//  FILLER.Text := Trim(DName);
  //InitGrid();
end;

procedure TfrmWJGMDList.TBExportClick(Sender: TObject);
begin
  if ADOQueryMain.IsEmpty then
    exit;
  TcxGridToExcel('外加工入库列表', cxGrid2);
end;

procedure TfrmWJGMDList.TBFindClick(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
    SCreateCDS20(ADOQueryMain, CDS_Main);
    SInitCDSData20(ADOQueryMain, CDS_Main);
  end;
end;

procedure TfrmWJGMDList.N1Click(Sender: TObject);
begin
  SelOKNo(CDS_Main, True);
end;

procedure TfrmWJGMDList.N2Click(Sender: TObject);
begin
  SelOKNo(CDS_Main, False);
end;

procedure TfrmWJGMDList.TBDelClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then
    Exit;
  if Trim(CDS_Main.fieldbyname('SPID').AsString) <> '' then
  begin
    if Trim(CDS_Main.fieldbyname('CRType').AsString) = '平移入库' then
    begin
      Application.MessageBox('平移入库的数据为自动生成，不能删除!', '提示', 0);
      Exit;
    end;
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from CK_SXPB_CR where FZSPID=''' + Trim(CDS_Main.fieldbyname('SPID').AsString) + '''');
      sql.Add(' and CRQtyFlag=-1');
      Open;
    end;
    if ADOQueryTemp.IsEmpty = False then
    begin
      Application.MessageBox('已有出库记录，不能删除!', '提示', 0);
      Exit;
    end;
    if Application.MessageBox('确定要删除数据吗？', '提示', 32 + 4) <> IDYES then
      Exit;
    try
      ADOQueryCmd.Connection.BeginTrans;

      with ADOQueryCmd do
      begin
        Close;
        sql.Clear;
        sql.Add(' delete CK_SXPB_CR where SPID=''' + Trim(CDS_Main.fieldbyname('SPID').AsString) + '''');

        sql.Add(' delete YF_Money_CR where YFID= (SELECT YFSID FROM YF_Money_CR_Sub WHERE YFPZNO=''' + Trim(CDS_Main.fieldbyname('SPID').AsString) + ''')');

        sql.Add(' delete YF_Money_CR_Sub where YFPZNO=''' + Trim(CDS_Main.fieldbyname('SPID').AsString) + '''');
//        ShowMessage(SQL.Text);
        ExecSQL;
      end;

      ADOQueryCmd.Connection.CommitTrans;
      CDS_Main.Delete;
    except
      ADOQueryCmd.Connection.RollbackTrans;
      Application.MessageBox('删除异常!', '提示', 0);
    end;

  end
  else
  begin
    CDS_Main.Delete;
  end;
end;

procedure TfrmWJGMDList.TBAddClick(Sender: TObject);
begin
  try
    frmWJGCKInPut := TfrmWJGCKInPut.Create(Application);
    with frmWJGCKInPut do
    begin
      FBCId := '';
      if ShowModal = 1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmWJGCKInPut.Free;
  end;
end;

procedure TfrmWJGMDList.TBEditClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then
    Exit;
  if Trim(CDS_Main.fieldbyname('CRType').AsString) = '平移入库' then
  begin
    Application.MessageBox('平移入库的数据为自动生成，不能修改!', '提示', 0);
    Exit;
  end;
  try
    frmWJGCKInPut := TfrmWJGCKInPut.Create(Application);
    with frmWJGCKInPut do
    begin
      FBCId := Trim(CDS_Main.fieldbyname('SPID').AsString);
      TBDel.Visible := False;
      TBAdd.Visible := False;
      if ShowModal = 1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmWJGCKInPut.Free;
  end;
end;

procedure TfrmWJGMDList.SPIDKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    {if Length(Trim(SPID.Text))<4 then Exit;
    try
      ADOQueryMain.DisableControls;
      with ADOQueryMain do
      begin
        Filtered:=False;
        Close;
        sql.Clear;
        sql.Add(' select A.* ');
        sql.Add(',ConNo=(select ConNo from Contract_Main CM where CM.MainId=A.CGMainId)');
        //sql.Add(' ,ConNo=(select ConNo from Contract_Main CM where CM.MainId=A.CGMainId )');
        sql.Add(' from CK_SXPB_CR A');
        sql.add(' where SPID like :SXID');
        Parameters.ParamByName('SXID').Value:='%'+Trim(SXID.Text)+'%';
        Open;
        //ShowMessage(SQL.Text);
      end;
      SCreateCDS20(ADOQueryMain,CDS_Main);
      SInitCDSData20(ADOQueryMain,CDS_Main);
    finally
      ADOQueryMain.EnableControls;
    end; }
  end;
end;

procedure TfrmWJGMDList.SPIDChange(Sender: TObject);
begin

  TBFind.Click;
end;

procedure TfrmWJGMDList.SPSpecChange(Sender: TObject);
begin
  TBFind.Click;
end;

procedure TfrmWJGMDList.FactoryNameChange(Sender: TObject);
begin
  TBFind.Click;
end;

procedure TfrmWJGMDList.spcodeChange(Sender: TObject);
begin
  TBFind.Click;
end;

procedure TfrmWJGMDList.ToolButton1Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then
    Exit;
  try
    frmFjList_RZ := TfrmFjList_RZ.Create(Application);
    with frmFjList_RZ do
    begin
      fkeyNO := Trim(Self.CDS_Main.fieldbyname('SPID').AsString);
      fType := '外加工入库';
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmFjList_RZ.Free;
  end;
end;

procedure TfrmWJGMDList.v1Column19PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin

  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
  with CDS_Main do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update CK_SXPB_CR set  ' + FFieldName + '=' + (Trim(mvalue)));
    sql.Add('where spid=' + quotedstr(Trim(CDS_Main.fieldbyname('spid').AsString)));

    sql.Add('update CK_SXPB_CR set   ');
    sql.Add('MONEY=ISNULL(SHANGJIFEI,0)+ISNULL(XIAOGANGFEI,0)+ISNULL(PRICE,0)*QTY');
    sql.Add('where spid=' + quotedstr(Trim(CDS_Main.fieldbyname('spid').AsString)));
    ExecSQL;
  end;

  if CDS_Main.FieldByName('ISJs').AsString = '是' then
  begin
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select  A.YFID from YF_Money_CR_Sub A INNER  JOIN YF_Money_CR B ON A.YFID=B.YFID where yfpzno=' + QuotedStr(Trim(CDS_Main.fieldbyname('SPID').AsString)));
      sql.Add('and B.status=1');
      Open;
    end;
    if ADOQueryTemp.IsEmpty = FALSE then
    begin
      Application.MessageBox('财务数据已审核，请先撤销!', '提示', 0);

      Exit;
    end;
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('EXEC P_Do_CWSC ''应付'',' + quotedstr(trim(CDS_Main.fieldbyname('SPID').AsString)));

      ExecSQL;

    end;
  end;
  tv1.Controller.EditingController.ShowEdit();
end;

procedure TfrmWJGMDList.ToolButton2Click(Sender: TObject);
begin
  if CDS_Main.Locate('ssel', true, []) = false then
  begin
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;

  try
    ADOQueryCmd.Connection.BeginTrans;
    with CDS_Main do
    begin
      DisableControls;
      First;
      while CDS_Main.Locate('SSel', True, []) do
      begin
        with ADOQueryCmd do
        begin
          close;
          sql.Clear;
          sql.Add('update  CK_SXPB_CR SET ChkStatus=''1'',chker=''' + trim(DName) + ''',Chktime=getdate() ');
          sql.Add('where SPID=' + quotedstr(trim(CDS_Main.fieldbyname('SPID').AsString)));
          execsql;
        end;
        if CDS_Main.FieldByName('ISJs').AsString = '是' then
        begin
          with ADOQueryTemp do
          begin
            Close;
            sql.Clear;
            sql.Add('select  A.YFID from YF_Money_CR_Sub A INNER  JOIN YF_Money_CR B ON A.YFID=B.YFID where yfpzno=' + QuotedStr(Trim(CDS_Main.fieldbyname('SPID').AsString)));
            sql.Add('and B.status=1');
            Open;
          end;
          if ADOQueryTemp.IsEmpty = FALSE then
          begin
            Application.MessageBox('财务数据已审核，请先撤销!', '提示', 0);
            ADOQueryCmd.Connection.RollbackTrans;
            Exit;
          end;
          with ADOQueryTemp do
          begin
            Close;
            sql.Clear;
            sql.Add('EXEC P_Do_CWSC ''应付'',' + quotedstr(trim(CDS_Main.fieldbyname('SPID').AsString)));

            ExecSQL;

          end;
        end;
        CDS_Main.Delete;
      end;

      EnableControls;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    application.MessageBox('操作成功！', '提示信息', 0);
    InitGrid();
  except
    ADOQueryCmd.Connection.RollbackTrans;
    application.MessageBox('操作失败！', '提示信息', 0);
  end;

end;

procedure TfrmWJGMDList.ToolButton3Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then
    exit;
  try
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('update  CK_SXPB_CR SET ChkStatus=NULL,chker=null,Chktime=null ');
      sql.Add('where SPID=' + quotedstr(trim(CDS_Main.fieldbyname('SPID').AsString)));

      execsql;
    end;
    application.MessageBox('撤销审核成功！', '提示信息');
    TBRafresh.Click;
  except
    application.MessageBox('撤销审核失败！', '提示信息', 0);
  end;
end;

procedure TfrmWJGMDList.cxTabControl1Change(Sender: TObject);
begin

  ToolButton2.Visible := False;
  ToolButton3.Visible := False;
  TBEdit.Visible := false;
  TBDel.Visible := false;
  if cxTabControl1.TabIndex = 0 then
  begin
    v1Column19.Options.Editing := True;
    v1Column20.Options.Editing := True;
    v1Column23.Options.Editing := True;
    if canshu1 = '录入' then
    begin
      ToolButton2.Visible := true;
    end;
    TBEdit.Visible := true;
    TBDel.Visible := true;
  end
  else
  begin
    v1Column19.Options.Editing := False;
    v1Column20.Options.Editing := False;
    v1Column23.Options.Editing := False;
    if canshu1 = '录入' then
    begin
      ToolButton3.Visible := true;
    end;

  end;
  TBRafresh.Click();
end;

end.

