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