unit U_Bpckchklist;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ToolWin, StdCtrls, ExtCtrls, cxStyles, cxCustomData,
  cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData,
  cxButtonEdit, cxDropDownEdit, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxControls,
  cxGridCustomView, cxGrid, DBClient, ADODB, cxGridCustomPopupMenu,
  cxGridPopupMenu, RM_Common, RM_Class, RM_e_Xls, RM_GridReport, RM_System,
  RM_Dataset, cxPC;

type
  TfrmBpckchklist = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBFind: TToolButton;
    TBAdd: TToolButton;
    TBEdit: TToolButton;
    TBDel: TToolButton;
    TBExport: TToolButton;
    TBPrint: TToolButton;
    TBClose: TToolButton;
    Panel1: TPanel;
    Label1: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1P_CodeName: TcxGridDBColumn;
    v1P_SPEC: TcxGridDBColumn;
    v1P_MF: TcxGridDBColumn;
    v1P_KZ: TcxGridDBColumn;
    v1RollNum: TcxGridDBColumn;
    v1Qty: TcxGridDBColumn;
    v1QtyUnit: TcxGridDBColumn;
    v1Note: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    v1CRType: TcxGridDBColumn;
    v1CRTime: TcxGridDBColumn;
    v1Filler: TcxGridDBColumn;
    v1FillTime: TcxGridDBColumn;
    Label3: TLabel;
    Label4: TLabel;
    P_CodeName: TEdit;
    P_Code: TEdit;
    CRType: TComboBox;
    Label5: TLabel;
    ADOQueryCmd: TADOQuery;
    ADOQueryTmp: TADOQuery;
    DataSource1: TDataSource;
    CDS_Main: TClientDataSet;
    cxGridPopupMenu1: TcxGridPopupMenu;
    v1CPTYPE: TcxGridDBColumn;
    ckName: TComboBox;
    Label6: TLabel;
    v1P_Color: TcxGridDBColumn;
    ADOPrint: TADOQuery;
    RMDB_MD: TRMDBDataSet;
    RMGridReport1: TRMGridReport;
    RMXLSExport1: TRMXLSExport;
    v1P_Code: TcxGridDBColumn;
    v1inoutNO: TcxGridDBColumn;
    TBsmADD: TToolButton;
    ywy: TEdit;
    Label7: TLabel;
    v1custName: TcxGridDBColumn;
    TbPrint1: TToolButton;
    v1Column1: TcxGridDBColumn;
    kuwei: TEdit;
    Label8: TLabel;
    v1Column3: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1defnote5: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    cxTabControl1: TcxTabControl;
    v1Column6: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    P_Color: TEdit;
    Label9: TLabel;
    Tchk: TToolButton;
    Tnochk: TToolButton;
    custName: TEdit;
    Label2: TLabel;
    v1Column8: TcxGridDBColumn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure TBAddClick(Sender: TObject);
    procedure P_CodeNameChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure TBEditClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure TBPrintClick(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TBsmADDClick(Sender: TObject);
    procedure TbPrint1Click(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure TchkClick(Sender: TObject);
    procedure TnochkClick(Sender: TObject);
  private
    procedure InitGrid();
    procedure SetComboBox();
    procedure SetStatus();
    { Private declarations }
  public
    fCKName:string;
    canshu1:string;
    { Public declarations }
  end;

var
  frmBpckchklist: TfrmBpckchklist;

implementation
uses
  U_DataLink,U_Fun10,U_ZDYHelp, U_BpCk, U_BpSmCk;
{$R *.dfm}
procedure TfrmBpckchklist.SetStatus();
begin
  TBedit.Visible:=false;
  Tbdel.Visible:=false;
  TBAdd.Visible:=true;
  Tchk.Visible:=false;
  Tnochk.Visible:=false;
  case cxTabControl1.TabIndex of
   0:begin
       TBedit.Visible:=true;
       Tbdel.Visible:=true;
       Tchk.Visible:=true;
     end;
   1:begin
       Tnochk.Visible:=true;
     end;
   end;
end;
procedure TfrmBpckchklist.SetComboBox();
begin
  ckName.Items.Clear;
  with adoQueryTmp do
  begin
    close;
    sql.Clear;
    sql.Add('select * from KH_ZDY where Type=''YPCK'' ');
    if trim(fCKName)<>'' then
    sql.Add('and zdyName='+quotedstr(trim(fCKName)));
    open;
    while not eof do
    begin
      ckName.Items.Add(trim(fieldbyname('zdyName').AsString));
      next;
    end;
  end;
  if ckName.Items.Count>0 then ckName.ItemIndex:=0;

  CRType.Items.Clear;
  CRType.Items.Add('');
  with adoQueryTmp do
  begin
    close;
    sql.Clear;
    sql.Add('select * from KH_ZDY where Type=''YPCKTYPE''');
    if trim(fCKName)<>'' then
    sql.Add('and note='+quotedstr(trim(fCKName)));
    open;
    while not eof do
    begin
      CRType.Items.Add(trim(fieldbyname('zdyName').AsString));
      next;
    end;
  end;
  if CRType.Items.Count>0 then CRType.ItemIndex:=0;
end;
procedure TfrmBpckchklist.InitGrid();
begin
  try
    with adoqueryTmp do
    begin
      close;
      sql.Clear;
      sql.Add('select A.*,B.CYMF,B.CYKZ,B.defnote5 from YP_InOut A');
      sql.Add('left join CP_YDang B on B.CYNO=A.P_Code');
      sql.Add('where CRTime>='''+formatdateTime('yyyy-MM-dd',begdate.Date)+''' ');
      sql.Add('and CRTime<'''+formatdateTime('yyyy-MM-dd',enddate.Date+1)+''' ');
      sql.Add('and CRFlag=''出库'' ');
      sql.Add('and valid=''Y'' ');
      if trim(FckName)<>'' then
      sql.Add('and ckName='+quotedstr(trim(FckName)) );
      if trim(canshu1)='业务员' then
      sql.Add('and A.Filler='+quotedstr(trim(DName)) );
      if cxTabControl1.TabIndex<2 then
      sql.Add('and A.status='''+inttostr(cxTabControl1.TabIndex)+''' ');
      open;
    end;
    SCreateCDS20(adoqueryTmp,CDS_Main);
    SInitCDSData20(adoqueryTmp,CDS_Main);
  finally
  end;
end;

procedure TfrmBpckchklist.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  writeCxGrid(self.Caption,Tv1,'成品仓库');
  Action:=cafree;
end;

procedure TfrmBpckchklist.FormDestroy(Sender: TObject);
begin
  frmBpckchklist:=nil;
end;

procedure TfrmBpckchklist.TBAddClick(Sender: TObject);
begin
  frmbpck:=Tfrmbpck.create(self);
  with frmbpck do
  begin
    fkeyNo:='';
    fType:=0;
    fckName:=self.fckName;
    IF trim(self.canshu1)='业务员'then
    begin
      ywy.text:=trim(Dname);
      ywy.Enabled:=false;
    end;
    if showmodal=1 then
    begin
      TBRafresh.Click;
      self.CDS_Main.Locate('crNo',trim(fkeyNo),[]) ;
    end;
    free;
  end;
end;

procedure TfrmBpckchklist.P_CodeNameChange(Sender: TObject);
begin
  if ADOQueryTmp.Active=False then Exit;
  SDofilter(ADOQueryTmp,SGetFilters(Panel1,1,2));
  SCreateCDS20(ADOQueryTmp,CDS_Main);
  SInitCDSData20(ADOQueryTmp,CDS_Main);
end;

procedure TfrmBpckchklist.FormShow(Sender: TObject);
begin
  readCxGrid(self.Caption,Tv1,'成品仓库');
  SetComboBox();
  SetStatus();
  InitGrid();
end;

procedure TfrmBpckchklist.FormCreate(Sender: TObject);
begin
  BegDate.Date:=DServerDate-7;
  EndDate.Date:=DServerDate;
  cxGrid1.Align:=alclient;

end;

procedure TfrmBpckchklist.TBCloseClick(Sender: TObject);
begin
    close;
end;

procedure TfrmBpckchklist.TBEditClick(Sender: TObject);
begin
  if cds_main.IsEmpty then exit;

 { with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from BP_InOut A');
    SQL.Add('where A.kcid='''+Trim(CDS_Main.fieldbyname('kcid').AsString)+''' ');
    sQL.Add('and A.CRFlag=''出库''');
    Open;
  end;
  if not ADOQueryCmd.IsEmpty then
  begin
    Application.MessageBox('已产生出库数据，不能修改！','提示',0);
    Exit;
  end;  }

  frmbpck:=Tfrmbpck.create(self);
  with frmbpck do
  begin
    fkeyNo:=self.cds_main.fieldbyname('CRNO').AsString;
    fType:=1;
    fckName:=self.fckName;
    if showmodal=1 then
    begin
      TBRafresh.Click;
      self.CDS_Main.Locate('crNo',trim(fkeyNo),[]) ;
    end;
    free;
  end;
end;

procedure TfrmBpckchklist.TBDelClick(Sender: TObject);
var
  YFID,CRID:string;
begin
  if CDS_Main.IsEmpty then Exit;


  if Application.MessageBox('确定要删除数据吗？','提示',32+4)<>IDYES then Exit;



  try


    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;

      sql.Add('update  YP_InOut SET valid=''N'' ');
      sql.Add(',editer='+quotedstr(trim(DName)));
      sql.Add(',edittime=getdate()');
      SQL.Add('where  CRNO='''+Trim(CDS_Main.fieldbyname('CRNO').AsString)+''' ');

      sql.Add('delete from YF_money_CR  ');
      SQL.Add('where mainID='''+Trim(CDS_Main.fieldbyname('CRNO').AsString)+''' ');
      SQL.Add('and subID='''+Trim(CDS_Main.fieldbyname('CRID').AsString)+''' ');

      execsql;
    end;
      TBRafresh.Click;
  except
    Application.MessageBox('数据删除失败！','提示信息',0);
  end;
end;

procedure TfrmBpckchklist.TBRafreshClick(Sender: TObject);
begin
  initGrid();
end;

procedure TfrmBpckchklist.TBPrintClick(Sender: TObject);
var
  filepath:string;
begin
  if CDS_Main.IsEmpty then exit;

  with AdoPrint do
  begin
    close;
    sql.Clear;
    sql.Add('exec P_Print_cpCkMd ');
    sql.Add('@inoutNo='+quotedstr(trim(CDS_Main.fieldbyname('inoutNO').AsString)));
    sql.Add(',@flag='+quotedstr(trim('')));
    open;
  end;

  try
    filepath:=ExtractFilePath(Application.ExeName) + 'report\出库码单.rmf';
    if not FileExists(Pchar(filepath))  then
    begin
      application.MessageBox(pchar('文件['+filepath+']不存在！'),'提示信息',MB_IConError);
      exit;
    end;
    RMVariables['dtxz'] :=FormatDateTime('yyyy-mm-dd',date());
    RMVariables['zdr'] :=trim(DName);
    RMVariables['Filler'] :=trim(CDS_Main.fieldbyname('Filler').AsString);
    RMGridReport1.LoadFromFile(filepath);
    RMGridReport1.ShowReport;
  finally

  end;

end;

procedure TfrmBpckchklist.TBExportClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  TcxGridToExcel(self.Caption,cxgrid1);
end;

procedure TfrmBpckchklist.TBsmADDClick(Sender: TObject);
begin
  frmbpsmck:=Tfrmbpsmck.create(self);
  with frmbpsmck do
  begin
    fkeyNo:='';
    fType:=0;
    fckName:=self.fckName;
    if showmodal=1 then
    begin
      TBRafresh.Click;
   //   self.CDS_Main.Locate('crNo',trim(fkeyNo),[]) ;
    end;
    TBRafresh.Click;
    free;
  end;
end;

procedure TfrmBpckchklist.TbPrint1Click(Sender: TObject);
var
  filepath:string;
begin
  if CDS_Main.IsEmpty then exit;

  with AdoPrint do
  begin
    close;
    sql.Clear;
    sql.Add('select inoutNo,custName,TocustName,P_Code,P_CodeName,P_Spec,sum(RollNum) as RollNum,sum(Qty) as Qty from CP_INout A ');
    sql.Add('where A.inoutNo='+quotedstr(trim(CDS_Main.fieldbyname('inoutNO').AsString)));
    sql.Add('group by inoutNo,custName,TocustName,P_Code,P_CodeName,P_Spec ');
    sql.Add('order by inoutNo,custName,TocustName,P_Code ');
    open;
  end;

  try
    filepath:=ExtractFilePath(Application.ExeName) + 'report\发货单.rmf';
    if not FileExists(Pchar(filepath))  then
    begin
      application.MessageBox(pchar('文件['+filepath+']不存在！'),'提示信息',MB_IConError);
      exit;
    end;
    RMVariables['dtxz'] :=FormatDateTime('yyyy-mm-dd',date());
    RMVariables['zdr'] :=trim(DName);
    RMVariables['Filler'] :=trim(CDS_Main.fieldbyname('Filler').AsString);
    RMGridReport1.LoadFromFile(filepath);
    RMGridReport1.ShowReport;
  finally

  end;

end;

procedure TfrmBpckchklist.cxTabControl1Change(Sender: TObject);
begin
  SetStatus();
  initGrid();
end;

procedure TfrmBpckchklist.TchkClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then exit;
  try
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('update  YP_InOut SET status=''1'' ');
      sql.Add('where CRNO='+quotedstr(trim(CDS_Main.fieldbyname('CRNO').AsString)));
      execsql;
    end;
    application.MessageBox('审核成功！','提示信息');
    TBRafresh.Click;
  except
   application.MessageBox('审核失败！','提示信息',0);
  end;
end;

procedure TfrmBpckchklist.TnochkClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then exit;
  try
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('update  YP_InOut SET status=''0'' ');
      sql.Add('where CRNO='+quotedstr(trim(CDS_Main.fieldbyname('CRNO').AsString)));
      execsql;
    end;
    application.MessageBox('撤销审核成功！','提示信息');
    TBRafresh.Click;
  except
   application.MessageBox('撤销审核失败！','提示信息',0);
  end;
end;

end.
