unit uBizContactos; interface uses uDAInterfaces, uDADataTable, schContactosClient_Intf, uBizDatosBancarios, uBizCategoriasContacto, uDBSelectionListUtils, uBizDireccionesContacto; const BIZ_CLIENT_CONTACTO = 'Client.Contacto'; BIZ_CLIENT_CLIENTE = 'Client.Cliente'; BIZ_CLIENT_PROVEEDOR = 'Client.Proveedor'; BIZ_CLIENT_AGENTE = 'Client.Agente'; CATEGORIA_CLIENTE = 1; CATEGORIA_PROVEEDOR = 2; CATEGORIA_AGENTE = 3; PROVEEDOR_REGIMEN_IVA = 16; type IBizContacto = interface (IContactos) ['{CD585680-26B6-47A4-B684-89C468670F4A}'] procedure SetDatosBancarios(AValue : IBizDatosBancarios); function GetDatosBancarios : IBizDatosBancarios; property DatosBancarios : IBizDatosBancarios read GetDatosBancarios write SetDatosBancarios; function GetCategoria : String; property Categoria : String read GetCategoria; function _GetCategorias: IBizCategoriasContacto; procedure _SetCategorias(const Value: IBizCategoriasContacto); property _Categorias : IBizCategoriasContacto read _GetCategorias write _SetCategorias; function GetDirecciones: IBizDireccionesContacto; procedure SetDirecciones(const Value: IBizDireccionesContacto); property Direcciones : IBizDireccionesContacto read GetDirecciones write SetDirecciones; function GetSelectedRecords: ISelectedRecords; property SelectedRecords : ISelectedRecords read GetSelectedRecords; function EsNuevo : Boolean; end; IBizCliente = interface (IBizContacto) ['{EA48A6AA-AC96-4AD9-B383-F2FD4552EE76}'] function GetID_AGENTEValue: Integer; procedure SetID_AGENTEValue(const aValue: Integer); function GetPORTEValue: Float; procedure SetPORTEValue(const aValue: Float); function GetGRUPO_CLIENTEValue: String; procedure SetGRUPO_CLIENTEValue(const aValue: String); property ID_AGENTE: Integer read GetID_AGENTEValue write SetID_AGENTEValue; property GRUPO_CLIENTE: String read GetGRUPO_CLIENTEValue write SetGRUPO_CLIENTEValue; property PORTE: Float read GetPORTEValue write SetPORTEValue; end; IBizProveedor = interface (IBizContacto) ['{0CC1FBB8-C2F1-4E10-87B9-D4EEB1221299}'] function GetREGIMEN_IVAValue: Float; procedure SetREGIMEN_IVAValue(const aValue: Float); function GetDESCUENTOValue: Float; procedure SetDESCUENTOValue(const aValue: Float); property REGIMEN_IVA: Float read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; end; IBizAgente = interface (IBizContacto) ['{C3288C4E-127F-4AC5-A668-4DA88B79683F}'] end; TBizContacto = class(TContactosDataTableRules, IBizContacto, ISelectedRecords) private function GetSelected: Boolean; procedure SetSelected(const Value: Boolean); protected FDatosBancarios : IBizDatosBancarios; FDatosBancariosLink : TDADataSource; FCategorias : IBizCategoriasContacto; FCategoriasLink : TDADataSource; FDirecciones : IBizDireccionesContacto; FDireccionesLink : TDADataSource; FSelectedRecords : TSelectedRecords; function _GetCategorias: IBizCategoriasContacto; procedure _SetCategorias(const Value: IBizCategoriasContacto); procedure SetDatosBancarios(AValue : IBizDatosBancarios); function GetDatosBancarios : IBizDatosBancarios; function GetDirecciones: IBizDireccionesContacto; procedure SetDirecciones(const Value: IBizDireccionesContacto); function GetCategoria : String; procedure OnNewRecord(Sender: TDADataTable); override; public function EsNuevo : Boolean; procedure IniciarValoresContactoNuevo; virtual; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; property Categoria : String read GetCategoria; property _Categorias : IBizCategoriasContacto read _GetCategorias write _SetCategorias; property DatosBancarios : IBizDatosBancarios read GetDatosBancarios write SetDatosBancarios; property Direcciones : IBizDireccionesContacto read GetDirecciones write SetDirecciones; function GetSelectedRecords: ISelectedRecords; property SelectedRecords : ISelectedRecords read GetSelectedRecords implements ISelectedRecords; property Selected : Boolean read GetSelected write SetSelected; end; TBizCliente = class(TBizContacto, IBizCliente) protected function GetID_AGENTEValue: Integer; procedure SetID_AGENTEValue(const aValue: Integer); function GetPORTEValue: Float; procedure SetPORTEValue(const aValue: Float); function GetGRUPO_CLIENTEValue: String; procedure SetGRUPO_CLIENTEValue(const aValue: String); property ID_AGENTE: Integer read GetID_AGENTEValue write SetID_AGENTEValue; property GRUPO_CLIENTE: String read GetGRUPO_CLIENTEValue write SetGRUPO_CLIENTEValue; property PORTE: Float read GetPORTEValue write SetPORTEValue; public procedure IniciarValoresContactoNuevo; override; end; TBizProveedor = class(TBizContacto, IBizProveedor) protected function GetREGIMEN_IVAValue: Float; procedure SetREGIMEN_IVAValue(const aValue: Float); function GetDESCUENTOValue: Float; procedure SetDESCUENTOValue(const aValue: Float); property REGIMEN_IVA: Float read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; public procedure IniciarValoresContactoNuevo; override; end; TBizAgente = class(TBizContacto, IBizAgente) public procedure IniciarValoresContactoNuevo; override; end; implementation uses uDataTableUtils, Classes, DateUtils, SysUtils, uDataModuleUsuarios; { TBizContacto } function TBizContacto.GetSelected: Boolean; begin Result := FSelectedRecords.CurrentRowSelected end; procedure TBizContacto.SetSelected(const Value: Boolean); begin FSelectedRecords.CurrentRowSelected := True; end; constructor TBizContacto.Create(aDataTable: TDADataTable); begin inherited; FCategoriasLink := TDADataSource.Create(NIL); FCategoriasLink.DataTable := aDataTable; FDatosBancariosLink := TDADataSource.Create(NIL); FDatosBancariosLink.DataTable := aDataTable; FDireccionesLink := TDADataSource.Create(NIL); FDireccionesLink.DataTable := aDataTable; FSelectedRecords := TSelectedRecords.Create(aDataTable); end; destructor TBizContacto.Destroy; begin FCategorias := NIL; FCategoriasLink.Free; FDatosBancarios := NIL; FDatosBancariosLink.Free; FDirecciones := NIL; FDireccionesLink.Free; FreeAndNIL(FSelectedRecords); inherited; end; function TBizContacto.EsNuevo: Boolean; begin Result := (ID < 0); end; function TBizContacto.GetCategoria: String; begin case ID_CATEGORIA of 1 : Result := 'Cliente'; 2 : Result := 'Proveedor'; 3 : Result := 'Agente'; end; end; function TBizContacto.GetDatosBancarios: IBizDatosBancarios; begin Result := FDatosBancarios; end; function TBizContacto.GetDirecciones: IBizDireccionesContacto; begin Result := FDirecciones; end; function TBizContacto.GetSelectedRecords: ISelectedRecords; begin Result := FSelectedRecords; end; procedure TBizContacto.IniciarValoresContactoNuevo; begin // USUARIO := dmUsuarios.LoginInfo.Usuario; end; procedure TBizContacto.OnNewRecord(Sender: TDADataTable); begin inherited; ID := GetRecNo; // -1, -2, -3... IniciarValoresContactoNuevo; end; procedure TBizContacto.SetDatosBancarios(AValue: IBizDatosBancarios); begin FDatosBancarios := AValue; EnlazarMaestroDetalle(FDatosBancariosLink, FDatosBancarios); end; procedure TBizContacto.SetDirecciones(const Value: IBizDireccionesContacto); begin FDirecciones := Value; EnlazarMaestroDetalle(FDireccionesLink, FDirecciones); end; function TBizContacto._GetCategorias: IBizCategoriasContacto; begin Result := FCategorias; end; procedure TBizContacto._SetCategorias(const Value: IBizCategoriasContacto); begin FCategorias := Value; EnlazarMaestroDetalle(FCategoriasLink, FCategorias); end; { TBizCliente } function TBizCliente.GetGRUPO_CLIENTEValue: String; begin result := DataTable.Fields[idx_ClientesGRUPO_CLIENTE].AsString; end; function TBizCliente.GetID_AGENTEValue: Integer; begin result := DataTable.Fields[idx_ClientesID_AGENTE].AsInteger; end; procedure TBizCliente.SetGRUPO_CLIENTEValue(const aValue: String); begin DataTable.Fields[idx_ClientesGRUPO_CLIENTE].AsString := aValue; end; procedure TBizCliente.SetID_AGENTEValue(const aValue: Integer); begin DataTable.Fields[idx_ClientesID_AGENTE].AsInteger := aValue; end; function TBizCliente.GetPORTEValue: Float; begin result := DataTable.Fields[idx_ClientesPORTE].AsFloat end; procedure TBizCliente.SetPORTEValue(const aValue: Float); begin DataTable.Fields[idx_ClientesPORTE].AsFloat := aValue; end; procedure TBizCliente.IniciarValoresContactoNuevo; begin inherited; ID_CATEGORIA := CATEGORIA_CLIENTE; end; { TBizProveedor } function TBizProveedor.GetREGIMEN_IVAValue: Float; begin result := DataTable.Fields[idx_ProveedoresREGIMEN_IVA].AsFloat; end; procedure TBizProveedor.IniciarValoresContactoNuevo; begin inherited; ID_CATEGORIA := CATEGORIA_PROVEEDOR; REGIMEN_IVA := PROVEEDOR_REGIMEN_IVA; end; function TBizProveedor.GetDESCUENTOValue: Float; begin result := DataTable.Fields[idx_ProveedoresDESCUENTO].AsFloat; end; procedure TBizProveedor.SetDESCUENTOValue(const aValue: Float); begin DataTable.Fields[idx_ProveedoresDESCUENTO].AsFloat := aValue; end; procedure TBizProveedor.SetREGIMEN_IVAValue(const aValue: Float); begin DataTable.Fields[idx_ProveedoresREGIMEN_IVA].AsFloat := aValue; end; { TBizAgente } procedure TBizAgente.IniciarValoresContactoNuevo; begin inherited; ID_CATEGORIA := CATEGORIA_AGENTE; end; initialization RegisterDataTableRules(BIZ_CLIENT_CONTACTO, TBizContacto); RegisterDataTableRules(BIZ_CLIENT_CLIENTE, TBizCliente); RegisterDataTableRules(BIZ_CLIENT_PROVEEDOR, TBizProveedor); RegisterDataTableRules(BIZ_CLIENT_AGENTE, TBizAgente); finalization end.