01. DADOS GERAIS
Produto: | TOTVS Logística WMS
|
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | Logística |
Módulo: | SIGAWMS - Gestão de Armazenagem |
Função: | WMSV083 - Gerar Pedido Cross Docking |
País: | Todos Países |
Ticket: | - |
Requisito/Story/Issue (informe o requisito relacionado) : | - |
02. DESCRIÇÃO
Este Ponto de Entrada permite manipular as informações do Pedido de Venda (cabeçalho e itens), antes da inclusão efetuada via Cross Docking.
03. LOCALIZAÇÃO
Após a pergunta "Confirma geração do pedido de venda a partir da seleção de volumes?" e antes da execução automática da rotina MATA410, para inclusão do registro.
04. PARÂMETROS
Nome | Tipo | Descrição |
---|---|---|
aPedido | Array | Cabeçalho do pedido |
aItens | Array | Itens do pedido |
05. RETORNO
Serão retornados os mesmos arrays enviados como parâmetro, com os valores manipulados pelo Ponto de Entrada.
O array aPedido será utilizado para criação do registro na tabela SC5 e o array aItens será usado para gravar os registros na tabela SC6.
Nome | Tipo | Descrição |
---|---|---|
aPedido | Array | Cabeçalho do pedido |
aItens | Array | Itens do pedido |
06. VERSÕES
Protheus 12.1.23 ou superiores.
07. EXEMPLO
------
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOTVS.CH"
User Function WMV83PED()
Local aCabec := paramixb[1]
Local aItens := paramixb[2]
Local cCli := ''
Local cLojCli := ''
Local nX := 0
Local nInd := 0
/*
Informações do pedido enviadas no array aCabec
Índice / Campo / Valor
1 / "C5_TIPO" / "N"
2 / "C5_CLIENTE" / SA1→ A1_COD
3 / "C5_LOJACLI" / SA1→ A1_LOJA
4 / "C5_TIPOCLI" / SA1→ A1_TIPO
5 / "C5_CLIENT" / SA1→ A1_COD
6 / "C5_LOJAENT" / SA1→ A1_LOJA
7 / "C5_CONDPAG" / SA1→ A1_COND
8 / "C5_TPCARGA" / "2"
9 / "C5_GERAWMS" / "1"
Informações do pedido enviadas no array aItens
Índice / Campo / Valor
1 / "C6_ITEM" / Sequencial
2 / "C6_PRODUTO" / Código do produto
3 / "C6_LOTECTL" / Lote, se existir
4 / "C6_NUMLOTE" / Sublote, se existir
5 / "C6_QTDVEN" / Quantidade
6 / "C6_PRCVEN" / Valor unitário
7 / "C6_VALOR" / Valor total
8 / "C6_TES" / TES
9 / "C6_SERVIC" / Serviço de separação
10 / "C6_ENDPAD" / Endereço de destino da separação
11 / "C6_LOCAL" / Armazém
12 / "C6_LOCALIZ" / Endereço de origem da separação
*/
cCli := aCabec[2,2]
cLojCli := aCabec[3,2]
//Se for cliente 000002/02, adiciona informações do cliente de entrega do pedido
If cCli = '000002' .And. cLojCli = '01'
aAdd(aCabec,{"C5_CLIENT" ,"900002" ,Nil})
aAdd(aCabec,{"C5_LOJAENT" ,"02" ,Nil})
EndIf
//Se a quantidade vendida for maior que 10 e o total do item ultrapassar 1000 reais, aplica 3% de desconto.
For nX := 1 To Len(aItens)
If aItens[nX,3,1] = "C6_LOTECTL"
nInd := 5
Else
nInd := 3
EndIf
If aItens[nX,nInd,2] >= 10 .And. aItens[nX,nInd+2,2] >= 1000
aItens[nX,nInd+1,2] := aItens[nX,nInd+1,2] * 0.97
aItens[nX,nInd+2,2] := aItens[nX,nInd,2] * aItens[nX,nInd+1,2]
EndIf
Next nX
Return {aCabec, aItens}
------