×
Linguagem de Programação ADVPL
Perguntas PE Pedido de Venda
- lsoliv
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 36
- Obrigados Recebidos: 0
11 anos 6 meses atrás #13992
por lsoliv
PE Pedido de Venda foi criado por lsoliv
Boa tarde!
Estou precisando desenvolver um pe em ped de venda, para validar se cfop é incompativel com campo contribuinte no cad do cliente. Ao incluir novo pedido deverá aparecer uma mensagem ao usuário informando sobre isso. Não é validar por campo/item e sim ao abrir o ped de venda.
Fiz o codigo abaixo mas só funciona quando eu clico no botão cancelar. O correto seria quando eu fosse clicar em confirmar ou quando o usuário tentasse alterar o campo cfop.
USER FUNCTION MA410VLD()
aAreaSA1:= SA1->(GetArea())
lRet:= .T.
dbSelectArea("SA1")
dbSetOrder(1)
IF dbSeek(xFilial("SA1")+m->(C5_CLIENTE+C5_LOJACLI),.F.)
lRet:= .t.
_nItem:= aScan(aHeader,{|x| rtrim(x[2])=="C6_ITEM"}) //item do pedido
_nCfop:= aScan(aHeader,{|x| rtrim(x[2])=="C6_CF"}) //cfop
cContrib:= A1_CONTRIB //1=sim cfop=x102 || 2=nao cfop=x108
FOR cont:= 1 TO Len(aCols)
cCfop:= aCols[cont,_nCfop]
IF ((SA1->A1_CONTRIB == "1") .or. (cCfop <> "6108")) .and. ((SA1->A1_CONTRIB == "2") .or. (cCfop <> "6102"))
lRet:= .F.
msgAlert("CFOP "+cCfop+" CONTRIBUINTE "+cContrib)
ENDIF
SA1->(dbSkip())
NEXT cont
ENDIF
restArea(aAreaSA1)
return(lRet)
Alguém pode me ajudar?
Leandro
Estou precisando desenvolver um pe em ped de venda, para validar se cfop é incompativel com campo contribuinte no cad do cliente. Ao incluir novo pedido deverá aparecer uma mensagem ao usuário informando sobre isso. Não é validar por campo/item e sim ao abrir o ped de venda.
Fiz o codigo abaixo mas só funciona quando eu clico no botão cancelar. O correto seria quando eu fosse clicar em confirmar ou quando o usuário tentasse alterar o campo cfop.
USER FUNCTION MA410VLD()
aAreaSA1:= SA1->(GetArea())
lRet:= .T.
dbSelectArea("SA1")
dbSetOrder(1)
IF dbSeek(xFilial("SA1")+m->(C5_CLIENTE+C5_LOJACLI),.F.)
lRet:= .t.
_nItem:= aScan(aHeader,{|x| rtrim(x[2])=="C6_ITEM"}) //item do pedido
_nCfop:= aScan(aHeader,{|x| rtrim(x[2])=="C6_CF"}) //cfop
cContrib:= A1_CONTRIB //1=sim cfop=x102 || 2=nao cfop=x108
FOR cont:= 1 TO Len(aCols)
cCfop:= aCols[cont,_nCfop]
IF ((SA1->A1_CONTRIB == "1") .or. (cCfop <> "6108")) .and. ((SA1->A1_CONTRIB == "2") .or. (cCfop <> "6102"))
lRet:= .F.
msgAlert("CFOP "+cCfop+" CONTRIBUINTE "+cContrib)
ENDIF
SA1->(dbSkip())
NEXT cont
ENDIF
restArea(aAreaSA1)
return(lRet)
Alguém pode me ajudar?
Leandro
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 6 meses atrás #13993
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 PE Pedido de Venda
Vê ai, não testei.
USER FUNCTION MA410VLD()
Local aAreaSA1:= SA1->(GetArea())
Local lRet := .t.
Local nItem:= aScan(aHeader,{|x| rtrim(x[2])=="C6_ITEM"}) //item do pedido
Local nCfop:= aScan(aHeader,{|x| rtrim(x[2])=="C6_CF"}) //cfop
If M->C5_TIPO == "N" // Pedido Venda Normal
cFFop := Iif(SA1->A1_CONTRIB=="1",'102','108')
FOR nI := 1 TO Len(aCols)
cCfop := aCols[cont,_nCfop]
If Right(AllTrim(cCfop),3) <> cFFop
lRet:= .F.
msgAlert("CFOP "+cCfop+" CONTRIBUINTE "+cFFop)
Exit
Endif
Next
Endif
restArea(aAreaSA1)
return(lRet)
USER FUNCTION MA410VLD()
Local aAreaSA1:= SA1->(GetArea())
Local lRet := .t.
Local nItem:= aScan(aHeader,{|x| rtrim(x[2])=="C6_ITEM"}) //item do pedido
Local nCfop:= aScan(aHeader,{|x| rtrim(x[2])=="C6_CF"}) //cfop
If M->C5_TIPO == "N" // Pedido Venda Normal
cFFop := Iif(SA1->A1_CONTRIB=="1",'102','108')
FOR nI := 1 TO Len(aCols)
cCfop := aCols[cont,_nCfop]
If Right(AllTrim(cCfop),3) <> cFFop
lRet:= .F.
msgAlert("CFOP "+cCfop+" CONTRIBUINTE "+cFFop)
Exit
Endif
Next
Endif
restArea(aAreaSA1)
return(lRet)
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.
- lsoliv
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 36
- Obrigados Recebidos: 0
11 anos 6 meses atrás #13994
por lsoliv
Respondido por lsoliv no tópico PE Pedido de Venda
Opa Luiz Alberto, blz?
Este código que passou na verdade tem a mesma funcionalidade do meu, a diferença é que você busca somente os três últimos dígitos do cfop.
Mas acontece assim:
No sintegra está dando erro em algumas nfs, pois quando um cliente é CONTRIBUINTE e você inclui um ped. de venda, o cfop nos itens é preechido automaticamente como 6108. Mas por alguma razão, o usuário altera esse cfop para 6102, gerando o erro no sintegra. Mesma coisa se o cliente é NÃO CONTRIBUINTE e o tes é preenchido como 6108.
Aí tenho que acessar as tabelas SD2, SFT e SF3 e alterar esse cfop juntamente com o contribuinte no cad do cliente.
Eu fazendo esse ponto de entrada, avisará ao usuário que o cfop é incompatível com o campo no cad. do cliente.
Este código que passou na verdade tem a mesma funcionalidade do meu, a diferença é que você busca somente os três últimos dígitos do cfop.
Mas acontece assim:
No sintegra está dando erro em algumas nfs, pois quando um cliente é CONTRIBUINTE e você inclui um ped. de venda, o cfop nos itens é preechido automaticamente como 6108. Mas por alguma razão, o usuário altera esse cfop para 6102, gerando o erro no sintegra. Mesma coisa se o cliente é NÃO CONTRIBUINTE e o tes é preenchido como 6108.
Aí tenho que acessar as tabelas SD2, SFT e SF3 e alterar esse cfop juntamente com o contribuinte no cad do cliente.
Eu fazendo esse ponto de entrada, avisará ao usuário que o cfop é incompatível com o campo no cad. do cliente.
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 6 meses atrás #13995
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 PE Pedido de Venda
Já pensou em deixar o campo C6_CF apenas para visualização, assim o usuário não poderá edita-lo ?
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.
- cleber.orati
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 32
- Obrigados Recebidos: 0
11 anos 6 meses atrás #13997
por cleber.orati
Respondido por cleber.orati no tópico PE Pedido de Venda
Essa validação vc pode fazer no ponto de entrada MTA410 .
Abs,
Cleber
Abs,
Cleber
Por favor Acessar ou Registrar para participar da conversa.
- lsoliv
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 36
- Obrigados Recebidos: 0
Tempo para a criação da página:0.147 segundos