FINALIDADE: Esta função verifica a possibilidade de cálculo do M.R.P. através de um query efectuado ao servidor utilizando o m.objrecebido.stamp, verificando depois a possibilidade da calcular o MRP.
A seguir faz a execução do cálculo do MRP através da função
U_runmrp enviado como parametro o m.objrecebido.stamp e, por fim envia um email ao gestor de produção com a ocorrência de erro ou não no cálculo através da função u_sendmailhtml.
DESCRIÇÃO: Recálculo de MRPs e envio de resultados por email
NOME FUNÇÃO: domrp
EXPRESSÃO XBASE:
*!* Função Criada com o objectivo de re-cálculo de email
*!*
*!*
*!* Verificação de MRP
LOCAL lcemail, lcsql, lcbodytext, lccursor, lccodmr, lcdescricao, lcorigem, ngamamrp
lccursor = randname()
lcemail = "gestao@maisproducao.pt"
lcbody = ""
lccodmr = ""
lcdescricao = ""
lngamamrp = 0
lcorigem = ""
*** Dados do M.R.P.
IF u_sqlexec("SELECT codmr, descricao, gamamrp FROM tabmr (NOLOCK) WHERE stamp = '" + m.objrecebido.stamp + "'", lccursor)
lccodmr = ALLTRIM(codmr)
lcdescricao = ALLTRIM(descricao)
lngamamrp = gamamrp
fechar_cursor(lccursor)
ENDIF
** Validação por MRP
DO CASE
CASE INLIST(lccodmr, "00000001", "00000002") OR lngamamrp = 1
** Apenas calcula para o M.R.P. 0001 ou 0002
** ou caso tenha origem num plano de produção
** Cálculo de M.R.P.
u_runmrp(m.objrecebido.stamp)
IF m.objrecebido.erroscount > 0
**A propriedade errosCount é maior que 0 caso existam erros
lcbodytext = lcbodytext + '<font size="4" face="Tahoma">'
lcbodytext = lcbodytext + "O M.R.P. " + lccodmr + " - " + lcdescricao + " obteve erros durante o seu cálculo."
lcbodytext = lcbodytext + '< /font><br/><br/>'
lcbodytext = lcbodytext + cursor2html(m.objrecebido.erroscursor,0, "Lista de erros devolvidos")
u_sendmailhtml(lcemail, "Ocorreram os seguintes erros no cálculo do M.R.P. " + lccodmr + " em " + DTOC(DATE()), lcbodytext,,, .T.)
ELSE
**Não existem erros no cálculo de M.R.P.
lcbodytext = ""
** Verificação da existência de propostas de fabrico
TEXT TO lcsql TEXTMERGE NOSHOW
SELECT cod_art, desc_art, Quant, Data_Entrega, Data_Inicio
FROM tabMrFb (NOLOCK)
WHERE st_tabMr = '<<m.objrecebido.stamp>>'
ENDTEXT
IF u_sqlexec(lcsql, lccursor)
lcbodytext = lcbodytext + '<font size="4" face="Tahoma">'
lcbodytext = lcbodytext + IIF(EOF(), "Foram geradas as seguintes", "Não foram geradas")
lcbodytext = lcbodytext + " propostas de fabrico para o M.R.P. " + lccodmr + " - " + lcdescricao + ""
lcbodytext = lcbodytext + '</font><br/><br/>'
lcbodytext = lcbodytext + cursor2html(lccursor, 2, "Propostas de Fabrico")
ENDIF
** Verificação da existência de propostas de encomenda
TEXT TO lcsql TEXTMERGE NOSHOW
SELECT tabMrCm.cod_art as Codigo,
tabMrCm.Quant as Quantidade,
tabMrCm.desc_art as Descricao,
tabmrcm.numenc AS Encomenda,
tabmrcm.data_entrega AS Entrega,
ISNULL(nome, '') AS nome
FROM tabmrcm (NOLOCK)
LEFT JOIN tabfo (NOLOCK) ON tabmrcm.st_tabfo = tabfo.stamp
WHERE tabmrcm.st_tabmr = '<<m.objrecebido.stamp>>'
ENDTEXT
IF u_sqlexec(lcsql, lccursor)
lcbodytext = lcbodytext + '<font size="4" face="Tahoma">'
lcbodytext = lcbodytext + IIF(EOF(), "Foram geradas as seguintes", "Não foram geradas")
lcbodytext = lcbodytext + " propostas de encomendas para o M.R.P. " + lccodmr + " - " + lcdescricao + ""
lcbodytext = lcbodytext + '</font><br/><br/>' + CHR(13) +CHR(10)
lcbodytext = lcbodytext + cursor2html(lccursor, 2, "Propostas de Encomendas")
ENDIF
** Enviar e-mail
DO CASE
CASE lngamamrp = 1
lcorigem = "Plano de Produção"
CASE lngamamrp = 2
lcorigem = "Ordens de fabrico"
CASE lngamamrp = 3
lcorigem = "Plano de Produção e Ordens de fabrico"
CASE lngamamrp = 4
lcorigem = "Ordens de fabrico calendarizadas"
ENDCASE
u_sendmailhtml(lcemail, "O M.R.P. " + lccodmr + " com origem em " + lcorigem + " foi calculado com sucesso em " + DTOC(DATE()) + "", lcbodytext,,, .T.)
ENDIF
OTHERWISE
** outros processamentos
ENDCASE