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