Perguntas ITENS PEDIDO DE COMPRA

Mais
7 anos 7 meses atrás #32000 por manoelcarlosjunior
SALVE MASTER´S ADVPL !!!

Galera preciso que o Protheus não gere pedido de compra cujos itens sejam em maior quantidade que os itens da solicitação de compra.


Achei um ponto MT120PCOK Só to apanhandonos campos que tenho que comparar alguém tem algum exemplo ?

Abç

Manoel Carlos Júnior

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 7 meses atrás #32001 por admin
Respondido por admin no tópico ITENS PEDIDO DE COMPRA
Cara veja se ajuda, este ponto de entrada permite a validação do pedido de compra ou não após pressionar o botão confirma.


/*
±±ºPrograma  ³mt120ok   ºAutor  ³Microsiga           º Data ³  11/11/03   º±±
±±ºDesc.     ³ Apos digitacao do pedido de compras                        º±±

// Creio que seja durante a importação dos itens da SC para o PC, executado para cada item
*/
user function mt120ok()

local careasc1 := GetArea('SC1'), carea := GetArea(), _i

sc1->( dbsetorder(1) )

nPosCLVL    := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_CLVL"   } )
nPosNUMSC   := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_NUMSC"  } )
nPosITEMSC  := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_ITEMSC" } )

nPosOBS     := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_OBS"   } )
nPosITEMCTA := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_ITEMCTA"   } )
nPosCC      := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_CC"   } )
nPosCONTA   := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_CONTA"   } )
nPosVLRORC  := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_VLRORC"   } )

For _i := 1 to len(aCols)
	If sc1->( dbseek( xfilial() + aCols[_i,nPosNUMSC] + aCols[_i,nPosITEMSC] ) )
		aCols[_i,nPosOBS]     := sc1->c1_obs
		aCols[_i,nPosITEMCTA] := sc1->c1_itemcta
		aCols[_i,nPosCC]      := sc1->c1_cc
		aCols[_i,nPosCONTA]   := sc1->c1_conta
		aCols[_i,nPosCLVL]    := sc1->c1_clvl
		aCols[_i,nPosVLRORC]  := sc1->c1_vlrorc
	Endif
Next

RestArea(careasc1)
RestArea(carea)

Return(.t.)

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 7 meses atrás #32014 por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico ITENS PEDIDO DE COMPRA
Muito obrigado meu amigo o P.E. é exatamente esse o problema é que to apanhando na sintaxe na logica pois eu posso compra os itens do pedido com a solicitação mais o protheus deixa adicionar novas linhas no pedido de compra e eu posso pedir mais do produto em um outra linha. Não sei se fui claro.

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 7 meses atrás - 7 anos 7 meses atrás #32020 por admin
Respondido por admin no tópico ITENS PEDIDO DE COMPRA
Veja se ajuda, não testei.
/*
±±ºPrograma  ³mt120ok   ºAutor  ³Microsiga           º Data ³  11/11/03   º±±
±±ºDesc.     ³ Apos digitacao do pedido de compras                        º±±

// Creio que seja durante a importação dos itens da SC para o PC, executado para cada item
*/
user function mt120ok()

local careasc1 := GetArea('SC1'), carea := GetArea(), _i

sc1->( dbsetorder(1) )

nPosNUMSC   := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_NUMSC"  } )
nPosITEMSC  := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_ITEMSC" } )
nPosQUANT   := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_QUANT"   } )
nPosPRODUTO := ascan( aheader,{ |aVal| alltrim( aVal[2] ) == "C7_PRODUTO"   } )

aProdSC1 := {}	// Monta Array de Produtos Originados de SC

For _i := 1 to len(aCols)
	If !aCols[_i][Len(aHeader)+1] .And. !Empty(aCols[_i,nPosNUMSC])	// Linha Nao Esta Deletada
		nAchou := Ascan(aProdSC1,{|x| x[1]==aCols[_i,nPosPRODUTO]})
		If Empty(nAchou)
			AAdd(aProdSC1,{aCols[_i,nPosPRODUTO],;
							aCols[_i,nPosQUANT]})
		Else
			aProdSC1[nAchou,2] += aCols[_i,nPosQUANT]
		Endif
	Endif
Next

// Valida Produtos Digitados a Mais no Pedido de Compras
// Caso o Produto já existe no array de SC´s então não permite a validação da tela

lRet := .T.

For _i := 1 to len(aCols)
	If !aCols[_i][Len(aHeader)+1] .And. Empty(aCols[_i,nPosNUMSC])	// Linha Nao Esta Deletada
		nAchou := Ascan(aProdSC1,{|x| x[1]==aCols[_i,nPosPRODUTO]})
		If !Empty(nAchou)
			MsgStop("Atenção Linha " + Str(_i,3) + " Produto " + aCols[_i,nPosPRODUTO] + " Já Foi Importado de Solicitação de Compras, Não Pode Ser Informado Novamente !")
			lRet := .F.
		Endif
	Endif
Next

RestArea(careasc1)
RestArea(carea)

Return(lRet)
Ultima edição: 7 anos 7 meses atrás por admin.

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 7 meses atrás #32035 por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico ITENS PEDIDO DE COMPRA
Muito Obrigado meu amigo deu certo a questão de acrescentar mas uma linha, mas o total de produtos em relação a solicitação de compra ainda esta passando colocar uma quantidade maior agora mudou a sentença. Infelizmente não da pra colocar imagens aqui na empresa que estou é bloqueado. se quiserem posso mandar por e-mail os prints da tela.
Ex.:
No caso abri uma solicitação com quantidade de 5 produtos na primeira linha solicitei 3
Na segunda linha fiz referência a mesma solicitação e ele fez a subtração normal mas quando efetivo ou confirmo eu posso alterar a quantidade mesmo na solicitação só tendo um valor inferior.
Não quero que o valor seja maior que a quantidade referida na solicitação de compra.
Conseguindo achar a solução posto aqui, assim nos ajudando.

Forte abraço !

Por favor Acessar ou Registrar para participar da conversa.

Mais
7 anos 7 meses atrás #32037 por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico ITENS PEDIDO DE COMPRA
Aqui estão os anexos com os exemplos consegui anexar de casa.


Anexos:

Por favor Acessar ou Registrar para participar da conversa.

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