package br.com.ec.controller.managedbean;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.model.StreamedContent;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.NotaFiscal;
import br.com.ec.domain.model.Venda;
import br.com.ec.domain.model.tipos.nfe.TipoModeloNotaFiscal;
import br.com.ec.domain.model.tipos.nfe.TipoNotaFiscal;
import br.com.ec.domain.service.notafiscal.NotaFiscalService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandRelatorioStreamedContent;
@Named
@ManagedBean
@RequestScoped
public class EmissorCupomBean
implements Serializable {
// private static final String SEM_FOTO_JPG = "sem_foto.jpg";
private static final long serialVersionUID = 1L
;
private Boolean emitirCupom =
false;
private Boolean permitirEmissaoNotaFiscal =
false;
private Boolean atualizarPagina =
false;
private Venda vendaSelecionada
;
private StreamedContent cupomGerado
;
private NotaFiscalService notaFiscalService
;
@Inject
public EmissorCupomBean
(NotaFiscalService notaFiscalService
) {
this.
notaFiscalService = notaFiscalService
;
}
public Boolean getEmitirCupom
() {
return emitirCupom
;
}
public void setEmitirCupom
(Boolean emitirCupom
) {
this.
emitirCupom = emitirCupom
;
}
public Boolean getPermitirEmissaoNotaFiscal
() {
return permitirEmissaoNotaFiscal
;
}
public void setPermitirEmissaoNotaFiscal
(Boolean permitirEmissaoNotaFiscal
) {
this.
permitirEmissaoNotaFiscal = permitirEmissaoNotaFiscal
;
}
public Boolean getAtualizarPagina
() {
return atualizarPagina
;
}
public void setAtualizarPagina
(Boolean atualizarPagina
) {
this.
atualizarPagina = atualizarPagina
;
}
public Venda getVendaSelecionada
() {
return vendaSelecionada
;
}
public void setVendaSelecionada
(Venda vendaSelecionada
) {
this.
vendaSelecionada = vendaSelecionada
;
}
public Long getSequencialVendaSelecionada
() {
return VerificadorUtil.
naoEstaNulo(getVendaSelecionada
())? getVendaSelecionada
().
getSequencial() :
null;
}
public StreamedContent getCupomGerado
() {
if (getEmitirCupom
()) {
setCupomGerado
(gerarCupom
(getVendaSelecionada
()));
return cupomGerado
;
}
return cupomGerado
;
}
public void setCupomGerado
(StreamedContent cupomGerado
) {
this.
cupomGerado = cupomGerado
;
}
/*************************************/
public StreamedContent gerarCupom
(final Venda venda
) {
setEmitirCupom
(false);
return notaFiscalService.
gerarCupom(venda
);
}
public void gerarNfe
(final Venda venda
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
@
Override
public void execute
() {
venda.
setEmitirNotaFiscal(true);
setCupomGerado
(gerarCupom
(venda
));
}
});
}
public void prepararGerarCupom
(Venda venda
) {
setEmitirCupom
(true);
venda.
verificarSePermiteEmissaoNotaFiscal();
verificarSeNotaFiscalFoiEmitida
(venda
);
setVendaSelecionada
(venda
);
}
private void verificarSeNotaFiscalFoiEmitida
(Venda venda
) {
if (notaFiscalService.
verificarSeNotaFiscalJaVinculadaComVenda(venda, TipoModeloNotaFiscal.
MODELO_NFCE_65.
getValor(), TipoNotaFiscal.
NFCE_SAIDA.
getValor())) {
venda.
setEmitirNotaFiscal(true);
}
}
public StreamedContent downloadNotaFiscal
(final NotaFiscal notaFiscal
) {
return new VerificadorLancamentoException
().
verificarLancamentoException(new CommandRelatorioStreamedContent
() {
@
Override
public StreamedContent execute
() {
return notaFiscalService.
retornarCupomEmitidoEmPDF(notaFiscal
);
}
});
}
}