unit uBizComisiones; interface uses Classes, uDAInterfaces, uDADataTable, schComisionesClient_Intf, uDBSelectionListUtils; const BIZ_CLIENT_COMISIONES = 'Client.Comisiones'; BIZ_CLIENT_FACTURAS_COMISION = 'Client.FacturasComisiones'; type IBizFacturasComision = interface(IFacturas_Comision) ['{5CFE7994-1947-4745-8BC1-8E02345D02FD}'] end; IBizComisiones = interface(IComisiones) ['{18C4B891-F7DB-460B-B031-F2064E3C242E}'] function GetFacturas: IBizFacturasComision; procedure SetFacturas(const Value: IBizFacturasComision); property Facturas: IBizFacturasComision read GetFacturas write SetFacturas; function EsNuevo : Boolean; end; TBizFacturasComision = class(TFacturas_ComisionDataTableRules, IBizFacturasComision) end; TBizComisiones = class(TComisionesDataTableRules, IBizComisiones, ISeleccionable) protected FFacturas: IBizFacturasComision; FFacturasLink : TDADataSource; FSeleccionableInterface : ISeleccionable; function GetFacturas: IBizFacturasComision; procedure SetFacturas(const Value: IBizFacturasComision); procedure OnNewRecord(Sender: TDADataTable); override; public property SeleccionableInterface : ISeleccionable read FSeleccionableInterface write FSeleccionableInterface implements ISeleccionable; property Facturas: IBizFacturasComision read GetFacturas write SetFacturas; procedure IniciarValoresComisionLiquidacionNuevo; virtual; function EsNuevo : Boolean; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; end; implementation uses SysUtils, uDataTableUtils, uDataModuleUsuarios; { TBizComisiones } constructor TBizComisiones.Create(aDataTable: TDADataTable); begin inherited; FFacturas := Nil; FFacturasLink := TDADataSource.Create(NIL); FFacturasLink.DataTable := aDataTable; FSeleccionableInterface := TSeleccionable.Create(aDataTable); end; destructor TBizComisiones.Destroy; begin FFacturas := Nil; FFacturasLink.Free; FSeleccionableInterface := NIL; inherited; end; function TBizComisiones.EsNuevo: Boolean; begin Result := (ID < 0); end; function TBizComisiones.GetFacturas: IBizFacturasComision; begin Result := FFacturas; end; procedure TBizComisiones.IniciarValoresComisionLiquidacionNuevo; begin ID_EMPRESA := dmUsuarios.IDEmpresaActual; FECHA := Date; USUARIO := dmUsuarios.LoginInfo.Usuario; DESCRIPCION := 'Liquidación de comisiones del mes de ' + UpperCase(FormatDateTime('mmmm', date)); end; procedure TBizComisiones.OnNewRecord(Sender: TDADataTable); begin inherited; ID := GetRecNo; // -1, -2, -3... IniciarValoresComisionLiquidacionNuevo; end; procedure TBizComisiones.SetFacturas(const Value: IBizFacturasComision); begin FFacturas := Value; EnlazarMaestroDetalle(FFacturasLink, FFacturas); if Assigned(FFacturas) then if not FFacturas.DataTable.Active then FFacturas.DataTable.Active := True; end; initialization RegisterDataTableRules(BIZ_CLIENT_COMISIONES, TBizComisiones); RegisterDataTableRules(BIZ_CLIENT_FACTURAS_COMISION, TBizFacturasComision); end.