P712SQL - Montagem das instruções SQL de carga memória para o MRP
Linha de Produto: | Protheus | ||||||||||||||||||||||||||||||
Segmento: | Manufatura | ||||||||||||||||||||||||||||||
Módulo: | SIGAPCP - Planejamento e Controle da Produção | ||||||||||||||||||||||||||||||
Parâmetro(s): |
| ||||||||||||||||||||||||||||||
Idiomas: | Todos | ||||||||||||||||||||||||||||||
País(es): | Todos | ||||||||||||||||||||||||||||||
Banco(s) de Dados: | Todos | ||||||||||||||||||||||||||||||
Sistema(s) Operacional(is): | Todos |
Ponto de Entrada
| Descrição: | O ponto de entrada P712SQL é executado na montagem das instruções SQL quer irão realizar a carga dos dados na memória. O ponto de entrada é chamado nas seguintes cargas:
|
| Localização: | Classe CargaMemoria - Responsável por realizar a execução das instruções SQL e o carregamento dos dados que serão processados pelo MRP para a memória. |
| Eventos: | Antes da execução de cada Query das tabelas citadas anteriormente. |
| Programa Fonte: | MrpDados_Carga_Documentos.PRW, MrpDados_Carga_Engenharia.PRW, MRPDados_CargaMemoria.PRW |
Sintaxe: | P712SQL (cTabela, cFields, cQueryCon, cOrder) --> aRetQuery |
| Retorno: | Array contendo as três instruções do SQL. Na posição 01 do array, retornar os campos da cláusula SELECT (cFields). Na posição 02 do array, retornar as informações das cláusulas FROM e WHERE (cQueryCon) Na posição 03 do array, retornar as informações da cláusula ORDER BY (cOrder) |
| Observações: | O ponto de entrada precisa retornar, nas três posições do array, instruções SQL que sejam válidas, dentro do padrão ANSI SQL. |
#INCLUDE "TOTVS.CH"
User Function P712SQL()
Local aRetorno := {}
Local cTabela := Trim(PARAMIXB[1])
Local cFields := Trim(PARAMIXB[2])
Local cQueryCon := Trim(PARAMIXB[3])
Local cOrder := Trim(PARAMIXB[4])
Local lBeginSql2 := .F.
Local lBeginSql3 := .F.
Local lBeginSql4 := .F.
Local lAlterou := .T.
//Tratamento BeginSQL
If Right(cFields, 1) == '%'
cFields := StrTran(cFields, "%", "")
lBeginSql2 := .T.
EndIf
If Right(cQueryCon, 1) == '%'
cQueryCon := StrTran(cQueryCon, "%", "")
lBeginSql3 := .T.
EndIf
If Right(cOrder, 1) == '%'
cOrder := StrTran(cOrder, "%", "")
lBeginSql4 := .T.
EndIf
Conout("Query de carga da tabela " + cTabela + ":")
Conout("SELECT " + cFields + " FROM " + cQueryCon + " ORDER BY " + cOrder)
Do Case
//Só consideraremos produtos com controle de Lote e Sublote
Case cTabela == 'HWA'
cQueryCon += " AND HWA_RASTRO <> 'N' "
//Só consideraremos Pedidos de Compras com quantidade maior que 10
Case cTabela == 'T4U'
cQueryCon += " AND T4U_QTD > 10 "
//Só consideraremos OPs com quantidade maior que 100
Case cTabela == 'T4Q'
cQueryCon += " AND T4Q_SALDO > 100 "
//Trocaremos o armazém da demanda pelo armazém do produto
Case cTabela == 'T4J'
cFields := StrTran(cFields, " T4J.T4J_LOCAL", " HWA.HWA_LOCPAD As T4J_LOCAL")
Otherwise
lAlterou := .F.
EndCase
//Só precisa retornar o array aRetorno se realmente a query foi alterada
If lAlterou
Conout("A carga da tabela " + cTabela + " utilizara a query especifica:")
Conout("SELECT " + cFields + " FROM " + cQueryCon + " ORDER BY " + cOrder)
//Tratamento BeginSQL
If lBeginSql2
cFields := "% " + cFields + "%"
EndIf
If lBeginSql3
cQueryCon := "% " + cQueryCon + "%"
EndIf
If lBeginSql4
cOrder := "% " + cOrder + "%"
EndIf
aAdd(aRetorno, cFields)
aAdd(aRetorno, cQueryCon)
aAdd(aRetorno, cOrder)
Else
Conout("A carga da tabela " + cTabela + " utilizara a query padrao do MRP.")
EndIf
Return aRetorno