unit uBizFormasPago;

interface

uses
  uDAInterfaces, uDADataTable, schFormasPagoClient_Intf,
  uBizFormasPagoPlazos;

const
  BIZ_CLIENT_FORMAPAGO = 'Client.FormaPago';

type
  IBizFormaPago = interface(IFormasPago)
    ['{F79E3238-1E0D-4FB6-9AF7-E5703619B067}']
    function EsNuevo : Boolean;

    function GetPlazos: IBizFormaPagoPlazos;
    procedure SetPlazos(const Value: IBizFormaPagoPlazos);
    property Plazos : IBizFormaPagoPlazos read GetPlazos
      write SetPlazos;
  end;

  TBizFormaPago = class(TFormasPagoDataTableRules, IBizFormaPago)
  protected
    FPlazos : IBizFormaPagoPlazos;
    FPlazosLink : TDADataSource;
    procedure OnNewRecord(Sender: TDADataTable); override;
    function GetPlazos: IBizFormaPagoPlazos;
    procedure SetPlazos(const Value: IBizFormaPagoPlazos);
  public
    procedure IniciarValoresFormaPagoNueva;
    function EsNuevo : Boolean;
    constructor Create(aDataTable: TDADataTable); override;
    destructor Destroy; override;
    property Plazos : IBizFormaPagoPlazos read GetPlazos
      write SetPlazos;
  end;

implementation

{ TBizFormaPago }

uses
  SysUtils, uDataTableUtils;

constructor TBizFormaPago.Create(aDataTable: TDADataTable);
begin
  inherited;
  FPlazos := NIL;
  FPlazosLink := TDADataSource.Create(NIL);
  FPlazosLink.DataTable := aDataTable;
end;

destructor TBizFormaPago.Destroy;
begin
  FPlazos := NIL;
  FreeAndNIL(FPlazosLink);
  inherited;
end;

function TBizFormaPago.EsNuevo: Boolean;
begin
  Result := (ID < 0);
end;

function TBizFormaPago.GetPlazos: IBizFormaPagoPlazos;
begin
  Result := FPlazos; 
end;

procedure TBizFormaPago.IniciarValoresFormaPagoNueva;
begin
  //
end;

procedure TBizFormaPago.OnNewRecord(Sender: TDADataTable);
begin
  inherited;
  ID := GetRecNo; // -1, -2, -3...
  IniciarValoresFormaPagoNueva;
end;

procedure TBizFormaPago.SetPlazos(const Value: IBizFormaPagoPlazos);
begin
  FPlazos := Value;
  EnlazarMaestroDetalle(FPlazosLink, FPlazos);
end;

initialization
  RegisterDataTableRules(BIZ_CLIENT_FORMAPAGO, TBizFormaPago);

finalization

end.

