Árvore de páginas

Ponto de Entrada - MT161CPO

Linha de Produto:

Protheus

Segmento:

Manufatura

Módulo:

SIGACOM - Compras

Rotina:

Rotina

Nome Técnico

Análise de Cotações

MATA161

País(es):

Brasil

Banco(s) de Dados:

Todos

Sistemas Operacionais:

Todos

Ponto de Entrada

Descrição:

O Ponto de Entrada MT161CPO permite incluir campos customizados nas grids "Produtos" e "Item da Proposta", na rotina Análise de Cotação (MATA161).

Eventos:

A chamada do Ponto de Entrada MT161CPO ocorre ao clicar no botão "Análise da cotação" na rotina Analisa Cotações (MATA161).

Programa Fonte:

MATA161.PRW

Função:

MATA161 - Análise da Cotação - Mapa de Cotação

Parâmetros:
ParâmetroTipoDescriçãoObrigatório
PARAMIXB[1]ArrayArray contendo os dados das propostas dos fornecedoresNão
PARAMIXB[2]ArrayArray com os dados da grid "Produtos"Não
Retorno:
NomeTipoDescriçãoObrigatório
aRetArrayArray com quatro dimensões contendo:
1 - Os dados das propostas dos fornecedores na mesma estrutura do array recebido como parâmetro PARAMIXB[1], acrescido das informações dos campos incluídos.
2 - Array com o nome dos campos incluídos na grid "Item da Proposta".
3 - Os dados dos produtos  na mesma estrutura do array recebido como parâmetro PARAMIXB[2], acrescido das informações dos campos incluídos.
4 - Array com o nome dos campos incluídos na grid "Produtos".
Sim
Exemplos:
#INCLUDE "PROTHEUS.CH"

User Function MT161CPO()

Local aPropostas := PARAMIXB[1] // Array com os dados das propostas dos Fornecedores
Local aItens 	 := PARAMIXB[2] // Array com os dados da grid "Produtos"
Local aCampos 	 := {"C8_PRECO"} // Array com os campos adicionados na grid "Item da Proposta"
Local aCposProd  := {"C8_QTSEGUM","C8_SEGUM"} // Array com os campos adicionados na grid "Produtos"
Local aRetorno 	 := {}
Local nX 		 := 0
Local nY 		 := 0
Local nZ 		 := 0
Local nCount 	 := 0
Local aAreaSC8   := SC8->(GetArea())

For nX := 1 To Len(aPropostas)
	For nY := 1 To Len(aPropostas[nX])
		For nZ := 1 To Len(aPropostas[nX][nY][2])
			nCount++

			//C8_FILIAL+C8_NUM+C8_FORNECE+C8_LOJA+C8_ITEM+C8_NUMPRO
			If Len(aPropostas[nX][nY][1]) > 0
				AADD(aPropostas[nX][nY][2][nZ], Posicione("SC8",1,SC8→(C8_FILIAL+C8_NUM)+aPropostas[nX][nY][1][1]+aPropostas[nX][nY][1][2]+aPropostas[nX][nY][2][nZ][2]+aPropostas[nX][nY][2][nZ][12], "C8_PRECO"))
			Else
				AADD(aPropostas[nX][nY][2][nZ],0)
			EndIf 
		Next nZ
	Next nY
Next nX

For nX := 1 To Len(aItens)
	//C8_FILIAL+C8_NUM+C8_FORNECE+C8_LOJA+C8_ITEM+C8_NUMPRO
	AADD(aItens[nX], Posicione("SC8",1,SC8→(C8_FILIAL+C8_NUM)+aItens[nX][10]+aItens[nX][11]+aItens[nX][12]+aItens[nX][13], "C8_QTSEGUM"))
	AADD(aItens[nX], Posicione("SC8",1,SC8→(C8_FILIAL+C8_NUM)+aItens[nX][10]+aItens[nX][11]+aItens[nX][12]+aItens[nX][13], "C8_SEGUM"))
Next nX

AADD(aRetorno, aPropostas)
AADD(aRetorno, aCampos)
AADD(aRetorno, aItens)
AADD(aRetorno, aCposProd)

RestArea(aAreaSC8)

Return aRetorno



#INCLUDE "PROTHEUS.CH"

User Function MT161CPO()

Local aPropostas := PARAMIXB[1] // Array com os dados das propostas dos Fornecedores
Local aItens 	 := PARAMIXB[2] // Array com os dados da grid "Produtos"
Local aCampos 	 := {"C8_XTESTE"} // Array com os campos adicionados na grid "Item da Proposta"
Local aCposProd  := {"C8_XVALOR"} // Array com os campos adicionados na grid "Produtos"
Local aRetorno   := {}
Local nX 		 := 0
Local nY 		 := 0
Local nZ 		 := 0
Local nCount 	 := 0

For nX := 1 To Len(aPropostas)
	For nY := 1 To Len(aPropostas[nX])
		For nZ := 1 To Len(aPropostas[nX][nY][2])
			nCount++
			AADD(aPropostas[nX][nY][2][nZ], "TESTE "+Str(nCount,2))
		Next nZ
	Next nY
Next nX

For nX := 1 To Len(aItens)
	AADD(aItens[nX], nX)
Next nX

AADD(aRetorno, aPropostas)
AADD(aRetorno, aCampos)
AADD(aRetorno, aItens)
AADD(aRetorno, aCposProd)

Return aRetorno



Informações adicionais:

Os nomes dos campos devem ser incluídos nos arrays de retorno na mesma ordem em que foram incluídos nas informações dos produtos e das propostas.
No array de produtos, todos os produtos devem ter os mesmos campos incluídos e no array de dados das propostas todas as propostas devem ter os mesmos campos incluídos.
Este ponto de entrada não efetua gravação de campos na tabela SC8 e também não permite editar as informações dos campos customizados na tela, somente exibição das informações.

Estrutura do Array aPropostas

//aItens[n,x]: Numero do item
//aItens[n,1]: C8_PRODUTO
//aItens[n,2]: C8_IDENT
//aItens[n,3]: C8_QUANT
//aItens[n,4]: C8_ UM
//aItens[n,5]: C8_ DATPRF
//aItens[n,6]: C8_ FILENT
//aItens[n,7]: valor do produto por proposta escolhida
//aItens[n,8]: Descrição do Produto
//aItens[n,9]: Flag finalizado
//aItens[n,10]: Fornecedor
//aItens[n,11]: Loja
//aItens[n,12]: Item
//aItens[n,13]: Numero da proposta
//aItens[n,14]: Item da solicitacao
//aItens[n,15]: Preco Unitário
//aItens[n,16]: B1_CODITE [Integração Gestão de Concessionárias - MV_VEICULO = S]
//aItens[n,17]: B1_GRUPO [Integração Gestão de Concessionárias - MV_VEICULO = S]

//CABEÇALHO
//aPropostas[n] : Número da página
//aPropostas[n,p] : Posição do pedido na página (1,2)
//aPropostas[n,p,1,x] : Dados do cabeçalho da proposta
//aPropostas[n,p,1,1 ] : Cod Fornecedor
//aPropostas[n,p,1,2 ] : Loja
//aPropostas[n,p,1,3 ] : Nome
//aPropostas[n,p,1,4 ] : Proposta
//aPropostas[n,p,1,5 ] : Cond pagto
//aPropostas[n,p,1,6 ] : Frete
//aPropostas[n,p,1,7 ] : Valor total (soma de nCusto dos itens)


//ITENS DA PROPOSTA//
//aPropostas[n,p,2,x] : Itens da proposta
//aPropostas[n,p,2,x,1] : Flag vencendor (lWin)
//aPropostas[n,p,2,x,2] : Item (SC8->C8_ITEM)
//aPropostas[n,p,2,x,3] : Cod produto (SC8->C8_PRODUTO)
//aPropostas[n,p,2,x,4] : Valor total (nCusto)
//aPropostas[n,p,2,x,5] : Data de entrega ((DATE()+SC8->C8_PRAZO))
//aPropostas[n,p,2,x,6] : Observações (SC8->C8_OBS)
//aPropostas[n,p,2,x,7] : Filial Entrega (SC8->C8_FILENT)
//aPropostas[n,p,2,x,8] : Flag finalizado (lFim)
//aPropostas[n,p,2,x,9] : Recno SC8 (SC8->(Recno()))
//aPropostas[n,p,2,x,10] : Ident. (SC8->C8_IDENT)
//aPropostas[n,p,2,x,11] : Total de Itens da Cotação (Len(aItens))
//aPropostas[n,p,2,x,12] : Nro. da Proposta (SC8->C8_NUMPRO)
//aPropostas[n,p,2,x,13] : Preco Unitario (SC8->C8_PRECO)
//aPropostas[n,p,2,x,14] : Flag vencendor (lWinAud)
//aPropostas[n,p,2,x,15] : Motivo Vencedor (SC8->C8_MOTVENC)