Parâmetro de Operadora de Celular
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Notas Fiscais → Parâmetros de Notas (label "Desconto Operadora") Tabela:
PARMFATUR.ST_OPERADORA(DOM_CHAR1, NOT NULL) Valor padrão:T(Tim)
Define qual operadora de celular (Tim ou Vivo) rege o formulário "Dados Contrato Operadora" exibido na emissão de Nota Fiscal quando o item é um celular com Número de Série Controlado (ITEM.ST_SERIAL = 'C') e a operação envolve desconto promocional da operadora. A diferença prática é que a operadora Vivo habilita o campo "Valor Desconto" (VL_DESCOPERADORA) no popup de contrato, enquanto a operadora Tim mantém esse campo oculto.
Telas impactadas
| Módulo | Código | Descrição | Uso |
|---|---|---|---|
| Configuração | MFA001 | Parâmetros de Faturamento | Define o valor (produtora) |
| Nota Fiscal Saída | MNF002 | Emissão de NF de saída | Lê parmfatur.values['ST_OPERADORA'] para decidir se mostra VL_DESCOPERADORA no TfrmCELULAR |
| Nota Fiscal Saída (variante) | MNF008 | Emissão de NF Saída (fluxo alternativo) | Lê iST_OPERADORA em TfrmCELULAR para decidir se mostra VL_DESCOPERADORA |
| Nota Fiscal (leitura secundária) | MCO006 | Nota fiscal consórcio/carga | Carrega a coluna no cursor PARMFATUR, mas não ramifica lógica por ela |
| Nota Fiscal (leitura) | MNF026 | Nota fiscal (fluxo alternativo) | Possui formulário UCELULAR mas não ramifica por ST_OPERADORA no código analisado |
| Cópia de parâmetros | CPD009 | Cópia/Replicação de PARMFATUR | Apenas inclui ST_OPERADORA no SELECT/INSERT/UPDATE da réplica da tabela |
| Cópia de parâmetros | RCA006 | Cópia de parâmetros (recap) | Apenas inclui ST_OPERADORA na manipulação de PARMFATUR |
Procedures impactadas
Nenhuma stored procedure ou view em Scripts/ referencia ST_OPERADORA. A lógica está inteiramente no cliente Delphi (MNF002 e MNF008).
Campos envolvidos
| Campo | Descrição |
|---|---|
PARMFATUR.ST_OPERADORA | Parâmetro principal: T (Tim) ou V (Vivo) |
ITEM.ST_SERIAL = 'C' | Flag no cadastro de produto que indica "Número de Série Controlado com Contrato Operadora" (gatilho para abrir o popup) |
ITEMNOTA.VL_DESCOPERADORA | Valor do desconto concedido pela operadora no item (campo do popup, visível só quando ST_OPERADORA = 'V') |
TfrmCELULAR.edtVL_DESCOPERADORA | Controle DBEdit do popup (UCELULAR.dfm linha 179, DataField = 'VL_DESCOPERADORA') |
TfrmCELULAR.lblVL_DESCOPERADORA | Label "Valor Desconto" do popup (UCELULAR.dfm linha 100, caption em UCELULAR.dfm:106) |
Opções disponíveis
T - Tim
| O que faz | Detalhe |
|---|---|
| Operadora ativa | Tim |
Campo VL_DESCOPERADORA no popup TfrmCELULAR | Invisível (não exibe o campo de desconto promocional) |
| Label "Valor Desconto" | Invisível |
| Popup "Dados Contrato Operadora" é exibido? | Sim, sempre que o item tem ST_SERIAL = 'C' e há desconto promocional aceito pelo usuário |
Valor gravado em ITEMNOTA.VL_DESCOPERADORA | 0 (campo não editável pelo operador) |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Ambos → Opção 1 → "Desconto Operadora" = "Tim"
- Salve os parâmetros (F6)
- Abra uma Nota Fiscal de saída em MNF002
- Informe um item com
ITEM.ST_SERIAL = 'C'(celular com contrato operadora) e aplique desconto - O sistema pergunta: "Desconto Promocional Operadora?" (mensagem
C-0000) - Responda Sim
- O popup "Dados Contrato Operadora" é aberto
- O campo "Valor Desconto" permanece oculto — somente os dados do contrato (Nº Celular, Nº Contrato, Tipo Contrato) são solicitados
Resultado esperado: O usuário informa apenas os dados do contrato; o valor do desconto não é capturado via popup (VL_DESCOPERADORA permanece 0 na nota).
Este é o valor padrão ao criar um novo registro no MFA001 (ver
UdmMFA001.paslinha 462).
V - Vivo
| O que faz | Detalhe |
|---|---|
| Operadora ativa | Vivo |
Campo VL_DESCOPERADORA no popup TfrmCELULAR | Visível e editável |
| Label "Valor Desconto" | Visível |
| Popup "Dados Contrato Operadora" é exibido? | Sim, sempre que o item tem ST_SERIAL = 'C' e há desconto promocional aceito pelo usuário |
Valor pré-preenchido em VL_DESCOPERADORA | Antes de abrir o popup, MNF002/UdmMNF002.pas:1956 já grava tabITEMNOTAVL_DESCOPERADORA.AsFloat := cdsTOTALIZADORT_VL_DESCONTO.AsFloat (valor do desconto aplicado no totalizador) |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Ambos → Opção 1 → "Desconto Operadora" = "Vivo"
- Salve os parâmetros (F6)
- Abra uma Nota Fiscal de saída em MNF002
- Informe um item com
ITEM.ST_SERIAL = 'C'e aplique desconto - O sistema pergunta: "Desconto Promocional Operadora?" (mensagem
C-0000) - Responda Sim
- O popup "Dados Contrato Operadora" é aberto
- Os controles
lblVL_DESCOPERADORAeedtVL_DESCOPERADORAficam visíveis (linhas 1962-1963 deUdmMNF002.pas), exibindo o "Valor Desconto" já preenchido com o valor do totalizador
Resultado esperado: Além dos dados do contrato, o usuário vê (e pode confirmar/ajustar) o "Valor Desconto" concedido pela operadora; esse valor é persistido em ITEMNOTA.VL_DESCOPERADORA.
Observação Importante: gatilho de ST_SERIAL = 'C'
ST_OPERADORA só tem efeito prático quando:
- O item vendido possui
ITEM.ST_SERIAL = 'C'(Número de Série Controlado com operadora), E - Existe desconto aplicado (
cdsTOTALIZADOR.T_VL_DESCONTO > 0), E - O usuário confirma a mensagem "Desconto Promocional Operadora?" (
C-0000), E - A flag interna
iSt_DescontoOperadoraainda está em'N'(só pergunta uma vez por nota).
Caso qualquer condição não seja atendida, o popup TfrmCELULAR nem é aberto e o parâmetro ST_OPERADORA é irrelevante para a execução.
Ver trecho em UdmMNF002.pas linhas 1949-1964:
// Desconto Operadora Celular
if ( (tabITEMNOTAST_SERIAL.AsString = 'C') And
(cdsTOTALIZADORT_VL_DESCONTO.AsFloat > 0) And
(iSt_DescontoOperadora = 'N') And
(MsgCodigo('C-0000', ['Desconto Promocional Operadora?'])) ) then
begin
tabITEMNOTA.Edit;
tabITEMNOTAVL_DESCOPERADORA.AsFloat := cdsTOTALIZADORT_VL_DESCONTO.AsFloat;
Application.CreateForm(TfrmCELULAR, frmCELULAR);
frmCELULAR.lblProduto.Caption := tabITEMNOTACD_ITEM.AsString + ' - ' + tabITEMNOTADS_ITEM.AsString;
if ( parmfatur.values['ST_OPERADORA'] = 'V' ) then
begin
frmCELULAR.edtVL_DESCOPERADORA.Visible := True;
frmCELULAR.lblVL_DESCOPERADORA.Visible := True;
end;
E o equivalente em UdmMNF008.pas linhas 1233-1238:
Application.CreateForm(TfrmCELULAR, frmCELULAR);
frmCELULAR.lblProduto.Caption := tabITEMNOTACD_ITEM.AsString + ' - ' + tabITEMNOTADS_ITEM.AsString;
if ( iST_OPERADORA = 'V' ) then begin
frmCELULAR.edtVL_DESCOPERADORA.Visible := True;
frmCELULAR.lblVL_DESCOPERADORA.Visible := True;
end;
A única diferença entre as duas telas é a forma de leitura do parâmetro: MNF002 lê diretamente via parmfatur.values[] e MNF008 usa a variável de instância iST_OPERADORA, populada no carregamento (UdmMNF008.pas:690 — dmMNF008.iST_OPERADORA := Resultado[26]).
Tabela Comparativa Resumida
| Opção | Operadora | Campo "Valor Desconto" no popup | Label "Valor Desconto" | Popup TfrmCELULAR aberto? |
|---|---|---|---|---|
| T | Tim | Oculto | Oculto | Sim (quando item é celular com contrato e há desconto) |
| V | Vivo | Visível e editável | Visível | Sim (quando item é celular com contrato e há desconto) |
O popup em si é sempre aberto quando as condições de gatilho são satisfeitas;
ST_OPERADORAsó controla a visibilidade dos controles de valor de desconto dentro dele.
Referências no Código Fonte
Delphi — Configuração (MFA001)
| Arquivo | Linha | Trecho |
|---|---|---|
source/MFA001/UMFA001.dfm | 6873 | Definição do TwwDBComboBox cmbST_OPERADORA |
source/MFA001/UMFA001.dfm | 6883 | DataField = 'ST_OPERADORA' |
source/MFA001/UMFA001.dfm | 6892-6894 | Items.Strings = ('Tim'#9'T' / 'Vivo'#9'V') |
source/MFA001/UMFA001.dfm | 6128-6141 | Label lbl38 com Caption = 'Desconto Operadora' |
source/MFA001/UMFA001.pas | 388 | Declaração cmbST_OPERADORA: TwwDBComboBox |
source/MFA001/UdmMFA001.pas | 106 | tabPARMFATURST_OPERADORA: TStringField |
source/MFA001/UdmMFA001.pas | 462 | Valor padrão no AfterInsert: tabPARMFATURST_OPERADORA.AsString := 'T' |
source/MFA001/UdmMFA001.dfm | 119, 989-993, 2349, 2498, 2717, 2999 | Presença do campo nos SELECT/INSERT/UPDATE da PARMFATUR |
Delphi — Consumo (Lógica de negócio)
| Arquivo | Linha | Trecho |
|---|---|---|
source/MNF002/UdmMNF002.pas | 1960 | if ( parmfatur.values['ST_OPERADORA'] = 'V' ) then — decide visibilidade dos campos |
source/MNF002/UdmMNF002.pas | 1962-1963 | frmCELULAR.edtVL_DESCOPERADORA.Visible := True / frmCELULAR.lblVL_DESCOPERADORA.Visible := True |
source/MNF002/UCELULAR.dfm | 6 | Caption do popup: 'Dados Contrato Operadora' |
source/MNF002/UCELULAR.dfm | 100-107 | Label lblVL_DESCOPERADORA (Caption: 'Valor Desconto') |
source/MNF002/UCELULAR.dfm | 179-186 | DBEdit edtVL_DESCOPERADORA (DataField = 'VL_DESCOPERADORA') |
source/MNF008/UdmMNF008.pas | 483 | Declaração da variável iST_OPERADORA: String |
source/MNF008/UdmMNF008.pas | 656 | SELECT de ST_OPERADORA de PARMFATUR |
source/MNF008/UdmMNF008.pas | 690 | dmMNF008.iST_OPERADORA := Resultado[26] |
source/MNF008/UdmMNF008.pas | 1235-1238 | if ( iST_OPERADORA = 'V' ) then ... — mesma lógica de MNF002 |
source/MNF008/UMNF008CELULAR.pas/dfm | — | Formulário TfrmCELULAR da variante MNF008 |
Delphi — Leitura sem ramificação
| Arquivo | Linha | Observação |
|---|---|---|
source/MCO006/UdmMCO006.pas | 2105 | SELECT inclui P.ST_OPERADORA mas a coluna não é usada em branch de negócio |
source/CPD009/UdmCPD009.dfm | 309, 375, 463, 577 | Cópia/replicação da tabela PARMFATUR |
source/RCA006/UdmRCA006.dfm | — | Cópia/replicação da tabela PARMFATUR |
SQL
Nenhuma referência em Scripts/ — a regra é inteiramente Delphi-side.
DDL
| Arquivo | Linha | Trecho |
|---|---|---|
docs/schema/tables/PARMFATUR.sql | 35 | ST_OPERADORA DOM_CHAR1 DEFAULT 'T' NOT NULL |