From bca2d0f074814d01e6f6f9200f17a2c78285beee Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 21 Feb 2013 17:30:11 +0800 Subject: [PATCH] IDEMPIERE-634 NPE when selecting resource. --- .../org/adempiere/webui/panel/WSchedule.java | 26 ++++++++++++++++--- .../adempiere/webui/window/InfoSchedule.java | 4 ++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java index d67bb9f49e..40cc1ba870 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java @@ -225,9 +225,11 @@ public class WSchedule extends Window implements EventListener cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); cal.set(Calendar.DAY_OF_MONTH, 1); + cal.add(Calendar.DAY_OF_MONTH, -7); Timestamp startDate = new Timestamp(cal.getTimeInMillis()); // Calculate End Date cal.add(Calendar.MONTH, 1); + cal.add(Calendar.DAY_OF_MONTH, 14); Timestamp endDate = new Timestamp (cal.getTimeInMillis()); scm = new SimpleCalendarModel(); @@ -236,10 +238,26 @@ public class WSchedule extends Window implements EventListener for(MAssignmentSlot mas : list) { SimpleCalendarEvent event = new SimpleCalendarEvent(); - event.setBeginDate(mas.getStartTime()); - event.setEndDate(mas.getEndTime()); + Timestamp startTime = mas.getStartTime(); + Timestamp endTime = mas.getEndTime(); + Calendar calStart = Calendar.getInstance(); + calStart.setTime(startTime); + Calendar calEnd = Calendar.getInstance(); + calEnd.setTime(endTime); + + calStart.add(Calendar.DAY_OF_MONTH, 1); + if (calStart.get(Calendar.YEAR) == calEnd.get(Calendar.YEAR) && calStart.get(Calendar.MONTH) == calEnd.get(Calendar.MONTH) + && calStart.get(Calendar.DAY_OF_MONTH) == calEnd.get(Calendar.DAY_OF_MONTH)) { + if (calEnd.get(Calendar.HOUR_OF_DAY) == 0 && calEnd.get(Calendar.MINUTE) == 0) { + calEnd.add(Calendar.DAY_OF_MONTH, -1); + calEnd.set(Calendar.HOUR_OF_DAY, 23); + } + } + + event.setBeginDate(startTime); + event.setEndDate(calEnd.getTime()); event.setTitle(mas.getName()); - event.setContent(mas.getDescription()); + event.setContent(mas.getDescription() != null ? mas.getDescription() : mas.getName()); event.setHeaderColor('#'+ZkCssHelper.createHexColorString(mas.getColor(true))); event.setContentColor('#'+ZkCssHelper.createHexColorString(mas.getColor(true))); if (!mas.isAssignment() || mas.getMAssignment().isConfirmed()) @@ -283,6 +301,7 @@ public class WSchedule extends Window implements EventListener private void btnCurrentDateClicked() { calendars.setCurrentDate(Calendar.getInstance(calendars.getDefaultTimeZone()).getTime()); updateDateLabel(); + updateModel(); } private void updateDateLabel() { @@ -310,6 +329,7 @@ public class WSchedule extends Window implements EventListener calendars.setMold("month"); } updateDateLabel(); + updateModel(); } public void addNorthPane(Component pane) { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java index ca503b29b0..f23a4dd916 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java @@ -562,8 +562,10 @@ public class InfoSchedule extends Window implements EventListener dispose(); } } else { - if (!slot.isAssignment()) + if (!slot.isAssignment()) { FDialog.error(0, this, "No available time slot for the selected day."); + return; + } MResourceAssignment ma = slot.getMAssignment(); ma.setAssignDateFrom(start);