× Linguagem de Programação ADVPL

Perguntas PE para retorno de CNAB sem remessa

Mais
11 anos 11 meses atrás #8230 por Hboleta
Pessoal,
Preciso tratar arquivos de retorno de CNAB a receber de vários campos, os títulos vem migrados de outro sistema, e a remessa também é feita por esse outro sistema. Os títulos podem ser de cobrança registrada ou não registrada. Nesse cenário, nenhum deles têm remessa.

Como eu não tenho um ID CNAB, pensei em baixar os títulos usando o nosso número. Alguém tem um PE pra essa situação, ou poderia indicar qual o melhor PE pra tratar disso?

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 11 meses atrás #8280 por lalberto
#include "rwmake.ch"
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ F200VAR ºAutor ³Luiz ALberto º Data ³ 06.09.12 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³ Ponto de entrada executado no momento do retorno de cobrançaº±±
±±º ³ do banco itau para alteração da natureza financeira
de titulos em carteira de desconto º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³ AP º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
User Function F200VAR()
Local aValores := PARAMIXB[01]
Local aArea := GetArea()
Local cIdCnab := SubStr(aValores[16],38,10) /// Captura do ID Cnab
Local cNNum := SubStr(aValores[16],83,12) /// Captura do Nosso Numero

//aValores := ( { cNumTit, dBaixa, cTipo, cNsNum, nDespes, nDescont, nAbatim, nValRec, nJuros, nMulta, nOutrDesp, nValCc, dDataCred, cOcorr, cMotBan, xBuffer,dDtVc,{} })

If !Empty(cIdCnab) // Se o ID Cnab Estiver Preenchido então localiza o Titulo

cNumTit := cIdCnab

// Posiciona no Registro do Titulo

If !SE1->(dbSetOrder(19), dbSeek(cNumTit))
Return
Endif
ElseIf !Empty(cNNum)

// Posiciona no Registro do Titulo com Base no Nosso Numero
// Novo Indice Criado E1_FILIAL + E1_NUMBCO

// Colocar o Numero da Ordem do Indice Criado na Tabela SE1

If !SE1->(dbSetOrder(27), dbSeek(xFilial("SE1")+cNNum))
Return
Else
cNumTit := SE1->E1_PREFIXO + SE1->E1_NUM + SE1->E1_PARCELA
Endif
Endif
RestArea(aArea)
Return

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 11 meses atrás #8443 por Hboleta
Obrigado, vou testar aqui.
Nesse caso preciso incluir um índice na minha SE1 e garantir que a ordem dele não seja sobreposta em alguma atualização, certo?
Valeu!

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 11 meses atrás #8448 por lalberto
Colocando nickname no índice vc já fica seguro. Abraços

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 11 meses atrás #8545 por Hboleta
Cara, testei aqui com o seguinte:

#include "rwmake.ch"

User Function F200VAR()
Local aValores := PARAMIXB[01]
Local aArea := GetArea()
Local cNNum := SubStr(aValores[16],95,12) /// Captura do Nosso Numero

//aValores := ( { cNumTit, dBaixa, cTipo, cNsNum, nDespes, nDescont, nAbatim, nValRec, nJuros, nMulta, nOutrDesp, nValCc, dDataCred, cOcorr, cMotBan, xBuffer,dDtVc,{} })
// Posiciona no Registro do Titulo com Base no Nosso Numero
// Novo Indice Criado E1_FILIAL + E1_NUMBCO A ordem dele é 27

If !SE1->(dbSetOrder(27), dbSeek(xFilial("SE1")+cNNum))
Return
Else
cNumTit := SE1->E1_PREFIXO + SE1->E1_NUM + SE1->E1_PARCELA
Endif
Endif
RestArea(aArea)
Return

Quando eu debugo, a variável cNNum está sendo carregada corretamente, mas o título não á baixado. Será que preciso carregar mais algum dado?
Na linha If !SE1->(dbSetOrder(27), dbSeek(xFilial("SE1")+cNNum)), qual o papel do "!"?

Valeu!

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 11 meses atrás #8553 por GuPadrao

Hugo escreveu:
If !SE1->(dbSetOrder(27), dbSeek(xFilial("SE1")+cNNum))
Return
Else
cNumTit := SE1->E1_PREFIXO + SE1->E1_NUM + SE1->E1_PARCELA
Endif
Endif
RestArea(aArea)
Return

Quando eu debugo, a variável cNNum está sendo carregada corretamente, mas o título não á baixado. Será que preciso carregar mais algum dado?
Na linha If !SE1->(dbSetOrder(27), dbSeek(xFilial("SE1")+cNNum)), qual o papel do "!"?

Valeu!


Hugo, não sei no seu caso mas tive um problema parecido e era questão de ocorrencias CNAB, ele não localizava.

O papel da "!" é negar a condição, nesse caso SE O INDICE "NÃO" FOR SE1->(dbSetOrder(27), dbSeek(xFilial("SE1")+cNNum))

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.141 segundos
Joomla templates by a4joomla