source: trunk/grails-app/views/inventoryItemDetailed/show.gsp @ 450

Last change on this file since 450 was 441, checked in by gav, 15 years ago

Add CostCode and InventoryItemPurchase domain classes with import features.
Includes some fixes to inventory imports, where manufacturer and supplier were crossed.

File size: 31.8 KB
Line 
1
2
3<html>
4    <head>
5        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
6        <meta name="layout" content="main" />
7        <title>Show InventoryItem</title>
8        <nav:resources override="true"/>
9        <resource:tabView skin="tabviewCustom" />
10        <g:render template="/shared/pictureHead" />
11    </head>
12    <body>
13        <div class="nav">
14            <nav:renderSubItems group="nav"/>
15        </div>
16        <div class="body">
17            <g:render template="/shared/messages" />
18            <g:hasErrors bean="${inventoryMovementInstance}">
19                <div class="errors">
20                    <g:renderErrors bean="${inventoryMovementInstance}" as="list" />
21                </div>
22            </g:hasErrors>
23
24            <g:hasErrors bean="${inventoryItemInstance}">
25                <div class="errors">
26                    <g:renderErrors bean="${inventoryItemInstance}" as="list" />
27                </div>
28            </g:hasErrors>
29
30            <div class="tabHeader">
31                <h1 class="taskHeader">
32                    ${inventoryItemInstance.name}
33                </h1>
34                ${fieldValue(bean:inventoryItemInstance, field:'description')}
35            </div>
36
37            <br/>
38
39            <richui:tabView id="tabView">
40
41                <richui:tabLabels>
42                    <richui:tabLabel selected="${showTab.inventory}" title="Inventory Item" />
43                    <richui:tabLabel selected="${showTab.detail}" title="Detail" />
44                    <richui:tabLabel selected="${showTab.movement}" title="Movement" />
45                    <richui:tabLabel selected="${showTab.purchasing}" title="Purchasing" />
46                </richui:tabLabels>
47
48                <richui:tabContents>
49
50<!-- Start Inventory tab -->
51                    <richui:tabContent>
52
53                        <g:if test="${inventoryMovementInstance}" >
54
55                            <g:form controller="inventoryItemDetailed" method="post" >
56                                <div class="dialog">
57                                    <table>
58                                        <tbody>
59                                                <g:hiddenField name="task.id" value="${inventoryMovementInstance.task.id}"/>
60                                                <g:hiddenField name="inventoryItem.id" value="${inventoryItemInstance.id}"/>
61                                                <tr class="prop">
62                                                    <td valign="top" class="name">Use on task:</td>
63                                                    <td valign="top" class="value">
64                                                        <g:link controller="taskDetailed" action="show" id="${inventoryMovementInstance.task.id}" >
65                                                            ${Task.get(inventoryMovementInstance.task.id).encodeAsHTML()}
66                                                        </g:link>
67                                                    </td>
68                                                </tr>
69
70                                                <tr class="prop">
71                                                    <td valign="top" class="name">
72                                                        <label for="quantity">Quantity:</label>
73                                                    </td>
74                                                    <td valign="top">
75                                                        <input class="medium ${hasErrors(bean:inventoryMovementInstance,field:'quantity','errors')}"
76                                                                    type="text" id="quantity" name="quantity"
77                                                                    value="${fieldValue(bean:inventoryMovementInstance,field:'quantity')}"/>
78                                                        ${inventoryItemInstance.unitOfMeasure?.encodeAsHTML()}
79
80                                                        <span class="buttons">
81                                                            <g:actionSubmit action="useInventoryItem" class="save" value="${InventoryMovementType.get(1)}" />
82                                                        </span>
83
84                                                    </td>
85                                                </tr>
86
87                                        </tbody>
88                                    </table>
89                                </div>
90                            </g:form>
91
92                            <br />
93
94                        </g:if>
95
96                        <div class="dialog">
97                            <table>
98                                <tbody>
99
100                                    <tr class="prop">
101                                        <td valign="top" class="name">Picture:</td>
102                                        <td valign="top" class="value">
103                                            <g:if test="${inventoryItemInstance.picture}" >
104                                                <span class='gallery'><wa:pictureLightboxAnchor picture="${inventoryItemInstance.picture}" size="${Image.Medium}" lightboxSize="${Image.Large}" target="_blank" title="Show Original" /></span>
105                                            </g:if>
106                                            <g:else>
107                                                <g:link controller="pictureDetailed"
108                                                                params="['inventoryItem.id':inventoryItemInstance.id]"
109                                                                action="create">
110                                                    Add Picture
111                                                </g:link>
112                                            </g:else>
113                                        </td>
114                                    </tr>
115
116                                    <tr class="prop">
117                                        <td valign="top" class="name">Comment:</td>
118
119                                        <td valign="top" class="value">${fieldValue(bean:inventoryItemInstance, field:'comment')}</td>
120                                    </tr>
121
122                                    <tr class="prop">
123                                        <td valign="top" class="name">In Stock:</td>
124
125                                        <td valign="top" class="value">
126                                            ${fieldValue(bean:inventoryItemInstance, field:'unitsInStock')} ${inventoryItemInstance.unitOfMeasure.encodeAsHTML()}
127                                        </td>
128                                    </tr>
129
130                                    <tr class="prop">
131                                        <td valign="top" class="name">Location:</td>
132
133                                        <td valign="top" class="value">
134                                            <g:link controller="inventoryLocationDetailed" action="show" id="${inventoryItemInstance.inventoryLocation?.id}">
135                                                ${inventoryItemInstance.inventoryLocation?.encodeAsHTML()}
136                                            </g:link>
137                                                in ${inventoryItemInstance.inventoryLocation?.inventoryStore.encodeAsHTML()}
138                                        </td>
139                                    </tr>
140
141                                    <tr class="prop">
142                                        <td valign="top" class="name">Active:</td>
143
144                                        <td valign="top" class="value">${fieldValue(bean:inventoryItemInstance, field:'isActive')}</td>
145                                    </tr>
146
147                                    <tr class="prop">
148                                        <td valign="top" class="name">Alternate Items:</td>
149
150                                        <td  valign="top" style="text-align:left;" class="value">
151                                            <ul>
152                                            <g:each var="a" in="${ inventoryItemInstance.alternateItems.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } }">
153                                                <li><g:link controller="inventoryItemDetailed" action="show" id="${a.id}">${a?.encodeAsHTML()}</g:link></li>
154                                            </g:each>
155                                            </ul>
156                                        </td>
157                                    </tr>
158
159                                    <tr class="prop">
160                                        <td valign="top" class="name">Spare For:</td>
161
162                                        <td  valign="top" style="text-align:left;" class="value">
163                                            <ul>
164                                            <g:each var="s" in="${ inventoryItemInstance.spareFor.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } }">
165                                                <li><g:link controller="assetDetailed" action="show" id="${s.id}">${s?.encodeAsHTML()}</g:link></li>
166                                            </g:each>
167                                            </ul>
168                                        </td>
169                                    </tr>
170
171                                </tbody>
172                            </table>
173                        </div>
174                        <div class="buttons">
175                            <g:form>
176                                <g:hiddenField name="id" value="${inventoryItemInstance.id}" />
177                                <span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
178                                <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
179                            </g:form>
180                        </div>
181
182                        <br />
183
184                    </richui:tabContent>
185<!-- End Inventory tab -->
186
187<!-- Start Detail tab -->
188                    <richui:tabContent>
189
190                        <div class="dialog">
191                            <table>
192                                <tbody>
193
194                                    <tr class="prop">
195                                        <td valign="top" class="name">Id:</td>
196                                        <td valign="top" class="value">${fieldValue(bean:inventoryItemInstance, field:'id')}</td>
197                                    </tr>
198
199                                    <tr class="prop">
200                                        <td valign="top" class="name">Obsolete:</td>
201                                        <td valign="top" class="value">${fieldValue(bean:inventoryItemInstance, field:'isObsolete')}</td>
202                                    </tr>
203
204                                    <tr class="prop">
205                                        <td valign="top" class="name">Inventory Group:</td>
206                                        <td valign="top" class="value">${inventoryItemInstance.inventoryGroup?.encodeAsHTML()}</td>
207                                    </tr>
208
209                                    <tr class="prop">
210                                        <td valign="top" class="name">Inventory Type:</td>
211                                        <td valign="top" class="value">${inventoryItemInstance.inventoryType?.encodeAsHTML()}</td>
212                                    </tr>
213
214                                    <tr class="prop">
215                                        <td valign="top" class="name">Reorder Point:</td>
216                                        <td valign="top" class="value">${fieldValue(bean:inventoryItemInstance, field:'reorderPoint')}</td>
217                                    </tr>
218
219                                    <tr class="prop">
220                                        <td valign="top" class="name">Enable Reorder:</td>
221                                        <td valign="top" class="value">${fieldValue(bean:inventoryItemInstance, field:'enableReorder')}</td>
222                                    </tr>
223
224                                    <tr class="prop">
225                                        <td valign="top" class="name">Recommended Reorder Point:</td>
226                                        <td valign="top" class="value">${fieldValue(bean:inventoryItemInstance, field:'recommendedReorderPoint')}</td>
227                                    </tr>
228
229                                    <tr class="prop">
230                                        <td valign="top" class="name">Estimated Unit Price:</td>
231
232                                        <td valign="top" class="value">
233                                            <g:if test="${inventoryItemInstance.estimatedUnitPriceAmount}">
234                                                ${inventoryItemInstance.estimatedUnitPriceAmount.encodeAsHTML()}
235                                                ${inventoryItemInstance.estimatedUnitPriceCurrency.encodeAsHTML()}
236                                            </g:if>
237                                        </td>
238                                    </tr>
239
240                                    <tr class="prop">
241                                        <td valign="top" class="name">Suppliers Part Number:</td>
242                                        <td valign="top" class="value">${fieldValue(bean:inventoryItemInstance, field:'suppliersPartNumber')}</td>
243                                    </tr>
244
245                                    <tr class="prop">
246                                        <td valign="top" class="name">Preferred Supplier:</td>
247
248                                        <td  valign="top" style="text-align:left;" class="value">
249                                            <g:link controller="supplierDetailed" action="show" id="${inventoryItemInstance.preferredSupplier?.id}">
250                                                ${inventoryItemInstance.preferredSupplier?.encodeAsHTML()}
251                                            </g:link>
252                                        </td>
253                                    </tr>
254
255                                    <tr class="prop">
256                                        <td valign="top" class="name">Alternate Suppliers:</td>
257
258                                        <td  valign="top" style="text-align:left;" class="value">
259                                            <ul>
260                                            <g:each var="s" in="${ inventoryItemInstance.alternateSuppliers.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } }">
261                                                <li><g:link controller="supplierDetailed" action="show" id="${s.id}">${s?.encodeAsHTML()}</g:link></li>
262                                            </g:each>
263                                            </ul>
264                                        </td>
265                                    </tr>
266
267                                    <tr class="prop">
268                                        <td valign="top" class="name">Average Delivery Time:</td>
269                                        <td valign="top" class="value">
270                                        ${fieldValue(bean:inventoryItemInstance, field:'averageDeliveryTime')}
271                                        ${fieldValue(bean:inventoryItemInstance, field:'averageDeliveryPeriod')}
272                                        </td>
273                                    </tr>
274
275                                    <tr class="prop">
276                                        <td valign="top" class="name">Manufacturers Part Number:</td>
277                                        <td valign="top" class="value">${fieldValue(bean:inventoryItemInstance, field:'manufacturersPartNumber')}</td>
278                                    </tr>
279
280                                    <tr class="prop">
281                                        <td valign="top" class="name">Preferred Manufacturer:</td>
282
283                                        <td  valign="top" style="text-align:left;" class="value">
284                                            <g:link controller="manufacturerDetailed" action="show" id="${inventoryItemInstance.preferredManufacturer?.id}">
285                                                ${inventoryItemInstance.preferredManufacturer?.encodeAsHTML()}
286                                            </g:link>
287                                        </td>
288                                    </tr>
289
290                                    <tr class="prop">
291                                        <td valign="top" class="name">Alternate Manufacturers:</td>
292
293                                        <td  valign="top" style="text-align:left;" class="value">
294                                            <ul>
295                                            <g:each var="m" in="${ inventoryItemInstance.alternateManufacturers.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) } }">
296                                                <li><g:link controller="manufacturerDetailed" action="show" id="${m.id}">${m?.encodeAsHTML()}</g:link></li>
297                                            </g:each>
298                                            </ul>
299                                        </td>
300                                    </tr>
301
302
303                                </tbody>
304                            </table>
305                        </div>
306                        <div class="buttons">
307                            <g:form>
308                                <g:hiddenField name="id" value="${inventoryItemInstance.id}" />
309                                <span class="button"><g:actionSubmit class="edit" value="Edit" /></span>
310                                <span class="button"><g:actionSubmit class="delete" onclick="return confirm('Are you sure?');" value="Delete" /></span>
311                            </g:form>
312                        </div>
313                    </richui:tabContent>
314<!-- End Detail tab -->
315
316<!-- Start Movement tab -->
317                    <richui:tabContent>
318
319                        <g:if test="${inventoryMovementList.isEmpty()}">
320                            <br />
321                            No Inventory Movements.
322                            <br />
323                            <br />
324
325                            <div class="buttons">
326                                <g:form controller="inventoryMovementDetailed">
327                                    <g:hiddenField name="inventoryItem.id" value="${inventoryItemInstance.id}" />
328                                    <span class="button"><g:actionSubmit action="create" class="add" value="Create" /></span>
329                                </g:form>
330                            </div>
331
332                        </g:if>
333                        <g:else>
334
335                            <div class="list">
336                                <table>
337                                    <thead>
338                                        <tr>
339                                            <th>Quantity</th>
340                                            <th>Movement Type</th>
341                                            <th>Date</th>
342                                            <th>Person</th>
343                                            <th></th>
344                                        </tr>
345                                    </thead>
346                                    <tbody>
347                                        <g:each in="${inventoryMovementList}" status="i" var="movements">
348                                            <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/inventoryMovementDetailed/show/${movements.id}"'/>
349
350                                                <td>${fieldValue(bean:movements, field:'quantity')}</td>
351                                                <td>${fieldValue(bean:movements, field:'inventoryMovementType')}</td>
352                                                <td><g:formatDate date="${movements.date}" format="EEE, dd-MMM-yyyy"/></td>
353                                                <td>${fieldValue(bean:movements, field:'person')}</td>
354                                                <td>
355                                                    <g:link controller="inventoryMovementDetailed" action="show" id="${movements.id}">
356                                                        <img  src="${resource(dir:'images/skin',file:'database_go.png')}" alt="Show" />
357                                                    </g:link>
358                                                </td>
359
360                                            </tr>
361                                        </g:each>
362                                    </tbody>
363                                </table>
364                            </div>
365
366                            <div class="buttons">
367                                <g:form controller="inventoryMovementDetailed">
368                                    <g:hiddenField name="inventoryItem.id" value="${inventoryItemInstance.id}" />
369                                    <g:if test="${inventoryMovementListTotal > inventoryMovementListMax}">
370                                        Showing ${inventoryMovementListMax} of ${inventoryMovementListTotal}
371                                        <br />
372                                    </g:if>
373                                    <g:else>
374                                        Total ${inventoryMovementListTotal}
375                                        <br />
376                                    </g:else>
377                                    <span class="button"><g:actionSubmit action="listInventoryMovements" class="table" value="List" /></span>
378                                    <span class="button"><g:actionSubmit action="create" class="add" value="Create" /></span>
379                                </g:form>
380                            </div>
381
382                        </g:else>
383
384                    </richui:tabContent>
385<!-- End Movement tab -->
386
387<!-- Start Purchases tab -->
388                    <richui:tabContent>
389
390                        <g:if test="${inventoryItemPurchases.isEmpty()}">
391                            <br />
392                            No Inventory Purchases.
393                            <br />
394                            <br />
395
396                            <div class="buttons">
397                                <g:form controller="inventoryItemPurchaseDetailed">
398                                    <g:hiddenField name="inventoryItem.id" value="${inventoryItemInstance.id}" />
399                                    <span class="button"><g:actionSubmit action="create" class="add" value="Order" /></span>
400                                </g:form>
401                            </div>
402
403                        </g:if>
404                        <g:else>
405
406                            <div class="list">
407                                <table>
408                                    <thead>
409                                        <tr>
410                                            <g:sortableColumn action="show" property="purchaseOrderNumber"
411                                                                                title="Order #" params="[paginate: 'purchases']"  />
412                                            <g:sortableColumn action="show"  property="dateEntered"
413                                                                                title="Date" params="[paginate: 'purchases']" />
414                                            <g:sortableColumn action="show"  property="costCode"
415                                                                                title="Cost Code" params="[paginate: 'purchases']" />
416                                            <g:sortableColumn action="show"  property="quantity"
417                                                                                title="Quantity" params="[paginate: 'purchases']" />
418                                            <g:sortableColumn action="show"  property="orderValueAmount"
419                                                                                title="Order \$" params="[paginate: 'purchases']" />
420                                            <g:sortableColumn action="show"  property="invoiceNumber"
421                                                                                title="Invoice Number" params="[paginate: 'purchases']" />
422                                            <g:sortableColumn action="show"  property="inventoryItemPurchaseType"
423                                                                                title="Type" params="[paginate: 'purchases']" />
424                                            <th>
425                                                <img  src="${resource(dir:'images/skin',file:'database_go_grey.png')}" alt="Show" title="Show" />
426                                            </th>
427                                            <th>
428                                                <img  src="${resource(dir:'images/skin',file:'basket_put_grey.png')}" alt="Receive" title="Receive" />
429                                            </th>
430                                            <th>
431                                                <img  src="${resource(dir:'images/skin',file:'tick_grey.png')}" alt="Approve" title="Approve Payment" />
432                                            </th>
433                                        </tr>
434                                    </thead>
435                                    <tbody>
436                                        <g:each in="${inventoryItemPurchases}" status="i" var="purchase">
437                                            <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}"/>
438
439                                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemPurchaseDetailed/show/${purchase.id}"'>
440                                                    ${fieldValue(bean:purchase, field:'purchaseOrderNumber')}
441                                                </td>
442                                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemPurchaseDetailed/show/${purchase.id}"'>
443                                                    <g:formatDate date="${purchase.dateEntered}" format="EEE, dd-MMM-yyyy"/>
444                                                </td>
445                                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemPurchaseDetailed/show/${purchase.id}"'>
446                                                    ${fieldValue(bean:purchase, field:'costCode')}
447                                                </td>
448                                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemPurchaseDetailed/show/${purchase.id}"'>
449                                                    ${fieldValue(bean:purchase, field:'quantity')}
450                                                </td>
451                                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemPurchaseDetailed/show/${purchase.id}"'>
452                                                    ${fieldValue(bean:purchase, field:'orderValueAmount')}
453                                                    ${fieldValue(bean:purchase, field:'orderValueCurrency')}
454                                                </td>
455                                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemPurchaseDetailed/show/${purchase.id}"'>
456                                                    ${fieldValue(bean:purchase, field:'invoiceNumber')}
457                                                </td>
458                                                <td onclick='window.location = "${request.getContextPath()}/inventoryItemPurchaseDetailed/show/${purchase.id}"'>
459                                                    ${fieldValue(bean:purchase, field:'inventoryItemPurchaseType')}
460                                                </td>
461                                                <td>
462                                                    <g:link controller="inventoryItemPurchaseDetailed" action="show" id="${purchase.id}">
463                                                        <img  src="${resource(dir:'images/skin',file:'database_go.png')}" alt="Show" title="Show" />
464                                                    </g:link>
465                                                </td>
466                                                <g:if test="${purchase.inventoryItemPurchaseType.id == 1}">
467                                                    <g:if test="${!purchase.receivedComplete}">
468                                                        <td>
469                                                            <g:link controller="inventoryItemPurchaseDetailed" action="receive" id="${purchase.id}">
470                                                                <img  src="${resource(dir:'images/skin',file:'basket_put.png')}" alt="Receive" title="Receive" />
471                                                            </g:link>
472                                                        </td>
473                                                    </g:if>
474                                                    <g:else>
475                                                        <td>
476                                                        </td>
477                                                    </g:else>
478                                                    <g:if test="${!purchase.invoicePaymentApproved}">
479                                                        <td>
480                                                            <g:link controller="inventoryItemPurchaseDetailed" action="approveInvoicePayment" id="${purchase.id}">
481                                                                <img  src="${resource(dir:'images/skin',file:'tick.png')}" alt="Approve" title="Approve Payment" />
482                                                            </g:link>
483                                                        </td>
484                                                    </g:if>
485                                                    <g:else>
486                                                        <td>
487                                                        </td>
488                                                    </g:else>
489                                                </g:if>
490                                                <g:else>
491                                                    <td>
492                                                    </td>
493                                                    <td>
494                                                    </td>
495                                                </g:else>
496
497                                            </tr>
498                                        </g:each>
499                                    </tbody>
500                                </table>
501                            </div>
502
503                            <div class="buttons">
504                                <g:form controller="inventoryItemPurchaseDetailed">
505                                    <g:hiddenField name="inventoryItem.id" value="${inventoryItemInstance.id}" />
506                                    Results: ${inventoryItemPurchases.size()} / ${inventoryItemPurchasesTotal}
507                                    <span class="button"><g:actionSubmit action="create" class="add" value="Order" /></span>
508                                </g:form>
509                            </div>
510
511                            <div class="paginateButtons">
512                                <g:paginate action="show"
513                                                        id="${inventoryItemInstance?.id}"
514                                                        total="${inventoryItemPurchasesTotal}"
515                                                        params="[paginate: 'purchases']" />
516                            </div>
517
518                        </g:else>
519
520                    </richui:tabContent>
521<!-- End Movement tab -->
522
523                </richui:tabContents>
524            </richui:tabView>
525
526        </div>
527    </body>
528</html>
Note: See TracBrowser for help on using the repository browser.