/** * Create 12 Standard Periods from the specified start date. Creates also Period Control from * DocType. * * @see DocumentTypeVerify#createPeriodControls(Properties, int, SvrProcess, String) * @param locale locale * @param startDate first day of the calendar year * @param dateFormat SimpleDateFormat pattern for generating the period names. * @return true if created */ public boolean createStdPeriods(Locale locale, Timestamp startDate, String dateFormat) { if (locale == null) { MClient client = MClient.get(getCtx()); locale = client.getLocale(); } if (locale == null && Language.getLoginLanguage() != null) locale = Language.getLoginLanguage().getLocale(); if (locale == null) locale = Env.getLanguage(getCtx()).getLocale(); // SimpleDateFormat formatter; if (dateFormat == null || dateFormat.equals("")) dateFormat = "MMM-yy"; formatter = new SimpleDateFormat(dateFormat, locale); // int year = getYearAsInt(); GregorianCalendar cal = new GregorianCalendar(locale); if (startDate != null) { cal.setTime(startDate); if (cal.get(Calendar.YEAR) != year) // specified start date takes precedence in setting year year = cal.get(Calendar.YEAR); } else { cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, 0); cal.set(Calendar.DAY_OF_MONTH, 1); } cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); // for (int month = 0; month < 12; month++) { Timestamp start = new Timestamp(cal.getTimeInMillis()); String name = formatter.format(start); // get last day of same month cal.add(Calendar.MONTH, 1); cal.add(Calendar.DAY_OF_YEAR, -1); Timestamp end = new Timestamp(cal.getTimeInMillis()); // MPeriod period = MPeriod.findByCalendar(getCtx(), start, getC_Calendar_ID(), get_TrxName()); if (period == null) { period = new MPeriod(this, month + 1, name, start, end); } else { period.setC_Year_ID(this.getC_Year_ID()); period.setPeriodNo(month + 1); period.setName(name); period.setStartDate(start); period.setEndDate(end); } period.saveEx(get_TrxName()); // Creates Period Control // get first day of next month cal.add(Calendar.DAY_OF_YEAR, 1); } return true; } // createStdPeriods