Identificador de Regra

COM-000CDCRT02

Módulo: COM - Comercial.

Finalidade: sugerir, via regra, o código da carteira de cobrança para as parcelas da nota fiscal de saída na sua geração ou recálculo.

Tela: nota fiscal de saída manual.

Transação: não se aplica.

Regra:

definir numero VSCodEmp; /* código da empresa da nota fiscal - enviado pelo sistema */
definir numero VSCodFil;/* código da filial da nota fiscal - enviado pelo sistema */
definir alfa VSCodSnf;/* código da serie da nota fiscal - enviado pelo sistema */
definir numero VSNumNfv;/* numero da nota fiscal - enviado pelo sistema */
definir alfa VSCodCrt;
definir numero xCodCli;/* código do cliente da nota fiscal - váriavel auxiliar */
definir alfa xCursor;/* cursor para acesso ao bando de dados */
definir alfa xSql;/* comando sql */
definir numero xEstaNuloCodCrt;/* variavel auxiliar */
definir alfa xCodCrt;
definir numero xDisAut;/* dispositivo autorizado da serie da nota fiscal - váriavel auxiliar */
definir alfa xBltNfe;/* Indicativo se é feita a geração automática de boletos da nota fiscal eletrônica - váriavel auxiliar */
definir alfa xBltNfs;/* Indicativo se é feita a geração automática de boletos da nota fiscal de serviço - váriavel auxiliar */
definir numero xCodFpg;
Definir Cursor Cur_E085HCL;
Definir Cursor Cur_E140NFV;
Definir Cursor Cur_E000PDV;
definir numero VSCodCli;
definir numero VSCodFpg;
Inicio
/* -------------------------------------------------------------------------------------------------- */
/* o intuito desse acesso ao banco de dados é buscar o dispositivo autorizado da série da nota fiscal */
SQL_Criar(xCursor);
xSql = " select e020snf.disaut" +
" from e020snf" +
" where codemp = :VSCodEmp and codsnf = :VSCodSnf";
SQL_DefinirComando(xCursor, xSql);
SQL_DefinirInteiro(xCursor, "VSCodEmp", VSCodEmp);
SQL_DefinirAlfa(xCursor, "VSCodSnf", VSCodSnf);
SQL_AbrirCursor(xCursor);
/* se não está vazio */
se (SQL_EOF(xCursor) = 0)
inicio
SQL_RetornarInteiro(xCursor,"DisAut", xDisAut);
SQL_FecharCursor(xCursor);
SQL_Destruir(xCursor);
fim
/* ---------------------------------------------------------------------------------------------------------------------------------------- */
/* o intuito desse acesso ao banco de dados é buscar os indicativos de geração automática de boletos da nota fiscal eletrônica e de serviço */
SQL_Criar(xCursor);
xSql = " select e070ven.BltNfe, BltNfs" +
" from e070ven" +
" where codemp = :VSCodEmp and codfil = :VSCodFil";
SQL_DefinirComando(xCursor, xSql);
SQL_DefinirInteiro(xCursor, "VSCodEmp", VSCodEmp);
SQL_DefinirInteiro(xCursor, "VSCodFil", VSCodFil);
SQL_AbrirCursor(xCursor);
/* se não está vazio */
se (SQL_EOF(xCursor) = 0)
inicio
SQL_RetornarAlfa(xCursor,"BltNfe", xBltNfe);
SQL_RetornarAlfa(xCursor,"BltNfs", xBltNfs);
SQL_FecharCursor(xCursor);
SQL_Destruir(xCursor);
fim
/* se a serie da nota fiscal é de nota eletrônica e o a filial indica para gerar automaticamente os boletos para esse tipo de nota ou */
/* se a serie da nota fiscal é de nota eletrônica de serviço e o a filial indica para gerar automaticamente os boletos para esse tipo de nota ou */
se ( ((xDisAut = 6) e (xBltNfe = "S")) ou ((xDisAut = 8) e (xBltNfs = "S")) )
inicio
/*quando executado através da F140LOT, ao ser executada a regra, a NF ainda não foi gravada então */
/*não é possível encontrar o registro na E140NFV, por isso nesse caso é passado para a regra */
/* qual é o cliente e a forma de pagamento não sendo mais necessário realizar a busca na E140NFV.*/
se ((VSCodCli <> 0) e (VSCodFpg <> 0))
inicio
xCodCli = VSCodCli;
xCodFpg = VSCodFpg;
fim
senao
inicio
Cur_E140NFV.SQL " select e140nfv.codcli, e140nfv.codfpg \
from e140nfv \
where codemp = :VSCodEmp \
and codfil = :VSCodFil \
and codsnf = :VSCodSnf \
and numnfv = :VSNumNfv";
Cur_E140NFV.AbrirCursor();
se (Cur_E140NFV.Achou)
inicio
xCodCli = Cur_E140NFV.CodCli;
xCodFpg = Cur_E140NFV.CodFpg;
fim;
Cur_E140NFV.FecharCursor();
fim;
se ((xCodCli <> 0) e (xCodFpg <> 0))
Inicio
Cur_E000PDV.SQL "SELECT E000PDV.VLRPDV \
FROM E066FPG, \
E000PDV \
WHERE E066FPG.IDEUNI = E000PDV.IDEREG \
AND E000PDV.IDEINT = 3 \
AND E000PDV.CHAPDV = 'FORMAPAGAMENTO.CARTEIRABANCO' \
AND E066FPG.CODFPG = :xCodFpg \
AND E066FPG.CODEMP = :VSCodEmp \
AND E000PDV.VLRPDV <> ' ' \
AND ((E000PDV.VLRPDV <> '') OR (E000PDV.VLRPDV IS NOT NULL)) ";
Cur_E000PDV.AbrirCursor();
Se (Cur_E000PDV.Achou)
Inicio
xCodCrt = Cur_E000PDV.VLRPDV;
EstaNulo(xCodCrt, xEstaNuloCodCrt);
/* se nao esta vazio */
se (xEstaNuloCodCrt <> 1) /* 1 = nulo */
VSCodCrt = xCodCrt;
Fim
Senao
Inicio
Cur_E085HCL.SQL " select e085hcl.codcrt \
from e085hcl \
where codemp = :VSCodEmp \
and codfil = :VSCodFil \
and codcli = :xCodCli";
Cur_E085HCL.AbrirCursor();
xCodCrt = Cur_E085HCL.CodCrt;
EstaNulo(xCodCrt, xEstaNuloCodCrt);
se (xEstaNuloCodCrt <> 1)
VSCodCrt = xCodCrt;
Cur_E085HCL.FecharCursor();
Fim;
Cur_E000PDV.FecharCursor();
Fim;
Fim;
Fim;

Variáveis disponibilizadas:

Nome Tipo Observações Retorna Valor
VSCODEMP NÚMERO Código da Empresa da Nota Fiscal de Saída N
VSCODFIL NÚMERO Código da Filial da Nota Fiscal de Saída N
VSCODSNF ALFA Código da Série da Nota Fiscal de Saída N
VSNUMNFV NÚMERO Número da Nota Fiscal de Saída N
VSCODCRT ALFA Código da Carteira de Cobrança S
VSCodCli NÚMERO Código do cliente N
VSCodFpg NÚMERO Código forma de pagamento N
VsCodPor NÚMERO Código do Portador N

Atenção

Caso o parâmetro global LisVarReg esteja habilitado, a variável ListaVariaveis estará disponível em todos os identificadores de regras do sistema. O conteúdo desta variável lista os campos disponibilizados no identificador de regras em questão.

Não é aconselhada a ativação desse parâmetro global para o uso cotidiano. Esse recurso de listagem dos campos de identificadores auxilia a construção de regras e o Suporte para, por exemplo, depuração ou quando não houver acesso à documentação dos identificadores de regras.

Este artigo ajudou você?