diff --git a/app/assets/javascripts/admin/bulk_product_update.js.coffee b/app/assets/javascripts/admin/bulk_product_update.js.coffee index 711db5b93e..637d910144 100644 --- a/app/assets/javascripts/admin/bulk_product_update.js.coffee +++ b/app/assets/javascripts/admin/bulk_product_update.js.coffee @@ -261,7 +261,8 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout product = BulkProducts.find product.id variant.unit_value = parseFloat(match[1].replace(",", ".")) variant.unit_value = null if isNaN(variant.unit_value) - variant.unit_value *= product.variant_unit_scale if variant.unit_value && product.variant_unit_scale + if variant.unit_value && product.variant_unit_scale + variant.unit_value = parseFloat(window.bigDecimal.multiply(variant.unit_value, product.variant_unit_scale, 2)) variant.unit_description = match[3] $scope.incrementLimit = -> diff --git a/app/assets/javascripts/admin/services/bulk_products.js.coffee b/app/assets/javascripts/admin/services/bulk_products.js.coffee index 02b1b60e35..e8b8bb6c3d 100644 --- a/app/assets/javascripts/admin/services/bulk_products.js.coffee +++ b/app/assets/javascripts/admin/services/bulk_products.js.coffee @@ -65,7 +65,8 @@ angular.module("ofn.admin").factory "BulkProducts", (ProductResource, dataFetche variantUnitValue: (product, variant) -> if variant.unit_value? if product.variant_unit_scale - @divideAsInteger variant.unit_value, product.variant_unit_scale + variant_unit_value = @divideAsInteger variant.unit_value, product.variant_unit_scale + parseFloat(window.bigDecimal.round(variant_unit_value, 2)) else variant.unit_value else diff --git a/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee b/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee index 09b0ce3ecd..de62688a9d 100644 --- a/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee +++ b/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee @@ -517,6 +517,10 @@ describe "AdminProductEditCtrl", -> describe "submitting products to be updated", -> describe "packing products", -> + beforeEach -> + window.bigDecimal = jasmine.createSpyObj "bigDecimal", ["multiply"] + window.bigDecimal.multiply.and.callFake (a, b, c) -> (a * b).toFixed(c) + it "extracts variant_unit_with_scale into variant_unit and variant_unit_scale", -> testProduct = id: 1 @@ -589,6 +593,8 @@ describe "AdminProductEditCtrl", -> beforeEach -> BulkProducts.products = [testProduct] + window.bigDecimal = jasmine.createSpyObj "bigDecimal", ["multiply"] + window.bigDecimal.multiply.and.callFake (a, b, c) -> (a * b).toFixed(c) it "extracts unit_value and unit_description from unit_value_with_description", -> testProduct = {id: 123, variant_unit_scale: 1.0} @@ -676,6 +682,15 @@ describe "AdminProductEditCtrl", -> unit_description: '' unit_value_with_description: "250,5" + it "rounds off the unit_value upto 2 decimal places", -> + testProduct = {id: 123, variant_unit_scale: 28.35} + testVariant = {unit_value_with_description: "1234.567"} + $scope.packVariant(testProduct, testVariant) + expect(testVariant).toEqual + unit_value: 1234.57 + unit_description: '' + unit_value_with_description: "1234.567" + describe "filtering products", -> beforeEach -> diff --git a/spec/javascripts/unit/admin/services/bulk_products_spec.js.coffee b/spec/javascripts/unit/admin/services/bulk_products_spec.js.coffee index ece9d1f244..466c09109f 100644 --- a/spec/javascripts/unit/admin/services/bulk_products_spec.js.coffee +++ b/spec/javascripts/unit/admin/services/bulk_products_spec.js.coffee @@ -3,6 +3,8 @@ describe "BulkProducts service", -> beforeEach -> module "ofn.admin" + window.bigDecimal = jasmine.createSpyObj "bigDecimal", ["round"] + window.bigDecimal.round.and.callFake (a, b) -> a.toFixed(b) beforeEach inject (_BulkProducts_, _$httpBackend_) -> BulkProducts = _BulkProducts_ @@ -152,6 +154,11 @@ describe "BulkProducts service", -> variant = {unit_value: 5} expect(BulkProducts.variantUnitValue(product, variant)).toEqual 5000 + it "returns the scaled value rounded off upto 2 decimal points", -> + product = {variant_unit_scale: 28.35} + variant = {unit_value: 1234.5} + expect(BulkProducts.variantUnitValue(product, variant)).toEqual 43.54 + it "returns the unscaled value when the product has no scale", -> product = {} variant = {unit_value: 5}