diff --git a/chrome/content/zotero/xpcom/data/item.js b/chrome/content/zotero/xpcom/data/item.js index 617fbc44a0..ab1545527f 100644 --- a/chrome/content/zotero/xpcom/data/item.js +++ b/chrome/content/zotero/xpcom/data/item.js @@ -4424,6 +4424,14 @@ Zotero.Item.prototype.fromJSON = function (json, options = {}) { invalidFieldLogLines.delete(mappedField); } } + + // Remove "Version Number" if "Edition" is set, since as of 3/2020 the RDF translator + // assigns it + if (extraFields.has('versionNumber') && setFields.has('edition') + && extraFields.get('versionNumber') == this.getField('edition')) { + extraFields.delete('versionNumber'); + invalidFieldLogLines.delete('versionNumber'); + } } for (let line of invalidFieldLogLines.values()) { diff --git a/test/tests/itemTest.js b/test/tests/itemTest.js index e3ee830ec0..a19df08674 100644 --- a/test/tests/itemTest.js +++ b/test/tests/itemTest.js @@ -1913,6 +1913,18 @@ describe("Zotero.Item", function () { item.fromJSON(json); assert.equal(item.getField('extra'), ''); }); + + it("should ignore versionNumber for books", async function () { + var json = { + itemType: "book", + edition: "1", + versionNumber: "1" + }; + var item = new Zotero.Item; + item.fromJSON(json); + assert.equal(item.getField('edition'), "1"); + assert.equal(item.getField('extra'), ''); + }); }); describe("strict mode", function () {