diff --git a/app/assets/javascripts/admin/bulk_product_update.js.coffee b/app/assets/javascripts/admin/bulk_product_update.js.coffee index 734b3d0db0..14ff9557b4 100644 --- a/app/assets/javascripts/admin/bulk_product_update.js.coffee +++ b/app/assets/javascripts/admin/bulk_product_update.js.coffee @@ -466,6 +466,7 @@ productEditModule.filter "rangeArray", -> input.push(i) for i in [start..end] input + filterSubmitProducts = (productsToFilter) -> filteredProducts = [] if productsToFilter instanceof Object @@ -475,23 +476,16 @@ filterSubmitProducts = (productsToFilter) -> filteredVariants = [] if product.hasOwnProperty("variants") angular.forEach product.variants, (variant) -> - if not variant.deleted_at? and variant.hasOwnProperty("id") - hasUpdateableProperty = false - filteredVariant = {} - filteredVariant.id = variant.id - if variant.hasOwnProperty("on_hand") - filteredVariant.on_hand = variant.on_hand - hasUpdatableProperty = true - if variant.hasOwnProperty("price") - filteredVariant.price = variant.price - hasUpdatableProperty = true - if variant.hasOwnProperty("unit_value") - filteredVariant.unit_value = variant.unit_value - hasUpdatableProperty = true - if variant.hasOwnProperty("unit_description") - filteredVariant.unit_description = variant.unit_description - hasUpdatableProperty = true - filteredVariants.push filteredVariant if hasUpdatableProperty + result = filterSubmitVariant variant + filteredVariant = result.filteredVariant + hasUpdatableProperty = result.hasUpdatableProperty + filteredVariants.push filteredVariant if hasUpdatableProperty + + if product.hasOwnProperty("master") + result = filterSubmitVariant product.master + filteredMaster = result.filteredVariant + hasUpdatableProperty = result.hasUpdatableProperty + filteredProduct.master = filteredMaster if hasUpdatableProperty hasUpdatableProperty = false filteredProduct.id = product.id @@ -525,6 +519,26 @@ filterSubmitProducts = (productsToFilter) -> filteredProducts +filterSubmitVariant = (variant) -> + hasUpdatableProperty = false + filteredVariant = {} + if not variant.deleted_at? and variant.hasOwnProperty("id") + filteredVariant.id = variant.id + if variant.hasOwnProperty("on_hand") + filteredVariant.on_hand = variant.on_hand + hasUpdatableProperty = true + if variant.hasOwnProperty("price") + filteredVariant.price = variant.price + hasUpdatableProperty = true + if variant.hasOwnProperty("unit_value") + filteredVariant.unit_value = variant.unit_value + hasUpdatableProperty = true + if variant.hasOwnProperty("unit_description") + filteredVariant.unit_description = variant.unit_description + hasUpdatableProperty = true + {filteredVariant: filteredVariant, hasUpdatableProperty: hasUpdatableProperty} + + addDirtyProperty = (dirtyObjects, objectID, parsedPropertyName, propertyValue) -> if !dirtyObjects.hasOwnProperty(objectID) dirtyObjects[objectID] = {} diff --git a/spec/javascripts/unit/bulk_product_update_spec.js.coffee b/spec/javascripts/unit/bulk_product_update_spec.js.coffee index 90d80dd295..bec7e8b8d3 100644 --- a/spec/javascripts/unit/bulk_product_update_spec.js.coffee +++ b/spec/javascripts/unit/bulk_product_update_spec.js.coffee @@ -171,6 +171,10 @@ describe "filtering products for submission to database", -> group_buy: null group_buy_unit_size: null on_demand: false + master: + id: 2 + unit_value: 250 + unit_description: "foo" variants: [ id: 1 on_hand: 2 @@ -191,6 +195,10 @@ describe "filtering products for submission to database", -> variant_unit_scale: 1 variant_unit_name: 'loaf' available_on: available_on + master: + id: 2 + unit_value: 250 + unit_description: "foo" variants_attributes: [ id: 1 on_hand: 2