Árvore de páginas


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

NomeTipoDescrição
aPedidoArrayCabeçalho do pedido
aItensArrayItens 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.

NomeTipoDescrição
aPedidoArrayCabeçalho do pedido
aItensArrayItens 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}

------