priceWithOptions property

int priceWithOptions

사용자가 선택한 현재 상품(아이템)의 (옵션 포함) 주문 가격을 리턴한다.

예를 들어, 사용자가, 당근2박스 2만원과 선물포장 옵션 5천원을 선택했다면, 2만5천원이 리턴된다. 배송비나, 회원 포인트는 포함되어져 있지 않다.

현재 상품 페이지에서 주문 할 때 또는 장바구니에서 각 상품의 소계를 출력 할 때 사용 가능하다.

Implementation

int get priceWithOptions {
  int _price = 0;
  if (optionItemPrice!) {
    // '옵션에 상품가격지정' 방식. 옵션마다 가격이 다르고, 옵션마다 각각의 할인율이 있다. 그래서 옵션별로 할인 계산을 따로 해야 한다.
    for (final option in options!.keys) {
      _price += optionDiscountedPrice(option);
    }
  } else {
    // 기본 상품 가격에 옵션 가격을 추가하는 경우, 기본 옵션이 있어야 한다. 테스트 하는 경우에도 추가를 해 줘야 함.
    assert(options![DEFAULT_OPTION] != null, "Default Option not exists.");
    if (options![DEFAULT_OPTION] == null) return 0; // 에러. 기본 옵션이 존재해야 한다.

    for (final option in options!.keys) {
      // 옵션이 선택된 경우, 구매 개수 만큼 곱해서, 옵션 가격 추가
      if (options![option]!.count == 1) {
        _price += options![option]!.price * options![DEFAULT_OPTION]!.count;
      }
    }
    _price += discountedPrice! * options![DEFAULT_OPTION]!.count;
  }
  return _price;
}