48 lines
1.7 KiB
CoffeeScript
48 lines
1.7 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')
|
|
|
|
isClosed: ->
|
|
@set 'state', 'closed'
|
|
isCancelled: ->
|
|
@set 'state', 'cancelled'
|
|
isDelivered: ->
|
|
@set 'state', 'delivered'
|
|
isActive: ->
|
|
@set 'state', 'active'
|
|
mark_active: ->
|
|
#$.post('/supplier/mark_order_in_process', order_id: id)
|
|
Ember.$.post Routes.mark_in_process_suppliers_order_path @get('id')
|
|
@isActive()
|
|
mark_delivered: ->
|
|
Ember.$.post Routes.mark_delivered_suppliers_order_path @get('id')
|
|
@isDelivered()
|
|
mark_cancelled: ->
|
|
Ember.$.post Routes.cancel_suppliers_order_path @get('id')
|
|
@isCancelled()
|
|
total: (->
|
|
@get('product_orders').getEach('total').reduce(((sum, total) -> sum + total), 0)
|
|
).property('product_orders.@each.total')
|
|
|
|
display: Ember.computed 'product_orders.@each.display', ->
|
|
@get('product_orders').map((po) -> po.get('display')).join(', ')
|
|
|
|
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')
|