NF-e 4.00 Devolução Consignação/Venda


#1

Boa tarde, Ricardo
Após a atualização para NF-e 4.00 no Estado de São Paulo, não consigo transmitir nota fiscal de entrada (Devolução de Consignação/Venda). Não informa erro, só o Estado do Documento que informa “Inválida”.
Na Filial Belém, que ainda é NF-e 3.10, estamos fazendo normalmente as notas de devoluções.
Pelo que andei lendo, as notas de devolução NF-e 4.0, alterou um parâmetro de pagamento para esse tipo de nota. Verifiquei no XML e esse parâmetro esta com 90 e valor da nota.
Não sei se tem a ver, pois não traz nenhum código de rejeição.

Você sabe se alguém passou por esse problema, ou tenho que fazer uma configuração adicional.

Grato, pela ajuda.

Raimundo


#2

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);
	}