unit Editor_de_Documento_Base;

interface
uses System.SysUtils;


type TTag_Outras = class
   Usuario_Atual_Nome : string;
end;

type TTag_Guia = class
   Codigo                 : string;
   Guia_Paga              : string;
   Guia_Nao_Paga          : string;
   Guia_Estornada         : string;
   Descricao_Tipo_da_guia : string;
   Observacao             : string;
   Total                  : string;
end;

type TTag_Rpa = class
   Valor       : string;
   Data_Emisao : string
end;

type TEndereco = class
  private
    FCep: string;

    function GetEndereco_Completo : string;
    procedure SetCep(const Value: string);

  public
    Logradouro  : String;
    Numero      : String;
    Complemento : String;
    Bairro      : String;
    Cidade      : String;
    Uf          : String;

    property Endereco_Completo : string read GetEndereco_Completo;
    property Cep               : string read FCep write SetCep;

end;

type TTag_Dados_Registro = class
  private
    FTipo_Entidade: string;
    procedure SetTipo_Entidade(const Value: string);
  public
     Cnpj            : string;
     Nome            : string;
     Endereco        : TEndereco;
     Presidente      : String;
     Presidente_cpf  : string;
     Email           : string;

     property Tipo_Entidade   : string read FTipo_Entidade write SetTipo_Entidade;

     constructor Create;
     destructor Destroy;
end;



type
   TTag_Empresa = class
   public
     Cnpj                : String;
     Razao_Social        : String;
     Nome_Fantasia       : String;
     Endereco            : Tendereco;
     Telefone1           : String;
     Telefone2           : String;
     Email               : String;
     Contato             : String;
     Data_Cadastro       : String;
     Cnae                : String;
     Atividade_Principal : String;
     Endereco_Completo   : String;


     Constructor Create;
     Destructor  Destroy;

end;

type
   TTag_Contabilidade = class
   public
      Cnpj              : String;
      Razao_Social      : String;
      Nome_Fantasia     : String;
      Endereco          : Tendereco;
      Telefone1         : String;
      Telefone2         : String;
      Email             : String;
      Contato           : String;
      Endereco_Completo : String;

      Constructor Create;
      Destructor  Destroy;

end;


type
   TTag_Fornecedor = class
      Cnpj          : String;
      Razao_Social  : String;
      Nome_Fantasia : String;
      Endereco      : Tendereco;
      Telefone1     : String;
      Telefone2     : String;
      Email         : String;
      Contato       : String;

      Constructor Create;
      Destructor  Destroy;

end;

type TTag_Oficio = class
   public
      Numero_Oficio            : string;

      Integrante_Tratamento    : string;
      Integrante_Nome          : string;
      Integrante_Cpf           : string;
      Integrante_Rg            : string;
      Integrante_Telefone1     : string;
      Integrante_Telefone2     : string;
      Integrante_Email         : string;
      Integrante_Cargo         : string;

      Entidade_Codigo_Sindical : string;
      Entidade_Cnpj            : string;
      Entidade_Razao_Social    : string;
      Entidade_Nome_Fantasia   : string;
      Entidade_Endereco        : TEndereco;
      Entidade_Telefone1       : string;
      Entidade_Telefone2       : string;
      Entidade_Email           : string;
      Entidade_Contato         : string;
      Entidade_Datacad         : string;
      Entidade_Cnae            : string;

      constructor Create;
      destructor Destroy;

end;

implementation

{ TTag_Empresa }

constructor TTag_Empresa.Create;
begin
  Self.Endereco := TEndereco.Create;
end;

destructor TTag_Empresa.Destroy;
begin
  Self.Endereco.Destroy;
end;


{ TTag_Contabilidade }

constructor TTag_Contabilidade.Create;
begin
  Self.Endereco := TEndereco.Create;
end;

destructor TTag_Contabilidade.Destroy;
begin
  Self.Endereco.Destroy;
end;


{ TTag_Fornecedor }

constructor TTag_Fornecedor.Create;
begin
   Self.Endereco := TEndereco.Create;
end;

destructor TTag_Fornecedor.Destroy;
begin
  Self.Endereco.Destroy;
end;

{ TEndereco }

function TEndereco.GetEndereco_Completo : string;
var Endereco_completo : string;
begin
  Endereco_completo := Self.Logradouro;

  if (Self.Numero.Trim) <> '' then
     Endereco_completo := Endereco_completo + ', Nº ' + Self.Numero;

  if (Self.Complemento.trim) <> '' then
     Endereco_completo := Endereco_completo + '- ' + Self.Complemento;

  if (Self.Bairro.trim) <> '' then
     Endereco_completo := Endereco_completo + ', ' + Self.Bairro;

  if (Self.Cidade.trim) <> '' then
     Endereco_completo := Endereco_completo + ', ' + Self.Cidade;

  if (Self.Uf.trim) <> '' then
     Endereco_completo := Endereco_completo + ' - ' + Self.Uf;

  if (Self.Cep.trim) <> '' then
     Endereco_completo := Endereco_completo + ', Cep: ' + Self.Cep;

  result := Endereco_completo;

end;


procedure TEndereco.SetCep(const Value: string);
var cep : string;
begin
  cep := value;

  if cep.Length = 8 then
  begin
    insert('.', cep, 3);
    insert('-', cep, 7);
  end;

  FCep := cep;
end;

{ TTag_Oficio }

constructor TTag_Oficio.Create;
begin
   Self.Entidade_Endereco := TEndereco.Create;
end;

destructor TTag_Oficio.Destroy;
begin
   Self.Entidade_Endereco.Destroy;
end;


{ TTag_Dados_Registro }

constructor TTag_Dados_Registro.Create;
begin
   self.Endereco := TEndereco.Create;
end;

destructor TTag_Dados_Registro.Destroy;
begin
  self.Endereco.Destroy;
end;

procedure TTag_Dados_Registro.SetTipo_Entidade(const Value: string);
var tipo : integer;
begin
  if TryStrToInt(value, tipo) then
  begin
     case Tipo of
       1 : FTipo_Entidade := 'Sindicato';
       2 : FTipo_Entidade := 'Federação';
       3 : FTipo_Entidade := 'Confederação';
       4 : FTipo_Entidade := 'Cees';
     end;
  end;

end;

end.


