mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 21:25:42 +00:00 
			
		
		
		
	Fixes for display of allocation tables (build order and / or sales order)
- Hide these tables where they do not make sense for a given Part or StockItem - Remove redundant "loadStockAllocationTable" function
This commit is contained in:
		| @@ -46,7 +46,6 @@ | ||||
|     findStockItemBySerialNumber, | ||||
|     installStockItem, | ||||
|     loadInstalledInTable, | ||||
|     loadStockAllocationTable, | ||||
|     loadStockLocationTable, | ||||
|     loadStockTable, | ||||
|     loadStockTestResultsTable, | ||||
| @@ -2302,161 +2301,6 @@ function loadStockTable(table, options) { | ||||
| } | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Display a table of allocated stock, for either a part or stock item | ||||
|  * Allocations are displayed for: | ||||
|  *  | ||||
|  * a) Sales Orders | ||||
|  * b) Build Orders | ||||
|  */ | ||||
| function loadStockAllocationTable(table, options={}) { | ||||
|  | ||||
|     var params = options.params || {}; | ||||
|  | ||||
|     params.build_detail = true; | ||||
|  | ||||
|     var filterListElement = options.filterList || '#filter-list-allocations'; | ||||
|  | ||||
|     var filters = {}; | ||||
|  | ||||
|     var filterKey = options.filterKey || options.name || 'allocations'; | ||||
|  | ||||
|     var original = {}; | ||||
|  | ||||
|     for (var k in params) { | ||||
|         original[k] = params[k]; | ||||
|         filters[k] = params[k]; | ||||
|     } | ||||
|  | ||||
|     setupFilterList(filterKey, table, filterListElement); | ||||
|  | ||||
|     /* | ||||
|      * We have two separate API queries to make here: | ||||
|      * a) Build Order Allocations | ||||
|      * b) Sales Order Allocations | ||||
|      *  | ||||
|      * We will let the call to inventreeTable take care of build orders, | ||||
|      * and then load sales orders after that. | ||||
|      */ | ||||
|     table.inventreeTable({ | ||||
|         url: '{% url "api-build-item-list" %}', | ||||
|         name: 'allocations', | ||||
|         original: original, | ||||
|         method: 'get', | ||||
|         queryParams: filters, | ||||
|         sidePagination: 'client', | ||||
|         showColumns: false, | ||||
|         onLoadSuccess: function(tableData) { | ||||
|  | ||||
|             var query_params = params; | ||||
|  | ||||
|             query_params.customer_detail = true; | ||||
|             query_params.order_detail = true; | ||||
|  | ||||
|             // Note: SalesOrderAllocations do not get deleted, | ||||
|             // so we must filter by "outstanding" status | ||||
|             query_params.outstanding = true; | ||||
|  | ||||
|             delete query_params.build_detail; | ||||
|  | ||||
|             // Load sales order allocation data | ||||
|             inventreeGet('{% url "api-so-allocation-list" %}', query_params, { | ||||
|                 success: function(data) { | ||||
|                     // Update table to include sales order data | ||||
|                     $(table).bootstrapTable('append', data); | ||||
|                 } | ||||
|             }); | ||||
|         }, | ||||
|         columns: [ | ||||
|             { | ||||
|                 field: 'order', | ||||
|                 title: '{% trans "Order" %}', | ||||
|                 formatter: function(value, row) { | ||||
|  | ||||
|                     var html = ''; | ||||
|  | ||||
|                     if (row.build) { | ||||
|  | ||||
|                         // Add an icon for the part being built | ||||
|                         html += thumbnailImage(row.build_detail.part_detail.thumbnail, { | ||||
|                             title: row.build_detail.part_detail.full_name | ||||
|                         }); | ||||
|                          | ||||
|                         html += ' '; | ||||
|  | ||||
|                         html += renderLink( | ||||
|                             global_settings.BUILDORDER_REFERENCE_PREFIX + row.build_detail.reference, | ||||
|                             `/build/${row.build}/` | ||||
|                         ); | ||||
|  | ||||
|                         html += makeIconBadge('fa-tools', '{% trans "Build Order" %}'); | ||||
|                     } else if (row.order) { | ||||
|  | ||||
|                         // Add an icon for the customer | ||||
|                         html += thumbnailImage(row.customer_detail.thumbnail || row.customer_detail.image, { | ||||
|                             title: row.customer_detail.name, | ||||
|                         }); | ||||
|                          | ||||
|                         html += ' '; | ||||
|  | ||||
|                         html += renderLink( | ||||
|                             global_settings.SALESORDER_REFERENCE_PREFIX + row.order_detail.reference, | ||||
|                             `/order/sales-order/${row.order}/` | ||||
|                         ); | ||||
|                         html += makeIconBadge('fa-truck', '{% trans "Sales Order" %}'); | ||||
|                     } else { | ||||
|                         return '-'; | ||||
|                     } | ||||
|  | ||||
|                     return html; | ||||
|                 } | ||||
|             }, | ||||
|             { | ||||
|                 field: 'description', | ||||
|                 title: '{% trans "Description" %}', | ||||
|                 formatter: function(value, row) { | ||||
|                     if (row.order_detail) { | ||||
|                         return row.order_detail.description; | ||||
|                     } else if (row.build_detail) { | ||||
|                         return row.build_detail.title; | ||||
|                     } else { | ||||
|                         return '-'; | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             { | ||||
|                 field: 'status', | ||||
|                 title: '{% trans "Order Status" %}', | ||||
|                 formatter: function(value, row) { | ||||
|                     if (row.build) { | ||||
|                         return buildStatusDisplay(row.build_detail.status); | ||||
|                     } else if (row.order) { | ||||
|                         return salesOrderStatusDisplay(row.order_detail.status); | ||||
|                     } else { | ||||
|                         return '-'; | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             { | ||||
|                 field: 'quantity', | ||||
|                 title: '{% trans "Allocated Quantity" %}', | ||||
|                 formatter: function(value, row) { | ||||
|                     var text = value; | ||||
|                     var pk = row.stock_item || row.item; | ||||
|  | ||||
|                     if (pk) { | ||||
|                         var url = `/stock/item/${pk}/`; | ||||
|                         return renderLink(text, url); | ||||
|                     } else { | ||||
|                         return value; | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|         ] | ||||
|     }); | ||||
| } | ||||
|  | ||||
|  | ||||
| /*  | ||||
|  * Display a table of stock locations | ||||
|  */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user