- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Pontos de Entrada
- Ponto de Entrada SF2460I ( faturamento )
Perguntas Ponto de Entrada SF2460I ( faturamento )
- dexter
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 78
- Obrigados Recebidos: 0
9 anos 6 meses atrás #28230
por dexter
Ponto de Entrada SF2460I ( faturamento ) foi criado por dexter
Olá, estou precisando de ajuda para implementar
esse P.E de acordo com a necessidade de um usuário.
Preciso identificar um pedido de devolução (D) na SD2
e feito isto preciso comparar essa nota de saída com a nota de entrada
encontrando essa nota, preciso alterar o campo de centro de custo na SD2,
sendo igual o que esta na SD1 de entrada.
Estou tentando fazer desta forma, mas quando eu faturo a
nota e o P.E é chamado então entra em LOOP e não sai..
Se alguém já tiver passado por algo semelhante
e puder dar um luz.
Grato.
esse P.E de acordo com a necessidade de um usuário.
Preciso identificar um pedido de devolução (D) na SD2
e feito isto preciso comparar essa nota de saída com a nota de entrada
encontrando essa nota, preciso alterar o campo de centro de custo na SD2,
sendo igual o que esta na SD1 de entrada.
Estou tentando fazer desta forma, mas quando eu faturo a
nota e o P.E é chamado então entra em LOOP e não sai..
User Function SF2460I
Private aArea := GetArea()
If SD2->( dbSetOrder(8), dbSeek(xFilial("SD2") + SC5->C5_NUM ) )
DbSelectArea( "SF1" )
dbSetOrder(1)
DbSelectArea( "SF2" )
dbSetOrder(2)
DbSelectArea( "SD1" )
dbSetOrder(1)
// preciso pegar na SD2 o pedido sendo como 'D' devolução, comparando na SC5
While SD2->(!Eof()) .And. SD2->D2_FILIAL == xFilial("SD2") .And. SD2->D2_TIPO == 'D'.And. SD2->D2_PEDIDO == SC5->C5_NUM
// Aqui entra!
//Preciso comparar numero da nota de entrada com a saida nos campos, serie e item...
IF SF1->F1_SERIE == SF2->F2_SERIORI .And. SF1->F1_DOC == SF2->F2_NFORI .And. SD2->D2_ITEMORI == SD1->D1_ITEM
// Aqui preciso definir na SD2(nota de saida) o Centro de custo
// que esta na nota de entrada , quando for um pedido de devolução.
IF RecLock("SD2",.F.)
SD2->D2_CCUSTO := SD1->D1_CC
SD2->(MsUnlock())
Endif
Endif
SD2->(dbSkip(1))
Enddo
Endif
RestArea(aArea)
return()
Se alguém já tiver passado por algo semelhante
e puder dar um luz.
Grato.
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
9 anos 6 meses atrás - 9 anos 6 meses atrás #28231
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Ponto de Entrada SF2460I ( faturamento )
User Function SF2460I
Local aArea := GetArea()
If SF2->F2_TIPO == 'D'
If SD2->(dbSetOrder(3), dbSeek(xFilial("SD2")+SF2->F2_DOC+SF2->F2_SERIE))
While SD2->(!Eof()) .And. SD2->D2_FILIAL == xFilial("SD2") .And. SD2->D2_DOC+SD2->D2_SERIE == SF2->F2_DOC+SF2->F2_SERIE
If SD1->(dbSetOrder(1), dbSeek(xFilial("SD1")+SD2->D2_NFORI+SD2->D2_SERIORI+SD2->D2_ITEMORI))
If RecLock("SD2",.f.)
SD2->D2_CCUSTO := SD1->D1_CC
SD2->(MsUnlock())
Endif
Endif
SD2->(dbSkip(1))
Enddo
Endif
Endif
RestArea(aArea)
return .t.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Ultima edição: 9 anos 6 meses atrás por lalberto.
Por favor Acessar ou Registrar para participar da conversa.
- dexter
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 78
- Obrigados Recebidos: 0
9 anos 6 meses atrás #28236
por dexter
Respondido por dexter no tópico Ponto de Entrada SF2460I ( faturamento )
Olá , Luiz, desculpe a demora em responder.
Obrigado por postar sua solução, tomei ela como base
e fui debugando o código, eu tive que mudar a seguinte linha.
Fiz alguns testes aqui e funcionou.
Agradeço sua atenção e tempo de ajuda, este é o diferencial
e que faz o forum ser uma referência em Advpl/Protheus.
Abração!!!
Obrigado por postar sua solução, tomei ela como base
e fui debugando o código, eu tive que mudar a seguinte linha.
//essa linha
If SD1->(dbSetOrder(1), dbSeek(xFilial("SD1")+SD2->D2_NFORI+SD2->D2_SERIORI+SD2->D2_ITEMORI ) )
//mudei para esta
IF SF1->F1_SERIE == SD2->D2_SERIORI .And. SF1->F1_DOC == SD2->D2_NFORI .And. SD2->D2_ITEMORI == SD1->D1_ITEM
Fiz alguns testes aqui e funcionou.
Agradeço sua atenção e tempo de ajuda, este é o diferencial
e que faz o forum ser uma referência em Advpl/Protheus.
Abração!!!
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Pontos de Entrada
- Ponto de Entrada SF2460I ( faturamento )
Tempo para a criação da página:0.092 segundos