Search in sources :

Example 6 with Task

use of org.estatio.module.capex.dom.task.Task in project estatio by estatio.

the class DomainObject_triggerAbstract method nextViaTask.

private DO nextViaTask(final ST transition) {
    if (transition == null) {
        return null;
    }
    final Task task = transition.getTask();
    if (task == null) {
        return null;
    }
    final Task nextTask = taskRepository.nextTaskAfter(task);
    if (nextTask == null) {
        return null;
    }
    final ST nextTransition = findByTask(nextTask);
    if (nextTransition == null) {
        return null;
    }
    return nextTransition.getDomainObject();
}
Also used : Task(org.estatio.module.capex.dom.task.Task)

Example 7 with Task

use of org.estatio.module.capex.dom.task.Task in project estatio by estatio.

the class DomainObject_triggerAbstract method previousViaTask.

private DO previousViaTask(final ST transition) {
    if (transition == null) {
        return null;
    }
    final Task task = transition.getTask();
    if (task == null) {
        return null;
    }
    final Task previousTask = taskRepository.previousTaskBefore(task);
    if (previousTask == null) {
        return null;
    }
    final ST previousTransition = findByTask(previousTask);
    if (previousTransition == null) {
        return null;
    }
    return previousTransition.getDomainObject();
}
Also used : Task(org.estatio.module.capex.dom.task.Task)

Example 8 with Task

use of org.estatio.module.capex.dom.task.Task in project estatio by estatio.

the class IncomingInvoiceApprovalState_IntegTest method refund_by_supplier_skips_bank_account_verification_and_creates_check_task_for_treasury.

@Test
public void refund_by_supplier_skips_bank_account_verification_and_creates_check_task_for_treasury() {
    // given
    PartyRoleType typeForTreasurer = partyRoleTypeRepository.findByKey(PartyRoleTypeEnum.TREASURER.getKey());
    // workaround: clear MeService#me cache
    queryResultsCache.resetForNextTransaction();
    sudoService.sudo(Person_enum.JonathanPropertyManagerGb.getRef().toLowerCase(), (Runnable) () -> wrap(incomingInvoice).changePaymentMethod(PaymentMethod.REFUND_BY_SUPPLIER));
    sudoService.sudo(Person_enum.JonathanPropertyManagerGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_complete.class, incomingInvoice)).act("PROPERTY_MANAGER", null, null));
    // workaround: clear MeService#me cache
    queryResultsCache.resetForNextTransaction();
    sudoService.sudo(Person_enum.PeterPanProjectManagerGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_approve.class, incomingInvoice)).act("COUNTRY_DIRECTOR", null, null, false));
    List<Task> tasksForTreasury = taskRepository.findIncompleteByRole(typeForTreasurer);
    assertThat(tasksForTreasury).isEmpty();
    BankAccount bankAccount = incomingInvoice.getBankAccount();
    assertThat(bankAccount).isNotNull();
    BankAccountVerificationState state = stateTransitionService.currentStateOf(bankAccount, BankAccountVerificationStateTransition.class);
    assertThat(state).isEqualTo(BankAccountVerificationState.NOT_VERIFIED);
    // when
    // workaround: clear MeService#me cache
    queryResultsCache.resetForNextTransaction();
    sudoService.sudo(Person_enum.OscarCountryDirectorGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_approveAsCountryDirector.class, incomingInvoice)).act(null, false));
    // then
    assertThat(incomingInvoice.getApprovalState()).isEqualTo(IncomingInvoiceApprovalState.PAYABLE);
    List<IncomingInvoiceApprovalStateTransition> transitions = incomingInvoiceStateTransitionRepository.findByDomainObject(incomingInvoice);
    assertThat(transitions.size()).isEqualTo(7);
    assertThat(transitions.get(0).getTransitionType()).isEqualTo(IncomingInvoiceApprovalStateTransitionType.CHECK_PAYMENT);
    tasksForTreasury = taskRepository.findIncompleteByRole(typeForTreasurer);
    assertThat(tasksForTreasury.size()).isEqualTo(1);
    assertThat(tasksForTreasury.get(0).getDescription()).isEqualTo("Check Payment");
    // and still
    state = stateTransitionService.currentStateOf(bankAccount, BankAccountVerificationStateTransition.class);
    assertThat(state).isEqualTo(BankAccountVerificationState.NOT_VERIFIED);
    // and when
    // workaround: clear MeService#me cache
    queryResultsCache.resetForNextTransaction();
    sudoService.sudo(Person_enum.EmmaTreasurerGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_checkPayment.class, incomingInvoice)).act(null, false));
    // then
    assertThat(incomingInvoice.getApprovalState()).isEqualTo(IncomingInvoiceApprovalState.PAID);
}
Also used : Task(org.estatio.module.capex.dom.task.Task) BankAccountVerificationState(org.estatio.module.capex.dom.bankaccount.verification.BankAccountVerificationState) IncomingInvoiceApprovalStateTransition(org.estatio.module.capex.dom.invoice.approval.IncomingInvoiceApprovalStateTransition) PartyRoleType(org.estatio.module.party.dom.role.PartyRoleType) BankAccount(org.estatio.module.financial.dom.BankAccount) BankAccountVerificationStateTransition(org.estatio.module.capex.dom.bankaccount.verification.BankAccountVerificationStateTransition) Test(org.junit.Test)

Example 9 with Task

use of org.estatio.module.capex.dom.task.Task in project estatio by estatio.

the class EnforceTaskAssignmentPolicySubscriber_applyPolicy_Test method setUp.

@Before
public void setUp() throws Exception {
    subscriber = new EnforceTaskAssignmentPolicySubscriber();
    subscriber.stateTransitionService = mockStateTransitionService;
    subscriber.personRepository = mockPersonRepository;
    subscriber.metaModelService3 = mockMetaModelService3;
    domainObject = new BankAccount();
    stateTransitionClass = BankAccountVerificationStateTransition.class;
    pendingTransition = new BankAccountVerificationStateTransition();
    personTaskAssignedTo = new Person();
    personTaskAssignedTo.setReference("JBLOGGS");
    roleTaskAssignedTo = new PartyRoleType();
    roleTaskAssignedTo.setKey("Treasurer");
    pendingTask = new Task(roleTaskAssignedTo, personTaskAssignedTo, "some description", LocalDateTime.now(), // objectType of transition class
    "bankAccount.BankAccountVerificationStateTransition");
    pendingTransition.setTask(pendingTask);
    personForMe = new Person();
    personForMe.getRoles().add(new PartyRole(personForMe, roleTaskAssignedTo));
    assertThat(pendingTransition.getTask()).isNotNull();
    assertThat(personForMe.getRoles()).isNotEmpty();
    assertThat(Lists.newArrayList(personForMe.getRoles()).stream().map(PartyRole::getRoleType)).contains(roleTaskAssignedTo);
}
Also used : PartyRole(org.estatio.module.party.dom.role.PartyRole) Task(org.estatio.module.capex.dom.task.Task) PartyRoleType(org.estatio.module.party.dom.role.PartyRoleType) BankAccount(org.estatio.module.financial.dom.BankAccount) Person(org.estatio.module.party.dom.Person) BankAccountVerificationStateTransition(org.estatio.module.capex.dom.bankaccount.verification.BankAccountVerificationStateTransition) Before(org.junit.Before)

Example 10 with Task

use of org.estatio.module.capex.dom.task.Task in project estatio by estatio.

the class StateTransitionAbstract method completed.

@Programmatic
@Override
public void completed(final String comment, final NatureOfTransition natureOfTransition) {
    final LocalDateTime completedOn = clockService.nowAsLocalDateTime();
    final String completedBy = meService.me().getUsername();
    if (natureOfTransition == NatureOfTransition.EXPLICIT) {
        setCompletedBy(completedBy);
    }
    setCompletedOn(completedOn);
    setComment(comment);
    final Task task = getTask();
    if (task != null) {
        if (natureOfTransition == NatureOfTransition.EXPLICIT) {
            task.setCompletedBy(completedBy);
        }
        task.setCompletedOn(completedOn);
        task.setComment(comment);
    }
    setCompleted(true);
    setToState(getTransitionType().getToState());
}
Also used : LocalDateTime(org.joda.time.LocalDateTime) Task(org.estatio.module.capex.dom.task.Task) Programmatic(org.apache.isis.applib.annotation.Programmatic)

Aggregations

Task (org.estatio.module.capex.dom.task.Task)14 PartyRoleType (org.estatio.module.party.dom.role.PartyRoleType)6 Person (org.estatio.module.party.dom.Person)4 Programmatic (org.apache.isis.applib.annotation.Programmatic)3 BankAccountVerificationStateTransition (org.estatio.module.capex.dom.bankaccount.verification.BankAccountVerificationStateTransition)3 BankAccount (org.estatio.module.financial.dom.BankAccount)3 BankAccountVerificationState (org.estatio.module.capex.dom.bankaccount.verification.BankAccountVerificationState)2 IncomingInvoiceApprovalStateTransition (org.estatio.module.capex.dom.invoice.approval.IncomingInvoiceApprovalStateTransition)2 IPartyRoleType (org.estatio.module.party.dom.role.IPartyRoleType)2 LocalDateTime (org.joda.time.LocalDateTime)2 Before (org.junit.Before)2 Test (org.junit.Test)2 Subscribe (com.google.common.eventbus.Subscribe)1 EventHandler (org.axonframework.eventhandling.annotation.EventHandler)1 StateTransition (org.estatio.module.capex.dom.state.StateTransition)1 PartyRole (org.estatio.module.party.dom.role.PartyRole)1