Merge pull request #9827 from saunmanoj888/fix-vairant-unit-decimal-issue

Fix unit description UI issue on updating a Product having imperial weight (oz)
This commit is contained in:
Konrad
2022-10-28 13:52:00 +02:00
committed by GitHub
4 changed files with 26 additions and 2 deletions

View File

@@ -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 = ->

View File

@@ -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

View File

@@ -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 ->

View File

@@ -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}