unit U_BpkcMXlist; 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, cxCheckBox, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, cxSplitter, cxCalendar; type TfrmBpkcMXList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBExport: TToolButton; TBPrint: TToolButton; TBClose: TToolButton; Panel1: TPanel; Label1: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; Label2: TLabel; Label3: TLabel; P_Code: TEdit; CRType: TComboBox; Label5: TLabel; ADOQueryCmd: TADOQuery; ADOQueryTmp: TADOQuery; DataSource1: TDataSource; CDS_Main: TClientDataSet; cxGridPopupMenu1: TcxGridPopupMenu; CheckBox1: TCheckBox; ckName: TComboBox; Label6: TLabel; Label8: TLabel; P_Color: TEdit; Label11: TLabel; cxGrid2: TcxGrid; TV2: TcxGridDBTableView; v1INoutNo: TcxGridDBColumn; v1DefStr6: TcxGridDBColumn; v1CRTime: TcxGridDBColumn; v1CRType: TcxGridDBColumn; cxGridDBColumn1: TcxGridDBColumn; v1ywy: TcxGridDBColumn; cxGridDBColumn2: TcxGridDBColumn; v1CPType: TcxGridDBColumn; v1P_Color: TcxGridDBColumn; cxGridDBColumn6: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; cxGridDBColumn8: TcxGridDBColumn; cxGridDBColumn9: TcxGridDBColumn; cxGridDBColumn10: TcxGridDBColumn; v1Note: TcxGridDBColumn; v1Filler: TcxGridDBColumn; v1FillTime: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ADOQuery1: TADOQuery; DataSource2: TDataSource; CDS_SUB: TClientDataSet; TV2Column1: TcxGridDBColumn; TV2Column2: TcxGridDBColumn; Panel5: TPanel; Button5: TButton; Button6: TButton; Label7: TLabel; Edit2: TEdit; ywy1: TLabel; ywy: TEdit; TV2Column3: TcxGridDBColumn; Label4: TLabel; kuwei: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure P_CodeChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBPrintClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TOkClick(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure CheckBox2Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure ToolButton2Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure v1P_ColorCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); private procedure InitGrid(); procedure Initsub(); procedure SetComboBox(); { Private declarations } public fType: integer; fCKName: string; canshu2: string; { Public declarations } end; var frmBpkcMXList: TfrmBpkcMXList; implementation uses U_DataLink, U_Fun10, U_ZDYHelp, U_BpRk; {$R *.dfm} procedure TfrmBpkcMXList.SetComboBox(); begin ckName.Items.Clear; with adoQueryTmp do begin close; sql.Clear; sql.Add('select * from KH_ZDY where Type=''YPCK'' '); if trim(fCKName) <> '' then sql.Add('and zdyName=' + quotedstr(trim(fCKName))); open; while not eof do begin ckName.Items.Add(trim(fieldbyname('zdyName').AsString)); next; end; end; if ckName.Items.Count > 0 then ckName.ItemIndex := 0; CRType.Items.Clear; CRType.Items.Add(''); with adoQueryTmp do begin close; sql.Clear; sql.Add('select * from KH_ZDY where Type=''YPRKTYPE'''); if trim(fCKName) <> '' then sql.Add('and note=' + quotedstr(trim(fCKName))); open; while not eof do begin CRType.Items.Add(trim(fieldbyname('zdyName').AsString)); next; end; end; if CRType.Items.Count > 0 then CRType.ItemIndex := 0; end; procedure TfrmBpkcMXList.InitGrid(); begin Initsub(); end; procedure TfrmBpkcMXList.Initsub(); begin try with ADOQueryTmp do begin close; sql.Clear; SQL.Add('EXEC P_View_YBMXKC'); // sql.Add('select *,QTY1=(CASE WHEN CRFLAG=''入库'' then qty else -qty end) from yp_inout where valid=''Y'' '); // SQL.Add('ORDER BY FROMOrderno,frommainid,fromsubid,factoryname,P_Code,P_spec,P_cf,P_Color,QtyUnit,kuwei,P_SMF,P_Skz,CRTIME DESC'); // ShowMessage(sql.Text); open; end; SCreateCDS20(ADOQueryTmp, CDS_SUB); SInitCDSData20(ADOQueryTmp, CDS_SUB); finally end; end; procedure TfrmBpkcMXList.FormClose(Sender: TObject; var Action: TCloseAction); begin writeCxGrid(self.Caption, Tv2, '成品仓库'); if fType = 10 then Action := cahide else Action := cafree; end; procedure TfrmBpkcMXList.FormDestroy(Sender: TObject); begin frmBpkcmxlist := nil; end; procedure TfrmBpkcMXList.P_CodeChange(Sender: TObject); begin if ADOQueryTmp.Active = False then Exit; SDofilter(ADOQueryTmp, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryTmp, CDS_SUB); SInitCDSData20(ADOQueryTmp, CDS_SUB); end; procedure TfrmBpkcMXList.FormShow(Sender: TObject); var fsj: string; begin readCxGrid(self.Caption, Tv2, '成品仓库'); // fsj := 'select DISTINCT CRTYPE as name from YP_INOUT where CRFLAG=''入库'' and valid=''Y'' '; // SInitComBoxBySql(ADOQueryCmd, RKTYPE, False, fsj); // if fType = 10 then // begin // TOk.Visible := true; // v1Ssel.Visible := true; // end; // if canshu2 = '业务员' then // begin // v1factoryName.Visible := false; // v1factoryName.Hidden := true; // end // else // begin // v1factoryName.Visible := true; // v1factoryName.Hidden := false; // end; SetComboBox(); InitGrid(); end; procedure TfrmBpkcMXList.FormCreate(Sender: TObject); begin BegDate.Date := DServerDate - 7; EndDate.Date := DServerDate; // cxGrid1.Align := alclient; end; procedure TfrmBpkcMXList.TBCloseClick(Sender: TObject); begin close; end; procedure TfrmBpkcMXList.TBRafreshClick(Sender: TObject); begin initGrid(); end; procedure TfrmBpkcMXList.TBPrintClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid2); end; procedure TfrmBpkcMXList.TBExportClick(Sender: TObject); begin if CDS_SUB.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid2); end; procedure TfrmBpkcMXList.TOkClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; ModalResult := 1; end; procedure TfrmBpkcMXList.CheckBox1Click(Sender: TObject); begin initgrid(); end; procedure TfrmBpkcMXList.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin // if AViewInfo.GridRecord.Values[tv1.GetColumnByFieldName('kcQty').Index] < strtofloatdef(trim(edit1.Text), 0) then // ACanvas.Brush.Color := clred; end; procedure TfrmBpkcMXList.CheckBox2Click(Sender: TObject); begin initgrid(); end; procedure TfrmBpkcMXList.ToolButton1Click(Sender: TObject); begin frmZDYHelp := TfrmZDYHelp.Create(self); with frmZDYHelp do begin flag := 'YPKCJYFLAG'; caption := '样品库存预警设置'; V1Name.Caption := '预警数量'; showmodal; free; end; with adoqueryCmd do begin close; sql.Clear; sql.Add('select * from KH_Zdy where Type=''YPKCJYFLAG'''); open; end; TBRafresh.Click; end; procedure TfrmBpkcMXList.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin if CDS_Main.IsEmpty = True then Exit; Initsub(); end; procedure TfrmBpkcMXList.ToolButton2Click(Sender: TObject); begin Panel5.Visible := True; Edit2.Text := Trim(CDS_Main.fieldbyname('kcqty').AsString); end; procedure TfrmBpkcMXList.Button5Click(Sender: TObject); var MAXNO: string; begin try if GetLSNo(ADOQueryCmd, MAXNO, 'YC', 'YP_InOut', 4, 1) = False then begin Application.MessageBox('取子流水号失败!', '提示', 0); Exit; end; with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from YP_INout'); sql.Add('where 1<>1'); open; end; with ADOQueryCmd do begin Append; FieldByName('Filler').Value := trim(DName); FieldByName('FillTime').Value := SGetServerDate(ADOQueryTmp); FieldByName('crTime').Value := SGetServerDate(ADOQueryTmp); FieldByName('CRNO').Value := trim(MAXNO); FieldByName('CRID').Value := Trim(MAXNO); FieldByName('CRQtyFlag').Value := -1; FieldByName('CRFlag').Value := '出库'; FieldByName('CRTYPE').Value := '库存调整'; FieldByName('kuwei').Value := trim(CDS_Main.fieldbyname('kuwei').AsString); FieldByName('factoryName').Value := trim(CDS_Main.fieldbyname('factoryName').AsString); FieldByName('P_Code').Value := trim(CDS_Main.fieldbyname('P_Code').AsString); // FieldByName('YWY').Value := trim(CDS_Main.fieldbyname('YWY').AsString); FieldByName('P_CodeName').Value := trim(CDS_Main.fieldbyname('P_CodeName').AsString); FieldByName('P_Color').Value := trim(CDS_Main.fieldbyname('P_Color').AsString); FieldByName('QtyUnit').Value := trim(CDS_Main.fieldbyname('QtyUnit').AsString); FieldByName('QTY').Value := CDS_Main.fieldbyname('kcQty').AsFloat - STRTOFLOATDEF(Edit2.Text, 0); FieldByName('FROMOrderno').Value := trim(CDS_Main.fieldbyname('FROMOrderno').AsString); FieldByName('frommainid').Value := trim(CDS_Main.fieldbyname('frommainid').AsString); FieldByName('fromsubid').Value := trim(CDS_Main.fieldbyname('fromsubid').AsString); FieldByName('P_SMF').Value := trim(CDS_Main.fieldbyname('P_SMF').AsString); FieldByName('P_SKZ').Value := trim(CDS_Main.fieldbyname('P_SKZ').AsString); Post; end; with CDS_Main do begin Edit; CDS_Main.fieldbyname('kcqty').AsString := edit2.text; Post; end; CDS_Main.EnableControls; Panel5.Visible := False; // InitGrid(); except CDS_Main.EnableControls; end; end; procedure TfrmBpkcMXList.Button6Click(Sender: TObject); begin Panel5.Visible := False; end; procedure TfrmBpkcMXList.v1P_ColorCompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[v1P_Color.Index] = ARow2.Values[v1P_Color.Index]) and (ARow1.Values[cxGridDBColumn2.Index] = ARow2.Values[cxGridDBColumn2.Index]) then AAreEqual := True else AAreEqual := False; end; end.