Multi-Moedas


#1

Boa Tarde,

Tenho a necessidade de trabalhar com dois tipos de moedas, fiz a configuração da moeda “BRL” adicionando a conversão para uma outra moeda X cadastrada e alterando a taxa multiplicadora e divisora dessa conversão. Ao concluir um Pagamento de Fatura (Cliente), o sistema não está marcando o checkbox “Pago” na Tela da Fatura quando estas são pagas utilizando a moeda X cadastrada.

Para Venda - moeda BRL
Para o Pagamento - moeda X

O sistema aloca as faturas como pagas, mas não valida a liquidação da mesma e nem as retira da tela de “Informações de Fatura”.
Já quando utilizo a moeda “BRL” no Pagamento, o sistema marca o checkbox “Pago” e valida a liquidação por completo.

Alguém já passou por isso? ou sabe como posso resolver?

Grato pela Atenção.


#2

Você tentou cadastrar a conversão da moeda X para BRL em vez de BRL para X?

Abraço.


#3

Caro, fiz agora um teste com a GardenWorld, e lá tem a moeda USD e nas taxas de conversão existe a moeda EUR. Eu realizei o pagamento com EUR e apareceu na fatura aonde a moeda é USD e o checkbox pago ficou marcado.

Dê uma olhada lá.

Abraço.


#4

Bom dia,

Paulo, qual a versão do Adempiere que você conseguiu testar??, eu utilizei a Garden da 360, mas não consegui.
Testei uma versão do Adempiere 361, consegui realizar o procedimento, mas não consegui identificar a alteração.

Att,


#5

Estou usando a versão 3.6.0 LTS LAURA.


#6

Boa Tarde,

Paulo Dantas, estava debuggando o código quando verifiquei, que ao realizar a alocação o sistema irá validar o pagamento marcando o CheckBox IsPaid na condição que o valor total da fatura ser igual ao valor do pagamento. Por isso que não está validando pois o valor é diferente devido as moedas e cálculos serem diferentes.

Segue o Método na MInvoice.

[code] /**
* Test Allocation (and set paid flag)
*
* @return true if updated
*/
public boolean testAllocation() {
boolean change = false;

	if (isProcessed()) {
		BigDecimal alloc = getAllocatedAmt(); // absolute
		if (alloc == null)
			alloc = Env.ZERO;
		BigDecimal total = getGrandTotal();
		if (!isSOTrx())
			total = total.negate();
		if (isCreditMemo())
			total = total.negate();
		boolean test = total.compareTo(alloc) == 0;
	
		if (change)
			setIsPaid(test);
		log.fine("Paid=" + test + " (" + alloc + "=" + total + ")");
	}

	return change;
} // testAllocation[/code]

Agora porque o sistema está fazendo isso, se existe a funcionalidade para trabalhar com multi-moedas?

Att,


#7

Você fez o pagamento como está na figura, pois o meu deu certo, como deu para perceber na imagem. o checkbox is paid ficou marcado e deu baixa no contas a receber.