Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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
Exemplo:
Bloco de código
firstline1
linenumberstrue
#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
PRECO"} // Array com os campos adicionados na grid "Item da Proposta"
Local aCposProd := {"C8_
XVALOR
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("
TESTE "+Str(nCount,2))
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



Bloco de código
firstline1
linenumberstrue


---

#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_PRECOXTESTE"} // Array com os campos adicionados na grid "Item da Proposta"
Local aCposProd := {"C8_QTSEGUM","C8_SEGUM"XVALOR"} // 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 
TESTE "+Str(nCount,2))
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



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)