unit uBizDetallesPedidoCliente;

interface

uses
  uDADataTable, schPedidosClienteClient_Intf, uBizDetalleColoresPedidoCliente;

const
  BIZ_CLIENT_DETALLES_PEDIDO_CLIENTE = 'Client.PedidoCliente.Detalles';
  BIZ_CLIENT_ARTICULOS_PEND_PEDIDO_CLIENTE = 'Client.PedidoCliente.ArticulosPendientes';
  BIZ_CLIENT_ARTCOLORES_PEND_PEDIDO_CLIENTE = 'Client.PedidoCliente.ArtColoresPendientes';

type
  IBizDetallesPedidoCliente = interface(IPedidosCliente_Detalles)
  ['{2D7781DC-AD16-4857-9567-5C1620319781}']
    function GetDetalleColores: IBizDetalleColoresPedidoCliente;
    procedure SetDetalleColores(Value: IBizDetalleColoresPedidoCliente);
    property DetalleColores: IBizDetalleColoresPedidoCliente read GetDetalleColores write SetDetalleColores;
  end;

  IBizPedidoClienteArticulosPend = interface(IPedidoCliente_Articulos_Pendientes)
    ['{DD245879-DD80-4E96-995A-6D3A09D72544}']
  end;

  IBizPedidoClienteArtColoresPend = interface(IPedidoCliente_Art_Colores_Pendientes)
    ['{8E4E1C52-0160-4EBF-AD20-10EBEE8B4266}']
  end;

  TBizDetallesPedidoCliente = class(TPedidosCliente_DetallesDataTableRules, IBizDetallesPedidoCliente)
  protected
    FDetalleColores : IBizDetalleColoresPedidoCliente;
    FDetalleColoresLink : TDADataSource;

    function GetDetalleColores: IBizDetalleColoresPedidoCliente;
    procedure SetDetalleColores(Value: IBizDetalleColoresPedidoCliente);

    procedure OnNewRecord(Sender: TDADataTable); override;
    procedure BeforeInsert(Sender: TDADataTable); override;

  public
    property DetalleColores: IBizDetalleColoresPedidoCliente read GetDetalleColores write SetDetalleColores;
    constructor Create(aDataTable: TDADataTable); override;
    destructor Destroy; override;
  end;

  TBizPedidoClienteArticulosPend = class(TPedidoCliente_Articulos_PendientesDataTableRules, IBizPedidoClienteArticulosPend)
  end;

  TBizPedidoClienteArColoresPend = class(TPedidoCliente_Art_Colores_PendientesDataTableRules, IBizPedidoClienteArtColoresPend)
  end;

implementation

{ TBizDetallesPedidoCliente }

uses
  uDataTableUtils, DB;


procedure TBizDetallesPedidoCliente.BeforeInsert(Sender: TDADataTable);
var
  AMasterTable : TDADataTable;
begin
  inherited;
  AMasterTable := DataTable.GetMasterDataTable;
  if Assigned(AMasterTable) and (AMasterTable.State = dsInsert) then
    AMasterTable.Post;
end;

constructor TBizDetallesPedidoCliente.Create(aDataTable: TDADataTable);
begin
  inherited;
  FDetalleColoresLink := TDADataSource.Create(NIL);
  FDetalleColoresLink.DataTable := aDataTable;
end;

destructor TBizDetallesPedidoCliente.Destroy;
begin
  FDetalleColores := NIL;
  FDetalleColoresLink.Free;

  inherited;
end;

function TBizDetallesPedidoCliente.GetDetalleColores: IBizDetalleColoresPedidoCliente;
begin
  Result := FDetalleColores;
end;

procedure TBizDetallesPedidoCliente.OnNewRecord(Sender: TDADataTable);
begin
  inherited;
  VISIBLE := 1;
end;

procedure TBizDetallesPedidoCliente.SetDetalleColores(Value: IBizDetalleColoresPedidoCliente);
begin
  FDetalleColores := Value;
  EnlazarMaestroDetalle(FDetalleColoresLink, FDetalleColores);
end;

initialization
  RegisterDataTableRules(BIZ_CLIENT_DETALLES_PEDIDO_CLIENTE, TBizDetallesPedidoCliente);
  RegisterDataTableRules(BIZ_CLIENT_ARTICULOS_PEND_PEDIDO_CLIENTE, TBizPedidoClienteArticulosPend);
  RegisterDataTableRules(BIZ_CLIENT_ARTCOLORES_PEND_PEDIDO_CLIENTE, TBizPedidoClienteArColoresPend);

end.
