Sha256: 0575681f1588d4c7b343081119706aba94f14a7bcfb2d79f53059fb27c57dc1b

Contents?: true

Size: 1.04 KB

Versions: 2

Compression:

Stored size: 1.04 KB

Contents

class CartSku extends Lanes.Models.State

    session:
        sku: 'state'
        qty:  type: 'integer', default: 0, required: true

    derived:
        total: deps: ['qty', 'sku.price'], fn: ->
            @sku.price.times(@qty)
        display_total:
            deps: ['total'], fn: ->
                Lanes.u.format.currency @total

class Skr.Api.Models.Cart extends Skr.Api.Models.Base

    session:
        total:
            type: 'bigdec', required: true, default: -> _.bigDecimal('0')

    derived:
        display_total:
            deps: ['total'], fn: ->
                Lanes.u.format.currency @total

    associations:
        skus: { collection: CartSku }

    addSku: (sku, qty = 1) ->
        ci = new CartSku({sku, qty})
        @skus.add(ci)

    initialize: ->
        @listenToAndRun(@skus, 'add change', @onSkusChange)

    onSkusChange: ->
        @total = _.sumBy(@skus.models, 'total') unless @skus.isEmpty()

    addBySkuCode: (code) ->
        Skr.Api.Models.Sku.findByCode(code).then (sku) =>
            @addSku(sku) unless sku.isNew()

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
stockor-0.5.0 client/skr/api/Models/Cart.coffee
stockor-0.4.0 client/skr/api/Models/Cart.coffee