unit uBizMontajes; interface uses uDAInterfaces, uDADataTable, schMontajesClient_Intf, uBizContactos, Classes, uDBSelectionListUtils; const BIZ_CLIENT_MONTAJE = 'Client.Montaje'; SITUACION_MONTAJE_PENDIENTE = 'Pendiente'; SITUACION_MONTAJE_EJECUCION = 'En ejecución'; SITUACION_MONTAJE_TERMINADO = 'Terminado'; SITUACION_MONTAJE_PAGADO = 'Terminado y pagado'; type IBizMontaje = interface(IMontajes) ['{8B782153-C15D-4454-BF82-DFB19AB4A60A}'] procedure SetCliente(AValue : IBizCliente); function GetCliente : IBizCliente; property Cliente : IBizCliente read GetCliente write SetCliente; function DarListaSituaciones: TStringList; function EsNuevo : Boolean; function GetSelectedRecords: ISelectedRecords; property SelectedRecords : ISelectedRecords read GetSelectedRecords; end; TBizMontaje = class(TMontajesDataTableRules, IBizMontaje, ISelectedRecords) private function GetSelected: Boolean; procedure SetSelected(const Value: Boolean); protected FCliente : IBizCliente; FSelectedRecords : TSelectedRecords; procedure SetCliente(AValue : IBizCliente); function GetCliente : IBizCliente; procedure OnNewRecord(Sender: TDADataTable); override; public function DarListaSituaciones: TStringList; function EsNuevo : Boolean; function GetSelectedRecords: ISelectedRecords; property SelectedRecords : ISelectedRecords read GetSelectedRecords implements ISelectedRecords; property Selected : Boolean read GetSelected write SetSelected; property Cliente : IBizCliente read GetCliente write SetCliente; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; end; implementation uses SysUtils, uDataTableUtils, DB, uDateUtils, DateUtils, uDataModuleUsuarios, Variants, cxDateUtils; { TBizMontaje } function TBizMontaje.EsNuevo: Boolean; begin Result := (ID < 0); end; constructor TBizMontaje.Create(aDataTable: TDADataTable); begin inherited; FCliente := Nil; FSelectedRecords := TSelectedRecords.Create(aDataTable); end; function TBizMontaje.DarListaSituaciones: TStringList; begin Result := TStringList.Create; with Result do begin Add(SITUACION_MONTAJE_PENDIENTE); Add(SITUACION_MONTAJE_EJECUCION); Add(SITUACION_MONTAJE_TERMINADO); Add(SITUACION_MONTAJE_PAGADO); end; end; destructor TBizMontaje.Destroy; begin FCliente := NIL; FreeAndNIL(FSelectedRecords); inherited; end; function TBizMontaje.GetCliente: IBizCliente; begin Result := FCliente; end; function TBizMontaje.GetSelected: Boolean; begin Result := FSelectedRecords.CurrentRowSelected; end; function TBizMontaje.GetSelectedRecords: ISelectedRecords; begin Result := FSelectedRecords; end; procedure TBizMontaje.OnNewRecord(Sender: TDADataTable); begin inherited; ID := GetRecNo; // -1, -2, -3... ID_EMPRESA := dmUsuarios.IDEmpresaActual; USUARIO := dmUsuarios.LoginInfo.Usuario; SITUACION := SITUACION_MONTAJE_PENDIENTE; FECHA_INICIO := DateOf(Now); ID_CLIENTE := ID_NULO; end; procedure TBizMontaje.SetCliente(AValue: IBizCliente); var bEnEdicion : Boolean; begin FCliente := AValue; bEnEdicion := (DataTable.State in dsEditModes); if not bEnEdicion then Edit; if Assigned(FCliente) then begin if not FCliente.DataTable.Active then FCliente.DataTable.Active := True; ID_CLIENTE := FCliente.ID; REFERENCIA := FCliente.NOMBRE; Post; if bEnEdicion then Edit; end end; procedure TBizMontaje.SetSelected(const Value: Boolean); begin FSelectedRecords.CurrentRowSelected := True; end; initialization RegisterDataTableRules(BIZ_CLIENT_MONTAJE, TBizMontaje); finalization end.