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;
425 displayField : 'location_descrip',
427 emptyText : "Select location",
428 fieldLabel : 'To Location',
429 forceSelection : true,
430 hiddenName : 'invhist_transfer_to',
432 loadingText : "Searching...",
434 name : 'invhist_transfer_to_location_descrip',
436 qtip : "Select location",
437 queryParam : 'query[location_name]',
438 selectOnFocus : true,
439 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>',
440 triggerAction : 'all',
441 valueField : 'location_id',
447 beforeload : function (_self, o){
448 o.params = o.params || {};
449 o.params.location_restrict = 0;
450 o.params._with_internalcompany = 1;
455 sortInfo : { direction : 'ASC', field: 'location_name' },
460 url : baseURL + '/Roo/location.php'
467 totalProperty : 'total',
468 fields : [{"name":"id","type":"int"},{"name":"location_name","type":"string"}]
479 style : 'margin-left: 10px; float: left;',
486 legend : "Transfer Delivery Note Reference",
487 style : 'width: 260px',
492 fieldLabel : 'invhist_transfer_delivery_note',
493 name : 'invhist_transfer_delivery_note',
502 legend : "Transfer Description",
503 style : 'width: 260px',
508 fieldLabel : 'invhist_transfer_descrip',
509 name : 'invhist_transfer_descrip',
522 displayField : 'desc',
524 fieldLabel : 'Transfer Price',
525 hiddenName : 'invhist_transfer_price',
528 name : 'invhist_transfer_price_desc',
529 triggerAction : 'all',
534 xtype: 'SimpleStore',
537 [ 'PRICELIST', "At Transfer Price"],
538 [ 'LASTPLUS' , "Last Purchase +10% + 15% or stdcost +15%"],
539 [ 'STDCOST' , "stdcost - for old transfers only%"]
542 fields : [ 'code', 'desc']
552 name : 'transfer_items'
562 name : 'invhist_transfer_id'
572 activate : function() {
575 _this.grid.ds.load({});
582 tableName : 'invhist_transfer_item',
583 title : "invhist_transfer_item",
591 //_this.dialog = Pman.Dialog.FILL_IN
592 if (_this.panel.active) {
596 rowdblclick : function (_self, rowIndex, e)
598 if (!_this.dialog) return;
599 _this.dialog.show( this.getDataSource().getAt(rowIndex), function() {
600 _this.grid.footer.onClick('first');
603 beforeedit : function (e)
605 if(_this.data.invhist_transfer_posted){
606 Roo.MessageBox.alert('Error', 'This transfer has been posted');
609 if(_this.data.invhist_transfer_void){
610 Roo.MessageBox.alert('Error', 'This transfer has been voided');
614 if(e.field == 'invhist_transfer_item_unit_price' && (!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length) && !_this.toLocation._is_internalcompany){
615 Roo.MessageBox.alert('Error', 'Not a inter-comany transfer');
623 autoExpandColumn : 'item_descrip1',
626 setColumns : function() {
627 var cm = _this.grid.getColumnModel();
630 return cm.getIndexByDataIndex(str);
633 if((!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length) && !_this.toLocation._is_internalcompany){
634 cm.setHidden(cid('invhist_transfer_item_unit_price'), true);
635 cm.setHidden(cid('invhist_transfer_item_unit_price_default'), true);
639 cm.setHidden(cid('invhist_transfer_item_unit_price'), false);
640 cm.setHidden(cid('invhist_transfer_item_unit_price_default'), false);
643 xtype: 'CellSelectionModel',
646 tabend : function (_self)
648 _this.addItemBtn.fireEvent('click', _this.addItemBtn);
656 beforeload : function (_self, o)
659 o.params = o.params || {};
664 o.params.invhist_transfer_item_invhist_transfer_id = _this.form.findField('invhist_transfer_id').getValue() * 1;
666 if ( !o.params.invhist_transfer_item_invhist_transfer_id) {
667 _this.grid.ds.removeAll();
671 o.params['query[at_location]'] = _this.form.findField('invhist_transfer_from').getValue();
672 o.params.limit = 999;
673 o.params._roo_office = _this.form.findField('_roo_office').getValue();
675 _this.grid.setColumns();
677 if(!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length){
681 o.params._inter_transfer = 1;
688 sortInfo : { field : 'invhist_transfer_item_line', direction: 'ASC' },
694 url : baseURL + '/Xtuple/Roo/invhist_transfer_item.php'
701 totalProperty : 'total',
704 'name': 'invhist_transfer_item_id',
708 'name': 'invhist_transfer_item_invhist_transfer_id',
712 'name': 'invhist_transfer_item_itemsite_id',
716 'name': 'invhist_transfer_item_qty',
720 'name': 'invhist_transfer_item_line',
724 'name': 'invhist_transfer_invhist_id',
747 if (_this.data.invhist_transfer_posted) {
748 Roo.MessageBox.alert("Error", "Transfer has been posted, void it first");
753 var grid = _this.grid;
756 _this.grid.ds.each(function(r) {
757 last = r.data.invhist_transfer_item_line;
762 var nr = _this.grid.ds.reader.newRow({
763 invhist_transfer_item_line : last,
766 invhist_transfer_item_qty : 0,
768 invhist_transfer_item_transfer_id : _this.form.findField('invhist_transfer_id').getValue()
772 grid.ds.insert(grid.ds.getCount(), nr);
773 grid.startEditing(grid.ds.getCount()-1, 1); // type..
775 render : function (_self)
777 _this.addItemBtn = _self;
780 cls : 'x-btn-text-icon',
782 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
787 cls : 'x-btn-text-icon',
788 text : "Fill based on Stock",
789 icon : Roo.rootURL + 'images/default/dd/drop-add.gif',
800 var rn = _this.grid.ds.getCount();
801 var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
802 var addRow = function(r) {
804 if (r.itemsite_qty * 1 < 1) {
808 var nr = _this.grid.ds.reader.newRow({
809 invhist_transfer_item_line : rn + 1,
810 item_id : r.itemsite_item_id,
811 invhist_transfer_item_itemsite_id : r.itemsite_id,
812 item_number : r.itemsite_item_id_item_number,
813 item_descrip1 : r.itemsite_item_id_item_descrip1,
814 invhist_transfer_item_qty : r.itemsite_qty,
816 invhist_transfer_item_transfer_id : tid
818 _this.grid.ds.insert(rn++, nr);
822 var loc = _this.form.findField('invhist_transfer_from').getValue()*1;
823 var dt = _this.form.findField('invhist_transfer_transdate').getValue().format('Y-m-d');
825 _this.grid.stopEditing();
828 url : baseURL + '/Roo/itemsite',
829 mask : 'Fetching stock',
832 limit : 2000, // alot!
833 _with_stock_and_value : 1,
837 'sort' : 'itemsite_item_id_item_number',
840 success : function(r) {
842 Roo.each(r.data, addRow);
856 render : function (_self)
858 _this.addItemBtn = _self;
861 cls : 'x-btn-text-icon',
862 text : "Transfer all from Location",
863 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
871 var rn = _this.grid.ds.getCount();
872 var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
875 var addRow = function(r) {
877 if (r.itemsite_qty * 1 > -1) {
881 var nr = _this.grid.ds.reader.newRow({
882 invhist_transfer_item_line : rn + 1,
883 item_id : r.itemsite_item_id,
884 invhist_transfer_item_itemsite_id : r.itemsite_id,
885 item_number : r.itemsite_item_id_item_number,
886 item_descrip1 : r.itemsite_item_id_item_descrip1,
887 invhist_transfer_item_qty : Math.abs(r.itemsite_qty),
889 invhist_transfer_item_transfer_id : tid
891 _this.grid.ds.insert(rn++, nr);
895 var loc = _this.form.findField('invhist_transfer_to').getValue()*1;
896 var dt = _this.form.findField('invhist_transfer_transdate').getValue().format('Y-m-d');
898 _this.grid.stopEditing();
901 url : baseURL + '/Roo/itemsite',
902 mask : 'Fetching stock',
905 limit : 2000, // alot!
906 _with_stock_and_value : 1,
910 'sort' : 'itemsite_item_id_item_number',
913 success : function(r) {
915 Roo.each(r.data, addRow);
929 render : function (_self)
931 _this.addItemBtn = _self;
934 cls : 'x-btn-text-icon',
935 text : "Fill negative at Target",
936 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
951 _this.grid.stopEditing();
953 if (_this.data.invhist_transfer_posted) {
954 Roo.MessageBox.alert("Error", "Transfer has been posted, void it first");
958 var rc= _this.grid.selModel.getSelectedCell();
960 Roo.MessageBox.alert("Error", "Select a item to delete");
964 var rec = _this.grid.ds.getAt(rc[0]);
965 _this.grid.ds.remove(rec);
968 rec = _this.grid.ds.getAt(rc[0]);
970 _this.grid.selModel.select(rc[0], 2);
976 } // nothing left to select..
977 _this.grid.selModel.select(rc[0]-1, 2);
984 cls : 'x-btn-text-icon',
986 icon : rootURL + '/Pman/templates/images/trash.gif'
992 xtype: 'ColumnModel',
994 dataIndex : 'invhist_transfer_item_line',
997 renderer : function(v) { return String.format('{0}', v); }
1000 xtype: 'ColumnModel',
1002 dataIndex : 'item_id',
1003 header : 'Item Code',
1005 renderer : function(v,x,r) {
1006 return String.format('{0}', r.data.item_number);
1009 xtype: 'GridEditor',
1015 beforeselect : function (combo, record, index)
1017 // set _this.data values ..
1018 var ar = _this.grid.activeEditor.record;
1019 //Roo.log('beforeselect');
1021 // Roo.log('beforeselect-cb');
1022 ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);
1023 // ar.set('coitem_price', record.data.item_listprice);
1024 // ar.set('coitem_custprice', record.data.item_price);
1025 ar.set('invhist_transfer_item_itemsite_id', record.data.itemsite_id);
1026 ar.set('item_number', record.data.itemsite_item_id_item_number);
1027 ar.set('avail_at_location', record.data.avail_at_location);
1034 displayField : 'itemsite_item_id_item_number',
1036 emptyText : "Select item",
1037 forceSelection : true,
1038 hiddenName : 'itemsite_item_id_item_number',
1040 loadingText : "Searching...",
1042 name : 'item_number',
1044 qtip : "Select item",
1045 queryParam : 'query[number]',
1046 selectOnFocus : true,
1047 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>',
1048 triggerAction : 'all',
1049 valueField : 'item_number',
1054 beforeload : function (_self, o){
1055 o.params = o.params || {};
1057 o.params['query[at_location]'] = _this.form.findField('invhist_transfer_from').getValue();
1062 sortInfo : { direction : 'ASC', field: 'itemsite_item_id_item_number' },
1067 url : baseURL + '/Roo/itemsite.php'
1070 xtype: 'JsonReader',
1074 totalProperty : 'total',
1075 fields : [{"name":"item_id","type":"int"},"item_number"]
1082 xtype: 'ColumnModel',
1084 dataIndex : 'item_descrip1',
1085 header : 'Description',
1087 renderer : function(v,x,r) { return String.format('{0}', v); }
1090 xtype: 'ColumnModel',
1093 dataIndex : 'avail_at_location',
1094 header : 'Cur. Avail',
1096 renderer : function(v,x,r) { return String.format('{0}', v); }
1099 xtype: 'ColumnModel',
1102 dataIndex : 'invhist_transfer_item_qty',
1105 renderer : function(v,x,r) {
1106 var vv = parseInt(v);
1107 //var aq = parseInt(r.data.avail_qty);
1108 //aq = isNaN(aq) ? 0 : aq;
1113 return String.format('{0}', vv.toFixed(0));
1117 xtype: 'GridEditor',
1120 xtype: 'NumberField',
1122 allowDecimals : false,
1123 decimalPrecision : 0,
1125 style : 'text-align:right'
1130 xtype: 'ColumnModel',
1133 dataIndex : 'invhist_transfer_item_unit_price',
1134 header : 'Unit Price',
1137 renderer : function(v,x,r)
1142 var color = '#666'; // orignal color
1144 if(r.data.invhist_transfer_item_unit_price_default != v){
1148 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));
1151 xtype: 'GridEditor',
1154 xtype: 'NumberField',
1157 allowDecimals : true,
1158 decimalPrecision : 2,
1159 style : 'text-align:right'
1164 xtype: 'ColumnModel',
1167 dataIndex : 'invhist_transfer_item_unit_price_default',
1168 header : 'Default Price',
1171 renderer : function(v,x,r)
1176 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));
1184 xtype: 'LayoutRegion',
1189 xtype: 'LayoutRegion',
1198 activate : function() {
1199 _this.ipanel = this;
1201 _this.igrid.footer.onClick('first');
1206 fitContainer : true,
1209 tableName : 'Images',
1210 title : "Reference Files",
1215 render : function() {
1217 //_this.dialog = Pman.Dialog.FILL_IN
1218 //if (_this.panel.active) {
1219 // this.footer.onClick('first');
1222 rowdblclick : function (_self, rowIndex, e)
1225 var s = _self.getDataSource().getAt(rowIndex);
1227 url : baseURL + '/Images/' + s.data.id
1233 autoExpandColumn : 'id',
1239 beforeload : function (_self, o)
1241 //o.params.ontable = 'Companies';
1243 // o.params.imgtype = 'PressRelease';
1245 o.params = o.params || {};
1246 o.params.onid = _this.form.findField('invhist_transfer_id').getValue();
1247 o.params.ontable = 'invhist_transfer';
1251 load : function (_self, records, options)
1253 _this.panel.el.unmask();
1257 sortInfo : { field: 'created' , direction: 'DESC' },
1259 xtype: 'JsonReader',
1263 totalProperty : 'total',
1298 'name': 'displayorder',
1306 'name': 'parent_image_id',
1312 'dateFormat' : 'Y-m-d H:i:s'
1336 url : baseURL + '/Roo/Images.php'
1340 xtype: 'PagingToolbar',
1344 displayMsg : "Displaying Images {0} - {1} of {2}",
1345 emptyMsg : "No Images found"
1358 //var sel = Pman.Tab.PressReleaseCompanies ? Pman.Tab.PressReleaseCompanies.grid.getSelectionModel().getSelected() : false
1360 Pman.Dialog.Image.show({
1362 ontable: 'invhist_transfer',
1363 onid: _this.form.findField('invhist_transfer_id').getValue(),
1366 if (!data) { return; }
1367 _this.igrid.footer.onClick('first');
1372 cls : 'x-btn-text-icon',
1374 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
1382 Pman.genericDelete(_this, 'Images');
1385 cls : 'x-btn-text-icon',
1387 icon : rootURL + '/Pman/templates/images/trash.gif'
1393 xtype: 'ColumnModel',
1395 dataIndex : 'created',
1399 renderer : function(v,x,r) {
1400 return String.format('{0}<br/><i>{1}</i><br/>{2}<br/><i>{3}x{4}</i>',
1401 v.format('d/M/Y'), r.data.mimetype, r.data.filename,
1402 r.data.width, r.data.height
1407 xtype: 'ColumnModel',
1412 renderer : function(v,x,r) { return String.format('<img src="{0}/Images/Thumb/100/{1}/{2}" height="100">', baseURL, v, r.data.filename); }
1421 activate : function() {
1422 _this.hpanel = this;
1424 _this.hgrid.footer.onClick('first');
1429 fitContainer : true,
1432 tableName : 'events',
1441 if (_this.hpanel.active) {
1442 this.footer.onClick('first');
1446 autoExpandColumn : 'remarks',
1452 beforeload : function (_self, options)
1454 options.params = options.params || {};
1456 options.params.on_table = 'invhist_transfer';
1457 options.params.on_id = _this.form.findField('invhist_transfer_id').getValue();
1461 sortInfo : { field : 'event_when', direction: 'DESC' },
1466 url : baseURL + '/Roo/events.php'
1469 xtype: 'JsonReader',
1473 totalProperty : 'total',
1476 'name': 'event_when',
1488 'name': 'person_id_name',
1499 xtype: 'PagingToolbar',
1502 displayMsg : "Displaying events{0} - {1} of {2}",
1503 emptyMsg : "No Events found",
1508 xtype: 'ColumnModel',
1510 dataIndex : 'event_when',
1513 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y H:i:s') : ''); }
1516 xtype: 'ColumnModel',
1518 dataIndex : 'action',
1521 renderer : function(v,x,r) { return String.format('{0} - {1}', v, r.data.on_table); }
1524 xtype: 'ColumnModel',
1526 dataIndex : 'ipaddr',
1527 header : 'IP Address',
1529 renderer : function(v) { return String.format('{0}', v); }
1532 xtype: 'ColumnModel',
1534 dataIndex : 'person_id_name',
1537 renderer : function(v) { return String.format('{0}', v); }
1540 xtype: 'ColumnModel',
1542 dataIndex : 'remarks',
1545 renderer : function(v) { return String.format('{0}', v); }
1554 activate : function() {
1555 _this.tpanel = this;
1557 _this.tgrid.ds.load({});
1562 fitContainer : true,
1565 tableName : 'invhist_transfer_item',
1566 title : "Transfered",
1574 if (_this.tpanel.active) {
1579 autoExpandColumn : 'item_number',
1591 var id = _this.form.findField('invhist_transfer_id').getValue();
1599 _this.tgrid.ds.each(function (r) {
1600 if (_this.data.invhist_transfer_void && r.data.transfered_qty * 1 == 0 && r.data.expected_qty * 1 == 0) {
1603 if(!_this.data.invhist_transfer_void && r.data.transfered_qty * 1 - r.data.expected_qty * 1 == 0){
1611 Roo.MessageBox.alert("Notice", "Nothing Wrong!");
1616 url : baseURL + '/Roo/invhist_transfer',
1619 timeout : 1200000, //20 minutes...! - big xfer should be 10mins.
1621 invhist_transfer_id : id,
1624 success : function ()
1626 _this.tgrid.ds.load({});
1634 cls : 'x-btn-text-icon',
1635 text : "Fix Transfer",
1636 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1644 beforeload : function (_self, options)
1646 options.params = options.params || {};
1647 options.params.limit = 9999;
1648 if(_this.data.cust_to_internalcompany.length){
1653 var id = _this.form.findField('invhist_transfer_id').getValue();
1660 options.params.invhist_transfer_item_invhist_transfer_id = id;
1662 options.params._with_expected = 1;
1667 sortInfo : { field : 'invhist_transfer_item_line', direction: 'ASC' },
1672 url : baseURL + '/Roo/invhist_transfer_item.php'
1675 xtype: 'JsonReader',
1677 id : 'invhist_transfer_item_id',
1679 totalProperty : 'total',
1682 'name': 'invhist_transfer_item_id',
1686 'name': 'invhist_transfer_item_qty',
1690 'name': 'invhist_transfer_item_line',
1698 xtype: 'ColumnModel',
1700 dataIndex : 'item_number',
1703 renderer : function(v) { return String.format('{0}', v ? v : ''); }
1706 xtype: 'ColumnModel',
1708 dataIndex : 'transfered_qty',
1709 header : 'Transfered',
1711 renderer : function(v,x,r)
1713 if(v && r.data.transfered_qty * 1 != r.data.expected_qty * 1){
1714 return String.format('<span style="color:red">{0}</span>', v);
1716 return String.format('{0}', v ? v : 0);
1720 xtype: 'ColumnModel',
1722 dataIndex : 'expected_qty',
1723 header : 'Expected',
1725 renderer : function(v,x,r)
1728 if(v && r.data.transfered_qty * 1 != r.data.expected_qty * 1){
1729 return String.format('<span style="color:red">{0}</span>', v);
1731 return String.format('{0}', v ? v : 0);
1739 xtype: 'LayoutRegion',
1748 click : function (_self, e)
1751 var rn = _this.grid.ds.getCount();
1752 var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
1753 var addRow = function(r) {
1754 if (r.itemsite_qty * 1 < 1) {
1758 var nr = _this.grid.ds.reader.newRow({
1759 invhist_transfer_item_line : rn + 1,
1760 item_id : r.itemsite_item_id,
1761 invhist_transfer_item_itemsite_id : r.itemsite_id,
1762 item_number : r.itemsite_item_id_item_number,
1763 item_descrip1 : r.itemsite_item_id_item_descrip1,
1764 invhist_transfer_item_qty : r.itemsite_qty,
1766 avail_at_location : '',
1767 invhist_transfer_item_transfer_id : tid,
1768 invhist_transfer_item_unit_price : r.unit_price,
1769 invhist_transfer_item_unit_price_default : r.unit_price,
1771 _this.grid.ds.insert(rn++, nr);
1775 Pman.Dialog.Image.show(
1777 _url : baseURL + '/Xtuple/Import/Transfer'
1782 Roo.each(r.items, addRow);
1784 if (typeof(r.Date) !='undefined') {
1785 _this.form.findField('invhist_transfer_transdate').setValue( Date.parseDate((r.Date) ? r.Date : (new Date()).format('Y-m-d'), "Y-m-d"));
1787 if (typeof(r.ArrivalDate) !='undefined') {
1788 _this.form.findField('invhist_transfer_arrivaldate').setValue(Date.parseDate((r.ArrivalDate) ? r.ArrivalDate : (new Date()).format('Y-m-d'), "Y-m-d"));
1790 if(r.invhist_transfer_from){
1791 _this.fromLocation.setValue(r.invhist_transfer_from);
1792 _this.fromLocation.el.dom.value = r.invhist_transfer_from_location_name;
1794 if(r.invhist_transfer_to){
1795 _this.toLocation.setValue(r.invhist_transfer_to);
1796 _this.toLocation.el.dom.value = r.invhist_transfer_to_location_name;
1800 _this.toLocation._is_internalcompany = true;
1802 _this.grid.setColumns();
\r
1806 render : function (_self)
1808 _this.uploadBtn = _self;
1811 text : "Upload (Excel)"
1817 click : function (_self, e)
1821 url : baseURL + '/Xtuple/Roo/invhist_transfer',
1824 _roo_office : _this.form.findField('_roo_office').getValue(),
1825 _download : _this.data.invhist_transfer_id
1834 text : "Download (Excel)"
1840 click : function (_self, e)
1842 _this.grid.stopEditing();
1843 if (_this.data.invhist_transfer_posted || _this.data.invhist_transfer_void) {
1844 _this.dialog.hide();
1848 if (_this.data.createFromRev) {
1849 Roo.MessageBox.alert("Warning", "A draft item reciept has been created - please void it if it is not needed");
1850 _this.dialog.hide();
1856 Roo.MessageBox.confirm("Confirm", "Are you sure want to cancel, all changes will be lost", function(r) {
1861 _this.dialog.hide();
1875 click : function (_self, e)
1878 _this.grid.stopEditing();
1881 _this.grid.ds.each(function (r) {
1882 var missingqty = r.data.invhist_transfer_item_qty < 1;
1883 var missingsku = r.data.invhist_transfer_item_itemsite_id < 1;
1884 if (missingsku && missingqty) {
1890 err = "Missing Quantity on line : " + r.data.invhist_transfer_item_line;
1893 err = "Missing SKU on line : " + r.data.invhist_transfer_item_line;
1896 id: r.data.invhist_transfer_item_id,
1897 itemsite_id : r.data.invhist_transfer_item_itemsite_id,
1898 line: r.data.invhist_transfer_item_line,
1899 qty: r.data.invhist_transfer_item_qty,
1900 price : r.data.invhist_transfer_item_unit_price
1905 Roo.MessageBox.alert("Error", err);
1909 Roo.MessageBox.alert("Error", "Nothing listed to transfer");
1912 _this.form.findField('transfer_items').setValue( Roo.encode(ar));
1914 var arrivaldate = _this.form.findField('invhist_transfer_arrivaldate').getValue();
1915 var transferprice = _this.form.findField('invhist_transfer_price').getValue();
1917 if(_this.toLocation._is_internalcompany && !arrivaldate){
1918 Roo.MessageBox.alert("Error", "Arrival date must be filled in");
1921 if(_this.toLocation._is_internalcompany && !transferprice.length){
1922 Roo.MessageBox.alert("Error", "For inter company transfer a price must be set");
1926 _this.form.findField('invhist_transfer_arrivaldate').setValue(_this.form.findField('invhist_transfer_transdate').getValue());
1928 _this.form.doAction("submit");
1934 render : function (_self)
1936 _this.saveBtn = _self;