Documentation

TerminationService extends BaseService
in package

Classe responsável por gerar a guia de rescisão e mensal de um empregado.

Esta classe recebe os dados, faz as validações necessárias. Captura os dados da empresa ortogada. Captura os dados do empregado. Captura os dados financeiros do empregado. Captura os dados relacionados aos débitos. Verifica se existe débitos em aberto. Gera a guia de rescisão. Gera a guia mensal.

Tags
example
use App\Services\TerminationService;

$service = TerminationService();
$service->companyCnpj('12345678901234');
$service->customerCnpj('12345678901234');
$service->cpf('12345678901');
$service->amount(1000);
$service->generate();

Table of Contents

Properties

$api  : mixed
Este atributo mantém a instância da classe Api, que é utilizada para realizar chamadas à API externa.
$companyCnpj  : string|null
Este atributo armazena o CNPJ da empresa, informado na invocação do serviço.
$competency  : string|null
Este atributo armazena a data de competência.
$customerCnpj  : string|null
Este atributo armazena o CNPJ da cliente, informado na invocação do serviço.
$employer  : array<string|int, mixed>|null
Este atributo armazena os dados relacionados à empresa, como nome, CNPJ e entre outros.
$invoiceId  : string|null
Este atributo armazena o ID da guia.
$paymentInvoicePdfUrl  : string|null
Este atributo armazena a URL do PDF da guia de pagamento.
$uuid  : string|null
Este atributo armazena o UUID para contexto de logs.
$allowMonthly  : bool
Booleano que indica se a geração da guia mensal está permitida.
$allowTermination  : bool
Booleano que indica se a geração da guia de rescisão está permitida.
$amount  : int|null
Valor total rescisório em formato inteiro.
$cpf  : string|null
CPF do empregado.
$employee  : array<string|int, mixed>|null
Dados relacionados ao empregado, como nome, CPF e entre outros.
$employeeFinancialRecord  : array<string|int, mixed>|null
Dados financeiros do empregado.
$employeeGroupingRecord  : array<string|int, mixed>|null
Dados relacionados aos débitos, como valores, datas e entre outros.
$formattedAmount  : string|null
Valor total rescisório formatado com duas casas decimais.
$nonWorkingDays  : array<string|int, mixed>|null
Dias não úteis.
$payment  : string|null
Data de pagamento.
$severancePay  : bool|null
Este atributo armazena um booleano que indica se o mês anterior deve ser incluído no cálculo.
$shouldIncludePreviousMonth  : bool|null
Este atributo armazena um booleano que indica se deve considerar o valor do FGTS sobre as verbas rescisórias.
$tag  : string|null
Tag com valor da data de emissão ou descrição informada.
$terminationDate  : DateTime|null
Data de rescisão do empregado.

Methods

allowMonthly()  : self
Define se deve incluir débitos mensais na geração da guia de rescisão.
allowTermination()  : self
Define se deve incluir débitos de rescisão na geração da guia de rescisão.
amount()  : self
Define o valor da rescisão em centavos.
companyCnpj()  : self
Define o CNPJ da empresa.
competency()  : self
Define o mês e ano de competência para a instância da classe.
cpf()  : self
Define o CPF para a instância atual.
customerCnpj()  : self
Define o CNPJ do cliente.
formattedAmount()  : void
Formata o valor informado (em centavos) para uma string decimal com duas casas decimais, e atribui à propriedade $formattedAmount da classe.
generate()  : string
Gera a rescisão do empregado.
payment()  : self
Define a data de pagamento.
tag()  : self
Define a tag para a instância da classe.
terminationDate()  : self
Define a data de rescisão para a instância da classe.
createApiWithCnpj()  : MonthlyApi|TerminationApi
downloadInvoice()  : mixed
Faz o download de uma fatura a partir da URL informada.
getApiClass()  : string
Retorna a classe da API.
getDetailedInvoiceById()  : string|array<string|int, mixed>|null
Busca a guia de detalhamento pelo ID da guia.
getUuid()  : string
Gera um UUID aleatório no formato padrão.
returnError()  : string
sanitizeCompetency()  : string
Sanitiza a competência recebida, ajustando-a para o formato exigido pela API.
setEmployer()  : self
Define os dados do empregador.
validateRequiredFields()  : void
Valida os campos obrigatórios da rescisão.
calculatePaymentDate()  : string
Calcula a data de pagamento: terminationDate + 10 dias.
encodeAndReturnInvoices()  : string
Codifica o conteúdo dos PDFs das faturas detalhada e de pagamento em base64, e retorna uma string JSON contendo o nome, CNPJ, guia detalhada e guia de pagamento.
findEmployeeByCpf()  : array<string|int, mixed>|null
Busca um empregado pelo atributo CPF entre os empregados ativos, afastados e inativos.
hasEmployeesRemunerationHistory()  : bool
Verifica se o empregado possui histórico de remuneração, utilizado para fins rescisórios.
sanitizePayment()  : string
Sanitiza a data de pagamento recebida, ajustando-a para o formato exigido pela API.
sanitizeTag()  : string
Sanitiza e valida uma tag conforme os requisitos da API.
searchActiveDebitsByEmployee()  : bool
Busca os débitos ativos para o empregado selecionado.
searchGroupingsByEmployee()  : void
Procura o agrupamento de débitos do empregado.
setEmployee()  : self
Define os dados do empregado.
setEmployeeFinancialRecord()  : self
Define os dados do financeiro do empregado.
shouldIncludePreviousMonth()  : void
O resultado é atribuído ao atributo $shouldIncludePreviousMonth da classe.
stringToDateTime()  : DateTime
Converte uma string de data em um objeto DateTime.
validateFinancialAmountResponse()  : void
Valida o array de resposta do valor financeiro e lança uma exceção se houver mensagem de erro.
validatePaymentDate()  : void
Valida se a data de pagamento é um dia útil.

Properties

$api

Este atributo mantém a instância da classe Api, que é utilizada para realizar chamadas à API externa.

protected mixed $api = null

$companyCnpj

Este atributo armazena o CNPJ da empresa, informado na invocação do serviço.

protected string|null $companyCnpj = null

$competency

Este atributo armazena a data de competência.

protected string|null $competency = null

$customerCnpj

Este atributo armazena o CNPJ da cliente, informado na invocação do serviço.

protected string|null $customerCnpj = null

$employer

Este atributo armazena os dados relacionados à empresa, como nome, CNPJ e entre outros.

protected array<string|int, mixed>|null $employer = null

$invoiceId

Este atributo armazena o ID da guia.

protected string|null $invoiceId = null

$paymentInvoicePdfUrl

Este atributo armazena a URL do PDF da guia de pagamento.

protected string|null $paymentInvoicePdfUrl = null

$uuid

Este atributo armazena o UUID para contexto de logs.

protected string|null $uuid = null

$allowMonthly

Booleano que indica se a geração da guia mensal está permitida.

private bool $allowMonthly = true

$allowTermination

Booleano que indica se a geração da guia de rescisão está permitida.

private bool $allowTermination = true

$amount

Valor total rescisório em formato inteiro.

private int|null $amount = null

$employee

Dados relacionados ao empregado, como nome, CPF e entre outros.

private array<string|int, mixed>|null $employee = null

$employeeFinancialRecord

Dados financeiros do empregado.

private array<string|int, mixed>|null $employeeFinancialRecord = null

$employeeGroupingRecord

Dados relacionados aos débitos, como valores, datas e entre outros.

private array<string|int, mixed>|null $employeeGroupingRecord = null

$formattedAmount

Valor total rescisório formatado com duas casas decimais.

private string|null $formattedAmount = null

$nonWorkingDays

Dias não úteis.

private array<string|int, mixed>|null $nonWorkingDays = null

$severancePay

Este atributo armazena um booleano que indica se o mês anterior deve ser incluído no cálculo.

private bool|null $severancePay = true

consideraValorFgtsSobreVerbasRescisorias => TRUE

$shouldIncludePreviousMonth

Este atributo armazena um booleano que indica se deve considerar o valor do FGTS sobre as verbas rescisórias.

private bool|null $shouldIncludePreviousMonth = null

consideraValorFgtsSobreMesAnteriorRescisao => validar data de demissão

$tag

Tag com valor da data de emissão ou descrição informada.

private string|null $tag = null

$terminationDate

Data de rescisão do empregado.

private DateTime|null $terminationDate = null

Methods

allowMonthly()

Define se deve incluir débitos mensais na geração da guia de rescisão.

public allowMonthly(bool $allowMonthly) : self

Este método permite a inclusão de débitos mensais ao gerar a guia de rescisão

Parameters
$allowMonthly : bool

Indica se os débitos mensais devem ser incluídos.

Return values
self

Retorna a própria instância da classe.

allowTermination()

Define se deve incluir débitos de rescisão na geração da guia de rescisão.

public allowTermination(bool $allowTermination) : self

Este método permite a inclusão de débitos de rescisão ao gerar a guia de rescisão.

Parameters
$allowTermination : bool

Indica se os débitos de rescisão devem ser incluídos.

Return values
self

Retorna a própria instância da classe.

amount()

Define o valor da rescisão em centavos.

public amount(int $amount) : self

Este método recebe o valor da base da rescisão, que deve ser um inteiro representando centavos, e formata o valor para uso posterior.

Parameters
$amount : int

Valor da rescisão em centavos.

Tags
throws
InvalidArgumentException

Se o valor informado não for um inteiro.

Return values
self

Retorna a instância atual para encadeamento de métodos.

companyCnpj()

Define o CNPJ da empresa.

public companyCnpj(string $cnpj) : self

Este método recebe o CNPJ da empresa e o formata, além de criar a instância da classe Api.

Parameters
$cnpj : string

O CNPJ da empresa.

Return values
self

A própria instância da classe.

competency()

Define o mês e ano de competência para a instância da classe.

public competency(string $competency) : self

O parâmetro deve ser informado no formato "mes/ano", por exemplo "04/2025". O valor informado será sanitizado pelo método sanitizeCompetency para se adequar ao padrão exigido pela API.

Parameters
$competency : string

Mês e ano de competência no formato "mes/ano".

Return values
self

Retorna a própria instância para permitir encadeamento de métodos.

cpf()

Define o CPF para a instância atual.

public cpf(string $cpf) : self

Este método recebe um CPF, normaliza-o para conter apenas dígitos e o armazena na propriedade interna da classe, retornando a própria instância.

Parameters
$cpf : string

O CPF a ser definido.

Return values
self

A própria instância da classe.

customerCnpj()

Define o CNPJ do cliente.

public customerCnpj(string $cnpj) : self

Este método recebe o CNPJ do cliente e o formata. Além disso, a instância da classe Api é (re)criada utilizando o CNPJ da empresa e o CNPJ do cliente.

Parameters
$cnpj : string

O CNPJ do cliente.

Return values
self

A própria instância da classe.

formattedAmount()

Formata o valor informado (em centavos) para uma string decimal com duas casas decimais, e atribui à propriedade $formattedAmount da classe.

public formattedAmount(int $amount) : void

Este método é chamado pelo método amount para representar o valor monetário.

Parameters
$amount : int

Valor em centavos a ser formatado.

generate()

Gera a rescisão do empregado.

public generate() : string

Este método orquestra todo o processo de geração de rescisão, desde a validação dos campos, busca de dados do empregador e empregado, verificação de histórico financeiro, cálculo de valores, busca de débitos ativos e geração das guias (detalhada e de pagamento).

Tags
throws
DataNotFoundException

Se algum dado necessário não for encontrado.

throws
ApiClientException

Se houver erro na comunicação com a API.

throws
InvalidArgumentException

Se houver erro de validação nos dados.

Return values
string

JSON contendo os dados do empregador, empregado e os PDFs das guias em base64.

payment()

Define a data de pagamento.

public payment(string $payment) : self
Parameters
$payment : string

Data de pagamento no formato "DD/MM/YYYY".

Return values
self

tag()

Define a tag para a instância da classe.

public tag([string|null $tag = null ]) : self

Observação: O comprimento máximo permitido para a tag é de 32 caracteres.

Parameters
$tag : string|null = null

Valor da tag a ser atribuída, ou nulo para usar a data de emissão.

Return values
self

terminationDate()

Define a data de rescisão para a instância da classe.

public terminationDate(DateTime $terminationDate) : self

O parâmetro deve ser informado no formato "dia/mes/ano", por exemplo "20/04/2025". O valor informado será sanitizado e a data de pagamento será calculada automaticamente como 10 dias corridos após a data de rescisão, a menos que seja definida manualmente através do método payment().

Parameters
$terminationDate : DateTime

Data de rescisão informada no formato "DD/MM/YYYY" ou objeto DateTime.

Return values
self

Retorna a própria instância para permitir encadeamento de métodos.

createApiWithCnpj()

protected createApiWithCnpj(string $companyCnpj, string $customerCnpj) : MonthlyApi|TerminationApi
Parameters
$companyCnpj : string

O CNPJ da empresa.

$customerCnpj : string

O CNPJ do cliente utilizado em conjunto com o CNPJ da empresa.

Return values
MonthlyApi|TerminationApi

A instância da classe Api configurada com o cookie de sessão.

downloadInvoice()

Faz o download de uma fatura a partir da URL informada.

protected downloadInvoice(string $invoiceUrl) : mixed
Parameters
$invoiceUrl : string

URL da fatura a ser baixada.

Return values
mixed

Conteúdo da fatura detalhada obtida pelo download.

getApiClass()

Retorna a classe da API.

protected getApiClass() : string
Return values
string

A classe da API.

getDetailedInvoiceById()

Busca a guia de detalhamento pelo ID da guia.

protected getDetailedInvoiceById(mixed $invoiceId) : string|array<string|int, mixed>|null

Caso a guia detalhada seja encontrada, retorna o conteúdo do arquivo através da URL. Se não for possível gerar ou encontrar a guia detalhada, lança uma exceção.

Parameters
$invoiceId : mixed

ID da guia para busca do detalhamento.

Tags
throws
DataNotFoundException

Caso não seja possível gerar ou encontrar a guia detalhada.

Return values
string|array<string|int, mixed>|null

Conteúdo do arquivo detalhado ou nulo.

getUuid()

Gera um UUID aleatório no formato padrão.

protected getUuid() : string

Este método é utilizado apenas para cumprir um requisito da API, que exige o envio de uma string UUID em algumas requisições. O UUID gerado não possui relação com outros dados do sistema.

Return values
string

UUID gerado aleatoriamente.

returnError()

protected returnError(int $code, string $message) : string
Parameters
$code : int
$message : string
Return values
string

sanitizeCompetency()

Sanitiza a competência recebida, ajustando-a para o formato exigido pela API.

protected sanitizeCompetency(string $competency) : string

Este método recebe uma string representando a competência no formato 'mes/ano', valida e converte para o formato 'ano + mes' utilizado pela API. Trata casos especiais como 13º salário (décimo terceiro).

Parameters
$competency : string

Data de competência no formato 'MM/YYYY'.

Tags
throws
InvalidArgumentException

Se a competência estiver em formato inválido.

Return values
string

Competência ajustada no formato 'YYYYMM' ou '13YYYY' para décimo terceiro.

setEmployer()

Define os dados do empregador.

protected setEmployer(array<string|int, mixed> $employer) : self

Recebe um array com os dados do empregador e atribui ao atributo da classe.

Parameters
$employer : array<string|int, mixed>

Array contendo os dados do empregador.

Return values
self

validateRequiredFields()

Valida os campos obrigatórios da rescisão.

protected validateRequiredFields() : void

Esta função verifica se os parâmetros essenciais para o processamento da rescisão estão preenchidos. Caso algum dos campos obrigatórios esteja ausente, uma exceção InvalidArgumentException será lançada informando qual parâmetro está faltando e, quando aplicável, o formato esperado.

Tags
throws
InvalidArgumentException

Se algum campo obrigatório não for informado ou estiver vazio.

calculatePaymentDate()

Calcula a data de pagamento: terminationDate + 10 dias.

private calculatePaymentDate() : string

Se cair em dia não útil, avança para o próximo dia útil.

Return values
string

Data de pagamento no formato Y-m-d.

encodeAndReturnInvoices()

Codifica o conteúdo dos PDFs das faturas detalhada e de pagamento em base64, e retorna uma string JSON contendo o nome, CNPJ, guia detalhada e guia de pagamento.

private encodeAndReturnInvoices(string $detailedInvoicePdfContent, string $paymentInvoicePdfContent) : string
Parameters
$detailedInvoicePdfContent : string

Conteúdo do PDF da fatura detalhada.

$paymentInvoicePdfContent : string

Conteúdo do PDF da fatura de pagamento.

Return values
string

JSON com os dados do empregador, empregado e guias em base64.

findEmployeeByCpf()

Busca um empregado pelo atributo CPF entre os empregados ativos, afastados e inativos.

private findEmployeeByCpf(string $cpf) : array<string|int, mixed>|null
Parameters
$cpf : string

O CPF do empregado a ser buscado.

Return values
array<string|int, mixed>|null

Retorna o empregado encontrado ou null se não existir.

hasEmployeesRemunerationHistory()

Verifica se o empregado possui histórico de remuneração, utilizado para fins rescisórios.

private hasEmployeesRemunerationHistory(string $cpf) : bool
Parameters
$cpf : string

CPF do empregado.

Return values
bool

Retorna true se houver histórico, false se não houver.

sanitizePayment()

Sanitiza a data de pagamento recebida, ajustando-a para o formato exigido pela API.

private sanitizePayment(string $payment) : string

Este método recebe uma string representando a data de pagamento no formato 'dia/mes/ano', valida e converte para o formato 'ano + mes + dia' utilizado pela API.

Parameters
$payment : string

Data de pagamento no formato 'DD/MM/YYYY'.

Tags
throws
InvalidArgumentException

Se a data de pagamento estiver em formato inválido.

Return values
string

Data de pagamento ajustada no formato 'YYYY/MM/DD'.

sanitizeTag()

Sanitiza e valida uma tag conforme os requisitos da API.

private sanitizeTag(string $tag) : string

Este método recebe uma string representando uma tag, converte para maiúsculas, remove caracteres inválidos (permitindo apenas A-Z, 0-9, $, %, *, +, -, ., :, / e espaço), e verifica se o comprimento excede 32 caracteres. Caso exceda, lança uma InvalidArgumentException.

Parameters
$tag : string

A tag a ser sanitizada e validada.

Tags
throws
InvalidArgumentException

Se a tag possuir mais de 32 caracteres após sanitização.

Return values
string

A tag sanitizada.

searchActiveDebitsByEmployee()

Busca os débitos ativos para o empregado selecionado.

private searchActiveDebitsByEmployee(array<string|int, mixed> $employee) : bool

Este método limpa o carrinho de débitos, obtém os débitos ativos do empregado para a competência atual e, caso não existam guias relacionadas, cria um novo carrinho de débitos para o empregado. Se o carrinho criado possuir apenas um débito, retorna o agrupamento correspondente.

Aqui buscamos os débitos existentes para o empregado selecionado, posteriormente é retornado o carrinho com o agrupamento.

Parameters
$employee : array<string|int, mixed>

Empregado para o qual os débitos serão buscados.

Return values
bool

Retorna true se encontrar débitos, false caso contrário.

searchGroupingsByEmployee()

Procura o agrupamento de débitos do empregado.

private searchGroupingsByEmployee(array<string|int, mixed> $employeeGroupingRecord) : void

Aqui procuramos o agrupamento de débitos do empregado, caso encontrado, é retornado o agrupamento, caso contrário é emitida a nova guia.

Caso exista apenas um agrupamento, emite uma nova guia utilizando a API. Se a guia for gerada com sucesso, armazena a URL do PDF da guia.

Parameters
$employeeGroupingRecord : array<string|int, mixed>

Registro contendo informações dos agrupamentos do empregado.

Tags
throws
InvalidArgumentException

Se o agrupamento de débitos for inválido.

setEmployee()

Define os dados do empregado.

private setEmployee(array<string|int, mixed> $employee) : self

Recebe um array com os dados do empregado e atribui ao atributo da classe.

Parameters
$employee : array<string|int, mixed>

Array contendo os dados do empregado.

Return values
self

setEmployeeFinancialRecord()

Define os dados do financeiro do empregado.

private setEmployeeFinancialRecord(array<string|int, mixed> $employeeFinancialRecord) : self

Recebe um array com os dados financeiros do empregado e atribui ao atributo da classe.

Parameters
$employeeFinancialRecord : array<string|int, mixed>

Array contendo os dados financeiros do empregado.

Return values
self

shouldIncludePreviousMonth()

O resultado é atribuído ao atributo $shouldIncludePreviousMonth da classe.

private shouldIncludePreviousMonth() : void

Busca no atributo da classe os dados financeiros do empregado. Caso a data de desligamento esteja entre os dias 1º e 10º, retorna verdadeiro; caso seja do dia 11º em diante, retorna falso. O resultado é atribuído ao atributo $severancePay da classe. Essa informação será utilizada posteriormente para emissão da guia de rescisão, a fim de incluir o mês anterior nos cálculos.

stringToDateTime()

Converte uma string de data em um objeto DateTime.

private stringToDateTime(string $date[, string $format = 'd/m/Y' ]) : DateTime

Este método recebe uma string representando uma data e um formato específico, e retorna um objeto DateTime configurado com o timezone 'America/Sao_Paulo'.

Formatos aceitos:

  • d/m/Y (ex: 07/01/2026) - Data completa
  • d-m-Y (ex: 07-01-2026) - Data completa com hífen
  • Y-m-d (ex: 2026-01-07) - Data ISO
  • m/Y (ex: 12/2025) - Apenas mês/ano (retorna primeiro dia)
  • Y-m (ex: 2025-12) - Apenas ano-mês (retorna primeiro dia)
Parameters
$date : string

Data no formato string.

$format : string = 'd/m/Y'

Formato da data de entrada.

Tags
throws
InvalidArgumentException

Se a data estiver em formato inválido.

Return values
DateTime

Objeto DateTime configurado.

validateFinancialAmountResponse()

Valida o array de resposta do valor financeiro e lança uma exceção se houver mensagem de erro.

private validateFinancialAmountResponse(array<string|int, mixed> $response) : void

Verifica se a chave 'mensagem' existe e é um array. Se sim, obtém a primeira mensagem, converte a codificação de ISO-8859-1 para UTF-8, remove o prefixo 'FIC0080 - ' e lança uma InvalidArgumentException com a mensagem processada e o código de status 400.

Parameters
$response : array<string|int, mixed>

O array de resposta a ser validado.

Tags
throws
InvalidArgumentException

Se uma mensagem de erro for encontrada na resposta.

validatePaymentDate()

Valida se a data de pagamento é um dia útil.

private validatePaymentDate(string $paymentDate) : void
Parameters
$paymentDate : string

Data de pagamento no formato Y-m-d.

Tags
throws
InvalidArgumentException

Se a data cair em dia não útil.


        
On this page

Search results