unit uBizComisiones; interface uses Classes, uDAInterfaces, uDADataTable, schComisionesClient_Intf, uDBSelectionListUtils; const BIZ_CLIENT_COMISIONES = 'Client.Comisiones'; BIZ_CLIENT_FACTURAS_COMISION = 'Client.FacturasComisiones'; BIZ_CLIENT_VENDEDORES_COMISION = 'Client.VendedoresComisiones'; type IBizFacturasComision = interface(IFacturas_Comision) ['{C2AB9B3F-BCAA-4F99-BDEC-105365BFB364}'] end; IBizVendedoresComision = interface(IVendedores_Comision) ['{8F74E0CA-5988-4ABD-8F99-31915C1C1B97}'] end; IBizComisiones = interface(IComisiones) ['{40E2637E-C002-42AB-8DD5-7A438490C23D}'] function GetFacturas: IBizFacturasComision; procedure SetFacturas(const Value: IBizFacturasComision); property Facturas: IBizFacturasComision read GetFacturas write SetFacturas; function GetVendedores: IBizVendedoresComision; procedure SetVendedores(const Value: IBizVendedoresComision); property Vendedores: IBizVendedoresComision read GetVendedores write SetVendedores; function EsNuevo : Boolean; end; TBizFacturasComision = class(TFacturas_ComisionDataTableRules, IBizFacturasComision) end; TBizVendedoresComision = class(TVendedores_ComisionDataTableRules, IBizVendedoresComision) end; TBizComisiones = class(TComisionesDataTableRules, IBizComisiones, ISeleccionable) protected FFacturas: IBizFacturasComision; FFacturasLink : TDADataSource; FVendedores: IBizVendedoresComision; FVendedoresLink : TDADataSource; FSeleccionableInterface : ISeleccionable; function GetFacturas: IBizFacturasComision; procedure SetFacturas(const Value: IBizFacturasComision); function GetVendedores: IBizVendedoresComision; procedure SetVendedores(const Value: IBizVendedoresComision); procedure OnNewRecord(Sender: TDADataTable); override; public property SeleccionableInterface : ISeleccionable read FSeleccionableInterface write FSeleccionableInterface implements ISeleccionable; property Facturas: IBizFacturasComision read GetFacturas write SetFacturas; property Vendedores: IBizVendedoresComision read GetVendedores write SetVendedores; procedure IniciarValoresComisionLiquidacionNuevo; virtual; function EsNuevo : Boolean; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; end; implementation uses SysUtils, uDataTableUtils, uDataModuleUsuarios, uFactuGES_App; { TBizComisiones } constructor TBizComisiones.Create(aDataTable: TDADataTable); begin inherited; FFacturas := Nil; FFacturasLink := TDADataSource.Create(NIL); FFacturasLink.DataTable := aDataTable; FVendedores := Nil; FVendedoresLink := TDADataSource.Create(NIL); FVendedoresLink.DataTable := aDataTable; FSeleccionableInterface := TSeleccionable.Create(aDataTable); end; destructor TBizComisiones.Destroy; begin FFacturas := Nil; FFacturasLink.Free; FVendedores := Nil; FVendedoresLink.Free; FSeleccionableInterface := NIL; inherited; end; function TBizComisiones.EsNuevo: Boolean; begin Result := (ID < 0); end; function TBizComisiones.GetFacturas: IBizFacturasComision; begin Result := FFacturas; end; function TBizComisiones.GetVendedores: IBizVendedoresComision; begin Result := FVendedores; end; procedure TBizComisiones.IniciarValoresComisionLiquidacionNuevo; begin ID_EMPRESA := AppFactuGES.EmpresaActiva.ID; USUARIO := AppFactuGES.UsuarioActivo.UserName; FECHA := Date; DESCRIPCION := 'Liquidación de comisiones del mes de ' + UpperCase(FormatDateTime('mmmm', date)); end; procedure TBizComisiones.OnNewRecord(Sender: TDADataTable); begin inherited; 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; procedure TBizComisiones.SetVendedores(const Value: IBizVendedoresComision); begin FVendedores := Value; EnlazarMaestroDetalle(FVendedoresLink, FVendedores); if Assigned(FVendedores) then if not FVendedores.DataTable.Active then FVendedores.DataTable.Active := True; end; initialization RegisterDataTableRules(BIZ_CLIENT_COMISIONES, TBizComisiones); RegisterDataTableRules(BIZ_CLIENT_FACTURAS_COMISION, TBizFacturasComision); RegisterDataTableRules(BIZ_CLIENT_VENDEDORES_COMISION, TBizVendedoresComision); end.