unit uViewDetallesAlbaranCliente; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, 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, ExtActns, StdActns, JvExStdCtrls, JvCombobox, JvColorCombo, TB2Item, SpTBXItem, TB2Dock, TB2Toolbar, uControllerDetallesArticulos, uBizAlbaranesCliente, uBizDetallesAlbaranCliente, cxDropDownEdit, cxCalendar, cxDBEdit, dxLayoutControl, cxContainer, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uDAInterfaces, cxButtonEdit, uViewDetallesArticulos, Menus, cxGridCustomPopupMenu, cxGridPopupMenu, uViewDetallesArticulosParaVenta, cxEditRepositoryItems, cxLookAndFeels, cxLookAndFeelPainters; type IViewDetallesAlbaranCliente = interface(IViewDetallesArticulos) ['{9326E1A0-BD5E-4BE1-BB3B-6A52C3394118}'] function GetAlbaran: IBizAlbaranCliente; procedure SetAlbaran(const Value: IBizAlbaranCliente); property Albaran: IBizAlbaranCliente read GetAlbaran write SetAlbaran; end; TfrViewDetallesAlbaranCliente = class(TfrViewDetallesArticulosParaVenta, IViewDetallesAlbaranCliente) N2: TMenuItem; Aadirartculos1: TMenuItem; TBXItem18: TSpTBXItem; cxGridViewCANTIDAD2: TcxGridDBColumn; cxGridViewIR_ARTICULO_REEMPLAZADO: TcxGridDBColumn; cxGridViewREFERENCIA_ART_REEMPLAZADO: TcxGridDBColumn; procedure cxGridViewREFERENCIA_ART_REEMPLAZADOPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure OnValidateReferencia_ART_REEMPLAZADO(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); procedure CustomViewCreate(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); procedure cxGridViewCANTIDAD2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); protected FAlbaran: IBizAlbaranCliente; function GetAlbaran: IBizAlbaranCliente; procedure SetAlbaran(const Value: IBizAlbaranCliente); procedure AnadirArticulosInterno; override; procedure RellenarArticulosInterno; override; function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override; public property Albaran: IBizAlbaranCliente read GetAlbaran write SetAlbaran; end; implementation {$R *.dfm} uses uDetallesAlbaranClienteController, uViewDetallesBase, uDialogUtils; { TfrViewDetallesAlbaranProveedor } function TfrViewDetallesAlbaranCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; begin if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then Result := (Controller as IDetallesAlbaranClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Albaran.Cliente.ID, -1) else Result := (Controller as IDetallesAlbaranClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia, Albaran.Cliente.ID, 0); end; procedure TfrViewDetallesAlbaranCliente.AnadirArticulosInterno; begin if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then (Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente, true, -1) else (Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente, true, 0); end; procedure TfrViewDetallesAlbaranCliente.CustomViewCreate(Sender: TObject); begin inherited; cxGridViewREFERENCIA_ART_REEMPLAZADO.Properties.OnValidate := OnValidateReferencia_ART_REEMPLAZADO; end; procedure TfrViewDetallesAlbaranCliente.CustomViewDestroy(Sender: TObject); begin cxGridViewREFERENCIA_ART_REEMPLAZADO.Properties.OnValidate := Nil; inherited; end; procedure TfrViewDetallesAlbaranCliente.cxGridViewCANTIDAD2PropertiesButtonClick( Sender: TObject; AButtonIndex: Integer); begin inherited; (Controller as IDetallesAlbaranClienteController).ModificarCantidadColores(Detalles); end; procedure TfrViewDetallesAlbaranCliente.cxGridViewREFERENCIA_ART_REEMPLAZADOPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin inherited; case AButtonIndex of 0:(Controller as IControllerDetallesArticulos).AnadirArticulos(Detalles, False, tClienteReemplazo); 1:(Controller as IDetallesAlbaranClienteController).QuitarArticuloReemplazado(Detalles); end; end; function TfrViewDetallesAlbaranCliente.GetAlbaran: IBizAlbaranCliente; begin Result := FAlbaran; end; procedure TfrViewDetallesAlbaranCliente.OnValidateReferencia_ART_REEMPLAZADO(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); var lsReferencia : String; begin //En el caso de cadena vacia no validamos if (VarIsNull(DisplayValue)) then Exit; lsReferencia := VarToStr(DisplayValue); if (length(trim(lsReferencia)) <> 0) then begin if not AnadirArticulo(lsReferencia, tClienteReemplazo) then begin ErrorText := 'La referencia introducida no exite en el catálogo'; Error := True; end; end else (Controller as IDetallesAlbaranClienteController).QuitarArticuloReemplazado(Detalles); end; procedure TfrViewDetallesAlbaranCliente.RellenarArticulosInterno; begin if (Albaran.TIPO = CTE_TIPO_ALBARAN_DEV) then (Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente, False, -1) else (Controller as IDetallesAlbaranClienteController).AnadirArticulos(Detalles, Albaran.Cliente, False, 0); end; procedure TfrViewDetallesAlbaranCliente.SetAlbaran(const Value: IBizAlbaranCliente); begin FAlbaran := Value; end; end.