unit U_ProductionAnPai;

interface

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

type
  TfrmProductionAnPai = class(TForm)
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1OrderNo: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1PRTMF: TcxGridDBColumn;
    v1PRTKZ: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    v1Column1: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    Panel1: TPanel;
    Label1: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    orderno: TEdit;
    v1Column8: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v1Column11: TcxGridDBColumn;
    v1Column12: TcxGridDBColumn;
    CDS_Main: TClientDataSet;
    DataSource1: TDataSource;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    v1Column13: TcxGridDBColumn;
    v1Column14: TcxGridDBColumn;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    v1Column15: TcxGridDBColumn;
    cxTabControl1: TcxTabControl;
    v1Column16: TcxGridDBColumn;
    Label2: TLabel;
    Label3: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    Button4: TButton;
    Button5: TButton;
    v1Column17: TcxGridDBColumn;
    Panel2: TPanel;
    SmalMF1: TEdit;
    SmalMF2: TEdit;
    SmalMF3: TEdit;
    SmalMF4: TEdit;
    SmalMF5: TEdit;
    SmalMF6: TEdit;
    Label4: TLabel;
    SmalMF7: TEdit;
    SmalMF8: TEdit;
    SmalMF9: TEdit;
    SmalMF10: TEdit;
    SmalMF11: TEdit;
    SmalMF12: TEdit;
    v1Column18: TcxGridDBColumn;
    v1Column19: TcxGridDBColumn;
    v1Column20: TcxGridDBColumn;
    v1Column21: TcxGridDBColumn;
    v1Column22: TcxGridDBColumn;
    v1Column23: TcxGridDBColumn;
    Button6: TButton;
    v1Column24: TcxGridDBColumn;
    v1Column25: TcxGridDBColumn;
    cxGridPopupMenu1: TcxGridPopupMenu;
    Button7: TButton;
    v1Column26: TcxGridDBColumn;
    cxStyleRepository1: TcxStyleRepository;
    cxStyle1: TcxStyle;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ordernoChange(Sender: TObject);
    procedure v1Column4PropertiesEditValueChanged(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Tv1DblClick(Sender: TObject);
    procedure v1Column19PropertiesEditValueChanged(Sender: TObject);
    procedure v1Column23PropertiesEditValueChanged(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Tv1CellClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure v1Column24PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1Column24PropertiesEditValueChanged(Sender: TObject);
    procedure v1Column25PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1Column25PropertiesEditValueChanged(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
    procedure InitGrid();
    procedure VisbleControl(Panel55:TWinControl;XS:Boolean;SXCount:Integer);
  public
    { Public declarations }
  end;

var
  frmProductionAnPai: TfrmProductionAnPai;

implementation
uses
  U_DataLink,U_Fun,U_OrderAttachment,U_ZDYHelpSel,U_JiangLiaoSet;

{$R *.dfm}

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

procedure TfrmProductionAnPai.FormDestroy(Sender: TObject);
begin
  frmProductionAnPai:=nil;
end;

procedure TfrmProductionAnPai.FormCreate(Sender: TObject);
begin
  cxGrid1.Align:=alClient;
  if Trim(DParameters1)='审核' then
  begin
    Button5.Visible:=True;
    Button4.Visible:=True;
  end else
  begin
    Button5.Visible:=False;
    Button4.Visible:=False;
  end;
end;
procedure TfrmProductionAnPai.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      sql.Clear;
      sql.Add(' exec P_ProductAnPai :begdate,:enddate,:pstate,:Wsql');
      if cxTabControl1.TabIndex=0 then
      begin
        Parameters.ParamByName('begdate').Value:='';
        Parameters.ParamByName('enddate').Value:='';
        Parameters.ParamByName('pstate').Value:=1;
      end else
      if cxTabControl1.TabIndex=1 then
      begin
        Parameters.ParamByName('begdate').Value:='';
        Parameters.ParamByName('enddate').Value:='';
        Parameters.ParamByName('pstate').Value:=2;
      end else
      if cxTabControl1.TabIndex=2 then
      begin
        Parameters.ParamByName('begdate').Value:=FormatDateTime('yyyy-MM-dd',BegDate.Date) ;
        Parameters.ParamByName('enddate').Value:=FormatDateTime('yyyy-MM-dd',EndDate.Date+1);
        Parameters.ParamByName('pstate').Value:=3;
      end;
      Parameters.ParamByName('Wsql').Value:='';
      Open;
    end;
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmProductionAnPai.Button1Click(Sender: TObject);
begin
  orderno.SetFocus;
  InitGrid();
end;

procedure TfrmProductionAnPai.FormShow(Sender: TObject);
begin
  ReadCxGrid('生产安排10',Tv1,'无纺布生产订单');
  EndDate.Date:=SGetServerDate(ADOQueryTemp);
  BegDate.Date:=EndDate.Date-30;
  if cxTabControl1.TabIndex=1 then
  begin
    Tv1.OptionsSelection.CellSelect:=False;
  end else
    Tv1.OptionsSelection.CellSelect:=True;
  if Trim(DParameters1)='审核' then
  begin
    Tv1.OptionsSelection.CellSelect:=False;
  end;
  InitGrid();
end;

procedure TfrmProductionAnPai.ordernoChange(Sender: TObject);
begin
  SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
  SCreateCDS20(ADOQueryMain,CDS_Main);
  SInitCDSData20(ADOQueryMain,CDS_Main);
end;

procedure TfrmProductionAnPai.v1Column4PropertiesEditValueChanged(
  Sender: TObject);
var
  mvalue:String;
begin
  mvalue:=TcxTextEdit(Sender).EditingText;
  with CDS_Main do
  begin
    Edit;
    FieldByName('SCOrder').Value:=Trim(mvalue);
    FieldByName('AnPaiDate').Value:=Now;
    Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('UPdate WFBOrder_Sub Set SCOrder='''+Trim(mvalue)+'''');
    SQL.Add(',AnPaiDate=getdate()');
    SQL.Add(' where SubId='''+Trim(CDS_Main.fieldbyname('SubID').AsString)+'''');
    ExecSQL;
  end;
end;

procedure TfrmProductionAnPai.Button2Click(Sender: TObject);
begin
  orderno.SetFocus;
  WriteCxGrid('生产安排10',Tv1,'无纺布生产订单');
  Close;
end;

procedure TfrmProductionAnPai.Button3Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  TcxGridToExcel('生产安排',cxGrid1);
end;

procedure TfrmProductionAnPai.cxTabControl1Change(Sender: TObject);
begin
  InitGrid();
  if cxTabControl1.TabIndex=0 then
  begin
    Tv1.OptionsSelection.CellSelect:=True;
  end else
    Tv1.OptionsSelection.CellSelect:=False;
  if Trim(DParameters1)='审核' then
  begin
    Tv1.OptionsSelection.CellSelect:=False;
  end;
  VisbleControl(Panel2,False,Panel2.ControlCount);
end;

procedure TfrmProductionAnPai.Button4Click(Sender: TObject);
begin
  if cxTabControl1.TabIndex<>0 then Exit;
  if Trim(DName)=Trim(CDS_Main.fieldbyname('AnPaiPerson').AsString) 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('UPdate WFBOrder_Sub Set AnPaiChker='''+Trim(DName)+'''');
      sql.Add(',AnPaiChkStatus=''审核通过''');
      sql.add(',AnPaiChkDate=getdate()');
      SQL.Add(' where SubId='''+Trim(CDS_Main.fieldbyname('SubId').AsString)+'''');
      ExecSQL;
    end;

    ADOQueryCmd.Connection.CommitTrans;
    CDS_Main.Delete;
    Application.MessageBox('操作成功！','提示',0);
    Exit;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('操作异常！','提示',0);
  end;
end;

procedure TfrmProductionAnPai.Button5Click(Sender: TObject);
begin
  if cxTabControl1.TabIndex<>1 then Exit;
  if Trim(DName)=Trim(CDS_Main.fieldbyname('AnPaiPerson').AsString) 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('UPdate WFBOrder_Sub Set AnPaiChker='''+Trim(DName)+'''');
      sql.Add(',AnPaiChkStatus=''审核不通过'',');
      sql.add('AnPaiChkDate=getdate()');
      SQL.Add(' where SubId='''+Trim(CDS_Main.fieldbyname('SubId').AsString)+'''');
      ExecSQL;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    CDS_Main.Delete;
    Application.MessageBox('操作成功！','提示',0);
    Exit;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('操作异常！','提示',0);
  end;
end;

procedure TfrmProductionAnPai.Tv1DblClick(Sender: TObject);
begin
  try
    frmOrderAttachment:=TfrmOrderAttachment.Create(Application);
    with frmOrderAttachment do
    begin
      FAMainId:=Trim(Self.CDS_Main.fieldbyname('MainId').AsString);
      Panel1.Enabled:=False;
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmOrderAttachment.Free;
  end;
end;

procedure TfrmProductionAnPai.v1Column19PropertiesEditValueChanged(
  Sender: TObject);
var
  mvalue,FFieldName:String;
  i:Integer;
begin
  mvalue:=TcxTextEdit(Sender).EditingText;
  if Trim(mvalue)='' then
    mvalue:='0';
  FFieldName:=Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
  with CDS_Main do
  begin
    Edit;
    FieldByName(FFieldName).Value:=Trim(mvalue);
    Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('UPdate WFBOrder_Sub Set '+FFieldName+'='+Trim(mvalue));
    SQL.Add(',AnPaiPerson='''+Trim(DName)+'''');
    SQL.Add(' where SubId='''+Trim(CDS_Main.fieldbyname('SubID').AsString)+'''');
    ExecSQL;
  end;
  if Trim(FFieldName)='SmalCount' then
  begin
    VisbleControl(Panel2,False,Panel2.ControlCount);
    VisbleControl(Panel2,True,strtoint(mvalue)+1);
  end;
  if strtoint(mvalue)+1>0 then
  begin
    Button6.Visible:=True;
  end;
end;

procedure TfrmProductionAnPai.v1Column23PropertiesEditValueChanged(
  Sender: TObject);
var
  mvalue:String;
begin
  mvalue:=TcxTextEdit(Sender).EditingText;
  if Trim(mvalue)='' then
    mvalue:='';
  with CDS_Main do
  begin
    Edit;
    FieldByName('SmalPC').Value:=Trim(mvalue);
    Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('UPdate WFBOrder_Sub Set SmalPC='''+Trim(mvalue)+'''');
    SQL.Add(' where SubId='''+Trim(CDS_Main.fieldbyname('SubID').AsString)+'''');
    ExecSQL;
  end;
end;
procedure TfrmProductionAnPai.VisbleControl(Panel55:TWinControl;XS:Boolean;SXCount:Integer);
var
  i:Integer;
begin
  with Panel55 do
  begin
    for i:=0 to SXCount-1 do
    begin
      Controls[i].Visible:=XS;
    end;
  end;
end;

procedure TfrmProductionAnPai.Button6Click(Sender: TObject);
var
  i,j:Integer;
  FFname,FFnameValue,FSubId:string;
begin
  //FSubId:=Trim(CDS_Main.fieldbyname('SubId').AsString);
  try
    j:=0;
    ADOQueryCmd.Connection.BeginTrans;
    with Panel2 do
    begin
      for i:=0 to Panel2.ControlCount-1 do
      begin
        if Controls[i] is TLabel then Continue;
        if Controls[i] is TButton then Continue;
        if Controls[i].Visible=True then
        begin
          FFname:=Trim(Controls[i].Name);
          if Trim(TEdit(Controls[i]).Text)='' then
          begin
            ADOQueryCmd.Connection.RollbackTrans;
            j:=9;
            Break;
          end;
          if StrToFloat((TEdit(Controls[i]).Text))=0 then
          begin
            ADOQueryCmd.Connection.RollbackTrans;
            j:=10;
            Break;
          end;
          with ADOQueryCmd do
          begin
            Close;
            sql.Clear;
            sql.Add('Update WFBOrder_Sub Set '+FFname+'='+Trim(TEdit(Controls[i]).Text));
            SQL.Add(' where SubId='''+Trim(CDS_Main.fieldbyname('SubId').AsString)+'''');
            ExecSQL;
          end;
        end;
      end;
      if j=0 then
        ADOQueryCmd.Connection.CommitTrans
      else
      if j=9 then
      begin
        //ADOQueryCmd.Connection.RollbackTrans;
        Application.MessageBox('小卷幅宽不能为空！','提示',0);
        Exit;
      end else
      if j=10 then
      begin
        //ADOQueryCmd.Connection.RollbackTrans;
        Application.MessageBox('小卷幅宽不能为零！','提示',0);
        Exit;
      end;
    end;
    //InitGrid();
   // CDS_Main.Locate('SubId',Trim(FSubId),[]);
   with Panel2 do
   begin
     j:=0;
     for i:=0 to Panel2.ControlCount-1 do
     begin
       if Controls[i] is TLabel then Continue;
       if Controls[i] is TButton then Continue;
       if TEdit(Controls[i]).Visible=True then
       begin
         if j=0 then
           FSubId:=Trim(TEdit(Controls[i]).Text)
         else
           FSubId:=FSubId+','+Trim(TEdit(Controls[i]).Text);
         j:=j+1;
       end;
     end;
   end;
   with CDS_Main do
   begin
     Edit;
     FieldByName('SmalMF').Value:=Trim(FSubId);
     Post;
   end;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('确定异常！','提示',0);
  end;
end;

procedure TfrmProductionAnPai.Tv1CellClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  VisbleControl(Panel2,False,Panel2.ControlCount);
  VisbleControl(Panel2,True,CDS_Main.fieldbyname('SmalCount').Value+1);
  SCSHDataCDS(CDS_Main,Panel2,2);
  if Trim(CDS_Main.FieldByName('SmalCount').AsString)='' then Exit;
  if  CDS_Main.fieldbyname('SmalCount').Value>0 then
  begin
    if cxTabControl1.TabIndex=0 then
      Button6.Visible:=True
    else
      Button6.Visible:=False;
  end;

end;

procedure TfrmProductionAnPai.v1Column24PropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
var
  mvalue:String;
begin
  mvalue:=Trim(CDS_Main.fieldbyname('SmalNote').AsString);
  try
    frmZDYHelpSel:=TfrmZDYHelpSel.Create(Application);
    with frmZDYHelpSel do
    begin
      flag:='SmalNote';
      flagname:='分切说明';
      if ShowModal=1 then
      begin
        with Self.CDS_Main do
        begin
          Edit;
          FieldByName('SmalNote').Value:=mvalue+Trim(ReturnStr);
          //post;
        end;
        mvalue:=mvalue+ReturnStr;
        with Self.ADOQueryCmd do
        begin
          Close;
          SQL.Clear;
          sql.Add('UPdate WFBOrder_Sub Set SmalNote='''+Trim(mvalue)+'''');
          SQL.Add(' where SubId='''+Trim(CDS_Main.fieldbyname('SubID').AsString)+'''');
          ExecSQL;
        end;
      end;
    end;
  finally
  end;
end;

procedure TfrmProductionAnPai.v1Column24PropertiesEditValueChanged(
  Sender: TObject);
var
  mvalue:String;
begin
  mvalue:=TcxTextEdit(Sender).EditingText;
  if Trim(mvalue)='' then
    mvalue:='';
  with CDS_Main do
  begin
    Edit;
    FieldByName('SmalNote').Value:=Trim(mvalue);
    Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('UPdate WFBOrder_Sub Set SmalNote='''+Trim(mvalue)+'''');
    SQL.Add(' where SubId='''+Trim(CDS_Main.fieldbyname('SubID').AsString)+'''');
    ExecSQL;
  end; 
end;

procedure TfrmProductionAnPai.v1Column25PropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
var
  mvalue:String;
begin
  mvalue:=Trim(CDS_Main.fieldbyname('DBNote').AsString);
  try
    frmZDYHelpSel:=TfrmZDYHelpSel.Create(Application);
    with frmZDYHelpSel do
    begin
      flag:='DBNote';
      flagname:='打包要求';
      if ShowModal=1 then
      begin
        with Self.CDS_Main do
        begin
          Edit;
          FieldByName('DBNote').Value:=mvalue+Trim(ReturnStr);
          //post;
        end;
        mvalue:=mvalue+ReturnStr;
        with Self.ADOQueryCmd do
        begin
          Close;
          SQL.Clear;
          sql.Add('UPdate WFBOrder_Sub Set DBNote='''+Trim(mvalue)+'''');
          SQL.Add(' where SubId='''+Trim(CDS_Main.fieldbyname('SubID').AsString)+'''');
          ExecSQL;
        end;
      end;
    end;
  finally
  end;
end;

procedure TfrmProductionAnPai.v1Column25PropertiesEditValueChanged(
  Sender: TObject);
var
  mvalue:String;
begin
  mvalue:=TcxTextEdit(Sender).EditingText;
  if Trim(mvalue)='' then
    mvalue:='';
  with CDS_Main do
  begin
    Edit;
    FieldByName('DBNote').Value:=Trim(mvalue);
    Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('UPdate WFBOrder_Sub Set DBNote='''+Trim(mvalue)+'''');
    SQL.Add(' where SubId='''+Trim(CDS_Main.fieldbyname('SubID').AsString)+'''');
    ExecSQL;
  end; 
end;

procedure TfrmProductionAnPai.Button7Click(Sender: TObject);
begin
  try
    frmJiangLiaoSet:=TfrmJiangLiaoSet.Create(Application);
    with frmJiangLiaoSet do
    begin
      if ShowModal=1 then
      begin

      end;
    end;
  finally
  end;
end;

end.
