1 //<script type="text/javascript">
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
5 Pman.Dialog.XtupleAdjustmentGroup = {
10 show : function(data, cb)
18 this.dialog.show(this.data._el);
21 this.form.setValues(data);
22 this.form.fireEvent('actioncomplete', this.form, { type: 'setdata', data: data });
30 this.dialog = Roo.factory({
31 xtype: 'LayoutDialog',
38 title : "Edit / Create Inventory Adjustment Group",
42 xtype: 'NestedLayoutPanel',
46 xtype: 'BorderLayout',
50 xtype: 'ContentPanel',
58 actioncomplete : function(_self,action)
60 if (action.type == 'setdata') {
61 _this.grid.ds.removeAll();
63 if(_this.data.invadjgrp_id){
65 this.load({ method: 'GET', params: { '_id' : _this.data.invadjgrp_id }});
69 if (action.type == 'load') {
70 _this.data = action.result.data;
71 if(_this.data.invadjgrp_posted){
75 _this.grid.ds.load({});
78 if (action.type =='submit') {
81 if (!_this.grid.ds.getCount() && this.findField('invadjgrp_id').getValue()*1 < 1) {
85 this.load({ method: 'GET', params: { '_id' : action.result.data.invadjgrp_id }});
93 _this.callback.call(_this, _this.form.getValues());
99 rendered : function (form)
105 style : 'margin:10px;',
106 url : baseURL + '/Roo/Invadjgrp.php',
111 legend : "Inventory Adjustment Group Detail",
112 style : 'width:520px',
119 name : 'invadjgrp_name',
128 name : 'invadjgrp_transdate',
136 displayField : 'location_name',
138 emptyText : "Select Location",
139 fieldLabel : 'Location',
140 forceSelection : true,
141 hiddenName : 'invadjgrp_location_id',
143 loadingText : "Searching...",
145 name : 'invadjgrp_location_id_location_name',
147 qtip : "Select Location",
148 queryParam : 'query[location_name]',
149 selectOnFocus : true,
150 tpl : '<div class="x-grid-cell-text x-btn button"><b>{location_name}</b> {location_descrip} </div>',
151 triggerAction : 'all',
153 valueField : 'location_id',
159 beforeload : function (_self, o){
161 o.params = o.params || {};
162 o.params.location_netable = 1;
163 o.params._notinternalcompany = 1;
164 o.params.location_restrict = 0;
168 sortInfo : { direction : 'ASC', field: 'curr_id' },
173 url : baseURL + '/Roo/location.php'
180 totalProperty : 'total',
182 {"name":"location_id","type":"int"},
183 {"name":"location_name","type":"string"}
192 fieldLabel : 'Comments',
193 name : 'invadjgrp_comments',
201 name : 'invadjgrp_id'
216 activate : function() {
219 _this.grid.ds.load({});
227 tableName : 'invadj',
236 //_this.dialog = Pman.Dialog.FILL_IN
237 if (_this.panel.active) {
241 beforeedit : function (e)
243 if(_this.data.invadjgrp_posted){
244 Roo.MessageBox.alert('Error', 'This group has been posted');
248 if(e.record.data.invadj_posted){
249 Roo.MessageBox.alert('Error', 'Can not update the posted adjustment');
253 if(e.field != 'invadj_itemsite_id_item_number'){
254 var itemsite_id = e.record.data.invadj_itemsite_id * 1;
255 if(isNaN(itemsite_id) || itemsite_id < 1){
256 Roo.MessageBox.alert('Error', 'Please select a item first');
261 afteredit : function (e)
263 if (e.originalValue == e.value) {
268 case 'invadj_qty_by' :
269 e.record.set('invadj_qty_after', parseInt(e.record.data.invadj_qty_before * 1 + e.value * 1));
272 case 'invadj_qty_after' :
273 e.record.set('invadj_qty_by', parseInt(e.value * 1 - e.record.data.invadj_qty_before * 1));
276 case 'invadj_itemsite_id_item_number' :
277 e.record.set('invadj_qty_after', parseInt(e.record.data.invadj_qty_before * 1 + e.record.data.invadj_qty_by * 1));
283 autoExpandColumn : 'invadj_itemsite_id_item_number',
287 xtype: 'CellSelectionModel',
290 tabend : function (_self)
292 _this.addItemBtn.fireEvent('click', _this.addItemBtn);
306 var group = _this.form.findField('invadjgrp_id').getValue() * 1;
308 if(!group || group < 1){
309 Roo.MessageBox.alert('Error', 'Please save the group first!');
313 if(_this.data.invadjgrp_posted){
314 Roo.MessageBox.alert('Error', 'This group has been posted');
318 var nr = _this.grid.ds.reader.newRow({
319 invadj_itemsite_id_item_number : '',
320 invadj_itemsite_id : 0,
321 invadj_qty_before : 0,
327 _this.grid.stopEditing();
328 _this.grid.ds.insert(_this.grid.ds.getCount(), nr);
329 _this.grid.startEditing(_this.grid.ds.getCount()-1, 0); // type..
332 render : function (_self)
334 _this.addItemBtn = _self;
337 cls : 'x-btn-text-icon',
339 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
347 _this.grid.stopEditing();
349 if(_this.data.invadjgrp_posted){
350 Roo.MessageBox.alert('Error', 'This group has been posted');
354 var s = _this.grid.getSelectionModel().getSelectedCell();
357 Roo.MessageBox.alert('Error', 'Please select a adjustment to delete');
361 var i = _this.grid.ds.getAt(s[0]);
363 if(i.data.invadj_posted){
364 Roo.MessageBox.alert('Error', 'Can not delete the posted adjustment');
368 _this.grid.ds.remove(i);
371 i = _this.grid.ds.getAt(s[0]);
373 _this.grid.selModel.select(s[0], s[1]);
379 } // nothing left to select..
380 _this.grid.selModel.select(s[0]-1, s[1]);
386 cls : 'x-btn-text-icon',
388 icon : rootURL + '/Pman/templates/images/trash.gif'
397 cls : 'x-btn-text-icon',
399 icon : Roo.rootURL + 'images/default/dd/drop-add.gif',
408 click : function (_self, e)
410 var group = _this.form.findField('invadjgrp_id').getValue() * 1;
412 if(!group || group < 1){
413 Roo.MessageBox.alert('Error', 'Please save the group first!');
416 if(_this.data.invadjgrp_posted){
417 Roo.MessageBox.alert('Error', 'This group has been posted');
421 var rn = _this.grid.ds.getCount();
423 var addRow = function(r) {
424 if(r.invadj_itemsite_id * 1 < 1 || r.qty * 1 == 0){
428 var nr = _this.grid.ds.reader.newRow({
429 invadj_itemsite_id_item_number : r.item_number,
430 invadj_itemsite_id : r.itemsite_id,
431 invadj_qty_before : r.balance * 1,
432 invadj_qty_by : r.qty * 1,
433 invadj_qty_after : r.balance * 1 + r.qty * 1
436 _this.grid.ds.insert(rn++, nr);
441 Pman.Dialog.Image.show(
444 _url : baseURL+'/Xtuple/Import/InvAdjustment?' + Roo.urlEncode({'invadjgrp_id' : group})
451 Roo.MessageBox.alert("Notice", 'UPLOADED');
456 cls : 'x-btn-text-icon',
457 text : "Upload Inventory Adjustments (eg. increases or decreases)",
458 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
464 click : function (_self, e)
466 var group = _this.form.findField('invadjgrp_id').getValue() * 1;
468 if(!group || group < 1){
469 Roo.MessageBox.alert('Error', 'Please save the group first!');
472 if(_this.data.invadjgrp_posted){
473 Roo.MessageBox.alert('Error', 'This group has been posted');
477 var rn = _this.grid.ds.getCount();
479 var addRow = function(r) {
480 if(r.invadj_itemsite_id * 1 < 1 || (r.qty * 1 - r.balance * 1) == 0){
484 var nr = _this.grid.ds.reader.newRow({
485 invadj_itemsite_id_item_number : r.item_number,
486 invadj_itemsite_id : r.itemsite_id,
487 invadj_qty_before : r.balance * 1,
488 invadj_qty_by : r.qty * 1 - r.balance * 1,
489 invadj_qty_after : r.qty * 1
492 _this.grid.ds.insert(rn++, nr);
497 Pman.Dialog.Image.show(
500 _url : baseURL+'/Xtuple/Import/InvAdjustment?' + Roo.urlEncode({'invadjgrp_id' : group})
507 Roo.MessageBox.alert("Notice", 'UPLOADED');
512 cls : 'x-btn-text-icon',
513 text : "Upload Inventory Stock take Results",
514 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
528 Roo.MessageBox.alert("Downloading", "File is downloading");
531 cls : 'x-btn-text-icon',
533 icon : rootURL + '/Pman/templates/images/spreadsheet.gif'
541 beforeload : function (_self, o){
543 o.params = o.params || {};
544 var group = _this.form.findField('invadjgrp_id').getValue() * 1;
546 if(!group || group < 1){
547 _this.grid.ds.removeAll();
550 o.params.invadj_invadjgrp_id = group;
552 o.params._with_detail = 1;
553 o.params.limit = 99999;
557 sortInfo : { field : 'invadj_itemsite_id_item_number', direction: 'ASC' },
563 url : baseURL + '/Roo/Invadj.php'
570 totalProperty : 'total',
577 'name': 'invadj_qty_by',
585 xtype: 'ColumnModel',
588 dataIndex : 'invadj_id',
592 renderer : function(v) { return String.format('{0}', parseInt(v).toFixed(0)); }
595 xtype: 'ColumnModel',
597 dataIndex : 'invadj_itemsite_id_item_number',
600 renderer : function(v) { return String.format('{0}', v); },
608 beforeselect : function (combo, record, index)
610 var ar = _this.grid.activeEditor.record;
612 ar.set('invadj_itemsite_id_item_number', record.data.itemsite_item_id_item_number);
613 ar.set('invadj_itemsite_id', record.data.itemsite_id);
614 ar.set('invadj_qty_before', record.data.balance_atdate);
620 displayField : 'itemsite_item_id_item_number',
622 emptyText : "Select item",
623 forceSelection : true,
624 hiddenName : 'invadj_itemsite_id',
626 loadingText : "Searching...",
628 name : 'invadj_itemsite_id_item_number',
630 qtip : "Select item",
631 queryParam : 'query[number]',
632 selectOnFocus : true,
633 tpl : '<div class="x-grid-cell-text x-btn button"><b>{itemsite_item_id_item_number}</b> {itemsite_item_id_item_descrip1} ({balance_atdate})</div>',
634 triggerAction : 'all',
635 valueField : 'itemsite_id',
640 beforeload : function (_self, o){
641 o.params = o.params || {};
643 o.params._location = _this.form.findField('invadjgrp_location_id').getValue();
645 var dt = _this.form.findField('invadjgrp_transdate').getValue();
647 o.params._atdate = (typeof(dt) == 'string') ? dt : dt.format('Y-m-d');
651 sortInfo : { direction : 'ASC', field: 'itemsite_item_id_item_number' },
656 url : baseURL + '/Roo/itemsite.php'
663 totalProperty : 'total',
664 fields : [{"name":"item_id","type":"int"},"item_number"]
671 xtype: 'ColumnModel',
674 dataIndex : 'invadj_qty_before',
675 header : 'Qty Before',
677 renderer : function(v) { return String.format('{0}', parseInt(v).toFixed(0)); }
680 xtype: 'ColumnModel',
683 dataIndex : 'invadj_qty_by',
686 renderer : function(v) { return String.format('{0}', parseInt(v).toFixed(0)); },
691 xtype: 'NumberField',
693 allowDecimals : false,
694 decimalPrecision : 0,
695 style : 'text-align:right'
700 xtype: 'ColumnModel',
703 dataIndex : 'invadj_qty_after',
704 header : 'Qty After',
706 renderer : function(v) { return String.format('{0}', parseInt(v).toFixed(0)); },
711 xtype: 'NumberField',
713 allowDecimals : false,
714 decimalPrecision : 0,
715 style : 'text-align:right'
724 xtype: 'LayoutRegion',
730 xtype: 'LayoutRegion',
737 xtype: 'LayoutRegion',
746 click : function (_self, e)
757 click : function (_self, e)
763 _this.grid.ds.each(function (r) {
764 if(r.data.invadj_qty_by * 1 == 0){
767 if(items.indexOf(r.data.invadj_itemsite_id * 1) != -1){
768 err.push(r.data.invadj_itemsite_id_item_number);
772 items.push(r.data.invadj_itemsite_id * 1);
775 invadj_id : r.data.invadj_id * 1,
776 invadj_itemsite_id : r.data.invadj_itemsite_id * 1,
777 invadj_qty_by : r.data.invadj_qty_by * 1
782 Roo.MessageBox.alert("Error", "Duplicate Item found : <br/>" + err.join("<br/>"));
786 _this.form.findField('adjustments').setValue(Roo.encode(ar));
787 _this.form.doAction("submit");
790 render : function (_self)
792 _this.saveBtn = _self;