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 _this.dontClose = false;
80 if(_this.data.office){
81 _this.uploadBtn.disabled = true;
84 if (action.result.data.pohead_status == 'U') {
87 var cn = _this.form.findField('pohead_curr_id');
89 if (action.result.data.pohead_id * 1 < 1) {
90 cn.setDisabled(false);
94 _this.grid.footer.onClick('first');
99 if (action.type =='submit') {
102 var cid = this.findField('pohead_id').getValue()*1;
103 if (cid && !_this.dontClose) {
107 if (_this.callback) {
108 _this.callback.call(_this, _this.form.getValues());
114 _this.dontClose = false;
115 _this.data.pohead_id = action.result.data.pohead_id;
116 this.fireEvent('actioncomplete', this, {
119 pohead_id : action.result.data.pohead_id
126 rendered : function (form)
130 actionfailed : function (_self, action)
132 _this.dialog.el.unmask();
133 if (action.failureType == 'client') {
134 Roo.MessageBox.alert("Error", "Please fill in all the required fields");
136 if (action.failureType == 'server') {
137 Roo.MessageBox.alert("Error", action.result.errorMsg);
139 _this.dialog.layout.getRegion('center').showPanel(0);
145 style : 'margin:10px;',
146 url : baseURL + '/Xtuple/Roo/Pohead.php',
151 emptyText : "Automatic",
152 fieldLabel : 'Order #',
153 name : 'pohead_number',
161 fieldLabel : 'Order Date',
163 name : 'pohead_orderdate',
169 fieldLabel : 'Estimated Arrival Date',
171 name : 'pohead_bg_arrival_est_day',
177 fieldLabel : 'Estimated Available Date',
179 name : 'pohead_bg_available_est_day',
185 fieldLabel : 'Latest Estimated Available Date',
187 name : 'pohead_bg_available_latest_day',
194 name : 'pohead_bg_va',
200 fieldLabel : 'Vendor',
201 name : 'pohead_vend_id_vend_name',
209 displayField : 'fname',
211 fieldLabel : 'Status',
212 hiddenName : 'pohead_status',
215 name : 'pohead_status',
217 tpl : '<div class="x-grid-cell-text x-btn button"><b>{fname}</b> </div>',
218 triggerAction : 'all',
220 valueField : 'ftype',
223 xtype: 'SimpleStore',
226 [ 'U', "Unreleased"],
230 fields : [ 'ftype', 'fname']
237 displayField : 'curr_name',
239 emptyText : "Select Currency",
240 fieldLabel : 'Currency',
241 forceSelection : true,
242 hiddenName : 'pohead_curr_id',
244 loadingText : "Searching...",
246 name : 'pohead_curr_id_curr_name',
248 qtip : "Select Currency",
249 queryParam : 'query[curr_name]',
250 selectOnFocus : true,
251 tpl : '<div class="x-grid-cell-text x-btn button"><b>{curr_name}</b> </div>',
252 triggerAction : 'all',
254 valueField : 'curr_id',
260 beforeload : function (_self, o){
261 o.params = o.params || {};
265 sortInfo : { direction : 'ASC', field: 'curr_id' },
270 url : baseURL + '/Roo/curr_symbol.php'
277 totalProperty : 'total',
279 {"name":"curr_id","type":"int"},
280 {"name":"curr_name","type":"string"}
289 displayField : 'location_name',
291 emptyText : "Select a location",
292 fieldLabel : 'Location',
293 forceSelection : true,
294 hiddenName : 'pohead_location_id',
296 loadingText : "Searching...",
298 name : 'pohead_location_id_location_name',
300 qtip : "Select terms",
301 queryParam : 'query[location_name]',
302 selectOnFocus : true,
303 tpl : '<div class="x-grid-cell-text x-btn button"><b>{location_name}</b> </div>',
304 triggerAction : 'all',
306 valueField : 'location_id',
312 beforeload : function (_self, o){
313 o.params = o.params || {};
315 o.params.location_netable = 1;
316 o.params._viewType = 'local';
320 sortInfo : { direction : 'ASC', field: 'location_name' },
325 url : baseURL + '/Roo/location.php'
332 totalProperty : 'total',
333 fields : [{"name":"location_id","type":"int"},"location_name"]
341 displayField : 'terms_descrip',
343 emptyText : "Select Terms",
344 fieldLabel : 'Terms',
345 forceSelection : true,
346 hiddenName : 'pohead_terms_id',
348 loadingText : "Searching...",
350 name : 'pohead_terms_id_terms_descrip',
352 qtip : "Select Terms",
353 queryParam : 'query[terms_descrip]',
354 selectOnFocus : true,
355 tpl : '<div class="x-grid-cell-text x-btn button"><b>{terms_descrip}</b> </div>',
356 triggerAction : 'all',
358 valueField : 'terms_id',
364 beforeload : function (_self, o){
365 o.params = o.params || {};
369 sortInfo : { direction : 'ASC', field: 'terms_descrip' },
374 url : baseURL + '/Roo/Terms.php'
381 totalProperty : 'total',
383 {"name":"terms_id","type":"int"},
384 {"name":"terms_descrip","type":"string"}
393 displayField : 'taxzone_descrip',
395 emptyText : "Select Tax Zone",
396 fieldLabel : 'Tax Zone',
397 forceSelection : true,
398 hiddenName : 'pohead_taxzone_id',
400 loadingText : "Searching...",
402 name : 'pohead_taxzone_id_taxzone_descrip',
404 qtip : "Select Tax Zone",
405 queryParam : 'query[taxzone_descrip]',
406 selectOnFocus : true,
407 tpl : '<div class="x-grid-cell-text x-btn button"><b>{taxzone_descrip}</b> </div>',
408 triggerAction : 'all',
410 valueField : 'taxzone_id',
416 beforeload : function (_self, o){
417 o.params = o.params || {};
421 sortInfo : { direction : 'ASC', field: 'taxzone_id' },
426 url : baseURL + '/Roo/Taxzone.php'
433 totalProperty : 'total',
435 {"name":"taxzone_id","type":"int"},
436 {"name":"taxzone_descrip","type":"string"}
445 displayField : 'emp_name',
447 emptyText : "Select Purchasing Agent",
448 fieldLabel : 'Purchase Agent',
449 forceSelection : true,
450 hiddenName : 'pohead_agent_username',
452 loadingText : "Searching...",
454 name : 'pohead_agent_username',
456 qtip : "Select Purchasing Agent",
457 queryParam : 'query[emp_name]',
458 selectOnFocus : true,
459 tpl : '<div class="x-grid-cell-text x-btn button"><b>{emp_name}</b> </div>',
460 triggerAction : 'all',
462 valueField : 'emp_name',
468 beforeload : function (_self, o){
469 o.params = o.params || {};
473 sortInfo : { direction : 'ASC', field: 'emp_id' },
478 url : baseURL + '/Roo/Emp.php'
485 totalProperty : 'total',
487 {"name":"emp_id","type":"int"},
488 {"name":"emp_name","type":"string"}
496 fieldLabel : 'Comments',
498 name : 'pohead_comments',
504 name : 'pohead_vend_id'
524 activate : function() {
528 var pid = _this.form.findField('pohead_id').getValue() * 1;
530 Roo.MessageBox.alert("Save First", "Please save the purchase order first, before adding items");
531 _this.dialog.layout.getRegion('center').showPanel(0);
536 _this.grid.footer.onClick('first');
539 deactivate : function (_self)
544 _this.grid.ds.each(function(r) {
546 poitem_id : r.data.poitem_id,
547 poitem_itemsite_id : r.data.poitem_itemsite_id,
548 poitem_unitprice : r.data.poitem_unitprice,
549 poitem_qty_ordered : r.data.poitem_qty_ordered
554 _this.form.findField('items').setValue(JSON.stringify(ar));
556 _this.dontClose = true;
557 _this.form.doAction("submit");
565 tableName : 'poitem',
566 title : "Order Items",
574 //_this.dialog = Pman.Dialog.FILL_IN
575 if (_this.panel.active) {
576 this.footer.onClick('first');
579 beforeedit : function (e)
581 var r = e.record.data.poitem_qty_received * 1;
584 Roo.MessageBox.alert("Error", "This item has been receipted");
588 var status = _this.form.findField('pohead_status').getValue();
591 Roo.MessageBox.alert("Error", "This PO has been closed");
598 autoExpandColumn : 'item_descrip1',
605 beforeload : function (_self, o){
606 o.params = o.params || {};
607 var hid = _this.form.findField('pohead_id').getValue();
613 o.params.poitem_pohead_id = hid;
614 o.params._with_item = 1;
615 o.params._roo_office = _this.data.office ? _this.data.office : baseURL.split('/').pop().substr(0,2);
618 load : function (_self, records, options)
620 _this.grid.footer.updateSummary();
624 sortInfo : { field : 'poitem_linenumber', direction: 'ASC' },
630 url : baseURL + '/Xtuple/Roo/Poitem.php'
637 totalProperty : 'total',
656 var status = _this.form.findField('pohead_status').getValue();
659 Roo.MessageBox.alert("Error", "This PO has been closed");
663 var ct = _this.grid.ds.getCount();
665 var last = ct ? _this.grid.ds.getAt(ct-1).data.poitem_linenumber * 1 + 1 : 1;
667 var dt = _this.form.findField('pohead_orderdate').getValue();
669 var nr = _this.grid.ds.reader.newRow({
671 poitem_linenumber : last,
675 poitem_qty_ordered : 1,
679 _this.grid.stopEditing();
680 _this.grid.ds.insert(_this.grid.ds.getCount(), nr);
681 _this.grid.startEditing(_this.grid.ds.getCount()-1, 1);
684 cls : 'x-btn-text-icon',
686 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
694 var status = _this.form.findField('pohead_status').getValue();
697 Roo.MessageBox.alert("Error", "This PO has been closed");
701 var cs = _this.grid.getSelectionModel().getSelectedCell();
703 Roo.MessageBox.alert("Error", "Select a cell");
706 _this.grid.stopEditing()
707 var r = _this.grid.ds.getAt(cs[0]);
709 if(r.data.poitem_qty_received * 1 > 0){
710 Roo.MessageBox.alert("Error", "This item has been receipted");
715 _this.grid.ds.remove(r);
719 cls : 'x-btn-text-icon',
721 icon : rootURL + '/Pman/templates/images/trash.gif'
726 xtype: 'PagingToolbar',
729 emptyMsg : "No Item found",
731 updateSummary : function() {
735 url : baseURL + '/Xtuple/Roo/Poitem',
\r
738 _roo_office : _this.data.office ? _this.data.office : baseURL.split('/').pop().substr(0,2),
\r
740 poitem_pohead_id : _this.form.findField('pohead_id').getValue()
\r
742 success : function(d) {
744 f.displayEl.update(String.format(
\r
745 "{0} items | Total : {1} {2}",
\r
746 d.data[0].count_item,
\r
747 _this.form.findField('pohead_curr_id').el.dom.value,
\r
758 xtype: 'ColumnModel',
761 dataIndex : 'poitem_linenumber',
764 renderer : function(v) { return String.format('{0}', v); }
767 xtype: 'ColumnModel',
769 dataIndex : 'item_number',
770 header : 'Item code',
772 renderer : function(v) { return String.format('{0}', v); },
780 beforeselect : function (combo, record, index)
782 var ar = _this.grid.activeEditor.record;
785 ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);
786 ar.set('poitem_itemsite_id', record.data.itemsite_id);
792 displayField : 'itemsite_item_id_item_number',
794 emptyText : "Select item",
795 forceSelection : true,
796 hiddenName : 'itemsite_item_id_item_number',
798 loadingText : "Searching...",
800 name : 'item_number',
802 qtip : "Select item",
803 queryParam : 'query[number]',
804 selectOnFocus : true,
805 tpl : '<div class="x-grid-cell-text x-btn button"><b>{itemsite_item_id_item_number}</b> - {itemsite_item_id_item_descrip1} </div>',
806 triggerAction : 'all',
808 valueField : 'item_number',
813 beforeload : function (_self, o){
814 o.params = o.params || {};
815 o.params.itemsite_posupply = 1;
819 sortInfo : { direction : 'ASC', field: 'item_number' },
824 url : baseURL + '/Roo/itemsite.php'
831 totalProperty : 'total',
832 fields : [{"name":"item_id","type":"int"},"item_number"]
839 xtype: 'ColumnModel',
841 dataIndex : 'item_descrip1',
842 header : 'Item description',
844 renderer : function(v) { return String.format('{0}', v); }
847 xtype: 'ColumnModel',
849 dataIndex : 'poitem_duedate',
852 renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
855 xtype: 'ColumnModel',
858 dataIndex : 'poitem_qty_ordered',
861 renderer : function(v) { return String.format('{0}', v); },
866 xtype: 'NumberField',
868 allowDecimals : false,
869 decimalPrecision : 0,
871 style : 'text-align:right'
876 xtype: 'ColumnModel',
879 dataIndex : 'poitem_qty_received',
882 renderer : function(v,x,r) {
883 return String.format(
884 r.data.poitem_qty_ordered != (v-r.data.poitem_qty_returned) ? '<span style="color:red">{0}</span>': '{0}',
885 v - r.data.poitem_qty_returned);
889 xtype: 'ColumnModel',
892 dataIndex : 'poitem_qty_vouchered',
893 header : 'Vouchered',
895 renderer : function(v,x,r) {
896 return String.format(
897 r.data.poitem_qty_ordered != v ? '<span style="color:red">{0}</span>': '{0}',
902 xtype: 'ColumnModel',
905 dataIndex : 'poitem_unitprice',
906 header : 'Unit price',
908 renderer : function(v) { return String.format('{0}', (v || v == 0) ? parseFloat(v).toFixed(3) : ''); },
913 xtype: 'NumberField',
915 allowDecimals : false,
916 decimalPrecision : 0,
918 style : 'text-align:right'
926 xtype: 'NestedLayoutPanel',
931 xtype: 'BorderLayout',
938 activate : function() {
939 _this.itempanel = this;
942 if (_this.itemgrid) {
943 _this.itemgrid.footer.onClick('first');
951 tableName : 'poitem',
959 _this.itemgrid = this;
960 //_this.dialog = Pman.Dialog.FILL_IN
961 if (_this.itempanel.active) {
962 this.footer.onClick('first');
965 rowclick : function (_self, rowIndex, e)
968 _this.gltransgrid.footer.onClick('first');
971 autoExpandColumn : 'item_number',
981 click : function (_self, e)
985 url : baseURL + '/Roo/Metasql',
989 _group : 'gltrans_stock',
991 'pohead_number:text' : _this.form.findField('pohead_number').getValue(),
1004 xtype: 'RowSelectionModel',
1012 beforeload : function (_self, o)
1014 o.params = o.params || {};
1015 var hid = _this.form.findField('pohead_id').getValue();
1021 o.params.poitem_pohead_id = hid;
1023 o.params._with_item = 1;
1028 sortInfo : { field : 'poitem_id', direction: 'ASC' },
1033 url : baseURL + '/Roo/poitem.php'
1036 xtype: 'JsonReader',
1038 totalProperty : 'total',
1059 'name': 'leader_id',
1063 'name': 'leader_office_id',
1067 'name': 'leader_name',
1071 'name': 'leader_phone',
1075 'name': 'leader_fax',
1079 'name': 'leader_email',
1083 'name': 'leader_company_id',
1087 'name': 'leader_role',
1091 'name': 'leader_active',
1095 'name': 'leader_remarks',
1099 'name': 'leader_passwd',
1103 'name': 'leader_owner_id',
1107 'name': 'leader_lang',
1111 'name': 'leader_no_reset_sent',
1115 'name': 'leader_action_type',
1119 'name': 'leader_project_id',
1123 'name': 'leader_deleted_by',
1127 'name': 'leader_deleted_dt',
1131 'name': 'leader_firstname',
1135 'name': 'leader_lastname',
1139 'name': 'leader_name_facebook',
1143 'name': 'leader_url_blog',
1147 'name': 'leader_url_twitter',
1151 'name': 'leader_url_linkedin',
1155 'name': 'leader_crm_lead_percentage',
1159 'name': 'leader_crm_industry_id',
1163 'name': 'leader_crm_updated_action_id',
1167 'name': 'leader_crm_created_action_id',
1171 'name': 'leader_crm_type_id',
1178 xtype: 'PagingToolbar',
1180 displayInfo : false,
1181 displayMsg : "Displaying poitem{0} - {1} of {2}",
1182 emptyMsg : "No item found",
1187 xtype: 'ColumnModel',
1189 dataIndex : 'poitem_linenumber',
1192 renderer : function(v) { return String.format('{0}', v); }
1195 xtype: 'ColumnModel',
1197 dataIndex : 'item_number',
1200 renderer : function(v) { return String.format('{0}', v); }
1203 xtype: 'ColumnModel',
1205 dataIndex : 'poitem_qty_ordered',
1208 renderer : function(v) { return String.format('{0}', v); }
1211 xtype: 'ColumnModel',
1213 dataIndex : 'poitem_qty_received',
1214 header : 'Received',
1216 renderer : function(v,x,r)
1218 return String.format('{0}', (v- r.data.poitem_qty_returned)) ;
1223 xtype: 'ColumnModel',
1225 dataIndex : 'poitem_unitprice',
1226 header : 'Unit Price',
1228 renderer : function(v,x,r)
1231 return String.format('{0}', (v- r.data.poitem_qty_returned) ? parseFloat(v- r.data.poitem_qty_returned).toFixed(3) : '') ;
1242 activate : function() {
1243 _this.gltranspanel = this;
1244 //if (_this.gltransgrid) {
1245 // _this.gltransgrid.footer.onClick('first');
1250 fitContainer : true,
1253 tableName : 'Gltrans',
1261 _this.gltransgrid = this;
1262 //_this.dialog = Pman.Dialog.FILL_IN
1263 // if (_this.gltranspanel.active) {
1264 // this.footer.onClick('first');
1268 autoExpandColumn : 'gltrans_notes',
1271 xtype: 'RowSelectionModel',
1279 beforeload : function (_self, o)
1281 o.params = o.params || {};
1283 var s = _this.itemgrid.getSelectionModel().getSelected();
1285 Roo.MessageBox.alert('Error', 'Please select a item');
1289 o.params._poview = 1;
1290 o.params.gltrans_deleted = 0;
1291 o.params.gltrans_doctype = 'PO';
1292 o.params._linenumber = s.data.poitem_linenumber;
1293 o.params._item = s.data.item_number;
1294 o.params._ponumber = _this.form.findField('pohead_number').getValue();
1299 sortInfo : { field : 'gltrans_id', direction: 'ASC' },
1304 url : baseURL + '/Roo/gltrans.php'
1307 xtype: 'JsonReader',
1309 totalProperty : 'total',
1330 'name': 'leader_id',
1334 'name': 'leader_office_id',
1338 'name': 'leader_name',
1342 'name': 'leader_phone',
1346 'name': 'leader_fax',
1350 'name': 'leader_email',
1354 'name': 'leader_company_id',
1358 'name': 'leader_role',
1362 'name': 'leader_active',
1366 'name': 'leader_remarks',
1370 'name': 'leader_passwd',
1374 'name': 'leader_owner_id',
1378 'name': 'leader_lang',
1382 'name': 'leader_no_reset_sent',
1386 'name': 'leader_action_type',
1390 'name': 'leader_project_id',
1394 'name': 'leader_deleted_by',
1398 'name': 'leader_deleted_dt',
1402 'name': 'leader_firstname',
1406 'name': 'leader_lastname',
1410 'name': 'leader_name_facebook',
1414 'name': 'leader_url_blog',
1418 'name': 'leader_url_twitter',
1422 'name': 'leader_url_linkedin',
1426 'name': 'leader_crm_lead_percentage',
1430 'name': 'leader_crm_industry_id',
1434 'name': 'leader_crm_updated_action_id',
1438 'name': 'leader_crm_created_action_id',
1442 'name': 'leader_crm_type_id',
1449 xtype: 'PagingToolbar',
1452 displayMsg : "Displaying gltrans{0} - {1} of {2}",
1453 emptyMsg : "No gltrans found",
1482 var pohead_number = _this.form.findField('pohead_number').getValue();
1483 var pohead_id = _this.form.findField('pohead_id').getValue();
1485 var addv = function(){
1487 url : baseURL + '/Roo/pohead.php',
1490 pohead_id : pohead_id,
1494 success : function(res) {
1495 Roo.MessageBox.alert('Notice', 'DONE');
1500 Roo.MessageBox.confirm(
1502 "Are you sure to add all the variance for " + pohead_number + " ?",
1516 cls : 'x-btn-text-icon',
1517 text : "Add All Variance",
1518 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1526 var s = _this.gltransgrid.getSelectionModel().getSelected();
1529 Roo.MessageBox.alert('Error','Please select a transaction');
1533 if(s.data.gltrans_misc_id != -1){
1534 Roo.MessageBox.alert('Error','Just allow to delete the variance');
1538 var delit = function(){
1540 url : baseURL + '/Roo/Gltrans.php',
1543 gltrans_id : s.data.gltrans_id,
1547 success : function(res) {
1548 _this.gltransgrid.footer.onClick('refresh');
1554 Roo.MessageBox.confirm(
1556 "Are you sure to delete ?",
1570 cls : 'x-btn-text-icon',
1571 text : "Delete Variance",
1572 icon : rootURL + '/Pman/templates/images/trash.gif'
1583 var s = _this.gltransgrid.getSelectionModel().getSelected();
1586 Roo.MessageBox.alert('Error','Please select a transaction');
1590 if(s.data.gltrans_misc_id != -1){
1591 Roo.MessageBox.alert('Error','Just allow to delete the variance');
1595 var delit = function(){
1597 url : baseURL + '/Roo/Gltrans.php',
1600 gltrans_id : s.data.gltrans_id,
1604 success : function(res) {
1605 _this.gltransgrid.footer.onClick('refresh');
1611 Roo.MessageBox.confirm(
1613 "Are you sure to delete ?",
1627 cls : 'x-btn-text-icon',
1628 text : "Delete Variance",
1629 icon : rootURL + '/Pman/templates/images/trash.gif'
1637 var pohead_number = _this.form.findField('pohead_number').getValue();
1638 var pohead_id = _this.form.findField('pohead_id').getValue();
1640 var fixit = function(){
1642 url : baseURL + '/Roo/pohead.php',
1645 pohead_id : pohead_id,
1649 success : function(res) {
1650 Roo.MessageBox.alert('Notice', 'DONE');
1655 Roo.MessageBox.confirm(
1657 "Are you sure to fix the unit cost of " + pohead_number + " ?",
1671 cls : 'x-btn-text-icon',
1672 text : "Fix Unit Cost",
1673 icon : rootURL + '/Pman/templates/images/trash.gif'
1681 var pohead_number = _this.form.findField('pohead_number').getValue();
1682 var pohead_id = _this.form.findField('pohead_id').getValue();
1684 var delv = function(){
1686 url : baseURL + '/Roo/pohead.php',
1689 pohead_id : pohead_id,
1693 success : function(res) {
1694 Roo.MessageBox.alert('Notice', 'DONE');
1699 Roo.MessageBox.confirm(
1701 "Are you sure to delete the variance on voucher of " + pohead_number + " ?",
1715 cls : 'x-btn-text-icon',
1716 text : "Delete Varinace on voucher",
1717 icon : rootURL + '/Pman/templates/images/trash.gif'
1723 xtype: 'ColumnModel',
1725 dataIndex : 'gltrans_id',
1728 renderer : function(v) { return String.format('{0}', v); }
1731 xtype: 'ColumnModel',
1733 dataIndex : 'gltrans_date',
1736 renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
1739 xtype: 'ColumnModel',
1741 dataIndex : 'gltrans_docnumber',
1744 renderer : function(v) { return String.format('{0}', v); }
1747 xtype: 'ColumnModel',
1749 dataIndex : 'gltrans_amount',
1752 renderer : function(v) { return String.format('{0}', v); }
1755 xtype: 'ColumnModel',
1757 dataIndex : 'gltrans_notes',
1760 renderer : function(v) { return String.format('{0}', v); }
1767 xtype: 'LayoutRegion',
1771 xtype: 'LayoutRegion',
1779 xtype: 'NestedLayoutPanel',
1784 xtype: 'BorderLayout',
1791 activate : function() {
1792 _this.gltxpanel = this;
1793 if (_this.gltxgrid) {
1794 _this.gltxgrid.footer.onClick('first');
1799 fitContainer : true,
1802 tableName : 'invdetail',
1803 title : "invdetail",
1810 _this.gltxgrid = this;
1811 //_this.dialog = Pman.Dialog.FILL_IN
1812 if (_this.gltxpanel.active) {
1813 this.footer.onClick('first');
1816 cellclick : function (_self, rowIndex, columnIndex, e)
1818 if (columnIndex > 0) {
1821 var rec = this.ds.getAt(rowIndex);
1822 rec.set('gltrans_as_summary', rec.data.gltrans_as_summary *1 ? 0 : 1);
1823 _this.gltxdgrid.footer.onClick('first');
1826 autoExpandColumn : 'gltrans_accnt_id_accnt_descrip',
1829 xtype: 'RowSelectionModel',
1832 selectionchange : function (_self)
1834 _this.gltxdgrid.footer.onClick('first');;
1843 beforeload : function (_self, o)
1845 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
1846 if (! o.params.pohead_id ) {
1850 o.params._split_sales = _this.glsalesbtn.pressed ? 1 : 0;
1854 sortInfo : { field : 'item_number', direction: 'ASC' },
1859 url : baseURL + '/Roo/gltrans.php'
1862 xtype: 'JsonReader',
1864 totalProperty : 'total',
1869 'name': 'invdetail_id',
1873 'name': 'invdetail_transtype',
1877 'name': 'invdetail_invhist_id',
1881 'name': 'invdetail_location_id',
1885 'name': 'invdetail_qty',
1889 'name': 'invdetail_comments',
1893 'name': 'invdetail_qty_before',
1897 'name': 'invdetail_qty_after',
1901 'name': 'invdetail_invcitem_id',
1905 'name': 'invdetail_expiration',
1907 'dateFormat': 'Y-m-d'
1910 'name': 'invdetail_warrpurc',
1912 'dateFormat': 'Y-m-d'
1915 'name': 'invdetail_ls_id',
1922 xtype: 'PagingToolbar',
1925 displayMsg : "Displaying invdetail{0} - {1} of {2}",
1926 emptyMsg : "No invdetail found",
1933 render : function (_self)
1935 _this.glsalesbtn = _self;
1937 click : function (_self, e)
1939 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
1942 enableToggle : true,
1944 text : "Split sales"
1950 xtype: 'ColumnModel',
1952 dataIndex : 'gltrans_as_summary',
1955 renderer : function(v,x,r) {
1957 var state = v*1 ? '-checked' : '';
1959 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
1963 xtype: 'ColumnModel',
1965 dataIndex : 'gltrans_accnt_id_accnt_descrip',
1968 renderer : function(v) { return String.format('{0}', v); }
1971 xtype: 'ColumnModel',
1974 dataIndex : 'gltrans_amount_credit',
1977 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
1980 xtype: 'ColumnModel',
1983 dataIndex : 'gltrans_amount_debit',
1986 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
1989 xtype: 'ColumnModel',
1992 dataIndex : 'gltrans_amount_total',
1995 renderer : function(v) { return String.format('<b>{0}</b>', Roo.util.Format.number(v,3)); }
1998 xtype: 'ColumnModel',
2001 dataIndex : 'gltrans_amount_total_unposted',
2002 header : 'Unposted',
2004 renderer : function(v) { return String.format('<span style="color:red">{0}</span>', Roo.util.Format.number(v,3)); }
2013 activate : function() {
2014 _this.gltxdpanel = this;
2015 if (_this.gltxdgrid) {
2016 _this.gltxdgrid.footer.onClick('first');
2021 fitContainer : true,
2024 tableName : 'invdetail',
2025 title : "invdetail",
2032 _this.gltxdgrid = this;
2033 //_this.dialog = Pman.Dialog.FILL_IN
2034 if (_this.gltxdpanel.active) {
2035 this.footer.onClick('first');
2038 cellclick : function (_self, ri, ci, e)
2041 var deleteSel = function() {
2045 url : baseURL + '/Roo/gltrans',
2049 gltrans_id : rec.data.gltrans_id
2052 success : function() {
2053 rec.set('gltrans_posted', false);
2054 rec.set('gltrans_deleted', true);
2055 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2056 _this.gltxgrid.footer.onClick('first');
2061 var undeleteSel = function() {
2065 url : baseURL + '/Roo/gltrans',
2069 gltrans_id : rec.data.gltrans_id
2072 success : function() {
2073 rec.set('gltrans_posted', true);
2074 rec.set('gltrans_deleted', false);
2075 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2076 _this.gltxgrid.footer.onClick('first');
2082 var di = this.colModel.config[ci].dataIndex;
2083 if (di != 'gltrans_posted') {
2089 var rec = this.ds.getAt(ri);
2090 if (rec.data.gltrans_deleted) {
2092 Roo.MessageBox.confirm(
2094 "This should only be used by System Administrators - are you sure you know what you are doing!",
2108 if (!rec.data.gltrans_posted) {
2114 url : baseURL + '/Roo/gltrans',
2118 gltrans_id : rec.data.gltrans_id
2120 success : function (res)
2122 rec.set('gltrans_posted', true);
2123 _this.gltxgrid.footer.onClick('first');
2132 // we have a posted transaction.
2133 // only allow recalled to be deleted..
2134 if (!rec.data.gltrans_notes.match(/(Recall|Ship Order)/)) {
2143 Roo.MessageBox.confirm(
2145 "This should only be used by System Administrators - are you sure you know what you are doing!",
2158 autoExpandColumn : 'gltrans_notes',
2164 beforeload : function (_self, o)
2166 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
2167 var s = _this.gltxgrid.selModel.getSelected();
2172 o.params.gltrans_accnt_id = s.data.gltrans_accnt_id;
2173 o.params.gltrans_is_ship = s.data.gltrans_is_ship;
2174 o.params.gltrans_as_summary = s.data.gltrans_as_summary;
2175 o.params._hide_void = _this.glvoidshow.pressed ? 1 : 0;
2181 sortInfo : { field : 'gltrans_docnumber', direction: 'ASC' },
2186 url : baseURL + '/Roo/gltrans.php'
2189 xtype: 'JsonReader',
2191 totalProperty : 'total',
2196 'name': 'invdetail_id',
2200 'name': 'invdetail_transtype',
2204 'name': 'invdetail_invhist_id',
2208 'name': 'invdetail_location_id',
2212 'name': 'invdetail_qty',
2216 'name': 'invdetail_comments',
2220 'name': 'invdetail_qty_before',
2224 'name': 'invdetail_qty_after',
2228 'name': 'invdetail_invcitem_id',
2232 'name': 'invdetail_expiration',
2234 'dateFormat': 'Y-m-d'
2237 'name': 'invdetail_warrpurc',
2239 'dateFormat': 'Y-m-d'
2242 'name': 'invdetail_ls_id',
2249 xtype: 'PagingToolbar',
2252 displayMsg : "Displaying invdetail{0} - {1} of {2}",
2253 emptyMsg : "No invdetail found",
2260 click : function (_self, e)
2262 new Pman.Download( {
2263 grid : _this.gltxdgrid
2274 render : function (_self)
2276 _this.glvoidshow = _self;
2278 click : function (_self, e)
2280 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
2283 enableToggle : true,
2291 xtype: 'ColumnModel',
2293 dataIndex : 'gltrans_id',
2297 renderer : function(v) { return String.format('{0}', v ); }
2300 xtype: 'ColumnModel',
2302 dataIndex : 'gltrans_date',
2305 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }
2308 xtype: 'ColumnModel',
2310 dataIndex : 'gltrans_docnumber',
2313 renderer : function(v,x,r) {
2314 if (r.data.gltrans_deleted) {
2315 return String.format('<s>{0}</s>', v);
2317 return String.format('{0}', v);
2321 xtype: 'ColumnModel',
2323 dataIndex : 'gltrans_source',
2326 renderer : function(v) { return String.format('{0}', v); }
2329 xtype: 'ColumnModel',
2331 dataIndex : 'gltrans_notes',
2334 renderer : function(v) { return String.format('{0}', v); }
2337 xtype: 'ColumnModel',
2340 dataIndex : 'gltrans_amount',
2343 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2346 xtype: 'ColumnModel',
2348 dataIndex : 'gltrans_posted',
2351 renderer : function(v,x,r) {
2353 var state = v ? '-checked' : '';
2355 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
2363 xtype: 'LayoutRegion',
2367 xtype: 'LayoutRegion',
2376 xtype: 'LayoutRegion',
2378 alwaysShowTabs : true,
2379 tabPosition : 'top',
2394 var hid = _this.form.findField('pohead_id').getValue();
2397 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2403 _dialog.layout.showPanel(1);
2410 var doit = function () {
2420 cls : 'x-btn-text-icon',
2421 text : "Download Purchase Order Items (Excel)",
2422 icon : rootURL + '/Pman/templates/images/save.gif'
2428 render : function (_self)
2430 _this.uploadBtn = _self;
2433 text : "Upload Purchase Order",
2442 click : function (_self, e)
2444 var hid = _this.form.findField('pohead_id').getValue();
2447 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2450 Pman.Dialog.Image.show(
2453 _url : baseURL+'/Xtuple/Import/PurchaseOrder?' + Roo.urlEncode({'pohead_id' : hid})
2458 _this.grid.footer.onClick('first');
2460 Roo.MessageBox.alert("Notice", 'UPLOADED');
2465 text : "Upload Standard Excel"
2471 click : function (_self, e)
2474 var hid = _this.form.findField('pohead_id').getValue();
2477 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2481 Pman.Dialog.Image.show(
2483 _url : baseURL+'/Xtuple/Import/AUPurchaseOrder?' + Roo.urlEncode({'pohead_id' :hid})
2488 _this.grid.footer.onClick('first');
2490 Roo.MessageBox.alert("Notice", 'IMPORTED');
2495 text : "Upload AU Import Excel"
2508 click : function (_self, e)
2510 _this.dialog.hide();
2519 click : function (_self, e)
2524 _this.grid.ds.each(function(r) {
2526 poitem_id : r.data.poitem_id,
2527 poitem_itemsite_id : r.data.poitem_itemsite_id,
2528 poitem_unitprice : r.data.poitem_unitprice,
2529 poitem_qty_ordered : r.data.poitem_qty_ordered
2534 _this.form.findField('items').setValue(JSON.stringify(ar));
2537 _this.form.doAction("submit");
2540 render : function (_self)
2542 _this.saveBtn = _self;