Boa tarde,
Depois de apanhar um pouco, acho que achei o erro.
Uma das modificações da NF-e 4.00, foi configurar Tipo de Pagamento 90, quando não ha pagamento (caso das devoluções).
Acontece que o Adempiere, está colocando o tipo 90, mas esta pondo também o valor da nota.
90
64.70
Testei esse cenário, no emissor da SEBRAE e não deixa transmitir. Informa que o campo pagamento tem que ser zero.
Localizei o código NFeXMLGenerator, mas não sei fazer a alteração para que não apareça valor, quanto o tipo de pagamento for 90.
Alguém pode me ajudar com esse código.
Muito obrigado,
Raimundo
// amc - Validar para NFCE só ser emitida caso a fatura esteja vinculada a um pagamento.
// Então preencher aqui com os dados do pagamento.
// YA. Formas de Pagamento
Pag pag = infNFe.addNewPag();
DetPag dPag = pag.addNewDetPag();
dPag.setVPag(normalize (nf.getGrandTotal().abs()));
// Para as notas com finalidade de Ajuste ou Devolução
if (TextUtil.match(ide.getFinNFe(), FIN_NFE_AJUSTE, FIN_NFE_DEVOLUCAO)
// NFs sem valores a receber (simples remessas, transferêncisa, etc)
|| !nf.islbr_HasOpenItems())
dPag.setTPag(DET_TP_PAG_SEM_PAGAM);
else
{
// Regra de Pagamento
String paymentRule = nf.getlbr_PaymentRule();
//
if (paymentRule != null)
{
/**
* Regra de pagamento compatível com a NF,
* Nos casos onde a Regra for outra (ex. depósito) preencher como Outros
*/
if (TextUtil.match (paymentRule, MLBRNotaFiscal.LBR_PAYMENTRULE_Cash,
MLBRNotaFiscal.LBR_PAYMENTRULE_Check, MLBRNotaFiscal.LBR_PAYMENTRULE_CreditCard,
MLBRNotaFiscal.LBR_PAYMENTRULE_DebitCard, MLBRNotaFiscal.LBR_PAYMENTRULE_StoreCredit,
MLBRNotaFiscal.LBR_PAYMENTRULE_FoodVoucher, MLBRNotaFiscal.LBR_PAYMENTRULE_MealVoucher,
MLBRNotaFiscal.LBR_PAYMENTRULE_GiftCard, MLBRNotaFiscal.LBR_PAYMENTRULE_FuelVoucher,
MLBRNotaFiscal.LBR_PAYMENTRULE_TradeBill, MLBRNotaFiscal.LBR_PAYMENTRULE_Bill,
MLBRNotaFiscal.LBR_PAYMENTRULE_NoPaymentRequired, MLBRNotaFiscal.LBR_PAYMENTRULE_Other))
{
dPag.setTPag(TPag.Enum.forString(paymentRule));
}
// Outra Regra
else
dPag.setTPag(DET_TP_PAG_OUTROS);
}
// Regra não preenchida, padrão outros
else
dPag.setTPag(DET_TP_PAG_OUTROS);
}