Search in sources :

Example 1 with Order

use of org.estatio.module.capex.dom.order.Order in project estatio by estatio.

the class IncomingDocAsOrderViewModel method reasonNotEditableIfAny.

@Override
protected String reasonNotEditableIfAny() {
    Order order = getDomainObject();
    String reasonDisabledDueToState = order.reasonDisabledDueToState();
    if (reasonDisabledDueToState != null) {
        return reasonDisabledDueToState;
    }
    return null;
}
Also used : Order(org.estatio.module.capex.dom.order.Order) MemberOrder(org.apache.isis.applib.annotation.MemberOrder)

Example 2 with Order

use of org.estatio.module.capex.dom.order.Order in project estatio by estatio.

the class IncomingDocAsOrderViewModel method save.

@Action(semantics = SemanticsOf.IDEMPOTENT)
@MemberOrder(sequence = "1")
public Order save() {
    Order order = getDomainObject();
    order.setOrderNumber(getOrderNumber());
    order.setSellerOrderReference(getSellerOrderReference());
    order.setEntryDate(clockService.now());
    order.setOrderDate(getOrderDate());
    order.setSeller(getSeller());
    order.setBuyer(getBuyer());
    Optional<OrderItem> firstItemIfAny = getFirstItemIfAny();
    if (firstItemIfAny.isPresent()) {
        OrderItem orderItem = firstItemIfAny.get();
        orderItem.setCharge(getCharge());
        orderItem.setDescription(getDescription());
        orderItem.setNetAmount(getNetAmount());
        orderItem.setVatAmount(getVatAmount());
        orderItem.setGrossAmount(getGrossAmount());
        orderItem.setTax(getTax());
        orderItem.setStartDate(getStartDateFromPeriod());
        orderItem.setEndDate(getEndDateFromPeriod());
        orderItem.setProperty(getProperty());
        orderItem.setProject(getProject());
        orderItem.setBudgetItem(getBudgetItem());
    } else {
        order.addItem(getCharge(), getDescription(), getNetAmount(), getVatAmount(), getGrossAmount(), getTax(), getPeriod(), getProperty(), getProject(), getBudgetItem());
    }
    return order;
}
Also used : Order(org.estatio.module.capex.dom.order.Order) MemberOrder(org.apache.isis.applib.annotation.MemberOrder) OrderItem(org.estatio.module.capex.dom.order.OrderItem) Action(org.apache.isis.applib.annotation.Action) MemberOrder(org.apache.isis.applib.annotation.MemberOrder)

Example 3 with Order

use of org.estatio.module.capex.dom.order.Order in project estatio by estatio.

the class IncomingDocAsOrderViewModel method init.

@Programmatic
public void init() {
    final Order order = getDomainObject();
    setOrderNumber(order.getOrderNumber());
    setSellerOrderReference(order.getSellerOrderReference());
    setOrderDate(order.getOrderDate());
    setSeller(order.getSeller());
    setBuyer(order.getBuyer());
    setProperty(order.getProperty());
    final Optional<OrderItem> firstItemIfAny = getFirstItemIfAny();
    if (firstItemIfAny.isPresent()) {
        OrderItem orderItem = firstItemIfAny.get();
        setCharge(orderItem.getCharge());
        setDescription(orderItem.getDescription());
        setNetAmount(orderItem.getNetAmount());
        setVatAmount(orderItem.getVatAmount());
        setGrossAmount(orderItem.getGrossAmount());
        setTax(orderItem.getTax());
        setPeriod(periodFrom(orderItem.getStartDate(), orderItem.getEndDate()));
        setProperty(orderItem.getProperty());
        setProject(orderItem.getProject());
        setBudgetItem(orderItem.getBudgetItem());
    }
}
Also used : Order(org.estatio.module.capex.dom.order.Order) MemberOrder(org.apache.isis.applib.annotation.MemberOrder) OrderItem(org.estatio.module.capex.dom.order.OrderItem) Programmatic(org.apache.isis.applib.annotation.Programmatic)

Example 4 with Order

use of org.estatio.module.capex.dom.order.Order in project estatio by estatio.

the class IncomingDocAsInvoiceViewModel method save.

@Action(semantics = SemanticsOf.IDEMPOTENT)
@MemberOrder(sequence = "1")
public IncomingInvoice save() {
    IncomingInvoice incomingInvoice = getDomainObject();
    IncomingInvoiceType previousType = incomingInvoice.getType();
    incomingInvoice.setType(getIncomingInvoiceType());
    incomingInvoice.setInvoiceNumber(getInvoiceNumber());
    incomingInvoice.setBuyer(getBuyer());
    incomingInvoice.setSeller(getSeller());
    incomingInvoice.setInvoiceDate(getInvoiceDate());
    incomingInvoice.setDueDate(getDueDate());
    incomingInvoice.setPaymentMethod(getPaymentMethod());
    incomingInvoice.setCurrency(getCurrency());
    incomingInvoice.setDateReceived(getDateReceived());
    incomingInvoice.setBankAccount(getBankAccount());
    incomingInvoice.setNetAmount(getNetAmount());
    incomingInvoice.setGrossAmount(getGrossAmount());
    // if changed the type, then we need to re-evaluate the state machine
    if (previousType != getIncomingInvoiceType()) {
        stateTransitionService.trigger(incomingInvoice, IncomingInvoiceApprovalStateTransition.class, null, null, null);
    }
    // upsert invoice item
    // this will also update the parent header's property with that from the first item
    Optional<IncomingInvoiceItem> firstItemIfAny = getFirstItemIfAny();
    IncomingInvoiceItem firstItem;
    if (firstItemIfAny.isPresent()) {
        IncomingInvoiceItem item = firstItemIfAny.get();
        item.setIncomingInvoiceType(getIncomingInvoiceType());
        item.setCharge(getCharge());
        item.setDescription(getDescription());
        item.setNetAmount(getNetAmount());
        item.setVatAmount(getVatAmount());
        item.setGrossAmount(getGrossAmount());
        item.setTax(getTax());
        item.setStartDate(getStartDateFromPeriod());
        item.setEndDate(getEndDateFromPeriod());
        item.setFixedAsset(getProperty());
        item.setProject(getProject());
        item.setBudgetItem(getBudgetItem());
        firstItem = item;
    } else {
        firstItem = incomingInvoiceItemRepository.create(incomingInvoice.nextItemSequence(), incomingInvoice, incomingInvoiceType, getCharge(), getDescription(), getNetAmount(), getVatAmount(), getGrossAmount(), getTax(), getDueDate(), getStartDateFromPeriod(), getEndDateFromPeriod(), getProperty(), getProject(), getBudgetItem());
    }
    // 'switch view' will not be available subsequently because the Invoice/Item is "too complex")
    if (getOrderItem() != null) {
        Order order = getOrderItem().getOrdr();
        Charge chargeFromWrapper = getOrderItem().getCharge();
        OrderItem orderItemToLink = orderItemRepository.findByOrderAndCharge(order, chargeFromWrapper);
        orderItemInvoiceItemLinkRepository.findOrCreateLink(orderItemToLink, firstItem, firstItem.getNetAmount());
    } else {
        // remove all (or the one and only) link.
        final Optional<OrderItemInvoiceItemLink> links = orderItemInvoiceItemLinkRepository.findByInvoiceItem(firstItem);
        links.ifPresent(link -> {
            link.remove();
        });
    }
    return incomingInvoice;
}
Also used : Order(org.estatio.module.capex.dom.order.Order) MemberOrder(org.apache.isis.applib.annotation.MemberOrder) OrderItemInvoiceItemLink(org.estatio.module.capex.dom.orderinvoice.OrderItemInvoiceItemLink) IncomingInvoiceType(org.estatio.module.capex.dom.invoice.IncomingInvoiceType) OrderItem(org.estatio.module.capex.dom.order.OrderItem) IncomingInvoice(org.estatio.module.capex.dom.invoice.IncomingInvoice) IncomingInvoiceItem(org.estatio.module.capex.dom.invoice.IncomingInvoiceItem) Charge(org.estatio.module.charge.dom.Charge) Action(org.apache.isis.applib.annotation.Action) MemberOrder(org.apache.isis.applib.annotation.MemberOrder)

Example 5 with Order

use of org.estatio.module.capex.dom.order.Order in project estatio by estatio.

the class OrderApprovalStateSubscriber method on.

@Programmatic
@com.google.common.eventbus.Subscribe
@org.axonframework.eventhandling.annotation.EventHandler
public void on(Order.ObjectPersistedEvent ev) {
    // nb: note that the order at this stage has no items attached to it,
    // so there is a limit as to what we can safely do.
    // however, it *is* ok to just create the state chart for the domain object.
    final Order order = ev.getSource();
    OrderApprovalState approvalState = order.getApprovalState();
    if (approvalState == OrderApprovalStateTransitionType.INSTANTIATE.getToState()) {
        // ie was set in the persisting callback
        stateTransitionService.trigger(order, OrderApprovalStateTransitionType.INSTANTIATE, null, null);
    }
}
Also used : Order(org.estatio.module.capex.dom.order.Order) Programmatic(org.apache.isis.applib.annotation.Programmatic)

Aggregations

Order (org.estatio.module.capex.dom.order.Order)18 Test (org.junit.Test)8 Expectations (org.jmock.Expectations)7 OrderItem (org.estatio.module.capex.dom.order.OrderItem)6 MemberOrder (org.apache.isis.applib.annotation.MemberOrder)5 LocalDate (org.joda.time.LocalDate)5 Action (org.apache.isis.applib.annotation.Action)3 Programmatic (org.apache.isis.applib.annotation.Programmatic)3 IncomingDocAsOrderViewModel (org.estatio.module.capex.app.order.IncomingDocAsOrderViewModel)3 Organisation (org.estatio.module.party.dom.Organisation)3 IncomingInvoice (org.estatio.module.capex.dom.invoice.IncomingInvoice)2 Document (org.incode.module.document.dom.impl.docs.Document)2 BigDecimal (java.math.BigDecimal)1 ToString (lombok.ToString)1 ActionLayout (org.apache.isis.applib.annotation.ActionLayout)1 Order_switchView (org.estatio.module.capex.app.order.Order_switchView)1 BankAccountVerificationStateTransition (org.estatio.module.capex.dom.bankaccount.verification.BankAccountVerificationStateTransition)1 IncomingDocumentCategorisationStateTransition (org.estatio.module.capex.dom.documents.categorisation.IncomingDocumentCategorisationStateTransition)1 Document_categoriseAsOrder (org.estatio.module.capex.dom.documents.categorisation.triggers.Document_categoriseAsOrder)1 IncomingInvoiceItem (org.estatio.module.capex.dom.invoice.IncomingInvoiceItem)1