unit U_PRTOrderViewList;

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, cxCheckBox, cxCalendar, cxSplitter,
  RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, RM_e_Xls,
  Menus;

type
  TfrmPRTOrderViewList = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBFind: TToolButton;
    TBAdd: TToolButton;
    TBEdit: TToolButton;
    TBDel: TToolButton;
    TBPrint: TToolButton;
    TBClose: TToolButton;
    Panel1: TPanel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    Label1: TLabel;
    Tv1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    cxGridPopupMenu1: TcxGridPopupMenu;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DataSource1: TDataSource;
    Label3: TLabel;
    OrderNo: TEdit;
    TBExport: TToolButton;
    v1OrderNo: TcxGridDBColumn;
    v1OrdDate: TcxGridDBColumn;
    v1DeliveryDate: TcxGridDBColumn;
    v1MPRTSpec: TcxGridDBColumn;
    Order_Main: TClientDataSet;
    RM1: TRMGridReport;
    RMDBMain: TRMDBDataSet;
    RMXLSExport1: TRMXLSExport;
    v1CustomerNoName: TcxGridDBColumn;
    Label4: TLabel;
    CustomerNoName: TEdit;
    v1MPRTCodeName: TcxGridDBColumn;
    v1MPRTMF: TcxGridDBColumn;
    TBView: TToolButton;
    Label8: TLabel;
    MPRTCodeHZ: TEdit;
    v1MPRTKZ: TcxGridDBColumn;
    Label10: TLabel;
    MPRTSpec: TEdit;
    Label12: TLabel;
    MPRTKZ: TEdit;
    Label13: TLabel;
    MPRTMF: TEdit;
    ToolButton2: TToolButton;
    ADOQueryPrint: TADOQuery;
    CDS_Print: TClientDataSet;
    ComboBox1: TComboBox;
    v1Column2: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    Label9: TLabel;
    Label2: TLabel;
    ConNo: TEdit;
    LiDanPerson: TEdit;
    v1Column1: TcxGridDBColumn;
    ComboBox2: TComboBox;
    ToolButton1: TToolButton;
    RMDBDataSet1: TRMDBDataSet;
    RM2: TRMGridReport;
    ToolButton3: TToolButton;
    ComboBox3: TComboBox;
    v1Column4: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    CheckBox1: TCheckBox;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure TBFindClick(Sender: TObject);
    procedure TBEditClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TBPrintClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure TBAddClick(Sender: TObject);
    procedure OrderNoChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Tv1CellDblClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure Tv1StylesGetContentStyle(Sender: TcxCustomGridTableView;
      ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
      out AStyle: TcxStyle);
    procedure v1DeliveryDateCustomDrawCell(Sender: TcxCustomGridTableView;
      ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
      var ADone: Boolean);
    procedure TBViewClick(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure OrderNoKeyPress(Sender: TObject; var Key: Char);
    procedure ConNoKeyPress(Sender: TObject; var Key: Char);
    procedure Tv1CellClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
  private
    CanShu1,CanShu2:string;
    DQdate:TDateTime;
    procedure InitGrid();
    procedure InitForm();
    function  DelData():Boolean;
    procedure InitGridFH();
    { Private declarations }
  public
    FFInt,FCloth:Integer;

    { Public declarations }
  end;

var
  frmPRTOrderViewList: TfrmPRTOrderViewList;

implementation
uses
  U_DataLink,U_OrderInPut,U_RTFun, U_ZDYHelp, U_ZDYHelpSel, U_ModuleNote;

{$R *.dfm}

procedure TfrmPRTOrderViewList.FormDestroy(Sender: TObject);
begin
  frmPRTOrderViewList:=nil;
end;

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

procedure TfrmPRTOrderViewList.FormCreate(Sender: TObject);
begin
  cxgrid1.Align:=alClient;
  //BegDate.DateTime:=SGetServerDateTime(ADOQueryTemp)-7;
  //EndDate.DateTime:=SGetServerDateTime(ADOQueryTemp);
  DQdate:=SGetServerDate(ADOQueryTemp);
end;

procedure TfrmPRTOrderViewList.TBCloseClick(Sender: TObject);
begin
  Close;
  WriteCxGrid('ָʾ���б�',Tv1,'����ָʾ������');
end;

procedure TfrmPRTOrderViewList.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      sql.Clear;
      sql.add('exec P_View_Order :begdate,:enddate,:WSql') ;
      Parameters.ParamByName('WSql').Value:='';
      Parameters.ParamByName('begdate').Value:=FormatDateTime('yyyy-MM-dd',BegDate.DateTime);
      Parameters.ParamByName('enddate').Value:=FormatDateTime('yyyy-MM-dd',enddate.DateTime+1);
      ExecSQL;
      Open;
    end;
    SCreateCDS20(ADOQueryMain,Order_Main);
    SInitCDSData20(ADOQueryMain,Order_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;
procedure TfrmPRTOrderViewList.InitGridFH();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      sql.Clear;
      sql.Add('exec Order_QryList :MainId,:WSql');
      Parameters.ParamByName('WSql').Value:=' and FillTime>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.DateTime))+''''
                                           +' and FillTime<'''+Trim(FormatDateTime('yyyy-MM-dd',EndDate.DateTime+1))+'''';
      Open;
    end;
    SCreateCDS20(ADOQueryMain,Order_Main);
    SInitCDSData20(ADOQueryMain,Order_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmPRTOrderViewList.InitForm();
begin
  ReadCxGrid('ָʾ���б�',Tv1,'����ָʾ������');
  BegDate.DateTime:=SGetServerDate10(ADOQueryTemp)-92;
  EndDate.DateTime:=SGetServerDate10(ADOQueryTemp);
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select Top 10* from JYOrder_Main Order by FillTime desc');
    Open;
  end;
  ComboBox1.Clear;
  with ADOQueryTemp do
  begin
    First;
    while not Eof do
    begin
      ComboBox1.Items.Add(Trim(ADOQueryTemp.fieldbyname('OrderNO').AsString));
      Next;
    end;
  end;
  //InitGrid();
end;

procedure TfrmPRTOrderViewList.TBFindClick(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 TfrmPRTOrderViewList.TBEditClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  if Trim(CanShu1)<>'��Ȩ��' then
  begin
    if Trim(Order_Main.fieldbyname('Filler').AsString)<>Trim(DName) then
    begin
      Application.MessageBox('���ܲ������˵�����!','��ʾ',0);
      Exit;
    end;
  end;

 
  try
    frmOrderInPut:=TfrmOrderInPut.Create(Application);
    with frmOrderInPut do
    begin
      PState:=1;
      FMainId:=Trim(Self.Order_Main.fieldbyname('MainId').AsString);
      FOrderNo:=Trim(Self.Order_Main.fieldbyname('OrderNo').AsString);
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmOrderInPut.Free;
  end;
end;

procedure TfrmPRTOrderViewList.TBDelClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  if Trim(Order_Main.fieldbyname('Filler').AsString)<>Trim(DName) then
  begin
    Application.MessageBox('���ܲ������˵�����!','��ʾ',0);
    Exit;
  end;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from JYOrder_Main_MD where ORDMainId='''+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 TfrmPRTOrderViewList.DelData():Boolean;
begin
  try
    Result:=false;
    ADOQueryCmd.Connection.BeginTrans;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete JYOrder_Main where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
      sql.Add('delete JYOrder_Sub where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
      ExecSQL;
    end;
    {with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from JYOrder_Sub where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
      Open;
      if IsEmpty then
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('delete JYOrder_Main where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
          ExecSQL;
        end;
      end;
    end;
    if Trim(Order_Main.fieldbyname('SubId').AsString)='' then
    begin
      with ADOQueryCmd do
      begin
        Close;
        sql.Clear;
        sql.Add('delete JYOrder_Main where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
        ExecSQL;
      end;
    end;   }
    ADOQueryCmd.Connection.CommitTrans;
    Result:=True;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Result:=False;
    Application.MessageBox('����ɾ���쳣��','��ʾ',0);
  end;
end;

procedure TfrmPRTOrderViewList.TBExportClick(Sender: TObject);
begin
  if ADOQueryMain.IsEmpty then Exit;

end;

procedure TfrmPRTOrderViewList.TBPrintClick(Sender: TObject);
var
   fPrintFile:string;
   Porderno,PFTPUnit,LD,LDTel,GD,GDTel,CPQtyStr,BPQtyStr,QtyUnit:string;
   i,j:Integer;
begin
  if Order_Main.IsEmpty then Exit;
  if Trim(ComboBox2.Text)='' then Exit;
  if Trim(ComboBox3.Text)='' then Exit;
  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\'+Trim(ComboBox3.Text)+'.rmf' ;
  with ADOQueryPrint do
  begin
    Close;
    sql.Clear;
    sql.Add('select A.*,B.PSName,B.PSNote,C.ClothOneQty,C.MPRTOneQty,C.OneQtyUnit,C.OrderNo,C.MPRTCode,C.MPRTCodeName,C.MPRTCF ');
    sql.Add(' ,C.MPRTSpec,C.MPRTMF,C.MPRTKZ,C.ChuanY,C.MPRTGY,C.MPRTGYHZ,D.*');
    sql.Add(',GSTT=(select Top 1 ZdyStr1 from KH_Zdy A where A.ZdyName=C.ComTaiTou)');
    sql.Add(',Case when RTrim(A.PFTPUnit)=''KG'' then '',''+Cast(Cast(A.PFTPQty*B.KgZM as int) as varchar(20))+''M'' ');
    sql.Add(' else '''' end as MStr');
    sql.Add(',C.LiDanPerson,LDTel10=(select Top 1 Note from KH_Zdy KZ where KZ.ZdyName=C.LiDanPerson and KZ.Type=''LiDanPerson'' )');
    sql.Add(',GDTel10=(select Top 1 Note from KH_Zdy KZ where KZ.ZdyName=A.PFGenDanPerson and KZ.Type=''PFGenDanPerson'' )');
    sql.Add(' from JYOrder_PCS_Sub A');
    SQL.Add(' inner join JYOrder_Process B on A.PSID=B.PSID');
    sql.Add(' inner join JYOrder_Main C on A.MainId=C.Mainid');
    sql.Add(' left join JYOrder_Sub D on A.Subid=D.SubId');
    sql.Add(' where A.MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
    SQL.Add(' and A.FactoryName='''+Trim(ComboBox2.Text)+'''');
    SQL.Add(' order by D.SubId');
    Open;
  end;
  SCreateCDS20(ADOQueryPrint,CDS_Print);
  SInitCDSData20(ADOQueryPrint,CDS_Print);
  PFTPUnit:=Trim(CDS_Print.fieldbyname('PFTPUnit').AsString);
  LD:=Trim(CDS_Print.fieldbyname('LiDanPerson').AsString);
  LDTel:=Trim(CDS_Print.fieldbyname('LDTel10').AsString);
  GD:=Trim(CDS_Print.fieldbyname('PFGenDanPerson').AsString);
  GDTel:=Trim(CDS_Print.fieldbyname('GDTel10').AsString);
  if (CDS_Print.RecordCount mod 2)=1 then
  begin
    CDS_Print.Append;
    CDS_Print.Post;
  end;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select sum(PFTPQty) PFTPQtyHZ,sum(PFTPPS) PFTPPSHZ ');
    sql.Add(' from JYOrder_PCS_Sub A');
    SQL.Add(' inner join JYOrder_Process B on A.PSID=B.PSID');
    sql.Add(' inner join JYOrder_Main C on A.MainId=C.Mainid');
    sql.Add(' left join JYOrder_Sub D on A.Subid=D.SubId');
    sql.Add(' where A.MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
    SQL.Add(' and A.FactoryName='''+Trim(ComboBox2.Text)+'''');
    sql.Add(' group by A.FactoryName');
    Open;
  end;
  if FileExists(fPrintFile) then
  begin
    RMVariables['PFTPQtyHZ']:=ADOQueryTemp.fieldbyname('PFTPQtyHZ').Value;
    RMVariables['PFTPPSHZ']:=ADOQueryTemp.fieldbyname('PFTPPSHZ').Value;
    RMVariables['ZQty']:=Order_Main.fieldbyname('ZQty').Value;
    RMVariables['OrderUnit']:=Order_Main.fieldbyname('OrderUnit').Value;
    RMVariables['QtyUnit']:=Order_Main.fieldbyname('OneQtyUnit').Value;
    RMVariables['CPQtyStr']:=Order_Main.fieldbyname('MPRTOneQty').Value;
    RMVariables['BPQtyStr']:=Order_Main.fieldbyname('ClothOneQty').Value;
    RMVariables['PFTPUnitHZ']:=Trim(PFTPUnit);
    RMVariables['LD']:=Trim(LD);
    RMVariables['LDTel']:=Trim(LDTel);
    RMVariables['GD']:=Trim(GD);
    RMVariables['GDTel']:=Trim(GDTel);
    RM1.LoadFromFile(fPrintFile);
    RM1.ShowReport;
  end else
  begin
    Application.MessageBox(PChar('û����'+ExtractFilePath(Application.ExeName)+'Report\����ָʾ��.rmf'),'��ʾ',0);
  end;
 // Panel4.Visible:=True;
end;

procedure TfrmPRTOrderViewList.TBRafreshClick(Sender: TObject);
begin
  InitGrid();
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select Top 10* from JYOrder_Main Order by FillTime desc');
    Open;
  end;
  ComboBox1.Clear;
  with ADOQueryTemp do
  begin
    First;
    while not Eof do
    begin
      ComboBox1.Items.Add(Trim(ADOQueryTemp.fieldbyname('OrderNO').AsString));
      Next;
    end;
  end;
  if Order_Main.IsEmpty=False then
  begin
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select distinct(FactoryName) FactoryName from JYOrder_PCS_Sub ');
      sql.Add(' where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
      Open;
    end;
    ComboBox2.Clear;
    with ADOQueryTemp do
    begin
      First;
      while not Eof do
      begin
        ComboBox2.Items.Add(Trim(ADOQueryTemp.fieldbyname('FactoryName').AsString));
        Next;
      end;
    end;
  end;
end;

procedure TfrmPRTOrderViewList.TBAddClick(Sender: TObject);
var
  maxno:string;
begin
  try
    frmOrderInPut:=TfrmOrderInPut.Create(Application);
    with frmOrderInPut do
    begin
      PState:=0;
      FMainId:='';
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmOrderInPut.Free;
  end;
end;

procedure TfrmPRTOrderViewList.OrderNoChange(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 TfrmPRTOrderViewList.FormShow(Sender: TObject);
begin
  InitForm();
end;

procedure TfrmPRTOrderViewList.Tv1CellDblClick(
  Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  if TBView.Visible=False then Exit;
  TBView.Click;
end;

procedure TfrmPRTOrderViewList.CheckBox1Click(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmPRTOrderViewList.CheckBox2Click(Sender: TObject);
begin
  TBRafresh.Click;
end;

procedure TfrmPRTOrderViewList.Tv1StylesGetContentStyle(
  Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
var
  id,id10:Integer;
begin
  {try
    if Tv1.GroupedItemCount=0 then
    begin
      Id:=Tv1.GetColumnByFieldName('DeliveryDate').Index-tv1.GroupedItemCount;
      Id10:=Tv1.GetColumnByFieldName('SubStatus').Index-tv1.GroupedItemCount;
      if Trim(VarToStr(ARecord.Values[id]))='' then Exit;
      if Id<0 then Exit;
      if ARecord.Values[id10]='���' then exit;
      if (ARecord.Values[id]-DQdate)>=4 then Exit;
      if ((ARecord.Values[id]-DQdate)>=0) and ((ARecord.Values[id]-DQdate)<4) then
        AStyle:=DataLink_.QHuangSe
      else
      if ARecord.Values[id]-DQdate<0 then
      begin
        AStyle:=DataLink_OrderManage.FenHongS;
      end;
    end else
    begin

    end;
  except
  end; }
end;

procedure TfrmPRTOrderViewList.v1DeliveryDateCustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
 { Id:=TV1.GetColumnByFieldName('DeliveryDate').Index;//;-TV1.GroupedItemCount;
  Id10:=TV1.GetColumnByFieldName('SubStatus').Index;
  if Id<0 then Exit;
  if AViewInfo.GridRecord.Values[Id10]='���' then Exit;
  if AViewInfo.GridRecord.Values[Id]-SGetServerDate(ADOQueryTemp)>=4 then Exit;
  if ((AViewInfo.GridRecord.Values[id]-SGetServerDate10(ADOQueryTemp))>=0) and ((AViewInfo.GridRecord.Values[id]-SGetServerDate(ADOQueryTemp))<4) then
    ACanvas.Brush.Color:=clYellow
  else
  if (AViewInfo.GridRecord.Values[id])-(SGetServerDate10(ADOQueryTemp)<0) then
  begin
    ACanvas.Brush.Color:=clRed;
  end;
  begin
    ACanvas.Brush.Color:=clRed;
  end else
  if AViewInfo.GridRecord.Values[Id]='Purple' then
  begin
    ACanvas.Brush.Color:=clPurple;
  end else
  if AViewInfo.GridRecord.Values[Id]='Olive' then
  begin
    ACanvas.Brush.Color:=clOlive;
  end else
  if AViewInfo.GridRecord.Values[Id]='Teal' then
  begin
    ACanvas.Brush.Color:=clTeal;
  end else
  if AViewInfo.GridRecord.Values[Id]='Background' then
  begin
    ACanvas.Brush.Color:=clBackground;
  end;   }
end;

procedure TfrmPRTOrderViewList.TBViewClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  try
    frmOrderInPut:=TfrmOrderInPut.Create(Application);
    with frmOrderInPut do
    begin
      PState:=1;
      FMainId:=Trim(Self.Order_Main.fieldbyname('MainId').AsString);
      ToolBar2.Visible:=False;
      //ToolBar3.Visible:=False;
      ToolBar4.Visible:=False;
      ToolBar5.Visible:=False;
      TBSave.Visible:=False;
      ToolButton4.Visible:=False;
      ToolButton5.Visible:=False;
      ToolButton8.Visible:=False;
      ToolButton10.Visible:=False;
      ToolButton11.Visible:=False;
      //ScrollBox1.Enabled:=False;
      Tv1.OptionsSelection.CellSelect:=False;
      ToolBar6.Visible:=False;
      ToolButton20.Visible:=False;
      ToolButton21.Visible:=False;
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmOrderInPut.Free;
  end;
end;

procedure TfrmPRTOrderViewList.ToolButton2Click(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  try
    frmOrderInPut:=TfrmOrderInPut.Create(Application);
    with frmOrderInPut do
    begin
      PState:=1;
      CopyInt:=99;
      FMainId:=Trim(Self.Order_Main.fieldbyname('MainId').AsString);
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmOrderInPut.Free;
  end;
end;

procedure TfrmPRTOrderViewList.OrderNoKeyPress(Sender: TObject;
  var Key: Char);
begin
  if Key=#13 then
  begin
    if Length(OrderNo.Text)<3 then Exit;
    try
      ADOQueryMain.DisableControls;
      with ADOQueryMain do
      begin
        Filtered:=False;
        Close;
        sql.Clear;
        sql.add('exec P_View_Order :begdate,:enddate,:WSql') ;
        Parameters.ParamByName('WSql').Value:=' and orderno like '''+'%'+Trim(OrderNo.Text)+'%'+'''';
        Parameters.ParamByName('begdate').Value:='1899-01-01';
        Parameters.ParamByName('enddate').Value:='2050-01-01';
        Open;
      end;
      SCreateCDS20(ADOQueryMain,Order_Main);
      SInitCDSData20(ADOQueryMain,Order_Main);
    finally
      ADOQueryMain.EnableControls;
    end;
  end;
end;

procedure TfrmPRTOrderViewList.ConNoKeyPress(Sender: TObject;
  var Key: Char);
begin
  if Key=#13 then
  begin
    if Length(conno.Text)<3 then Exit;
    try
      ADOQueryMain.DisableControls;
      with ADOQueryMain do
      begin
        Filtered:=False;
        Close;
        sql.Clear;
        sql.add('exec P_View_Order :begdate,:enddate,:WSql') ;
        Parameters.ParamByName('WSql').Value:=' and conno like '''+'%'+Trim(conno.Text)+'%'+'''';
        Parameters.ParamByName('begdate').Value:='1899-01-01';
        Parameters.ParamByName('enddate').Value:='2050-01-01';
        ExecSQL;
        Open;
      end;
      SCreateCDS20(ADOQueryMain,Order_Main);
      SInitCDSData20(ADOQueryMain,Order_Main);
    finally
      ADOQueryMain.EnableControls;
    end;
  end;
end;

procedure TfrmPRTOrderViewList.Tv1CellClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  if Order_Main.IsEmpty then Exit;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select distinct(FactoryName) FactoryName from JYOrder_PCS_Sub ');
    sql.Add(' where MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
    Open;
  end;
  ComboBox2.Clear;
  with ADOQueryTemp do
  begin
    First;
    while not Eof do
    begin
      ComboBox2.Items.Add(Trim(ADOQueryTemp.fieldbyname('FactoryName').AsString));
      Next;
    end;
  end;
end;

procedure TfrmPRTOrderViewList.ToolButton1Click(Sender: TObject);
var
   fPrintFile:string;
   Porderno,PFTPUnit,LD,LDTel,GD,GDTel,PSID:string;
   i,j:Integer;
begin
  if Order_Main.IsEmpty then Exit;
  //if Trim(ComboBox2.Text)='' then Exit;
  if CheckBox1.Checked=False then
    fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\��װָʾ��.rmf'
  else
    fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\��װָʾ��Ⱦɫ.rmf';
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from JYOrder_Process where Mainid='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
    sql.Add(' and PSName=''�����װ'' ');
    Open;
  end;
  if ADOQueryTemp.IsEmpty then Exit;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from JYOrder_Process where Mainid='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
    sql.Add(' and PSName=''��Ʒ'' ');
    Open;
  end;
  if ADOQueryTemp.IsEmpty then
  begin
    i:=1;//�����װǰһ��
  end else
  begin
    if ADOQueryTemp.FieldByName('PSXH').AsInteger=1 then
    begin
      i:=1;
    end else
    begin
      i:=2;//�����װǰ����
    end;
  end;
  with ADOQueryPrint do
  begin
    Close;
    sql.Clear;
    sql.Add('select A.*,B.PSName,B.PSNote,C.OrderNo,C.MPRTCode,C.MPRTCodeName,C.MPRTCF, ');
    sql.Add(' C.MPRTSpec,C.MPRTMF,C.MPRTKZ,C.ChuanY,C.MPRTGY,D.PRTHX,D.PRTColorNo');
    sql.Add(',C.MPRTMFNOte,C.MPRTKZNote,C.CJNote,C.DHNote,C.BZNote,C.CHNote,C.MPRTGYHZ,D.*');
    sql.Add(',GSTT=(select Top 1 ZdyStr1 from KH_Zdy A where A.ZdyName=C.ComTaiTou)');
    sql.Add(',Case when RTrim(A.PFTPUnit)=''KG'' then '',''+Cast(Cast(A.PFTPQty*B.KgZM as int) as varchar(20))+''M'' ');
    sql.Add(' else '''' end as MStr');
    sql.Add(',C.LiDanPerson,LDTel10=(select Top 1 Note from KH_Zdy KZ where KZ.ZdyName=C.LiDanPerson and KZ.Type=''LiDanPerson'' )');
    sql.Add(',GDTel10=(select Top 1 Note from KH_Zdy KZ where KZ.ZdyName=A.PFGenDanPerson and KZ.Type=''PFGenDanPerson'' )');
    sql.Add(' from JYOrder_PCS_Sub A');
    SQL.Add(' inner join JYOrder_Process B on A.PSID=B.PSID');
    sql.Add(' inner join JYOrder_Main C on A.MainId=C.Mainid');
    sql.Add(' inner join JYOrder_Sub D on A.Subid=D.SubId');
    //sql.Add(' left join JYOrder_Sub D on A.Subid=D.SubId');
    sql.Add(' where A.MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
    if i=1 then
    begin
      sql.Add(' and B.PSID=(select Top 1 PSID from JYOrder_Process JP where JP.MainId=C.MainId');
      sql.Add(' and JP.PSXH<(select PSXH from JYOrder_Process JPP where JPP.MainId=C.MainId and JPP.PSName=''�����װ'' )');
      sql.Add(' order by PSXH DESC)');
    end else
    if i=2 then
    begin
      sql.Add(' and B.PSID in (select Top 2 PSID from JYOrder_Process JP where JP.MainId=C.MainId');
      sql.Add(' and JP.PSXH<(select PSXH from JYOrder_Process JPP where JPP.MainId=C.MainId and JPP.PSName=''�����װ'' )');
      sql.Add(' order by PSXH DESC)');
    end;

    //SQL.Add(' and A.FactoryName='''+Trim(ComboBox2.Text)+'''');
    sql.Add(' order by D.SubId');
    //ShowMessage(sql.Text);
    Open;
  end;
  SCreateCDS20(ADOQueryPrint,CDS_Print);
  SInitCDSData20(ADOQueryPrint,CDS_Print);
  PFTPUnit:=Trim(CDS_Print.fieldbyname('PFTPUnit').AsString);
  LD:=Trim(CDS_Print.fieldbyname('LiDanPerson').AsString);
  LDTel:=Trim(CDS_Print.fieldbyname('LDTel10').AsString);
  GD:=Trim(CDS_Print.fieldbyname('PFGenDanPerson').AsString);
  GDTel:=Trim(CDS_Print.fieldbyname('GDTel10').AsString);
  if (CDS_Print.RecordCount mod 2)=1 then
  begin
    CDS_Print.Append;
    CDS_Print.Post;
  end;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select sum(PFTPQty) PFTPQtyHZ,sum(PFTPPS) PFTPPSHZ ');
    sql.Add(' from JYOrder_PCS_Sub A');
    SQL.Add(' inner join JYOrder_Process B on A.PSID=B.PSID');
    sql.Add(' inner join JYOrder_Main C on A.MainId=C.Mainid');
    //sql.Add(' left join JYOrder_Sub D on A.Subid=D.SubId');
    sql.Add(' inner join JYOrder_Sub D on A.Subid=D.SubId');
    sql.Add(' where A.MainId='''+Trim(Order_Main.fieldbyname('MainId').AsString)+'''');
    if i=1 then
    begin
      sql.Add(' and B.PSID=(select Top 1 PSID from JYOrder_Process JP where JP.MainId=C.MainId');
      sql.Add(' and JP.PSXH<(select PSXH from JYOrder_Process JPP where JPP.MainId=C.MainId and JPP.PSName=''�����װ'' )');
      sql.Add(' order by PSXH DESC)');
    end else
    if i=2 then
    begin
      sql.Add(' and B.PSID in (select Top 2 PSID from JYOrder_Process JP where JP.MainId=C.MainId');
      sql.Add(' and JP.PSXH<(select PSXH from JYOrder_Process JPP where JPP.MainId=C.MainId and JPP.PSName=''�����װ'' )');
      sql.Add(' order by PSXH DESC)');
    end;
   // sql.Add(' group by A.FactoryName');
    Open;
  end;
  if FileExists(fPrintFile) then
  begin
    RMVariables['PFTPQtyHZ']:=ADOQueryTemp.fieldbyname('PFTPQtyHZ').Value;
    RMVariables['PFTPPSHZ']:=ADOQueryTemp.fieldbyname('PFTPPSHZ').Value;
    RMVariables['ZQty']:=Order_Main.fieldbyname('ZQty').Value;
    RMVariables['OrderUnit']:=Order_Main.fieldbyname('OrderUnit').Value;
    RMVariables['QtyUnit']:=Order_Main.fieldbyname('OneQtyUnit').Value;
    RMVariables['CPQtyStr']:=Order_Main.fieldbyname('MPRTOneQty').Value;
    RMVariables['BPQtyStr']:=Order_Main.fieldbyname('ClothOneQty').Value;
    RMVariables['PFTPUnitHZ']:=Trim(PFTPUnit);
    RMVariables['LD']:=Trim(LD);
    RMVariables['LDTel']:=Trim(LDTel);
    RMVariables['GD']:=Trim(GD);
    RMVariables['GDTel']:=Trim(GDTel);
    RM1.LoadFromFile(fPrintFile);
    RM1.ShowReport;
  end else
  begin
    Application.MessageBox(PChar('û����'+ExtractFilePath(Application.ExeName)+'Report\��װָʾ��.rmf'),'��ʾ',0);
  end;
 // Panel4.Visible:=True;
end;

procedure TfrmPRTOrderViewList.ToolButton3Click(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;

end.