unit uViewDetallesFacturaCliente; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewDetallesBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, PngImageList, uDADataTable, ActnList, ComCtrls, ToolWin, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, cxImageComboBox, cxTextEdit, cxMaskEdit, cxCheckBox, cxCurrencyEdit, Grids, DBGrids, StdCtrls, ExtCtrls, cxRichEdit, StdActns, ExtActns, JvExStdCtrls, JvCombobox, JvColorCombo, TB2Item, TBX, TB2Dock, TB2Toolbar, uControllerDetallesArticulos, uViewDetallesArticulos, uBizFacturasCliente, uDAInterfaces, cxContainer, cxMemo; type IViewDetallesFacturaCliente = interface(IViewDetallesArticulos) ['{0EEC7246-B2FD-4F93-AB15-AA12D6E67302}'] function GetFactura: IBizFacturaCliente; procedure SetFactura(const Value: IBizFacturaCliente); property Factura: IBizFacturaCliente read GetFactura write SetFactura; end; TfrViewDetallesFacturaCliente = class(TfrViewDetallesArticulos) cxRichEdit1: TcxRichEdit; actQuitarPrecios: TAction; TBXSeparatorItem6: TTBXSeparatorItem; TBXItem14: TTBXItem; procedure cxGridViewDESCRIPCIONGetPropertiesForEdit( Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AProperties: TcxCustomEditProperties); protected FFactura: IBizFacturaCliente; function GetFactura: IBizFacturaCliente; procedure SetFactura(const Value: IBizFacturaCliente); procedure AnadirArticulosInterno; override; procedure RellenarArticulosInterno; override; function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override; function EsTipoEditable(AItem: TcxCustomGridTableItem): Boolean; override; public property Factura: IBizFacturaCliente read GetFactura write SetFactura; end; implementation {$R *.dfm} uses uCalculosUtils, uControllerDetallesBase, uDetallesFacturaClienteController; { TfrViewDetallesFacturaCliente } function TfrViewDetallesFacturaCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; begin if (Factura.TIPO = CTE_TIPO_ABONO) then Result := (Controller as IDetallesFacturaClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Factura.Cliente.ID, -1) else Result := (Controller as IDetallesFacturaClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Factura.Cliente.ID); end; procedure TfrViewDetallesFacturaCliente.AnadirArticulosInterno; begin if (Factura.TIPO = CTE_TIPO_ABONO) then (Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente, true, -1) else (Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente); end; procedure TfrViewDetallesFacturaCliente.cxGridViewDESCRIPCIONGetPropertiesForEdit( Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AProperties: TcxCustomEditProperties); begin inherited; AProperties := cxRichEdit1.Properties; end; function TfrViewDetallesFacturaCliente.EsTipoEditable(AItem: TcxCustomGridTableItem): Boolean; var IndiceCol : Integer; begin Result := True; if (AItem.Index in [cxGridViewDESCUENTO.Index]) then begin //Esto es para que solo sea editable la columna dto en las lineas de tipo descuento (para hacer descuento por capitulo), //además descuentos a nivel de lineas de detalle IndiceCol := cxGridView.GetColumnByFieldName(CAMPO_TIPO).Index; if (AItem.GridView.Items[IndiceCol].EditValue <> TIPO_DETALLE_DESCUENTO) and (AItem.GridView.Items[IndiceCol].EditValue <> TIPO_DETALLE_CONCEPTO) then Result := False end else Result := inherited EsTipoEditable(AItem); end; function TfrViewDetallesFacturaCliente.GetFactura: IBizFacturaCliente; begin Result := FFactura; end; procedure TfrViewDetallesFacturaCliente.RellenarArticulosInterno; begin if (Factura.TIPO = CTE_TIPO_ABONO) then (Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente, False, -1) else (Controller as IDetallesFacturaClienteController).AnadirArticulos(Detalles, Factura.Cliente, False); end; procedure TfrViewDetallesFacturaCliente.SetFactura(const Value: IBizFacturaCliente); begin FFactura := Value; end; end.