Localização: Function MontEstru() - Responsável por montar array com estrutura do produto.
Em que ponto: É chamado antes de iniciar a gravação dos empenhos na abertura de uma ordem de produção. Utilizado para incluir, alterar ou excluir itens que sejam empenhados na abertura da Ordem de Produção.
Finalidade: Alteração de Itens Empenhados na Abertura da OP.
Programa fonte: MATA650.PRX
Sintaxe: EMP650 - Edição de Itens Empenhados na Abertura da OP ( [ ] )
Observações:
Não recebe parâmetros, porém neste momento o array aCols que é apresentado na alteração de empenhos quando se abre uma Ordem de Produção está disponível para alterações.
O aCols apresenta neste momento as linhas e colunas preenchidas, de acordo com o empenho padrão a ser efetuado no Sistema.
Basta alterar ou incluir o conteúdo deste array para alterar as informações dos empenhos. A estrutura básica do array aCols é apresentada da seguinte forma:
aCols[n,npos] - Onde o n e o número da linha e nPos pode ser:
n | Campo | Título | Descrição | Variável Posição |
---|---|---|---|---|
1 | G1_COMP | Componente | Código do Produto a ser empenhado | nPosCod |
2 | D4_QUANT | Quantidade Empenho | Quantidade do empenho | nPosQuant |
3 | D4_LOCAL | Armazém | Almoxarifado do empenho | nPosLocal |
4 | G1_TRT | Sequência | Sequência do componente na estrutura (Campo G1_TRT) | nPosTrt |
5 | D4_NUMLOTE | Sub-Lote | Sub-Lote utilizado no empenho (Somente deve ser preenchido se o produto utilizar rastreabilidade do tipo "S") | nPosLote |
6 | D4_LOTECTL | Lote | Lote utilizado no empenho (Somente deve ser preenchido se o produto utilizar rastreabilidade) | nPosLotCTL |
7 | D4_DTVALID | Data de Validade | Data de validade do Lote (Somente deve ser preenchido se o produto utilizar rastreabilidade) | nPosDValid |
8 | D4_POTENCI | Potencia | Potência de lote (Somente deve ser preenchido se o produto utilizar rastreabilidade) | nPosPotenc |
9 | DC_LOCALIZ | Endereço | Localização utilizada no empenho (Somente deve ser preenchido se o produto utilizar controle de localização física) | nPosLocLz |
10 | DC_NUMSERI | Num de Serie | Número de Série (Somente deve ser preenchido se o produto utilizar controle de localização física) | nPosnSerie |
11 | B1_UM | 1a. UM | 1a. Unidade de Medida do Produto | nPosUM |
12 | D4_QTSEGUM | Qtd. Empenho 2a. UM | Quantidade do Empenho na 2a. Unidade de Medida | nPosQtSegum |
13 | B1_SEGUM | 2a. UM | 2a. Unidade de Medida do Produto | nPos2UM |
14 | B1_DESC | Descrição | Descrição do produto | nPosDescr |
15 | D4_OPERAC | Operação | Produto Original | nPosOper |
16 | D4_PRDORG | Prd. Orig. | Operação vinculada ao produto | nPosPrdOrg |
17 | PRDALTERN | Alternativo? | Produto Alternativo | nPosIsAlt |
18 | TRTORI | Seq.Origem | Sequência do componente Origem na estrutura | nPosTrtOri |
19 | INTERNO | INTERNO | Campo array de controle interno do sistema NÃO UTILIZAR | INTERNO |
20 | Deletado | Deletado | Identificador se a linha está deletada | LEN(aCols) |
Na acols a ultima coluna define se a linha está deletada (.T.) ou não (.F.)
Como a rotina sofreu alterações, e passou a ter alguma colunas dinâmicas, para pegar a posição da última coluna, indicamos utilizar a busca pelo Acols através da função Len Exemplo:
LEN(ACOLS[n])
Vale ressaltar que as colunas que não forem preenchidas, devem ser inicializadas com a função Criavar dos respectivos campos. Basta pesquisar qual o campo tomado como base para criação das colunas.
#INCLUDE 'PROTHEUS.CH'
User function EMP650()
Local aArea := GetArea()
local nx
For nx := 1 to len(Acols) // Percorre todas as linhas da acols
IF ! Acols[nx][len(acols[nx])] // Verifica se linha nao esta Deletada
Conout("Linha não deletada: "+ cValTochar(nx))
EndIF
Conout("Produto :"+ acols[nx,nPoscod] + " Descrição : " +acols[nx,nPosDescr] )
Next nx
RestArea(aArea)
Return
Também fica disponível o array aOpcCam, que deve ser atualizado juntamente com o array aCols, para correto cálculo de opcionais.
Exemplo:
#include "rwmake.ch"
User Function EMP650()
Local nQtdDel := Len(aColsDele)
Local nx := 0
If Len(aColsDele) > 0
For nx:= nQtdDel To 1 Step -1
aDel(aCols, aColsDele[nx])
aDel(aOpcCam, aColsDele[nx])
Next nx
aSize(aCols, Len(aCols) - Len (aColsDele))
aSize(aOpcCam, Len(aOpcCam) - Len (aColsDele))
aSize(aColsDele,0)
EndIf
Return
<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |