/** * Procesa la petici\u00F3n HTTP (request) especificada y genera su correspondiente respuesta HTTP * (response) (o lo redirige a otro componente web que podr\u00EDa crear) Devuelve una instancia * <code>ActionForward</code> que describe d\u00F3nde y c\u00F3mo se redirige el control. * * @param mapping El mapeo utilizado para seleccionar esta instancia * @param form El formulario asociado a esta acci\u00F3n de donde se toman y establecen valores de * campos * @param request La petición que estamos procesando * @param response La respuesta HTTP que se genera * @return ActionForward Acción o p´gina jsp donde se redirige el control * @throws Exception */ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // posibles mensajes a usar ActionMessages errors = new ActionMessages(); String forward = "principal"; HttpSession session = request.getSession(); // ModificarFechasEntregaForm formulario = (ModificarFechasEntregaForm)form; String peticion = request.getParameter(Globals.AYUDA); if (request.getParameter("indice") != null) { // se forma la consulta para obtener las entregas VistaPedidoDTO vistaPedidoDTO = (VistaPedidoDTO) ((List) session.getAttribute(SessionManagerSISPE.COLECCION_PEDIDOS_GENERAL)) .get(Integer.parseInt(request.getParameter("indice"))); EstadoDetallePedidoDTO estadoDetallePedidoFiltro = new EstadoDetallePedidoDTO(); estadoDetallePedidoFiltro .getId() .setCodigoCompania( SessionManagerSISPE.getCurrentCompanys(request).getId().getCodigoCompania()); estadoDetallePedidoFiltro.getId().setCodigoPedido(vistaPedidoDTO.getId().getCodigoPedido()); estadoDetallePedidoFiltro.getId().setCodigoEstado(vistaPedidoDTO.getId().getCodigoEstado()); estadoDetallePedidoFiltro .getId() .setSecuencialEstadoPedido(vistaPedidoDTO.getId().getSecuencialEstadoPedido()); ArticuloDTO articuloDTO = new ArticuloDTO(); // articuloDTO.setArticuloComercialDTO(new ArticuloComercialDTO()); articuloDTO.setArticuloUnidadManejoCol(new ArrayList<ArticuloUnidadManejoDTO>()); articuloDTO.getArticuloUnidadManejoCol().add(new ArticuloUnidadManejoDTO()); DetallePedidoDTO detallePedidoDTO = new DetallePedidoDTO(); detallePedidoDTO.setArticuloDTO(articuloDTO); estadoDetallePedidoFiltro.setDetallePedidoDTO( detallePedidoDTO); // obtiene los datos del art\u00EDculo EntregaDetallePedidoDTO entregaDetallePedidoDTO = new EntregaDetallePedidoDTO(); entregaDetallePedidoDTO.setEntregaPedidoDTO(new EntregaPedidoDTO()); estadoDetallePedidoFiltro.setEntregaDetallePedidoCol( new ArrayList<EntregaDetallePedidoDTO>()); // obtiene las entregas de cada detalle estadoDetallePedidoFiltro.getEntregaDetallePedidoCol().add(entregaDetallePedidoDTO); ContactoUtil.cargarDatosPersonaEmpresa(request, vistaPedidoDTO); session.setAttribute( COL_ESTADO_DETALLE_PEDIDO, SessionManagerSISPE.getServicioClienteServicio() .transObtenerEstadoDetallePedido(estadoDetallePedidoFiltro)); session.setAttribute(VISTA_PEDIDO, vistaPedidoDTO); // ----------PRUEBA Collection<EstadoDetallePedidoDTO> detalles = (Collection<EstadoDetallePedidoDTO>) session.getAttribute(COL_ESTADO_DETALLE_PEDIDO); // c\u00E1lculo de los bultos for (EstadoDetallePedidoDTO estadoDetallePedidoDTO : detalles) { for (EntregaDetallePedidoDTO entDetPedDTO : estadoDetallePedidoDTO.getEntregaDetallePedidoCol()) { if (entDetPedDTO.getCantidadDespacho() > 0) { entDetPedDTO.setNpCantidadBultos( UtilesSISPE.calcularCantidadBultos( entDetPedDTO.getCantidadDespacho(), estadoDetallePedidoDTO.getDetallePedidoDTO().getArticuloDTO())); } } } // --------------- // para obtener la entregas del pedido - cjui\u00F1a List<VistaDetallePedidoDTO> detalleVistaPedido = new ArrayList<VistaDetallePedidoDTO>(); VistaDetallePedidoDTO consultaVistaDetallePedidoDTO = new VistaDetallePedidoDTO(); consultaVistaDetallePedidoDTO .getId() .setCodigoCompania(vistaPedidoDTO.getId().getCodigoCompania()); consultaVistaDetallePedidoDTO .getId() .setCodigoAreaTrabajo(vistaPedidoDTO.getId().getCodigoAreaTrabajo()); consultaVistaDetallePedidoDTO .getId() .setCodigoPedido(vistaPedidoDTO.getId().getCodigoPedido()); consultaVistaDetallePedidoDTO .getId() .setCodigoEstado(vistaPedidoDTO.getId().getCodigoEstado()); consultaVistaDetallePedidoDTO .getId() .setSecuencialEstadoPedido(vistaPedidoDTO.getId().getSecuencialEstadoPedido()); consultaVistaDetallePedidoDTO.setArticuloDTO(new ArticuloDTO()); consultaVistaDetallePedidoDTO.setEntregaDetallePedidoCol( new ArrayList<EntregaDetallePedidoDTO>()); detalleVistaPedido = (List<VistaDetallePedidoDTO>) SessionManagerSISPE.getServicioClienteServicio() .transObtenerVistaDetallePedido(consultaVistaDetallePedidoDTO); session.setAttribute(DETALLELPEDIDOAUX, detalleVistaPedido); obtenerEntregas(session); LogSISPE.getLog().info("se consult\u00F3 las entregas"); } else if (peticion != null && peticion.equals("guardar")) { LogSISPE.getLog().info("ingresa a guardar"); try { List<EstadoDetallePedidoDTO> detalle = (List<EstadoDetallePedidoDTO>) request.getSession().getAttribute(COL_ESTADO_DETALLE_PEDIDO); for (EstadoDetallePedidoDTO detalleDTO : detalle) { detalleDTO.setUserId(SessionManagerSISPE.getDefault().getLoggedUser(request).getUserId()); DetallePedidoDTO detallePedidoDTO = detalleDTO.getDetallePedidoDTO(); LogSISPE.getLog() .info( "Articulo y sus entregas--{}", detallePedidoDTO.getArticuloDTO().getDescripcionArticulo()); for (EntregaDetallePedidoDTO entDetPedDTO : detalleDTO.getEntregaDetallePedidoCol()) { LogSISPE.getLog() .info( "Fecha Entrega cliente--{}", entDetPedDTO.getEntregaPedidoDTO().getFechaEntregaCliente()); LogSISPE.getLog() .info( "Fecha Despacho Bodega--{}", entDetPedDTO.getEntregaPedidoDTO().getFechaDespachoBodega()); LogSISPE.getLog() .info("Direccion--{}", entDetPedDTO.getEntregaPedidoDTO().getDireccionEntrega()); if (entDetPedDTO.getEntregaPedidoDTO().getNpFechaEntregaInicial() != null && entDetPedDTO.getEntregaPedidoDTO().getNpFechaDespachoInicial() != null) { LogSISPE.getLog() .info( "Fecha Entrega clienteO--{}", entDetPedDTO.getEntregaPedidoDTO().getNpFechaEntregaInicial()); LogSISPE.getLog() .info( "Fecha Despacho BodegaO--{}", entDetPedDTO.getEntregaPedidoDTO().getNpFechaDespachoInicial()); } } } SessionManagerSISPE.getServicioClienteServicio() .transModificarFechasDespachoYEntrega( (Collection<EstadoDetallePedidoDTO>) session.getAttribute(COL_ESTADO_DETALLE_PEDIDO), SessionManagerSISPE.getDefault().getLoggedUser(request).getUserId()); // mensaje de exito para el registro ControlMensajes controlMensajes = new ControlMensajes(); controlMensajes.setMessages(session, "message.exito.fechasEntregaModificadas"); session.setAttribute(ListadoPedidosAction.VOLVER_A_BUSQUEDA, "ok"); session.removeAttribute(SessionManagerSISPE.COLECCION_PEDIDOS_GENERAL); forward = "busqueda"; } catch (SISPEException e) { errors.add( "registro", new ActionMessage( "errors.llamadaServicio.registrarDatos", "la modificaci\u00F3n de fechas")); errors.add("dinamico", new ActionMessage("errors.SISPEException", e.getMessage())); } } else if (peticion != null && peticion.equals("cancelar")) { LogSISPE.getLog().info("ingresa a cancelar"); session.setAttribute(ListadoPedidosAction.VOLVER_A_BUSQUEDA, "ok"); forward = "busqueda"; } saveErrors(request, errors); return mapping.findForward(forward); }
/** * Obtiene la configuraci\u00F3n de entregas del pedido * * @param session */ public void obtenerEntregas(HttpSession session) { // cjui\u00F1a Collection<EntregaDetallePedidoDTO> entregasResp = new ArrayList<EntregaDetallePedidoDTO>(); Collection<DetallePedidoDTO> detPedResp = new ArrayList<DetallePedidoDTO>(); Collection<VistaDetallePedidoDTO> detallePedidoDTOCol = (Collection<VistaDetallePedidoDTO>) session.getAttribute(DETALLELPEDIDOAUX); if (!CollectionUtils.isEmpty(detallePedidoDTOCol)) { for (VistaDetallePedidoDTO detPed : detallePedidoDTOCol) { if (!CollectionUtils.isEmpty(detPed.getEntregaDetallePedidoCol())) { Collection<EntregaDetallePedidoDTO> entregas = (Collection<EntregaDetallePedidoDTO>) detPed.getEntregaDetallePedidoCol(); if (CollectionUtils.isEmpty(entregasResp)) { entregasResp = (Collection<EntregaDetallePedidoDTO>) SerializationUtils.clone((Serializable) entregas); for (EntregaDetallePedidoDTO entPed : entregasResp) { detPedResp = new ArrayList<DetallePedidoDTO>(); entPed.getEntregaPedidoDTO().setNpDetallePedido(new ArrayList<DetallePedidoDTO>()); DetallePedidoDTO dp = new DetallePedidoDTO(); dp.setArticuloDTO(new ArticuloDTO()); dp.getArticuloDTO() .setId( (ArticuloID) SerializationUtils.clone((Serializable) detPed.getArticuloDTO().getId())); dp.getArticuloDTO() .setDescripcionArticulo(detPed.getArticuloDTO().getDescripcionArticulo()); dp.getArticuloDTO().setCodigoBarrasActivo(new ArticuloBitacoraCodigoBarrasDTO()); dp.getArticuloDTO() .getCodigoBarrasActivo() .setId( (ArticuloBitacoraCodigoBarrasID) SerializationUtils.clone( (Serializable) detPed.getArticuloDTO().getCodigoBarrasActivo().getId())); dp.setEstadoDetallePedidoDTO(new EstadoDetallePedidoDTO()); dp.getEstadoDetallePedidoDTO().setCantidadEstado(entPed.getCantidadEntrega()); dp.setNpContadorDespacho(entPed.getCantidadDespacho()); dp.setNpContadorEntrega(entPed.getCantidadEntrega()); detPedResp.add(dp); entPed.getEntregaPedidoDTO().setNpDetallePedido(detPedResp); } } else { for (EntregaDetallePedidoDTO entDetPed : entregas) { Boolean existeEntrega = Boolean.FALSE; DetallePedidoDTO dp = new DetallePedidoDTO(); dp.setArticuloDTO(new ArticuloDTO()); dp.getArticuloDTO() .setId( (ArticuloID) SerializationUtils.clone((Serializable) detPed.getArticuloDTO().getId())); dp.getArticuloDTO() .setDescripcionArticulo(detPed.getArticuloDTO().getDescripcionArticulo()); dp.getArticuloDTO().setCodigoBarrasActivo(new ArticuloBitacoraCodigoBarrasDTO()); dp.getArticuloDTO() .getCodigoBarrasActivo() .setId( (ArticuloBitacoraCodigoBarrasID) SerializationUtils.clone( (Serializable) detPed.getArticuloDTO().getCodigoBarrasActivo().getId())); dp.setEstadoDetallePedidoDTO(new EstadoDetallePedidoDTO()); dp.getEstadoDetallePedidoDTO().setCantidadEstado(entDetPed.getCantidadEntrega()); dp.setNpContadorDespacho(entDetPed.getCantidadDespacho()); dp.setNpContadorEntrega(entDetPed.getCantidadEntrega()); for (EntregaDetallePedidoDTO entPedRes : entregasResp) { Long diferencia = entDetPed.getEntregaPedidoDTO().getFechaEntregaCliente().getTime() - entPedRes.getEntregaPedidoDTO().getFechaEntregaCliente().getTime(); if (diferencia == 0L && entDetPed .getEntregaPedidoDTO() .getDireccionEntrega() .toUpperCase() .trim() .equals( entPedRes .getEntregaPedidoDTO() .getDireccionEntrega() .toUpperCase() .trim())) { entPedRes.getEntregaPedidoDTO().getNpDetallePedido().add(dp); existeEntrega = Boolean.TRUE; break; } } if (!existeEntrega) { entDetPed .getEntregaPedidoDTO() .setNpDetallePedido(new ArrayList<DetallePedidoDTO>()); entDetPed.getEntregaPedidoDTO().getNpDetallePedido().add(dp); entregasResp.add(entDetPed); } } } } } } for (EntregaDetallePedidoDTO entPed : entregasResp) { Long cantidadDespacho = 0L; Long cantidadEntrega = 0L; for (DetallePedidoDTO detallePedido : entPed.getEntregaPedidoDTO().getNpDetallePedido()) { cantidadDespacho = cantidadDespacho + detallePedido.getNpContadorDespacho(); cantidadEntrega = cantidadEntrega + detallePedido.getNpContadorEntrega(); } entPed.setCantidadDespacho(cantidadDespacho); entPed.setCantidadEntrega(cantidadEntrega); } session.setAttribute(ENTREGAS_RESPONSABLES, entregasResp); }