Files
mozo-backend/app/assets/javascripts/supplier/app/models/order.js.coffee
T

44 lines
1.6 KiB
CoffeeScript

attr = DS.attr
App.Order = DS.Model.extend
state: attr('string')
list: DS.belongsTo('list')
price: attr('number')
section: DS.belongsTo('section')
section_id: attr('string')
product_orders: DS.hasMany('product_order')
active: (-> @get('state') == 'active').property('state')
delivered: (-> @get('state') == 'delivered').property('state')
placed: (-> @get('state') == 'placed').property('state')
needs_supplier_attention: (-> (@get('state') == 'placed') || (@get('state') == 'active')).property('state')
#display: (->
#return '' unless @get('product_orders')
#@get('product_orders').map((po)-> "#{po.product_name} (#{po.quantity})").join(',')
#).property('product_orders')
markClosed: ->
@set 'state', 'closed'
markCancelled: ->
@set 'state', 'cancelled'
markDelivered: ->
@set 'state', 'closed'
markActive: ->
@set 'state', 'active'
total: (->
@get('product_orders').getEach('total').reduce(((sum, total) -> sum + total), 0)
).property('product_orders.@each.total')
display: (->
@get('product_orders').map((po) -> "#{po.get('quantity')} x #{po.get('product.name')}").join(', ')
).property('product_orders.@each.quantity', 'product_orders.@each.product.@each.name')
display_with_table: (->
table = t('models.table').toLowerCase()
"#{@get('display')} #{table} #{@get('list.table.number')}".htmlSafe()
).property('display', 'list.table.number')
display_tag: (->
"<span class='display order-display order-#{@get('id')} #{@get('state')}'><span class='pre-display'></span>#{@get('display')}<span class='post-display'></span></span>".htmlSafe()
).property('display', 'state')