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",
1478 var pohead_number = _this.form.findField('pohead_number').getValue();
1479 var pohead_id = _this.form.findField('pohead_id').getValue();
1481 var addv = function(){
1483 url : baseURL + '/Roo/pohead.php',
1486 pohead_id : pohead_id,
1490 success : function(res) {
1491 Roo.MessageBox.alert('Notice', 'DONE');
1496 Roo.MessageBox.confirm(
1498 "Are you sure to add all the variance for " + pohead_number + " ?",
1512 cls : 'x-btn-text-icon',
1513 text : "Add All Variance",
1514 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1522 var s = _this.gltransgrid.getSelectionModel().getSelected();
1525 Roo.MessageBox.alert('Error','Please select a transaction');
1529 if(s.data.gltrans_misc_id != -1){
1530 Roo.MessageBox.alert('Error','Just allow to delete the variance');
1534 var delit = function(){
1536 url : baseURL + '/Roo/Gltrans.php',
1539 gltrans_id : s.data.gltrans_id,
1543 success : function(res) {
1544 _this.gltransgrid.footer.onClick('refresh');
1550 Roo.MessageBox.confirm(
1552 "Are you sure to delete ?",
1566 cls : 'x-btn-text-icon',
1567 text : "Delete Variance",
1568 icon : rootURL + '/Pman/templates/images/trash.gif'
1576 var pohead_number = _this.form.findField('pohead_number').getValue();
1577 var pohead_id = _this.form.findField('pohead_id').getValue();
1579 var delv = function(){
1581 url : baseURL + '/Roo/pohead.php',
1584 pohead_id : pohead_id,
1588 success : function(res) {
1589 Roo.MessageBox.alert('Notice', 'DONE');
1594 Roo.MessageBox.confirm(
1596 "Are you sure to delete the variance on voucher of " + pohead_number + " ?",
1610 cls : 'x-btn-text-icon',
1611 text : "Delete Varinace on voucher",
1612 icon : rootURL + '/Pman/templates/images/trash.gif'
1623 var pohead_number = _this.form.findField('pohead_number').getValue();
1624 var pohead_id = _this.form.findField('pohead_id').getValue();
1626 var fixit = function(){
1628 url : baseURL + '/Roo/pohead.php',
1631 pohead_id : pohead_id,
1635 success : function(res) {
1636 Roo.MessageBox.alert('Notice', 'DONE');
1641 Roo.MessageBox.confirm(
1643 "Are you sure to fix the unit cost of " + pohead_number + " ?",
1657 cls : 'x-btn-text-icon',
1658 text : "Fix Unit Cost",
1659 icon : rootURL + '/Pman/templates/images/trash.gif'
1667 var s = _this.gltransgrid.selModel.getSelected();
1669 Roo.MessageBox.alert("Error", "Select an item to reverse");
1673 var fixit = function(){
1675 url : baseURL + '/Roo/invdetail.php',
1679 _reverse : s.data.invdetail_id
1681 success : function(res) {
1682 Roo.MessageBox.alert('Notice', 'DONE');
1687 Roo.MessageBox.confirm(
1689 "Are you sure to reverse that line",
1703 cls : 'x-btn-text-icon',
1705 icon : rootURL + '/Pman/templates/images/trash.gif'
1711 xtype: 'ColumnModel',
1713 dataIndex : 'gltrans_id',
1716 renderer : function(v) { return String.format('{0}', v); }
1719 xtype: 'ColumnModel',
1721 dataIndex : 'gltrans_date',
1724 renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
1727 xtype: 'ColumnModel',
1729 dataIndex : 'gltrans_docnumber',
1732 renderer : function(v) { return String.format('{0}', v); }
1735 xtype: 'ColumnModel',
1737 dataIndex : 'gltrans_amount',
1740 renderer : function(v) { return String.format('{0}', v); }
1743 xtype: 'ColumnModel',
1745 dataIndex : 'invdetail_qty',
1748 renderer : function(v) { return String.format('{0}', v); }
1751 xtype: 'ColumnModel',
1753 dataIndex : 'gltrans_notes',
1756 renderer : function(v) { return String.format('{0}', v); }
1763 xtype: 'LayoutRegion',
1767 xtype: 'LayoutRegion',
1775 xtype: 'NestedLayoutPanel',
1780 xtype: 'BorderLayout',
1787 activate : function() {
1788 _this.gltxpanel = this;
1789 if (_this.gltxgrid) {
1790 _this.gltxgrid.footer.onClick('first');
1795 fitContainer : true,
1798 tableName : 'invdetail',
1799 title : "invdetail",
1806 _this.gltxgrid = this;
1807 //_this.dialog = Pman.Dialog.FILL_IN
1808 if (_this.gltxpanel.active) {
1809 this.footer.onClick('first');
1812 cellclick : function (_self, rowIndex, columnIndex, e)
1814 if (columnIndex > 0) {
1817 var rec = this.ds.getAt(rowIndex);
1818 rec.set('gltrans_as_summary', rec.data.gltrans_as_summary *1 ? 0 : 1);
1819 _this.gltxdgrid.footer.onClick('first');
1822 autoExpandColumn : 'gltrans_accnt_id_accnt_descrip',
1825 xtype: 'RowSelectionModel',
1828 selectionchange : function (_self)
1830 _this.gltxdgrid.footer.onClick('first');;
1839 beforeload : function (_self, o)
1841 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
1842 if (! o.params.pohead_id ) {
1846 o.params._split_sales = _this.glsalesbtn.pressed ? 1 : 0;
1850 sortInfo : { field : 'item_number', direction: 'ASC' },
1855 url : baseURL + '/Roo/gltrans.php'
1858 xtype: 'JsonReader',
1860 totalProperty : 'total',
1865 'name': 'invdetail_id',
1869 'name': 'invdetail_transtype',
1873 'name': 'invdetail_invhist_id',
1877 'name': 'invdetail_location_id',
1881 'name': 'invdetail_qty',
1885 'name': 'invdetail_comments',
1889 'name': 'invdetail_qty_before',
1893 'name': 'invdetail_qty_after',
1897 'name': 'invdetail_invcitem_id',
1901 'name': 'invdetail_expiration',
1903 'dateFormat': 'Y-m-d'
1906 'name': 'invdetail_warrpurc',
1908 'dateFormat': 'Y-m-d'
1911 'name': 'invdetail_ls_id',
1918 xtype: 'PagingToolbar',
1921 displayMsg : "Displaying invdetail{0} - {1} of {2}",
1922 emptyMsg : "No invdetail found",
1929 render : function (_self)
1931 _this.glsalesbtn = _self;
1933 click : function (_self, e)
1935 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
1938 enableToggle : true,
1940 text : "Split sales"
1946 xtype: 'ColumnModel',
1948 dataIndex : 'gltrans_as_summary',
1951 renderer : function(v,x,r) {
1953 var state = v*1 ? '-checked' : '';
1955 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
1959 xtype: 'ColumnModel',
1961 dataIndex : 'gltrans_accnt_id_accnt_descrip',
1964 renderer : function(v) { return String.format('{0}', v); }
1967 xtype: 'ColumnModel',
1970 dataIndex : 'gltrans_amount_credit',
1973 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
1976 xtype: 'ColumnModel',
1979 dataIndex : 'gltrans_amount_debit',
1982 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
1985 xtype: 'ColumnModel',
1988 dataIndex : 'gltrans_amount_total',
1991 renderer : function(v) { return String.format('<b>{0}</b>', Roo.util.Format.number(v,3)); }
1994 xtype: 'ColumnModel',
1997 dataIndex : 'gltrans_amount_total_unposted',
1998 header : 'Unposted',
2000 renderer : function(v) { return String.format('<span style="color:red">{0}</span>', Roo.util.Format.number(v,3)); }
2009 activate : function() {
2010 _this.gltxdpanel = this;
2011 if (_this.gltxdgrid) {
2012 _this.gltxdgrid.footer.onClick('first');
2017 fitContainer : true,
2020 tableName : 'invdetail',
2021 title : "invdetail",
2028 _this.gltxdgrid = this;
2029 //_this.dialog = Pman.Dialog.FILL_IN
2030 if (_this.gltxdpanel.active) {
2031 this.footer.onClick('first');
2034 cellclick : function (_self, ri, ci, e)
2037 var deleteSel = function() {
2041 url : baseURL + '/Roo/gltrans',
2045 gltrans_id : rec.data.gltrans_id
2048 success : function() {
2049 rec.set('gltrans_posted', false);
2050 rec.set('gltrans_deleted', true);
2051 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2052 _this.gltxgrid.footer.onClick('first');
2057 var undeleteSel = function() {
2061 url : baseURL + '/Roo/gltrans',
2065 gltrans_id : rec.data.gltrans_id
2068 success : function() {
2069 rec.set('gltrans_posted', true);
2070 rec.set('gltrans_deleted', false);
2071 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2072 _this.gltxgrid.footer.onClick('first');
2078 var di = this.colModel.config[ci].dataIndex;
2079 if (di != 'gltrans_posted') {
2085 var rec = this.ds.getAt(ri);
2086 if (rec.data.gltrans_deleted) {
2088 Roo.MessageBox.confirm(
2090 "This should only be used by System Administrators - are you sure you know what you are doing!",
2104 if (!rec.data.gltrans_posted) {
2110 url : baseURL + '/Roo/gltrans',
2114 gltrans_id : rec.data.gltrans_id
2116 success : function (res)
2118 rec.set('gltrans_posted', true);
2119 _this.gltxgrid.footer.onClick('first');
2128 // we have a posted transaction.
2129 // only allow recalled to be deleted..
2130 if (!rec.data.gltrans_notes.match(/(Recall|Ship Order)/)) {
2139 Roo.MessageBox.confirm(
2141 "This should only be used by System Administrators - are you sure you know what you are doing!",
2154 autoExpandColumn : 'gltrans_notes',
2160 beforeload : function (_self, o)
2162 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
2163 var s = _this.gltxgrid.selModel.getSelected();
2168 o.params.gltrans_accnt_id = s.data.gltrans_accnt_id;
2169 o.params.gltrans_is_ship = s.data.gltrans_is_ship;
2170 o.params.gltrans_as_summary = s.data.gltrans_as_summary;
2171 o.params._hide_void = _this.glvoidshow.pressed ? 1 : 0;
2177 sortInfo : { field : 'gltrans_docnumber', direction: 'ASC' },
2182 url : baseURL + '/Roo/gltrans.php'
2185 xtype: 'JsonReader',
2187 totalProperty : 'total',
2192 'name': 'invdetail_id',
2196 'name': 'invdetail_transtype',
2200 'name': 'invdetail_invhist_id',
2204 'name': 'invdetail_location_id',
2208 'name': 'invdetail_qty',
2212 'name': 'invdetail_comments',
2216 'name': 'invdetail_qty_before',
2220 'name': 'invdetail_qty_after',
2224 'name': 'invdetail_invcitem_id',
2228 'name': 'invdetail_expiration',
2230 'dateFormat': 'Y-m-d'
2233 'name': 'invdetail_warrpurc',
2235 'dateFormat': 'Y-m-d'
2238 'name': 'invdetail_ls_id',
2245 xtype: 'PagingToolbar',
2248 displayMsg : "Displaying invdetail{0} - {1} of {2}",
2249 emptyMsg : "No invdetail found",
2256 click : function (_self, e)
2258 new Pman.Download( {
2259 grid : _this.gltxdgrid
2270 render : function (_self)
2272 _this.glvoidshow = _self;
2274 click : function (_self, e)
2276 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
2279 enableToggle : true,
2287 xtype: 'ColumnModel',
2289 dataIndex : 'gltrans_id',
2293 renderer : function(v) { return String.format('{0}', v ); }
2296 xtype: 'ColumnModel',
2298 dataIndex : 'gltrans_date',
2301 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }
2304 xtype: 'ColumnModel',
2306 dataIndex : 'gltrans_docnumber',
2309 renderer : function(v,x,r) {
2310 if (r.data.gltrans_deleted) {
2311 return String.format('<s>{0}</s>', v);
2313 return String.format('{0}', v);
2317 xtype: 'ColumnModel',
2319 dataIndex : 'gltrans_source',
2322 renderer : function(v) { return String.format('{0}', v); }
2325 xtype: 'ColumnModel',
2327 dataIndex : 'gltrans_notes',
2330 renderer : function(v) { return String.format('{0}', v); }
2333 xtype: 'ColumnModel',
2336 dataIndex : 'gltrans_amount',
2339 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2342 xtype: 'ColumnModel',
2344 dataIndex : 'gltrans_posted',
2347 renderer : function(v,x,r) {
2349 var state = v ? '-checked' : '';
2351 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
2359 xtype: 'LayoutRegion',
2363 xtype: 'LayoutRegion',
2372 xtype: 'LayoutRegion',
2374 alwaysShowTabs : true,
2375 tabPosition : 'top',
2390 var hid = _this.form.findField('pohead_id').getValue();
2393 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2399 _dialog.layout.showPanel(1);
2406 var doit = function () {
2416 cls : 'x-btn-text-icon',
2417 text : "Download Purchase Order Items (Excel)",
2418 icon : rootURL + '/Pman/templates/images/save.gif'
2424 render : function (_self)
2426 _this.uploadBtn = _self;
2429 text : "Upload Purchase Order",
2438 click : function (_self, e)
2440 var hid = _this.form.findField('pohead_id').getValue();
2443 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2446 Pman.Dialog.Image.show(
2449 _url : baseURL+'/Xtuple/Import/PurchaseOrder?' + Roo.urlEncode({'pohead_id' : hid})
2454 _this.grid.footer.onClick('first');
2456 Roo.MessageBox.alert("Notice", 'UPLOADED');
2461 text : "Upload Standard Excel"
2467 click : function (_self, e)
2470 var hid = _this.form.findField('pohead_id').getValue();
2473 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2477 Pman.Dialog.Image.show(
2479 _url : baseURL+'/Xtuple/Import/AUPurchaseOrder?' + Roo.urlEncode({'pohead_id' :hid})
2484 _this.grid.footer.onClick('first');
2486 Roo.MessageBox.alert("Notice", 'IMPORTED');
2491 text : "Upload AU Import Excel"
2504 click : function (_self, e)
2506 _this.dialog.hide();
2515 click : function (_self, e)
2520 _this.grid.ds.each(function(r) {
2522 poitem_id : r.data.poitem_id,
2523 poitem_itemsite_id : r.data.poitem_itemsite_id,
2524 poitem_unitprice : r.data.poitem_unitprice,
2525 poitem_qty_ordered : r.data.poitem_qty_ordered
2530 _this.form.findField('items').setValue(JSON.stringify(ar));
2533 _this.form.doAction("submit");
2536 render : function (_self)
2538 _this.saveBtn = _self;