Histórico da Página
...
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 | nPosCod -Código do Produto a ser empenhado | nPosQuant -nPosCod | |
2 | D4_QUANT | Quantidade Empenho | Quantidade do empenho | nPosQuant | |
3 | D4_LOCAL | Armazém | Almoxarifado do empenho | nPosLocal | |
4 | G1_TRT | Sequência | nPosTrt -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") | nPosLotCTL -nPosLote | |
6 | D4_LOTECTL | Lote | Lote utilizado no empenho (Somente deve ser preenchido se o produto utilizar rastreabilidade) | nPosDValid -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 | nPosQtSegum -nPosUM | |
12 | D4_QTSEGUM | Qtd. Empenho 2a. UM | Quantidade do Empenho na 2a. Unidade de Medida | nPosQtSegum | |
13 | B1_SEGUM | 2a. UM | nPos2UM -2a. Unidade de Medida do Produto | nPos2UM | |
14 | B1_DESC | Descrição | Descrição do produto | nPosDescr | |
15 | D4_OPERAC | Operação | nPosOper -Produto Original | nPosPrdOrg -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.
Para mais informações pode ser consultado a variável "aHeader" que contém os dados do cabeçalho da Grid de empenhos onde:
Posição | Campo SX3 | Título |
---|---|---|
aHeader[01] | X3_TITULO | Título |
aHeader[02] | X3_CAMPO | Campo |
aHeader[03] | X3_PICTURE | Picture |
aHeader[04] | X3_TAMANHO | Tamanho |
aHeader[05] | X3_DECIMAL | Decimal |
aHeader[06] | X3_VALID | Validação |
aHeader[07] | X3_USADO | Usado |
aHeader[08] | X3_TIPO | Tipo |
aHeader[09] | X3_F3 | F3 |
aHeader[10] | X3_CONTEXT | Contexto (R,V) |
aHeader[11] | X3_CBOX | Combobox |
aHeader[12] | X3_RELACAO | Inicial. Padrao |
aHeader[13] | X3_WHEN | Habilita edicao |
aHeader[14] | X3_VISUAL | Alteravel (A,V) |
aHeader[15] | X3_VLDUSER | Valid de User |
aHeader[16] | X3_PICTVAR | Picture |
aHeader[17] | X3_OBRIGAT | Obrigatorio |
02. EXEMPLO DE UTILIZAÇÃO
Bloco de código | ||||
---|---|---|---|---|
| ||||
#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) |
...
Também fica disponível o array aOpcCam, que deve ser atualizado juntamente com o array aCols, para correto cálculo de opcionais.
Exemplo:
...
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 |
HTML |
---|
<!-- 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> |