unit uBizArticulos; interface uses uDAInterfaces, uDADataTable, schArticulosClient_Intf, uDBSelectionListUtils, uBizArticulosProveedores, uBizArticulosIdiomas; const BIZ_CLIENT_ARTICULO = 'Client.Articulo'; CTE_TARIFA_COMPRAS = 'Compras'; type IBizArticulo = interface(IArticulos) ['{06AB61B1-C225-4791-9F5E-00A60DBA7FFD}'] function EsNuevo : Boolean; function HayImagen: Boolean; procedure SalvarImagen(const AFileName: String); procedure CargarImagen(const AFileName: String); procedure QuitarImagen; function GetProveedores: IBizArticulosProveedores; procedure SetProveedores(Value: IBizArticulosProveedores); property Proveedores: IBizArticulosProveedores read GetProveedores write SetProveedores; function GetIdiomas: IBizArticulosIdiomas; procedure SetIdiomas(Value: IBizArticulosIdiomas); property Idiomas: IBizArticulosIdiomas read GetIdiomas write SetIdiomas; end; TBizArticulo = class(TArticulosDataTableRules, IBizArticulo, ISeleccionable) protected FProveedores : IBizArticulosProveedores; FProveedoresLink : TDADataSource; FIdiomas : IBizArticulosIdiomas; FIdiomasLink : TDADataSource; FSeleccionableInterface : ISeleccionable; procedure OnNewRecord(Sender: TDADataTable); override; function GetProveedores: IBizArticulosProveedores; procedure SetProveedores(Value: IBizArticulosProveedores); function GetIdiomas: IBizArticulosIdiomas; procedure SetIdiomas(Value: IBizArticulosIdiomas); published public procedure IniciarValoresArticuloNuevo; virtual; function HayImagen: Boolean; procedure SalvarImagen(const AFileName: String); procedure CargarImagen(const AFileName: String); procedure QuitarImagen; function EsNuevo : Boolean; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; property SeleccionableInterface : ISeleccionable read FSeleccionableInterface write FSeleccionableInterface implements ISeleccionable; property Proveedores: IBizArticulosProveedores read GetProveedores write SetProveedores; property Idiomas: IBizArticulosIdiomas read GetIdiomas write SetIdiomas; end; implementation uses uFactuGES_App, uDataTableUtils, SysUtils, uROClasses, Classes; { TBizArticulo } procedure TBizArticulo.CargarImagen(const AFileName: String); begin { inherited; DataTable.Edit; DataTable.FieldByName(fld_ArticulosIMAGEN).LoadFromFile(AFileName); DataTable.Post;} end; constructor TBizArticulo.Create(aDataTable: TDADataTable); begin inherited; FProveedoresLink := TDADataSource.Create(NIL); FProveedoresLink.DataTable := aDataTable; FIdiomasLink := TDADataSource.Create(NIL); FIdiomasLink.DataTable := aDataTable; FSeleccionableInterface := TSeleccionable.Create(aDataTable); end; destructor TBizArticulo.Destroy; begin FProveedores := NIL; FProveedoresLink.Free; FIdiomas := NIL; FIdiomasLink.Free; FSeleccionableInterface := NIL; inherited; end; function TBizArticulo.EsNuevo: Boolean; begin Result := (ID < 0); end; function TBizArticulo.GetIdiomas: IBizArticulosIdiomas; begin Result := FIdiomas; end; function TBizArticulo.GetProveedores: IBizArticulosProveedores; begin Result := FProveedores; end; function TBizArticulo.HayImagen: Boolean; {var AStream : TMemoryStream; AROStream : IROStream;} begin { AStream := TMemoryStream.Create; AROStream := TROStream.Create(AStream, False); try DataTable.FieldByName(fld_ArticulosIMAGEN).SaveToStream(AROStream); Result := (AROStream.Size > 0); finally AROStream := NIL; FreeAndNIL(AStream); end;} end; procedure TBizArticulo.IniciarValoresArticuloNuevo; begin ID_EMPRESA := AppFactuGES.EmpresaActiva.ID; PRECIO_PORTE := 0; PRECIO_COSTE := 0; DESCUENTO := 0; PRECIO_NETO := 0; COMISIONABLE := 1; ELIMINADO := 0; INVENTARIABLE := 0; USUARIO := AppFactuGES.UsuarioActivo.UserName; end; procedure TBizArticulo.OnNewRecord(Sender: TDADataTable); begin inherited; ID := GetRecNo; // -1, -2, -3... IniciarValoresArticuloNuevo; end; procedure TBizArticulo.QuitarImagen; begin { DataTable.Edit; DataTable.Fields[idx_ArticulosIMAGEN].Clear; DataTable.Post;} end; procedure TBizArticulo.SalvarImagen(const AFileName: String); begin // DataTable.FieldByName(fld_ArticulosIMAGEN).SaveToFile(AFileName); end; procedure TBizArticulo.SetIdiomas(Value: IBizArticulosIdiomas); begin FIdiomas := Value; EnlazarMaestroDetalle(FIdiomasLink, FIdiomas); end; procedure TBizArticulo.SetProveedores(Value: IBizArticulosProveedores); begin FProveedores := Value; EnlazarMaestroDetalle(FProveedoresLink, FProveedores); end; initialization RegisterDataTableRules(BIZ_CLIENT_ARTICULO, TBizArticulo); finalization end.