TprxADODataSetDetail

De Pragma Wiki
Ir a la navegación Ir a la búsqueda

Descripción

El objeto TprxADODataSetDetail (Funcionalidad genérica para detalles de comprobantes.) implementa funcionalidad genérica para detalles de comprobantes.

Identidad

Declaración

type
  TprxADODataSetDetail = class(TprxADODataSetMaster)
  private
    FMasterDataSet: TprxADODataSetEdit;

    FCmpMasterDataSet: TprxADODataSetEdit;

    FNuevoSubtotal: Boolean;

    FApplyMasterKey_Count: Integer;

    procedure   FieldMessage(var Message: TprxADODataSetMessage); message MSG_PRXADODATASETMESSAGE;
  protected
    procedure   SetTableName(aValue: String); override;

    procedure   Notification(AComponent: TComponent; Operation: TOperation); override;

    function    Get_TAG_READONLY: Boolean; override;

    function    KeepFormOpen_Get: Boolean; override;

    procedure   SetMasterDataSet(aValue: TprxADODataSetEdit); virtual;
    function    EvaluarEstadoCabecera: Boolean;

    property    CmpMasterDataSet: TprxADODataSetEdit read FCmpMasterDataSet write FCmpMasterDataSet;
    property    xxNuevoSubtotal: Boolean read FNuevoSubtotal write FNuevoSubtotal;

    property    ApplyMasterKey_Count: Integer read FApplyMasterKey_Count; // write FApplyMasterKey_Count;
  public
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    procedure   Loaded; override;
    procedure   Activate(aLoadRecords: Boolean); override;

    function    IsTransactionMaster: Boolean; override;

    procedure   AssignMasterKey(Sender: TObject);

    function    CanInsertXtd: Boolean; override;
    procedure   InsertXtd(Sender: TObject); override;

    function    CanEditXtd: Boolean; override;
    procedure   EditXtd(Sender: TObject); override;

    function    CanDeleteXtd(aAsk: Boolean): Boolean; override;
    procedure   DeleteXtd(Sender: TObject); override;

    function    PostXtd(Sender: TObject): Boolean; override;

    procedure   ApplyMasterKey;
  published
    property    MasterDataSet: TprxADODataSetEdit read FMasterDataSet write SetMasterDataSet; //FMasterDataSet;
  end;

FMasterDataSet: TprxADODataSetEdit

Apunta al dataset que es su maestro en la relación master-detail.

FCmpMasterDataSet: TprxADODataSetEdit

Apunta al dataset que es su maestro en la relación master-detail, pero solo cuando

          if MasterDataSet is TprxCmpCABECERA then
             CmpMasterDataSet := MasterDataSet;


Implementación

procedure SetMasterDataSet(aValue: TprxADODataSetEdit)

Procedimiento para inicializar el master del dataset (propiedad FMasterDataSet).

function EvaluarEstadoCabecera: Boolean

Si el MasterDataSet es una cabecera de comprobante evalúa su estado, si es Nuevo o Abierto retorna True, de lo contrario retorna False.

procedure FieldMessage(var Message: TprxADODataSetMessage)

Recibe mensajes (Ver prxDataTypes, si el master está activo y ante alguno de los siguientes eventos aplica la clave del master para que el dataset se refresque trayendo los registros que corresponde a su maestro.

  • msgNewRecord.
  • msgScroll.
  • msgEdit.
  • msgCancel.

procedure ApplyMasterKey

Refresca los datos del dataset para que correspondan al master que está vigente. Por ejemplo, si en una pantalla de detalles de facturas cambió el código de la factura tenemos que refrescar este dataset para que coincida con el detalle de la nueva factura.

procedure AssignMasterKey(Sender: TObject)

Asignamos los valores de la clave del master, es función aparte porque se usa en TprxADODataSetEdit (es decir que no llamamos al inherited porque no queremos llamar a la función del ancestro).

Funciones derivadas

Las siguientes funciones derivan del ancestro y agregan funcionalidad específica:

  • function CanInsertXtd: Boolean.
  • procedure InsertXtd(Sender: TObject).
  • function CanEditXtd: Boolean.
  • procedure EditXtd(Sender: TObject).
  • function CanDeleteXtd(aAsk: Boolean): Boolean.
  • procedure DeleteXtd(Sender: TObject).
  • function PostXtd(Sender: TObject): Boolean.