unit U_CPCKlist;

interface

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

type
  TfrmCPCKlist = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBAdd: TToolButton;
    TBEdit: TToolButton;
    TBDel: TToolButton;
    TBExport: TToolButton;
    TBClose: TToolButton;
    Panel1: TPanel;
    Label1: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1P_CodeName: TcxGridDBColumn;
    v1P_SPEC: TcxGridDBColumn;
    v1P_MF: TcxGridDBColumn;
    v1P_KZ: TcxGridDBColumn;
    v1Qty: TcxGridDBColumn;
    v1QtyUnit: TcxGridDBColumn;
    v1Note: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    v1CRType: TcxGridDBColumn;
    v1CRTime: TcxGridDBColumn;
    v1CRNO: TcxGridDBColumn;
    v1Filler: TcxGridDBColumn;
    v1FillTime: TcxGridDBColumn;
    Label2: TLabel;
    Label3: TLabel;
    OrderNo: TEdit;
    CRType: TComboBox;
    Label5: TLabel;
    ADOQueryCmd: TADOQuery;
    ADOQueryTmp: TADOQuery;
    DataSource1: TDataSource;
    CDS_Main: TClientDataSet;
    cxGridPopupMenu1: TcxGridPopupMenu;
    v1MJID: TcxGridDBColumn;
    v1P_Color: TcxGridDBColumn;
    ADOPrint: TADOQuery;
    RMXLSExport1: TRMXLSExport;
    v1P_Code: TcxGridDBColumn;
    v1inoutNO: TcxGridDBColumn;
    inoutNo: TEdit;
    Label7: TLabel;
    v1custName: TcxGridDBColumn;
    v1TocustName: TcxGridDBColumn;
    v1Column1: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    RMDB_Main: TRMDBDataSet;
    cxStyleRepository1: TcxStyleRepository;
    cxStyle1: TcxStyle;
    cxStyle2: TcxStyle;
    cxStyle_gridRow: TcxStyle;
    cxStyle_gridFoot: TcxStyle;
    cxStyle_gridHead: TcxStyle;
    cxStyle_gridGroupBox: TcxStyle;
    cxStyle_yellow: TcxStyle;
    cxStyle_Red: TcxStyle;
    cxStyle_fontBlack: TcxStyle;
    cxStyle_fontclFuchsia: TcxStyle;
    cxStyle_fontclPurple: TcxStyle;
    cxStyle_fontclGreen: TcxStyle;
    cxStyle_fontclBlue: TcxStyle;
    cxStyle_fontclTeal: TcxStyle;
    cxStyle_fontclOlive: TcxStyle;
    Label8: TLabel;
    ToFactoryName: TEdit;
    ADOQueryMain: TADOQuery;
    v1Column18: TcxGridDBColumn;
    RM1: TRMGridReport;
    v1Column5: TcxGridDBColumn;
    P_CodeName: TEdit;
    P_Color: TEdit;
    Label10: TLabel;
    Label11: TLabel;
    P_Code: TEdit;
    Label14: TLabel;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    Panel2: TPanel;
    cxGrid2: TcxGrid;
    TvMX: TcxGridDBTableView;
    cxGridDBColumn8: TcxGridDBColumn;
    cxGridLevel2: TcxGridLevel;
    CDS_MX: TClientDataSet;
    DS_MX: TDataSource;
    ToolButton3: TToolButton;
    ComboBox1: TComboBox;
    vMXColumn1: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    ToolButton4: TToolButton;
    v1Column4: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    Label4: TLabel;
    RKNO: TEdit;
    Label6: TLabel;
    ganghao: TEdit;
    ToolButton5: TToolButton;
    N3: TMenuItem;
    cxTabControl1: TcxTabControl;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure TBAddClick(Sender: TObject);
    procedure OrderNoChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure TBEditClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure v1Column6CompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
    procedure cxGridDBColumn8PropertiesEditValueChanged(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure vMXColumn1PropertiesEditValueChanged(Sender: TObject);
    procedure TvMXCustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
    procedure ToolButton4Click(Sender: TObject);
    procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
    procedure ToolButton5Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
  private
    procedure InitGrid();
    procedure InitMXGrid(MCRNO: string);
    function YSData(ADO: TADOQuery): Boolean;
    function YSData_Other(ADO: TADOQuery; fYFName: string; fmoney: double): Boolean;
    procedure SetStatus();
    { Private declarations }
  public
    canshu1, canshu2: string;
    { Public declarations }
  end;

var
  frmCPCKlist: TfrmCPCKlist;

implementation

uses
  U_DataLink, U_Fun10, U_ZDYHelp, U_CPCk, U_CPTQCk, U_CPCKMXLR;
{$R *.dfm}

procedure TfrmCPCKlist.InitMXGrid(MCRNO: string);
begin
  with ADOQueryTmp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from CK_ML_CRMX where CRNO=' + quotedstr(Trim(MCRNO)));
    sql.Add(' order by MXID');
    Open;
  end;
  SCreateCDS20(ADOQueryTmp, CDS_MX);
  SInitCDSData20(ADOQueryTmp, CDS_MX);
end;

procedure TfrmCPCKlist.SetStatus();
begin
  TBEdit.Visible := False;
  TBDel.Visible := False;

  if Trim(canshu1) = '高权限' then
  begin
    TBEdit.Visible := true;
    TBDel.Visible := true;
  end
  else
  begin

  end;
end;

function TfrmCPCKlist.YSData(ADO: TADOQuery): Boolean;
var
  CRID, YFID, Price, PriceUnit, OrderUnit, FComTaiTou, cust: string;
begin
  Result := False;
  with ADOQueryTmp do
  begin
    Close;
    SQL.Clear;
    sql.Add('select * from YF_Money_KC where FactoryName=''' + Trim(ADO.fieldbyname('custName').asstring) + ''' and YFDefFlag1=0 ');
    Open;
  end;

  if not ADOQueryTmp.IsEmpty then
  begin
    CRID := ADOQueryTmp.fieldbyname('CRID').AsString;
  end
  else
  begin
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('Update YF_Money_CRID set CRID=CRID+1');
      sql.Add('select * from YF_Money_CRID ');
      Open;
    end;
    CRID := ADOQueryCmd.fieldbyname('CRID').AsString;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('select * from YF_Money_KC where 1<>1');
      Open;
    end;
    with ADOQueryCmd do
    begin
      Append;
      FieldByName('CRID').Value := StrToInt(CRID);
      FieldByName('FactoryName').Value := Trim(ADO.fieldbyname('custName').asstring);
      FieldByName('ZdyStr1').Value := '应收收';
      Post;
    end;
  end;

  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('delete  from YF_Money_CR ');
    sql.Add(' where MainID=''' + Trim(ADO.fieldbyname('CRNO').AsString) + '''');
    sql.Add(' and subID=''' + Trim(ADO.fieldbyname('CRID').AsString) + '''');
    sql.Add(' and YFName=''产品销售'' ');
    execsql;
  end;

  with ADOQueryTmp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from YF_Money_CR ');
    sql.Add(' where MainID=''' + Trim(ADO.fieldbyname('CRNO').AsString) + '''');
    sql.Add(' and subID=''' + Trim(ADO.fieldbyname('CRID').AsString) + '''');
    sql.Add(' and YFName=''产品销售'' ');
    Open;
  end;

  if ADOQueryTmp.IsEmpty then
  begin
    if GetLSNo(ADOQueryCmd, YFID, 'CS', 'YF_Money_CR', 4, 1) = False then
    begin
      Application.MessageBox('取应收最大号失败!', '提示', 0);
      Exit;
    end;

    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from YF_Money_CR where 1<>1');
      Open;
    end;

    with ADOQueryCmd do
    begin
      Append;
      FieldByName('YFID').Value := Trim(YFID);
      FieldByName('YFTypeId').Value := Trim(ADO.fieldbyname('CRNO').AsString);
      FieldByName('CRID').Value := StrToInt(CRID);
      FieldByName('Filler').Value := Trim(DName);
      FieldByName('CRType').Value := '应收款登记';
      FieldByName('CRFlag').Value := '应收收';
      FieldByName('QtyFlag').Value := 1;
      FieldByName('FactoryName').Value := Trim(ADO.fieldbyname('custName').asstring);
      FieldByName('CRTime').Value := Trim(FormatDateTime('yyyy-MM-dd', ADO.fieldbyname('CRTime').AsDateTime));
      FieldByName('YFType').Value := '自动生成';
      FieldByName('ps').Value := ADO.fieldbyname('RollNum').AsFloat;
      FieldByName('Qty').Value := ADO.fieldbyname('Qty').AsFloat;
      FieldByName('Price').Value := ADO.fieldbyname('Price').AsFloat;
      FieldByName('Money').Value := ADO.fieldbyname('Money').AsFloat;
      FieldByName('BBMoney').Value := ADO.fieldbyname('Money').AsFloat;
      FieldByName('HuiLv').Value := 1;
      FieldByName('BZType').Value := '人民币';
      FieldByName('QtyUnit').Value := Trim(ADO.fieldbyname('QtyUnit').AsString);
      FieldByName('ComTaiTou').Value := Trim(cust);
      FieldByName('YFName').Value := '产品销售';
      FieldByName('MainId').Value := Trim(ADO.fieldbyname('CRNO').AsString);
      FieldByName('subID').Value := Trim(ADO.fieldbyname('CRID').AsString);
      FieldByName('status').Value := '0';
      Post;
    end;
  end
  else
  begin
    YFID := Trim(ADOQueryTmp.fieldbyname('YFID').AsString);
  end;

  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('Update YF_Money_KC Set KCMoney=(select isnull(Sum(Money*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)');
    sql.Add(',KCBBMoney=(select isnull(Sum(BBMoney*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)');
    sql.Add(' where CRID=' + CRID);
    ExecSQL;
  end;

  Result := True;
end;

function TfrmCPCKlist.YSData_Other(ADO: TADOQuery; fYFName: string; fmoney: double): Boolean;
var
  CRID, YFID, Price, PriceUnit, OrderUnit, FComTaiTou, cust: string;
begin
  Result := False;
  with ADOQueryTmp do
  begin
    Close;
    SQL.Clear;
    sql.Add('select * from YF_Money_KC where FactoryName=''' + Trim(ADO.fieldbyname('custName').asstring) + ''' and YFDefFlag1=0 ');
    Open;
  end;

  if not ADOQueryTmp.IsEmpty then
  begin
    CRID := ADOQueryTmp.fieldbyname('CRID').AsString;
  end
  else
  begin
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('Update YF_Money_CRID set CRID=CRID+1');
      sql.Add('select * from YF_Money_CRID ');
      Open;
    end;
    CRID := ADOQueryCmd.fieldbyname('CRID').AsString;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('select * from YF_Money_KC where 1<>1');
      Open;
    end;
    with ADOQueryCmd do
    begin
      Append;
      FieldByName('CRID').Value := StrToInt(CRID);
      FieldByName('FactoryName').Value := Trim(ADO.fieldbyname('custName').asstring);
      FieldByName('ZdyStr1').Value := '应收收';
      Post;
    end;
  end;

  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('delete  from YF_Money_CR ');
    sql.Add(' where MainID=''' + Trim(ADO.fieldbyname('CRNO').AsString) + '''');
    sql.Add(' and subID=''' + Trim(ADO.fieldbyname('CRID').AsString) + '''');
    sql.Add(' and YFName=''' + trim(fYFName) + ''' ');
    execsql;
  end;

  with ADOQueryTmp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from YF_Money_CR ');
    sql.Add(' where MainID=''' + Trim(ADO.fieldbyname('CRNO').AsString) + '''');
    sql.Add(' and subID=''' + Trim(ADO.fieldbyname('CRID').AsString) + '''');
    sql.Add(' and YFName=''' + trim(fYFName) + ''' ');
    Open;
  end;

  if ADOQueryTmp.IsEmpty then
  begin
    if GetLSNo(ADOQueryCmd, YFID, 'CS', 'YF_Money_CR', 4, 1) = False then
    begin
      Application.MessageBox('取应收最大号失败!', '提示', 0);
      Exit;
    end;

    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from YF_Money_CR where 1<>1');
      Open;
    end;

    with ADOQueryCmd do
    begin
      Append;
      FieldByName('YFID').Value := Trim(YFID);
      FieldByName('YFTypeId').Value := Trim(ADO.fieldbyname('CRNO').AsString);
      FieldByName('CRID').Value := StrToInt(CRID);
      FieldByName('Filler').Value := Trim(DName);
      FieldByName('CRType').Value := '应收款登记';
      FieldByName('CRFlag').Value := '应收收';
      FieldByName('QtyFlag').Value := 1;
      FieldByName('FactoryName').Value := Trim(ADO.fieldbyname('custName').asstring);
      FieldByName('CRTime').Value := Trim(FormatDateTime('yyyy-MM-dd', ADO.fieldbyname('CRTIme').AsDateTime));
      FieldByName('YFType').Value := '自动生成';
      FieldByName('Qty').Value := 1;
      FieldByName('Price').Value := fmoney;
      FieldByName('Money').Value := fmoney;
      FieldByName('BBMoney').Value := fmoney;
      FieldByName('HuiLv').Value := 1;
      FieldByName('BZType').Value := '人民币';
      FieldByName('QtyUnit').Value := '个';
      FieldByName('ComTaiTou').Value := Trim(cust);
      FieldByName('YFName').Value := fYFName;
      FieldByName('MainId').Value := Trim(ADO.fieldbyname('CRNO').AsString);
      FieldByName('subID').Value := Trim(ADO.fieldbyname('CRID').AsString);
      FieldByName('status').Value := '0';
      Post;
    end;
  end
  else
  begin
    YFID := Trim(ADOQueryTmp.fieldbyname('YFID').AsString);
  end;

  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('Update YF_Money_KC Set KCMoney=(select isnull(Sum(Money*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)');
    sql.Add(',KCBBMoney=(select isnull(Sum(BBMoney*QtyFlag),0) from YF_Money_CR A where A.CRID=YF_Money_KC.CRID)');
    sql.Add(' where CRID=' + CRID);
    ExecSQL;
  end;

  Result := True;
end;

procedure TfrmCPCKlist.InitGrid();
begin
  try
    with ADOQueryMain do
    begin
      close;
      sql.Clear;
      sql.Add(' select A.* ');
      sql.Add(' ,RKNO=(select X.INoutNo from CK_ML_CR X where X.MJID=A.MJID and CRFlag=''入库'') ');
      sql.Add(' ,RKQty=(select Qty from CK_ML_CR X where X.MJID=A.MJID and X.CRFLAG=''入库'') ');
      SQL.Add(' from CK_ML_CR A ');
      sql.Add(' where CRTime>=''' + formatdateTime('yyyy-MM-dd', begdate.Date) + ''' ');
      sql.Add(' and CRTime<''' + formatdateTime('yyyy-MM-dd', enddate.Date + 1) + ''' ');
      sql.Add(' and CKName=''成品'' and CRFlag=''出库'' and A.valid=''Y'' ');
      if cxTabControl1.TabIndex <> 2 then
      begin
        if cxTabControl1.TabIndex = 0 then
          SQL.Add(' and not exists(select YFPZNO from YF_Money_CR_Sub X where X.YFPZNO=A.CRNO ) ')
        else
          SQL.Add(' and  exists(select YFPZNO from YF_Money_CR_Sub X where X.YFPZNO=A.CRNO )');
      end;
      open;
    end;
    SCreateCDS20(ADOQueryMain, CDS_Main);
    SInitCDSData20(ADOQueryMain, CDS_Main);
  finally
  end;
end;

procedure TfrmCPCKlist.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := cafree;
end;

procedure TfrmCPCKlist.FormDestroy(Sender: TObject);
begin
  frmCPCKlist := nil;
end;

procedure TfrmCPCKlist.TBAddClick(Sender: TObject);
begin
  frmCPCk := TfrmCPCk.create(self);
  with frmCPCk do
  begin
    fkeyNo := '';
    fType := 0;
    if showmodal = 1 then
    begin
      TBRafresh.Click;
      self.CDS_Main.Locate('crNo', trim(fkeyNo), []);
    end;
    free;
  end;
end;

procedure TfrmCPCKlist.OrderNoChange(Sender: TObject);
begin
  if ADOQuerymain.Active = False then
    Exit;
  SDofilter(ADOQuerymain, SGetFilters(Panel1, 1, 2));
  SCreateCDS20(ADOQuerymain, CDS_Main);
  SInitCDSData20(ADOQuerymain, CDS_Main);
end;

procedure TfrmCPCKlist.FormShow(Sender: TObject);
begin
  readCxGrid(self.Caption, Tv1, '面料仓库');
  SetStatus();
  InitGrid();
end;

procedure TfrmCPCKlist.FormCreate(Sender: TObject);
begin
  EndDate.Date := SGetServerDate10(ADOQueryTmp);
  BegDate.Date := EndDate.Date - 30;
  cxGrid1.Align := alclient;
  canshu1 := trim(DParameters1);
end;

procedure TfrmCPCKlist.TBCloseClick(Sender: TObject);
begin
  writeCxGrid(self.Caption, Tv1, '面料仓库');
  close;
end;

procedure TfrmCPCKlist.TBEditClick(Sender: TObject);
begin
  if cds_main.IsEmpty then
    exit;
  if cds_main.Locate('ssel', true, []) = false then
  begin
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;
  if (cds_main.fieldbyname('Filler').AsString <> trim(DName)) and (trim(canshu2) <> '高权限') then
  begin
    application.MessageBox('操作员不正确，不能修改！', '提示信息', MB_ICONERROR);
    exit;
  end;
  if Trim(cds_main.fieldbyname('ISRCCK').AsString) = '染厂发货' then
  begin
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('update CK_ML_CR set ISXG=1  where CRNO=' + quotedstr('R' + Trim(CDS_Main.FieldByName('MJID').AsString)));
      ExecSQL;
    end;
    frmCPTQCk := TfrmCPTQCk.create(self);
    with frmCPTQCk do
    begin
      fkeyNo := self.cds_main.fieldbyname('CRNO').AsString;
      fType := 1;
      InoutNo.Enabled := false;
      if showmodal = 1 then
      begin
        TBRafresh.Click;
        self.CDS_Main.Locate('CRNO', trim(fkeyNo), []);
      end;
      free;
    end;
  end
  else
  begin
    frmCPCk := TfrmCPCk.create(self);
    with frmCPCk do
    begin
      fkeyNo := self.cds_main.fieldbyname('CRNO').AsString;
      fType := 1;
      InoutNo.Enabled := false;
      if showmodal = 1 then
      begin
        TBRafresh.Click;
        self.CDS_Main.Locate('CRNO', trim(fkeyNo), []);
      end;
      free;
    end;
  end;

end;

procedure TfrmCPCKlist.TBDelClick(Sender: TObject);
var
  YFID, CRID, note: string;
begin
  if CDS_Main.IsEmpty then
    Exit;
  if CDS_Main.Locate('ssel', true, []) = false then
  begin
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;
  if Trim(CDS_Main.fieldbyname('Filler').AsString) <> Trim(DName) then
  begin
    Application.MessageBox('不能操作他人数据!', '提示', 0);
    Exit;
  end;
  if Application.MessageBox('确定要删除数据吗？', '提示', 32 + 4) <> IDYES then
    Exit;
  try
    if Trim(CDS_Main.FieldByName('CRNO').AsString) <> '' then
    begin
      ADOQueryCmd.Connection.BeginTrans;
      with ADOQueryCmd do
      begin
        Close;
        SQL.Clear;
        if Trim(CDS_Main.FieldByName('ISRCCK').AsString) = '染厂发货' then
        begin
          sql.Add('update CK_ML_CR set Valid=''N''  where MJID=' + quotedstr(Trim(CDS_Main.FieldByName('MJID').AsString)));
        end
        else
        begin
          sql.Add('update CK_ML_CR set Valid=''N''  where CRNO=' + quotedstr(Trim(CDS_Main.FieldByName('CRNO').AsString)));
        end;
        ExecSQL;
      end;
      with ADOQueryCmd do
      begin
        Close;
        SQL.Clear;
        SQL.Add('exec P_Up_MLKc ' + quotedstr(Trim(CDS_Main.FieldByName('MJID').AsString)));
        Open;
      end;
      if Trim(ADOQueryCmd.FieldByName('Msg').AsString) = '操作失败' then
      begin
        CDS_Main.EnableControls;
        ADOQueryCmd.Connection.RollbackTrans;
        Application.MessageBox('出库数量超出库存数量!', '提示', 0);
        Exit;
      end;
      ADOQueryCmd.Connection.CommitTrans;
      CDS_Main.Delete;
    end;
  except
    Application.MessageBox('数据删除失败！', '提示信息', 0);
  end;
end;

procedure TfrmCPCKlist.TBRafreshClick(Sender: TObject);
begin
  initGrid();
end;

procedure TfrmCPCKlist.TBExportClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then
    Exit;
  TcxGridToExcel(self.Caption, cxgrid1);
end;

procedure TfrmCPCKlist.v1Column6CompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean);
var
  colIdx0, colIdx1: integer;
begin
  colIdx0 := tv1.GetColumnByFieldName('CRNO').Index;
  if (ARow1.Values[colIdx0] = ARow2.Values[colIdx0]) then
    AAreEqual := True
  else
    AAreEqual := False;

end;

procedure TfrmCPCKlist.N1Click(Sender: TObject);
begin
  SelOKNo(CDS_Main, True);
end;

procedure TfrmCPCKlist.N2Click(Sender: TObject);
begin
  SelOKNo(CDS_Main, False);
end;

procedure TfrmCPCKlist.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
  InitMXGrid(Trim(CDS_Main.fieldbyname('CRNO').AsString));
end;

procedure TfrmCPCKlist.cxGridDBColumn8PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin

  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(TvMX.Controller.FocusedColumn.DataBinding.FilterFieldName);
  with CDS_MX do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;
  end;

  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update CK_ML_CRMX set ' + FFieldName + ' = ' + mvalue);
    sql.Add('  where MXID=' + quotedstr(Trim(CDS_MX.FieldByName('MXID').AsString)));
    ExecSQL;
  end;
  TvMX.Controller.EditingController.ShowEdit();
end;

procedure TfrmCPCKlist.ToolButton3Click(Sender: TObject);
var
  fPrintFile: string;
begin
  if CDS_Main.IsEmpty then
    EXIT;
  if CDS_Main.fieldbyname('ssel').value <> true then
  begin
    Application.MessageBox('没有选择数据或勾选数据不准确!', '提示', 0);
    Exit;
  end;
  if ((trim(ComboBox1.Text) = '普通码单') or (trim(ComboBox1.Text) = '单价码单')) then
  begin
    with ADOPrint do
    begin
      Close;
      sql.Clear;
      sql.add('exec P_Print_CPCKMD1 ' + quotedstr(Trim(CDS_Main.fieldbyname('inoutNO').AsString)));
      Open;
    end;

  end;

  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + Trim(ComboBox1.Text) + '.rmf';
  if FileExists(fPrintFile) then
  begin
//    RMVariables['KHName']:=Trim(CDS_Main.fieldbyname('CustomerNoName').AsString);

    RM1.LoadFromFile(fPrintFile);
    RM1.ShowReport;

    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('update CK_ML_CR set DYCS=DYCS+1  where CRNO=' + quotedstr(Trim(CDS_Main.FieldByName('CRNO').AsString)));
      ExecSQL;
    end;
    with CDS_Main do
    begin
      Edit;
      FieldByName('DYCS').Value := CDS_Main.fieldbyname('DYCS').AsInteger + 1;
      Post;
    end;
  end
  else
  begin
    Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0);
  end;
end;

procedure TfrmCPCKlist.vMXColumn1PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin

  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(TvMX.Controller.FocusedColumn.DataBinding.FilterFieldName);
  with CDS_MX do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;
  end;

  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update CK_ML_CRMX set ' + FFieldName + ' = ' + QuotedStr(Trim(mvalue)));
    sql.Add('  where MXID=' + quotedstr(Trim(CDS_MX.FieldByName('MXID').AsString)));
    ExecSQL;
  end;
  TvMX.Controller.EditingController.ShowEdit();
end;

procedure TfrmCPCKlist.TvMXCustomDrawIndicatorCell(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);    //Platform   specific.   May   not   work   on   Linux.
    ACanvas.Font.Color := clBlack;
    ACanvas.Brush.Style := bsClear;
    ACanvas.DrawText(FValue, FBounds, cxAlignCenter or cxAlignTop);
    ADone := True;
  end;
end;

procedure TfrmCPCKlist.ToolButton4Click(Sender: TObject);
begin

  frmCPTQCk := TfrmCPTQCk.create(self);
  with frmCPTQCk do
  begin
    fkeyNo := '';
    fType := 0;
    if showmodal = 1 then
    begin
      TBRafresh.Click;
      self.CDS_Main.Locate('crNo', trim(fkeyNo), []);
    end;
    free;
  end;
end;

procedure TfrmCPCKlist.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  if AViewInfo.GridRecord.Values[tv1.GetColumnByFieldName('ISRCCK').index] = '染厂发货' then
  begin
    if AViewInfo.GridRecord.Values[tv1.GetColumnByFieldName('RKQty').index] <= 0 then
    begin
      ACanvas.Brush.Color := $00FFFF;
    end
    else
    begin
      ACanvas.Font.Color := $0000FF;
    end;
  end;
end;

procedure TfrmCPCKlist.ToolButton5Click(Sender: TObject);
begin
  if CDS_Main.fieldbyname('ssel').value <> true then
  begin
    Application.MessageBox('没有选择数据或勾选数据不准确!', '提示', 0);
    Exit;
  end;
  frmCPCKMXLR := TfrmCPCKMXLR.create(self);
  with frmCPCKMXLR do
  begin
    fkeyNo := self.cds_main.fieldbyname('CRNO').AsString;
    FMXGangHao := self.cds_main.fieldbyname('GangHao').AsString;
    fType := 0;
    if showmodal = 1 then
    begin

      self.InitGrid();
      self.CDS_Main.Locate('CRNO', fkeyNo, [])
    end;
    free;
  end;
end;

procedure TfrmCPCKlist.N3Click(Sender: TObject);
begin
  Clipboard.SetTextBuf(PChar(Trim(CDS_Main.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
end;

procedure TfrmCPCKlist.cxTabControl1Change(Sender: TObject);
begin
  initGrid();
end;

end.

