unit U_NBFPList;

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, cxPC, cxCheckBox, Menus;


type
  TfrmNBFPList = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBAdd: TToolButton;
    TBEdit: TToolButton;
    TBDel: TToolButton;
    TBClose: TToolButton;
    cxGridPopupMenu1: TcxGridPopupMenu;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DataSource1: TDataSource;
    TBExport: TToolButton;
    Order_Main: TClientDataSet;
    RM1: TRMGridReport;
    RMDBMain: TRMDBDataSet;
    RMXLSExport1: TRMXLSExport;
    CDS_PRT: TClientDataSet;
    ToolButton3: TToolButton;
    cxGridPopupMenu2: TcxGridPopupMenu;
    Panel1: TPanel;
    Label2: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    Label8: TLabel;
    BCOrderNoHZ: TEdit;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Column6: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1Column12: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    ComboBox2: TComboBox;
    Label3: TLabel;
    Label1: TLabel;
    ToolButton1: TToolButton;
    ToolButton4: TToolButton;
    Label5: TLabel;
    FPNO: TEdit;
    v1Column1: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    ADOQueryPrint: TADOQuery;
    v1Column18: TcxGridDBColumn;
    v1Column13: TcxGridDBColumn;
    v1Column20: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    Label4: TLabel;
    GHDanWei: TEdit;
    v1Column4: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1Column11: TcxGridDBColumn;
    Label6: TLabel;
    BGOrderNo: TEdit;
    v1Column14: TcxGridDBColumn;
    Label7: TLabel;
    Qty: TEdit;
    Label9: TLabel;
    Money: TEdit;
    Label10: TLabel;
    HXQty: TEdit;
    Label11: TLabel;
    HXMoney: TEdit;
    Label12: TLabel;
    DHXQty: TEdit;
    Label13: TLabel;
    DHXMoney: TEdit;
    Button1: TButton;
    v1Column15: TcxGridDBColumn;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    v1Column16: TcxGridDBColumn;
    v1Column17: TcxGridDBColumn;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure TBEditClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure TBAddClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cxPageControl1Change(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure WorkerChange(Sender: TObject);
    procedure v1Column15CustomDrawCell(Sender: TcxCustomGridTableView;
      ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
      var ADone: Boolean);
    procedure v1Column9CustomDrawCell(Sender: TcxCustomGridTableView;
      ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
      var ADone: Boolean);
    procedure ToolButton1Click(Sender: TObject);
    procedure BCOrderNoHZKeyPress(Sender: TObject; var Key: Char);
    procedure BGOrderNoKeyPress(Sender: TObject; var Key: Char);
    procedure v1Column15PropertiesEditValueChanged(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);

  private
    FInt,PFInt:Integer;
    canshu1,canshu2:string;
    FNowDate:TDateTime;
    procedure InitGrid();
    procedure InitForm();
    function  DelData():Boolean;
    procedure InitGridWsql(fsj:string);
    function  SaveData():Boolean;
    procedure HZClear();
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmNBFPList: TfrmNBFPList;

implementation
uses
  U_DataLink,U_RTFun,U_NBFPInPut,U_ModuleNote,U_ZDYHelp,U_NBFPInPutWGLBCOrderNo;

{$R *.dfm}

procedure TfrmNBFPList.FormDestroy(Sender: TObject);
begin
  frmNBFPList:=nil;
end;

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

procedure TfrmNBFPList.TBCloseClick(Sender: TObject);
begin
  Close;
  WriteCxGrid('�ڲ���Ʊ�б�',Tv1,'��Ʊ����');
end;

procedure TfrmNBFPList.InitGrid();
var
  fsj:String;
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      sql.Clear;
      sql.Add('select AA.* from (');
      sql.Add(' select FN.FNID FNID10,FN.Filler Filler10,FN.FillTime FillTime10,FN.BGOrderNo,A.*,DHXMoney=A.Money-isnull(A.HXMoney,0)');
      sql.Add(',DHXQty=A.Qty-isnull(A.HXQty,0)');
      sql.Add(',BCOrderNoHZ=dbo.F_Get_Order_SubStr(A.FNID,''BCOrderNo'')');
      SQL.Add(' from FP_BGOrderNo FN');
      SQL.Add(' left join  FP_GYSNB A on FN.FNID=A.FNID and isnull(A.FMType,'''')=''NB''');
      sql.Add(' ) AA where 1=1 ');

      begin
        fsj:=TA(ComboBox2.Items.Objects[ComboBox2.Items.IndexOf(Trim(ComboBox2.Text))]).S;
        sql.Add(' and AA.'+Trim(fsj)+'>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date))+'''');
        sql.Add(' and AA.'+Trim(fsj)+'<'''+Trim(FormatDateTime('yyyy-MM-dd',EndDate.Date+1))+'''');
      end;
      Open;
    end;
    SCreateCDS20(ADOQueryMain,Order_Main);
    SInitCDSData20(ADOQueryMain,Order_Main);
  finally
    ADOQueryMain.EnableControls;
  end;

end;

procedure TfrmNBFPList.InitForm();
begin
  FNowDate:=SGetServerDate(ADOQueryTemp);
  EndDate.Date:=FNowDate;
  BegDate.Date:=EndDate.Date-7;
  ReadCxGrid('�ڲ���Ʊ�б�',Tv1,'��Ʊ����');
  //InitGrid();
end;

procedure TfrmNBFPList.TBEditClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  
  {if Trim(DName)<>Trim(Order_Main.fieldbyname('Filler').AsString) then
  begin
    Application.MessageBox('���ܲ������˵���Ϣ!','��ʾ',0);
    Exit;
  end;}

  try
    frmNBFPInPutWGLBCOrderNo:=TfrmNBFPInPutWGLBCOrderNo.Create(Application);
    with frmNBFPInPutWGLBCOrderNo do
    begin
      PState:=1;
      FMainId:=Trim(Self.Order_Main.fieldbyname('FNID10').AsString);
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmNBFPInPutWGLBCOrderNo.Free;
  end;
end;

procedure TfrmNBFPList.TBDelClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  if Application.MessageBox('ȷ��Ҫɾ��������','��ʾ',32+4)<>IDYES then Exit;
  if DelData() then
  begin
    Order_Main.Delete;
  end;

end;

function TfrmNBFPList.DelData():Boolean;
begin
  try
    Result:=false;
    ADOQueryCmd.Connection.BeginTrans;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete FP_GYSNB  where FMId='''+Trim(Order_Main.fieldbyname('FMId').AsString)+'''');
      ExecSQL;
    end;
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from FP_GYSNB where FNID='''+Trim(Order_Main.fieldbyname('FNId10').AsString)+'''');
      Open;
    end;
    if ADOQueryTemp.IsEmpty then
    begin
      with ADOQueryCmd do
      begin
        Close;
        sql.Clear;
        sql.Add('delete FP_BGOrderNo  where FNId='''+Trim(Order_Main.fieldbyname('FNId10').AsString)+'''');
        ExecSQL;
      end;
    end;

    ADOQueryCmd.Connection.CommitTrans;
    Result:=True;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Result:=False;
    Application.MessageBox('����ɾ���쳣��','��ʾ',0);
  end;
end;

procedure TfrmNBFPList.TBExportClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  TcxGridToExcel('�ڲ���Ʊ',cxGrid1);
end;

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

procedure TfrmNBFPList.TBAddClick(Sender: TObject);
begin
  try
    frmNBFPInPutWGLBCOrderNo:=TfrmNBFPInPutWGLBCOrderNo.Create(Application);
    with frmNBFPInPutWGLBCOrderNo do
    begin
      PState:=0;
      FMainId:='';
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmNBFPInPutWGLBCOrderNo.Free;
  end;
end;

procedure TfrmNBFPList.FormShow(Sender: TObject);
var
  i:Integer;
begin
  InitForm();
  SInitComBoxByTvColumns(ComboBox2,Tv1,999,True,True);
end;

procedure TfrmNBFPList.cxPageControl1Change(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmNBFPList.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 TfrmNBFPList.FormCreate(Sender: TObject);
begin
  canshu1:=Trim(DParameters1);
  canshu2:=Trim(DParameters2);
end;

procedure TfrmNBFPList.InitGridWsql(fsj:string);
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      sql.Clear;
      sql.Add('select AA.* from (');
      sql.Add(' select FN.FNID FNID10,FN.Filler Filler10,FN.FillTime FillTime10,FN.BGOrderNo,A.*,DHXMoney=A.Money-isnull(A.HXMoney,0)');
      sql.Add(',DHXQty=A.Qty-isnull(A.HXQty,0)');
      sql.Add(',BCOrderNoHZ=dbo.F_Get_Order_SubStr(A.FNID,''BCOrderNo'')');
      SQL.Add(' from FP_BGOrderNo FN');
      SQL.Add(' left join  FP_GYSNB A on FN.FNID=A.FNID and isnull(A.FMType,'''')=''NB''');
      sql.Add(' ) AA');
      sql.Add(' where 1=1 ');
      sql.Add(fsj);
      Open;
    end;
    SCreateCDS20(ADOQueryMain,Order_Main);
    SInitCDSData20(ADOQueryMain,Order_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;
function TfrmNBFPList.SaveData():Boolean;
var
  maxno,maxSubNo:String;
begin
  try
    Result:=False;
    ADOQueryCmd.Connection.BeginTrans;
    //��������
    if Trim(Order_Main.fieldbyname('MRID').AsString)='' then
    begin
      if GetLSNo(ADOQueryCmd,maxno,'MR','Module_Prompt_Result',4,1)=False then
      begin
        ADOQueryCmd.Connection.RollbackTrans;
        Application.MessageBox('ȡ��������ˮ��ʧ��!','��ʾ',0);
        Exit;
      end;
    end else
    begin
      maxno:=Trim(Order_Main.fieldbyname('MRID').AsString);
    end;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      SQL.Add('select * from Module_Prompt_Result where MRId='''+Trim(Order_Main.fieldbyname('MRID').AsString)+'''');
      Open;
    end;
    with ADOQueryCmd do
    begin
      if Trim(Order_Main.fieldbyname('MRID').AsString)='' then
      begin
        Append;
      end
      else begin
        Edit;
      end;
      FieldByName('MPId').Value:=Trim(Order_Main.fieldbyname('MPId').AsString);
      FieldByName('MRId').Value:=Trim(maxno);
      FieldByName('MRStatus').Value:='�Ѵ���';
      FieldByName('MRDate').Value:=SGetServerDateTime(ADOQueryTemp);
      if Trim(Order_Main.fieldbyname('MRId').AsString)='' then
      begin
        FieldByName('Filler').Value:=Trim(DName);
      end else
      begin
        FieldByName('Editer').Value:=Trim(DName);
        FieldByName('EditTime').Value:=SGetServerDateTime(ADOQueryTemp);
      end;
      Post;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    Result:=True;
  except
    Result:=False;
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('����ʧ�ܣ�','��ʾ',0);
  end;
end;
procedure TfrmNBFPList.cxTabControl1Change(Sender: TObject);
begin
  InitGrid();
end;

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

procedure TfrmNBFPList.v1Column15CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  Id,Id10:Integer;
begin
  Id:=TV1.GetColumnByFieldName('YuJinagDate1').Index;//
  Id10:=TV1.GetColumnByFieldName('MoneyKC').Index;
  if Id<0 then Exit;
  //$008000FF �Ⱥ�ɫ    ��ɫ $000D55FF   $00B9EE9F  dz��
  if AViewInfo.GridRecord.Values[Id10]>0 then
  begin
    if AViewInfo.GridRecord.Values[Id]-FNowDate<=0 then
    begin
      ACanvas.Brush.Color:=clYellow;
    end  else
    if AViewInfo.GridRecord.Values[Id]=null then
    begin
     // ACanvas.Brush.Color:=clWhite;
    end;
  end else
  begin
    //ACanvas.Brush.Color:=clWhite;
  end;

end;

procedure TfrmNBFPList.v1Column9CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  Id,Id10:Integer;
begin
  Id:=TV1.GetColumnByFieldName('YuJinagDate2').Index;//
  Id10:=TV1.GetColumnByFieldName('MoneyKC').Index;
  if Id<0 then Exit;
  //$008000FF �Ⱥ�ɫ    ��ɫ $000D55FF   $00B9EE9F  dz��
  if AViewInfo.GridRecord.Values[Id10]>0 then
  begin
    if AViewInfo.GridRecord.Values[Id]-FNowDate<=0 then
    begin
      ACanvas.Brush.Color:=clRed;
    end  else
    if AViewInfo.GridRecord.Values[Id]=null then
    begin
      //ACanvas.Brush.Color:=clWhite;
    end;
  end else
  begin
    //ACanvas.Brush.Color:=clWhite;
  end;

end;

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

procedure TfrmNBFPList.BCOrderNoHZKeyPress(Sender: TObject; var Key: Char);
var
  fsj:String;
begin
  if Key<>#13 then Exit;
  if Length(Trim(BCOrderNoHZ.Text))<3 then Exit;
  fsj:=' and AA.BCOrderNoHZ like '''+'%'+Trim(BCOrderNoHZ.Text)+'%'+'''';
  InitGridWsql(fsj);
end;

procedure TfrmNBFPList.BGOrderNoKeyPress(Sender: TObject; var Key: Char);
var
  fsj:String;
begin
  if Key<>#13 then Exit;
  if Length(Trim(BGOrderNo.Text))<3 then Exit;
  fsj:=' and AA.BGOrderNo like '''+'%'+Trim(BGOrderNo.Text)+'%'+'''';
  InitGridWsql(fsj);
end;
procedure TfrmNBFPList.HZClear();
begin
  Qty.Text:='';
  Money.Text:='';
  HXQty.Text:='';
  HXMoney.Text:='';
  DHXQty.Text:='';
  DHXMoney.Text:='';
end;
procedure TfrmNBFPList.v1Column15PropertiesEditValueChanged(
  Sender: TObject);
var
  mvalue:Boolean;
  FQty,FMoney,FHXQty,FHXMoney,FDHXQty,FDHXMoney:Double;
  FMID:String;
  FXS:Integer;
begin
  if Trim(Qty.Text)='' then
    Qty.Text:='0';
  FQty:=StrToFloat(Qty.Text);
  if Trim(Money.Text)='' then
    Money.Text:='0';
  FMoney:=StrToFloat(Money.Text);
  if Trim(HXQty.Text)='' then
    HXQty.Text:='0';
  FHXQty:=StrToFloat(HXQty.Text);
  if Trim(HXMoney.Text)='' then
    HXMoney.Text:='0';
  FHXMoney:=StrToFloat(HXMoney.Text);
  if Trim(DHXQty.Text)='' then
    DHXQty.Text:='0';
  FDHXQty:=StrToFloat(DHXQty.Text);
  if Trim(DHXMoney.Text)='' then
    DHXMoney.Text:='0';
  FDHXMoney:=StrToFloat(DHXMoney.Text);
  if Order_Main.IsEmpty then Exit;
  FMID:=Trim(Order_Main.fieldbyname('FMID').AsString);
  mvalue:=TcxCheckBox(Sender).EditingValue;
  with Order_Main do
  begin
    Edit;
    FieldByName('SSel').Value:=mvalue;
    Post;
  end;
  if mvalue=True then
  begin
    FXS:=1;
  end else
  begin
    FXS:=-1;
  end;
  if Trim(Order_Main.fieldbyname('Qty').AsString)<>'' then
    FQty:=FQty+Order_Main.fieldbyname('Qty').Value*FXS;
  if Trim(Order_Main.fieldbyname('Money').AsString)<>'' then
    FMoney:=FMoney+Order_Main.fieldbyname('Money').Value*FXS;
  if Trim(Order_Main.fieldbyname('HXQty').AsString)<>'' then
    FHXQty:=FHXQty+Order_Main.fieldbyname('HXQty').Value*FXS;
  if Trim(Order_Main.fieldbyname('HXMoney').AsString)<>'' then
    FHXMoney:=FHXMoney+Order_Main.fieldbyname('HXMoney').Value*FXS;
  if Trim(Order_Main.fieldbyname('DHXQty').AsString)<>'' then
    FDHXQty:=FDHXQty+Order_Main.fieldbyname('DHXQty').Value*FXS;
  if Trim(Order_Main.fieldbyname('DHXMoney').AsString)<>'' then
    FDHXMoney:=FDHXMoney+Order_Main.fieldbyname('DHXMoney').Value*FXS;
  Qty.Text:=FloatToStr(FQty);
  Money.Text:=FloatToStr(FMoney);
  HXQty.Text:=FloatToStr(FHXQty);
  HXMoney.Text:=FloatToStr(FHXMoney);
  DHXQty.Text:=FloatToStr(FDHXQty);
  DHXMoney.Text:=FloatToStr(FDHXMoney);
 // Order_Main.Locate('FMID',FMID,[]);

end;

procedure TfrmNBFPList.Button1Click(Sender: TObject);
var
  mvalue:Boolean;
  FQty,FMoney,FHXQty,FHXMoney,FDHXQty,FDHXMoney:Double;
  FMID:String;
  FXS:Integer;
begin
  HZClear();
  FQty:=0;
  FMoney:=0;
  FHXQty:=0;
  FHXMoney:=0;
  FDHXQty:=0;
  FDHXMoney:=0;
  if Order_Main.IsEmpty then Exit;
  Order_Main.DisableControls;
  with Order_Main do
  begin
    First;
    while not Eof do
    begin
      if Trim(Order_Main.fieldbyname('Qty').AsString)<>'' then
        FQty:=FQty+Order_Main.fieldbyname('Qty').Value;
      if Trim(Order_Main.fieldbyname('Money').AsString)<>'' then
        FMoney:=FMoney+Order_Main.fieldbyname('Money').Value;
      if Trim(Order_Main.fieldbyname('HXQty').AsString)<>'' then
        FHXQty:=FHXQty+Order_Main.fieldbyname('HXQty').Value;
      if Trim(Order_Main.fieldbyname('HXMoney').AsString)<>'' then
        FHXMoney:=FHXMoney+Order_Main.fieldbyname('HXMoney').Value;
      if Trim(Order_Main.fieldbyname('DHXQty').AsString)<>'' then
        FDHXQty:=FDHXQty+Order_Main.fieldbyname('DHXQty').Value;
      if Trim(Order_Main.fieldbyname('DHXMoney').AsString)<>'' then
        FDHXMoney:=FDHXMoney+Order_Main.fieldbyname('DHXMoney').Value;
      next;
    end;
  end;
  Order_Main.EnableControls;

  Qty.Text:=FloatToStr(FQty);
  Money.Text:=FloatToStr(FMoney);
  HXQty.Text:=FloatToStr(FHXQty);
  HXMoney.Text:=FloatToStr(FHXMoney);
  DHXQty.Text:=FloatToStr(FDHXQty);
  DHXMoney.Text:=FloatToStr(FDHXMoney);
 // Order_Main.Locate('FMID',FMID,[]);

end;

procedure TfrmNBFPList.N1Click(Sender: TObject);
begin
  SelOKNo(Order_Main,True);
  Button1.Click;
end;

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

end.