Ponto entrada > Módulo Compras > Tratamento standard TRTACHMGT1 

PECBESOINS : Modificação das quantidades a tomar em conta

Este ponto de entrada situado no tratamento TRTACHMGT1 tomada em conta das necessidades a partir dos planos de trabalho (planning global, plano de trabalho e reagrupamento), gera uma acção "PECBESOINS".

O objectivo desta acção é de dar a possibilidade de converter em unidade física a quantidade de necessidade a tomar em conta.

Iso se faz em função do título por defeito do artigo mas apenas para as necessidades não emitidas de um documento de compra.

Contexto e modo de funcionamento.

Transação

Não existe transacção em curso.

Ficheiro rasto

Existe um ficheiro rasto aberto.

Diferentes casos de chamada

A chamada se faz para cada linha de necessidade tomada em conta nos planos de trabalho.

Variáveis e máscaras disponíveis

As variáveis seguintes são carregadas no momento da chamada de acção "PECBESOINS".

RASTO

Típo de tratamento das necessidades tomadas em conta:

- 4 = Para criação de encomendas de compra

- 5 = Para criação de encomendas clássicas

- 6 = Para criação de encomendas de entraga (encomendas abertas)

ABREV

Abreviação da máscara ecrã utilizado ("PMG")

A máscara ecrã [M:PMG] está utilizável, a variável I indica a linha do quadro em curso de tratamento

[M:PMG]WIPTYP(I)

Tipos de ordem

- 2 = "PO" Encomenda fornecedor

- 4 = "SC" Serviço sub-contrato

- 7 = "TR" Transferência aprovisionamento

[M:PMG]WIPSTA(I)

Status da ordem

- 1 = "F" Firme

- 2 = "P" Plannificado

- 7 = "S" Sugerido

As variáveis e as classes precedentes não devem ser modificados.

As variáveis seguintes devem ser modificadas para influênciar o tratamento da tomada em conta das necessidades.

RMNQTY :

Quantidade da necessidade tomada em conta exprimida em :

- unidade de stock físico se a necessidade está emitida de um documento de compra "POP", "POF", "TRP", "TRF"

-ou em unidade de stock activo se a necessidade não foi emitida de um documento de compra ("POS", "TRS", "SCF" … etc …)

-

Exemplo de um tratamento específico activado pelo ponto de entrada PECBESOINS :

$ACTION

Check box ACTION

When "PECBESOINS" : Gosub PECBESOINS

When "ORDLEC" : Gosub ORDLEC

When "ORDMAJ" : Gosub ORDMAJ

Endcase

Return

#----- Conversão da quantidade da necessidade tomada em conta em unidade física -----#

$PECBESOINS

If find(TRAIT,4,5,6) & ABREV="PMG" & (!find([M:PMG]WIPTYP(I),2,7) | [M:PMG]WIPSTA(I)=3)

If [F:ITM]ITMREF<>[M:PMG]ITMREF(I)

Read [ITM] ITM0=[M:PMG]ITMREF(I) : If fstat Raz [F:ITM] : Endif

Endif 

If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0

[L]RMNQTY=[L]RMNQTY*100/[F:ITM]DEFPOT

Call QTEARR ([L]RMNQTY,[F:ITM]STU) From TRTDIV

Endif 

Endif 

Return

#----- Conversão das quantidades em unidade física após leitura [F:ORD] -----#

$ORDLEC

If [F:ITM]ITMREF<>[F:ORD]ITMREF

Read [ITM] ITM0=[F:ORD]ITMREF : If fstat Raz [F:ITM] : Endif 

Endif 

If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0

[F:ORD]EXTQTY=[F:ORD]EXTQTY*100/[F:ITM]DEFPOT

Call QTEARR ([F:ORD]EXTQTY,[F:ITM]STU) From TRTDIV

[F:ORD]CPLQTY=[F:ORD]CPLQTY*100/[F:ITM]DEFPOT

Call QTEARR ([F:ORD]CPLQTY,[F:ITM]STU) From TRTDIV

[F:ORD]RMNEXTQTY=[F:ORD]RMNEXTQTY*100/[F:ITM]DEFPOT

Call QTEARR ([F:ORD]RMNEXTQTY,[F:ITM]STU) From TRTDIV

Endif 

Return

#----- Conversão das quantidades em unidade activa se necessidades emitidas das compras -----#

$ORDMAJ

If find([F:ORD]WIPTYP,2,7) & left$([M:ORDK]ABBFIL,1)="P"

If [F:ITM]ITMREF<>[F:ORD]ITMREF

Read [ITM] ITM0=[F:ORD]ITMREF : If fstat Raz [F:ITM] : Endif 

Endif 

If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0

[F:ORD]EXTQTY=[F:ORD]EXTQTY*[F:ITM]DEFPOT/100

Call QTEARR ([F:ORD]EXTQTY,[F:ITM]STU) From TRTDIV

[F:ORD]CPLQTY=[F:ORD]CPLQTY*[F:ITM]DEFPOT/100

Call QTEARR ([F:ORD]CPLQTY,[F:ITM]STU) From TRTDIV

[F:ORD]RMNEXTQTY=[F:ORD]RMNEXTQTY*[F:ITM]DEFPOT/100

Call QTEARR ([F:ORD]RMNEXTQTY,[F:ITM]STU) From TRTDIV

Endif 

Return

Tabelas abertas

No quadro a seguir, a flag conteúdo significativo significa que o conteúdo está em fase com o contexto.

Tabela

Conteúdo significativo

Intitulado Tabela

ORDERS

Não

Em-curso :

ITMMASTER

Não

Artigos

ITMBPS

Não

Artigos - fornecedores

PREQUIS

Se TRAIT = 4

Pedidos de compra cabeçalhos

PREQUISD

Se TRAIT = 4

Pedidos de compra em linhas

 PORDER

Se TRAIT = 5 ou 6

Encomendas de compra cabeçalhos

PORDERC

Se TRAIT = 6

Linhas artigos contratos

PORDERP

Se TRAIT = 5 ou 6

Linhas encomendas de preços de compra

PORDERQ

Se TRAIT = 5 ou 6

Linhas encomendas de quantidade de compra

Observações diversas

Este ponto de entrada deve ser utilizado obrigatoriamente com dois outros pontos ORDMAJ e ORDLEC afim de tratar convenientemente o problema dos artigos titulados (quantidades em unidades activas para o em-curso e em unidades físicas para os documentos de compras).

ORDLEC : Modificação das quantidades após leitura do em curso

Este ponto de entrada situado no tratamento TRTACHMGT1 tomado em conta das necessidades a partir dos planos de trabalho (planning global, plano de trabalho e reagrupamento), gera uma acção "ORDLEC".

O objectivo desta acção é de dar a possibilidade de converter em unidade física as quantidades do em curso que vem de ser lida.

Isto se faz em função do título por defeito do artigo, as quantidades do em curso sendo sempre exprimidas em unidade activa.

Contexto e modo de funcionamento.

Diferentes casos de chamada

A chamada se faz após a leitura de um registo da tabela ORDERS nos tratamentos do módulo compras.

Variáveis e máscaras disponíveis

A classe [F :ORD] está carregada no momento da chamda de acção "ORDLEC".

As quantidades seguintes devem ser convertidas em unidade física se o artigo é "titulado" :

[F :ORD]EXTQTY

Quantidade prevista

[F :ORD]CPLQTY

quantidade realizada

[F :ORD]RMNEXTQTY

Quantidade restante

Exemplo de um tratamento específico activado pelo ponto de entrada ORDLEC :

$ACTION

Check box ACTION

When "PECBESOINS" : Gosub PECBESOINS

When "ORDLEC" : Gosub ORDLEC

When "ORDMAJ" : Gosub ORDMAJ

Endcase

Return

#----- Conversão da quantidade da necessidade tomada em conta em unidade física -----#

$PECBESOINS

If find(TRAIT,4,5,6) & ABREV="PMG" & (!find([M:PMG]WIPTYP(I),2,7) | [M:PMG]WIPSTA(I)=3)

If [F:ITM]ITMREF<>[M:PMG]ITMREF(I)

Read [ITM] ITM0=[M:PMG]ITMREF(I) : If fstat Raz [F:ITM] : Endif 

Endif 

If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0

[L]RMNQTY=[L]RMNQTY*100/[F:ITM]DEFPOT

Call QTEARR ([L]RMNQTY,[F:ITM]STU) From TRTDIV

Endif 

Endif 

Return

#----- Conversão das quantidades em unidade física após leitura [F:ORD] -----#

$ORDLEC

If [F:ITM]ITMREF<>[F:ORD]ITMREF

Read [ITM] ITM0=[F:ORD]ITMREF : If fstat Raz [F:ITM] : Endif

Endif 

If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0

[F:ORD]EXTQTY=[F:ORD]EXTQTY*100/[F:ITM]DEFPOT

Call QTEARR ([F:ORD]EXTQTY,[F:ITM]STU) From TRTDIV

[F:ORD]CPLQTY=[F:ORD]CPLQTY*100/[F:ITM]DEFPOT

Call QTEARR ([F:ORD]CPLQTY,[F:ITM]STU) From TRTDIV

[F:ORD]RMNEXTQTY=[F:ORD]RMNEXTQTY*100/[F:ITM]DEFPOT

Call QTEARR ([F:ORD]RMNEXTQTY,[F:ITM]STU) From TRTDIV

Endif 

Return

#----- Conversão das quantidades em unidade activa se necessidades emitidas das compras -----#

$ORDMAJ

If find([F:ORD]WIPTYP,2,7) & left$([M:ORDK]ABBFIL,1)="P"

If [F:ITM]ITMREF<>[F:ORD]ITMREF

Read [ITM] ITM0=[F:ORD]ITMREF : If fstat Raz [F:ITM] : Endif 

Endif 

If [F:ITM]STOMGTCOD=3 & [F:ITM]DEFPOT<>0

[F:ORD]EXTQTY=[F:ORD]EXTQTY*[F:ITM]DEFPOT/100

Call QTEARR ([F:ORD]EXTQTY,[F:ITM]STU) From TRTDIV

[F:ORD]CPLQTY=[F:ORD]CPLQTY*[F:ITM]DEFPOT/100

Call QTEARR ([F:ORD]CPLQTY,[F:ITM]STU) From TRTDIV

[F:ORD]RMNEXTQTY=[F:ORD]RMNEXTQTY*[F:ITM]DEFPOT/100

Call QTEARR ([F:ORD]RMNEXTQTY,[F:ITM]STU) From TRTDIV

Endif 

Return

Tabelas abertas

No quadro a seguir, a flag conteúdo significativo significa que o conteúdo está em fase com o contexto.

Tabela

Conteúdo significativo

Intitulado Tabela

ORDERS

Sim                 

Em-curso :

ITMMASTER

Não

Artigos

Observações diversas

Este ponto de entrada deve ser utilizado obrigatoriamente com dois outros pontos de entrada PECBESOINS e ORDMAJ afim de tratar convenientemente o problema dos artigos titulados (quantidades em unidades activas para o em-curso e em unidades físicas para os documentos de compras).