Fix #7123 - getting abra ready to test
[Pman.Xtuple] / Pman.Dialog.XtupleTransfer.js
1 //<script type="text/javascript">
2
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
4
5 Pman.Dialog.XtupleTransfer = {
6
7     dialog : false,
8     callback:  false,
9
10     show : function(data, cb)
11     {
12         if (!this.dialog) {
13             this.create();
14         }
15
16         this.callback = cb;
17         this.data = data;
18         this.dialog.show(this.data._el);
19         if (this.form) {
20            this.form.reset();
21            this.form.setValues(data);
22            this.form.fireEvent('actioncomplete', this.form,  { type: 'setdata', data: data });
23         }
24
25     },
26
27     create : function()
28     {
29         var _this = this;
30         this.dialog = Roo.factory({
31             xtype: 'LayoutDialog',
32             xns: Roo,
33             listeners : {
34                 show : function (_self)
35                 {
36                     this.layout.getRegion('center').showPanel(0);
37                 }
38             },
39             closable : false,
40             collapsible : false,
41             height : 660,
42             modal : true,
43             resizable : false,
44             title : "Edit / Create Inventory Transfer",
45             width : 800,
46             items : [
47                 {
48                     xtype: 'NestedLayoutPanel',
49                     xns: Roo,
50                     region : 'center',
51                     title : "Inventory Transfer",
52                     layout : {
53                         xtype: 'BorderLayout',
54                         xns: Roo,
55                         items : [
56                             {
57                                 xtype: 'ContentPanel',
58                                 xns: Roo,
59                                 region : 'north',
60                                 items : [
61                                     {
62                                         xtype: 'Form',
63                                         xns: Roo.form,
64                                         listeners : {
65                                             actioncomplete : function(_self,action)
66                                             {
67                                                 if (action.type == 'setdata') {
68                                                    //_this.dialog.el.mask("Loading");
69                                                    Roo.log('setdata');
70                                                    Roo.log(_this.data);       
71                                                    // reversal...
72                                                    _this.toLocation._is_internalcompany = false;
73                                                    _this.grid.setColumns();
74                                                    _this.saveBtn.show();            
75                                                    if (_this.data.createFromRev) {
76                                                         Roo.log('recvg');
77                                                         this.load({ method: 'GET', params: { '_createFromRecv' : _this.data.createFromRev }});       
78                                                         return;
79                                                    
80                                                    }
81                                                    
82                                                     if (_this.data.invhist_transfer_id) {
83                                                     
84                                                     
85                                                         var tdb = baseURL.split('/').pop().split('.').shift();
86                                                         if (tdb != _this.data._roo_office) {
87                                                             this.el.mask('Remote Transfer - Read Only');
88                                                             _this.grid.view.headerPanel.mask("");
89                                                             _this.uploadBtn.hide();
90                                                             _this.saveBtn.hide();                
91                                                         } else {
92                                                             this.el.unmask();
93                                                             _this.grid.view.headerPanel.unmask();
94                                                             _this.uploadBtn.show();
95                                                             _this.saveBtn.show();                
96                                                         }
97                                                         
98                                                     
99                                                     
100                                                         this.load({ method: 'GET', params: {
101                                                              _id : _this.data.invhist_transfer_id,
102                                                              _roo_office  : _this.data._roo_office
103                                                        }});
104                                                         return;
105                                                     } 
106                                                     _this.grid.ds.removeAll();
107                                                     _this.form.setValues({
108                                                         invhist_transfer_transdate : 
109                                                                 typeof(_this.data.invhist_transfer_transdate) == 'undefined' ? 
110                                                                         (new Date()).format('Y-m-d') :
111                                                                         _this.data.invhist_transfer_transdate
112                                                                     ,
113                                                         invhist_transfer_number : 'AUTOMATIC',
114                                                         _roo_office :  _this.data._roo_office
115                                                     });
116                                                     
117                                                     if(_this.data._createReverse){
118                                                         if(_this.grid){
119                                                             new Pman.Request({\r
120                                                                 url : baseURL + '/Roo/invhist_transfer_item',\r
121                                                                 method : 'GET',\r
122                                                                 params : {\r
123                                                                     invhist_transfer_item_invhist_transfer_id : _this.data._createReverse,\r
124                                                                     'query[at_location]' : _this.data.invhist_transfer_from,
125                                                                     _requestMeta : 1,
126                                                                     limit : 999,
127                                                                     sort : 'invhist_transfer_item_line',
128                                                                     dir : 'ASC'\r
129                                                                 },\r
130                                                                 success : function (res) \r
131                                                                 {
132                                                                     Roo.log('loadData');
133                                                                     Roo.log(res); \r
134                                                                    _this.grid.ds.loadData(res,false);\r
135                                                                 }\r
136                                                             });
137                                                         }
138                                                     }
139                                                     
140                                                     this.setValues({
141                                                         invhist_transfer_salesrep_id : Pman.Login.authUser.salesrep.salesrep_id,
142                                                         invhist_transfer_salesrep_id_salesrep_name : Pman.Login.authUser.salesrep.salesrep_name
143                                                     });
144                                                     
145                                                     
146                                                     if (typeof(_this.data._ns_autofill) != 'undefined') {
147                                                         Roo.log("autofill: " +  _this.data._ns_autofill);
148                                                     
149                                                        
150                                                         var locid = _this.data._ns_autofill === 1 ?_this.data.invhist_transfer_to  : _this.data.invhist_transfer_from; 
151                                                         // clear it so it's not done again..
152                                                         
153                                                         Roo.log("locid: " + locid);
154                                                         
155                                                          var rn = 0;
156                                                          var addRow = function(r) {
157                                                                 
158                                                                 var nsQty = r.netsuite_qty*1;
159                                                                 nsQty = nsQty < 1 ? 0 : nsQty;
160                                                                 
161                                                                 var ourQty = r.itemsite_qty *1;
162                                                                 var addQty = 0;
163                                                                 if (_this.data._ns_autofill === 1) {
164                                                                     // then we are trying to transfer from somewhere to her, to increase the qty to match
165                                                                     // so if  ourQty < nsQty
166                                                                     if (ourQty < nsQty) {
167                                                                         addQty = nsQty - ourQty;
168                                                                     }
169                                                                     
170                                                                 } else {
171                                                                     // we are trying to transfer out to get rid of stock to match..
172                                                                     if (nsQty < ourQty) {
173                                                                         addQty = ourQty - nsQty;
174                                                                     }
175                                                                 }
176                                                                 
177                                                                 if (addQty * 1 < 1) {
178                                                                 
179                                                                     return;
180                                                                 }
181                                                                 
182                                                                var nr = _this.grid.ds.reader.newRow({
183                                                                     invhist_transfer_item_line : rn + 1,
184                                                                     item_id : r.itemsite_item_id,    
185                                                                     invhist_transfer_item_itemsite_id :         r.itemsite_id,    
186                                                                     item_number : r.itemsite_item_id_item_number,
187                                                                     item_descrip1 : r.itemsite_item_id_item_descrip1,
188                                                                     invhist_transfer_item_qty : addQty,
189                                                                     item_availqty : 0 
190                                                                    // invhist_transfer_item_transfer_id : tid << we do not know this?!?
191                                                                });
192                                                                  _this.grid.ds.insert(rn++, nr); 
193                                                             
194                                                         };
195                                                         
196                                                         
197                                                         
198                                                         
199                                                         // do the request..
200                                                         new Pman.Request({
201                                                             url : baseURL + '/Roo/itemsite',
202                                                             mask: "Fetching Stock Quantities",
203                                                             method : 'GET',
204                                                             params : {
205                                                                 limit : 99999,
206                                                                 location_id : locid,
207                                                                 _as_of : _this.data.invhist_transfer_transdate,
208                                                                 _with_stock_and_value : 1,
209                                                                 _with_ns_all_stock : 1,
210                                                                 'sort' :  'itemsite_item_id_item_number',
211                                                                 'dir' : 'ASC'
212                                                             },
213                                                             success : function(res) {
214                                                                 Roo.log(res);
215                                                                  Roo.each(res.data, addRow);
216                                                                  _this.data._ns_autofill = undefined;
217                                                             }
218                                                         });
219                                                     }
220                                                     
221                                                    return;
222                                                 }
223                                                 if (action.type == 'load') {
224                                                 
225                                                     // fix date..
226                                                     this.findField('_roo_office').setValue(  _this.data._roo_office );
227                                                     Roo.log(action);
228                                                     _this.data = action.result.data;
229                                                     
230                                                     _this.toLocation._is_internalcompany = true;
231                                                     if(!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length){
232                                                         _this.toLocation._is_internalcompany = false;
233                                                     }
234                                                     
235                                                     if(_this.data.invhist_transfer_void){
236                                                         _this.saveBtn.hide();
237                                                     }
238                                                     var dt = Date.parseDate(_this.data.invhist_transfer_transdate.split(' ')[0], "Y-m-d");
239                                                     _this.form.findField('invhist_transfer_transdate').setValue(dt);
240                                                     var dt = Date.parseDate(_this.data.invhist_transfer_arrivaldate.split(' ')[0],"Y-m-d");
241                                                     _this.form.findField('invhist_transfer_arrivaldate').setValue(dt);
242                                                     _this.grid.ds.load({});
243                                                     
244                                                     return;
245                                                 }
246                                                 if (action.type =='submit') {
247                                                 
248                                                     
249                                                     _this.dialog.hide();
250                                                 
251                                                      if (_this.callback) {
252                                                         _this.callback.call(_this, _this.form.getValues());
253                                                      }
254                                                      _this.form.reset();
255                                                      return;
256                                                 }
257                                             },
258                                             rendered : function (form)
259                                             {
260                                                 _this.form= form;
261                                             }
262                                         },
263                                         method : 'POST',
264                                         style : 'margin:10px;',
265                                         url : baseURL + '/Xtuple/Roo/invhist_transfer.php',
266                                         items : [
267                                             {
268                                                 xtype: 'Column',
269                                                 xns: Roo.form,
270                                                 width : 400,
271                                                 items : [
272                                                     {
273                                                         xtype: 'FieldSet',
274                                                         xns: Roo.form,
275                                                         legend : "Transfer Details",
276                                                         style : 'width: 380px;height:220px;',
277                                                         items : [
278                                                             {
279                                                                 xtype: 'DateField',
280                                                                 xns: Roo.form,
281                                                                 allowBlank : false,
282                                                                 fieldLabel : 'Date',
283                                                                 format : 'Y-m-d',
284                                                                 name : 'invhist_transfer_transdate',
285                                                                 width : 100
286                                                             },
287                                                             {
288                                                                 xtype: 'DateField',
289                                                                 xns: Roo.form,
290                                                                 allowBlank : true,
291                                                                 fieldLabel : 'Arrival date',
292                                                                 format : 'Y-m-d',
293                                                                 name : 'invhist_transfer_arrivaldate',
294                                                                 width : 100
295                                                             },
296                                                             {
297                                                                 xtype: 'TextField',
298                                                                 xns: Roo.form,
299                                                                 fieldLabel : 'Reference #',
300                                                                 name : 'invhist_transfer_number',
301                                                                 readOnly : true,
302                                                                 width : 200
303                                                             },
304                                                             {
305                                                                 xtype: 'ComboBox',
306                                                                 xns: Roo.form,
307                                                                 allowBlank : true,
308                                                                 displayField : 'salesrep_name',
309                                                                 editable : false,
310                                                                 emptyText : "Select salesrep",
311                                                                 fieldLabel : 'Sales Rep',
312                                                                 forceSelection : true,
313                                                                 hiddenName : 'invhist_transfer_salesrep_id',
314                                                                 listWidth : 400,
315                                                                 loadingText : "Searching...",
316                                                                 minChars : 2,
317                                                                 name : 'invhist_transfer_salesrep_id_salesrep_name',
318                                                                 pageSize : 20,
319                                                                 qtip : "Select salesrep",
320                                                                 queryParam : 'query[salesrep_name]',
321                                                                 selectOnFocus : true,
322                                                                 tpl : '<div class="x-grid-cell-text x-btn button"><b>{salesrep_name}</b> </div>',
323                                                                 triggerAction : 'all',
324                                                                 typeAhead : true,
325                                                                 valueField : 'salesrep_id',
326                                                                 width : 250,
327                                                                 store : {
328                                                                     xtype: 'Store',
329                                                                     xns: Roo.data,
330                                                                     listeners : {
331                                                                         beforeload : function (_self, o){
332                                                                             o.params = o.params || {};
333                                                                             // set more here
334                                                                         }
335                                                                     },
336                                                                     remoteSort : true,
337                                                                     sortInfo : { direction : 'ASC', field: 'salesrep_name' },
338                                                                     proxy : {
339                                                                         xtype: 'HttpProxy',
340                                                                         xns: Roo.data,
341                                                                         method : 'GET',
342                                                                         url : baseURL + '/Roo/salesrep.php'
343                                                                     },
344                                                                     reader : {
345                                                                         xtype: 'JsonReader',
346                                                                         xns: Roo.data,
347                                                                         id : 'salesrep_id',
348                                                                         root : 'data',
349                                                                         totalProperty : 'total',
350                                                                         fields : [{"name":"salesrep_id","type":"int"},"salesrep_name"]
351                                                                     }
352                                                                 }
353                                                             },
354                                                             {
355                                                                 xtype: 'ComboBox',
356                                                                 xns: Roo.form,
357                                                                 listeners : {
358                                                                     render : function (_self)
359                                                                     {
360                                                                         _this.fromLocation = _self;
361                                                                     }
362                                                                 },
363                                                                 allowBlank : false,
364                                                                 displayField : 'location_descrip',
365                                                                 editable : true,
366                                                                 emptyText : "Select location",
367                                                                 fieldLabel : 'From Location',
368                                                                 forceSelection : true,
369                                                                 hiddenName : 'invhist_transfer_from',
370                                                                 listWidth : 400,
371                                                                 loadingText : "Searching...",
372                                                                 minChars : 2,
373                                                                 name : 'invhist_transfer_from_location_descrip',
374                                                                 pageSize : 200,
375                                                                 qtip : "Select location",
376                                                                 queryParam : 'query[location_name]',
377                                                                 selectOnFocus : true,
378                                                                 tpl : '<div class="x-grid-cell-text x-btn button"><b>{location_name}</b> - {location_descrip} </div>',
379                                                                 triggerAction : 'all',
380                                                                 valueField : 'location_id',
381                                                                 width : 250,
382                                                                 store : {
383                                                                     xtype: 'Store',
384                                                                     xns: Roo.data,
385                                                                     listeners : {
386                                                                         beforeload : function (_self, o){
387                                                                             o.params = o.params || {};
388                                                                             // set more here
389                                                                          
390                                                                                 o.params._notinternalcompany = 1;
391                                                                          
392                                                                         }
393                                                                     },
394                                                                     remoteSort : true,
395                                                                     sortInfo : { direction : 'ASC', field: 'location_name' },
396                                                                     proxy : {
397                                                                         xtype: 'HttpProxy',
398                                                                         xns: Roo.data,
399                                                                         method : 'GET',
400                                                                         url : baseURL + '/Roo/location.php'
401                                                                     },
402                                                                     reader : {
403                                                                         xtype: 'JsonReader',
404                                                                         xns: Roo.data,
405                                                                         id : 'id',
406                                                                         root : 'data',
407                                                                         totalProperty : 'total',
408                                                                         fields : [{"name":"id","type":"int"},{"name":"location_name","type":"string"}]
409                                                                     }
410                                                                 }
411                                                             },
412                                                             {
413                                                                 xtype: 'ComboBox',
414                                                                 xns: Roo.form,
415                                                                 listeners : {
416                                                                     select : function (combo, record, index)
417                                                                     {
418                                                                         combo._is_internalcompany = false;
419                                                                         
420                                                                         if(record.data.cust_to_internalcompany.length){
421                                                                             combo._is_internalcompany = true;
422                                                                         }
423                                                                         
424                                                                         _this.grid.setColumns();
425                                                                     },
426                                                                     render : function (_self)
427                                                                     {
428                                                                         _this.toLocation = _self;
429                                                                     }
430                                                                 },
431                                                                 allowBlank : false,
432                                                                 displayField : 'location_descrip',
433                                                                 editable : true,
434                                                                 emptyText : "Select location",
435                                                                 fieldLabel : 'To Location',
436                                                                 forceSelection : true,
437                                                                 hiddenName : 'invhist_transfer_to',
438                                                                 listWidth : 400,
439                                                                 loadingText : "Searching...",
440                                                                 minChars : 2,
441                                                                 name : 'invhist_transfer_to_location_descrip',
442                                                                 pageSize : 200,
443                                                                 qtip : "Select location",
444                                                                 queryParam : 'query[location_name]',
445                                                                 selectOnFocus : true,
446                                                                 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>',
447                                                                 triggerAction : 'all',
448                                                                 valueField : 'location_id',
449                                                                 width : 250,
450                                                                 store : {
451                                                                     xtype: 'Store',
452                                                                     xns: Roo.data,
453                                                                     listeners : {
454                                                                         beforeload : function (_self, o){
455                                                                             o.params = o.params || {};
456                                                                             o.params.location_restrict = 0;
457                                                                             o.params._with_internalcompany = 1;
458                                                                             
459                                                                         }
460                                                                     },
461                                                                     remoteSort : true,
462                                                                     sortInfo : { direction : 'ASC', field: 'location_name' },
463                                                                     proxy : {
464                                                                         xtype: 'HttpProxy',
465                                                                         xns: Roo.data,
466                                                                         method : 'GET',
467                                                                         url : baseURL + '/Roo/location.php'
468                                                                     },
469                                                                     reader : {
470                                                                         xtype: 'JsonReader',
471                                                                         xns: Roo.data,
472                                                                         id : 'id',
473                                                                         root : 'data',
474                                                                         totalProperty : 'total',
475                                                                         fields : [{"name":"id","type":"int"},{"name":"location_name","type":"string"}]
476                                                                     }
477                                                                 }
478                                                             }
479                                                         ]
480                                                     }
481                                                 ]
482                                             },
483                                             {
484                                                 xtype: 'Column',
485                                                 xns: Roo.form,
486                                                 style : 'margin-left: 10px; float: left;',
487                                                 width : 280,
488                                                 items : [
489                                                     {
490                                                         xtype: 'FieldSet',
491                                                         xns: Roo.form,
492                                                         hideLabels : true,
493                                                         legend : "Transfer Delivery Note Reference",
494                                                         style : 'width: 260px',
495                                                         items : [
496                                                             {
497                                                                 xtype: 'TextArea',
498                                                                 xns: Roo.form,
499                                                                 fieldLabel : 'invhist_transfer_delivery_note',
500                                                                 name : 'invhist_transfer_delivery_note',
501                                                                 width : 250
502                                                             }
503                                                         ]
504                                                     },
505                                                     {
506                                                         xtype: 'FieldSet',
507                                                         xns: Roo.form,
508                                                         hideLabels : true,
509                                                         legend : "Transfer Description",
510                                                         style : 'width: 260px',
511                                                         items : [
512                                                             {
513                                                                 xtype: 'TextArea',
514                                                                 xns: Roo.form,
515                                                                 fieldLabel : 'invhist_transfer_descrip',
516                                                                 name : 'invhist_transfer_descrip',
517                                                                 width : 250
518                                                             }
519                                                         ]
520                                                     },
521                                                     {
522                                                         xtype: 'Row',
523                                                         xns: Roo.form,
524                                                         items : [
525                                                             {
526                                                                 xtype: 'ComboBox',
527                                                                 xns: Roo.form,
528                                                                 actionMode : 'fieldEl',
529                                                                 allowBlank : true,
530                                                                 displayField : 'desc',
531                                                                 editable : false,
532                                                                 fieldLabel : 'Transfer Price',
533                                                                 hiddenName : 'invhist_transfer_price',
534                                                                 listWidth : 200,
535                                                                 mode : 'local',
536                                                                 name : 'invhist_transfer_price_desc',
537                                                                 triggerAction : 'all',
538                                                                 value : "",
539                                                                 valueField : 'code',
540                                                                 width : 150,
541                                                                 store : {
542                                                                     xtype: 'SimpleStore',
543                                                                     xns: Roo.data,
544                                                                     data : [ 
545                                                                         [ 'PRICELIST', "At Transfer Price"],
546                                                                         [ 'LASTPLUS' , "Last Purchase +10% + 15% or stdcost +15%"],
547                                                                         [ 'STDCOST' , "stdcost - for old transfers only%"]
548                                                                     
549                                                                     ],
550                                                                     fields : [  'code', 'desc']
551                                                                 }
552                                                             }
553                                                         ]
554                                                     }
555                                                 ]
556                                             },
557                                             {
558                                                 xtype: 'Hidden',
559                                                 xns: Roo.form,
560                                                 name : 'transfer_items'
561                                             },
562                                             {
563                                                 xtype: 'Hidden',
564                                                 xns: Roo.form,
565                                                 name : '_roo_office'
566                                             },
567                                             {
568                                                 xtype: 'Hidden',
569                                                 xns: Roo.form,
570                                                 name : 'invhist_transfer_id'
571                                             }
572                                         ]
573                                     }
574                                 ]
575                             },
576                             {
577                                 xtype: 'GridPanel',
578                                 xns: Roo,
579                                 listeners : {
580                                     activate : function() {
581                                         _this.panel = this;
582                                         if (_this.grid) {
583                                             _this.grid.ds.load({});
584                                         }
585                                     }
586                                 },
587                                 fitContainer : true,
588                                 fitToframe : true,
589                                 region : 'center',
590                                 tableName : 'invhist_transfer_item',
591                                 title : "invhist_transfer_item",
592                                 grid : {
593                                     xtype: 'EditorGrid',
594                                     xns: Roo.grid,
595                                     listeners : {
596                                         render : function() 
597                                         {
598                                             _this.grid = this; 
599                                             //_this.dialog = Pman.Dialog.FILL_IN
600                                             if (_this.panel.active) {
601                                                this.ds.load({});
602                                             }
603                                         },
604                                         rowdblclick : function (_self, rowIndex, e)
605                                         {
606                                             if (!_this.dialog) return;
607                                             _this.dialog.show( this.getDataSource().getAt(rowIndex), function() {
608                                                 _this.grid.footer.onClick('first');
609                                             }); 
610                                         },
611                                         beforeedit : function (e)
612                                         {
613                                             if(_this.data.invhist_transfer_posted){
614                                                 Roo.MessageBox.alert('Error', 'This transfer has been posted');
615                                                 return false;
616                                             }
617                                             if(_this.data.invhist_transfer_void){
618                                                 Roo.MessageBox.alert('Error', 'This transfer has been voided');
619                                                 return false;
620                                             }
621                                             
622                                             if(e.field == 'invhist_transfer_item_unit_price' && (!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length) && !_this.toLocation._is_internalcompany){
623                                                 Roo.MessageBox.alert('Error', 'Not a inter-comany transfer');
624                                                 return false;
625                                             }
626                                             
627                                             
628                                             
629                                         }
630                                     },
631                                     autoExpandColumn : 'item_descrip1',
632                                     clicksToEdit : 1,
633                                     loadMask : true,
634                                     setColumns : function() {
635                                         var cm = _this.grid.getColumnModel();
636                                         
637                                         function cid(str) {
638                                             return cm.getIndexByDataIndex(str);
639                                         }
640                                         
641                                         if((!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length) && !_this.toLocation._is_internalcompany){
642                                             cm.setHidden(cid('invhist_transfer_item_unit_price'), true);
643                                             cm.setHidden(cid('invhist_transfer_item_unit_price_default'), true);
644                                             _this.form.findField('invhist_transfer_price').hide();
645                                             return;
646                                         }
647                                         
648                                         cm.setHidden(cid('invhist_transfer_item_unit_price'), false);
649                                         cm.setHidden(cid('invhist_transfer_item_unit_price_default'), false);
650                                         _this.form.findField('invhist_transfer_price').show();
651                                     },
652                                     sm : {
653                                         xtype: 'CellSelectionModel',
654                                         xns: Roo.grid,
655                                         listeners : {
656                                             tabend : function (_self)
657                                             {
658                                                 _this.addItemBtn.fireEvent('click', _this.addItemBtn);
659                                             }
660                                         }
661                                     },
662                                     dataSource : {
663                                         xtype: 'Store',
664                                         xns: Roo.data,
665                                         listeners : {
666                                             beforeload : function (_self, o)
667                                             {
668                                                
669                                                 o.params = o.params || {};
670                                                 if (!_this.form) {
671                                                     return false;
672                                                 }
673                                                 
674                                                 o.params.invhist_transfer_item_invhist_transfer_id = _this.form.findField('invhist_transfer_id').getValue() * 1;
675                                                 
676                                                 if ( !o.params.invhist_transfer_item_invhist_transfer_id) {
677                                                     _this.grid.ds.removeAll();
678                                                     return false;
679                                                 }
680                                             
681                                                 o.params['query[at_location]'] = _this.form.findField('invhist_transfer_from').getValue();
682                                                 o.params.limit = 999;
683                                                 o.params._roo_office =  _this.form.findField('_roo_office').getValue();
684                                                 
685                                                 _this.grid.setColumns();
686                                                     
687                                                 if(!_this.data.cust_to_internalcompany || !_this.data.cust_to_internalcompany.length){
688                                                     return;
689                                                 }
690                                                 
691                                                 o.params._inter_transfer = 1;    
692                                             
693                                                 
694                                                 
695                                             }
696                                         },
697                                         remoteSort : true,
698                                         sortInfo : { field : 'invhist_transfer_item_line', direction: 'ASC' },
699                                         proxy : {
700                                             xtype: 'HttpProxy',
701                                             xns: Roo.data,
702                                             method : 'GET',
703                                             timeout : 180000,
704                                             url : baseURL + '/Xtuple/Roo/invhist_transfer_item.php'
705                                         },
706                                         reader : {
707                                             xtype: 'JsonReader',
708                                             xns: Roo.data,
709                                             id : 'id',
710                                             root : 'data',
711                                             totalProperty : 'total',
712                                             fields : [
713                                                 {
714                                                     'name': 'invhist_transfer_item_id',
715                                                     'type': 'int'
716                                                 },
717                                                 {
718                                                     'name': 'invhist_transfer_item_invhist_transfer_id',
719                                                     'type': 'int'
720                                                 },
721                                                 {
722                                                     'name': 'invhist_transfer_item_itemsite_id',
723                                                     'type': 'int'
724                                                 },
725                                                 {
726                                                     'name': 'invhist_transfer_item_qty',
727                                                     'type': 'int'
728                                                 },
729                                                 {
730                                                     'name': 'invhist_transfer_item_line',
731                                                     'type': 'int'
732                                                 },
733                                                 {
734                                                     'name': 'invhist_transfer_invhist_id',
735                                                     'type': 'int'
736                                                 }, 
737                                                 'item_id',
738                                                 'item_number',    
739                                                 'item_descrip1',
740                                                 'avail_at_location'
741                                                 
742                                                 
743                                             ]
744                                         }
745                                     },
746                                     toolbar : {
747                                         xtype: 'Toolbar',
748                                         xns: Roo,
749                                         items : [
750                                             {
751                                                 xtype: 'Button',
752                                                 xns: Roo.Toolbar,
753                                                 listeners : {
754                                                     click : function()
755                                                     {
756                                                         
757                                                          if (_this.data.invhist_transfer_posted) {
758                                                             Roo.MessageBox.alert("Error", "Transfer has been posted, void it first");
759                                                             return;
760                                                         }
761                                                         
762                                                         // work out last 
763                                                         var grid = _this.grid;
764                                                         var last = 0;
765                                                         
766                                                         _this.grid.ds.each(function(r) {
767                                                             last = r.data.invhist_transfer_item_line;
768                                                         });
769                                                         
770                                                         last++;
771                                                         
772                                                         var nr = _this.grid.ds.reader.newRow({
773                                                             invhist_transfer_item_line : last,
774                                                             item_number : '',
775                                                             item_descrip1 : '',
776                                                             invhist_transfer_item_qty : 0,
777                                                             item_availqty : 0,
778                                                             invhist_transfer_item_transfer_id : _this.form.findField('invhist_transfer_id').getValue()
779                                                        });
780                                                     
781                                                         grid.stopEditing();
782                                                         grid.ds.insert(grid.ds.getCount(), nr); 
783                                                         grid.startEditing(grid.ds.getCount()-1, 1); // type..
784                                                     },
785                                                     render : function (_self)
786                                                     {
787                                                         _this.addItemBtn = _self;
788                                                     }
789                                                 },
790                                                 cls : 'x-btn-text-icon',
791                                                 text : "Add",
792                                                 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
793                                             },
794                                             {
795                                                 xtype: 'Button',
796                                                 xns: Roo.Toolbar,
797                                                 cls : 'x-btn-text-icon',
798                                                 text : "Fill based on Stock",
799                                                 icon : Roo.rootURL + 'images/default/dd/drop-add.gif',
800                                                 menu : {
801                                                     xtype: 'Menu',
802                                                     xns: Roo.menu,
803                                                     items : [
804                                                         {
805                                                             xtype: 'Item',
806                                                             xns: Roo.menu,
807                                                             listeners : {
808                                                                 click : function()
809                                                                 {
810                                                                     var    rn =      _this.grid.ds.getCount();
811                                                                     var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
812                                                                     var addRow = function(r) {
813                                                                     
814                                                                         if (r.itemsite_qty * 1 < 1) {
815                                                                         
816                                                                             return;
817                                                                             }
818                                                                       var nr = _this.grid.ds.reader.newRow({
819                                                                             invhist_transfer_item_line : rn + 1,
820                                                                             item_id : r.itemsite_item_id,    
821                                                                             invhist_transfer_item_itemsite_id :         r.itemsite_id,    
822                                                                             item_number : r.itemsite_item_id_item_number,
823                                                                             item_descrip1 : r.itemsite_item_id_item_descrip1,
824                                                                             invhist_transfer_item_qty : r.itemsite_qty,
825                                                                             item_availqty : 0,
826                                                                             invhist_transfer_item_transfer_id : tid
827                                                                        });
828                                                                          _this.grid.ds.insert(rn++, nr); 
829                                                                     
830                                                                     };
831                                                                      
832                                                                     var loc  = _this.form.findField('invhist_transfer_from').getValue()*1;
833                                                                     var dt  = _this.form.findField('invhist_transfer_transdate').getValue().format('Y-m-d');    
834                                                                     
835                                                                     _this.grid.stopEditing();
836                                                                     
837                                                                     new Pman.Request({
838                                                                         url :  baseURL + '/Roo/itemsite',
839                                                                         mask : 'Fetching stock',
840                                                                         method : 'GET',
841                                                                         params : {
842                                                                             limit : 2000, // alot!
843                                                                             _with_stock_and_value : 1,
844                                                                             _viewtype : 1,
845                                                                             location_id : loc,
846                                                                             _as_of : dt,
847                                                                             'sort' : 'itemsite_item_id_item_number',
848                                                                             'dir'  : 'ASC'
849                                                                         },
850                                                                         success : function(r) {
851                                                                             Roo.log(r);
852                                                                             Roo.each(r.data, addRow);
853                                                                             
854                                                                         
855                                                                         }
856                                                                     
857                                                                     });
858                                                                 
859                                                                     
860                                                                 
861                                                                     
862                                                                 
863                                                                     
864                                                                      
865                                                                 },
866                                                                 render : function (_self)
867                                                                 {
868                                                                     _this.addItemBtn = _self;
869                                                                 }
870                                                             },
871                                                             cls : 'x-btn-text-icon',
872                                                             text : "Transfer all from Location",
873                                                             icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
874                                                         },
875                                                         {
876                                                             xtype: 'Item',
877                                                             xns: Roo.menu,
878                                                             listeners : {
879                                                                 click : function()
880                                                                 {
881                                                                  var    rn =      _this.grid.ds.getCount();
882                                                                         var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
883                                                                         
884                                                                         
885                                                                         var addRow = function(r) {
886                                                                         
887                                                                             if (r.itemsite_qty * 1 > -1) {
888                                                                             
889                                                                                 return;
890                                                                             }
891                                                                           var nr = _this.grid.ds.reader.newRow({
892                                                                                 invhist_transfer_item_line : rn + 1,
893                                                                                 item_id : r.itemsite_item_id,    
894                                                                                 invhist_transfer_item_itemsite_id :         r.itemsite_id,    
895                                                                                 item_number : r.itemsite_item_id_item_number,
896                                                                                 item_descrip1 : r.itemsite_item_id_item_descrip1,
897                                                                                 invhist_transfer_item_qty : Math.abs(r.itemsite_qty),
898                                                                                 item_availqty : 0,
899                                                                                 invhist_transfer_item_transfer_id : tid
900                                                                            });
901                                                                              _this.grid.ds.insert(rn++, nr); 
902                                                                         
903                                                                         };
904                                                                          
905                                                                         var loc  = _this.form.findField('invhist_transfer_to').getValue()*1;
906                                                                         var dt  = _this.form.findField('invhist_transfer_transdate').getValue().format('Y-m-d');    
907                                                                         
908                                                                         _this.grid.stopEditing();
909                                                                         
910                                                                         new Pman.Request({
911                                                                             url :  baseURL + '/Roo/itemsite',
912                                                                             mask : 'Fetching stock',
913                                                                             method : 'GET',
914                                                                             params : {
915                                                                                 limit : 2000, // alot!
916                                                                                 _with_stock_and_value : 1,
917                                                                                 _viewtype : -1,
918                                                                                 location_id : loc,
919                                                                                 _as_of : dt,
920                                                                                 'sort' : 'itemsite_item_id_item_number',
921                                                                                 'dir'  : 'ASC'
922                                                                             },
923                                                                             success : function(r) {
924                                                                                 Roo.log(r);
925                                                                                 Roo.each(r.data, addRow);
926                                                                                 
927                                                                             
928                                                                             }
929                                                                         
930                                                                         });
931                                                                     
932                                                                     
933                                                                 
934                                                                     
935                                                                 
936                                                                     
937                                                                      
938                                                                 },
939                                                                 render : function (_self)
940                                                                 {
941                                                                     _this.addItemBtn = _self;
942                                                                 }
943                                                             },
944                                                             cls : 'x-btn-text-icon',
945                                                             text : "Fill negative at Target",
946                                                             icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
947                                                         }
948                                                     ]
949                                                 }
950                                             },
951                                             {
952                                                 xtype: 'Fill',
953                                                 xns: Roo.Toolbar
954                                             },
955                                             {
956                                                 xtype: 'Button',
957                                                 xns: Roo.Toolbar,
958                                                 listeners : {
959                                                     click : function()
960                                                     {
961                                                          _this.grid.stopEditing();     
962                                                     
963                                                          if (_this.data.invhist_transfer_posted) {
964                                                             Roo.MessageBox.alert("Error", "Transfer has been posted, void it first");
965                                                             return;
966                                                         }
967                                                     
968                                                         var rc= _this.grid.selModel.getSelectedCell();
969                                                          if (!rc) {
970                                                             Roo.MessageBox.alert("Error", "Select a item to delete");
971                                                             return;
972                                                          }
973                                                              
974                                                          var rec = _this.grid.ds.getAt(rc[0]);
975                                                          _this.grid.ds.remove(rec);
976                                                          
977                                                     
978                                                         rec = _this.grid.ds.getAt(rc[0]);
979                                                         if (rec) {
980                                                             _this.grid.selModel.select(rc[0], 2);
981                                                             return;
982                                                         }
983                                                         var ln = rc[0]-1;
984                                                         if (ln < 0) {
985                                                           return;
986                                                         } // nothing left to select..
987                                                         _this.grid.selModel.select(rc[0]-1, 2);
988                                                          
989                                                         
990                                                         
991                                                         
992                                                     }
993                                                 },
994                                                 cls : 'x-btn-text-icon',
995                                                 text : "Delete",
996                                                 icon : rootURL + '/Pman/templates/images/trash.gif'
997                                             }
998                                         ]
999                                     },
1000                                     colModel : [
1001                                         {
1002                                             xtype: 'ColumnModel',
1003                                             xns: Roo.grid,
1004                                             dataIndex : 'invhist_transfer_item_line',
1005                                             header : 'Line',
1006                                             width : 75,
1007                                             renderer : function(v) { return String.format('{0}', v); }
1008                                         },
1009                                         {
1010                                             xtype: 'ColumnModel',
1011                                             xns: Roo.grid,
1012                                             dataIndex : 'item_id',
1013                                             header : 'Item Code',
1014                                             width : 75,
1015                                             renderer : function(v,x,r) { 
1016                                                 return String.format('{0}', r.data.item_number);
1017                                              },
1018                                             editor : {
1019                                                 xtype: 'GridEditor',
1020                                                 xns: Roo.grid,
1021                                                 field : {
1022                                                     xtype: 'ComboBox',
1023                                                     xns: Roo.form,
1024                                                     listeners : {
1025                                                         beforeselect : function (combo, record, index)
1026                                                         {
1027                                                           // set _this.data values ..
1028                                                           var ar = _this.grid.activeEditor.record;
1029                                                           //Roo.log('beforeselect');
1030                                                           (function() { 
1031                                                              //  Roo.log('beforeselect-cb');
1032                                                               ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);
1033                                                              // ar.set('coitem_price', record.data.item_listprice);
1034                                                              // ar.set('coitem_custprice', record.data.item_price);
1035                                                                ar.set('invhist_transfer_item_itemsite_id', record.data.itemsite_id);
1036                                                               ar.set('item_number', record.data.itemsite_item_id_item_number);
1037                                                               ar.set('avail_at_location', record.data.avail_at_location);
1038                                                               ar.commit();
1039                                                           }).defer(100);
1040                                                           
1041                                                         }
1042                                                     },
1043                                                     allowBlank : false,
1044                                                     displayField : 'itemsite_item_id_item_number',
1045                                                     editable : true,
1046                                                     emptyText : "Select item",
1047                                                     forceSelection : true,
1048                                                     hiddenName : 'itemsite_item_id_item_number',
1049                                                     listWidth : 400,
1050                                                     loadingText : "Searching...",
1051                                                     minChars : 2,
1052                                                     name : 'item_number',
1053                                                     pageSize : 20,
1054                                                     qtip : "Select item",
1055                                                     queryParam : 'query[number]',
1056                                                     selectOnFocus : true,
1057                                                     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>',
1058                                                     triggerAction : 'all',
1059                                                     valueField : 'item_number',
1060                                                     store : {
1061                                                         xtype: 'Store',
1062                                                         xns: Roo.data,
1063                                                         listeners : {
1064                                                             beforeload : function (_self, o){
1065                                                                 o.params = o.params || {};
1066                                                                 
1067                                                                 o.params['query[at_location]'] = _this.form.findField('invhist_transfer_from').getValue();
1068                                                                 
1069                                                             }
1070                                                         },
1071                                                         remoteSort : true,
1072                                                         sortInfo : { direction : 'ASC', field: 'itemsite_item_id_item_number' },
1073                                                         proxy : {
1074                                                             xtype: 'HttpProxy',
1075                                                             xns: Roo.data,
1076                                                             method : 'GET',
1077                                                             url : baseURL + '/Roo/itemsite.php'
1078                                                         },
1079                                                         reader : {
1080                                                             xtype: 'JsonReader',
1081                                                             xns: Roo.data,
1082                                                             id : 'shipto_id',
1083                                                             root : 'data',
1084                                                             totalProperty : 'total',
1085                                                             fields : [{"name":"item_id","type":"int"},"item_number"]
1086                                                         }
1087                                                     }
1088                                                 }
1089                                             }
1090                                         },
1091                                         {
1092                                             xtype: 'ColumnModel',
1093                                             xns: Roo.grid,
1094                                             dataIndex : 'item_descrip1',
1095                                             header : 'Description',
1096                                             width : 75,
1097                                             renderer : function(v,x,r) { return String.format('{0}', v); }
1098                                         },
1099                                         {
1100                                             xtype: 'ColumnModel',
1101                                             xns: Roo.grid,
1102                                             align : 'right',
1103                                             dataIndex : 'avail_at_location',
1104                                             header : 'Cur. Avail',
1105                                             width : 75,
1106                                             renderer : function(v,x,r) { return String.format('{0}', v); }
1107                                         },
1108                                         {
1109                                             xtype: 'ColumnModel',
1110                                             xns: Roo.grid,
1111                                             align : 'right',
1112                                             dataIndex : 'invhist_transfer_item_qty',
1113                                             header : 'Qty',
1114                                             width : '50.00',
1115                                             renderer : function(v,x,r) { 
1116                                                 var vv = parseInt(v);
1117                                                 //var aq = parseInt(r.data.avail_qty);
1118                                                 //aq = isNaN(aq) ? 0 : aq;
1119                                                
1120                                                
1121                                                
1122                                                
1123                                                 return String.format('{0}', vv.toFixed(0)); 
1124                                                 
1125                                             },
1126                                             editor : {
1127                                                 xtype: 'GridEditor',
1128                                                 xns: Roo.grid,
1129                                                 field : {
1130                                                     xtype: 'NumberField',
1131                                                     xns: Roo.form,
1132                                                     allowDecimals : false,
1133                                                     decimalPrecision : 0,
1134                                                     minValue : 1,
1135                                                     style : 'text-align:right'
1136                                                 }
1137                                             }
1138                                         },
1139                                         {
1140                                             xtype: 'ColumnModel',
1141                                             xns: Roo.grid,
1142                                             align : 'right',
1143                                             dataIndex : 'invhist_transfer_item_unit_price',
1144                                             header : 'Unit Price',
1145                                             hidden : true,
1146                                             width : 75,
1147                                             renderer : function(v,x,r) 
1148                                             { 
1149                                                 if(!v && v !== 0){
1150                                                     return '';
1151                                                 }
1152                                                 var color = '#666'; // orignal color
1153                                                 
1154                                                 if(r.data.invhist_transfer_item_unit_price_default != v){
1155                                                     color = 'red';
1156                                                 }
1157                                                 
1158                                                 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)); 
1159                                             },
1160                                             editor : {
1161                                                 xtype: 'GridEditor',
1162                                                 xns: Roo.grid,
1163                                                 field : {
1164                                                     xtype: 'NumberField',
1165                                                     xns: Roo.form,
1166                                                     allowBlank : false,
1167                                                     allowDecimals : true,
1168                                                     decimalPrecision : 2,
1169                                                     style : 'text-align:right'
1170                                                 }
1171                                             }
1172                                         },
1173                                         {
1174                                             xtype: 'ColumnModel',
1175                                             xns: Roo.grid,
1176                                             align : 'right',
1177                                             dataIndex : 'invhist_transfer_item_unit_price_default',
1178                                             header : 'Default Price',
1179                                             hidden : true,
1180                                             width : 75,
1181                                             renderer : function(v,x,r) 
1182                                             { 
1183                                                 if(!v && v !== 0){
1184                                                     return '';
1185                                                 }
1186                                                 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                                             }
1188                                         }
1189                                     ]
1190                                 }
1191                             }
1192                         ],
1193                         north : {
1194                             xtype: 'LayoutRegion',
1195                             xns: Roo,
1196                             height : 260
1197                         },
1198                         center : {
1199                             xtype: 'LayoutRegion',
1200                             xns: Roo
1201                         }
1202                     }
1203                 },
1204                 {
1205                     xtype: 'GridPanel',
1206                     xns: Roo,
1207                     listeners : {
1208                         activate : function() {
1209                             _this.ipanel = this;
1210                             if (_this.igrid) {
1211                                 _this.igrid.footer.onClick('first');
1212                             }
1213                         }
1214                     },
1215                     background : false,
1216                     fitContainer : true,
1217                     fitToframe : true,
1218                     region : 'center',
1219                     tableName : 'Images',
1220                     title : "Reference Files",
1221                     grid : {
1222                         xtype: 'Grid',
1223                         xns: Roo.grid,
1224                         listeners : {
1225                             render : function() { 
1226                                 _this.igrid = this; 
1227                                 //_this.dialog = Pman.Dialog.FILL_IN
1228                                 //if (_this.panel.active) {
1229                                 //   this.footer.onClick('first');
1230                                 //}
1231                             },
1232                             rowdblclick : function (_self, rowIndex, e)
1233                             {
1234                               
1235                                var s =  _self.getDataSource().getAt(rowIndex);
1236                                new Pman.Download({
1237                                     url : baseURL + '/Images/' + s.data.id
1238                                      
1239                                 });
1240                                
1241                             }
1242                         },
1243                         autoExpandColumn : 'id',
1244                         loadMask : true,
1245                         dataSource : {
1246                             xtype: 'Store',
1247                             xns: Roo.data,
1248                             listeners : {
1249                                 beforeload : function (_self, o)
1250                                 {
1251                                     //o.params.ontable = 'Companies';
1252                                     
1253                                   //   o.params.imgtype = 'PressRelease';
1254                                     
1255                                     o.params = o.params || {};
1256                                     o.params.onid = _this.form.findField('invhist_transfer_id').getValue();
1257                                     o.params.ontable = 'invhist_transfer';
1258                                     Roo.log(_this);
1259                                     
1260                                 },
1261                                 load : function (_self, records, options)
1262                                 {
1263                                  _this.panel.el.unmask();
1264                                 }
1265                             },
1266                             remoteSort : true,
1267                             sortInfo : { field: 'created' , direction: 'DESC' },
1268                             reader : {
1269                                 xtype: 'JsonReader',
1270                                 xns: Roo.data,
1271                                 id : 'id',
1272                                 root : 'data',
1273                                 totalProperty : 'total',
1274                                 fields : [
1275                                     {
1276                                         'name': 'id',
1277                                         'type': 'int'
1278                                     },
1279                                     {
1280                                         'name': 'filename',
1281                                         'type': 'string'
1282                                     },
1283                                     {
1284                                         'name': 'ontable',
1285                                         'type': 'string'
1286                                     },
1287                                     {
1288                                         'name': 'onid',
1289                                         'type': 'int'
1290                                     },
1291                                     {
1292                                         'name': 'mimetype',
1293                                         'type': 'string'
1294                                     },
1295                                     {
1296                                         'name': 'width',
1297                                         'type': 'int'
1298                                     },
1299                                     {
1300                                         'name': 'height',
1301                                         'type': 'int'
1302                                     },
1303                                     {
1304                                         'name': 'filesize',
1305                                         'type': 'int'
1306                                     },
1307                                     {
1308                                         'name': 'displayorder',
1309                                         'type': 'int'
1310                                     },
1311                                     {
1312                                         'name': 'language',
1313                                         'type': 'string'
1314                                     },
1315                                     {
1316                                         'name': 'parent_image_id',
1317                                         'type': 'int'
1318                                     },
1319                                     {
1320                                         'name': 'created',
1321                                         'type': 'date',
1322                                         'dateFormat' : 'Y-m-d H:i:s'
1323                                     },
1324                                     {
1325                                         'name': 'imgtype',
1326                                         'type': 'string'
1327                                     },
1328                                     {
1329                                         'name': 'linkurl',
1330                                         'type': 'string'
1331                                     },
1332                                     {
1333                                         'name': 'descript',
1334                                         'type': 'string'
1335                                     },
1336                                     {
1337                                         'name': 'title',
1338                                         'type': 'string'
1339                                     }
1340                                 ]
1341                             },
1342                             proxy : {
1343                                 xtype: 'HttpProxy',
1344                                 xns: Roo.data,
1345                                 method : 'GET',
1346                                 url : baseURL + '/Roo/Images.php'
1347                             }
1348                         },
1349                         footer : {
1350                             xtype: 'PagingToolbar',
1351                             xns: Roo,
1352                             pageSize : 25,
1353                             displayInfo : true,
1354                             displayMsg : "Displaying Images  {0} - {1} of {2}",
1355                             emptyMsg : "No Images found"
1356                         },
1357                         toolbar : {
1358                             xtype: 'Toolbar',
1359                             xns: Roo,
1360                             items : [
1361                                 {
1362                                     xtype: 'Button',
1363                                     xns: Roo.Toolbar,
1364                                     listeners : {
1365                                         click : function()
1366                                         {
1367                                                     
1368                                             //var sel = Pman.Tab.PressReleaseCompanies  ? Pman.Tab.PressReleaseCompanies.grid.getSelectionModel().getSelected() : false
1369                                              
1370                                             Pman.Dialog.Image.show({
1371                                                 id : 0, 
1372                                                 ontable: 'invhist_transfer',
1373                                                 onid: _this.form.findField('invhist_transfer_id').getValue(),
1374                                                 imgtype : ''
1375                                             }, function(data){
1376                                                 if (!data) { return; } 
1377                                                 _this.igrid.footer.onClick('first');
1378                                             }); 
1379                                         
1380                                         }
1381                                     },
1382                                     cls : 'x-btn-text-icon',
1383                                     text : "Add",
1384                                     icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
1385                                 },
1386                                 {
1387                                     xtype: 'Button',
1388                                     xns: Roo.Toolbar,
1389                                     listeners : {
1390                                         click : function()
1391                                                 {
1392                                                 Pman.genericDelete(_this, 'Images'); 
1393                                                 }
1394                                     },
1395                                     cls : 'x-btn-text-icon',
1396                                     text : "Delete",
1397                                     icon : rootURL + '/Pman/templates/images/trash.gif'
1398                                 }
1399                             ]
1400                         },
1401                         colModel : [
1402                             {
1403                                 xtype: 'ColumnModel',
1404                                 xns: Roo.grid,
1405                                 dataIndex : 'created',
1406                                 header : 'Created',
1407                                 sortable : true,
1408                                 width : 200,
1409                                 renderer : function(v,x,r) {
1410                                        return String.format('{0}<br/><i>{1}</i><br/>{2}<br/><i>{3}x{4}</i>',
1411                                             v.format('d/M/Y'), r.data.mimetype, r.data.filename,
1412                                     r.data.width, r.data.height
1413                                     ); 
1414                                 }
1415                             },
1416                             {
1417                                 xtype: 'ColumnModel',
1418                                 xns: Roo.grid,
1419                                 dataIndex : 'id',
1420                                 header : 'Image',
1421                                 width : 100,
1422                                 renderer : function(v,x,r) { return String.format('<img src="{0}/Images/Thumb/100/{1}/{2}" height="100">', baseURL, v, r.data.filename); }
1423                             }
1424                         ]
1425                     }
1426                 },
1427                 {
1428                     xtype: 'GridPanel',
1429                     xns: Roo,
1430                     listeners : {
1431                         activate : function() {
1432                             _this.hpanel = this;
1433                             if (_this.hgrid) {
1434                                 _this.hgrid.footer.onClick('first');
1435                             }
1436                         }
1437                     },
1438                     background : true,
1439                     fitContainer : true,
1440                     fitToframe : true,
1441                     region : 'center',
1442                     tableName : 'events',
1443                     title : "History",
1444                     grid : {
1445                         xtype: 'Grid',
1446                         xns: Roo.grid,
1447                         listeners : {
1448                             render : function() 
1449                             {
1450                                 _this.hgrid = this; 
1451                                 if (_this.hpanel.active) {
1452                                    this.footer.onClick('first');
1453                                 }
1454                             }
1455                         },
1456                         autoExpandColumn : 'remarks',
1457                         loadMask : true,
1458                         dataSource : {
1459                             xtype: 'Store',
1460                             xns: Roo.data,
1461                             listeners : {
1462                                 beforeload : function (_self, options)
1463                                 {
1464                                     options.params = options.params || {};
1465                                     
1466                                     options.params.on_table = 'invhist_transfer';
1467                                     options.params.on_id = _this.form.findField('invhist_transfer_id').getValue();
1468                                 }
1469                             },
1470                             remoteSort : true,
1471                             sortInfo : { field : 'event_when', direction: 'DESC' },
1472                             proxy : {
1473                                 xtype: 'HttpProxy',
1474                                 xns: Roo.data,
1475                                 method : 'GET',
1476                                 url : baseURL + '/Roo/events.php'
1477                             },
1478                             reader : {
1479                                 xtype: 'JsonReader',
1480                                 xns: Roo.data,
1481                                 id : 'id',
1482                                 root : 'data',
1483                                 totalProperty : 'total',
1484                                 fields : [
1485                                     {
1486                                         'name': 'event_when',
1487                                         'type': 'date'
1488                                     },
1489                                     {
1490                                         'name': 'action',
1491                                         'type': 'string'
1492                                     },
1493                                     {
1494                                         'name': 'ipaddr',
1495                                         'type': 'string'
1496                                     },
1497                                     {
1498                                         'name': 'person_id_name',
1499                                         'type': 'string'
1500                                     },
1501                                     {
1502                                         'name': 'remarks',
1503                                         'type': 'string'
1504                                     }
1505                                 ]
1506                             }
1507                         },
1508                         footer : {
1509                             xtype: 'PagingToolbar',
1510                             xns: Roo,
1511                             displayInfo : true,
1512                             displayMsg : "Displaying events{0} - {1} of {2}",
1513                             emptyMsg : "No Events found",
1514                             pageSize : 25
1515                         },
1516                         colModel : [
1517                             {
1518                                 xtype: 'ColumnModel',
1519                                 xns: Roo.grid,
1520                                 dataIndex : 'event_when',
1521                                 header : 'Changed',
1522                                 width : 120,
1523                                 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y H:i:s') : ''); }
1524                             },
1525                             {
1526                                 xtype: 'ColumnModel',
1527                                 xns: Roo.grid,
1528                                 dataIndex : 'action',
1529                                 header : 'Action',
1530                                 width : 200,
1531                                 renderer : function(v,x,r) { return String.format('{0} - {1}', v, r.data.on_table); }
1532                             },
1533                             {
1534                                 xtype: 'ColumnModel',
1535                                 xns: Roo.grid,
1536                                 dataIndex : 'ipaddr',
1537                                 header : 'IP Address',
1538                                 width : 200,
1539                                 renderer : function(v) { return String.format('{0}', v); }
1540                             },
1541                             {
1542                                 xtype: 'ColumnModel',
1543                                 xns: Roo.grid,
1544                                 dataIndex : 'person_id_name',
1545                                 header : 'Who',
1546                                 width : 75,
1547                                 renderer : function(v) { return String.format('{0}', v); }
1548                             },
1549                             {
1550                                 xtype: 'ColumnModel',
1551                                 xns: Roo.grid,
1552                                 dataIndex : 'remarks',
1553                                 header : 'Notes',
1554                                 width : 200,
1555                                 renderer : function(v) { return String.format('{0}', v); }
1556                             }
1557                         ]
1558                     }
1559                 },
1560                 {
1561                     xtype: 'GridPanel',
1562                     xns: Roo,
1563                     listeners : {
1564                         activate : function() {
1565                             _this.tpanel = this;
1566                             if (_this.tgrid) {
1567                                 _this.tgrid.ds.load({});
1568                             }
1569                         }
1570                     },
1571                     background : true,
1572                     fitContainer : true,
1573                     fitToframe : true,
1574                     region : 'center',
1575                     tableName : 'invhist_transfer_item',
1576                     title : "Transfered",
1577                     grid : {
1578                         xtype: 'Grid',
1579                         xns: Roo.grid,
1580                         listeners : {
1581                             render : function() 
1582                             {
1583                                 _this.tgrid = this; 
1584                                 if (_this.tpanel.active) {
1585                                    this.ds.load({});
1586                                 }
1587                             }
1588                         },
1589                         autoExpandColumn : 'item_number',
1590                         loadMask : true,
1591                         toolbar : {
1592                             xtype: 'Toolbar',
1593                             xns: Roo,
1594                             items : [
1595                                 {
1596                                     xtype: 'Button',
1597                                     xns: Roo.Toolbar,
1598                                     listeners : {
1599                                         click : function()
1600                                         {
1601                                             var id = _this.form.findField('invhist_transfer_id').getValue();
1602                                         
1603                                             if(id * 1 < 1){
1604                                                 return;
1605                                             }
1606                                             
1607                                             var err = false;
1608                                             
1609                                             _this.tgrid.ds.each(function (r) {
1610                                                 if (_this.data.invhist_transfer_void && r.data.transfered_qty * 1 == 0 && r.data.expected_qty * 1 == 0) {
1611                                                     return;
1612                                                 }
1613                                                 if(!_this.data.invhist_transfer_void && r.data.transfered_qty * 1 - r.data.expected_qty * 1 == 0){
1614                                                     return;
1615                                                 }
1616                                                 
1617                                                 err = true;
1618                                            });
1619                                            
1620                                            if(!err){
1621                                                 Roo.MessageBox.alert("Notice", "Nothing Wrong!");
1622                                                 return;
1623                                            }
1624                                            
1625                                             new Pman.Request({
1626                                                 url : baseURL + '/Roo/invhist_transfer',
1627                                                 method : 'POST',
1628                                                 mask: 'Fixing',
1629                                                 timeout : 1200000, //20 minutes...! - big xfer should be 10mins.
1630                                                 params : {
1631                                                     invhist_transfer_id : id,
1632                                                     _fix : 1
1633                                                 },
1634                                                 success : function () 
1635                                                 {
1636                                                     _this.tgrid.ds.load({});
1637                                                 }
1638                                             });
1639                                             
1640                                             
1641                                             
1642                                         }
1643                                     },
1644                                     cls : 'x-btn-text-icon',
1645                                     text : "Fix Transfer",
1646                                     icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1647                                 }
1648                             ]
1649                         },
1650                         dataSource : {
1651                             xtype: 'Store',
1652                             xns: Roo.data,
1653                             listeners : {
1654                                 beforeload : function (_self, options)
1655                                 {
1656                                     options.params = options.params || {};
1657                                     options.params.limit = 9999;
1658                                     if(_this.data.cust_to_internalcompany.length){
1659                                         this.removeAll();
1660                                         return false;
1661                                     }
1662                                     
1663                                     var id = _this.form.findField('invhist_transfer_id').getValue();
1664                                     
1665                                     if(id * 1 < 1){
1666                                         this.removeAll();
1667                                         return false;
1668                                     }
1669                                     
1670                                     options.params.invhist_transfer_item_invhist_transfer_id = id;
1671                                     
1672                                     options.params._with_expected = 1;
1673                                     
1674                                 }
1675                             },
1676                             remoteSort : true,
1677                             sortInfo : { field : 'invhist_transfer_item_line', direction: 'ASC' },
1678                             proxy : {
1679                                 xtype: 'HttpProxy',
1680                                 xns: Roo.data,
1681                                 method : 'GET',
1682                                 url : baseURL + '/Roo/invhist_transfer_item.php'
1683                             },
1684                             reader : {
1685                                 xtype: 'JsonReader',
1686                                 xns: Roo.data,
1687                                 id : 'invhist_transfer_item_id',
1688                                 root : 'data',
1689                                 totalProperty : 'total',
1690                                 fields : [
1691                                     {
1692                                         'name': 'invhist_transfer_item_id',
1693                                         'type': 'int'
1694                                     },
1695                                     {
1696                                         'name': 'invhist_transfer_item_qty',
1697                                         'type': 'int'
1698                                     },
1699                                     {
1700                                         'name': 'invhist_transfer_item_line',
1701                                         'type': 'int'
1702                                     }
1703                                 ]
1704                             }
1705                         },
1706                         colModel : [
1707                             {
1708                                 xtype: 'ColumnModel',
1709                                 xns: Roo.grid,
1710                                 dataIndex : 'item_number',
1711                                 header : 'Item#',
1712                                 width : 120,
1713                                 renderer : function(v) { return String.format('{0}', v ? v : ''); }
1714                             },
1715                             {
1716                                 xtype: 'ColumnModel',
1717                                 xns: Roo.grid,
1718                                 dataIndex : 'transfered_qty',
1719                                 header : 'Transfered',
1720                                 width : 100,
1721                                 renderer : function(v,x,r) 
1722                                 { 
1723                                     if(v && r.data.transfered_qty * 1 != r.data.expected_qty * 1){
1724                                         return String.format('<span style="color:red">{0}</span>', v); 
1725                                     }
1726                                     return String.format('{0}', v ? v : 0);  
1727                                 }
1728                             },
1729                             {
1730                                 xtype: 'ColumnModel',
1731                                 xns: Roo.grid,
1732                                 dataIndex : 'expected_qty',
1733                                 header : 'Expected',
1734                                 width : 100,
1735                                 renderer : function(v,x,r) 
1736                                 { 
1737                                     
1738                                     if(v && r.data.transfered_qty * 1 != r.data.expected_qty * 1){
1739                                         return String.format('<span style="color:red">{0}</span>', v); 
1740                                     }
1741                                     return String.format('{0}', v ? v : 0); 
1742                                 }
1743                             }
1744                         ]
1745                     }
1746                 }
1747             ],
1748             center : {
1749                 xtype: 'LayoutRegion',
1750                 xns: Roo,
1751                 tabPosition : 'top'
1752             },
1753             buttons : [
1754                 {
1755                     xtype: 'Button',
1756                     xns: Roo,
1757                     listeners : {
1758                         click : function (_self, e)
1759                         {
1760                            
1761                             var rn =      _this.grid.ds.getCount();
1762                             var tid = 1 * _this.form.findField('invhist_transfer_id').getValue();
1763                             var addRow = function(r) {
1764                                 if (r.itemsite_qty * 1 < 1) {
1765                                     return;
1766                                 }
1767                                 
1768                                 var nr = _this.grid.ds.reader.newRow({
1769                                     invhist_transfer_item_line : rn + 1,
1770                                     item_id : r.itemsite_item_id,    
1771                                     invhist_transfer_item_itemsite_id : r.itemsite_id,    
1772                                     item_number : r.itemsite_item_id_item_number,
1773                                     item_descrip1 : r.itemsite_item_id_item_descrip1,
1774                                     invhist_transfer_item_qty : r.itemsite_qty,
1775                                     item_availqty : 0,
1776                                     avail_at_location : '',
1777                                     invhist_transfer_item_transfer_id : tid,
1778                                     invhist_transfer_item_unit_price : r.unit_price,
1779                                     invhist_transfer_item_unit_price_default : r.unit_price,
1780                                 });
1781                                 _this.grid.ds.insert(rn++, nr); 
1782                             
1783                             };
1784                            
1785                             Pman.Dialog.Image.show(
1786                                {
1787                                     _url : baseURL + '/Xtuple/Import/Transfer'
1788                                 
1789                                },
1790                                function (r) {
1791                                     Roo.log(r);
1792                                     Roo.each(r.items, addRow);
1793                                     
1794                                     if (typeof(r.Date) !='undefined') {
1795                                         _this.form.findField('invhist_transfer_transdate').setValue( Date.parseDate((r.Date) ? r.Date : (new Date()).format('Y-m-d'), "Y-m-d"));
1796                                     }
1797                                     if (typeof(r.ArrivalDate) !='undefined') {            
1798                                         _this.form.findField('invhist_transfer_arrivaldate').setValue(Date.parseDate((r.ArrivalDate) ? r.ArrivalDate : (new Date()).format('Y-m-d'), "Y-m-d"));
1799                                     }
1800                                     if(r.invhist_transfer_from){
1801                                         _this.fromLocation.setValue(r.invhist_transfer_from);
1802                                         _this.fromLocation.el.dom.value = r.invhist_transfer_from_location_name;
1803                                     }
1804                                     if(r.invhist_transfer_to){
1805                                         _this.toLocation.setValue(r.invhist_transfer_to);
1806                                         _this.toLocation.el.dom.value = r.invhist_transfer_to_location_name;
1807                                     }
1808                                     
1809                                     if(r.isInter == 1){
1810                                         _this.toLocation._is_internalcompany = true;
1811                                     }
1812                                     _this.grid.setColumns();\r
1813                                }
1814                            );
1815                         },
1816                         render : function (_self)
1817                         {
1818                             _this.uploadBtn = _self;
1819                         }
1820                     },
1821                     text : "Upload (Excel)"
1822                 },
1823                 {
1824                     xtype: 'Button',
1825                     xns: Roo,
1826                     listeners : {
1827                         click : function (_self, e)
1828                         {
1829                         
1830                            new Pman.Download({
1831                                 url : baseURL + '/Xtuple/Roo/invhist_transfer',
1832                                 method : 'GET',
1833                                 timeout : 90000,
1834                                 params : {
1835                                     _roo_office : _this.form.findField('_roo_office').getValue(),
1836                                    _download : _this.data.invhist_transfer_id 
1837                                      
1838                                 }
1839                             });
1840                             
1841                             
1842                         
1843                         }
1844                     },
1845                     text : "Download (Excel)"
1846                 },
1847                 {
1848                     xtype: 'Button',
1849                     xns: Roo,
1850                     listeners : {
1851                         click : function (_self, e)
1852                         {
1853                             _this.grid.stopEditing();
1854                             if (_this.data.invhist_transfer_posted || _this.data.invhist_transfer_void) {
1855                                 _this.dialog.hide();
1856                                 return;
1857                             }
1858                             
1859                             if (_this.data.createFromRev) {
1860                                 Roo.MessageBox.alert("Warning", "A draft item reciept has been created - please void it if it is not needed");
1861                                 _this.dialog.hide();        
1862                                 return;
1863                             }
1864                             
1865                             
1866                         
1867                             Roo.MessageBox.confirm("Confirm", "Are you sure want to cancel, all changes will be lost", function(r) {
1868                             
1869                                 if (r !='yes') {
1870                                     return;
1871                                 }
1872                                 _this.dialog.hide();
1873                             
1874                            })
1875                             
1876                             
1877                         
1878                         }
1879                     },
1880                     text : "Cancel"
1881                 },
1882                 {
1883                     xtype: 'Button',
1884                     xns: Roo,
1885                     listeners : {
1886                         click : function (_self, e)
1887                         {
1888                             // do some checks?
1889                             _this.grid.stopEditing();
1890                             var ar = []; 
1891                             var err = false;
1892                             _this.grid.ds.each(function (r) {
1893                                 var missingqty = r.data.invhist_transfer_item_qty < 1;
1894                                 var missingsku = r.data.invhist_transfer_item_itemsite_id < 1;
1895                                 if (missingsku && missingqty) {
1896                                     return;
1897                                 }
1898                                 
1899                             
1900                                 if (missingqty) {
1901                                     err = "Missing Quantity on line : " + r.data.invhist_transfer_item_line;
1902                                 }
1903                                 if (missingsku) {
1904                                    err = "Missing SKU on line : " + r.data.invhist_transfer_item_line;
1905                                 }
1906                                 ar.push({
1907                                     id: r.data.invhist_transfer_item_id,
1908                                     itemsite_id : r.data.invhist_transfer_item_itemsite_id,
1909                                     line:  r.data.invhist_transfer_item_line,
1910                                     qty: r.data.invhist_transfer_item_qty,
1911                                     price : r.data.invhist_transfer_item_unit_price
1912                                 });
1913                                 
1914                              });
1915                              if (err) { 
1916                                 Roo.MessageBox.alert("Error", err);
1917                                 return;
1918                              }
1919                              if (!ar.length) {
1920                                Roo.MessageBox.alert("Error", "Nothing listed to transfer");
1921                                 return;
1922                              }
1923                              _this.form.findField('transfer_items').setValue(  Roo.encode(ar));
1924                             
1925                             var arrivaldate = _this.form.findField('invhist_transfer_arrivaldate').getValue();
1926                             var transferprice = _this.form.findField('invhist_transfer_price').getValue();
1927                             
1928                             if(_this.toLocation._is_internalcompany && !arrivaldate){
1929                                 Roo.MessageBox.alert("Error", "Arrival date must be filled in");
1930                                 return;
1931                             }
1932                             if(_this.toLocation._is_internalcompany && !transferprice.length){
1933                                 Roo.MessageBox.alert("Error", "For inter company transfer a price must be set");
1934                                 return;
1935                             }
1936                             if(!arrivaldate){
1937                                 _this.form.findField('invhist_transfer_arrivaldate').setValue(_this.form.findField('invhist_transfer_transdate').getValue());
1938                             }
1939                             _this.form.doAction("submit");
1940                             
1941                         
1942                         
1943                         
1944                         },
1945                         render : function (_self)
1946                         {
1947                             _this.saveBtn = _self;
1948                         }
1949                     },
1950                     text : "Save"
1951                 }
1952             ]
1953         });
1954     }
1955 };