Identificador de Regra

CPR-440ALDSC01

Módulo: CPR - Compras.

Finalidade: alterar os valores de desconto do item da nota fiscal de entrada, permitindo alterar os campos de percentual e valor de descontos (PerDsc, PerDs1, PerDs2, PerDs3, PerDs4, PerDs5, VlrDsc, VlrDs1, VlrDs2, VlrDs3, VlrDs4 e VlrDs5) dos itens de produto e serviço.

Regra:

definir numero CprNCodEmp; /* Código da empresa */
definir numero CprNCodFil; /* Código da filial */
definir numero CprNCodFor; /* Código do fornecedor */
definir alfa CprACodPro; /* Código do produto */
definir data CprDDatEmi; /* Data de demissão na nota fiscal */
definir numero CprNQtdRec; /* Quantidade recebida na nota fiscal */
definir alfa CprAUniNfc; /* Unidade de medida na nota fiscal */

definir alfa xComandoSql;
definir alfa xCodigoMoeda;
definir numero xVlrUpf;
definir numero xPerFethab;
definir numero xPerImafir;

definir alfa Cursor_E031Imo;
definir alfa Cursor_E075Pro;
definir alfa Cursor_E095For;
definir alfa Cursor_E070Fil;

inicio

/* !!!ATENÇÃO!!! Definir aqui o código da moeda cadastrado na tela F031AIM */
xCodigoMoeda = "UPF";
/* Filtrando filiais do estado do MT */
SQL_Criar(Cursor_E070Fil);
SQL_DefinirComando(Cursor_E070Fil, "select 1 from E070FIL where codemp = :codemp and codfil = :codfil and sigufs = 'MT' ");
SQL_DefinirInteiro(Cursor_E070Fil,"CODEMP",CprNCodEmp);
SQL_DefinirInteiro(Cursor_E070Fil,"CODFIL",CprNCodFil);
SQL_AbrirCursor(Cursor_E070Fil);

Se(SQL_Eof(Cursor_E070Fil) = 0)
inicio

/* Filtrando apenas fornecedores do estado do MT */
SQL_Criar(Cursor_E095For);
SQL_DefinirComando(Cursor_E095For, "select 1 from E095FOR where codfor = :codfor and sigufs = 'MT' ");
SQL_DefinirInteiro(Cursor_E095For,"CODFOR",CprNCodFor);
SQL_AbrirCursor(Cursor_E095For);

Se(SQL_Eof(Cursor_E095For) = 0)
inicio
SQL_Criar(Cursor_E075Pro);
SQL_DefinirComando(Cursor_E075Pro, "select USU_PERFET, USU_PERIMA from E075PRO where codemp = :codemp and codpro = :codpro and (USU_PERFET > 0 or USU_PERIMA > 0) ");
SQL_DefinirInteiro(Cursor_E075Pro,"CODEMP",CprNCodEmp);
SQL_DefinirAlfa(Cursor_E075Pro,"CODPRO",CprACodPro);
SQL_AbrirCursor(Cursor_E075Pro);

Se(SQL_Eof(Cursor_E075Pro) = 0)
Inicio
SQL_RetornarFlutuante(Cursor_E075Pro,"USU_PERFET", xPerFethab);
SQL_RetornarFlutuante(Cursor_E075Pro,"USU_PERIMA", xPerImafir);

xComandoSql = "select datmoe, vlrcot \
from E031IMO \
where codmoe = '"+xCodigoMoeda+"' \
and datmoe <= :datmoe \
order by datmoe desc ";
SQL_Criar(Cursor_E031Imo);
SQL_DefinirComando(Cursor_E031Imo, xComandoSql);
SQL_DefinirData(Cursor_E031Imo,"DATMOE",CprDDatEmi);
SQL_AbrirCursor(Cursor_E031Imo);

Se(SQL_Eof(Cursor_E031Imo) = 0)
Inicio
SQL_RetornarFlutuante(Cursor_E031Imo,"VLRCOT", xVlrUpf);

se (xPerFethab > 0)
inicio
CprNVlrDs4 = ((xPerFethab * xVlrUpf) / 100) * CprNQtdRec;
se (CprAUniNfc = "KG")
CprNVlrDs4 = CprNVlrDs4 / 1000;
fim;

se (xPerImafir > 0)
inicio
CprNVlrDs5 = ((xPerImafir * xVlrUpf) / 100) * CprNQtdRec;
se (CprAUniNfc = "KG")
CprNVlrDs5 = CprNVlrDs5 / 1000;
fim;
fim;

SQL_FecharCursor(Cursor_E031Imo);

SQL_Destruir(Cursor_E031Imo);
Fim;

SQL_FecharCursor(Cursor_E075Pro);

SQL_Destruir(Cursor_E075Pro);

fim;

SQL_FecharCursor(Cursor_E095For);

SQL_Destruir(Cursor_E095For);

fim;

SQL_FecharCursor(Cursor_E070Fil);

SQL_Destruir(Cursor_E070Fil);

fim;

Variáveis disponibilizadas:

Nome Tipo Observações Retorna Valor
CprNTipNfe NÚMERO Tipo da nota fiscal de entrada N
CprDDatEmi DATA Data de emissão N
CprDDatEnt DATA Data de entrada N
CPRNCODEMP NÚMERO Código da Empresa N
CPRNCODFIL NÚMERO Código da Filial N
CPRNCODFOR NÚMERO Código do Fornecedor N
CPRACODSNF NÚMERO Série da Nota Fiscal de Entrada N
CPRNNUMNFC NÚMERO Número da Nota Fiscal de Entrada N
CPRNSEQIPC NÚMERO Sequencial do Item de Produto da Nota Fiscal de Entrada N
CPRNSEQISC NÚMERO Sequencial do Item de Serviço da Nota Fiscal de Entrada N
CPRATNSPRO ALFA Transação do item de Produto N
CPRATNSSER ALFA Transação do item de Serviço N
CPRANOPPRO ALFA Código da Natureza de Operação do Item de Produto N
CPRANOPSER ALFA Código da Natureza de Operação do Item de Serviço N
CPRNFILOCP NÚMERO Código da Filial da Ordem de Compra N
CPRNNUMOCP NÚMERO Número da Ordem de Compra N
CPRNSEQIPO NÚMERO Sequencial do Item de Produto da Ordem de Compra N
CPRNSEQISO NÚMERO Sequencial do Item de Serviço da Ordem de Compra N
CPRACODPRO ALFA Código do Produto N
CPRACODDER ALFA Código da Derivação do Produto N
CPRACODSER ALFA Código do Serviço N
CPRNQTDREC NÚMERO Quantidade Recebida do Item da Nota Fiscal de Entrada N
CPRAUNINFC ALFA Código da Unidade de Medida da Nota Fiscal de Entrada N
CPRAUNIMED ALFA Código da Unidade de Medida de Estoque do Item da Nota Fiscal de Entrada N
CPRNQTDEST NÚMERO Quantidade de Entrada Conforme Unidade de Medida de Estoque N
CPRNPESBRU NÚMERO Peso Bruto do Item de Produto N
CPRNPESLIQ NÚMERO Peso Líquido do Item de Produto N
CPRNPREUNI NÚMERO Preço unitário do item da nota fiscal de entrada N
CPRNPREEST NÚMERO Preço de Entrada Conforme Unidade de Medida de Estoque N
CPRACODFAM ALFA Código da Família N
CPRACODTRD ALFA Código de Redução de ICMS N
CPRACODTIC ALFA Código de ICMS Especial N
CPRNVLRICM NÚMERO Valor de ICMS N
CPRNVLRBIC NÚMERO Valor Base de ICMS N
CPRNPERICM NÚMERO Percentual de ICMS N
CPRNVLRBRU NÚMERO Valor Bruto N
CPRNVLRIPI NÚMERO Valor de IPI N
CPRNVLRFEI NÚMERO Valor de frete de importação N
CPRNVLRSEI NÚMERO Valor de seguro de importação N
CPRNVLROUI NÚMERO Valor de outras despesas de importação N
CPRNVLRFRE NÚMERO Valor do Frete N
CPRNVLRSEG NÚMERO Valor do Seguro N
CPRNVLREMB NÚMERO Valor das Embalagens N
CPRNVLRENC NÚMERO Valor dos Encargos N
CPRNVLROUT NÚMERO Valor Outros N
CPRNVLRDAR NÚMERO Valor de Arredondamento N
CPRNVLRFRD NÚMERO Valor Frete Destacado N
CPRNVLROUD NÚMERO Valor Outras Despesas Destacado N
CPRACODDEP ALFA Código do depósito N
CPRNVLRAFM NÚMERO Valor adicional ao frete para renovação da marinha mercante N
CPRNPECICM NÚMERO Percentual de ICMS creditado efetivamente N
CPRNVECICM NÚMERO Valor de ICMS creditado efetivamente N
CPRNBECICM NÚMERO Valor Base de ICMS creditado efetivamente N
CPRNPERDSC NÚMERO Percentual de desconto S
CPRNPERDS1 NÚMERO Percentual de desconto 1 S
CPRNPERDS2 NÚMERO Percentual de desconto 2 S
CPRNPERDS3 NÚMERO Percentual de desconto 3 S
CPRNPERDS4 NÚMERO Percentual de desconto 4 S
CPRNPERDS5 NÚMERO Percentual de desconto 5 S
CPRNVLRDSC NÚMERO Valor Desconto S
CPRNVLRDS1 NÚMERO Valor Desconto 1 S
CPRNVLRDS2 NÚMERO Valor Desconto 2 S
CPRNVLRDS3 NÚMERO Valor Desconto 3 S
CPRNVLRDS4 NÚMERO Valor Desconto 4 S
CPRNVLRDS5 NÚMERO Valor Desconto 5 S

Este artigo ajudou você?