Pular para o conteúdo principal

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óduloCódigoDescriçãoUso
ConfiguraçãoMFA001Parâmetros de FaturamentoDefine o valor (produtora)
Nota Fiscal SaídaMNF002Emissão de NF de saídaLê parmfatur.values['ST_OPERADORA'] para decidir se mostra VL_DESCOPERADORA no TfrmCELULAR
Nota Fiscal Saída (variante)MNF008Emissão de NF Saída (fluxo alternativo)Lê iST_OPERADORA em TfrmCELULAR para decidir se mostra VL_DESCOPERADORA
Nota Fiscal (leitura secundária)MCO006Nota fiscal consórcio/cargaCarrega a coluna no cursor PARMFATUR, mas não ramifica lógica por ela
Nota Fiscal (leitura)MNF026Nota fiscal (fluxo alternativo)Possui formulário UCELULAR mas não ramifica por ST_OPERADORA no código analisado
Cópia de parâmetrosCPD009Cópia/Replicação de PARMFATURApenas inclui ST_OPERADORA no SELECT/INSERT/UPDATE da réplica da tabela
Cópia de parâmetrosRCA006Có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​

CampoDescrição
PARMFATUR.ST_OPERADORAParâ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_DESCOPERADORAValor do desconto concedido pela operadora no item (campo do popup, visível só quando ST_OPERADORA = 'V')
TfrmCELULAR.edtVL_DESCOPERADORAControle DBEdit do popup (UCELULAR.dfm linha 179, DataField = 'VL_DESCOPERADORA')
TfrmCELULAR.lblVL_DESCOPERADORALabel "Valor Desconto" do popup (UCELULAR.dfm linha 100, caption em UCELULAR.dfm:106)

Opções disponíveis​

T - Tim​

O que fazDetalhe
Operadora ativaTim
Campo VL_DESCOPERADORA no popup TfrmCELULARInvisí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_DESCOPERADORA0 (campo não editável pelo operador)

Simulação passo a passo​

  1. Vá em MFA001 → Parâmetros → Ambos → Opção 1 → "Desconto Operadora" = "Tim"
  2. Salve os parâmetros (F6)
  3. Abra uma Nota Fiscal de saída em MNF002
  4. Informe um item com ITEM.ST_SERIAL = 'C' (celular com contrato operadora) e aplique desconto
  5. O sistema pergunta: "Desconto Promocional Operadora?" (mensagem C-0000)
  6. Responda Sim
  7. O popup "Dados Contrato Operadora" é aberto
  8. 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.pas linha 462).


V - Vivo​

O que fazDetalhe
Operadora ativaVivo
Campo VL_DESCOPERADORA no popup TfrmCELULARVisí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_DESCOPERADORAAntes 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​

  1. Vá em MFA001 → Parâmetros → Ambos → Opção 1 → "Desconto Operadora" = "Vivo"
  2. Salve os parâmetros (F6)
  3. Abra uma Nota Fiscal de saída em MNF002
  4. Informe um item com ITEM.ST_SERIAL = 'C' e aplique desconto
  5. O sistema pergunta: "Desconto Promocional Operadora?" (mensagem C-0000)
  6. Responda Sim
  7. O popup "Dados Contrato Operadora" é aberto
  8. Os controles lblVL_DESCOPERADORA e edtVL_DESCOPERADORA ficam visíveis (linhas 1962-1963 de UdmMNF002.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:

  1. O item vendido possui ITEM.ST_SERIAL = 'C' (Número de Série Controlado com operadora), E
  2. Existe desconto aplicado (cdsTOTALIZADOR.T_VL_DESCONTO > 0), E
  3. O usuário confirma a mensagem "Desconto Promocional Operadora?" (C-0000), E
  4. A flag interna iSt_DescontoOperadora ainda 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çãoOperadoraCampo "Valor Desconto" no popupLabel "Valor Desconto"Popup TfrmCELULAR aberto?
TTimOcultoOcultoSim (quando item é celular com contrato e há desconto)
VVivoVisível e editávelVisívelSim (quando item é celular com contrato e há desconto)

O popup em si é sempre aberto quando as condições de gatilho são satisfeitas; ST_OPERADORA só controla a visibilidade dos controles de valor de desconto dentro dele.


Referências no Código Fonte​

Delphi — Configuração (MFA001)​

ArquivoLinhaTrecho
source/MFA001/UMFA001.dfm6873Definição do TwwDBComboBox cmbST_OPERADORA
source/MFA001/UMFA001.dfm6883DataField = 'ST_OPERADORA'
source/MFA001/UMFA001.dfm6892-6894Items.Strings = ('Tim'#9'T' / 'Vivo'#9'V')
source/MFA001/UMFA001.dfm6128-6141Label lbl38 com Caption = 'Desconto Operadora'
source/MFA001/UMFA001.pas388Declaração cmbST_OPERADORA: TwwDBComboBox
source/MFA001/UdmMFA001.pas106tabPARMFATURST_OPERADORA: TStringField
source/MFA001/UdmMFA001.pas462Valor padrão no AfterInsert: tabPARMFATURST_OPERADORA.AsString := 'T'
source/MFA001/UdmMFA001.dfm119, 989-993, 2349, 2498, 2717, 2999Presença do campo nos SELECT/INSERT/UPDATE da PARMFATUR

Delphi — Consumo (Lógica de negócio)​

ArquivoLinhaTrecho
source/MNF002/UdmMNF002.pas1960if ( parmfatur.values['ST_OPERADORA'] = 'V' ) then — decide visibilidade dos campos
source/MNF002/UdmMNF002.pas1962-1963frmCELULAR.edtVL_DESCOPERADORA.Visible := True / frmCELULAR.lblVL_DESCOPERADORA.Visible := True
source/MNF002/UCELULAR.dfm6Caption do popup: 'Dados Contrato Operadora'
source/MNF002/UCELULAR.dfm100-107Label lblVL_DESCOPERADORA (Caption: 'Valor Desconto')
source/MNF002/UCELULAR.dfm179-186DBEdit edtVL_DESCOPERADORA (DataField = 'VL_DESCOPERADORA')
source/MNF008/UdmMNF008.pas483Declaração da variável iST_OPERADORA: String
source/MNF008/UdmMNF008.pas656SELECT de ST_OPERADORA de PARMFATUR
source/MNF008/UdmMNF008.pas690dmMNF008.iST_OPERADORA := Resultado[26]
source/MNF008/UdmMNF008.pas1235-1238if ( 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​

ArquivoLinhaObservação
source/MCO006/UdmMCO006.pas2105SELECT inclui P.ST_OPERADORA mas a coluna não é usada em branch de negócio
source/CPD009/UdmCPD009.dfm309, 375, 463, 577Có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​

ArquivoLinhaTrecho
docs/schema/tables/PARMFATUR.sql35ST_OPERADORA DOM_CHAR1 DEFAULT 'T' NOT NULL