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