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.