package pt.utl.ist.scripts.runOnce.candidacy; import net.sourceforge.fenixedu.domain.accounting.PaymentCodeType; import net.sourceforge.fenixedu.domain.accounting.paymentCodes.IndividualCandidacyPaymentCode; import net.sourceforge.fenixedu.util.Money; import org.joda.time.YearMonthDay; import pt.utl.ist.scripts.commons.AtomicScript; public class CreateAvailableIndividualCandidacyPaymentCodes extends AtomicScript { /** * - data de início da disponibilização da referência na SIBS - as candidaturas iniciaram a 17/12/2012 * - data de fim da disponibilidade da referência na SIBS - as candidaturas terminam a 18/01/2013 * - o valor a pagar para os alunos externos; - o valor das candidaturas que estão a decorrer aos Phds qq uma delas é de 100 * euros, independentemente de ser aluno externo, interno. * - o valor a pagar para alunos internos; * - o valor a pagar para uma candidatura ao 2º ciclo; * - o valor a pagar para uma candidatura a um Phd. */ private static final YearMonthDay START_DATE = new YearMonthDay(2013, 07, 01); private static final YearMonthDay END_DATE = new YearMonthDay(2013, 8, 16); private static final Money EXTERNAL_CANDIDACY_AMOUNT = Money.valueOf(140l); private static final Money INTERNAL_CANDIDACY_AMOUNT = Money.valueOf(50l); private static final Money SECOND_CYCLE_CANDIDACY_AMOUNT = Money.valueOf(100l); private static final Money PHD_CANDIDACY_AMOUNT = Money.valueOf(100l); private PaymentCodeInfo[] info = new PaymentCodeInfo[] { // new PaymentCodeInfo(PaymentCodeType.INTERNAL_DEGREE_CHANGE_INDIVIDUAL_CANDIDACY_PROCESS, INTERNAL_CANDIDACY_AMOUNT, // START_DATE, END_DATE, 25), // new PaymentCodeInfo(PaymentCodeType.EXTERNAL_DEGREE_CHANGE_INDIVIDUAL_CANDIDACY_PROCESS, EXTERNAL_CANDIDACY_AMOUNT, // START_DATE, END_DATE, 25), // new PaymentCodeInfo(PaymentCodeType.INTERNAL_DEGREE_CANDIDACY_FOR_GRADUATED_PERSON_INDIVIDUAL_PROCESS, // INTERNAL_CANDIDACY_AMOUNT, START_DATE, END_DATE, 25), // new PaymentCodeInfo(PaymentCodeType.EXTERNAL_DEGREE_CANDIDACY_FOR_GRADUATED_PERSON_INDIVIDUAL_PROCESS, // EXTERNAL_CANDIDACY_AMOUNT, START_DATE, END_DATE, 25), // new PaymentCodeInfo(PaymentCodeType.INTERNAL_DEGREE_TRANSFER_INDIVIDUAL_CANDIDACY_PROCESS, INTERNAL_CANDIDACY_AMOUNT, // START_DATE, END_DATE, 25), // new PaymentCodeInfo(PaymentCodeType.OVER_23_INDIVIDUAL_CANDIDACY_PROCESS, EXTERNAL_CANDIDACY_AMOUNT, START_DATE, // END_DATE, 25), // new PaymentCodeInfo(PaymentCodeType.EXTERNAL_DEGREE_TRANSFER_INDIVIDUAL_CANDIDACY_PROCESS, EXTERNAL_CANDIDACY_AMOUNT, // START_DATE, END_DATE, 25), // new PaymentCodeInfo(PaymentCodeType.SECOND_CYCLE_INDIVIDUAL_CANDIDACY_PROCESS, SECOND_CYCLE_CANDIDACY_AMOUNT, // START_DATE, END_DATE, 25), new PaymentCodeInfo(PaymentCodeType.PHD_PROGRAM_CANDIDACY_PROCESS, PHD_CANDIDACY_AMOUNT, START_DATE, END_DATE, 50) }; @Override protected void run() throws Exception { for (PaymentCodeInfo paymentCodeInfo : info) { for (int i = 0; i < paymentCodeInfo.getNumberOfPaymentCodes(); i++) { IndividualCandidacyPaymentCode paymentCode = IndividualCandidacyPaymentCode.create(paymentCodeInfo.getType(), paymentCodeInfo.getStartDate(), paymentCodeInfo.getEndDate(), paymentCodeInfo.getAmount(), paymentCodeInfo.getAmount()); System.out.println("PAYMENT CODE CREATED: " + paymentCode.getFormattedCode()); } } } public static final void main(String[] args) { processWriteTransaction(new CreateAvailableIndividualCandidacyPaymentCodes()); } private static class PaymentCodeInfo { private PaymentCodeType type; private Money amount; private YearMonthDay startDate; private YearMonthDay endDate; private Integer numberOfPaymentCodes; public PaymentCodeInfo(PaymentCodeType type, Money amount, YearMonthDay startDate, YearMonthDay endDate, Integer number) { this.type = type; this.amount = amount; this.startDate = startDate; this.endDate = endDate; this.numberOfPaymentCodes = number; } public PaymentCodeType getType() { return type; } public Money getAmount() { return amount; } public YearMonthDay getStartDate() { return startDate; } public YearMonthDay getEndDate() { return endDate; } public Integer getNumberOfPaymentCodes() { return numberOfPaymentCodes; } } }