| ♥ 0 | Boa tarde, Nos 5 motores motores documentais referidos em baixo, existe o método “Actualiza” com dois casos de assinaturas (para além de todos os outros overloads, obviamente) que utilizo de forma diferente devido à diferença de nome do segundo argumento. IInvBSTransferencias > void Actualiza(InvBEDocumentoTransf Documento, ref string strErros); IInvBSComposicoes >void Actualiza(InvBEDocumentoComposicao DocumentoComposicao, ref string strErros);
ICmpBSCompras >void Actualiza(CmpBEDocumentoCompra clsDocCompra, ref string strAvisos); IVndBSVendas> void Actualiza(VndBEDocumentoVenda clsDocumentoVenda, ref string strAvisos); IIntBSInternos > void Actualiza(IntBEDocumentoInterno objBE, ref string strAvisos);
Código genérico demonstrativo da diferença de implementação que essa diferença de nome me induz.
Geralmente nos dois primeiros casos, depois da execução sem ocorrência de excepção, verifico ainda o comprimento da “strErro” e, se maior que zero, considero que existe erro (e que não ocorreu gravação): string strErro = string.Empty;
try
{
bool resposta = MotorBSDocs.ValidaActualizacao(DocBE, ref strErro);
if (resposta)
{
MotorBSDocs.Actualiza(DocBE, ref strErro);
if (strErro.Length > 0)
{
throw new Exception("ERRO ao gravar documento no PRIMAVERA! Erro:" + strErro);
}
else
{
return "Documento gravado com SUCESSO. Id=" + DocBE.ID;
}
}
else
{
throw new Exception("ERRO ao validar documento no PRIMAVERA! Erro:" + strErro);
}
}
catch (Exception ex)
{
return ex.Message;
}
Já nos três últimos casos, se não ocorrer excepção admito sucesso/gravação (apesar do aviso): string strErro= string.Empty;
string strAvisos= string.Empty;
try
{
bool resposta = MotorBSDocs.ValidaActualizacao(DocBE, ref strErro);
if (resposta)
{
MotorBSDocs.Actualiza(DocBE, ref strAvisos);
if (strAvisos.Length > 0)
{
return "SUCESSO: Documento gravado mas com avisos. Id=" + DocBE.ID + " Avisos:" + strAvisos;
}
else
{
return "SUCESSO: Documento gravado. Id=" + DocBE.ID;
}
}
else
{
throw new Exception("ERRO ao validar documento no PRIMAVERA! Erro:" + strErro);
}
}
catch (Exception ex)
{
return ex.Message;
}Alguém me pode sff esclarecer se esta diferenciação é correcta? Ou se nos dois primeiros casos a “strErro” deveria também de ser interpretada apenas como avisos? Obrigado. Marcado como spam |
| Resposta privada Bom dia Esse parametro é suposto devolver sempre avisos associados à gravação dos documentos em qualquer um dos cenários, esse será sempre o seu primeiro comportamento e é assim que deverá usar no 5 cenários. Erros serão sempre tratados como excepções. Marcado como spam Comentários Obrigado Sérgio pela rápida e clara resposta. |