Gravar campos do orçamento no pedido de venda via P.E.

No artigo de hoje, vamos demonstrar em como gravar as informações do orçamento de venda (SCJ e SCK) no pedido de venda (SC5 e SC6) via ponto de entrada.

 

Se você já teve a necessidade de criar campos customizados no orçamento e levar essa informação para o pedido, você pode usar algum dos pontos abaixo:

  • MTA416PV: Durante a gravação da SC5 e do aCols da SC6
  • MT416FIM: Após gravar a SC5 e SC6

 

Para esse exemplo então, nós vamos utilizar o primeiro, que dá para manipular a SC5 e o aCols que vai para a SC6.

 

Abaixo os campos que nós vamos gravar:

  • Vendedor: C5_VEND1 com o customizado CJ_X_VEND
  • Observações no Item: C6_X_OBS com o customizado CK_X_OBS

 

Segue como ficou o código fonte:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zTstSBM
Ponto de entrada ao gerar o pedido de venda via orçamento
@author Atilio
@since 06/07/2023
@version 1.0
@type function
@see https://tdn.totvs.com/pages/releaseview.action?pageId=6784395
@obs Utilizar as variáveis _aHeader e _aCols para manipular as informações da SC6
/*/

User Function MTA416PV() 
	Local aArea      := FWGetArea()
	Local aAreaSCK   := SCK->(FWGetArea())
	Local nLinhaSC6  := 0
	Local nPosItem   := GDFieldPos("C6_ITEM",    _aHeader)
	Local nPosProd   := GDFieldPos("C6_PRODUTO", _aHeader)
	Local nPosObs    := GDFieldPos("C6_X_OBS",   _aHeader)

	//Atualizando campos da SC5 (cabeçalho do pedido) com a SCJ (cabeçalho do orçamento)
	M->C5_VEND1   := SCJ_X_VEND

	DbSelectArea("SCK")
    SCK->(DbSetOrder(1)) // CK_FILIAL + CK_NUM + CK_ITEM + CK_PRODUTO
	
	//Percorre as linhas que irão para os itens do pedido de venda na SC6
	For nLinhaSC6 := 1 to Len(_aCols)
	
        //Tenta posicionar na SCK
        If SCK->( MsSeek(xFilial("SCK") + SCJ->CJ_NUM + _aCols[nLinhaSC6][nPosItem] + _aCols[nLinhaSC6][nPosProd]) )
			
			//Atualiza os campos da SC6 conforme a SCK
            _aCols[nLinhaSC6][nPosObs] := SCK->CK_X_OBS
        EndIf
    Next   

	FWRestArea(aAreaSCK)
	FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação