package br.com.centralit.citcorpore.ajaxForms;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLForm;
import br.com.centralit.citajax.html.HTMLTable;
import br.com.centralit.citcorpore.bean.CotacaoDTO;
import br.com.centralit.citcorpore.bean.CriterioAvaliacaoDTO;
import br.com.centralit.citcorpore.bean.EnderecoDTO;
import br.com.centralit.citcorpore.bean.FornecedorDTO;
import br.com.centralit.citcorpore.bean.InspecaoPedidoCompraDTO;
import br.com.centralit.citcorpore.bean.ItemPedidoCompraDTO;
import br.com.centralit.citcorpore.bean.PedidoCompraDTO;
import br.com.centralit.citcorpore.bean.RequisicaoProdutoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.CotacaoService;
import br.com.centralit.citcorpore.negocio.CriterioAvaliacaoService;
import br.com.centralit.citcorpore.negocio.EnderecoService;
import br.com.centralit.citcorpore.negocio.FornecedorService;
import br.com.centralit.citcorpore.negocio.InspecaoPedidoCompraService;
import br.com.centralit.citcorpore.negocio.ItemPedidoCompraService;
import br.com.centralit.citcorpore.negocio.PedidoCompraService;
import br.com.centralit.citcorpore.negocio.RequisicaoProdutoService;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoCotacao;
import br.com.centralit.citcorpore.util.Enumerados.SituacaoPedidoCompra;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.Html2Pdf;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilFormatacao;
import br.com.citframework.util.UtilHTML;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
public class EntregaPedido extends AjaxFormAction {
@SuppressWarnings("rawtypes")
public Class getBeanClass() {
return PedidoCompraDTO.class;
}
private void configuraBotoes(DocumentHTML document, HttpServletRequest request, PedidoCompraDTO pedidoCompraBean) throws Exception {
if (pedidoCompraBean.getIdCotacao() == null)
return;
document.executeScript("document.getElementById('btnGravar').style.display = 'none'");
document.executeScript("document.getElementById('btnEspelho').style.display = 'none'");
if (pedidoCompraBean.getSituacao() != null && pedidoCompraBean.getSituacao().equals(SituacaoPedidoCompra.Entregue.name())) {
document.executeScript("desabilitarTela()");
document.executeScript("document.getElementById('btnEspelho').style.display = 'block'");
return;
}
document.executeScript("habilitarTela()");
CotacaoDTO cotacaoDto = new CotacaoDTO();
cotacaoDto.setIdCotacao(pedidoCompraBean.getIdCotacao());
CotacaoService cotacaoService = (CotacaoService) ServiceLocator.getInstance().getService(CotacaoService.class, null);
cotacaoDto = (CotacaoDTO) cotacaoService.restore(cotacaoDto);
if (cotacaoDto == null)
return;
SituacaoCotacao situacao = SituacaoCotacao.valueOf(cotacaoDto.getSituacao());
if (situacao.equals(SituacaoCotacao.Pedido) || situacao.equals(SituacaoCotacao.Entrega)) {
Collection colItens = cotacaoService.findItensPendentesAprovacao(cotacaoDto);
if (colItens == null || colItens.size() == 0) {
document.executeScript("document.getElementById('btnGravar').style.display = 'block'");
}
}
}
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
try{
UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
CriterioAvaliacaoService criterioAvaliacaoService = (CriterioAvaliacaoService) ServiceLocator.getInstance().getService(CriterioAvaliacaoService.class, WebUtil.getUsuarioSistema(request));
Collection<CriterioAvaliacaoDTO> colCriterios = criterioAvaliacaoService.findByAplicavelAvaliacaoComprador();
request.setAttribute("colCriterios", colCriterios);
PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean();
request.setAttribute("idCotacao", ""+pedidoCompraDto.getIdCotacao());
exibePedidosCompra(document,request,pedidoCompraDto);
restore(document,request,response);
}finally{
document.executeScript("parent.escondeJanelaAguarde()");
}
}
private void exibePedidosCompra(DocumentHTML document, HttpServletRequest request, PedidoCompraDTO pedidoCompraDto) throws Exception {
HTMLTable tblPedidos = document.getTableById("tblPedidos");
tblPedidos.deleteAllRows();
PedidoCompraService pedidoCompraService = (PedidoCompraService) ServiceLocator.getInstance().getService(PedidoCompraService.class, null);
Collection<PedidoCompraDTO> colPedidos = pedidoCompraService.findByIdCotacao(pedidoCompraDto.getIdCotacao());
if (colPedidos != null && !colPedidos.isEmpty()) {
FornecedorService fornecedorService = (FornecedorService) ServiceLocator.getInstance().getService(FornecedorService.class, null);
for (PedidoCompraDTO pedidoDto : colPedidos) {
FornecedorDTO fornecedorDto = new FornecedorDTO();
fornecedorDto.setIdFornecedor(pedidoDto.getIdFornecedor());
fornecedorDto = (FornecedorDTO) fornecedorService.restore(fornecedorDto);
if (fornecedorDto != null)
pedidoDto.setNomeFornecedor(fornecedorDto.getNomeFantasia());
}
tblPedidos.addRowsByCollection(colPedidos,
new String[] {"","numeroPedido","nomeFornecedor","descrSituacao"},
null,
null,
new String[] {"gerarImgAlteracao"},
"exibirPedido",
null);
}
}
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean();
HTMLForm form = document.getForm("form");
form.clear();
if (pedidoCompraDto.getIdPedido() != null) {
Integer idCotacao = pedidoCompraDto.getIdCotacao();
PedidoCompraService pedidoCompraService = (PedidoCompraService) ServiceLocator.getInstance().getService(PedidoCompraService.class, null);
pedidoCompraDto = (PedidoCompraDTO) pedidoCompraService.restore(pedidoCompraDto);
pedidoCompraDto.setIdCotacao(idCotacao);
FornecedorService fornecedorService = (FornecedorService) ServiceLocator.getInstance().getService(FornecedorService.class, null);
FornecedorDTO fornecedorDto = new FornecedorDTO();
fornecedorDto.setIdFornecedor(pedidoCompraDto.getIdFornecedor());
fornecedorDto = (FornecedorDTO) fornecedorService.restore(fornecedorDto);
pedidoCompraDto.setNomeFornecedor(fornecedorDto.getNomeFantasia());
InspecaoPedidoCompraService inspecaoPedidoService = (InspecaoPedidoCompraService) ServiceLocator.getInstance().getService(InspecaoPedidoCompraService.class, null);
CriterioAvaliacaoService criterioAvaliacaoService = (CriterioAvaliacaoService) ServiceLocator.getInstance().getService(CriterioAvaliacaoService.class, null);
Collection<InspecaoPedidoCompraDTO> colInspecao = inspecaoPedidoService.findByIdPedido(pedidoCompraDto.getIdPedido());
document.executeScript("GRID_CRITERIOS.deleteAllRows();");
if (colInspecao == null) {
Collection<CriterioAvaliacaoDTO> colCriterios = criterioAvaliacaoService.findByAplicavelAvaliacaoComprador();
if (colCriterios != null) {
colInspecao = new ArrayList();
for (CriterioAvaliacaoDTO criterioDto : colCriterios) {
InspecaoPedidoCompraDTO inspecaoDto = new InspecaoPedidoCompraDTO();
inspecaoDto.setIdCriterio(criterioDto.getIdCriterio());
inspecaoDto.setTipoAvaliacao(criterioDto.getTipoAvaliacao());
colInspecao.add(inspecaoDto);
}
}
}else{
for (InspecaoPedidoCompraDTO inspecaoDto : colInspecao) {
CriterioAvaliacaoDTO criterioDto = new CriterioAvaliacaoDTO();
criterioDto.setIdCriterio(inspecaoDto.getIdCriterio());
criterioDto = (CriterioAvaliacaoDTO) criterioAvaliacaoService.restore(criterioDto);
if (criterioDto == null)
continue;
inspecaoDto.setTipoAvaliacao(criterioDto.getTipoAvaliacao());
}
}
if (colInspecao != null) {
int i = 0;
for (InspecaoPedidoCompraDTO inspecaoDto : colInspecao) {
i++;
document.executeScript("GRID_CRITERIOS.addRow()");
inspecaoDto.setSequencia(i);
document.executeScript("seqCriterio = NumberUtil.zerosAEsquerda("+i+",5)");
document.executeScript("exibeCriterio('" + br.com.citframework.util.WebUtil.serializeObject(inspecaoDto, WebUtil.getLanguage(request)) + "')");
}
}
}
configuraBotoes(document, request, pedidoCompraDto);
form.setValues(pedidoCompraDto);
}
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean();
if (pedidoCompraDto.getIdPedido() == null)
return;
pedidoCompraDto.setUsuarioDto(usuario);
Collection<InspecaoPedidoCompraDTO> colInspecao = br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(InspecaoPedidoCompraDTO.class, "colCriterios_Serialize", request);
pedidoCompraDto.setColInspecao(colInspecao);
pedidoCompraDto.setUsuarioDto(usuario);
PedidoCompraService pedidoCompraService = (PedidoCompraService) ServiceLocator.getInstance().getService(PedidoCompraService.class, null);
pedidoCompraService.atualizaEntrega(pedidoCompraDto);
exibePedidosCompra(document,request,pedidoCompraDto);
document.alert(UtilI18N.internacionaliza(request, "pedidoCompra.mensagemAtualizacao"));
document.executeScript("limpar();");
document.executeScript("parent.atualiza();");
}
public void emiteEspelhoCompra(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
try{
UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
PedidoCompraDTO pedidoCompraDto = (PedidoCompraDTO) document.getBean();
if (pedidoCompraDto.getIdPedido() == null)
return;
PedidoCompraService pedidoCompraService = (PedidoCompraService) ServiceLocator.getInstance().getService(PedidoCompraService.class, null);
pedidoCompraDto = (PedidoCompraDTO) pedidoCompraService.restore(pedidoCompraDto);
FornecedorService fornecedorService = (FornecedorService) ServiceLocator.getInstance().getService(FornecedorService.class, null);
FornecedorDTO fornecedorDto = new FornecedorDTO();
fornecedorDto.setIdFornecedor(pedidoCompraDto.getIdFornecedor());
fornecedorDto = (FornecedorDTO) fornecedorService.restore(fornecedorDto);
ItemPedidoCompraService itemPedidoCompraService = (ItemPedidoCompraService) ServiceLocator.getInstance().getService(ItemPedidoCompraService.class, WebUtil.getUsuarioSistema(request));
Collection<ItemPedidoCompraDTO> itensPedido = itemPedidoCompraService.findByIdPedidoOrderByIdSolicitacao(pedidoCompraDto.getIdPedido());
if (itensPedido == null)
return;
EnderecoService enderecoService = (EnderecoService) ServiceLocator.getInstance().getService(EnderecoService.class, WebUtil.getUsuarioSistema(request));
EnderecoDTO enderecoDto = new EnderecoDTO();
enderecoDto.setIdEndereco(pedidoCompraDto.getIdEnderecoEntrega());
enderecoDto = enderecoService.recuperaEnderecoCompleto(enderecoDto);
RequisicaoProdutoService requisicaoProdutoService = (RequisicaoProdutoService) ServiceLocator.getInstance().getService(RequisicaoProdutoService.class, WebUtil.getUsuarioSistema(request));
String style =
"<style>"
+"@page {size: 4.18in 6.88in; margin: 30px 20px 15px 35px; size:landscape;}"
+" .table {"
+" border:1px solid #ddd;"
+" font-size:12px;"
+" }"
+" .table th {"
+" border:1px solid #ddd;"
+" padding:4px 10px;"
+" background:#eee;"
+" }"
+" .table td {"
+" border:1px solid #ddd;"
+" padding:4px 10px;"
+" border-top:none;"
+" }"
+"</style>";
String str = "<div style='text-align:center;font-size:18px'><b>ESPELHO DA AUTORIZA��O DE COMPRA</b></div><br>";
str += "<table class='table' width='100%'>";
str += "<tr>";
str += "<th class='table th' width='15%'>N�mero pedido:</th>";
str += "<td class='table th' width='20%'>"+pedidoCompraDto.getNumeroPedido()+"</td>";
str += "<th class='table th' width='15%'>N�mero cota��o:</th>";
str += "<td class='table th' width='10%'>"+pedidoCompraDto.getIdCotacao()+"</td>";
str += "<th class='table th' width='15%'>Data entrega:</th>";
str += "<td class='table th' width='25%'>"+UtilDatas.dateToSTR(pedidoCompraDto.getDataEntrega())+"</td>";
str += "</tr>";
str += "<tr>";
str += "<th class='table th'>N�mero nota fiscal:</th>";
str += "<td>"+UtilStrings.nullToVazio(pedidoCompraDto.getNumeroNF())+"</td>";
str += "<th class='table th'>Valor frete:</th>";
if (pedidoCompraDto.getValorFrete() != null)
str += "<td colspan='3'>"+UtilFormatacao.formatDouble(pedidoCompraDto.getValorFrete(), 2)+"</td>";
else
str += "<td colspan='3'> </td>";
str += "</tr>";
str += "<tr>";
str += "<th class='table th'>Fornecedor:</th><td colspan='5'>";
if (fornecedorDto.getTipoPessoa().equalsIgnoreCase("J"))
str += UtilFormatacao.formataCnpj(fornecedorDto.getCnpj());
else
str += UtilFormatacao.formataCpf(fornecedorDto.getCnpj());
str += " - "+fornecedorDto.getNomeFantasia()+"</td>";
str += "</tr>";
str += "<tr>";
str += "<th class='table th'>Endere�o entrega:</th><td colspan='5'>";
str += enderecoDto.getEnderecoStr()+"</td>";
str += "</tr>";
str += "</table>";
Double qtdeTotal = 0.0;
Double valorTotal = 0.0;
RequisicaoProdutoDTO requisicaoProdutoDto = null;
Integer idSolicitacaoAnterior = 0;
for (ItemPedidoCompraDTO itemPedidoDto : itensPedido) {
if (idSolicitacaoAnterior.intValue() != itemPedidoDto.getIdSolicitacaoServico().intValue()) {
requisicaoProdutoDto = new RequisicaoProdutoDTO();
requisicaoProdutoDto.setIdSolicitacaoServico(itemPedidoDto.getIdSolicitacaoServico());
requisicaoProdutoDto = (RequisicaoProdutoDTO) requisicaoProdutoService.restore(requisicaoProdutoDto);
str += "<br><table class='table' width='100%'>";
str += "<tr>";
str += "<th class='table th'>Requisi��o</th>";
str += "<th class='table th'>Solicitante</th>";
str += "<th class='table th'>Centro de Resultado</th>";
str += "<th class='table th'>Projeto</th>";
str += "</tr>";
str += "<tr>";
str += "<td>"+requisicaoProdutoDto.getIdSolicitacaoServico()+"</td>";
str += "<td>"+requisicaoProdutoDto.getSolicitante()+"</td>";
str += "<td>"+requisicaoProdutoDto.getCentroCusto()+"</td>";
str += "<td>"+requisicaoProdutoDto.getProjeto()+"</td>";
str += "</tr>";
str += "</table>";
str += "<table class='table' width='100%'>";
str += "<tr>";
str += "<th class='table th'>Descri��o do item</th>";
str += "<th class='table th' width='20%'>Comprador</th>";
str += "<th class='table th' width='20%'>Autorizador</th>";
str += "<th class='table th' width='20%'>Aprovador</th>";
str += "<th class='table th' width='3%'>Qtde</th>";
str += "<th class='table th' width='9%'>Vlr total (R$)</th>";
str += "</tr>";
idSolicitacaoAnterior = itemPedidoDto.getIdSolicitacaoServico();
}
str += "<tr>";
str += "<td>"+itemPedidoDto.getDescricaoItem()+"</td>";
str += "<td>"+itemPedidoDto.getAutoridadeValidacao()+"</td>";
str += "<td>"+itemPedidoDto.getAutoridadeAprovacao()+"</td>";
str += "<td>"+itemPedidoDto.getAutoridadeCotacao()+"</td>";
str += "<td style='text-align:right'>"+UtilFormatacao.formatDouble(itemPedidoDto.getQuantidade(),2)+"</td>";
str += "<td style='text-align:right'>"+UtilFormatacao.formatDouble(itemPedidoDto.getValorLiquido(),2)+"</td>";
str += "</tr>";
qtdeTotal += itemPedidoDto.getQuantidade();
valorTotal += itemPedidoDto.getValorLiquido();
}
str += "<tr>";
str += "<th colspan='4' style='text-align:right'> </th>";
str += "<th style='text-align:right'>"+UtilFormatacao.formatDouble(qtdeTotal,2)+"</th>";
str += "<th style='text-align:right'>"+UtilFormatacao.formatDouble(valorTotal,2)+"</th>";
str += "</tr>";
str += "</table>";
String caminho = CITCorporeUtil.CAMINHO_REAL_APP + "tempFiles";
String caminhoRelativo = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles";
try {
File arquivo = new File(caminho);
if (!arquivo.exists()) {
arquivo.mkdirs();
}
java.util.Date dt = new java.util.Date();
String nomeArquivo = "/EspelhoAutorizacaoCompra_" + dt.getTime() + ".pdf";
caminho += nomeArquivo;
caminhoRelativo += nomeArquivo;
arquivo = new File(caminho);
if (arquivo.exists()) {
arquivo.delete();
}
OutputStream os = new FileOutputStream(arquivo);
str = UtilHTML.encodeHTMLComEspacos(str);
Html2Pdf.convert(str, os, style);
os.close();
document.executeScript("window.open('" + caminhoRelativo + "')");
} catch (Exception e) {
e.printStackTrace();
// handle exception
}
}finally{
document.executeScript("JANELA_AGUARDE_MENU.hide();");
}
}
}