1 //<script type="text/javascript">
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
5 Pman.Dialog.XtuplePurchaseOrder = {
10 show : function(data, cb)
18 this.dialog.show(this.data._el);
21 this.form.setValues(data);
22 this.form.fireEvent('actioncomplete', this.form, { type: 'setdata', data: data });
30 this.dialog = Roo.factory({
31 xtype: 'LayoutDialog',
36 this.layout.getRegion('center').showPanel(0);
44 title : "New Purchase Order",
48 xtype: 'ContentPanel',
51 title : "Order Details",
57 actioncomplete : function(_self,action)
59 if (action.type == 'setdata') {
60 _this.uploadBtn.disabled = false;
61 if(!_this.data.pohead_id && Pman.Login.authUser.name.length){
63 _this.form.findField('pohead_agent_username').setValue(Pman.Login.authUser.name);
64 _this.form.findField('pohead_orderdate').setValue(new Date());
67 _this.dialog.setTitle("Edit Purchase Order");
69 '_id' : _this.data.pohead_id
71 if(_this.data.office){
72 params['_roo_office'] = _this.data.office;
75 this.load({ method: 'GET', params: params});
78 if (action.type == 'load') {
79 if(_this.data.office){
80 _this.uploadBtn.disabled = true;
83 if (action.result.data.pohead_status == 'U') {
86 var cn = _this.form.findField('pohead_curr_id');
88 if (action.result.data.pohead_id * 1 < 1) {
89 cn.setDisabled(false);
93 _this.grid.footer.onClick('first');
98 if (action.type =='submit') {
101 var cid = this.findField('pohead_id').getValue()*1;
106 if (_this.callback) {
107 _this.callback.call(_this, _this.form.getValues());
113 _this.data.pohead_id = action.result.data.pohead_id;
114 this.fireEvent('actioncomplete', this, {
117 pohead_id : action.result.data.pohead_id
124 rendered : function (form)
128 actionfailed : function (_self, action)
130 _this.dialog.el.unmask();
131 if (action.failureType == 'client') {
132 Roo.MessageBox.alert("Error", "Please fill in all the required fields");
134 if (action.failureType == 'server') {
135 Roo.MessageBox.alert("Error", action.result.errorMsg);
137 _this.dialog.layout.getRegion('center').showPanel(0);
143 style : 'margin:10px;',
144 url : baseURL + '/Xtuple/Roo/Pohead.php',
149 emptyText : "Automatic",
150 fieldLabel : 'Order #',
151 name : 'pohead_number',
159 fieldLabel : 'Order Date',
161 name : 'pohead_orderdate',
167 fieldLabel : 'Estimated Arrival Date',
169 name : 'pohead_bg_arrival_est_day',
175 fieldLabel : 'Estimated Available Date',
177 name : 'pohead_bg_available_est_day',
183 fieldLabel : 'Latest Estimated Available Date',
185 name : 'pohead_bg_available_latest_day',
192 name : 'pohead_bg_va',
198 fieldLabel : 'Vendor',
199 name : 'pohead_vend_id_vend_name',
207 displayField : 'fname',
209 fieldLabel : 'Status',
210 hiddenName : 'pohead_status',
213 name : 'pohead_status',
215 tpl : '<div class="x-grid-cell-text x-btn button"><b>{fname}</b> </div>',
216 triggerAction : 'all',
218 valueField : 'ftype',
221 xtype: 'SimpleStore',
224 [ 'U', "Unreleased"],
228 fields : [ 'ftype', 'fname']
235 displayField : 'curr_name',
237 emptyText : "Select Currency",
238 fieldLabel : 'Currency',
239 forceSelection : true,
240 hiddenName : 'pohead_curr_id',
242 loadingText : "Searching...",
244 name : 'pohead_curr_id_curr_name',
246 qtip : "Select Currency",
247 queryParam : 'query[curr_name]',
248 selectOnFocus : true,
249 tpl : '<div class="x-grid-cell-text x-btn button"><b>{curr_name}</b> </div>',
250 triggerAction : 'all',
252 valueField : 'curr_id',
258 beforeload : function (_self, o){
259 o.params = o.params || {};
263 sortInfo : { direction : 'ASC', field: 'curr_id' },
268 url : baseURL + '/Roo/curr_symbol.php'
275 totalProperty : 'total',
277 {"name":"curr_id","type":"int"},
278 {"name":"curr_name","type":"string"}
287 displayField : 'location_name',
289 emptyText : "Select a location",
290 fieldLabel : 'Location',
291 forceSelection : true,
292 hiddenName : 'pohead_location_id',
294 loadingText : "Searching...",
296 name : 'pohead_location_id_location_name',
298 qtip : "Select terms",
299 queryParam : 'query[location_name]',
300 selectOnFocus : true,
301 tpl : '<div class="x-grid-cell-text x-btn button"><b>{location_name}</b> </div>',
302 triggerAction : 'all',
304 valueField : 'location_id',
310 beforeload : function (_self, o){
311 o.params = o.params || {};
313 o.params.location_netable = 1;
317 sortInfo : { direction : 'ASC', field: 'location_name' },
322 url : baseURL + '/Roo/location.php'
329 totalProperty : 'total',
330 fields : [{"name":"location_id","type":"int"},"location_name"]
338 displayField : 'terms_descrip',
340 emptyText : "Select Terms",
341 fieldLabel : 'Terms',
342 forceSelection : true,
343 hiddenName : 'pohead_terms_id',
345 loadingText : "Searching...",
347 name : 'pohead_terms_id_terms_descrip',
349 qtip : "Select Terms",
350 queryParam : 'query[terms_descrip]',
351 selectOnFocus : true,
352 tpl : '<div class="x-grid-cell-text x-btn button"><b>{terms_descrip}</b> </div>',
353 triggerAction : 'all',
355 valueField : 'terms_id',
361 beforeload : function (_self, o){
362 o.params = o.params || {};
366 sortInfo : { direction : 'ASC', field: 'terms_id' },
371 url : baseURL + '/Roo/Terms.php'
378 totalProperty : 'total',
380 {"name":"terms_id","type":"int"},
381 {"name":"terms_descrip","type":"string"}
390 displayField : 'taxzone_descrip',
392 emptyText : "Select Tax Zone",
393 fieldLabel : 'Tax Zone',
394 forceSelection : true,
395 hiddenName : 'pohead_taxzone_id',
397 loadingText : "Searching...",
399 name : 'pohead_taxzone_id_taxzone_descrip',
401 qtip : "Select Tax Zone",
402 queryParam : 'query[taxzone_descrip]',
403 selectOnFocus : true,
404 tpl : '<div class="x-grid-cell-text x-btn button"><b>{taxzone_descrip}</b> </div>',
405 triggerAction : 'all',
407 valueField : 'taxzone_id',
413 beforeload : function (_self, o){
414 o.params = o.params || {};
418 sortInfo : { direction : 'ASC', field: 'taxzone_id' },
423 url : baseURL + '/Roo/Taxzone.php'
430 totalProperty : 'total',
432 {"name":"taxzone_id","type":"int"},
433 {"name":"taxzone_descrip","type":"string"}
442 displayField : 'emp_name',
444 emptyText : "Select Purchasing Agent",
445 fieldLabel : 'Purchase Agent',
446 forceSelection : true,
447 hiddenName : 'pohead_agent_username',
449 loadingText : "Searching...",
451 name : 'pohead_agent_username',
453 qtip : "Select Purchasing Agent",
454 queryParam : 'query[emp_name]',
455 selectOnFocus : true,
456 tpl : '<div class="x-grid-cell-text x-btn button"><b>{emp_name}</b> </div>',
457 triggerAction : 'all',
459 valueField : 'emp_name',
465 beforeload : function (_self, o){
466 o.params = o.params || {};
470 sortInfo : { direction : 'ASC', field: 'emp_id' },
475 url : baseURL + '/Roo/Emp.php'
482 totalProperty : 'total',
484 {"name":"emp_id","type":"int"},
485 {"name":"emp_name","type":"string"}
493 fieldLabel : 'Comments',
495 name : 'pohead_comments',
501 name : 'pohead_vend_id'
521 activate : function() {
525 var pid = _this.form.findField('pohead_id').getValue() * 1;
527 Roo.MessageBox.alert("Save First", "Please save the purchase order first, before adding items");
528 _this.dialog.layout.getRegion('center').showPanel(0);
533 _this.grid.footer.onClick('first');
541 tableName : 'poitem',
542 title : "Order Items",
550 //_this.dialog = Pman.Dialog.FILL_IN
551 if (_this.panel.active) {
552 this.footer.onClick('first');
555 beforeedit : function (e)
557 var r = e.record.data.is_receipted * 1;
560 Roo.MessageBox.alert("Error", "This item has been receipted");
564 var status = _this.form.findField('pohead_status').getValue();
567 Roo.MessageBox.alert("Error", "This PO has been closed");
574 autoExpandColumn : 'item_descrip1',
581 beforeload : function (_self, o){
582 o.params = o.params || {};
583 var hid = _this.form.findField('pohead_id').getValue();
589 o.params.poitem_pohead_id = hid;
590 o.params._with_item = 1;
591 o.params.is_receipted = 1;
592 o.params._roo_office = _this.data.office ? _this.data.office : baseURL.split('/').pop().substr(0,2);
595 load : function (_self, records, options)
597 _this.grid.footer.updateSummary();
601 sortInfo : { field : 'poitem_linenumber', direction: 'ASC' },
607 url : baseURL + '/Xtuple/Roo/Poitem.php'
614 totalProperty : 'total',
633 var status = _this.form.findField('pohead_status').getValue();
636 Roo.MessageBox.alert("Error", "This PO has been closed");
640 var ct = _this.grid.ds.getCount();
642 var last = ct ? _this.grid.ds.getAt(ct-1).data.poitem_linenumber * 1 + 1 : 1;
644 var dt = _this.form.findField('pohead_orderdate').getValue();
646 var nr = _this.grid.ds.reader.newRow({
648 poitem_linenumber : last,
652 poitem_qty_ordered : 1,
656 _this.grid.stopEditing();
657 _this.grid.ds.insert(_this.grid.ds.getCount(), nr);
658 _this.grid.startEditing(_this.grid.ds.getCount()-1, 1);
661 cls : 'x-btn-text-icon',
663 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
671 var status = _this.form.findField('pohead_status').getValue();
674 Roo.MessageBox.alert("Error", "This PO has been closed");
678 var cs = _this.grid.getSelectionModel().getSelectedCell();
680 Roo.MessageBox.alert("Error", "Select a cell");
683 _this.grid.stopEditing()
684 var r = _this.grid.ds.getAt(cs[0]);
686 if(r.data.is_receipted * 1 > 0){
687 Roo.MessageBox.alert("Error", "This item has been receipted");
692 _this.grid.ds.remove(r);
696 cls : 'x-btn-text-icon',
698 icon : rootURL + '/Pman/templates/images/trash.gif'
703 xtype: 'PagingToolbar',
706 emptyMsg : "No Item found",
708 updateSummary : function() {
712 url : baseURL + '/Xtuple/Roo/Poitem',
\r
715 _roo_office : _this.data.office ? _this.data.office : baseURL.split('/').pop().substr(0,2),
\r
717 poitem_pohead_id : _this.form.findField('pohead_id').getValue()
\r
719 success : function(d) {
721 f.displayEl.update(String.format(
\r
722 "{0} items | Total : {1} {2}",
\r
723 d.data[0].count_item,
\r
724 _this.form.findField('pohead_curr_id').el.dom.value,
\r
735 xtype: 'ColumnModel',
738 dataIndex : 'poitem_linenumber',
741 renderer : function(v) { return String.format('{0}', v); }
744 xtype: 'ColumnModel',
746 dataIndex : 'item_number',
747 header : 'Item code',
749 renderer : function(v) { return String.format('{0}', v); },
757 beforeselect : function (combo, record, index)
759 var ar = _this.grid.activeEditor.record;
762 ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);
763 ar.set('poitem_itemsite_id', record.data.itemsite_id);
769 displayField : 'itemsite_item_id_item_number',
771 emptyText : "Select item",
772 forceSelection : true,
773 hiddenName : 'itemsite_item_id_item_number',
775 loadingText : "Searching...",
777 name : 'item_number',
779 qtip : "Select item",
780 queryParam : 'query[number]',
781 selectOnFocus : true,
782 tpl : '<div class="x-grid-cell-text x-btn button"><b>{itemsite_item_id_item_number}</b> ${item_price:toFixed(2)}- {itemsite_item_id_item_descrip1} </div>',
783 triggerAction : 'all',
785 valueField : 'item_number',
790 beforeload : function (_self, o){
791 o.params = o.params || {};
792 o.params._is_purchased = 1;
796 sortInfo : { direction : 'ASC', field: 'item_number' },
801 url : baseURL + '/Roo/itemsite.php'
808 totalProperty : 'total',
809 fields : [{"name":"item_id","type":"int"},"item_number"]
816 xtype: 'ColumnModel',
818 dataIndex : 'item_descrip1',
819 header : 'Item description',
821 renderer : function(v) { return String.format('{0}', v); }
824 xtype: 'ColumnModel',
826 dataIndex : 'poitem_duedate',
829 renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
832 xtype: 'ColumnModel',
835 dataIndex : 'poitem_qty_ordered',
838 renderer : function(v) { return String.format('{0}', v); },
843 xtype: 'NumberField',
845 allowDecimals : false,
846 decimalPrecision : 0,
848 style : 'text-align:right'
853 xtype: 'ColumnModel',
856 dataIndex : 'poitem_qty_received',
859 renderer : function(v,x,r) {
860 return String.format(
861 r.data.poitem_qty_ordered != (v-r.data.poitem_qty_returned) ? '<span style="color:red">{0}</span>': '{0}',
862 v - r.data.poitem_qty_returned);
866 xtype: 'ColumnModel',
869 dataIndex : 'poitem_qty_vouchered',
870 header : 'Vouchered',
872 renderer : function(v,x,r) {
873 return String.format(
874 r.data.poitem_qty_ordered != v ? '<span style="color:red">{0}</span>': '{0}',
879 xtype: 'ColumnModel',
882 dataIndex : 'poitem_unitprice',
883 header : 'Unit price',
885 renderer : function(v) { return String.format('{0}', (v || v == 0) ? parseFloat(v).toFixed(3) : ''); },
890 xtype: 'NumberField',
892 allowDecimals : false,
893 decimalPrecision : 0,
895 style : 'text-align:right'
903 xtype: 'NestedLayoutPanel',
908 xtype: 'BorderLayout',
915 activate : function() {
916 _this.itempanel = this;
919 if (_this.itemgrid) {
920 _this.itemgrid.footer.onClick('first');
928 tableName : 'poitem',
936 _this.itemgrid = this;
937 //_this.dialog = Pman.Dialog.FILL_IN
938 if (_this.itempanel.active) {
939 this.footer.onClick('first');
942 rowclick : function (_self, rowIndex, e)
945 _this.gltransgrid.footer.onClick('first');
948 autoExpandColumn : 'item_number',
958 click : function (_self, e)
962 url : baseURL + '/Roo/Metasql',
966 _group : 'gltrans_stock',
968 'pohead_number:text' : _this.form.findField('pohead_number').getValue(),
981 xtype: 'RowSelectionModel',
989 beforeload : function (_self, o)
991 o.params = o.params || {};
992 var hid = _this.form.findField('pohead_id').getValue();
998 o.params.poitem_pohead_id = hid;
1000 o.params._with_item = 1;
1005 sortInfo : { field : 'poitem_id', direction: 'ASC' },
1010 url : baseURL + '/Roo/poitem.php'
1013 xtype: 'JsonReader',
1015 totalProperty : 'total',
1036 'name': 'leader_id',
1040 'name': 'leader_office_id',
1044 'name': 'leader_name',
1048 'name': 'leader_phone',
1052 'name': 'leader_fax',
1056 'name': 'leader_email',
1060 'name': 'leader_company_id',
1064 'name': 'leader_role',
1068 'name': 'leader_active',
1072 'name': 'leader_remarks',
1076 'name': 'leader_passwd',
1080 'name': 'leader_owner_id',
1084 'name': 'leader_lang',
1088 'name': 'leader_no_reset_sent',
1092 'name': 'leader_action_type',
1096 'name': 'leader_project_id',
1100 'name': 'leader_deleted_by',
1104 'name': 'leader_deleted_dt',
1108 'name': 'leader_firstname',
1112 'name': 'leader_lastname',
1116 'name': 'leader_name_facebook',
1120 'name': 'leader_url_blog',
1124 'name': 'leader_url_twitter',
1128 'name': 'leader_url_linkedin',
1132 'name': 'leader_crm_lead_percentage',
1136 'name': 'leader_crm_industry_id',
1140 'name': 'leader_crm_updated_action_id',
1144 'name': 'leader_crm_created_action_id',
1148 'name': 'leader_crm_type_id',
1155 xtype: 'PagingToolbar',
1157 displayInfo : false,
1158 displayMsg : "Displaying poitem{0} - {1} of {2}",
1159 emptyMsg : "No item found",
1164 xtype: 'ColumnModel',
1166 dataIndex : 'poitem_linenumber',
1169 renderer : function(v) { return String.format('{0}', v); }
1172 xtype: 'ColumnModel',
1174 dataIndex : 'item_number',
1177 renderer : function(v) { return String.format('{0}', v); }
1180 xtype: 'ColumnModel',
1182 dataIndex : 'poitem_qty_ordered',
1185 renderer : function(v) { return String.format('{0}', v); }
1188 xtype: 'ColumnModel',
1190 dataIndex : 'poitem_qty_received',
1191 header : 'Received',
1193 renderer : function(v,x,r)
1195 return String.format('{0}', (v- r.data.poitem_qty_returned)) ;
1200 xtype: 'ColumnModel',
1202 dataIndex : 'poitem_unitprice',
1203 header : 'Unit Price',
1205 renderer : function(v,x,r)
1208 return String.format('{0}', (v- r.data.poitem_qty_returned) ? parseFloat(v- r.data.poitem_qty_returned).toFixed(3) : '') ;
1219 activate : function() {
1220 _this.gltranspanel = this;
1221 //if (_this.gltransgrid) {
1222 // _this.gltransgrid.footer.onClick('first');
1227 fitContainer : true,
1230 tableName : 'Gltrans',
1238 _this.gltransgrid = this;
1239 //_this.dialog = Pman.Dialog.FILL_IN
1240 // if (_this.gltranspanel.active) {
1241 // this.footer.onClick('first');
1245 autoExpandColumn : 'gltrans_notes',
1248 xtype: 'RowSelectionModel',
1256 beforeload : function (_self, o)
1258 o.params = o.params || {};
1260 var s = _this.itemgrid.getSelectionModel().getSelected();
1262 Roo.MessageBox.alert('Error', 'Please select a item');
1266 o.params._poview = 1;
1267 o.params.gltrans_deleted = 0;
1268 o.params.gltrans_doctype = 'PO';
1269 o.params._linenumber = s.data.poitem_linenumber;
1270 o.params._item = s.data.item_number;
1271 o.params._ponumber = _this.form.findField('pohead_number').getValue();
1276 sortInfo : { field : 'gltrans_id', direction: 'ASC' },
1281 url : baseURL + '/Roo/gltrans.php'
1284 xtype: 'JsonReader',
1286 totalProperty : 'total',
1307 'name': 'leader_id',
1311 'name': 'leader_office_id',
1315 'name': 'leader_name',
1319 'name': 'leader_phone',
1323 'name': 'leader_fax',
1327 'name': 'leader_email',
1331 'name': 'leader_company_id',
1335 'name': 'leader_role',
1339 'name': 'leader_active',
1343 'name': 'leader_remarks',
1347 'name': 'leader_passwd',
1351 'name': 'leader_owner_id',
1355 'name': 'leader_lang',
1359 'name': 'leader_no_reset_sent',
1363 'name': 'leader_action_type',
1367 'name': 'leader_project_id',
1371 'name': 'leader_deleted_by',
1375 'name': 'leader_deleted_dt',
1379 'name': 'leader_firstname',
1383 'name': 'leader_lastname',
1387 'name': 'leader_name_facebook',
1391 'name': 'leader_url_blog',
1395 'name': 'leader_url_twitter',
1399 'name': 'leader_url_linkedin',
1403 'name': 'leader_crm_lead_percentage',
1407 'name': 'leader_crm_industry_id',
1411 'name': 'leader_crm_updated_action_id',
1415 'name': 'leader_crm_created_action_id',
1419 'name': 'leader_crm_type_id',
1426 xtype: 'PagingToolbar',
1429 displayMsg : "Displaying gltrans{0} - {1} of {2}",
1430 emptyMsg : "No gltrans found",
1447 var pohead_number = _this.form.findField('pohead_number').getValue();
1448 var pohead_id = _this.form.findField('pohead_id').getValue();
1450 var addv = function(){
1452 url : baseURL + '/Roo/pohead.php',
1455 pohead_id : pohead_id,
1459 success : function(res) {
1460 Roo.MessageBox.alert('Notice', 'DONE');
1465 Roo.MessageBox.confirm(
1467 "Are you sure to add all the variance for " + pohead_number + " ?",
1481 cls : 'x-btn-text-icon',
1482 text : "Add All Variance",
1483 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1491 var s = _this.gltransgrid.getSelectionModel().getSelected();
1494 Roo.MessageBox.alert('Error','Please select a transaction');
1498 if(s.data.gltrans_misc_id == -1){
1499 Roo.MessageBox.alert('Error','Please select a transaction not variance');
1503 var addit = function(){
1505 url : baseURL + '/Roo/Gltrans.php',
1508 gltrans_id : s.data.gltrans_id,
1512 success : function(res) {
1514 Roo.MessageBox.alert('Error','Variance already exist');
1516 _this.gltransgrid.footer.onClick('refresh');
1522 Roo.MessageBox.confirm(
1524 "Are you sure to add a variance ?",
1538 cls : 'x-btn-text-icon',
1539 text : "Add Variance",
1540 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1548 var s = _this.gltransgrid.getSelectionModel().getSelected();
1551 Roo.MessageBox.alert('Error','Please select a transaction');
1555 if(s.data.gltrans_misc_id != -1){
1556 Roo.MessageBox.alert('Error','Just allow to delete the variance');
1560 var delit = function(){
1562 url : baseURL + '/Roo/Gltrans.php',
1565 gltrans_id : s.data.gltrans_id,
1569 success : function(res) {
1570 _this.gltransgrid.footer.onClick('refresh');
1576 Roo.MessageBox.confirm(
1578 "Are you sure to delete ?",
1592 cls : 'x-btn-text-icon',
1593 text : "Delete Variance",
1594 icon : rootURL + '/Pman/templates/images/trash.gif'
1602 var pohead_number = _this.form.findField('pohead_number').getValue();
1603 var pohead_id = _this.form.findField('pohead_id').getValue();
1605 var fixit = function(){
1607 url : baseURL + '/Roo/pohead.php',
1610 pohead_id : pohead_id,
1614 success : function(res) {
1615 Roo.MessageBox.alert('Notice', 'DONE');
1620 Roo.MessageBox.confirm(
1622 "Are you sure to fix the unit cost of " + pohead_number + " ?",
1636 cls : 'x-btn-text-icon',
1637 text : "Fix Unit Cost",
1638 icon : rootURL + '/Pman/templates/images/trash.gif'
1646 var pohead_number = _this.form.findField('pohead_number').getValue();
1647 var pohead_id = _this.form.findField('pohead_id').getValue();
1649 var delv = function(){
1651 url : baseURL + '/Roo/pohead.php',
1654 pohead_id : pohead_id,
1658 success : function(res) {
1659 Roo.MessageBox.alert('Notice', 'DONE');
1664 Roo.MessageBox.confirm(
1666 "Are you sure to delete the variance on voucher of " + pohead_number + " ?",
1680 cls : 'x-btn-text-icon',
1681 text : "Delete Varinace on voucher",
1682 icon : rootURL + '/Pman/templates/images/trash.gif'
1688 xtype: 'ColumnModel',
1690 dataIndex : 'gltrans_id',
1693 renderer : function(v) { return String.format('{0}', v); }
1696 xtype: 'ColumnModel',
1698 dataIndex : 'gltrans_date',
1701 renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
1704 xtype: 'ColumnModel',
1706 dataIndex : 'gltrans_docnumber',
1709 renderer : function(v) { return String.format('{0}', v); }
1712 xtype: 'ColumnModel',
1714 dataIndex : 'gltrans_amount',
1717 renderer : function(v) { return String.format('{0}', v); }
1720 xtype: 'ColumnModel',
1722 dataIndex : 'gltrans_notes',
1725 renderer : function(v) { return String.format('{0}', v); }
1732 xtype: 'LayoutRegion',
1736 xtype: 'LayoutRegion',
1744 xtype: 'NestedLayoutPanel',
1749 xtype: 'BorderLayout',
1756 activate : function() {
1757 _this.gltxpanel = this;
1758 if (_this.gltxgrid) {
1759 _this.gltxgrid.footer.onClick('first');
1764 fitContainer : true,
1767 tableName : 'invdetail',
1768 title : "invdetail",
1775 _this.gltxgrid = this;
1776 //_this.dialog = Pman.Dialog.FILL_IN
1777 if (_this.gltxpanel.active) {
1778 this.footer.onClick('first');
1781 cellclick : function (_self, rowIndex, columnIndex, e)
1783 if (columnIndex > 0) {
1786 var rec = this.ds.getAt(rowIndex);
1787 rec.set('gltrans_as_summary', rec.data.gltrans_as_summary *1 ? 0 : 1);
1788 _this.gltxdgrid.footer.onClick('first');
1791 autoExpandColumn : 'gltrans_accnt_id_accnt_descrip',
1794 xtype: 'RowSelectionModel',
1797 selectionchange : function (_self)
1799 _this.gltxdgrid.footer.onClick('first');;
1808 beforeload : function (_self, o)
1810 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
1811 if (! o.params.pohead_id ) {
1815 o.params._split_sales = _this.glsalesbtn.pressed ? 1 : 0;
1819 sortInfo : { field : 'item_number', direction: 'ASC' },
1824 url : baseURL + '/Roo/gltrans.php'
1827 xtype: 'JsonReader',
1829 totalProperty : 'total',
1834 'name': 'invdetail_id',
1838 'name': 'invdetail_transtype',
1842 'name': 'invdetail_invhist_id',
1846 'name': 'invdetail_location_id',
1850 'name': 'invdetail_qty',
1854 'name': 'invdetail_comments',
1858 'name': 'invdetail_qty_before',
1862 'name': 'invdetail_qty_after',
1866 'name': 'invdetail_invcitem_id',
1870 'name': 'invdetail_expiration',
1872 'dateFormat': 'Y-m-d'
1875 'name': 'invdetail_warrpurc',
1877 'dateFormat': 'Y-m-d'
1880 'name': 'invdetail_ls_id',
1887 xtype: 'PagingToolbar',
1890 displayMsg : "Displaying invdetail{0} - {1} of {2}",
1891 emptyMsg : "No invdetail found",
1898 render : function (_self)
1900 _this.glsalesbtn = _self;
1902 click : function (_self, e)
1904 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
1907 enableToggle : true,
1909 text : "Split sales"
1915 xtype: 'ColumnModel',
1917 dataIndex : 'gltrans_as_summary',
1920 renderer : function(v,x,r) {
1922 var state = v*1 ? '-checked' : '';
1924 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
1928 xtype: 'ColumnModel',
1930 dataIndex : 'gltrans_accnt_id_accnt_descrip',
1933 renderer : function(v) { return String.format('{0}', v); }
1936 xtype: 'ColumnModel',
1939 dataIndex : 'gltrans_amount_credit',
1942 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
1945 xtype: 'ColumnModel',
1948 dataIndex : 'gltrans_amount_debit',
1951 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
1954 xtype: 'ColumnModel',
1957 dataIndex : 'gltrans_amount_total',
1960 renderer : function(v) { return String.format('<b>{0}</b>', Roo.util.Format.number(v,3)); }
1963 xtype: 'ColumnModel',
1966 dataIndex : 'gltrans_amount_total_unposted',
1967 header : 'Unposted',
1969 renderer : function(v) { return String.format('<span style="color:red">{0}</span>', Roo.util.Format.number(v,3)); }
1978 activate : function() {
1979 _this.gltxdpanel = this;
1980 if (_this.gltxdgrid) {
1981 _this.gltxdgrid.footer.onClick('first');
1986 fitContainer : true,
1989 tableName : 'invdetail',
1990 title : "invdetail",
1997 _this.gltxdgrid = this;
1998 //_this.dialog = Pman.Dialog.FILL_IN
1999 if (_this.gltxdpanel.active) {
2000 this.footer.onClick('first');
2003 cellclick : function (_self, ri, ci, e)
2006 var deleteSel = function() {
2010 url : baseURL + '/Roo/gltrans',
2014 gltrans_id : rec.data.gltrans_id
2017 success : function() {
2018 rec.set('gltrans_posted', false);
2019 rec.set('gltrans_deleted', true);
2020 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2021 _this.gltxgrid.footer.onClick('first');
2026 var undeleteSel = function() {
2030 url : baseURL + '/Roo/gltrans',
2034 gltrans_id : rec.data.gltrans_id
2037 success : function() {
2038 rec.set('gltrans_posted', true);
2039 rec.set('gltrans_deleted', false);
2040 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2041 _this.gltxgrid.footer.onClick('first');
2047 var di = this.colModel.config[ci].dataIndex;
2048 if (di != 'gltrans_posted') {
2054 var rec = this.ds.getAt(ri);
2055 if (rec.data.gltrans_deleted) {
2057 Roo.MessageBox.confirm(
2059 "This should only be used by System Administrators - are you sure you know what you are doing!",
2073 if (!rec.data.gltrans_posted) {
2079 url : baseURL + '/Roo/gltrans',
2083 gltrans_id : rec.data.gltrans_id
2085 success : function (res)
2087 rec.set('gltrans_posted', true);
2088 _this.gltxgrid.footer.onClick('first');
2097 // we have a posted transaction.
2098 // only allow recalled to be deleted..
2099 if (!rec.data.gltrans_notes.match(/(Recall|Ship Order)/)) {
2108 Roo.MessageBox.confirm(
2110 "This should only be used by System Administrators - are you sure you know what you are doing!",
2123 autoExpandColumn : 'gltrans_notes',
2129 beforeload : function (_self, o)
2131 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
2132 var s = _this.gltxgrid.selModel.getSelected();
2137 o.params.gltrans_accnt_id = s.data.gltrans_accnt_id;
2138 o.params.gltrans_is_ship = s.data.gltrans_is_ship;
2139 o.params.gltrans_as_summary = s.data.gltrans_as_summary;
2140 o.params._hide_void = _this.glvoidshow.pressed ? 1 : 0;
2146 sortInfo : { field : 'gltrans_docnumber', direction: 'ASC' },
2151 url : baseURL + '/Roo/gltrans.php'
2154 xtype: 'JsonReader',
2156 totalProperty : 'total',
2161 'name': 'invdetail_id',
2165 'name': 'invdetail_transtype',
2169 'name': 'invdetail_invhist_id',
2173 'name': 'invdetail_location_id',
2177 'name': 'invdetail_qty',
2181 'name': 'invdetail_comments',
2185 'name': 'invdetail_qty_before',
2189 'name': 'invdetail_qty_after',
2193 'name': 'invdetail_invcitem_id',
2197 'name': 'invdetail_expiration',
2199 'dateFormat': 'Y-m-d'
2202 'name': 'invdetail_warrpurc',
2204 'dateFormat': 'Y-m-d'
2207 'name': 'invdetail_ls_id',
2214 xtype: 'PagingToolbar',
2217 displayMsg : "Displaying invdetail{0} - {1} of {2}",
2218 emptyMsg : "No invdetail found",
2225 click : function (_self, e)
2227 new Pman.Download( {
2228 grid : _this.gltxdgrid
2239 render : function (_self)
2241 _this.glvoidshow = _self;
2243 click : function (_self, e)
2245 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
2248 enableToggle : true,
2256 xtype: 'ColumnModel',
2258 dataIndex : 'gltrans_id',
2262 renderer : function(v) { return String.format('{0}', v ); }
2265 xtype: 'ColumnModel',
2267 dataIndex : 'gltrans_date',
2270 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }
2273 xtype: 'ColumnModel',
2275 dataIndex : 'gltrans_docnumber',
2278 renderer : function(v,x,r) {
2279 if (r.data.gltrans_deleted) {
2280 return String.format('<s>{0}</s>', v);
2282 return String.format('{0}', v);
2286 xtype: 'ColumnModel',
2288 dataIndex : 'gltrans_source',
2291 renderer : function(v) { return String.format('{0}', v); }
2294 xtype: 'ColumnModel',
2296 dataIndex : 'gltrans_notes',
2299 renderer : function(v) { return String.format('{0}', v); }
2302 xtype: 'ColumnModel',
2305 dataIndex : 'gltrans_amount',
2308 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2311 xtype: 'ColumnModel',
2313 dataIndex : 'gltrans_posted',
2316 renderer : function(v,x,r) {
2318 var state = v ? '-checked' : '';
2320 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
2328 xtype: 'LayoutRegion',
2332 xtype: 'LayoutRegion',
2341 xtype: 'LayoutRegion',
2343 alwaysShowTabs : true,
2344 tabPosition : 'top',
2359 var hid = _this.form.findField('pohead_id').getValue();
2362 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2368 _dialog.layout.showPanel(1);
2375 var doit = function () {
2385 cls : 'x-btn-text-icon',
2386 text : "Download Purchase Order Items (Excel)",
2387 icon : rootURL + '/Pman/templates/images/save.gif'
2393 render : function (_self)
2395 _this.uploadBtn = _self;
2398 text : "Upload Purchase Order",
2407 click : function (_self, e)
2409 var hid = _this.form.findField('pohead_id').getValue();
2412 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2415 Pman.Dialog.Image.show(
2418 _url : baseURL+'/Xtuple/Import/PurchaseOrder?' + Roo.urlEncode({'pohead_id' : hid})
2423 _this.grid.footer.onClick('first');
2425 Roo.MessageBox.alert("Notice", 'UPLOADED');
2430 text : "Upload Standard Excel"
2436 click : function (_self, e)
2439 var hid = _this.form.findField('pohead_id').getValue();
2442 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2446 Pman.Dialog.Image.show(
2448 _url : baseURL+'/Xtuple/Import/AUPurchaseOrder?' + Roo.urlEncode({'pohead_id' :hid})
2453 _this.grid.footer.onClick('first');
2455 Roo.MessageBox.alert("Notice", 'IMPORTED');
2460 text : "Upload AU Import Excel"
2473 click : function (_self, e)
2475 _this.dialog.hide();
2484 click : function (_self, e)
2489 _this.grid.ds.each(function(r) {
2491 poitem_id : r.data.poitem_id,
2492 poitem_itemsite_id : r.data.poitem_itemsite_id,
2493 poitem_unitprice : r.data.poitem_unitprice,
2494 poitem_qty_ordered : r.data.poitem_qty_ordered
2499 _this.form.findField('items').setValue(JSON.stringify(ar));
2502 _this.form.doAction("submit");
2505 render : function (_self)
2507 _this.saveBtn = _self;