Obriga Autorizador na Devolução/Cancelamento de Retirada de Locações
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Locações → Parâmetros de Locações → "Obriga Autorizador [MPD046]" Tabela:
PARMFATUR.ST_AUTORIZADORLOCValor padrão:S(Sim - exige autorizador)
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| Retirada/Devolução de Locação | MPD046 | Controle de retirada e devolução de produtos locados (única tela consumidora do parâmetro) |
Observação: o
grepemsource/mostra que este parâmetro só é lido fora deMFA001pela tela MPD046 (nenhuma outra unit consomeST_AUTORIZADORLOC). As demais referências apenas persistem/carregam o valor na própriaPARMFATUR.
Procedures impactadas
Não foram encontradas referências a ST_AUTORIZADORLOC em nenhum script SQL de Scripts/ (0 ocorrências). O parâmetro é utilizado exclusivamente pelo código Delphi da tela MPD046.
Campos envolvidos
| Campo | Descrição |
|---|---|
PARMFATUR.ST_AUTORIZADORLOC | Parâmetro principal (S/N) |
AUTORIZADOR.CD_AUTORIZADOR | Usuário habilitado como autorizador |
AUTORIZADOR.ST_ATIVO | Se o autorizador está ativo (lido na abertura da MPD046) |
FILTROS.CD_USUARIORETIRADA | Login digitado na tela de confirmação TfrmMPD046OK |
FILTROS.SENHA_RETIRADA | Senha digitada na tela de confirmação TfrmMPD046OK |
FILTROS.ST_RETIRADA | Flag de cancelamento de retirada (setado antes da confirmação do autorizador) |
FILTROS.DT_DEVOLUCAO | Data de devolução do item locado |
FILTROS.ST_AVARIA | Indica se a devolução é com/sem avaria |
Opções disponíveis
S - Sim (exige autorizador)
| O que faz | Detalhe |
|---|---|
| Exige autorizador? | SIM, em todas as operações de devolução e cancelamento de retirada na MPD046 |
| Tela exibida | TfrmMPD046OK (login + senha do autorizador) |
| Fluxos afetados | (1) Devolução sem avaria com confirmação; (2) Devolução com avaria / sem data; (3) Cancelamento de retirada |
| Consequência ao cancelar | Se TfrmMPD046OK retornar diferente de mrOk, a operação é abortada |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Locações → "Obriga Autorizador [MPD046]" = Sim
- Salve os parâmetros (F6)
- Cadastre pelo menos um usuário em AUTORIZADOR com
ST_ATIVO = S - Abra MPD046 (Retirada/Devolução de Locação)
- Filtre um contrato/locação em aberto
- Cenário A - Devolução sem avaria: informe
DT_DEVOLUCAO, deixeST_AVARIA = N, tente salvar (F6) → sistema pergunta "Confirmar Devolução sem Avaria?" → ao confirmar, abreTfrmMPD046OKpedindo login/senha do autorizador - Cenário B - Devolução com avaria ou sem data: informe dados → sistema abre direto
TfrmMPD046OK - Cenário C - Cancelamento de retirada: marque itens e confirme cancelamento →
tabFILTROSST_RETIRADA = 'S'→ abreTfrmMPD046OK - Informe login e senha de autorizador válido → botão Confirmar executa
frmMPD046.Confirma()e persiste a operação - Se Cancelar for clicado (
BtnCancelar1), os camposCD_USUARIORETIRADA,SENHA_RETIRADA,DT_DEVOLUCAO,DT_RETIRADA,ST_LAVANDERIA,ST_AJUSTE,NM_COSTUREIRAsão limpos e a operação é abortada
Resultado esperado: toda devolução ou cancelamento de retirada em MPD046 só se concretiza após validação do autorizador via login/senha, impedindo que um operador comum libere produtos locados sem conferência.
N - Não (não exige autorizador)
| O que faz | Detalhe |
|---|---|
| Exige autorizador? | NÃO - operação é confirmada diretamente |
| Tela exibida | Nenhuma - vai direto para confirma() |
| Fluxo | edtCD_EMPRESA.Text := '1'; confirma(); |
| Risco operacional | Qualquer usuário com acesso à MPD046 pode finalizar devolução/cancelamento |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Locações → "Obriga Autorizador [MPD046]" = Não
- Salve os parâmetros (F6)
- Abra MPD046
- Filtre um contrato/locação em aberto
- Informe dados da devolução (ou marque cancelamento de retirada) e salve (F6)
- Nenhuma tela de autorizador é exibida - o método
confirma()é chamado imediatamente e a operação é persistida - O campo
edtCD_EMPRESA.Texté forçado para'1'antes doconfirma()
Resultado esperado: operador conclui a devolução/cancelamento sem necessidade de autorização adicional. Útil em cenários onde o próprio operador da MPD046 já é responsável pela conferência, mas diminui o controle de segregação de função.
Tabela Comparativa Resumida
| Valor | Exige Autorizador? | Tela Modal | Fluxos Afetados em MPD046 | Fallback se Cancelar |
|---|---|---|---|---|
| S (padrão) | Sim | TfrmMPD046OK | Devolução sem avaria (com confirmação), devolução com avaria/sem data, cancelamento de retirada | Aborta operação (Exit) |
| N | Não | - | Mesmos fluxos seguem direto para Confirma() | Não aplicável |
Referências no Código Fonte
Tela de configuração (MFA001)
source/MFA001/UMFA001.dfm:10630-object pagLocacao: TTabSheetcomCaption = 'Locações'source/MFA001/UMFA001.dfm:10646-10659-Label67comCaption = 'Obriga Autorizador [MPD046]'(label do combo)source/MFA001/UMFA001.dfm:10785-10811-object cmbObrigaAutorizadorLoc: TwwDBComboBoxcomDataField = 'ST_AUTORIZADORLOC'eItems.Strings = ('Sim'#9'S', 'Não'#9'N')source/MFA001/UdmMFA001.pas:201- declaraçãotabPARMFATURST_AUTORIZADORLOC: TStringFieldsource/MFA001/UdmMFA001.pas:533- valor padrão emAfterInsert:tabPARMFATURST_AUTORIZADORLOC.AsString := 'S';source/MFA001/UdmMFA001.dfm:1500-1505- definição doTStringField(Size = 1,FixedChar = True)source/MFA001/UdmMFA001.dfm:210,2405,2571,2800,3090- inclusão emSELECT,INSERT,UPDATEdaPARMFATUR
Tela consumidora (MPD046)
source/MPD046/UdmMPD046.pas:185- variável públicaiST_AUTORIZADORLOC: Stringno data modulesource/MPD046/UMPD046.pas:218- carga do parâmetro:dmMPD046.iST_AUTORIZADORLOC := ExecutaConsulta(dmMPD046.transaction,'SELECT P.ST_AUTORIZADORLOC FROM PARMFATUR P WHERE P.CD_EMPRESA = '+ IntToStr(sessao.empresa.cd_empresa))[0];source/MPD046/UMPD046.pas:1162- decisão no fluxo de devolução sem avaria com confirmação:if(dmMPD046.iST_AUTORIZADORLOC = 'S')thenif (msgcodigo('C-0000',['Confirmar Devolução sem Avaria?'])) thenApplication.CreateForm(TfrmMPD046OK, frmMPD046OK);source/MPD046/UMPD046.pas:1183- decisão no fluxo de devolução com avaria / sem data de devolução:if(dmMPD046.iST_AUTORIZADORLOC = 'S')thenbeginApplication.CreateForm(TfrmMPD046OK, frmMPD046OK);if ( frmMPD046OK.ShowModal = mrOk ) then ...endelsebeginedtCD_EMPRESA.Text := '1';confirma();end;source/MPD046/UMPD046.pas:1437- decisão no fluxo de cancelamento de retirada:dmMPD046.tabFILTROS.Edit;dmMPD046.tabFILTROSST_RETIRADA.AsString := 'S';if(dmMPD046.iST_AUTORIZADORLOC = 'S')thenbeginApplication.CreateForm(TfrmMPD046OK, frmMPD046OK);...endelsebeginedtCD_EMPRESA.Text := '1';confirma();end;
Formulário de autorização (TfrmMPD046OK)
source/MPD046/UfrmMPD046OK.pas:12-29- declaração da classe comedtLogin,edtSenha,btnConfirmar,btnCancelar1source/MPD046/UfrmMPD046OK.pas:42-54-FormCreateremove a opção "Fechar" do menu de sistema (só saída via botões)source/MPD046/UfrmMPD046OK.pas:65-80-BtnCancelar1ClicklimpaCD_USUARIORETIRADA,SENHA_RETIRADA,DT_DEVOLUCAO,DT_RETIRADA,ST_LAVANDERIA,ST_AJUSTE,NM_COSTUREIRAe fecha o formuláriosource/MPD046/UfrmMPD046OK.pas:83-96-btnConfirmarClickinvocafrmMPD046.Confirma()e, em caso de exceção, relança comoJException W-0000
Scripts SQL
- Nenhuma ocorrência de
ST_AUTORIZADORLOCemScripts/- o parâmetro é puramente client-side (regra implementada apenas no Delphi da MPD046).