unit U_ShuttleClothJGList;

interface

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

type
  TfrmShuttleClothJGList = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBFind: TToolButton;
    TBDel: TToolButton;
    TBPrint: TToolButton;
    TBClose: TToolButton;
    Panel1: TPanel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    Label1: TLabel;
    Label2: TLabel;
    cxGridPopupMenu1: TcxGridPopupMenu;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DataSource1: TDataSource;
    Label5: TLabel;
    P_Code: TEdit;
    TBExport: TToolButton;
    Order_Main: TClientDataSet;
    RM1: TRMGridReport;
    RMXLSExport1: TRMXLSExport;
    CDS_PM: TClientDataSet;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Column2: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1PRTOrderQty: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    RMDB_Main: TRMDBDataSet;
    TBView: TToolButton;
    v1Column19: TcxGridDBColumn;
    v1Column31: TcxGridDBColumn;
    KHNAME: TEdit;
    Label7: TLabel;
    RMDB_JS: TRMDBDataSet;
    CDS_PJS: TClientDataSet;
    RMDB_WS: TRMDBDataSet;
    CDS_PWS: TClientDataSet;
    v1Column1: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    Label35: TLabel;
    ConNoType: TComboBox;
    v1Column8: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    cxStyleRepository1: TcxStyleRepository;
    cxStyle1: TcxStyle;
    v1Column11: TcxGridDBColumn;
    v1Column12: TcxGridDBColumn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure TBFindClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TBPrintClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure ConNoChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBViewClick(Sender: TObject);
    procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
    procedure v1Column3PropertiesEditValueChanged(Sender: TObject);
    procedure v1Column6PropertiesEditValueChanged(Sender: TObject);
  private
    FInt, PFInt: Integer;
    procedure InitGrid();
    procedure InitForm();
    function DelData(): Boolean;
    { Private declarations }
  public
    canshu1, FCheJian: string;
    { Public declarations }
  end;

implementation

uses
  U_DataLink, U_Fun, U_ZDYHelp, U_ShuttleClothSCInPut;

{$R *.dfm}

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

procedure TfrmShuttleClothJGList.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid(Trim(self.Caption), Tv1, '坯布生产管理');
  Close;
end;

procedure TfrmShuttleClothJGList.InitGrid();

var i,ti:integer;
begin

  i:=Tv1.Controller.FocusedRowIndex;  //记录焦点行号
  ti:=Tv1.Controller.TopRowIndex;     //记录顶行号
  
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      sql.Clear;
      sql.Add('select A.*,B.*, JGGNote=CAST((SELECT C.PYXH +'': ''+C.Y_Name+'';'' FROM PD_Plan_Yarn C WHERE C.MainId=B.MainId AND C.Y_Name<>'''' ');
      SQL.Add(' AND C.PYType=''经丝'' for xml path(''''))as varchar(8000))');
      sql.Add(' from PD_Plan_Main A inner join PD_Plan_Sub B on A.Mainid=B.MainId');
      sql.Add(' where A.FillTIme>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.DateTime)) + '''');
      sql.Add(' and A.FillTIme<''' + Trim(FormatDateTime('yyyy-MM-dd', EndDate.DateTime + 1)) + '''');
      //ShowMessage(SQL.Text);
      Open;
    end;

    SCreateCDS20(ADOQueryMain, Order_Main);
    SInitCDSData20(ADOQueryMain, Order_Main);
    
     Tv1.Controller.FocusedRowIndex:=i; //焦点行定位到记录值
    Tv1.Controller.TopRowIndex:=ti;    //顶行 定位到记录值
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmShuttleClothJGList.InitForm();
begin
  ReadCxGrid(Trim(self.Caption), Tv1, '坯布生产管理');
  BegDate.DateTime := SGetServerDate10(ADOQueryTemp) - 30;
  EndDate.DateTime := SGetServerDate10(ADOQueryTemp);
  InitGrid();
end;

procedure TfrmShuttleClothJGList.TBFindClick(Sender: TObject);
begin
  Panel1.SetFocus;
  if ADOQueryMain.Active = False then
    Exit;
  SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
  SCreateCDS20(ADOQueryMain, Order_Main);
  SInitCDSData20(ADOQueryMain, Order_Main);
end;

procedure TfrmShuttleClothJGList.TBDelClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    Exit;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    SQL.Add('select A.*');
    sql.Add('from PD_Plan_Card A');
    sql.Add(' where A.SubId=''' + Trim(Order_Main.fieldbyname('SubId').AsString) + '''');
    sql.Add(' and A.MainId=''' + Trim(Order_Main.fieldbyname('MainId').AsString) + '''');
    Open;
  end;
  if ADOQueryTemp.IsEmpty = False then
  begin
    Application.MessageBox('已产生安排数据不能删除!', '提示', 0);
    Exit;
  end;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    SQL.Add('select TOP 1 A.*');
    sql.Add('from CK_Cloth_CR A');
    sql.Add(' where A.SubId=''' + Trim(Order_Main.fieldbyname('SubId').AsString) + '''');
    sql.Add(' and A.MainId=''' + Trim(Order_Main.fieldbyname('MainId').AsString) + '''');
    Open;
  end;
  if ADOQueryTemp.IsEmpty = False then
  begin
    Application.MessageBox('已产生检验数据不能删除!', '提示', 0);
    Exit;
  end;
  if Application.MessageBox('确定要删除数据吗？', '提示', 32 + 4) <> IDYES then
    Exit;
  if DelData() then
  begin
    Order_Main.Delete;
  end;
end;

function TfrmShuttleClothJGList.DelData(): Boolean;
begin
  try
    Result := false;
    ADOQueryCmd.Connection.BeginTrans;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete PD_Plan_Main where MainId=''' + Trim(Order_Main.fieldbyname('MainId').AsString) + '''');
      sql.Add('delete PD_Plan_Sub where SubId=''' + Trim(Order_Main.fieldbyname('SubId').AsString) + '''');
      sql.Add('delete PD_Plan_Yarn where SubId=''' + Trim(Order_Main.fieldbyname('SubId').AsString) + '''');
      ExecSQL;
    end;

    ADOQueryCmd.Connection.CommitTrans;
    Result := True;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Result := False;
    Application.MessageBox('数据删除异常！', '提示', 0);
  end;
end;

procedure TfrmShuttleClothJGList.TBExportClick(Sender: TObject);
begin
  if ADOQueryMain.IsEmpty then
    Exit;
  TcxGridToExcel('坯布生产单', cxGrid1);
end;

procedure TfrmShuttleClothJGList.TBPrintClick(Sender: TObject);
var
  fPrintFile, FWeiZhi: string;
  i, j, k: integer;
begin
  if Order_Main.IsEmpty then
    Exit;
  ExportFtErpFile('梭织计划单.rmf', ADOQueryTemp);
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\梭织计划单.rmf';

  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from PD_Plan_Main A inner join PD_Plan_Sub B on A.Mainid=B.MainId where A.MainId=' + Quotedstr(Trim(Order_Main.fieldbyname('MainId').AsString)));
    Open;
  end;
  SCreateCDS20(ADOQueryTemp, CDS_PM);
  SInitCDSData20(ADOQueryTemp, CDS_PM);

  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from PD_Plan_Yarn where PYType=''经丝'' and MainId=' + Quotedstr(Trim(Order_Main.fieldbyname('MainId').AsString)));
    Open;
  end;
  SCreateCDS20(ADOQueryTemp, CDS_PJS);
  SInitCDSData20(ADOQueryTemp, CDS_PJS);

  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from PD_Plan_Yarn where PYType=''纬丝'' and MainId=' + Quotedstr(Trim(Order_Main.fieldbyname('MainId').AsString)));
    Open;
  end;
  SCreateCDS20(ADOQueryTemp, CDS_PWS);
  SInitCDSData20(ADOQueryTemp, CDS_PWS);

  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);

    RM1.ShowReport;
  end
  else
  begin
    Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0);
  end;
end;

procedure TfrmShuttleClothJGList.TBRafreshClick(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmShuttleClothJGList.ConNoChange(Sender: TObject);
begin
  if ADOQueryMain.Active = False then
    Exit;
  SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
  SCreateCDS20(ADOQueryMain, Order_Main);
  SInitCDSData20(ADOQueryMain, Order_Main);
end;

procedure TfrmShuttleClothJGList.FormShow(Sender: TObject);
begin
  InitForm();
end;

procedure TfrmShuttleClothJGList.TBViewClick(Sender: TObject);
begin
  try
    frmClothSCInPut := TfrmClothSCInPut.Create(Application);
    with frmClothSCInPut do
    begin
      PState := 1;
      FMainId := Trim(Self.Order_Main.fieldbyname('MainId').AsString);
      FSubId := Trim(Self.Order_Main.fieldbyname('SubId').AsString);
      FConNo := Trim(Self.Order_Main.fieldbyname('ConNo').AsString);
      TBSave.Visible := False;

      ScrollBox1.Enabled := False;
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmClothSCInPut.Free;
  end;
end;

procedure TfrmShuttleClothJGList.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  FDDZT: string;
begin

//  if AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('DDZT').Index] = null then
//    Exit;
//
//  FDDZT := AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('DDZT').Index];
//
//  if FDDZT = '已开始' then
//    ACanvas.Font.Color := $FF0000;
//  if FDDZT = '已结束' then
//    ACanvas.Font.Color := $0000FF;

end;

procedure TfrmShuttleClothJGList.v1Column3PropertiesEditValueChanged(
  Sender: TObject);
var
  mvalue, FFieldName,FValue: string;
  IntValue : Double;
begin
  mvalue := TcxTextEdit(Sender).EditingText;

 if Pos('=',mvalue)=1 then
 begin
   Application.MessageBox('等号前面不能没计算公式','提示',0);
   Exit;
 end;

 if Pos('=',mvalue)>0 then
 begin
   mvalue := Copy(mvalue,1,(Pos('=',mvalue)-1));
 end;




  FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
  try
    ADOQueryCmd.Connection.BeginTrans;
    with Order_Main do
    begin
      Edit;
      FieldByName(FFieldName).Value := Trim(mvalue);
      Post;
    end;
    if mvalue <> '' then
    begin
       with ADOQueryCmd do
      begin
        Close;
        sql.Clear;
        sql.Add('exec P_CK_Cloth_JiSuan ');
        sql.add('@Fmvalue=' + QuotedStr(Trim(mvalue)));
        Open;
      end;
      if ADOQueryCmd.IsEmpty=False then
      begin
        FValue:=Trim(ADOQueryCmd.fieldbyname('mvalue').AsString);
        if TryStrToFloat(mvalue,IntValue)=False then
        begin
          mvalue:=mvalue+'='+FValue;
        end
        else
        begin
          mvalue:=FValue;
        end;

      end
      else
      Exit;
    end;  

    
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('UPdate PD_Plan_Sub ');
      sql.Add(' Set ' + FFieldName + '=''' + Trim(mvalue) + '''');
      sql.Add(' where SubId=' + quotedstr(Order_Main.fieldbyname('SubId').AsString));
      ExecSQL;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    tv1.Controller.EditingController.ShowEdit();
    InitGrid();
 /////////动态设置cxgrid中Properties中的属性//////////////////////////
//    Tv1.GetColumnByFieldName('FSNote').PropertiesClass := TcxMemoProperties;
//     with TcxMemoProperties(Tv1.GetColumnByFieldName('FSNote').Properties) do
//     begin
//       ScrollBars:=ssVertical;
//     end;
 /////////动态设置cxgrid中Properties中的属性//////////////////////////
  except
    tv1.Controller.EditingController.ShowEdit();
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('保存失败！', '提示', 0);
  end
end;

procedure TfrmShuttleClothJGList.v1Column6PropertiesEditValueChanged(
  Sender: TObject);
var
  mvalue, FFieldName,FValue: string;
begin
  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
  try
    ADOQueryCmd.Connection.BeginTrans;
    with Order_Main do
    begin
      Edit;
      FieldByName(FFieldName).Value := Trim(mvalue);
      Post;
    end;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('UPdate PD_Plan_Sub ');
      sql.Add(' Set ' + FFieldName + '=''' + Trim(mvalue) + '''');
      sql.Add(' where SubId=' + quotedstr(Order_Main.fieldbyname('SubId').AsString));
      ExecSQL;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    tv1.Controller.EditingController.ShowEdit();
    InitGrid();
  except
    tv1.Controller.EditingController.ShowEdit();
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('保存失败！', '提示', 0);
  end
end;

end.

