Tiempo aproximado de lectura: 00:15:00 min
Duda
Como funciona el punto PA145GER - Personalizaciones en la generación de documentos MRP ?
Ambiente
TOTVS Manufactura - Totvs Manufactura (Línea Protheus) MI - Planificación y Control de la Producción (SIGAPCP) - Todas las versiones 12
Solución
Punto de entrada
| Descripción: |
El punto de entrada PA145GER se ejecuta cuando todos los documentos MRP (PCPA712 o PCPA144) terminan de generarse.
|
| Ubicación: |
Clase ProcessaDocumentos, método process() - Responsable de realizar la generación de documentos |
| Eventos: |
Al finalizar la generación de los documentos, se abre un nuevo hilo exclusivo para la ejecución del punto de entrada. |
| Programa fuente: | PCPA145. PRW |
|
Sintaxis: |
PA145GER( [ cTicket ] ) --> Cero |
| Devolución: |
Nulo. No se espera ningún retorno porque la ejecución se realiza en un proceso separado (otro subproceso), en segundo plano. |
| Observaciones: |
El uso de cualquier componente de interfaz gráfica no está permitido en este punto de entrada, ya que la función se ejecutará en segundo plano. La rutina principal no esperará a que el punto de entrada termine de funcionar. |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
#INCLUDE "TOTVS.CH"User Function PA145GER() Local cAliasQry := GetNextAlias()
Local cOrigem := "PCPA144"
Local cTicket := PARAMIXB[1]
//
//SC7 - Pedidos de Compra/Autorizações de Entrega
//
BeginSql Alias cAliasQry
SELECT C7_FILIAL, C7_NUM, C7_ITEM
FROM %Table:SC7%
WHERE C7_SEQMRP = %Exp:cTicket%
AND %notDel%
EndSql
While (cAliasQry)->(!Eof())
//Percorre todos os registros gerados no processamento
Conout("SC7 - Documento: " + (cAliasQry)->C7_FILIAL + (cAliasQry)->C7_NUM + (cAliasQry)->C7_ITEM)
(cAliasQry)->(dbSkip())
End
(cAliasQry)->(dbCloseArea())
//
//SC1 - Solicitações de Compra
//
BeginSql Alias cAliasQry
SELECT C1_FILIAL, C1_NUM, C1_ITEM
FROM %Table:SC1%
WHERE C1_SEQMRP = %Exp:cTicket%
AND C1_ORIGEM = %Exp:cOrigem%
AND %notDel%
EndSql
While (cAliasQry)->(!Eof())
//Percorre todos os registros gerados no processamento
Conout("SC1 - Documento: " + (cAliasQry)->C1_FILIAL + (cAliasQry)->C1_NUM + (cAliasQry)->C1_ITEM)
(cAliasQry)->(dbSkip())
End
(cAliasQry)->(dbCloseArea())
//
//SC2 - Ordens de Produção
//
BeginSql Alias cAliasQry
SELECT C2_FILIAL, C2_NUM, C2_ITEM, C2_SEQUEN
FROM %Table:SC2%
WHERE C2_SEQMRP = %Exp:cTicket%
AND C2_BATROT = %Exp:cOrigem%
AND %notDel%
EndSql
While (cAliasQry)->(!Eof())
//Percorre todos os registros gerados no processamento
Conout("SC2 - Documento: " + (cAliasQry)->C2_FILIAL + (cAliasQry)->C2_NUM + (cAliasQry)->C2_ITEM + (cAliasQry)->C2_SEQUEN)
(cAliasQry)->(dbSkip())
End
(cAliasQry)->(dbCloseArea())
//
//SD4 - Empenhos
//
BeginSql Alias cAliasQry
SELECT SD4.D4_FILIAL, SD4.D4_OP, SD4.D4_COD
FROM %Table:SD4% SD4
INNER JOIN %Table:SC2% SC2
ON SD4.D4_FILIAL = SC2.C2_FILIAL
AND SD4.D4_OP = CASE SC2.C2_OP WHEN ' ' THEN
SC2.C2_NUM + SC2.C2_ITEM + SC2.C2_SEQUEN + SC2.C2_ITEMGRD //Operador de concatenação de string do banco pode ser diferente
ELSE
SC2.C2_OP
END
WHERE SD4.%notDel%
AND SC2.%notDel%
AND SC2.C2_SEQMRP = %Exp:cTicket%
EndSql
While (cAliasQry)->(!Eof())
//Percorre todos os registros gerados no processamento
Conout("SD4 - Documento: " + (cAliasQry)->D4_FILIAL + (cAliasQry)->D4_OP + (cAliasQry)->D4_COD)
(cAliasQry)->(dbSkip())
End
(cAliasQry)->(dbCloseArea())
Return |
0 Comentarios