Solicita Fator na Duplicação / Impressão de Pedido
Tela de configuração: MFA001 - Parâmetros de Faturamento
Localização: Parâmetros → Pedidos → Opção 2 → Duplicação de Pedido [MPD002]
Label na tela: Solicita Fator
Tabela: PARMFATUR.ST_SOLICITAFATOR
Valor padrão: N (Não - não solicita fator)
Resumo
Quando ativado, o sistema abre uma janela modal solicitando um fator (valor absoluto ou percentual) que é aplicado ao preço unitário e descontos dos itens em três cenários distintos:
- Duplicação de Pedido (MPD002) - aplica o fator ao copiar os itens do pedido origem para o pedido destino.
- Impressão do Pedido (LPD128) - gera uma segunda via do pedido com preços recalculados pelo fator (layout
LPD128_F).
- Impressão do Orçamento (LOR044) - gera o orçamento com preços recalculados pelo fator (layout
<LAYOUT>_F).
Também é consultado em TFA077 (Formação de Preço de Venda) para decidir se o PC_FATORGERAL é tratado como valor ou percentual na procedure CALCULA_IMPOSTOPEDIDOLPD128.
Telas impactadas
| Módulo | Código | Papel |
|---|
| Duplicação de Pedido de Venda | MPD002 | Solicita fator ao duplicar pedido e aplica em VL_UNITARIO, VL_DESCONTO e VL_TOTAL dos itens |
| Formulário Fator Pedido | UMPD002FrmFator.pas | Tela modal que troca rótulo e DataField entre VL_FATOR e PC_FATOR |
| Layout Pedido | LPD128 | Solicita fator na impressão; usa tabPEDIDOFATOR e layout alternativo LPD128_F |
| Formulário Fator Layout | UfrmFATOR.pas | Tela modal usada pelo LPD128 |
| Layout Orçamento | LOR044 | Solicita fator na impressão do orçamento; usa layout <LAYOUT>_F |
| Formulário Fator Orçamento | UfrmFATOR_ORCAMENTO.pas | Tela modal usada pelo LOR044 |
| Formação de Preço de Venda | TFA077 | Usa o valor para decidir se PC_FATORGERAL é passado como valor (V) ou percentual (P) para CALCULA_IMPOSTOPEDIDOLPD128 |
Campos envolvidos
| Campo | Descrição |
|---|
PEDIDO.VL_FATOR | Valor absoluto do fator informado (usado quando opção = 'V') |
PEDIDO.PC_FATOR | Percentual do fator informado (usado quando opção = 'P') |
ITEMPEDIDO.VL_UNITARIO | Valor unitário ajustado pelo fator |
ITEMPEDIDO.VL_DESCONTO | Desconto ajustado pelo fator |
ITEMPEDIDO.VL_TOTAL | Total recalculado com base no novo unitário |
FORMACAOPRECOVENDA.PC_FATORGERAL | Percentual geral passado à procedure de cálculo em TFA077 |
Procedures impactadas
| Procedure | Uso |
|---|
CALCULA_IMPOSTOPEDIDOLPD128 | Recebe dois parâmetros: VL_FATOR e PC_FATOR. Em TFA077, quando ST_SOLICITAFATOR = 'V' envia NULL, PC_FATORGERAL (como valor); caso contrário envia PC_FATORGERAL, NULL (como percentual). |
Opções disponíveis
V - Sim (Valor)
| O que faz | Detalhe |
|---|
| Solicita fator? | SIM |
| Tipo de fator | Valor absoluto (divisor) |
| Campo alimentado | PEDIDO.VL_FATOR |
| Label da janela modal | Informe o Valor Do Fator |
| Cálculo aplicado no MPD002 | VL_UNITARIO_NOVO = RoundTo(VL_UNITARIO / VL_FATOR, -2) |
| Layout de impressão | LPD128_F / <LAYOUT>_F |
Simulação passo a passo (Duplicação - MPD002)
- Em MFA001 → Parâmetros → Pedidos → Opção 2 →
Solicita Fator = "Sim (Valor)".
- Salve os parâmetros (F6).
- Acesse MPD002 e duplique um pedido existente que possua itens (por exemplo, pedido com
VL_UNITARIO = 100,00 e VL_DESCONTO = 10,00).
- Após confirmar a duplicação, aparece a janela modal "Informe o Valor Do Fator" com o campo vinculado a
VL_FATOR.
- Informe, por exemplo,
VL_FATOR = 2 e confirme (F3 / OK).
- O sistema percorre cada item do novo pedido e atualiza:
VL_UNITARIO = 100 / 2 = 50,00
VL_DESCONTO = 10 / 2 = 5,00 (ou valor ajustado se desconto = total)
VL_TOTAL = VL_UNITARIO * QT_PEDIDO
Resultado esperado: Todos os itens do pedido duplicado ficam com preço dividido pelo fator informado. O campo PEDIDO.VL_FATOR fica preenchido com 2 e PEDIDO.PC_FATOR permanece nulo.
Simulação passo a passo (Impressão - LPD128)
- Parâmetro configurado como "Sim (Valor)".
- Imprima um pedido via LPD128 (confirma mensagem
C-1363).
- Surge a janela modal "Informe o Valor Do Fator".
- Informe o valor e confirme; o layout impresso passa a ser
LPD128_F, que utiliza a query tabPEDIDOFATOR parametrizada com V_VL_FATOR.
- Se cancelar a janela (
temfator = False), cai no layout padrão LPD128.
Resultado esperado: A segunda via do pedido é impressa com preços recalculados; a primeira via (sem fator) continua inalterada no banco.
P - Sim (Percentual)
| O que faz | Detalhe |
|---|
| Solicita fator? | SIM |
| Tipo de fator | Percentual |
| Campo alimentado | PEDIDO.PC_FATOR |
| Label da janela modal | Informe o % Do Fator |
| Cálculo aplicado no MPD002 | Usa PEDIDO.PC_FATOR para recalcular VL_UNITARIO, VL_DESCONTO e VL_TOTAL |
| Layout de impressão | LPD128_F / <LAYOUT>_F (mesmo layout alternativo da opção V) |
Simulação passo a passo (Duplicação - MPD002)
- Em MFA001 → Parâmetros → Pedidos → Opção 2 →
Solicita Fator = "Sim (Percentual)".
- Salve os parâmetros (F6).
- Em MPD002, duplique um pedido.
- Aparece a janela modal "Informe o % Do Fator" (campo vinculado a
PC_FATOR).
- Informe, por exemplo,
PC_FATOR = 10 e confirme.
- O sistema aplica o percentual em todos os itens do pedido duplicado (campo
PEDIDO.PC_FATOR é preenchido e PEDIDO.VL_FATOR permanece nulo).
Resultado esperado: Todos os itens do pedido duplicado têm seus valores recalculados em função do percentual informado.
Simulação passo a passo (Impressão de Orçamento - LOR044)
- Parâmetro configurado como "Sim (Percentual)".
- No MPD002 acione a impressão do orçamento (layout LOR044); confirma a mensagem
C-1385 e depois C-1363.
- Surge a janela modal "Informe o % Do Fator".
- Ao confirmar, é utilizada a query
tabPEDIDOFATOR e o layout <LAYOUT>_F.
- Ao cancelar, cai no layout padrão sem fator.
Resultado esperado: Orçamento impresso com preços recalculados pelo percentual informado.
N - Não
| O que faz | Detalhe |
|---|
| Solicita fator? | NÃO |
| Janela modal | Não aparece |
| Cálculo no MPD002 | Itens são duplicados com os valores originais, sem qualquer recalculo |
| Layout LPD128 | Sempre usa o layout padrão LPD128 (sem sufixo _F) |
| Layout LOR044 | Sempre usa o layout padrão <LAYOUT> (sem sufixo _F) |
| TFA077 | PC_FATORGERAL é passado como percentual (PC_FATORGERAL, NULL) à procedure CALCULA_IMPOSTOPEDIDOLPD128 |
Simulação passo a passo
- Em MFA001 →
Solicita Fator = "Não".
- Salve os parâmetros (F6).
- Em MPD002, duplique um pedido → nenhuma janela é aberta, os itens são copiados com valores originais.
- Imprima o pedido via LPD128 → saída usa o layout
LPD128 padrão.
- Imprima o orçamento via LOR044 → saída usa o layout padrão.
Resultado esperado: Duplicação e impressão funcionam de modo transparente, sem aplicação de fator. Este é o valor padrão ao criar um novo registro no MFA001.
Tabela Comparativa Resumida
| Opção | Pergunta fator? | Campo usado | Label modal | Layout LPD128 / LOR044 | TFA077 passa p/ procedure |
|---|
| V | Sim | VL_FATOR | Informe o Valor Do Fator | <LAYOUT>_F | NULL, PC_FATORGERAL (como valor) |
| P | Sim | PC_FATOR | Informe o % Do Fator | <LAYOUT>_F | PC_FATORGERAL, NULL (como percentual) |
| N | Não | - | - | <LAYOUT> padrão | PC_FATORGERAL, NULL (como percentual) |
Referências no Código Fonte
Configuração (MFA001)
| Arquivo | Linha | Trecho |
|---|
source/MFA001/UMFA001.dfm | 9523-9534 | Label Solicita Fator |
source/MFA001/UMFA001.dfm | 9788-9815 | ComboBox cmbST_SOLICITAFATOR com Items.Strings = ('Sim (Valor)'#9'V', 'Sim (Percentual)'#9'P', 'Não'#9'N') |
source/MFA001/UdmMFA001.dfm | 1474-1475 | TStringField tabPARMFATURST_SOLICITAFATOR |
source/MFA001/UdmMFA001.dfm | 207, 2402, 2569, 2795, 3087 | SELECT, INSERT e UPDATE da PARMFATUR |
source/MFA001/UdmMFA001.pas | 516 | Valor padrão no AfterInsert: tabPARMFATURST_SOLICITAFATOR.AsString := 'N'; |
Duplicação de Pedido (MPD002)
| Arquivo | Linha | Trecho |
|---|
source/MPD002/UdmMPD002.pas | 5756 | SELECT ... P.ST_SOLICITAFATOR ... FROM PARMFATUR populando ParmFatur |
source/MPD002/UMPD002.pas | 5809 | if (ParmFatur.Values['ST_SOLICITAFATOR'] <> 'N') then - abre TfrmMPD002Fator |
source/MPD002/UMPD002.pas | 5833, 5867 | Dois branches de cálculo: usando VL_FATOR (opção V) e usando PC_FATOR (opção P) |
source/MPD002/UMPD002FrmFator.pas | 95-103 | FormCreate troca rótulo e DataField entre VL_FATOR (opção V) e PC_FATOR (demais) |
Impressão do Pedido (LPD128)
| Arquivo | Linha | Trecho |
|---|
source/LPD128/ULPD128.pas | 34 | iST_SOLICITAFATOR: string; - variável global do BPL |
source/LPD128/ULPD128.pas | 146-153 | SELECT ST_SOLICITAFATOR FROM PARMFATUR; se <> 'N', cria TfrmFator |
source/LPD128/ULPD128.pas | 185-209 | Se usuário confirmou o fator, usa layout LPD128_F e query tabPEDIDOFATOR; senão usa LPD128 padrão |
source/LPD128/UfrmFATOR.pas | 41-45, 59 | FormCreate e validações trocam rótulo/DataField conforme iST_SOLICITAFATOR = 'V' |
Impressão do Orçamento (LOR044)
| Arquivo | Linha | Trecho |
|---|
source/LOR044/ULOR044.pas | 150 | iST_SOLICITAFATOR: String; - variável global do BPL |
source/LOR044/ULOR044.pas | 246-253 | SELECT ST_SOLICITAFATOR; se <> 'N' e C-1363, cria TfrmFATOR_ORCAMENTO |
source/LOR044/ULOR044.pas | 273-298 | Usa layout <LAYOUT>_F quando há fator, senão layout padrão |
source/LOR044/UfrmFATOR_ORCAMENTO.pas | 41-45, 59 | FormCreate e validações trocam rótulo/DataField conforme iST_SOLICITAFATOR = 'V' |
| Arquivo | Linha | Trecho |
|---|
source/TFA077/UTFA077.pas | 2650-2663 | Lê ST_SOLICITAFATOR: se 'V' passa NULL, PC_FATORGERAL; caso contrário, PC_FATORGERAL, NULL à procedure CALCULA_IMPOSTOPEDIDOLPD128 |