unit U_CKProductBCPKCListSel;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView,
  cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses,
  cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls,
  ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient,
  cxDropDownEdit, MovePanel, cxCheckBox, cxSplitter, cxCalendar, BtnEdit,
  cxContainer, cxTextEdit, cxCurrencyEdit, cxLookAndFeels, cxLookAndFeelPainters,
  cxNavigator, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinBlueprint,
  dxSkinCaramel, dxSkinCoffee, dxSkinDarkRoom, dxSkinDarkSide,
  dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy,
  dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian,
  dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMetropolis,
  dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black,
  dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink,
  dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue,
  dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray,
  dxSkinOffice2013White, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic,
  dxSkinSharp, dxSkinSharpPlus, dxSkinSilver, dxSkinSpringTime, dxSkinStardust,
  dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinsDefaultPainters,
  dxSkinValentine, dxSkinVS2010, dxSkinWhiteprint, dxSkinXmas2008Blue,
  dxSkinscxPCPainter;

type
  TfrmCKProductBCPKCListsel = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBFind: TToolButton;
    TBClose: TToolButton;
    Panel1: TPanel;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DataSource1: TDataSource;
    cxGridPopupMenu1: TcxGridPopupMenu;
    Label3: TLabel;
    Label4: TLabel;
    C_CodeName: TEdit;
    C_Color: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    CDS_Main: TClientDataSet;
    Tv1: TcxGridDBTableView;
    cxGrid2Level1: TcxGridLevel;
    cxGrid2: TcxGrid;
    v2Column1: TcxGridDBColumn;
    v2Column3: TcxGridDBColumn;
    v2Column5: TcxGridDBColumn;
    v2Column6: TcxGridDBColumn;
    v1Column1: TcxGridDBColumn;
    Label5: TLabel;
    conNo: TEdit;
    Label6: TLabel;
    MJID: TEdit;
    v1Column7: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    Label8: TLabel;
    KZ: TEdit;
    Label9: TLabel;
    MF: TEdit;
    Label7: TLabel;
    CPType: TComboBox;
    v1Column3: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    Panel4: TPanel;
    Label11: TLabel;
    Panel10: TPanel;
    Image2: TImage;
    RichEdit1: TRichEdit;
    MovePanel2: TMovePanel;
    ToolButton1: TToolButton;
    v1KCRollNum: TcxGridDBColumn;
    v1gangNO: TcxGridDBColumn;
    v1C_Color: TcxGridDBColumn;
    cxGrid1: TcxGrid;
    Tv2: TcxGridDBTableView;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    cxGridDBColumn5: TcxGridDBColumn;
    cxGridDBColumn6: TcxGridDBColumn;
    cxGridDBColumn7: TcxGridDBColumn;
    cxGridDBColumn8: TcxGridDBColumn;
    cxGridDBColumn9: TcxGridDBColumn;
    cxGridDBColumn10: TcxGridDBColumn;
    cxGridDBColumn11: TcxGridDBColumn;
    cxGridDBColumn12: TcxGridDBColumn;
    cxGridDBColumn13: TcxGridDBColumn;
    cxGridDBColumn14: TcxGridDBColumn;
    cxGridDBColumn15: TcxGridDBColumn;
    cxGridDBColumn16: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    cxSplitter1: TcxSplitter;
    CDS_SubSel: TClientDataSet;
    DSSubSel: TDataSource;
    cxGridPopupMenu2: TcxGridPopupMenu;
    Label10: TLabel;
    KCQtyStr: TEdit;
    Label12: TLabel;
    AOrdDefStr1: TEdit;
    v1KCKW: TcxGridDBColumn;
    Label13: TLabel;
    KCKW: TEdit;
    Panel2: TPanel;
    Panel3: TPanel;
    cxGrid3: TcxGrid;
    Tv3: TcxGridDBTableView;
    cxGridDBColumn1: TcxGridDBColumn;
    v1OrderNo: TcxGridDBColumn;
    v1ConNo: TcxGridDBColumn;
    v1OrdDefStr1: TcxGridDBColumn;
    cxGridDBColumn17: TcxGridDBColumn;
    v1OrdPerson1: TcxGridDBColumn;
    v1JGFactoryName: TcxGridDBColumn;
    v1PRTColor: TcxGridDBColumn;
    v1OrdDate: TcxGridDBColumn;
    v1DeliveryDate: TcxGridDBColumn;
    v1CustomerNoName: TcxGridDBColumn;
    v1MPRTCodeName: TcxGridDBColumn;
    v1MPRTSpec: TcxGridDBColumn;
    v1MPRTCF: TcxGridDBColumn;
    v1MPRTMF: TcxGridDBColumn;
    v1MPRTKZ: TcxGridDBColumn;
    cxGridDBColumn18: TcxGridDBColumn;
    v1PRTRollNum: TcxGridDBColumn;
    v1PRTOrderQty: TcxGridDBColumn;
    cxGridDBColumn19: TcxGridDBColumn;
    cxGridDBColumn20: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    Order_Main: TClientDataSet;
    DataSource2: TDataSource;
    v2RollNum: TcxGridDBColumn;
    v2Qty: TcxGridDBColumn;
    cxGridPopupMenu3: TcxGridPopupMenu;
    v1Ssel: TcxGridDBColumn;
    Button1: TButton;
    v3Column1: TcxGridDBColumn;
    v3Column2: TcxGridDBColumn;
    v3Column3: TcxGridDBColumn;
    v3Column4: TcxGridDBColumn;
    v3Column5: TcxGridDBColumn;
    v3Column6: TcxGridDBColumn;
    v3Column7: TcxGridDBColumn;
    v3Column8: TcxGridDBColumn;
    v3Column9: TcxGridDBColumn;
    v3Column10: TcxGridDBColumn;
    v3gangNum: TcxGridDBColumn;
    Label14: TLabel;
    v2Column2: TcxGridDBColumn;
    Label15: TLabel;
    PHYG: TBtnEditA;
    CDS_Print: TClientDataSet;
    CheckBox1: TCheckBox;
    packNo: TcxCurrencyEdit;
    ToolButton2: TToolButton;
    v1Column5: TcxGridDBColumn;
    v2Column4: TcxGridDBColumn;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure ConNoMChange(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TBFindClick(Sender: TObject);
    procedure C_CodeNameChange(Sender: TObject);
    procedure Panel10MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure Image2Click(Sender: TObject);
    procedure Tv1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
    procedure ToolButton1Click(Sender: TObject);
    procedure Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
    procedure Tv3FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
    procedure Button1Click(Sender: TObject);
    procedure PHYGBtnClick(Sender: TObject);
    procedure Tv1CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
    procedure Tv2CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
    procedure CheckBox1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
  private
    FLeft, FTop: Integer;
    procedure InitGrid();
    procedure InitGridNull();
    procedure DoQuery();
    function SaveData(): Boolean;
    { Private declarations }
  public
    fCodeName: string;
    fColor: string;
    fmainID: string;
    { Public declarations }
  end;

var
  frmCKProductBCPKCListsel: TfrmCKProductBCPKCListsel;

implementation

uses
  U_DataLink, U_Fun, U_UserHelp, U_KCEdit;

{$R *.dfm}

function TfrmCKProductBCPKCListsel.SaveData(): Boolean;
var
  phID: string;
  P_No: string;
  P_ID: integer;
begin
  Result := false;

  if GetLSNo(ADOQueryTemp, P_No, 'PN', 'CK_BanCP_PH', 4, 1) = False then
  begin
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('ȡ�������ʧ�ܣ�', '��ʾ', 0);
    Exit;
  end;
  P_ID := 1;
  ADOQueryCmd.Connection.BeginTrans;

  try
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('update  CK_BanCP_KC SET kcstatus=null ');
      sql.Add('from CK_BanCP_KC  A ');
      sql.Add('inner join  CK_BanCP_PH  B on B.CRID=A.crid and B.mjid=A.mjid ');
      sql.Add('where B.mainID=' + quotedstr(trim(Order_Main.fieldbyname('mainID').AsString)));
      sql.Add('and B.subID=' + quotedstr(trim(Order_Main.fieldbyname('subID').AsString)));
      execsql;
    end;
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('delete from CK_BanCP_PH ');
      sql.Add('where mainID=' + quotedstr(trim(Order_Main.fieldbyname('mainID').AsString)));
      sql.Add('and subID=' + quotedstr(trim(Order_Main.fieldbyname('subID').AsString)));
      execsql;
    end;

    with CDS_SubSel do
    begin
      DisableControls;
      first;
      while not eof do
      begin
        if fieldbyname('qty').AsFloat = 0 then
          continue;
        if GetLSNo(ADOQueryTemp, phID, 'PH', 'CK_BanCP_PH', 4, 1) = False then
        begin
          ADOQueryCmd.Connection.RollbackTrans;
          Application.MessageBox('ȡ�������ʧ�ܣ�', '��ʾ', 0);
          Exit;
        end;
        with ADOQueryCmd do
        begin
          close;
          sql.Clear;
          sql.Add('select * from CK_BanCP_PH ');
          sql.Add('where mainID=' + quotedstr(trim(Order_Main.fieldbyname('mainID').AsString)));
          sql.Add('and subID=' + quotedstr(trim(Order_Main.fieldbyname('subID').AsString)));
          open;
        end;
        ADOQueryCmd.Append;
        ADOQueryCmd.FieldByName('phID').Value := trim(phID);
        ADOQueryCmd.FieldByName('p_No').Value := trim(P_No);
        ADOQueryCmd.FieldByName('p_ID').Value := P_ID;
        ADOQueryCmd.FieldByName('conNo').Value := trim(fieldbyname('conNo').AsString);
        ADOQueryCmd.FieldByName('MainID').Value := trim(Order_Main.fieldbyname('MainID').AsString);
        ADOQueryCmd.FieldByName('SubID').Value := trim(Order_Main.fieldbyname('SubID').AsString);
        ADOQueryCmd.FieldByName('PMainID').Value := trim(fieldbyname('MainID').AsString);
        ADOQueryCmd.FieldByName('PSubID').Value := trim(fieldbyname('SubID').AsString);
        ADOQueryCmd.FieldByName('mjID').Value := trim(fieldbyname('mjID').AsString);
        ADOQueryCmd.FieldByName('CRID').Value := trim(fieldbyname('CRID').AsString);
        ADOQueryCmd.FieldByName('qtyunit').Value := trim(fieldbyname('kcqtyunit').AsString);

        ADOQueryCmd.FieldByName('packNo').Value := trim(fieldbyname('packNo').AsString);
        ADOQueryCmd.FieldByName('qty').Value := fieldbyname('qty').AsFloat;
        ADOQueryCmd.FieldByName('Rollnum').Value := fieldbyname('Rollnum').AsFloat;
        ADOQueryCmd.FieldByName('Filler').Value := trim(DName);
        ADOQueryCmd.FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp);
        ADOQueryCmd.FieldByName('BCGangNo').Value := trim(fieldbyname('AOrdDefStr1').AsString);
        ADOQueryCmd.FieldByName('PHYG').Value := trim(PHYG.Text);
        ADOQueryCmd.Post;

        with ADOQueryCmd do
        begin
          close;
          sql.Clear;
          sql.Add('select * from CK_BanCP_KC ');
          sql.Add('where mjid=' + quotedstr(trim(CDS_SubSel.fieldbyname('mjid').AsString)));
          sql.Add('and CRID=' + quotedstr(trim(CDS_SubSel.fieldbyname('CRID').AsString)));
          open;
          edit;
          fieldbyname('kcstatus').Value := '1';
          post;
        end;
        P_ID := P_ID + 1;
        next;
      end;
      first;
      EnableControls;

      with ADOQueryCmd do
      begin
        close;
        sql.Clear;
        sql.Add('select * from JYOrder_sub ');
        sql.Add('where mainID=' + quotedstr(trim(Order_Main.fieldbyname('mainID').AsString)));
        sql.Add('and subID=' + quotedstr(trim(Order_Main.fieldbyname('subID').AsString)));
        open;
        edit;
        fieldbyname('substatus').Value := '2';
        post;
      end;

      with ADOQueryTemp do
      begin
        Close;                        
        sql.Clear;
        sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
        sql.Add(' ' + quotedstr(trim(DName)));
        sql.Add(',getdate() ');
        sql.Add(',' + quotedstr(trim(self.Caption)));
        sql.Add(',' + quotedstr(trim('�������������޸�')));
        sql.Add(',' + quotedstr(trim('�޸�������ţ�' + trim(fmainID))));
        sql.Add(',' + quotedstr(trim('�ɹ�')));
        sql.Add(')');
        ExecSQL;

      end;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    Result := true;
  except
    ADOQueryCmd.Connection.RollbackTrans;
  end;
end;

procedure TfrmCKProductBCPKCListsel.DoQuery();
begin
//  Order_Main.DisableControls;
  try
    with AdoqueryTemp do
    begin
      close;
      sql.Clear;
      sql.Add('select  A.*,B.*    ');
      sql.Add('from JYOrder_sub A ');
      sql.Add('inner JOIN JYOrder_Main B on B.mainID=A.mainID and isnull(B.status,''0'')>''0'' ');
      sql.Add('where A.mainId=' + quotedstr(trim(fmainID)));
      sql.Add('and isnull(A.substatus,''0'')<''3'' ');
      open;
    end;
    SCreateCDS20(AdoqueryTemp, Order_Main);
    SInitCDSData20(AdoqueryTemp, Order_Main);
  finally
  //  Order_Main.EnableControls;
  end;
end;

procedure TfrmCKProductBCPKCListsel.FormDestroy(Sender: TObject);
begin
  frmCKProductBCPKCListsel := nil;
end;

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

procedure TfrmCKProductBCPKCListsel.FormCreate(Sender: TObject);
begin
  Panel3.Align := alClient;
 // cxGrid1.Height:= Panel3.Height div 2;
  cxGrid2.Align := alClient;
  BegDate.DateTime := SGetServerDateTime(ADOQueryTemp);
  EndDate.DateTime := SGetServerDateTime(ADOQueryTemp);
 // TBRafresh.Click;
end;

procedure TfrmCKProductBCPKCListsel.InitGrid();
begin
  try
  //  ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      sql.Clear;
      SQL.Add('exec P_View_CPKCMX_SEL');
      SQL.Add('@P_Codename=' + quotedstr(trim(fCodeName)));
      SQL.Add(',@P_Color=' + quotedstr(trim(fColor)));
      SQL.Add(',@mainID=' + quotedstr(trim('')));
      SQL.Add(',@subID=' + quotedstr(trim('')));
      SQL.Add(',@Flag=' + quotedstr(trim('0')));
      Open;
    end;
    SCreateCDS20(ADOQueryMain, CDS_Main);
    SInitCDSData20(ADOQueryMain, CDS_Main);

    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      sql.Clear;
      SQL.Add('exec P_View_CPKCMX_SEL');
      SQL.Add('@P_Codename=' + quotedstr(trim(fCodeName)));
      SQL.Add(',@P_Color=' + quotedstr(trim(fColor)));
      SQL.Add(',@mainID=' + quotedstr(trim(Order_Main.fieldbyname('MainID').AsString)));
      SQL.Add(',@subID=' + quotedstr(trim(Order_Main.fieldbyname('subID').AsString)));
      SQL.Add(',@Flag=' + quotedstr(trim('1')));
      Open;
    end;
    SCreateCDS20(ADOQueryMain, CDS_SubSel);
    SInitCDSData20(ADOQueryMain, CDS_SubSel);
  finally
  //  ADOQueryMain.EnableControls;
    TBFind.Click;
  end;
end;

procedure TfrmCKProductBCPKCListsel.InitGridNull();
begin
  try
    ADOQueryTemp.DisableControls;
    with ADOQueryTemp do
    begin
      Filtered := False;
      Close;
      sql.Clear;
      SQL.Add('exec P_View_CPKCMXNull');
      Open;
    end;
    SCreateCDS20(ADOQueryTemp, CDS_SubSel);
    SInitCDSData20(ADOQueryTemp, CDS_SubSel);
  finally
    ADOQueryTemp.EnableControls;
  end;
end;

procedure TfrmCKProductBCPKCListsel.TBRafreshClick(Sender: TObject);
begin
 // BegDate.SetFocus;
  MovePanel2.Visible := True;
  MovePanel2.Refresh;
  DOquery();
  MovePanel2.Visible := False;
end;

procedure TfrmCKProductBCPKCListsel.ConNoMChange(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
  end;
end;

procedure TfrmCKProductBCPKCListsel.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid('������Tv11', Tv1, '��Ʒ�ֿ�');
  WriteCxGrid('������Tv22', Tv2, '��Ʒ�ֿ�');
  WriteCxGrid('������Tv3', Tv3, '��Ʒ�ֿ�');
  Close;
end;

procedure TfrmCKProductBCPKCListsel.FormShow(Sender: TObject);
begin
  ReadCxGrid('������Tv11', Tv1, '��Ʒ�ֿ�');
  ReadCxGrid('������Tv22', Tv2, '��Ʒ�ֿ�');
  ReadCxGrid('������Tv3', Tv3, '��Ʒ�ֿ�');
//  InitGridNull();
//  InitGrid();
  Doquery();
end;

procedure TfrmCKProductBCPKCListsel.TBExportClick(Sender: TObject);
begin
  if ADOQueryMain.IsEmpty then
    exit;
  TcxGridToExcel('����б�', cxGrid2);
end;

procedure TfrmCKProductBCPKCListsel.TBFindClick(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter10(CDS_Main, SGetFilters(Panel1, 1, 2));
    //SCreateCDS20(ADOQueryMain,CDS_Main);
    //SInitCDSData20(ADOQueryMain,CDS_Main);
  end;
end;

procedure TfrmCKProductBCPKCListsel.C_CodeNameChange(Sender: TObject);
begin
  TBFind.Click;
end;

procedure TfrmCKProductBCPKCListsel.Panel10MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  TWinControl(Panel4).Perform(WM_SYSCOMMAND, $F012, 0);
end;

procedure TfrmCKProductBCPKCListsel.Image2Click(Sender: TObject);
begin
  Panel4.Visible := False;
end;

procedure TfrmCKProductBCPKCListsel.Tv1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  FLeft := X;
  FTop := Y;
end;

procedure TfrmCKProductBCPKCListsel.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
var
  i: Integer;
begin
  //if CDS_Sel.Locate('CYID',Trim(CDS_Main.fieldbyname('CYID').AsString),[])=False then
  //begin
{  if CDS_Main.IsEmpty then Exit;
    CDS_SubSel.Append;
    for i:=0 to CDS_SubSel.FieldCount-1 do
    begin
      CDS_SubSel.Fields[i].Value:=CDS_Main.Fields[i].Value;
    end;
    CDS_SubSel.Post;
    CDS_Main.Delete;
  //end;  }
end;

procedure TfrmCKProductBCPKCListsel.ToolButton1Click(Sender: TObject);
var
  phRollNum, phQty: double;
begin
  if CDS_SubSel.IsEmpty then
    exit;
  conNo.SetFocus;
  with CDS_SubSel do
  begin
    DisableControls;
    first;
    while not eof do
    begin
      if (trim(fieldbyname('C_CodeName').AsString) <> trim(Order_Main.FieldByName('PRTCodeName').AsString)) or (uppercase(trim(fieldbyname('C_Color').AsString)) <> uppercase(trim(Order_Main.FieldByName('PRTColor').AsString))) then
      begin
        application.MessageBox('��Ʒ���ƻ�����ɫ��һ�������������', '��ʾ��Ϣ', 0);
        EnableControls;
        exit;
      end;
      next;
    end;
    first;
    EnableControls;
  end;
  phRollNum := 0;
  phQty := 0;
  with CDS_SubSel do
  begin
    DisableControls;
    first;
    while not eof do
    begin
      phRollNum := phRollNum + CDS_SubSel.fieldbyname('RollNum').AsFloat;
      phQty := phQty + CDS_SubSel.fieldbyname('Qty').AsFloat;
      next;
    end;
    first;
    EnableControls;
  end;

  { IF  Order_Main.FieldByName('PRTRollNum').AsFloat<>0 then
  begin
    if (phRollNum<>Order_Main.FieldByName('PRTRollNum').AsFloat) then
    begin
      application.MessageBox('���ƥ������ͬ�����ܱ������ݣ�','��ʾ��Ϣ',MB_ICONERROR);
      exit;
    end;
  //  if Application.MessageBox('������δ�ﵽ���Ҫ����ȷ�����������','��ʾ��Ϣ',32+4)<>IDYES then Exit;
  end;
 IF  Order_Main.FieldByName('PRTOrderQty').AsFloat<>0 then
  begin
    if (format('%.2f',[phQty])<>format('%.2f',[Order_Main.FieldByName('PRTOrderQty').AsFloat])) then
    begin
   //   if Application.MessageBox('�����������ͬ���Ƿ񱣴棿','��ʾ',32+4)<>IDYES then Exit;
      application.MessageBox('�����������ͬ�����ܱ������ݣ�','��ʾ��Ϣ',MB_ICONERROR);
      exit;
    end;
   // if Application.MessageBox('������δ�ﵽ���Ҫ����ȷ�����������','��ʾ��Ϣ',32+4)<>IDYES then Exit;
  end;
         }

  if SaveData() then
  begin
    application.MessageBox('����ɹ�!', '��ʾ��Ϣ');
    Order_Main.Delete;
    CDS_SubSel.EmptyDataSet;
   // TBRafresh.Click;
  end
  else
  begin
    application.MessageBox('���ʧ��!', '��ʾ��Ϣ', 0);
  end;
end;

procedure TfrmCKProductBCPKCListsel.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
var
  i: Integer;
begin
  //if CDS_Sel.Locate('CYID',Trim(CDS_Main.fieldbyname('CYID').AsString),[])=False then
  //begin
  if CDS_SubSel.IsEmpty then
    Exit;
  CDS_Main.Append;
  for i := 0 to CDS_Main.FieldCount - 1 do
  begin
    CDS_Main.Fields[i].Value := CDS_SubSel.Fields[i].Value;
  end;
  CDS_Main.FieldByName('ssel').Value := false;
  CDS_Main.Post;
  CDS_SubSel.Delete;
  //end;
end;

procedure TfrmCKProductBCPKCListsel.Tv3FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
  if Order_Main.IsEmpty then
  begin
    fCodeName := '!##@';
    fColor := '!##@';
  end
  else
  begin
    FCodeName := trim(Order_Main.FieldByName('PRTCodeName').AsString);
    fColor := trim(Order_Main.FieldByName('PRTColor').AsString);
  end;
  initGrid();
end;

procedure TfrmCKProductBCPKCListsel.Button1Click(Sender: TObject);
var
  i: integer;
begin
  if CDS_Main.IsEmpty then
    Exit;
  CDS_SubSel.DisableControls;
  with CDS_Main do
  begin
    DisableControls;
    First;
    while not eof do
    begin
      if (CDS_Main.Locate('ssel', true, [])) and not CDS_SubSel.Locate('CRID', CDS_Main.fieldbyname('CRID').AsInteger, []) then
      begin
        CDS_SubSel.Append;
        for i := 0 to CDS_SubSel.FieldCount - 1 do
        begin
          CDS_SubSel.Fields[i].Value := CDS_Main.Fields[i].Value;
        end;
        CDS_SubSel.FieldByName('packNo').Value := trim(packNO.Text);
        CDS_SubSel.Post;
        CDS_Main.Delete;
      end;
      next;
    end;
    EnableControls;
    First;
  end;
  with CDS_Main do
  begin
    DisableControls;
    First;
    while not eof do
    begin
      if (CDS_Main.Locate('ssel', true, [])) and not CDS_SubSel.Locate('CRID', CDS_Main.fieldbyname('CRID').AsInteger, []) then
      begin
        CDS_SubSel.Append;
        for i := 0 to CDS_SubSel.FieldCount - 1 do
        begin
          CDS_SubSel.Fields[i].Value := CDS_Main.Fields[i].Value;
        end;
        CDS_SubSel.FieldByName('packNo').Value := trim(packNO.Text);
        CDS_SubSel.Post;
        CDS_Main.Delete;
      end;
      next;
    end;
    EnableControls;
    First;
  end;
  CDS_SubSel.EnableControls;
end;

procedure TfrmCKProductBCPKCListsel.PHYGBtnClick(Sender: TObject);
begin
  frmUserHelp := TfrmUserHelp.Create(self);
  with frmUserHelp do
  begin
    if showmodal = 1 then
    begin
      PHYG.Text := trim(ADOQueryHelp.fieldbyname('userName').AsString);
    end;
    free;
  end;
end;

procedure TfrmCKProductBCPKCListsel.Tv1CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
var
  FValue: string;
  FBounds: TRect;
begin
  FBounds := AViewInfo.Bounds;
  if (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
  begin
    ACanvas.FillRect(FBounds);
    ACanvas.DrawComplexFrame(FBounds, clBtnHighlight, clBtnShadow, [bBottom, bLeft, bRight], 1);
    FValue := IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index + 1);
    InflateRect(FBounds, -1, -1);
    ACanvas.Font.Color := clBlack;
    ACanvas.Brush.Style := bsClear;
    ACanvas.DrawText(FValue, FBounds, cxAlignCenter or cxAlignTop);
    ADone := True;
  end;
end;

procedure TfrmCKProductBCPKCListsel.Tv2CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
var
  FValue: string;
  FBounds: TRect;
begin
  FBounds := AViewInfo.Bounds;
  if (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
  begin
    ACanvas.FillRect(FBounds);
    ACanvas.DrawComplexFrame(FBounds, clBtnHighlight, clBtnShadow, [bBottom, bLeft, bRight], 1);
    FValue := IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index + 1);
    InflateRect(FBounds, -1, -1);
    ACanvas.Font.Color := clBlack;
    ACanvas.Brush.Style := bsClear;
    ACanvas.DrawText(FValue, FBounds, cxAlignCenter or cxAlignTop);
    ADone := True;
  end;
end;

procedure TfrmCKProductBCPKCListsel.CheckBox1Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then
    exit;
  with CDS_Main do
  begin
    DisableControls;
    first;
    while not eof do
    begin
      edit;
      fieldbyname('ssel').Value := checkbox1.Checked;
      post;
      next;
    end;
    First;
    EnableControls;
  end;
end;

procedure TfrmCKProductBCPKCListsel.ToolButton2Click(Sender: TObject);
var
  kcQty, num1: double;
  i: integer;
  isEdit: boolean;
begin
  if not CDS_Main.Active then
    exit;
  if CDS_Main.Locate('SSel', True, []) = False then
  begin
    Application.MessageBox('û��ѡ������!', '��ʾ', 0);
    Exit;
  end;
  isEdit := false;

  frmKCEdit := TfrmKCEdit.create(self);
  with frmKCEdit do
  begin
    if showmodal = 1 then
    begin
      num1 := strtofloatdef(cxCurrencyEdit2.Text, 0);
      i := RadioGroup1.ItemIndex;
      isEdit := true;
    end;
    free;
  end;

  if isEdit = false then
    exit;

  try
    ADOQueryCmd.Connection.BeginTrans;
    with CDS_Main do
    begin
      while CDS_Main.Locate('SSel', True, []) do
      begin
        if i = 0 then
          kcQty := CDS_Main.fieldbyname('kcQty').AsFloat + num1;
        if i = 1 then
          kcQty := CDS_Main.fieldbyname('kcQty').AsFloat - num1;
        if i = 2 then
          kcQty := strtofloat(format('%.1f', [CDS_Main.fieldbyname('kcQty').AsFloat * num1]));
        if i = 3 then
          kcQty := strtofloat(format('%.1f', [CDS_Main.fieldbyname('kcQty').AsFloat / num1]));
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add(' Update CK_BanCP_KC Set ZDYFlote1=KCqty ');
          sql.Add(' where CRID=' + Cds_Main.Fieldbyname('CRID').AsString);
          sql.Add(' and ZDYFlote1=0 ');
          sql.Add(' Update CK_BanCP_KC Set kcqty=''' + floattostr(kcQty) + ''',ZDYStr1=''������'' ');
          sql.Add(' ,kcNote=' + quotedstr(trim(CDS_Main.fieldbyname('kcnote').AsString)));
          sql.Add(' ,CPType=' + quotedstr(trim(CDS_Main.fieldbyname('CPType').AsString)));
          sql.Add(' where CRID=' + Cds_Main.Fieldbyname('CRID').AsString);
          sql.Add(' Update CK_BanCP_KC Set kcRollNum=0 ');
          sql.Add(' where CRID=' + Cds_Main.Fieldbyname('CRID').AsString);
          sql.Add(' and kcqty=0 and kcRollNum<>0 ');
          ExecSQL;
        end;
        Edit;
        FieldByName('kcqty').Value := kcQty;
        FieldByName('SSel').Value := False;
        post;
      end;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    initGrid();
    Application.MessageBox('�����ɹ�!', '��ʾ', 0);
    Exit;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('�����쳣!', '��ʾ', 0);
  end;

end;

end.