Fórum
Ver pergunta

Método Actualiza diferenças entre motores   

155 visualizações
0
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.
Realmente possuem diferenças de implementação em termos de sucesso da gravação do documento?

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.

Faça login para poder traduzir
Integração
V10
Marcado como spam
Criado há 5 anos e 5 meses miguelganilhosantos
1 respostas
0
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.

Faça login para poder traduzir
Marcado como spam
Criado há 5 anos e 5 meses sergiosereno
sergiosereno Most Valuable Professional
    Comentários
    Obrigado Sérgio pela rápida e clara resposta.
    5 anos e 5 meses
    miguelganilhosantos