UNPKG

netsuite-mockups

Version:
117 lines (110 loc) 4.76 kB
/** * Return a Netsuite Record * * @classDescription Record object * @constructor * @param {string} name * @param {object} defaultValues * @returns {nlobjRecord} */ module.exports = function (name, defaultValues = {}) { const id = defaultValues.id || Math.ceil(Math.random() * 100); const selectedLine = {}; this.values = defaultValues; this.values.item = this.values.item || []; this.type = 'nlobjRecord'; return { // 1.0 methods getId: () => id, getName: () => name, // 2.0 methods // eslint-disable-next-line no-unused-vars id: id, commit: () => {}, commitLine: obj => selectedLine[obj.sublistId], commitLineItem: sublist => selectedLine[sublist], createCurrentLineItemSubrecord: (sublistId, subrecordName) => nlapiCreateRecord(subrecordName, { sublistId }), getAll: () => this.values, // Helper getCurrentLineItemValue: (sublist, field) => this.values[sublist][selectedLine[sublist]][field], getCurrentSublistValue: obj => this.values[obj.sublistId][selectedLine[obj.sublistId]][obj.fieldId], getField: options => ({ getSelectOptions: () => [ { value: random(1, 100), text: options.fieldId } ] }), getFieldText: valueName => this.values[valueName], getFieldValue: valueName => this.values[valueName], getLineCount: options => (this.values[options.sublistId || options] ? this.values[options.sublistId || options].length : 0), getLineItemCount: sublist => this.values[sublist].length, getLineItemText: (sublist, field, index) => this.values[sublist][index - 1][`${ field }_display`], getLineItemValue: (sublist, field, index) => this.values[sublist][index - 1][field], getSublistText: options => this.values[options.sublistId][options.line][options.fieldId], getSublistValue: options => this.values[options.sublistId][options.line][options.fieldId], getSubrecord: options => nlapiCreateRecord(options), getText: options => this.values[options.fieldId || options], getValue: options => this.values[options.fieldId || options], viewSubrecord: options => nlapiCreateRecord(options), editSubrecord: options => nlapiCreateRecord(options), createSubrecord: options => nlapiCreateRecord(options), findLineItemValue: (sublist, field, value) => { const i = this.values[sublist].findIndex(line => line[field] === value); return i < 0 ? i : i + 1; }, findSublistLineWithValue: options => { let index = -1; this.values[options.sublistId].forEach( (line, i) => { if (line[options.fieldId] === options.value) { index = i; } }); return index; }, insertLineItem: (sublist, index) => { this.values[sublist].splice(index - 1, 0, {}); }, removeLine: obj => { this.values[obj.sublistId].splice(obj.line, 1); }, removeLineItem: (sublist, index) => { this.values[sublist].splice(index - 1, 1); }, save: () => id, // Helper selectLine: obj => { selectedLine[obj.sublistId] = obj.line; this.values[obj.sublistId][obj.line] = this.values[obj.sublistId][obj.line] || {}; }, selectLineItem: (sublist, index) => { selectedLine[sublist] = index - 1; this.values[sublist][index - 1] = this.values[sublist][index - 1] || {}; }, selectNewLine: obj => { selectedLine[obj.sublistId] = this.values[obj.sublistId] ? this.values[obj.sublistId].length : 0; this.values[obj.sublistId] = this.values[obj.sublistId] || []; this.values[obj.sublistId][selectedLine[obj.sublistId]] = this.values[obj.sublistId][selectedLine[obj.sublistId]] || {}; }, selectNewLineItem: (sublistId) => { selectedLine[sublistId] = this.values[sublistId] ? this.values[sublistId].length : 0; this.values[sublistId] = this.values[sublistId] || []; this.values[sublistId][selectedLine[sublistId]] = this.values[sublistId][selectedLine[sublistId]] || {}; }, setCurrentLineItemValue: (sublist, field, value) => { this.values[sublist][selectedLine[sublist]][field] = value; }, setCurrentSublistValue: obj => { this.values[obj.sublistId][selectedLine[obj.sublistId]][obj.fieldId] = obj.value; }, setFieldValue: (valueName, value) => { this.values[valueName] = value; }, setLineItemValue: (sublist, field, index, value) => { this.values[sublist][index - 1][field] = value; }, setSublistValue: options => { this.values[options.sublistId][options.line][options.fieldId] = options.value; }, setValue: newValue => { // Helper this.values[newValue.fieldId] = newValue.value; }, setText: newValue => { // Helper this.values[newValue.fieldId] = newValue.text; } }; };