unit U_PRTOrderPriceList;

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, RM_DsgGridReport, RM_Designer, cxPC;

type
  TfrmPRTOrderPriceList = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBFind: 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;
    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;
    ADOQueryPrint: TADOQuery;
    CDS_Print: TClientDataSet;
    v1Column2: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    Label9: TLabel;
    Label2: TLabel;
    ConNo: TEdit;
    LiDanPerson: TEdit;
    v1Column1: TcxGridDBColumn;
    RMDBDataSet1: TRMDBDataSet;
    RM2: TRMGridReport;
    ToolButton3: TToolButton;
    v1Column4: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    RMXLSExport2: TRMXLSExport;
    v1Column6: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    cxTabControl1: TcxTabControl;
    v1Column10: TcxGridDBColumn;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    v1Column11: TcxGridDBColumn;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure TBFindClick(Sender: TObject);
    procedure TBRafreshClick(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 OrderNoKeyPress(Sender: TObject; var Key: Char);
    procedure ConNoKeyPress(Sender: TObject; var Key: Char);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
  private
    CanShu1,CanShu2:string;
    DQdate:TDateTime;
    procedure InitGrid();
    procedure InitForm();
    { Private declarations }
  public


    { Public declarations }
  end;

var
  frmPRTOrderPriceList: TfrmPRTOrderPriceList;

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

{$R *.dfm}

procedure TfrmPRTOrderPriceList.FormDestroy(Sender: TObject);
begin
  frmPRTOrderPriceList:=nil;
end;

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

procedure TfrmPRTOrderPriceList.FormCreate(Sender: TObject);
begin
  cxgrid1.Align:=alClient;
  CanShu1:=Trim(DParameters1);
  CanShu2:=Trim(DParameters2);
  //BegDate.DateTime:=SGetServerDateTime(ADOQueryTemp)-7;
  //EndDate.DateTime:=SGetServerDateTime(ADOQueryTemp);
  DQdate:=SGetServerDate(ADOQueryTemp);
end;

procedure TfrmPRTOrderPriceList.TBCloseClick(Sender: TObject);
begin
  Close;
  WriteCxGrid('指示单列表Price',Tv1,'生产指示单管理');
end;

procedure TfrmPRTOrderPriceList.InitGrid();
var
  fsj:String;
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      sql.Clear;
      sql.add('exec P_View_OrderSub :begdate,:enddate,:WSql') ;
      if Trim(CanShu1)<>'高权限'  then
      begin
       fsj:=' and Filler in(select UserName from  SY_User where DPID in'+
                                              '(select DPID from SY_User where UserName='''+Trim(DName)+'''))';
      end else
      begin
        fsj:='';
      end;
      if cxTabControl1.TabIndex=0 then
      begin
        //fsj:=fsj+' and exists(select * from JYOrderCon_Main JCM where JCM.ConNo=A.ConNo )';
        fsj:=fsj+' and isnull(B.PISubId,'''')='''' ';
      end else
      if cxTabControl1.TabIndex=1 then
      begin
        fsj:=fsj+' and isnull(B.PISubId,'''')<>'''' ';
      end;
      Parameters.ParamByName('WSql').Value:=fsj;
      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 TfrmPRTOrderPriceList.InitForm();
begin
  ReadCxGrid('指示单列表Price',Tv1,'生产指示单管理');
  BegDate.DateTime:=SGetServerDate10(ADOQueryTemp)-30;
  EndDate.DateTime:=SGetServerDate10(ADOQueryTemp);
end;

procedure TfrmPRTOrderPriceList.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 TfrmPRTOrderPriceList.TBRafreshClick(Sender: TObject);
begin
  InitGrid();
end;

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

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

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

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

procedure TfrmPRTOrderPriceList.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 TfrmPRTOrderPriceList.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 TfrmPRTOrderPriceList.TBViewClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  try
    frmOrderInPutPrice:=TfrmOrderInPutPrice.Create(Application);
    with frmOrderInPutPrice 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;
  
      ToolButton20.Visible:=False;
      ToolButton21.Visible:=False;
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmOrderInPutPrice.Free;
  end;
end;

procedure TfrmPRTOrderPriceList.OrderNoKeyPress(Sender: TObject;
  var Key: Char);
var
  fsj:String;
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_OrderSub :begdate,:enddate,:WSql') ;
        if Trim(CanShu1)<>'高权限'  then
        begin
         fsj:=' and Filler in(select UserName from  SY_User where DPID in'+
                                                '(select DPID from SY_User where UserName='''+Trim(DName)+'''))';
        end else
        begin
          fsj:='';
        end;
        if cxTabControl1.TabIndex=0 then
        begin
          //fsj:=fsj+' and exists(select * from JYOrderCon_Main JCM where JCM.ConNo=A.ConNo )';
          fsj:=fsj+' and isnull(B.PISubId,'''')='''' ';
        end else
        if cxTabControl1.TabIndex=1 then
        begin
          fsj:=fsj+' and isnull(B.PISubId,'''')<>'''' ';
        end;
        fsj:=fsj+' and OrderNo like '''+'%'+Trim(OrderNo.Text)+'%'+'''';
        Parameters.ParamByName('WSql').Value:=fsj;
        Parameters.ParamByName('begdate').Value:='';
        Parameters.ParamByName('enddate').Value:='';
        Open;
      end;
      SCreateCDS20(ADOQueryMain,Order_Main);
      SInitCDSData20(ADOQueryMain,Order_Main);
    finally
      ADOQueryMain.EnableControls;
    end;
  end;
end;

procedure TfrmPRTOrderPriceList.ConNoKeyPress(Sender: TObject;
  var Key: Char);
var
  fsj:String;
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_OrderSub :begdate,:enddate,:WSql') ;
        if Trim(CanShu1)<>'高权限'  then
        begin
         fsj:=' and Filler in(select UserName from  SY_User where DPID in'+
                                                '(select DPID from SY_User where UserName='''+Trim(DName)+'''))';
        end else
        begin
          fsj:='';
        end;
        if cxTabControl1.TabIndex=0 then
        begin
          //fsj:=fsj+' and exists(select * from JYOrderCon_Main JCM where JCM.ConNo=A.ConNo )';
          fsj:=fsj+' and isnull(B.PISubId,'''')='''' ';
        end else
        if cxTabControl1.TabIndex=1 then
        begin
          fsj:=fsj+' and isnull(B.PISubId,'''')<>'''' ';
        end;
        fsj:=fsj+' and conno like '''+'%'+Trim(conno.Text)+'%'+'''';
        Parameters.ParamByName('WSql').Value:=fsj;
        Parameters.ParamByName('begdate').Value:='';
        Parameters.ParamByName('enddate').Value:='';
        ExecSQL;
        Open;
      end;
      SCreateCDS20(ADOQueryMain,Order_Main);
      SInitCDSData20(ADOQueryMain,Order_Main);
    finally
      ADOQueryMain.EnableControls;
    end;
  end;
end;

procedure TfrmPRTOrderPriceList.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;

procedure TfrmPRTOrderPriceList.ToolButton1Click(Sender: TObject);
var
  ConPrice,ConSubId:String;
begin
  if cxTabControl1.TabIndex<>0 then Exit;
  if Order_Main.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据!','提示',0);
    Exit;
  end;
  ConSubId:='';
  try
    frmContractSelList:=TfrmContractSelList.Create(Application);
    with frmContractSelList do
    begin
      if ShowModal=1 then
      begin
        ConSubId:=Trim(frmContractSelList.Order_Main.fieldbyname('SubId').AsString);
        ConPrice:=Trim(frmContractSelList.Order_Main.fieldbyname('PRTPrice').AsString);
      end;
    end;
  finally
    frmContractSelList.Free;
  end;
  if Trim(ConSubId)<>'' then
  begin
    if Application.MessageBox('确定要执行此操作吗？','提示',32+4)<>IDYES then Exit;
    Order_Main.DisableControls;
    with Order_Main do
    begin
      First;
      while Locate('SSel',True,[]) do
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add(' Update JYOrder_Sub Set PISubId='''+Trim(ConSubId)+'''');
          sql.Add(' where SubId='''+Trim(Order_Main.fieldbyname('SubId').AsString)+'''');
          ExecSQL;
        end;
        Order_Main.Delete;
      end;
    end;
    Order_Main.EnableControls;
  end;
end;

procedure TfrmPRTOrderPriceList.ToolButton2Click(Sender: TObject);
begin
  if cxTabControl1.TabIndex<>1 then Exit;
  if Order_Main.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据!','提示',0);
    Exit;
  end;
  if Application.MessageBox('确定要撤销吗？','提示',32+4)<>IDYES then Exit;
  Order_Main.DisableControls;
  with Order_Main do
  begin
    First;
    while Locate('SSel',True,[]) do
    begin
      with ADOQueryCmd do
      begin
        Close;
        sql.Clear;
        sql.Add(' Update JYOrder_Sub Set PISubId=Null');
        sql.Add(' where SubId='''+Trim(Order_Main.fieldbyname('SubId').AsString)+'''');
        ExecSQL;
      end;
      Order_Main.Delete;
    end;
  end;
  Order_Main.EnableControls;
end;

procedure TfrmPRTOrderPriceList.cxTabControl1Change(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmPRTOrderPriceList.N1Click(Sender: TObject);
begin
  SelOKNo(Order_Main,True);
end;

procedure TfrmPRTOrderPriceList.N2Click(Sender: TObject);
begin
  SelOKNo(Order_Main,False);
end;

end.
