Identificador de Regra
CPR-000INECM02
Módulo: CPR - Compras.
Finalidade: disponibilizar ao usuário as tabelas intermediárias de nota fiscal de entrada para consulta/alteração, antes da gravação de seus registros na base. Permitir acesso às informações do .XML do documento eletrônico disponibilizando as tags do .XML com seus valores originais, informadas no identificador de regras CPR-000INECM01 através de variáveis.
Caso haja um leiaute importado e ativo na tela Configuração de leiaute (F017LRE) para documentos recebidos através do web service com.senior.g5.co.int.eletronicos.documentos, porta Receber, a regra do identificador não é executada
Características: para acessar as variáveis das tags do .XML, deve ser utilizado o prefixo "CPRA_" + o caminho informado no identificador de regras CPR-000INECM01, substituindo o caractere "|" por "_".
Exemplo:
- CPRATAGIPC="prod|cProd". A variável será CPRA_PROD_CPROD
- CPRATAGVPR="vPrest|Comp|xNome". A variável será CPRA_VPREST_COMP_XNOME
Um comportamento importante deste identificador é que ele é executado uma vez para cada registro do .XML. Por exemplo, se a tag <Comp> tiver quatro registros, o identificador será executado quatro vezes, contendo os valores na ordem em que são importados.
Observação
- As variáveis referentes às tags do .XML estarão disponíveis na regra mesmo quando não encontradas no .XML atual. Nesses casos, a variável não terá nenhum valor
- A tabela E000NFC também será disponibilizada para consulta durante a execução das outras tabelas
- A tabela E000IPC também será disponibilizada para consulta, durante a execução da tabela E000DLS
- A tabela E000VOL é temporária. Ela tem o intuito de indicar ao usuário o momento em que são apresentadas as variáveis com os valores dos volumes
- A tabela E000VPR referente aos valores de serviços é temporária. Ela tem o intuito de indicar ao usuário o momento em que são apresentadas as variáveis com os valores de Frete, GRIS, Pedágio e IMP Repassado
Regra:
definir alfa CPRATABELA;
@ Dados Gerais @
definir alfa CPRA_IDE_NATOP;
@ Produto/Serviço @
definir alfa CPRA_PROD_XPROD;
definir alfa CPRA_PROD_CPROD;
@ Parcelas @
definir alfa CPRA_COBR_DUP_NDUP;
definir alfa CPRA_COBR_DUP_VDUP;
@ Controle Lote e Serie @
definir alfa CPRA_MED_NLOTE;
definir alfa CPRA_MED_QLOTE;
@ Volumes @
definir alfa CPRA_VOL_MARCA;
Se (CPRA_IDE_NATOP <> "Venda de Producao do Estabelecimento")
Mensagem(Retorna,"Natureza da Operação Inválida");
Se (CPRATABELA = "E000IPC")
Se (E000IPC.PROFOR = "1101")
E000IPC.CPLIPC = CPRA_PROD_CPROD + " - " + CPRA_PROD_XPROD;
Se (CPRATABELA = "E000ISC")
Se (E000ISC.CODSER = "3501")
E000ISC.CPLISC = CPRA_PROD_CPROD + " - " + CPRA_PROD_XPROD;
Se (CPRATABELA = "E000PAR")
Se (E000PAR.NUMTIT <> "")
E000PAR.OBSPAR = CPRA_COBR_DUP_NDUP + " - " + CPRA_COBR_DUP_VDUP;
Se (CPRATABELA = "E000DLS")
Se (E000DLS.CODLOT <> " ")
E000DLS.OBSDLS = CPRA_MED_NLOTE + " - " + CPRA_MED_QLOTE;
Se (CPRATABELA = "E000VOL") e (CPRA_VOL_MARCA = "C3PO")
Mensagem (erro,"Marca dos volumes transportados da nota não pode ser C3PO.");
Regra com valores de serviço 1:
/******************************************************************************* Para cada registro da tag 'vPrest|Comp', a regra será chamada. A definição é feita no identificador CPR-000INECM01. O exemplo abaixo é apenas informativo e demonstra os valores sendo gravados em uma tabela de usuário. <vPrest> <vTPrest>44.82</vTPrest> <vRec>44.82</vRec> <Comp> <xNome>FRETE PESO</xNome> <vComp>30.00</vComp> </Comp> <Comp> <xNome>GRIS</xNome> <vComp>4.40</vComp> </Comp> <Comp> <xNome>PEDAGIO</xNome> <vComp>2.80</vComp> </Comp> <Comp> <xNome>IMP REPASSADO</xNome> <vComp>7.62</vComp> </Comp> </vPrest> Tabela de usuário: USU_TE000VPR Colunas: USU_CGCFIL, USU_CGCFOR, USU_CHVNEL (chave para a tabela E000NFC) USU_NOME, USU_VALOR (para gravar os valores dos campos xNome e vComp) *******************************************************************************/ Definir alfa CPRATABELA; Definir alfa CPRA_VPREST_COMP_XNOME; Definir alfa CPRA_VPREST_COMP_VCOMP; Definir Alfa aChvNel; Definir cursor ccur_TE000VPR; nCGCFil = E000NFC.CgcFil; nCGCFor = E000NFC.CgcFor; aChvNel = E000NFC.ChvNel; se (CPRATABELA = "E000VPR") { @Mensagem(retorna, CPRA_vprest_comp_xnome);@ @Mensagem(retorna, CPRA_vprest_comp_vcomp);@ SubstAlfa(".", ",", CPRA_VPREST_COMP_VCOMP); alfaparaint(CPRA_VPREST_COMP_VCOMP,vsValor); Se(vsBasST = 0) { SubstAlfa(".", ",", CPRA_VPREST_COMP_VCOMP); alfaparaint(CPRA_VPREST_COMP_VCOMP,vsValor); } ccur_TE000VPR.sql "SELECT USU_VALOR from USU_TE000VPR \ WHERE USU_CGCFIL=:nCGCFil \ AND USU_CGCFOR=:nCGCFor \ AND USU_CHVNEL=:aChvNel \ AND USU_NOME=:CPRA_vprest_comp_xnome"; ccur_TE000VPR.abrircursor(); se (ccur_TE000VPR.achou) { execsql "UPDATE USU_TE000VPR \ SET USU_VALOR=:vsValor \ WHERE USU_CGCFIL=:nCGCFil \ AND USU_CGCFOR=:nCGCFor \ AND USU_CHVNEL=:aChvNel \ AND USU_NOME=:CPRA_VPREST_COMP_XNOME"; } senao { execsql "INSERT INTO USU_TE000VPR (USU_CGCFIL, USU_CGCFOR, USU_CHVNEL, USU_NOME, USU_VALOR) \ VALUES (:nCGCFil, :nCGCFor, :aChvNel, :CPRA_VPREST_COMP_XNOME, :vsValor)"; } ccur_TE000VPR.fecharcursor(); } |
Regra com valores de serviço 2:
definir alfa CPRATIPDEC; definir alfa CPRATABELA; Se ((CPRATIPDEC = "S") e (CPRATABELA = "E000ISC")) { Se (E000ISC.cgcfor = 42324845000182) { E000ISC.vlricm = 0; E000ISC.pericm = 0; E000ISC.vlrbic = 0; } } X=Y;
Regra quando tratar-se de uma importação de NFS-e:
Se (CPRATIPDEC = "S") { @Quando for NFs-e @ CPRATAGNFC = "rps|numero"; CPRATAGISC = "item|aliquota,item|iss"; }
Variáveis disponibilizadas:
Verifique os exemplos de regras para saber como as variáveis devem ser passadas.
Nome | Tipo | Observações | Retorna Valor |
---|---|---|---|
CPRATIPDEC | ALFA | Tipo do Documento:
|
N |
CPRATABELA | ALFA | Tabela que está sendo processada. Ex.: E000NFC, E000IPC, E000VOL etc. | N |
E000NFC | TABELA | Tabela E000NFC disponibilizada para consulta/alteração | S |
E000IPC | TABELA | Tabela E000IPC disponibilizada para consulta/alteração | S |
E000ISC | TABELA | Tabela E000ISC disponibilizada para consulta/alteração | S |
E000PAR | TABELA | Tabela E000PAR disponibilizada para consulta/alteração | S |
E000DLS | TABELA | Tabela E000DLS disponibilizada para consulta/alteração | S |
E000EXF | TABELA | Tabela E000EXF disponibilizada para consulta/alteração | S |
E000PCD | TABELA | Tabela E000PCD disponibilizada para consulta/alteração | S |
E000LNP | TABELA | Tabela E000LNP disponibilizada para consulta/alteração | S |
E000LNS | TABELA | Tabela E000LNS disponibilizada para consulta/alteração | S |
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.