unit uBizArticulos; interface uses uDAInterfaces, uDADataTable, schArticulosClient_Intf, uDBSelectionListUtils, uBizArticulosProveedores; const BIZ_CLIENT_ARTICULO = 'Client.Articulo'; 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; end; TBizArticulo = class(TArticulosDataTableRules, IBizArticulo, ISeleccionable) protected FProveedores : IBizArticulosProveedores; FProveedoresLink : TDADataSource; FSeleccionableInterface : ISeleccionable; procedure OnNewRecord(Sender: TDADataTable); override; procedure PARAMETROSPRECIOOnChange(Sender: TDACustomField); function GetProveedores: IBizArticulosProveedores; procedure SetProveedores(Value: IBizArticulosProveedores); 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; 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; with aDataTable do begin FieldByName(fld_ArticulosTIEMPO).OnChange := PARAMETROSPRECIOOnChange; FieldByName(fld_ArticulosPARAM_TIEMPO).OnChange := PARAMETROSPRECIOOnChange; FieldByName(fld_ArticulosPARAM_MARGEN).OnChange := PARAMETROSPRECIOOnChange; end; FProveedoresLink := TDADataSource.Create(NIL); FProveedoresLink.DataTable := aDataTable; FSeleccionableInterface := TSeleccionable.Create(aDataTable); end; destructor TBizArticulo.Destroy; begin FProveedores := NIL; FProveedoresLink.Free; FSeleccionableInterface := NIL; inherited; end; function TBizArticulo.EsNuevo: Boolean; begin Result := (ID < 0); 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; USUARIO := AppFactuGES.UsuarioActivo.UserName; PARAM_TIEMPO := AppFactuGES.EmpresaActiva.PARAM_TIEMPO; PARAM_MARGEN := AppFactuGES.EmpresaActiva.PARAM_MARGEN; INVENTARIABLE := 1; COMISIONABLE := 1; ELIMINADO := 0; end; procedure TBizArticulo.OnNewRecord(Sender: TDADataTable); begin inherited; IniciarValoresArticuloNuevo; end; procedure TBizArticulo.PARAMETROSPRECIOOnChange(Sender: TDACustomField); begin if not Self.DataTable.Editing then Edit; MANO_OBRA := TIEMPO * PARAM_TIEMPO; if Assigned(Self.Proveedores) then begin Self.Proveedores.RecalcularImportes; end; 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.SetProveedores(Value: IBizArticulosProveedores); begin FProveedores := Value; EnlazarMaestroDetalle(FProveedoresLink, FProveedores); end; initialization RegisterDataTableRules(BIZ_CLIENT_ARTICULO, TBizArticulo); finalization end.