unit uBizInventario; interface uses uDAInterfaces, uDADataTable, schInventarioClient_Intf, uBizArticulos, uDBSelectionListUtils; const BIZ_CLIENT_INVENTARIO = 'Client.Inventario'; BIZ_CLIENT_DETALLE_RESERVAS_INV = 'Client.DetallesReservasInv'; CTE_TIPO_ENTRADA = 'E'; CTE_TIPO_SALIDA = 'S'; type TEnumTipoMovimiento = (tEntradaLibre, tSalidaLibre, tTraslado, tEntradaPedidoProveedor, tSalidaAlbaranCliente); IBizDetalleReservas = interface(IDetalleReservas) ['{7E718670-DDC1-411B-B8DF-A28B81F9B8C3}'] end; IBizInventario = interface(IInventario) ['{12051CDB-9BB1-43C5-AC89-181A27A35513}'] function GetIDAlmacenOrigen: Integer; procedure SetIDAlmacenOrigen(const Value: Integer); property IDAlmacenOrigen: Integer read GetIDAlmacenOrigen write SetIDAlmacenOrigen; function GetIDAlmacenDestino: Integer; procedure SetIDAlmacenDestino(const Value: Integer); property IDAlmacenDestino: Integer read GetIDAlmacenDestino write SetIDAlmacenDestino; function GetTipo: TEnumTipoMovimiento; procedure SetTipo(const Value: TEnumTipoMovimiento); property TipoMovimiento: TEnumTipoMovimiento read GetTipo write SetTipo; end; TBizDetalleReservas = class(TDetalleReservasDataTableRules, IBizDetalleReservas) end; TBizInventario = class(TInventarioDataTableRules, IBizInventario, ISeleccionable) private FIDAlmacenOrigen : Integer; FIDAlmacenDestino : Integer; FTipoMovimiento : TEnumTipoMovimiento; function GetIDAlmacenOrigen: Integer; procedure SetIDAlmacenOrigen(const Value: Integer); function GetIDAlmacenDestino: Integer; procedure SetIDAlmacenDestino(const Value: Integer); function GetTipo: TEnumTipoMovimiento; procedure SetTipo(const Value: TEnumTipoMovimiento); protected FSeleccionableInterface : ISeleccionable; procedure OnNewRecord(Sender: TDADataTable); override; procedure OnCalcFields(Sender: TDADataTable); override; public property IDAlmacenOrigen: Integer read GetIDAlmacenOrigen write SetIDAlmacenOrigen; property IDAlmacenDestino: Integer read GetIDAlmacenDestino write SetIDAlmacenDestino; property TipoMovimiento: TEnumTipoMovimiento read GetTipo write SetTipo; property SeleccionableInterface : ISeleccionable read FSeleccionableInterface write FSeleccionableInterface implements ISeleccionable; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; end; implementation uses Dialogs, uDACDSDataTable, SysUtils; { TBizInventario } constructor TBizInventario.Create(aDataTable: TDADataTable); begin inherited; IDAlmacenOrigen := -1; IDAlmacenDestino := -1; TipoMovimiento := tEntradaLibre; FSeleccionableInterface := TSeleccionable.Create(aDataTable); end; destructor TBizInventario.Destroy; begin FSeleccionableInterface := NIL; inherited; end; procedure TBizInventario.OnCalcFields(Sender: TDADataTable); begin inherited; ID := Self.DataTable.RecIDValue; end; procedure TBizInventario.OnNewRecord(Sender: TDADataTable); begin inherited; //Este ID realmente se corresponderá con el de la tabla de movimientos. ID := GetRecNo; //En función del tipo de operación vamos a coger el IDAlmacenOrigen o IDAlamcenDetino Case TipoMovimiento of tEntradaLibre, tEntradaPedidoProveedor : ID_ALMACEN := IDAlmacenDestino; tSalidaLibre, tSalidaAlbaranCliente, tTraslado : ID_ALMACEN := IDAlmacenOrigen; End; end; function TBizInventario.GetIDAlmacenDestino: Integer; begin Result := FIDAlmacenDestino; end; function TBizInventario.GetIDAlmacenOrigen: Integer; begin Result := FIDAlmacenOrigen; end; function TBizInventario.GetTipo: TEnumTipoMovimiento; begin Result := FTipoMovimiento; end; procedure TBizInventario.SetIDAlmacenDestino(const Value: Integer); begin FIDAlmacenDestino := Value; end; procedure TBizInventario.SetIDAlmacenOrigen(const Value: Integer); begin FIDAlmacenOrigen := Value; end; procedure TBizInventario.SetTipo(const Value: TEnumTipoMovimiento); begin FTipoMovimiento := Value; end; initialization RegisterDataTableRules(BIZ_CLIENT_INVENTARIO, TBizInventario); RegisterDataTableRules(BIZ_CLIENT_DETALLE_RESERVAS_INV, TBizDetalleReservas); end.