unit uBizContactos; interface uses uDAInterfaces, uDADataTable, schContactosClient_Intf, uBizDatosBancarios, uBizCategoriasContacto, uDBSelectionListUtils; const BIZ_CLIENT_CONTACTO = 'Client.Contacto'; BIZ_CLIENT_CLIENTE = 'Client.Cliente'; BIZ_CLIENT_PROVEEDOR = 'Client.Proveedor'; BIZ_CLIENT_VENDEDOR = 'Client.Vendedor'; BIZ_CLIENT_INSTALADOR = 'Client.Instalador'; CATEGORIA_CLIENTE = 1; CATEGORIA_PROVEEDOR = 2; CATEGORIA_VENDEDOR = 3; CATEGORIA_INSTALADOR = 4; type IBizContacto = interface (IContactos) ['{D0373875-7F16-4772-9DA9-C1A1CA218120}'] 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 GetSelectedRecords: ISelectedRecords; property SelectedRecords : ISelectedRecords read GetSelectedRecords; function EsNuevo : Boolean; end; IBizCliente = interface (IBizContacto) ['{CF183EF1-DF27-491C-AEE3-F17AABBA6541}'] function GetID_VENDEDORValue: Integer; procedure SetID_VENDEDORValue(const aValue: Integer); function GetPROCEDENCIAValue: String; procedure SetPROCEDENCIAValue(const aValue: String); property ID_VENDEDOR: Integer read GetID_VENDEDORValue write SetID_VENDEDORValue; property PROCEDENCIA: String read GetPROCEDENCIAValue write SetPROCEDENCIAValue; end; IBizProveedor = interface (IBizContacto) ['{0DA195B8-70DE-4DD0-BCD9-44BE30522DD7}'] function GetDISTRIBUYEValue: String; procedure SetDISTRIBUYEValue(const aValue: String); function GetDESCUENTOValue: Float; procedure SetDESCUENTOValue(const aValue: Float); property DISTRIBUYE: String read GetDISTRIBUYEValue write SetDISTRIBUYEValue; property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; end; IBizInstalador = interface (IBizContacto) ['{2B1B8D9D-2A26-4970-9B7C-9D585B8030DB}'] end; IBizVendedor = interface (IBizContacto) ['{31F93CBB-CE69-4621-9BD7-C79D302A2F58}'] function GetPORCENTAJE_COMISIONValue: Float; procedure SetPORCENTAJE_COMISIONValue(const aValue: Float); property PORCENTAJE_COMISION: Float read GetPORCENTAJE_COMISIONValue write SetPORCENTAJE_COMISIONValue; end; TBizContacto = class(TContactosDataTableRules, IBizContacto, ISelectedRecords) private function GetSelected: Boolean; procedure SetSelected(const Value: Boolean); protected FDatosBancarios : IBizDatosBancarios; FDatosBancariosLink : TDADataSource; FCategorias : IBizCategoriasContacto; FCategoriasLink : TDADataSource; FSelectedRecords : TSelectedRecords; function _GetCategorias: IBizCategoriasContacto; procedure _SetCategorias(const Value: IBizCategoriasContacto); procedure SetDatosBancarios(AValue : IBizDatosBancarios); function GetDatosBancarios : IBizDatosBancarios; 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; 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_VENDEDORValue: Integer; virtual; procedure SetID_VENDEDORValue(const aValue: Integer); virtual; function GetPROCEDENCIAValue: String; virtual; procedure SetPROCEDENCIAValue(const aValue: String); virtual; property ID_VENDEDOR: Integer read GetID_VENDEDORValue write SetID_VENDEDORValue; property PROCEDENCIA: String read GetPROCEDENCIAValue write SetPROCEDENCIAValue; public procedure IniciarValoresContactoNuevo; override; end; TBizProveedor = class(TBizContacto, IBizProveedor) protected function GetDISTRIBUYEValue: String; virtual; procedure SetDISTRIBUYEValue(const aValue: String); virtual; function GetDESCUENTOValue: Float; virtual; procedure SetDESCUENTOValue(const aValue: Float); virtual; property DISTRIBUYE: String read GetDISTRIBUYEValue write SetDISTRIBUYEValue; property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; public procedure IniciarValoresContactoNuevo; override; end; TBizInstalador = class(TBizContacto, IBizInstalador) public procedure IniciarValoresContactoNuevo; override; end; TBizVendedor = class(TBizContacto, IBizVendedor) protected function GetPORCENTAJE_COMISIONValue: Float; virtual; procedure SetPORCENTAJE_COMISIONValue(const aValue: Float); virtual; property PORCENTAJE_COMISION: Float read GetPORCENTAJE_COMISIONValue write SetPORCENTAJE_COMISIONValue; 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; FSelectedRecords := TSelectedRecords.Create(aDataTable); end; destructor TBizContacto.Destroy; begin FCategorias := NIL; FCategoriasLink.Free; FDatosBancarios := NIL; FDatosBancariosLink.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 := 'Vendedor'; 4 : Result := 'Instalador'; end; end; function TBizContacto.GetDatosBancarios: IBizDatosBancarios; begin Result := FDatosBancarios; 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; function TBizContacto._GetCategorias: IBizCategoriasContacto; begin Result := FCategorias; end; procedure TBizContacto._SetCategorias(const Value: IBizCategoriasContacto); begin FCategorias := Value; EnlazarMaestroDetalle(FCategoriasLink, FCategorias); end; { TBizCliente } function TBizCliente.GetID_VENDEDORValue: Integer; begin result := DataTable.Fields[idx_ClientesID_VENDEDOR].AsInteger; end; procedure TBizCliente.SetID_VENDEDORValue(const aValue: Integer); begin DataTable.Fields[idx_ClientesID_VENDEDOR].AsInteger := aValue; end; function TBizCliente.GetPROCEDENCIAValue: String; begin result := DataTable.Fields[idx_ClientesPROCEDENCIA].AsString; end; procedure TBizCliente.IniciarValoresContactoNuevo; begin inherited; ID_CATEGORIA := CATEGORIA_CLIENTE; end; procedure TBizCliente.SetPROCEDENCIAValue(const aValue: String); begin DataTable.Fields[idx_ClientesPROCEDENCIA].AsString := aValue; end; { TBizInstalador } procedure TBizInstalador.IniciarValoresContactoNuevo; begin inherited; ID_CATEGORIA := CATEGORIA_INSTALADOR; end; { TBizProveedor } function TBizProveedor.GetDISTRIBUYEValue: String; begin result := DataTable.Fields[idx_ProveedoresDISTRIBUYE].AsString; end; procedure TBizProveedor.IniciarValoresContactoNuevo; begin inherited; ID_CATEGORIA := CATEGORIA_PROVEEDOR; end; procedure TBizProveedor.SetDISTRIBUYEValue(const aValue: String); begin DataTable.Fields[idx_ProveedoresDISTRIBUYE].AsString := aValue; 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; { TBizVendedor } function TBizVendedor.GetPORCENTAJE_COMISIONValue: Float; begin result := DataTable.Fields[idx_VendedoresPORCENTAJE_COMISION].AsFloat; end; procedure TBizVendedor.SetPORCENTAJE_COMISIONValue(const aValue: Float); begin DataTable.Fields[idx_VendedoresPORCENTAJE_COMISION].AsFloat := aValue; end; procedure TBizVendedor.IniciarValoresContactoNuevo; begin inherited; ID_CATEGORIA := CATEGORIA_VENDEDOR; end; initialization RegisterDataTableRules(BIZ_CLIENT_CONTACTO, TBizContacto); RegisterDataTableRules(BIZ_CLIENT_CLIENTE, TBizCliente); RegisterDataTableRules(BIZ_CLIENT_PROVEEDOR, TBizProveedor); RegisterDataTableRules(BIZ_CLIENT_VENDEDOR, TBizVendedor); RegisterDataTableRules(BIZ_CLIENT_INSTALADOR, TBizInstalador); finalization end.