package gcom.gui.faturamento;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.FiltroCliente;
import gcom.fachada.Fachada;
import gcom.faturamento.conta.Fatura;
import gcom.faturamento.conta.FaturaItem;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* AdicionarFaturaClienteResponsavelContaPopupAction
*
* @author Fl�vio Leonardo
* @created 25/04/2006
*/
public class AtualizarFaturaClienteResponsavelAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
Fachada fachada = Fachada.getInstancia();
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
// Inst�ncia do formul�rio que est� sendo utilizado
FiltrarFaturaClienteResponsavelActionForm form = (FiltrarFaturaClienteResponsavelActionForm) actionForm;
Fatura fatura = (Fatura)sessao.getAttribute("fatura");
Collection<FaturaItem> colecaoFaturasItem = (Collection)sessao.getAttribute("colecaoFaturaItem");
if(colecaoFaturasItem.isEmpty()){
throw new ActionServletException("atencao.fatura.cliente.responsavel.conter.uma");
}
Collection<FaturaItem> colecaoFaturaItemRemover = (Collection)sessao.getAttribute("colecaoFaturaItemRemover");
fachada.removerFaturaItemFaturaItemHistorico(colecaoFaturaItemRemover, usuario);
int qtdInseridos = fachada.inserirFaturaItemFaturaItemHistorico(colecaoFaturasItem, usuario);
BigDecimal valorTotal = fachada.somarValorFaturasItemFatura(fatura);
Date dataVencimento = fachada.vencimentoFaturasItemFatura(fatura);
fatura.setVencimento(dataVencimento);
fatura.setDebito(valorTotal);
fachada.alterarVencimentoFaturaFaturaItem(fatura);
Cliente cliente = null;
if(sessao.getAttribute("cliente") != null){
cliente = (Cliente) sessao.getAttribute("cliente");
}else{
FiltroCliente filtroCliente = new FiltroCliente();
filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.ID, form.getClienteId()));
Collection colecaoCliente = fachada.pesquisar(filtroCliente, Cliente.class.getName());
cliente = (Cliente)Util.retonarObjetoDeColecao(colecaoCliente);
}
String qtdRemovidos = "0";
if(colecaoFaturaItemRemover != null){
qtdRemovidos = colecaoFaturaItemRemover.size() + "";
}
montarPaginaSucesso(httpServletRequest, "Foram inseridas "
+ qtdInseridos + " contas e removidas "
+ qtdRemovidos
+ " contas da fatura do cliente "
+ cliente.getNome()
+ " da refer�ncia "
+ form.getMesAno(),
"Realizar outra Manuten��o de Fatura Cliente Respons�vel",
"exibirFiltrarFaturaClienteResponsavelAction.do?menu=sim");
return retorno;
}
}