コード例 #1
0
  public void fillFieldsForInitiatedRequisition(
      Rnr requisition, ProgramRnrTemplate rnrTemplate, RegimenTemplate regimenTemplate) {
    List<ProcessingPeriod> fivePreviousPeriods =
        processingScheduleService.getNPreviousPeriodsInDescOrder(
            requisition.getPeriod(), MAX_NUMBER_OF_PERIODS_TO_TRACK);

    if (fivePreviousPeriods.size() == 0) {
      requisition.setFieldsAccordingToTemplateFrom(null, rnrTemplate, regimenTemplate);
      fillPreviousNCsInLineItems(
          requisition,
          requisition.getPeriod().getNumberOfMonths(),
          requisition.getPeriod().getStartDate());
      return;
    }

    Rnr previousRequisition =
        requisitionRepository.getRegularRequisitionWithLineItems(
            requisition.getFacility(), requisition.getProgram(), fivePreviousPeriods.get(0));
    requisition.setFieldsAccordingToTemplateFrom(previousRequisition, rnrTemplate, regimenTemplate);

    Integer numberOfMonths = fivePreviousPeriods.get(0).getNumberOfMonths();
    Date trackingDate = fivePreviousPeriods.get(0).getStartDate();

    int lastPeriodIndex = MAX_NUMBER_OF_PERIODS_TO_TRACK - 1;
    int secondPeriodIndex = 1;

    if (numberOfMonths == 1) {
      trackingDate = getStartDateForNthPreviousPeriod(fivePreviousPeriods, lastPeriodIndex);
    } else if (numberOfMonths == 2) {
      trackingDate = getStartDateForNthPreviousPeriod(fivePreviousPeriods, secondPeriodIndex);
    }

    fillPreviousNCsInLineItems(requisition, numberOfMonths, trackingDate);
  }
コード例 #2
0
  public void fillReportingDays(Rnr requisition) {
    Date startDate = requisition.getPeriod().getStartDate();
    Integer numberOfMonths = requisition.getPeriod().getNumberOfMonths();

    List<ProcessingPeriod> twoPreviousPeriods =
        processingScheduleService.getNPreviousPeriodsInDescOrder(requisition.getPeriod(), 2);

    if (twoPreviousPeriods.size() != 0) {
      numberOfMonths = twoPreviousPeriods.get(0).getNumberOfMonths();
      startDate =
          (numberOfMonths < 3 && twoPreviousPeriods.size() != 1)
              ? twoPreviousPeriods.get(1).getStartDate()
              : twoPreviousPeriods.get(0).getStartDate();
    }

    for (RnrLineItem lineItem : requisition.getNonSkippedLineItems()) {
      Integer reportingDays =
          getReportingDaysBasedOnRequisition(
              requisition, lineItem.getProductCode(), startDate, numberOfMonths);
      lineItem.setReportingDays(reportingDays);
    }
  }