1 //<script type="text/javascript">
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
5 Pman.Dialog.XtupleTransfer = {
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',
34 show : function (_self)
36 this.layout.getRegion('center').showPanel(0);
44 title : "Edit / Create Inventory Transfer",
48 xtype: 'NestedLayoutPanel',
51 title : "Inventory Transfer",
53 xtype: 'BorderLayout',
57 xtype: 'ContentPanel',
65 actioncomplete : function(_self,action)
67 if (action.type == 'setdata') {
68 //_this.dialog.el.mask("Loading");
72 _this.grid.setColumns();
74 if (_this.data.createFromRev) {
76 this.load({ method: 'GET', params: { '_createFromRecv' : _this.data.createFromRev }});
81 if (_this.data.invhist_transfer_id) {
84 var tdb = baseURL.split('/').pop().split('.').shift();
85 if (tdb != _this.data._roo_office) {
86 this.el.mask('Remote Transfer - Read Only');
87 _this.grid.view.headerPanel.mask("");
88 _this.uploadBtn.hide();
92 _this.grid.view.headerPanel.unmask();
93 _this.uploadBtn.show();
99 this.load({ method: 'GET', params: {
100 _id : _this.data.invhist_transfer_id,
101 _roo_office : _this.data._roo_office
105 _this.grid.ds.removeAll();
106 _this.form.setValues({
107 invhist_transfer_transdate :
108 typeof(_this.data.invhist_transfer_transdate) == 'undefined' ?
109 (new Date()).format('Y-m-d') :
110 _this.data.invhist_transfer_transdate
112 invhist_transfer_number : 'AUTOMATIC',
113 _roo_office : _this.data._roo_office
116 if(_this.data._createReverse){
119 url : baseURL + '/Roo/invhist_transfer_item',
\r
122 invhist_transfer_item_invhist_transfer_id : _this.data._createReverse,
\r
123 'query[at_location]' : _this.data.invhist_transfer_from,
126 sort : 'invhist_transfer_item_line',
129 success : function (res)
\r
133 _this.grid.ds.loadData(res,false);
\r
140 invhist_transfer_salesrep_id : Pman.Login.authUser.salesrep.salesrep_id,
141 invhist_transfer_salesrep_id_salesrep_name : Pman.Login.authUser.salesrep.salesrep_name
145 if (typeof(_this.data._ns_autofill) != 'undefined') {
146 Roo.log("autofill: " + _this.data._ns_autofill);
149 var locid = _this.data._ns_autofill === 1 ?_this.data.invhist_transfer_to : _this.data.invhist_transfer_from;
150 // clear it so it's not done again..
152 Roo.log("locid: " + locid);
155 var addRow = function(r) {
157 var nsQty = r.netsuite_qty*1;
158 nsQty = nsQty < 1 ? 0 : nsQty;
160 var ourQty = r.itemsite_qty *1;
162 if (_this.data._ns_autofill === 1) {
163 // then we are trying to transfer from somewhere to her, to increase the qty to match
164 // so if ourQty < nsQty
165 if (ourQty < nsQty) {
166 addQty = nsQty - ourQty;
170 // we are trying to transfer out to get rid of stock to match..
171 if (nsQty < ourQty) {
172 addQty = ourQty - nsQty;
176 if (addQty * 1 < 1) {
181 var nr = _this.grid.ds.reader.newRow({
182 invhist_transfer_item_line : rn + 1,
183 item_id : r.itemsite_item_id,
184 invhist_transfer_item_itemsite_id : r.itemsite_id,
185 item_number : r.itemsite_item_id_item_number,
186 item_descrip1 : r.itemsite_item_id_item_descrip1,
187 invhist_transfer_item_qty : addQty,
189 // invhist_transfer_item_transfer_id : tid << we do not know this?!?
191 _this.grid.ds.insert(rn++, nr);
200 url : baseURL + '/Roo/itemsite',
201 mask: "Fetching Stock Quantities",
206 _as_of : _this.data.invhist_transfer_transdate,
207 _with_stock_and_value : 1,
208 _with_ns_all_stock : 1,
209 'sort' : 'itemsite_item_id_item_number',
212 success : function(res) {
214 Roo.each(res.data, addRow);
215 _this.data._ns_autofill = undefined;
222 if (action.type == 'load') {
225 this.findField('_roo_office').setValue( _this.data._roo_office );
227 _this.data = action.result.data;
228 if(_this.data.invhist_transfer_void){
229 _this.saveBtn.hide();
231 var dt = Date.parseDate(_this.data.invhist_transfer_transdate.split(' ')[0], "Y-m-d");
232 _this.form.findField('invhist_transfer_transdate').setValue(dt);
233 var dt = Date.parseDate(_this.data.invhist_transfer_arrivaldate.split(' ')[0],"Y-m-d");
234 _this.form.findField('invhist_transfer_arrivaldate').setValue(dt);
235 _this.grid.ds.load({});
239 if (action.type =='submit') {
244 if (_this.callback) {
245 _this.callback.call(_this, _this.form.getValues());
251 rendered : function (form)
257 style : 'margin:10px;',
258 url : baseURL + '/Xtuple/Roo/invhist_transfer.php',
268 legend : "Transfer Details",
269 style : 'width: 380px;height:220px;',
277 name : 'invhist_transfer_transdate',
284 fieldLabel : 'Arrival date',
286 name : 'invhist_transfer_arrivaldate',
292 fieldLabel : 'Reference #',
293 name : 'invhist_transfer_number',
301 displayField : 'salesrep_name',
303 emptyText : "Select salesrep",
304 fieldLabel : 'Sales Rep',
305 forceSelection : true,
306 hiddenName : 'invhist_transfer_salesrep_id',
308 loadingText : "Searching...",
310 name : 'invhist_transfer_salesrep_id_salesrep_name',
312 qtip : "Select salesrep",
313 queryParam : 'query[salesrep_name]',
314 selectOnFocus : true,
315 tpl : '<div class="x-grid-cell-text x-btn button"><b>{salesrep_name}</b> </div>',
316 triggerAction : 'all',
318 valueField : 'salesrep_id',
324 beforeload : function (_self, o){
325 o.params = o.params || {};
330 sortInfo : { direction : 'ASC', field: 'salesrep_name' },
335 url : baseURL + '/Roo/salesrep.php'
342 totalProperty : 'total',
343 fields : [{"name":"salesrep_id","type":"int"},"salesrep_name"]
351 render : function (_self)
353 _this.fromLocation = _self;
357 displayField : 'location_descrip',
359 emptyText : "Select location",
360 fieldLabel : 'From Location',
361 forceSelection : true,
362 hiddenName : 'invhist_transfer_from',
364 loadingText : "Searching...",
366 name : 'invhist_transfer_from_location_descrip',
368 qtip : "Select location",
369 queryParam : 'query[location_name]',
370 selectOnFocus : true,
371 tpl : '<div class="x-grid-cell-text x-btn button"><b>{location_name}</b> - {location_descrip} </div>',
372 triggerAction : 'all',
373 valueField : 'location_id',
379 beforeload : function (_self, o){
380 o.params = o.params || {};
383 o.params._notinternalcompany = 1;
388 sortInfo : { direction : 'ASC', field: 'location_name' },
393 url : baseURL + '/Roo/location.php'
400 totalProperty : 'total',
401 fields : [{"name":"id","type":"int"},{"name":"location_name","type":"string"}]
409 select : function (combo, record, index)
411 combo._is_internalcompany = false;
413 if(record.data.cust_to_internalcompany.length){
414 combo._is_internalcompany = true;
417 _this.grid.setColumns();
419 render : function (_self)
421 _this.toLocation = _self;
422 _this.toLocation._is_internalcompany = false;
426 displayField : 'location_descrip',
428 emptyText : "Select location",
429 fieldLabel : 'To Location',
430 forceSelection : true,
431 hiddenName : 'invhist_transfer_to',
433 loadingText : "Searching...",
435 name : 'invhist_transfer_to_location_descrip',
437 qtip : "Select location",
438 queryParam : 'query[location_name]',
439 selectOnFocus : true,
440 tpl : '<div class="x-grid-cell-text x-btn button"><b>{location_name}</b> - <b style="color:red">{location_cust_id_char_internalcompany} </b> {location_descrip} </div>',
441 triggerAction : 'all',
442 valueField : 'location_id',
448 beforeload : function (_self, o){
449 o.params = o.params || {};
450 o.params.location_restrict = 0;
451 o.params._with_internalcompany = 1;
456 sortInfo : { direction : 'ASC', field: 'location_name' },
461 url : baseURL + '/Roo/location.php'
468 totalProperty : 'total',
469 fields : [{"name":"id","type":"int"},{"name":"location_name","type":"string"}]
480 style : 'margin-left: 10px; float: left;',
487 legend : "Transfer Delivery Note Reference",
488 style : 'width: 260px',
493 fieldLabel : 'invhist_transfer_delivery_note',
494 name : 'invhist_transfer_delivery_note',
503 legend : "Transfer Description",
504 style : 'width: 260px',
509 fieldLabel : 'invhist_transfer_descrip',
510 name : 'invhist_transfer_descrip',
522 actionMode : 'fieldEl',
524 displayField : 'desc',
526 fieldLabel : 'Transfer Price',
527 hiddenName : 'invhist_transfer_price',
530 name : 'invhist_transfer_price_desc',
531 triggerAction : 'all',
536 xtype: 'SimpleStore',
539 [ 'PRICELIST', "At Transfer Price"],
540 [ 'LASTPLUS' , "Last Purchase +10% + 15% or stdcost +15%"],
541 [ 'STDCOST' , "stdcost - for old transfers only%"]
544 fields : [ 'code', 'desc']
554 name : 'transfer_items'
564 name : 'invhist_transfer_id'
574 activate : function() {
577 _this.grid.ds.load({});
584 tableName : 'invhist_transfer_item',
585 title : "invhist_transfer_item",
593 //_this.dialog = Pman.Dialog.FILL_IN
594 if (_this.panel.active) {
598 rowdblclick : function (_self, rowIndex, e)
600 if (!_this.dialog) return;
601 _this.dialog.show( this.getDataSource().getAt(rowIndex), function() {
602 _this.grid.footer.onClick('first');
605 beforeedit : function (e)
607 if(_this.data.invhist_transfer_posted){
608 Roo.MessageBox.alert('Error', 'This transfer has been posted');
611 if(_this.data.invhist_transfer_void){
612 Roo.MessageBox.alert('Error', 'This transfer has been voided');
616 if(e.field == 'invhist_transfer_item_unit_price' && (!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length) && !_this.toLocation._is_internalcompany){
617 Roo.MessageBox.alert('Error', 'Not a inter-comany transfer');
625 autoExpandColumn : 'item_descrip1',
628 setColumns : function() {
629 var cm = _this.grid.getColumnModel();
632 return cm.getIndexByDataIndex(str);
635 if((!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length) && !_this.toLocation._is_internalcompany){
636 cm.setHidden(cid('invhist_transfer_item_unit_price'), true);
637 cm.setHidden(cid('invhist_transfer_item_unit_price_default'), true);
638 _this.form.findField('invhist_transfer_price').hide();
642 cm.setHidden(cid('invhist_transfer_item_unit_price'), false);
643 cm.setHidden(cid('invhist_transfer_item_unit_price_default'), false);
644 _this.form.findField('invhist_transfer_price').show();
647 xtype: 'CellSelectionModel',
650 tabend : function (_self)
652 _this.addItemBtn.fireEvent('click', _this.addItemBtn);
660 beforeload : function (_self, o)
663 o.params = o.params || {};
668 o.params.invhist_transfer_item_invhist_transfer_id = _this.form.findField('invhist_transfer_id').getValue() * 1;
670 if ( !o.params.invhist_transfer_item_invhist_transfer_id) {
671 _this.grid.ds.removeAll();
675 o.params['query[at_location]'] = _this.form.findField('invhist_transfer_from').getValue();
676 o.params.limit = 999;
677 o.params._roo_office = _this.form.findField('_roo_office').getValue();
679 _this.grid.setColumns();
681 if(!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length){
685 o.params._inter_transfer = 1;
692 sortInfo : { field : 'invhist_transfer_item_line', direction: 'ASC' },
698 url : baseURL + '/Xtuple/Roo/invhist_transfer_item.php'
705 totalProperty : 'total',
708 'name': 'invhist_transfer_item_id',
712 'name': 'invhist_transfer_item_invhist_transfer_id',
716 'name': 'invhist_transfer_item_itemsite_id',
720 'name': 'invhist_transfer_item_qty',
724 'name': 'invhist_transfer_item_line',
728 'name': 'invhist_transfer_invhist_id',
751 if (_this.data.invhist_transfer_posted) {
752 Roo.MessageBox.alert("Error", "Transfer has been posted, void it first");
757 var grid = _this.grid;
760 _this.grid.ds.each(function(r) {
761 last = r.data.invhist_transfer_item_line;
766 var nr = _this.grid.ds.reader.newRow({
767 invhist_transfer_item_line : last,
770 invhist_transfer_item_qty : 0,
772 invhist_transfer_item_transfer_id : _this.form.findField('invhist_transfer_id').getValue()
776 grid.ds.insert(grid.ds.getCount(), nr);
777 grid.startEditing(grid.ds.getCount()-1, 1); // type..
779 render : function (_self)
781 _this.addItemBtn = _self;
784 cls : 'x-btn-text-icon',
786 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
791 cls : 'x-btn-text-icon',
792 text : "Fill based on Stock",
793 icon : Roo.rootURL + 'images/default/dd/drop-add.gif',
804 var rn = _this.grid.ds.getCount();
805 var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
806 var addRow = function(r) {
808 if (r.itemsite_qty * 1 < 1) {
812 var nr = _this.grid.ds.reader.newRow({
813 invhist_transfer_item_line : rn + 1,
814 item_id : r.itemsite_item_id,
815 invhist_transfer_item_itemsite_id : r.itemsite_id,
816 item_number : r.itemsite_item_id_item_number,
817 item_descrip1 : r.itemsite_item_id_item_descrip1,
818 invhist_transfer_item_qty : r.itemsite_qty,
820 invhist_transfer_item_transfer_id : tid
822 _this.grid.ds.insert(rn++, nr);
826 var loc = _this.form.findField('invhist_transfer_from').getValue()*1;
827 var dt = _this.form.findField('invhist_transfer_transdate').getValue().format('Y-m-d');
829 _this.grid.stopEditing();
832 url : baseURL + '/Roo/itemsite',
833 mask : 'Fetching stock',
836 limit : 2000, // alot!
837 _with_stock_and_value : 1,
841 'sort' : 'itemsite_item_id_item_number',
844 success : function(r) {
846 Roo.each(r.data, addRow);
860 render : function (_self)
862 _this.addItemBtn = _self;
865 cls : 'x-btn-text-icon',
866 text : "Transfer all from Location",
867 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
875 var rn = _this.grid.ds.getCount();
876 var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
879 var addRow = function(r) {
881 if (r.itemsite_qty * 1 > -1) {
885 var nr = _this.grid.ds.reader.newRow({
886 invhist_transfer_item_line : rn + 1,
887 item_id : r.itemsite_item_id,
888 invhist_transfer_item_itemsite_id : r.itemsite_id,
889 item_number : r.itemsite_item_id_item_number,
890 item_descrip1 : r.itemsite_item_id_item_descrip1,
891 invhist_transfer_item_qty : Math.abs(r.itemsite_qty),
893 invhist_transfer_item_transfer_id : tid
895 _this.grid.ds.insert(rn++, nr);
899 var loc = _this.form.findField('invhist_transfer_to').getValue()*1;
900 var dt = _this.form.findField('invhist_transfer_transdate').getValue().format('Y-m-d');
902 _this.grid.stopEditing();
905 url : baseURL + '/Roo/itemsite',
906 mask : 'Fetching stock',
909 limit : 2000, // alot!
910 _with_stock_and_value : 1,
914 'sort' : 'itemsite_item_id_item_number',
917 success : function(r) {
919 Roo.each(r.data, addRow);
933 render : function (_self)
935 _this.addItemBtn = _self;
938 cls : 'x-btn-text-icon',
939 text : "Fill negative at Target",
940 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
955 _this.grid.stopEditing();
957 if (_this.data.invhist_transfer_posted) {
958 Roo.MessageBox.alert("Error", "Transfer has been posted, void it first");
962 var rc= _this.grid.selModel.getSelectedCell();
964 Roo.MessageBox.alert("Error", "Select a item to delete");
968 var rec = _this.grid.ds.getAt(rc[0]);
969 _this.grid.ds.remove(rec);
972 rec = _this.grid.ds.getAt(rc[0]);
974 _this.grid.selModel.select(rc[0], 2);
980 } // nothing left to select..
981 _this.grid.selModel.select(rc[0]-1, 2);
988 cls : 'x-btn-text-icon',
990 icon : rootURL + '/Pman/templates/images/trash.gif'
996 xtype: 'ColumnModel',
998 dataIndex : 'invhist_transfer_item_line',
1001 renderer : function(v) { return String.format('{0}', v); }
1004 xtype: 'ColumnModel',
1006 dataIndex : 'item_id',
1007 header : 'Item Code',
1009 renderer : function(v,x,r) {
1010 return String.format('{0}', r.data.item_number);
1013 xtype: 'GridEditor',
1019 beforeselect : function (combo, record, index)
1021 // set _this.data values ..
1022 var ar = _this.grid.activeEditor.record;
1023 //Roo.log('beforeselect');
1025 // Roo.log('beforeselect-cb');
1026 ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);
1027 // ar.set('coitem_price', record.data.item_listprice);
1028 // ar.set('coitem_custprice', record.data.item_price);
1029 ar.set('invhist_transfer_item_itemsite_id', record.data.itemsite_id);
1030 ar.set('item_number', record.data.itemsite_item_id_item_number);
1031 ar.set('avail_at_location', record.data.avail_at_location);
1038 displayField : 'itemsite_item_id_item_number',
1040 emptyText : "Select item",
1041 forceSelection : true,
1042 hiddenName : 'itemsite_item_id_item_number',
1044 loadingText : "Searching...",
1046 name : 'item_number',
1048 qtip : "Select item",
1049 queryParam : 'query[number]',
1050 selectOnFocus : true,
1051 tpl : '<div class="x-grid-cell-text x-btn button"><b>{itemsite_item_id_item_number}</b> {itemsite_item_id_item_descrip1} ({avail_at_location})</div>',
1052 triggerAction : 'all',
1053 valueField : 'item_number',
1058 beforeload : function (_self, o){
1059 o.params = o.params || {};
1061 o.params['query[at_location]'] = _this.form.findField('invhist_transfer_from').getValue();
1066 sortInfo : { direction : 'ASC', field: 'itemsite_item_id_item_number' },
1071 url : baseURL + '/Roo/itemsite.php'
1074 xtype: 'JsonReader',
1078 totalProperty : 'total',
1079 fields : [{"name":"item_id","type":"int"},"item_number"]
1086 xtype: 'ColumnModel',
1088 dataIndex : 'item_descrip1',
1089 header : 'Description',
1091 renderer : function(v,x,r) { return String.format('{0}', v); }
1094 xtype: 'ColumnModel',
1097 dataIndex : 'avail_at_location',
1098 header : 'Cur. Avail',
1100 renderer : function(v,x,r) { return String.format('{0}', v); }
1103 xtype: 'ColumnModel',
1106 dataIndex : 'invhist_transfer_item_qty',
1109 renderer : function(v,x,r) {
1110 var vv = parseInt(v);
1111 //var aq = parseInt(r.data.avail_qty);
1112 //aq = isNaN(aq) ? 0 : aq;
1117 return String.format('{0}', vv.toFixed(0));
1121 xtype: 'GridEditor',
1124 xtype: 'NumberField',
1126 allowDecimals : false,
1127 decimalPrecision : 0,
1129 style : 'text-align:right'
1134 xtype: 'ColumnModel',
1137 dataIndex : 'invhist_transfer_item_unit_price',
1138 header : 'Unit Price',
1141 renderer : function(v,x,r)
1146 var color = '#666'; // orignal color
1148 if(r.data.invhist_transfer_item_unit_price_default != v){
1152 return String.format('<span style="color:{0};">{1} {2}</span>', color, (r.data.invhist_transfer_item_curr_name) ? r.data.invhist_transfer_item_curr_name : '' , Roo.util.Format.number(v,2));
1155 xtype: 'GridEditor',
1158 xtype: 'NumberField',
1161 allowDecimals : true,
1162 decimalPrecision : 2,
1163 style : 'text-align:right'
1168 xtype: 'ColumnModel',
1171 dataIndex : 'invhist_transfer_item_unit_price_default',
1172 header : 'Default Price',
1175 renderer : function(v,x,r)
1180 return String.format('{0} {1}', (r.data.invhist_transfer_item_curr_name) ? r.data.invhist_transfer_item_curr_name : '' , Roo.util.Format.number(v,2));
1188 xtype: 'LayoutRegion',
1193 xtype: 'LayoutRegion',
1202 activate : function() {
1203 _this.ipanel = this;
1205 _this.igrid.footer.onClick('first');
1210 fitContainer : true,
1213 tableName : 'Images',
1214 title : "Reference Files",
1219 render : function() {
1221 //_this.dialog = Pman.Dialog.FILL_IN
1222 //if (_this.panel.active) {
1223 // this.footer.onClick('first');
1226 rowdblclick : function (_self, rowIndex, e)
1229 var s = _self.getDataSource().getAt(rowIndex);
1231 url : baseURL + '/Images/' + s.data.id
1237 autoExpandColumn : 'id',
1243 beforeload : function (_self, o)
1245 //o.params.ontable = 'Companies';
1247 // o.params.imgtype = 'PressRelease';
1249 o.params = o.params || {};
1250 o.params.onid = _this.form.findField('invhist_transfer_id').getValue();
1251 o.params.ontable = 'invhist_transfer';
1255 load : function (_self, records, options)
1257 _this.panel.el.unmask();
1261 sortInfo : { field: 'created' , direction: 'DESC' },
1263 xtype: 'JsonReader',
1267 totalProperty : 'total',
1302 'name': 'displayorder',
1310 'name': 'parent_image_id',
1316 'dateFormat' : 'Y-m-d H:i:s'
1340 url : baseURL + '/Roo/Images.php'
1344 xtype: 'PagingToolbar',
1348 displayMsg : "Displaying Images {0} - {1} of {2}",
1349 emptyMsg : "No Images found"
1362 //var sel = Pman.Tab.PressReleaseCompanies ? Pman.Tab.PressReleaseCompanies.grid.getSelectionModel().getSelected() : false
1364 Pman.Dialog.Image.show({
1366 ontable: 'invhist_transfer',
1367 onid: _this.form.findField('invhist_transfer_id').getValue(),
1370 if (!data) { return; }
1371 _this.igrid.footer.onClick('first');
1376 cls : 'x-btn-text-icon',
1378 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
1386 Pman.genericDelete(_this, 'Images');
1389 cls : 'x-btn-text-icon',
1391 icon : rootURL + '/Pman/templates/images/trash.gif'
1397 xtype: 'ColumnModel',
1399 dataIndex : 'created',
1403 renderer : function(v,x,r) {
1404 return String.format('{0}<br/><i>{1}</i><br/>{2}<br/><i>{3}x{4}</i>',
1405 v.format('d/M/Y'), r.data.mimetype, r.data.filename,
1406 r.data.width, r.data.height
1411 xtype: 'ColumnModel',
1416 renderer : function(v,x,r) { return String.format('<img src="{0}/Images/Thumb/100/{1}/{2}" height="100">', baseURL, v, r.data.filename); }
1425 activate : function() {
1426 _this.hpanel = this;
1428 _this.hgrid.footer.onClick('first');
1433 fitContainer : true,
1436 tableName : 'events',
1445 if (_this.hpanel.active) {
1446 this.footer.onClick('first');
1450 autoExpandColumn : 'remarks',
1456 beforeload : function (_self, options)
1458 options.params = options.params || {};
1460 options.params.on_table = 'invhist_transfer';
1461 options.params.on_id = _this.form.findField('invhist_transfer_id').getValue();
1465 sortInfo : { field : 'event_when', direction: 'DESC' },
1470 url : baseURL + '/Roo/events.php'
1473 xtype: 'JsonReader',
1477 totalProperty : 'total',
1480 'name': 'event_when',
1492 'name': 'person_id_name',
1503 xtype: 'PagingToolbar',
1506 displayMsg : "Displaying events{0} - {1} of {2}",
1507 emptyMsg : "No Events found",
1512 xtype: 'ColumnModel',
1514 dataIndex : 'event_when',
1517 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y H:i:s') : ''); }
1520 xtype: 'ColumnModel',
1522 dataIndex : 'action',
1525 renderer : function(v,x,r) { return String.format('{0} - {1}', v, r.data.on_table); }
1528 xtype: 'ColumnModel',
1530 dataIndex : 'ipaddr',
1531 header : 'IP Address',
1533 renderer : function(v) { return String.format('{0}', v); }
1536 xtype: 'ColumnModel',
1538 dataIndex : 'person_id_name',
1541 renderer : function(v) { return String.format('{0}', v); }
1544 xtype: 'ColumnModel',
1546 dataIndex : 'remarks',
1549 renderer : function(v) { return String.format('{0}', v); }
1558 activate : function() {
1559 _this.tpanel = this;
1561 _this.tgrid.ds.load({});
1566 fitContainer : true,
1569 tableName : 'invhist_transfer_item',
1570 title : "Transfered",
1578 if (_this.tpanel.active) {
1583 autoExpandColumn : 'item_number',
1595 var id = _this.form.findField('invhist_transfer_id').getValue();
1603 _this.tgrid.ds.each(function (r) {
1604 if (_this.data.invhist_transfer_void && r.data.transfered_qty * 1 == 0 && r.data.expected_qty * 1 == 0) {
1607 if(!_this.data.invhist_transfer_void && r.data.transfered_qty * 1 - r.data.expected_qty * 1 == 0){
1615 Roo.MessageBox.alert("Notice", "Nothing Wrong!");
1620 url : baseURL + '/Roo/invhist_transfer',
1623 timeout : 1200000, //20 minutes...! - big xfer should be 10mins.
1625 invhist_transfer_id : id,
1628 success : function ()
1630 _this.tgrid.ds.load({});
1638 cls : 'x-btn-text-icon',
1639 text : "Fix Transfer",
1640 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1648 beforeload : function (_self, options)
1650 options.params = options.params || {};
1651 options.params.limit = 9999;
1652 if(_this.data.cust_to_internalcompany.length){
1657 var id = _this.form.findField('invhist_transfer_id').getValue();
1664 options.params.invhist_transfer_item_invhist_transfer_id = id;
1666 options.params._with_expected = 1;
1671 sortInfo : { field : 'invhist_transfer_item_line', direction: 'ASC' },
1676 url : baseURL + '/Roo/invhist_transfer_item.php'
1679 xtype: 'JsonReader',
1681 id : 'invhist_transfer_item_id',
1683 totalProperty : 'total',
1686 'name': 'invhist_transfer_item_id',
1690 'name': 'invhist_transfer_item_qty',
1694 'name': 'invhist_transfer_item_line',
1702 xtype: 'ColumnModel',
1704 dataIndex : 'item_number',
1707 renderer : function(v) { return String.format('{0}', v ? v : ''); }
1710 xtype: 'ColumnModel',
1712 dataIndex : 'transfered_qty',
1713 header : 'Transfered',
1715 renderer : function(v,x,r)
1717 if(v && r.data.transfered_qty * 1 != r.data.expected_qty * 1){
1718 return String.format('<span style="color:red">{0}</span>', v);
1720 return String.format('{0}', v ? v : 0);
1724 xtype: 'ColumnModel',
1726 dataIndex : 'expected_qty',
1727 header : 'Expected',
1729 renderer : function(v,x,r)
1732 if(v && r.data.transfered_qty * 1 != r.data.expected_qty * 1){
1733 return String.format('<span style="color:red">{0}</span>', v);
1735 return String.format('{0}', v ? v : 0);
1743 xtype: 'LayoutRegion',
1752 click : function (_self, e)
1755 var rn = _this.grid.ds.getCount();
1756 var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
1757 var addRow = function(r) {
1758 if (r.itemsite_qty * 1 < 1) {
1762 var nr = _this.grid.ds.reader.newRow({
1763 invhist_transfer_item_line : rn + 1,
1764 item_id : r.itemsite_item_id,
1765 invhist_transfer_item_itemsite_id : r.itemsite_id,
1766 item_number : r.itemsite_item_id_item_number,
1767 item_descrip1 : r.itemsite_item_id_item_descrip1,
1768 invhist_transfer_item_qty : r.itemsite_qty,
1770 avail_at_location : '',
1771 invhist_transfer_item_transfer_id : tid,
1772 invhist_transfer_item_unit_price : r.unit_price,
1773 invhist_transfer_item_unit_price_default : r.unit_price,
1775 _this.grid.ds.insert(rn++, nr);
1779 Pman.Dialog.Image.show(
1781 _url : baseURL + '/Xtuple/Import/Transfer'
1786 Roo.each(r.items, addRow);
1788 if (typeof(r.Date) !='undefined') {
1789 _this.form.findField('invhist_transfer_transdate').setValue( Date.parseDate((r.Date) ? r.Date : (new Date()).format('Y-m-d'), "Y-m-d"));
1791 if (typeof(r.ArrivalDate) !='undefined') {
1792 _this.form.findField('invhist_transfer_arrivaldate').setValue(Date.parseDate((r.ArrivalDate) ? r.ArrivalDate : (new Date()).format('Y-m-d'), "Y-m-d"));
1794 if(r.invhist_transfer_from){
1795 _this.fromLocation.setValue(r.invhist_transfer_from);
1796 _this.fromLocation.el.dom.value = r.invhist_transfer_from_location_name;
1798 if(r.invhist_transfer_to){
1799 _this.toLocation.setValue(r.invhist_transfer_to);
1800 _this.toLocation.el.dom.value = r.invhist_transfer_to_location_name;
1804 _this.toLocation._is_internalcompany = true;
1806 _this.grid.setColumns();
\r
1810 render : function (_self)
1812 _this.uploadBtn = _self;
1815 text : "Upload (Excel)"
1821 click : function (_self, e)
1825 url : baseURL + '/Xtuple/Roo/invhist_transfer',
1829 _roo_office : _this.form.findField('_roo_office').getValue(),
1830 _download : _this.data.invhist_transfer_id
1839 text : "Download (Excel)"
1845 click : function (_self, e)
1847 _this.grid.stopEditing();
1848 if (_this.data.invhist_transfer_posted || _this.data.invhist_transfer_void) {
1849 _this.dialog.hide();
1853 if (_this.data.createFromRev) {
1854 Roo.MessageBox.alert("Warning", "A draft item reciept has been created - please void it if it is not needed");
1855 _this.dialog.hide();
1861 Roo.MessageBox.confirm("Confirm", "Are you sure want to cancel, all changes will be lost", function(r) {
1866 _this.dialog.hide();
1880 click : function (_self, e)
1883 _this.grid.stopEditing();
1886 _this.grid.ds.each(function (r) {
1887 var missingqty = r.data.invhist_transfer_item_qty < 1;
1888 var missingsku = r.data.invhist_transfer_item_itemsite_id < 1;
1889 if (missingsku && missingqty) {
1895 err = "Missing Quantity on line : " + r.data.invhist_transfer_item_line;
1898 err = "Missing SKU on line : " + r.data.invhist_transfer_item_line;
1901 id: r.data.invhist_transfer_item_id,
1902 itemsite_id : r.data.invhist_transfer_item_itemsite_id,
1903 line: r.data.invhist_transfer_item_line,
1904 qty: r.data.invhist_transfer_item_qty,
1905 price : r.data.invhist_transfer_item_unit_price
1910 Roo.MessageBox.alert("Error", err);
1914 Roo.MessageBox.alert("Error", "Nothing listed to transfer");
1917 _this.form.findField('transfer_items').setValue( Roo.encode(ar));
1919 var arrivaldate = _this.form.findField('invhist_transfer_arrivaldate').getValue();
1920 var transferprice = _this.form.findField('invhist_transfer_price').getValue();
1922 if(_this.toLocation._is_internalcompany && !arrivaldate){
1923 Roo.MessageBox.alert("Error", "Arrival date must be filled in");
1926 if(_this.toLocation._is_internalcompany && !transferprice.length){
1927 Roo.MessageBox.alert("Error", "For inter company transfer a price must be set");
1931 _this.form.findField('invhist_transfer_arrivaldate').setValue(_this.form.findField('invhist_transfer_transdate').getValue());
1933 _this.form.doAction("submit");
1939 render : function (_self)
1941 _this.saveBtn = _self;