unit uBizInventario; interface uses uDAInterfaces, uDADataTable, schInventarioClient_Intf, uBizArticulos, uDBSelectionListUtils; const BIZ_CLIENT_INVENTARIO = 'Client.Inventario'; BIZ_CLIENT_DETALLE_RESERVAS_INV = 'Client.DetallesReservasInv'; CTE_INV_ALMACEN = 'ALMACEN'; CTE_INV_OBRA = 'OBRA'; CTE_TIPO_ENTRADA = 'E'; CTE_TIPO_SALIDA = 'S'; CTE_TIPO_RESERVA = 'R'; type TEnumTipoMovimiento = (tEntradaLibre, tSalidaLibre, tTraslado, tReserva, 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, ISeleccionable) protected FSeleccionableInterface : ISeleccionable; public property SeleccionableInterface : ISeleccionable read FSeleccionableInterface write FSeleccionableInterface implements ISeleccionable; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; 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; procedure BeforeOpen(Sender: TDADataTable); override; procedure AfterOpen(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, uDataTableUtils, SysUtils; { TBizInventario } procedure TBizInventario.AfterOpen(Sender: TDADataTable); var Contador: Integer; begin inherited; { DesconectarTabla(Sender); Sender.First; Contador := 1; while not Sender.EOF do begin if not Sender.Editing then Sender.Edit; Sender.FieldByName('ID').AsInteger := Contador; Inc(Contador); Sender.Next; end; ConectarTabla(Sender); } // end; procedure TBizInventario.BeforeOpen(Sender: TDADataTable); begin inherited; // end; 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; // -1, -2, -3... //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, tReserva : 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; { TBizDetalleReservas } constructor TBizDetalleReservas.Create(aDataTable: TDADataTable); begin inherited; FSeleccionableInterface := TSeleccionable.Create(aDataTable); end; destructor TBizDetalleReservas.Destroy; begin FSeleccionableInterface := NIL; inherited; end; initialization RegisterDataTableRules(BIZ_CLIENT_INVENTARIO, TBizInventario); RegisterDataTableRules(BIZ_CLIENT_DETALLE_RESERVAS_INV, TBizDetalleReservas); end.