{% load i18n %} {% load inventree_extras %} {% load status_codes %} /* globals attachSelect, enableField, clearField, clearFieldOptions, closeModal, constructField, constructFormBody, getFormFieldValue, global_settings, handleFormErrors, imageHoverIcon, inventreeDelete, inventreeGet, inventreePut, launchModalForm, linkButtonsToSelection, loadTableFilters, makeIconBadge, makeIconButton, makeOptionsList, makePartIcons, modalEnable, modalSetContent, modalSetTitle, modalSubmit, moment, openModal, printStockItemLabels, printTestReports, renderLink, reloadFieldOptions, scanItemsIntoLocation, showAlertDialog, setFieldValue, setupFilterList, showApiError, stockStatusDisplay, */ /* exported createNewStockItem, exportStock, loadInstalledInTable, loadStockLocationTable, loadStockTable, loadStockTestResultsTable, loadStockTrackingTable, loadTableFilters, locationFields, removeStockRow, stockStatusCodes, */ function locationFields() { return { parent: { help_text: '{% trans "Parent stock location" %}', }, name: {}, description: {}, }; } /* Stock API functions * Requires api.js to be loaded first */ function stockStatusCodes() { return [ {% for code in StockStatus.list %} { key: {{ code.key }}, text: '{{ code.value }}', }, {% endfor %} ]; } /* * Export stock table */ function exportStock(params={}) { constructFormBody({}, { title: '{% trans "Export Stock" %}', fields: { format: { label: '{% trans "Format" %}', help_text: '{% trans "Select file format" %}', required: true, type: 'choice', value: 'csv', choices: exportFormatOptions(), }, sublocations: { label: '{% trans "Include Sublocations" %}', help_text: '{% trans "Include stock items in sublocations" %}', type: 'boolean', value: 'true', } }, onSubmit: function(fields, form_options) { var format = getFormFieldValue('format', fields['format'], form_options); var cascade = getFormFieldValue('sublocations', fields['sublocations'], form_options); // Hide the modal $(form_options.modal).modal('hide'); var url = `{% url "stock-export" %}?format=${format}&cascade=${cascade}`; for (var key in params) { url += `&${key}=${params[key]}`; } console.log(url); location.href = url; } }); } /** * Perform stock adjustments */ function adjustStock(action, items, options={}) { var formTitle = 'Form Title Here'; var actionTitle = null; // API url var url = null; var specifyLocation = false; var allowSerializedStock = false; switch (action) { case 'move': formTitle = '{% trans "Transfer Stock" %}'; actionTitle = '{% trans "Move" %}'; specifyLocation = true; allowSerializedStock = true; url = '{% url "api-stock-transfer" %}'; break; case 'count': formTitle = '{% trans "Count Stock" %}'; actionTitle = '{% trans "Count" %}'; url = '{% url "api-stock-count" %}'; break; case 'take': formTitle = '{% trans "Remove Stock" %}'; actionTitle = '{% trans "Take" %}'; url = '{% url "api-stock-remove" %}'; break; case 'add': formTitle = '{% trans "Add Stock" %}'; actionTitle = '{% trans "Add" %}'; url = '{% url "api-stock-add" %}'; break; case 'delete': formTitle = '{% trans "Delete Stock" %}'; allowSerializedStock = true; break; default: break; } // Generate modal HTML content var html = `
{% trans "Part" %} | {% trans "Stock" %} | {% trans "Location" %} | ${actionTitle || ''} | |
---|---|---|---|---|
${thumb} ${item.part_detail.full_name} | ${quantity}${status} | ${location} |
${actionInput}
|
${buttons} |