SGEProduto · Domínio · Desenvolvimento
Repositório

migration-reference · implemented

Migration 12B — granting_party_registration_requests

Solicitações tipadas de cadastro de parte concedente feitas durante a abertura.

CampoRegra
idbigint, chave primária Laravel.
campus_idbigint obrigatório, FK para campuses.id com RESTRICT e índice; escopo imutável após criação.
document_type / document_numbertipo CPF/CNPJ e número validado pelo cast correspondente, normalizado sem pontuação; nulos em Draft, obrigatórios nos demais estados.
namenome ou razão social, obrigatório fora de Draft.
street, number, neighborhood, city, uf, zip_codeendereço proposto em colunas próprias; obrigatórios fora de Draft. UF usa BrazilianState; CEP guarda oito dígitos.
representative_name / representative_rolerepresentante e cargo, obrigatórios fora de Draft.
phone / emailopcionais; telefone validado e normalizado por PhoneCast, e-mail validado.
field_of_activityobrigatório fora de Draft.
professional_council, council_registration_number, credentialing_process_numberopcionais.
statusRegistrationRequestStatus, obrigatório.
granting_party_idFK nullable com exclusão restrita para granting_parties; obrigatória em Approved.
reviewed_atinstante opcional da análise.
decision_reasonmotivo obrigatório em Rejected e Cancelled; opcional nos demais estados.
timestampscreated_at e updated_at nativos.

A tabela registra a proposta enviada e sua decisão; granting_parties e addresses guardam o cadastro atual. Não há submitted_by_affiliation_id, reviewed_by_affiliation_id nem submission_snapshot. O Model participa do Activity Log Eloquent e registra atores e alterações; as Actions e Policies da análise ainda estão pendentes. A exclusão física pelo Model é bloqueada; não há deleted_at. Há índice secundário em campus_id, sem unicidade de documento ou constraints CHECK. O Model valida o campus e impede sua alteração após a criação.

A aprovação selecionará ou criará granting_parties em transação, sempre no campus preservado pelo pedido, e associará a concedente resultante ao pedido; o Model já rejeita concedente resultante de outro campus. CPF/CNPJ repetidos em outros campi não tornam o cadastro compartilhável. Ao criar uma concedente, criará também uma nova linha de addresses exclusiva dela; não reutilizará o endereço de outro cadastro, mesmo que seja idêntico. O pedido mantém o endereço proposto em colunas próprias para aceitar rascunhos incompletos e preservar o que foi enviado. CNPJ repetido não impede unidades distintas. A solicitação de estágio só poderá ser aceita após substituir a referência pendente pela concedente aprovada.