  def months_with_items
    # Create a hash like
    # {"January" => [<OrderLineItem>, <OrderLineItem>], "February" => [...]}
    @months_with_items ||= (1..12).to_a.each_with_object({}) do |month_num, obj|
      tmp_date = Date.new(@date.shipped_at_min.year, month_num, 1)

      month_fulfillments = fulfillments.select do |f|
        f.shipped_between?(tmp_date.beginning_of_month, tmp_date.end_of_month.end_of_day)
      end

      month_fulfillment_line_item_ids = month_fulfillments.map do |f|
        f.fulfillment_line_item_ids
      end.flatten

      month_fulfillment_line_items = fulfillment_line_items.select do |i| 
        month_fulfillment_line_item_ids.include?(i.id)
      end

      month_order_line_item_ids = month_fulfillment_line_items.map do |f|
        f.order_line_item_id
      end

      month = Date::MONTHNAMES[month_num]
      obj[month] = order_line_items.select{|i| month_order_line_item_ids.include?(i.id)}
    end
end