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 |