unit uViewControGridStockEDIInventario; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewControlGrid, DB, uDADataTable, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxCurrencyEdit, cxCalendar, dxPSGlbl, dxPSUtl, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSEngn, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPgsDlg, cxDropDownEdit, StdCtrls, cxSpinEdit, uViewGrid, cxMemo, cxEditRepositoryItems, uDataModuleStock, uDAInterfaces, TBXDkPanels, uViewParametrosCentro, uCustomView, uViewBase, uViewParametrosControlGrid, uViewParametrosColeccion, TB2Dock, uBizStock, uViewParametrosFecha; type IViewControlGridStockEDIInventario = interface(IViewGrid) ['{38BB8BB9-E15D-4D49-970E-14418C4EB1E4}'] function GetItems: IBizStockEDIInventario; procedure SetItems(const Value: IBizStockEDIInventario); property Items: IBizStockEDIInventario read GetItems write SetItems; end; TfrViewControlGridStockEDIInventario = class(TfrViewGrid, IViewControlGridStockEDIInventario) dxComponentPrinterLink1: TdxGridReportLink; cxEditRepository1: TcxEditRepository; cxEditDia: TcxEditRepositoryTextItem; cxEditImporte: TcxEditRepositoryCurrencyItem; cxGridViewRecID: TcxGridDBColumn; cxGridViewCENTRO: TcxGridDBColumn; cxGridViewCODIGO: TcxGridDBColumn; cxGridViewPRODUCTO: TcxGridDBColumn; cxGridViewTIPO_PRODUCTO: TcxGridDBColumn; cxGridViewGRUPO_PRODUCTO: TcxGridDBColumn; cxGridViewCOLECCION: TcxGridDBColumn; cxGridViewCOLOR: TcxGridDBColumn; cxGridViewI36: TcxGridDBColumn; cxGridViewI38: TcxGridDBColumn; cxGridViewI40: TcxGridDBColumn; cxGridViewI42: TcxGridDBColumn; cxGridViewI44: TcxGridDBColumn; cxGridViewI46: TcxGridDBColumn; cxGridViewI48: TcxGridDBColumn; cxGridViewTI: TcxGridDBColumn; cxGridViewK36: TcxGridDBColumn; cxGridViewK38: TcxGridDBColumn; cxGridViewK40: TcxGridDBColumn; cxGridViewK42: TcxGridDBColumn; cxGridViewK44: TcxGridDBColumn; cxGridViewK46: TcxGridDBColumn; cxGridViewK48: TcxGridDBColumn; cxGridViewTK: TcxGridDBColumn; cxGridViewD36: TcxGridDBColumn; cxGridViewD38: TcxGridDBColumn; cxGridViewD40: TcxGridDBColumn; cxGridViewD42: TcxGridDBColumn; cxGridViewD44: TcxGridDBColumn; cxGridViewD46: TcxGridDBColumn; cxGridViewD48: TcxGridDBColumn; cxGridViewDT: TcxGridDBColumn; cxStyleEntrada: TcxStyle; cxStyleSalida: TcxStyle; cxStyleRepositoryInforme: TcxStyleRepository; cxStyleContentInforme: TcxStyle; cxStyleFooterInforme: TcxStyle; cxStyleGroupInforme: TcxStyle; cxStyleHeaderInforme: TcxStyle; cxStyleSelectionInforme: TcxStyle; cxStyleTotales: TcxStyle; TBXDockablePanel1: TTBXDockablePanel; frViewParametrosColeccion1: TfrViewParametrosColeccion; frViewParametrosCentro1: TfrViewParametrosCentro; pnlAgrupaciones: TTBXAlignmentPanel; TBXButton3: TTBXButton; TBXLabel1: TTBXLabel; frViewParametrosFecha1: TfrViewParametrosFecha; procedure cxGridViewDTCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure cxGridViewStylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); procedure cxGridViewI38GetDataText(Sender: TcxCustomGridTableItem; ARecordIndex: Integer; var AText: String); procedure cxGridViewTEStylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); protected FItems : IBizStockEDIInventario; function GetItems: IBizStockEDIInventario; procedure SetItems(const Value: IBizStockEDIInventario); public property Items: IBizStockEDIInventario read GetItems write SetItems; procedure Preview; override; procedure Print; override; constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Refresh; end; implementation {$R *.dfm} uses uViewGridBase; { TfrViewControlGridResumenVentas } procedure TfrViewControlGridStockEDIInventario.Preview; begin inherited; dxComponentPrinterLink1.ReportTitle.Text := 'Diferencias con último inventario de colección ' + frViewParametrosColeccion1.ccbColeccion.Text + ' en centro(s) ' + frViewParametrosCentro1.ccbCentro.Text; dxComponentPrinterLink1.Preview; end; procedure TfrViewControlGridStockEDIInventario.Print; begin inherited; dxComponentPrinterLink1.ReportTitle.Text := 'Diferencias con último inventario de colección ' + frViewParametrosColeccion1.ccbColeccion.Text + ' en centro(s) ' + frViewParametrosCentro1.ccbCentro.Text; dxComponentPrinterLink1.Print(True, Nil); end; procedure TfrViewControlGridStockEDIInventario.cxGridViewDTCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin inherited; if not VarIsNull(AViewInfo.Value) then if Pos('-', AViewInfo.Value) > 0 then ACanvas.Canvas.Font.Color := $000000CC; end; constructor TfrViewControlGridStockEDIInventario.Create(AOwner: TComponent); begin inherited; FItems := Nil; frViewParametrosColeccion1.Refresh; frViewParametrosCentro1.Refresh; end; procedure TfrViewControlGridStockEDIInventario.SetItems(const Value: IBizStockEDIInventario); begin FItems := Value; if Assigned(FItems) then dsDataSource.DataTable := FItems.DataTable; end; procedure TfrViewControlGridStockEDIInventario.cxGridViewStylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); begin inherited; // if Assigned(AItem) then if (AItem.Index = cxGridViewTI.Index) or (AItem.Index = cxGridViewTK.Index) or (AItem.Index = cxGridViewDT.Index) then AStyle := cxStyleTotales; end; procedure TfrViewControlGridStockEDIInventario.cxGridViewI38GetDataText( Sender: TcxCustomGridTableItem; ARecordIndex: Integer; var AText: String); begin inherited; if AText = '0' then AText := ''; end; procedure TfrViewControlGridStockEDIInventario.cxGridViewTEStylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); begin inherited; AStyle := cxStyleTotales; end; destructor TfrViewControlGridStockEDIInventario.Destroy; begin FItems := Nil; inherited; end; procedure TfrViewControlGridStockEDIInventario.Refresh; var AColeccionesList : TStringList; ACentrosList : TStringList; AFecha : Variant; AWhereColeccion : String; AWhereCentro : String; AWhereFecha : String; AWhere : String; i : integer; begin AColeccionesList := Nil; ACentrosList := Nil; if Assigned(FItems) then Items.DataTable.Active := False; AColeccionesList := frViewParametrosColeccion1.ColeccionesSeleccionadas; ACentrosList := frViewParametrosCentro1.CodigoCentrosSeleccionados; AFecha := frViewParametrosFecha1.Fecha; ShowHourglassCursor; try if Assigned(AColeccionesList) then begin AWhereColeccion := ''; if AColeccionesList.Count = 0 then begin ShowMessage('Debe seleccionar al menos una colección en los parámetros de la consulta.'); Exit; end else begin AWhereColeccion := AWhereColeccion + ' COLECCION in ('; for i := 0 to AColeccionesList.Count - 1 do begin if i > 0 then AWhereColeccion := AWhereColeccion + ', '; AWhereColeccion := AWhereColeccion + '''' + AColeccionesList[i] + ''''; end; AWhereColeccion := AWhereColeccion + ')'; end; end; if Assigned(ACentrosList) then begin AWhereCentro := ''; if ACentrosList.Count = 0 then begin ShowMessage('Debe seleccionar al menos un centro en los parámetros de la consulta.'); Exit; end else begin AWhereCentro := AWhereCentro + ' CENTRO in ('; for i := 0 to ACentrosList.Count - 1 do begin if i > 0 then AWhereCentro := AWhereCentro + ', '; AWhereCentro := AWhereCentro + '''' + ACentrosList[i] + ''''; end; AWhereCentro := AWhereCentro + ')'; end; end; AWhereFecha := ''; if not VarIsNull(AFecha) then AWhereFecha := '(FECHA >= ''' + VarToStr(AFecha) + ''')'; AWhere := ''; if AWhereColeccion <> '' then AWhere := AWhere + AWhereColeccion; if AWhereCentro <> '' then begin if AWhere <> '' then AWhere := AWhere + ' AND '; AWhere := AWhere + AWhereCentro; end; if AWhereFecha <> '' then begin if AWhere <> '' then AWhere := AWhere + ' AND '; AWhere := AWhere + AWhereFecha; end; Items.DataTable.Where.Clear; Items.DataTable.Where.AddText(AWhere, False); Items.DataTable.Active := True; finally HideHourglassCursor; FreeAndNIL(AColeccionesList); FreeAndNIL(ACentrosList); end; end; function TfrViewControlGridStockEDIInventario.GetItems: IBizStockEDIInventario; begin Result := FItems; end; end.