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',
521 actionMode : 'fieldEl',
523 displayField : 'desc',
525 fieldLabel : 'Transfer Price',
526 hiddenName : 'invhist_transfer_price',
529 name : 'invhist_transfer_price_desc',
530 triggerAction : 'all',
535 xtype: 'SimpleStore',
538 [ 'PRICELIST', "At Transfer Price"],
539 [ 'LASTPLUS' , "Last Purchase +10% + 15% or stdcost +15%"],
540 [ 'STDCOST' , "stdcost - for old transfers only%"]
543 fields : [ 'code', 'desc']
553 name : 'transfer_items'
563 name : 'invhist_transfer_id'
573 activate : function() {
576 _this.grid.ds.load({});
583 tableName : 'invhist_transfer_item',
584 title : "invhist_transfer_item",
592 //_this.dialog = Pman.Dialog.FILL_IN
593 if (_this.panel.active) {
597 rowdblclick : function (_self, rowIndex, e)
599 if (!_this.dialog) return;
600 _this.dialog.show( this.getDataSource().getAt(rowIndex), function() {
601 _this.grid.footer.onClick('first');
604 beforeedit : function (e)
606 if(_this.data.invhist_transfer_posted){
607 Roo.MessageBox.alert('Error', 'This transfer has been posted');
610 if(_this.data.invhist_transfer_void){
611 Roo.MessageBox.alert('Error', 'This transfer has been voided');
615 if(e.field == 'invhist_transfer_item_unit_price' && (!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length) && !_this.toLocation._is_internalcompany){
616 Roo.MessageBox.alert('Error', 'Not a inter-comany transfer');
624 autoExpandColumn : 'item_descrip1',
627 setColumns : function() {
628 var cm = _this.grid.getColumnModel();
631 return cm.getIndexByDataIndex(str);
634 if((!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length) && !_this.toLocation._is_internalcompany){
635 cm.setHidden(cid('invhist_transfer_item_unit_price'), true);
636 cm.setHidden(cid('invhist_transfer_item_unit_price_default'), true);
637 _this.form.findField('invhist_transfer_price').hide();
641 cm.setHidden(cid('invhist_transfer_item_unit_price'), false);
642 cm.setHidden(cid('invhist_transfer_item_unit_price_default'), false);
643 _this.form.findField('invhist_transfer_price').show();
646 xtype: 'CellSelectionModel',
649 tabend : function (_self)
651 _this.addItemBtn.fireEvent('click', _this.addItemBtn);
659 beforeload : function (_self, o)
662 o.params = o.params || {};
667 o.params.invhist_transfer_item_invhist_transfer_id = _this.form.findField('invhist_transfer_id').getValue() * 1;
669 if ( !o.params.invhist_transfer_item_invhist_transfer_id) {
670 _this.grid.ds.removeAll();
674 o.params['query[at_location]'] = _this.form.findField('invhist_transfer_from').getValue();
675 o.params.limit = 999;
676 o.params._roo_office = _this.form.findField('_roo_office').getValue();
678 _this.grid.setColumns();
680 if(!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length){
684 o.params._inter_transfer = 1;
691 sortInfo : { field : 'invhist_transfer_item_line', direction: 'ASC' },
697 url : baseURL + '/Xtuple/Roo/invhist_transfer_item.php'
704 totalProperty : 'total',
707 'name': 'invhist_transfer_item_id',
711 'name': 'invhist_transfer_item_invhist_transfer_id',
715 'name': 'invhist_transfer_item_itemsite_id',
719 'name': 'invhist_transfer_item_qty',
723 'name': 'invhist_transfer_item_line',
727 'name': 'invhist_transfer_invhist_id',
750 if (_this.data.invhist_transfer_posted) {
751 Roo.MessageBox.alert("Error", "Transfer has been posted, void it first");
756 var grid = _this.grid;
759 _this.grid.ds.each(function(r) {
760 last = r.data.invhist_transfer_item_line;
765 var nr = _this.grid.ds.reader.newRow({
766 invhist_transfer_item_line : last,
769 invhist_transfer_item_qty : 0,
771 invhist_transfer_item_transfer_id : _this.form.findField('invhist_transfer_id').getValue()
775 grid.ds.insert(grid.ds.getCount(), nr);
776 grid.startEditing(grid.ds.getCount()-1, 1); // type..
778 render : function (_self)
780 _this.addItemBtn = _self;
783 cls : 'x-btn-text-icon',
785 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
790 cls : 'x-btn-text-icon',
791 text : "Fill based on Stock",
792 icon : Roo.rootURL + 'images/default/dd/drop-add.gif',
803 var rn = _this.grid.ds.getCount();
804 var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
805 var addRow = function(r) {
807 if (r.itemsite_qty * 1 < 1) {
811 var nr = _this.grid.ds.reader.newRow({
812 invhist_transfer_item_line : rn + 1,
813 item_id : r.itemsite_item_id,
814 invhist_transfer_item_itemsite_id : r.itemsite_id,
815 item_number : r.itemsite_item_id_item_number,
816 item_descrip1 : r.itemsite_item_id_item_descrip1,
817 invhist_transfer_item_qty : r.itemsite_qty,
819 invhist_transfer_item_transfer_id : tid
821 _this.grid.ds.insert(rn++, nr);
825 var loc = _this.form.findField('invhist_transfer_from').getValue()*1;
826 var dt = _this.form.findField('invhist_transfer_transdate').getValue().format('Y-m-d');
828 _this.grid.stopEditing();
831 url : baseURL + '/Roo/itemsite',
832 mask : 'Fetching stock',
835 limit : 2000, // alot!
836 _with_stock_and_value : 1,
840 'sort' : 'itemsite_item_id_item_number',
843 success : function(r) {
845 Roo.each(r.data, addRow);
859 render : function (_self)
861 _this.addItemBtn = _self;
864 cls : 'x-btn-text-icon',
865 text : "Transfer all from Location",
866 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
874 var rn = _this.grid.ds.getCount();
875 var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
878 var addRow = function(r) {
880 if (r.itemsite_qty * 1 > -1) {
884 var nr = _this.grid.ds.reader.newRow({
885 invhist_transfer_item_line : rn + 1,
886 item_id : r.itemsite_item_id,
887 invhist_transfer_item_itemsite_id : r.itemsite_id,
888 item_number : r.itemsite_item_id_item_number,
889 item_descrip1 : r.itemsite_item_id_item_descrip1,
890 invhist_transfer_item_qty : Math.abs(r.itemsite_qty),
892 invhist_transfer_item_transfer_id : tid
894 _this.grid.ds.insert(rn++, nr);
898 var loc = _this.form.findField('invhist_transfer_to').getValue()*1;
899 var dt = _this.form.findField('invhist_transfer_transdate').getValue().format('Y-m-d');
901 _this.grid.stopEditing();
904 url : baseURL + '/Roo/itemsite',
905 mask : 'Fetching stock',
908 limit : 2000, // alot!
909 _with_stock_and_value : 1,
913 'sort' : 'itemsite_item_id_item_number',
916 success : function(r) {
918 Roo.each(r.data, addRow);
932 render : function (_self)
934 _this.addItemBtn = _self;
937 cls : 'x-btn-text-icon',
938 text : "Fill negative at Target",
939 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
954 _this.grid.stopEditing();
956 if (_this.data.invhist_transfer_posted) {
957 Roo.MessageBox.alert("Error", "Transfer has been posted, void it first");
961 var rc= _this.grid.selModel.getSelectedCell();
963 Roo.MessageBox.alert("Error", "Select a item to delete");
967 var rec = _this.grid.ds.getAt(rc[0]);
968 _this.grid.ds.remove(rec);
971 rec = _this.grid.ds.getAt(rc[0]);
973 _this.grid.selModel.select(rc[0], 2);
979 } // nothing left to select..
980 _this.grid.selModel.select(rc[0]-1, 2);
987 cls : 'x-btn-text-icon',
989 icon : rootURL + '/Pman/templates/images/trash.gif'
995 xtype: 'ColumnModel',
997 dataIndex : 'invhist_transfer_item_line',
1000 renderer : function(v) { return String.format('{0}', v); }
1003 xtype: 'ColumnModel',
1005 dataIndex : 'item_id',
1006 header : 'Item Code',
1008 renderer : function(v,x,r) {
1009 return String.format('{0}', r.data.item_number);
1012 xtype: 'GridEditor',
1018 beforeselect : function (combo, record, index)
1020 // set _this.data values ..
1021 var ar = _this.grid.activeEditor.record;
1022 //Roo.log('beforeselect');
1024 // Roo.log('beforeselect-cb');
1025 ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);
1026 // ar.set('coitem_price', record.data.item_listprice);
1027 // ar.set('coitem_custprice', record.data.item_price);
1028 ar.set('invhist_transfer_item_itemsite_id', record.data.itemsite_id);
1029 ar.set('item_number', record.data.itemsite_item_id_item_number);
1030 ar.set('avail_at_location', record.data.avail_at_location);
1037 displayField : 'itemsite_item_id_item_number',
1039 emptyText : "Select item",
1040 forceSelection : true,
1041 hiddenName : 'itemsite_item_id_item_number',
1043 loadingText : "Searching...",
1045 name : 'item_number',
1047 qtip : "Select item",
1048 queryParam : 'query[number]',
1049 selectOnFocus : true,
1050 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>',
1051 triggerAction : 'all',
1052 valueField : 'item_number',
1057 beforeload : function (_self, o){
1058 o.params = o.params || {};
1060 o.params['query[at_location]'] = _this.form.findField('invhist_transfer_from').getValue();
1065 sortInfo : { direction : 'ASC', field: 'itemsite_item_id_item_number' },
1070 url : baseURL + '/Roo/itemsite.php'
1073 xtype: 'JsonReader',
1077 totalProperty : 'total',
1078 fields : [{"name":"item_id","type":"int"},"item_number"]
1085 xtype: 'ColumnModel',
1087 dataIndex : 'item_descrip1',
1088 header : 'Description',
1090 renderer : function(v,x,r) { return String.format('{0}', v); }
1093 xtype: 'ColumnModel',
1096 dataIndex : 'avail_at_location',
1097 header : 'Cur. Avail',
1099 renderer : function(v,x,r) { return String.format('{0}', v); }
1102 xtype: 'ColumnModel',
1105 dataIndex : 'invhist_transfer_item_qty',
1108 renderer : function(v,x,r) {
1109 var vv = parseInt(v);
1110 //var aq = parseInt(r.data.avail_qty);
1111 //aq = isNaN(aq) ? 0 : aq;
1116 return String.format('{0}', vv.toFixed(0));
1120 xtype: 'GridEditor',
1123 xtype: 'NumberField',
1125 allowDecimals : false,
1126 decimalPrecision : 0,
1128 style : 'text-align:right'
1133 xtype: 'ColumnModel',
1136 dataIndex : 'invhist_transfer_item_unit_price',
1137 header : 'Unit Price',
1140 renderer : function(v,x,r)
1145 var color = '#666'; // orignal color
1147 if(r.data.invhist_transfer_item_unit_price_default != v){
1151 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));
1154 xtype: 'GridEditor',
1157 xtype: 'NumberField',
1160 allowDecimals : true,
1161 decimalPrecision : 2,
1162 style : 'text-align:right'
1167 xtype: 'ColumnModel',
1170 dataIndex : 'invhist_transfer_item_unit_price_default',
1171 header : 'Default Price',
1174 renderer : function(v,x,r)
1179 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));
1187 xtype: 'LayoutRegion',
1192 xtype: 'LayoutRegion',
1201 activate : function() {
1202 _this.ipanel = this;
1204 _this.igrid.footer.onClick('first');
1209 fitContainer : true,
1212 tableName : 'Images',
1213 title : "Reference Files",
1218 render : function() {
1220 //_this.dialog = Pman.Dialog.FILL_IN
1221 //if (_this.panel.active) {
1222 // this.footer.onClick('first');
1225 rowdblclick : function (_self, rowIndex, e)
1228 var s = _self.getDataSource().getAt(rowIndex);
1230 url : baseURL + '/Images/' + s.data.id
1236 autoExpandColumn : 'id',
1242 beforeload : function (_self, o)
1244 //o.params.ontable = 'Companies';
1246 // o.params.imgtype = 'PressRelease';
1248 o.params = o.params || {};
1249 o.params.onid = _this.form.findField('invhist_transfer_id').getValue();
1250 o.params.ontable = 'invhist_transfer';
1254 load : function (_self, records, options)
1256 _this.panel.el.unmask();
1260 sortInfo : { field: 'created' , direction: 'DESC' },
1262 xtype: 'JsonReader',
1266 totalProperty : 'total',
1301 'name': 'displayorder',
1309 'name': 'parent_image_id',
1315 'dateFormat' : 'Y-m-d H:i:s'
1339 url : baseURL + '/Roo/Images.php'
1343 xtype: 'PagingToolbar',
1347 displayMsg : "Displaying Images {0} - {1} of {2}",
1348 emptyMsg : "No Images found"
1361 //var sel = Pman.Tab.PressReleaseCompanies ? Pman.Tab.PressReleaseCompanies.grid.getSelectionModel().getSelected() : false
1363 Pman.Dialog.Image.show({
1365 ontable: 'invhist_transfer',
1366 onid: _this.form.findField('invhist_transfer_id').getValue(),
1369 if (!data) { return; }
1370 _this.igrid.footer.onClick('first');
1375 cls : 'x-btn-text-icon',
1377 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
1385 Pman.genericDelete(_this, 'Images');
1388 cls : 'x-btn-text-icon',
1390 icon : rootURL + '/Pman/templates/images/trash.gif'
1396 xtype: 'ColumnModel',
1398 dataIndex : 'created',
1402 renderer : function(v,x,r) {
1403 return String.format('{0}<br/><i>{1}</i><br/>{2}<br/><i>{3}x{4}</i>',
1404 v.format('d/M/Y'), r.data.mimetype, r.data.filename,
1405 r.data.width, r.data.height
1410 xtype: 'ColumnModel',
1415 renderer : function(v,x,r) { return String.format('<img src="{0}/Images/Thumb/100/{1}/{2}" height="100">', baseURL, v, r.data.filename); }
1424 activate : function() {
1425 _this.hpanel = this;
1427 _this.hgrid.footer.onClick('first');
1432 fitContainer : true,
1435 tableName : 'events',
1444 if (_this.hpanel.active) {
1445 this.footer.onClick('first');
1449 autoExpandColumn : 'remarks',
1455 beforeload : function (_self, options)
1457 options.params = options.params || {};
1459 options.params.on_table = 'invhist_transfer';
1460 options.params.on_id = _this.form.findField('invhist_transfer_id').getValue();
1464 sortInfo : { field : 'event_when', direction: 'DESC' },
1469 url : baseURL + '/Roo/events.php'
1472 xtype: 'JsonReader',
1476 totalProperty : 'total',
1479 'name': 'event_when',
1491 'name': 'person_id_name',
1502 xtype: 'PagingToolbar',
1505 displayMsg : "Displaying events{0} - {1} of {2}",
1506 emptyMsg : "No Events found",
1511 xtype: 'ColumnModel',
1513 dataIndex : 'event_when',
1516 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y H:i:s') : ''); }
1519 xtype: 'ColumnModel',
1521 dataIndex : 'action',
1524 renderer : function(v,x,r) { return String.format('{0} - {1}', v, r.data.on_table); }
1527 xtype: 'ColumnModel',
1529 dataIndex : 'ipaddr',
1530 header : 'IP Address',
1532 renderer : function(v) { return String.format('{0}', v); }
1535 xtype: 'ColumnModel',
1537 dataIndex : 'person_id_name',
1540 renderer : function(v) { return String.format('{0}', v); }
1543 xtype: 'ColumnModel',
1545 dataIndex : 'remarks',
1548 renderer : function(v) { return String.format('{0}', v); }
1557 activate : function() {
1558 _this.tpanel = this;
1560 _this.tgrid.ds.load({});
1565 fitContainer : true,
1568 tableName : 'invhist_transfer_item',
1569 title : "Transfered",
1577 if (_this.tpanel.active) {
1582 autoExpandColumn : 'item_number',
1594 var id = _this.form.findField('invhist_transfer_id').getValue();
1602 _this.tgrid.ds.each(function (r) {
1603 if (_this.data.invhist_transfer_void && r.data.transfered_qty * 1 == 0 && r.data.expected_qty * 1 == 0) {
1606 if(!_this.data.invhist_transfer_void && r.data.transfered_qty * 1 - r.data.expected_qty * 1 == 0){
1614 Roo.MessageBox.alert("Notice", "Nothing Wrong!");
1619 url : baseURL + '/Roo/invhist_transfer',
1622 timeout : 1200000, //20 minutes...! - big xfer should be 10mins.
1624 invhist_transfer_id : id,
1627 success : function ()
1629 _this.tgrid.ds.load({});
1637 cls : 'x-btn-text-icon',
1638 text : "Fix Transfer",
1639 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1647 beforeload : function (_self, options)
1649 options.params = options.params || {};
1650 options.params.limit = 9999;
1651 if(_this.data.cust_to_internalcompany.length){
1656 var id = _this.form.findField('invhist_transfer_id').getValue();
1663 options.params.invhist_transfer_item_invhist_transfer_id = id;
1665 options.params._with_expected = 1;
1670 sortInfo : { field : 'invhist_transfer_item_line', direction: 'ASC' },
1675 url : baseURL + '/Roo/invhist_transfer_item.php'
1678 xtype: 'JsonReader',
1680 id : 'invhist_transfer_item_id',
1682 totalProperty : 'total',
1685 'name': 'invhist_transfer_item_id',
1689 'name': 'invhist_transfer_item_qty',
1693 'name': 'invhist_transfer_item_line',
1701 xtype: 'ColumnModel',
1703 dataIndex : 'item_number',
1706 renderer : function(v) { return String.format('{0}', v ? v : ''); }
1709 xtype: 'ColumnModel',
1711 dataIndex : 'transfered_qty',
1712 header : 'Transfered',
1714 renderer : function(v,x,r)
1716 if(v && r.data.transfered_qty * 1 != r.data.expected_qty * 1){
1717 return String.format('<span style="color:red">{0}</span>', v);
1719 return String.format('{0}', v ? v : 0);
1723 xtype: 'ColumnModel',
1725 dataIndex : 'expected_qty',
1726 header : 'Expected',
1728 renderer : function(v,x,r)
1731 if(v && r.data.transfered_qty * 1 != r.data.expected_qty * 1){
1732 return String.format('<span style="color:red">{0}</span>', v);
1734 return String.format('{0}', v ? v : 0);
1742 xtype: 'LayoutRegion',
1751 click : function (_self, e)
1754 var rn = _this.grid.ds.getCount();
1755 var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
1756 var addRow = function(r) {
1757 if (r.itemsite_qty * 1 < 1) {
1761 var nr = _this.grid.ds.reader.newRow({
1762 invhist_transfer_item_line : rn + 1,
1763 item_id : r.itemsite_item_id,
1764 invhist_transfer_item_itemsite_id : r.itemsite_id,
1765 item_number : r.itemsite_item_id_item_number,
1766 item_descrip1 : r.itemsite_item_id_item_descrip1,
1767 invhist_transfer_item_qty : r.itemsite_qty,
1769 avail_at_location : '',
1770 invhist_transfer_item_transfer_id : tid,
1771 invhist_transfer_item_unit_price : r.unit_price,
1772 invhist_transfer_item_unit_price_default : r.unit_price,
1774 _this.grid.ds.insert(rn++, nr);
1778 Pman.Dialog.Image.show(
1780 _url : baseURL + '/Xtuple/Import/Transfer'
1785 Roo.each(r.items, addRow);
1787 if (typeof(r.Date) !='undefined') {
1788 _this.form.findField('invhist_transfer_transdate').setValue( Date.parseDate((r.Date) ? r.Date : (new Date()).format('Y-m-d'), "Y-m-d"));
1790 if (typeof(r.ArrivalDate) !='undefined') {
1791 _this.form.findField('invhist_transfer_arrivaldate').setValue(Date.parseDate((r.ArrivalDate) ? r.ArrivalDate : (new Date()).format('Y-m-d'), "Y-m-d"));
1793 if(r.invhist_transfer_from){
1794 _this.fromLocation.setValue(r.invhist_transfer_from);
1795 _this.fromLocation.el.dom.value = r.invhist_transfer_from_location_name;
1797 if(r.invhist_transfer_to){
1798 _this.toLocation.setValue(r.invhist_transfer_to);
1799 _this.toLocation.el.dom.value = r.invhist_transfer_to_location_name;
1803 _this.toLocation._is_internalcompany = true;
1805 _this.grid.setColumns();
\r
1809 render : function (_self)
1811 _this.uploadBtn = _self;
1814 text : "Upload (Excel)"
1820 click : function (_self, e)
1824 url : baseURL + '/Xtuple/Roo/invhist_transfer',
1828 _roo_office : _this.form.findField('_roo_office').getValue(),
1829 _download : _this.data.invhist_transfer_id
1838 text : "Download (Excel)"
1844 click : function (_self, e)
1846 _this.grid.stopEditing();
1847 if (_this.data.invhist_transfer_posted || _this.data.invhist_transfer_void) {
1848 _this.dialog.hide();
1852 if (_this.data.createFromRev) {
1853 Roo.MessageBox.alert("Warning", "A draft item reciept has been created - please void it if it is not needed");
1854 _this.dialog.hide();
1860 Roo.MessageBox.confirm("Confirm", "Are you sure want to cancel, all changes will be lost", function(r) {
1865 _this.dialog.hide();
1879 click : function (_self, e)
1882 _this.grid.stopEditing();
1885 _this.grid.ds.each(function (r) {
1886 var missingqty = r.data.invhist_transfer_item_qty < 1;
1887 var missingsku = r.data.invhist_transfer_item_itemsite_id < 1;
1888 if (missingsku && missingqty) {
1894 err = "Missing Quantity on line : " + r.data.invhist_transfer_item_line;
1897 err = "Missing SKU on line : " + r.data.invhist_transfer_item_line;
1900 id: r.data.invhist_transfer_item_id,
1901 itemsite_id : r.data.invhist_transfer_item_itemsite_id,
1902 line: r.data.invhist_transfer_item_line,
1903 qty: r.data.invhist_transfer_item_qty,
1904 price : r.data.invhist_transfer_item_unit_price
1909 Roo.MessageBox.alert("Error", err);
1913 Roo.MessageBox.alert("Error", "Nothing listed to transfer");
1916 _this.form.findField('transfer_items').setValue( Roo.encode(ar));
1918 var arrivaldate = _this.form.findField('invhist_transfer_arrivaldate').getValue();
1919 var transferprice = _this.form.findField('invhist_transfer_price').getValue();
1921 if(_this.toLocation._is_internalcompany && !arrivaldate){
1922 Roo.MessageBox.alert("Error", "Arrival date must be filled in");
1925 if(_this.toLocation._is_internalcompany && !transferprice.length){
1926 Roo.MessageBox.alert("Error", "For inter company transfer a price must be set");
1930 _this.form.findField('invhist_transfer_arrivaldate').setValue(_this.form.findField('invhist_transfer_transdate').getValue());
1932 _this.form.doAction("submit");
1938 render : function (_self)
1940 _this.saveBtn = _self;