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",
1485 var pohead_number = _this.form.findField('pohead_number').getValue();
1486 var pohead_id = _this.form.findField('pohead_id').getValue();
1488 var addv = function(){
1490 url : baseURL + '/Roo/pohead.php',
1493 pohead_id : pohead_id,
1497 success : function(res) {
1498 Roo.MessageBox.alert('Notice', 'DONE');
1503 Roo.MessageBox.confirm(
1505 "Are you sure to add all the variance for " + pohead_number + " ?",
1519 cls : 'x-btn-text-icon',
1520 text : "Add All Variance",
1521 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1529 var s = _this.gltransgrid.getSelectionModel().getSelected();
1532 Roo.MessageBox.alert('Error','Please select a transaction');
1536 if(s.data.gltrans_misc_id == -1){
1537 Roo.MessageBox.alert('Error','Please select a transaction not variance');
1541 var addit = function(){
1543 url : baseURL + '/Roo/Gltrans.php',
1546 gltrans_id : s.data.gltrans_id,
1550 success : function(res) {
1552 Roo.MessageBox.alert('Error','Variance already exist');
1554 _this.gltransgrid.footer.onClick('refresh');
1560 Roo.MessageBox.confirm(
1562 "Are you sure to add a variance ?",
1576 cls : 'x-btn-text-icon',
1577 text : "Add Variance",
1578 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1586 var s = _this.gltransgrid.getSelectionModel().getSelected();
1589 Roo.MessageBox.alert('Error','Please select a transaction');
1593 if(s.data.gltrans_misc_id != -1){
1594 Roo.MessageBox.alert('Error','Just allow to delete the variance');
1598 var delit = function(){
1600 url : baseURL + '/Roo/Gltrans.php',
1603 gltrans_id : s.data.gltrans_id,
1607 success : function(res) {
1608 _this.gltransgrid.footer.onClick('refresh');
1614 Roo.MessageBox.confirm(
1616 "Are you sure to delete ?",
1630 cls : 'x-btn-text-icon',
1631 text : "Delete Variance",
1632 icon : rootURL + '/Pman/templates/images/trash.gif'
1640 var pohead_number = _this.form.findField('pohead_number').getValue();
1641 var pohead_id = _this.form.findField('pohead_id').getValue();
1643 var fixit = function(){
1645 url : baseURL + '/Roo/pohead.php',
1648 pohead_id : pohead_id,
1652 success : function(res) {
1653 Roo.MessageBox.alert('Notice', 'DONE');
1658 Roo.MessageBox.confirm(
1660 "Are you sure to fix the unit cost of " + pohead_number + " ?",
1674 cls : 'x-btn-text-icon',
1675 text : "Fix Unit Cost",
1676 icon : rootURL + '/Pman/templates/images/trash.gif'
1684 var pohead_number = _this.form.findField('pohead_number').getValue();
1685 var pohead_id = _this.form.findField('pohead_id').getValue();
1687 var delv = function(){
1689 url : baseURL + '/Roo/pohead.php',
1692 pohead_id : pohead_id,
1696 success : function(res) {
1697 Roo.MessageBox.alert('Notice', 'DONE');
1702 Roo.MessageBox.confirm(
1704 "Are you sure to delete the variance on voucher of " + pohead_number + " ?",
1718 cls : 'x-btn-text-icon',
1719 text : "Delete Varinace on voucher",
1720 icon : rootURL + '/Pman/templates/images/trash.gif'
1726 xtype: 'ColumnModel',
1728 dataIndex : 'gltrans_id',
1731 renderer : function(v) { return String.format('{0}', v); }
1734 xtype: 'ColumnModel',
1736 dataIndex : 'gltrans_date',
1739 renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
1742 xtype: 'ColumnModel',
1744 dataIndex : 'gltrans_docnumber',
1747 renderer : function(v) { return String.format('{0}', v); }
1750 xtype: 'ColumnModel',
1752 dataIndex : 'gltrans_amount',
1755 renderer : function(v) { return String.format('{0}', v); }
1758 xtype: 'ColumnModel',
1760 dataIndex : 'gltrans_notes',
1763 renderer : function(v) { return String.format('{0}', v); }
1770 xtype: 'LayoutRegion',
1774 xtype: 'LayoutRegion',
1782 xtype: 'NestedLayoutPanel',
1787 xtype: 'BorderLayout',
1794 activate : function() {
1795 _this.gltxpanel = this;
1796 if (_this.gltxgrid) {
1797 _this.gltxgrid.footer.onClick('first');
1802 fitContainer : true,
1805 tableName : 'invdetail',
1806 title : "invdetail",
1813 _this.gltxgrid = this;
1814 //_this.dialog = Pman.Dialog.FILL_IN
1815 if (_this.gltxpanel.active) {
1816 this.footer.onClick('first');
1819 cellclick : function (_self, rowIndex, columnIndex, e)
1821 if (columnIndex > 0) {
1824 var rec = this.ds.getAt(rowIndex);
1825 rec.set('gltrans_as_summary', rec.data.gltrans_as_summary *1 ? 0 : 1);
1826 _this.gltxdgrid.footer.onClick('first');
1829 autoExpandColumn : 'gltrans_accnt_id_accnt_descrip',
1832 xtype: 'RowSelectionModel',
1835 selectionchange : function (_self)
1837 _this.gltxdgrid.footer.onClick('first');;
1846 beforeload : function (_self, o)
1848 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
1849 if (! o.params.pohead_id ) {
1853 o.params._split_sales = _this.glsalesbtn.pressed ? 1 : 0;
1857 sortInfo : { field : 'item_number', direction: 'ASC' },
1862 url : baseURL + '/Roo/gltrans.php'
1865 xtype: 'JsonReader',
1867 totalProperty : 'total',
1872 'name': 'invdetail_id',
1876 'name': 'invdetail_transtype',
1880 'name': 'invdetail_invhist_id',
1884 'name': 'invdetail_location_id',
1888 'name': 'invdetail_qty',
1892 'name': 'invdetail_comments',
1896 'name': 'invdetail_qty_before',
1900 'name': 'invdetail_qty_after',
1904 'name': 'invdetail_invcitem_id',
1908 'name': 'invdetail_expiration',
1910 'dateFormat': 'Y-m-d'
1913 'name': 'invdetail_warrpurc',
1915 'dateFormat': 'Y-m-d'
1918 'name': 'invdetail_ls_id',
1925 xtype: 'PagingToolbar',
1928 displayMsg : "Displaying invdetail{0} - {1} of {2}",
1929 emptyMsg : "No invdetail found",
1936 render : function (_self)
1938 _this.glsalesbtn = _self;
1940 click : function (_self, e)
1942 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
1945 enableToggle : true,
1947 text : "Split sales"
1953 xtype: 'ColumnModel',
1955 dataIndex : 'gltrans_as_summary',
1958 renderer : function(v,x,r) {
1960 var state = v*1 ? '-checked' : '';
1962 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
1966 xtype: 'ColumnModel',
1968 dataIndex : 'gltrans_accnt_id_accnt_descrip',
1971 renderer : function(v) { return String.format('{0}', v); }
1974 xtype: 'ColumnModel',
1977 dataIndex : 'gltrans_amount_credit',
1980 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
1983 xtype: 'ColumnModel',
1986 dataIndex : 'gltrans_amount_debit',
1989 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
1992 xtype: 'ColumnModel',
1995 dataIndex : 'gltrans_amount_total',
1998 renderer : function(v) { return String.format('<b>{0}</b>', Roo.util.Format.number(v,3)); }
2001 xtype: 'ColumnModel',
2004 dataIndex : 'gltrans_amount_total_unposted',
2005 header : 'Unposted',
2007 renderer : function(v) { return String.format('<span style="color:red">{0}</span>', Roo.util.Format.number(v,3)); }
2016 activate : function() {
2017 _this.gltxdpanel = this;
2018 if (_this.gltxdgrid) {
2019 _this.gltxdgrid.footer.onClick('first');
2024 fitContainer : true,
2027 tableName : 'invdetail',
2028 title : "invdetail",
2035 _this.gltxdgrid = this;
2036 //_this.dialog = Pman.Dialog.FILL_IN
2037 if (_this.gltxdpanel.active) {
2038 this.footer.onClick('first');
2041 cellclick : function (_self, ri, ci, e)
2044 var deleteSel = function() {
2048 url : baseURL + '/Roo/gltrans',
2052 gltrans_id : rec.data.gltrans_id
2055 success : function() {
2056 rec.set('gltrans_posted', false);
2057 rec.set('gltrans_deleted', true);
2058 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2059 _this.gltxgrid.footer.onClick('first');
2064 var undeleteSel = function() {
2068 url : baseURL + '/Roo/gltrans',
2072 gltrans_id : rec.data.gltrans_id
2075 success : function() {
2076 rec.set('gltrans_posted', true);
2077 rec.set('gltrans_deleted', false);
2078 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2079 _this.gltxgrid.footer.onClick('first');
2085 var di = this.colModel.config[ci].dataIndex;
2086 if (di != 'gltrans_posted') {
2092 var rec = this.ds.getAt(ri);
2093 if (rec.data.gltrans_deleted) {
2095 Roo.MessageBox.confirm(
2097 "This should only be used by System Administrators - are you sure you know what you are doing!",
2111 if (!rec.data.gltrans_posted) {
2117 url : baseURL + '/Roo/gltrans',
2121 gltrans_id : rec.data.gltrans_id
2123 success : function (res)
2125 rec.set('gltrans_posted', true);
2126 _this.gltxgrid.footer.onClick('first');
2135 // we have a posted transaction.
2136 // only allow recalled to be deleted..
2137 if (!rec.data.gltrans_notes.match(/(Recall|Ship Order)/)) {
2146 Roo.MessageBox.confirm(
2148 "This should only be used by System Administrators - are you sure you know what you are doing!",
2161 autoExpandColumn : 'gltrans_notes',
2167 beforeload : function (_self, o)
2169 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
2170 var s = _this.gltxgrid.selModel.getSelected();
2175 o.params.gltrans_accnt_id = s.data.gltrans_accnt_id;
2176 o.params.gltrans_is_ship = s.data.gltrans_is_ship;
2177 o.params.gltrans_as_summary = s.data.gltrans_as_summary;
2178 o.params._hide_void = _this.glvoidshow.pressed ? 1 : 0;
2184 sortInfo : { field : 'gltrans_docnumber', direction: 'ASC' },
2189 url : baseURL + '/Roo/gltrans.php'
2192 xtype: 'JsonReader',
2194 totalProperty : 'total',
2199 'name': 'invdetail_id',
2203 'name': 'invdetail_transtype',
2207 'name': 'invdetail_invhist_id',
2211 'name': 'invdetail_location_id',
2215 'name': 'invdetail_qty',
2219 'name': 'invdetail_comments',
2223 'name': 'invdetail_qty_before',
2227 'name': 'invdetail_qty_after',
2231 'name': 'invdetail_invcitem_id',
2235 'name': 'invdetail_expiration',
2237 'dateFormat': 'Y-m-d'
2240 'name': 'invdetail_warrpurc',
2242 'dateFormat': 'Y-m-d'
2245 'name': 'invdetail_ls_id',
2252 xtype: 'PagingToolbar',
2255 displayMsg : "Displaying invdetail{0} - {1} of {2}",
2256 emptyMsg : "No invdetail found",
2263 click : function (_self, e)
2265 new Pman.Download( {
2266 grid : _this.gltxdgrid
2277 render : function (_self)
2279 _this.glvoidshow = _self;
2281 click : function (_self, e)
2283 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
2286 enableToggle : true,
2294 xtype: 'ColumnModel',
2296 dataIndex : 'gltrans_id',
2300 renderer : function(v) { return String.format('{0}', v ); }
2303 xtype: 'ColumnModel',
2305 dataIndex : 'gltrans_date',
2308 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }
2311 xtype: 'ColumnModel',
2313 dataIndex : 'gltrans_docnumber',
2316 renderer : function(v,x,r) {
2317 if (r.data.gltrans_deleted) {
2318 return String.format('<s>{0}</s>', v);
2320 return String.format('{0}', v);
2324 xtype: 'ColumnModel',
2326 dataIndex : 'gltrans_source',
2329 renderer : function(v) { return String.format('{0}', v); }
2332 xtype: 'ColumnModel',
2334 dataIndex : 'gltrans_notes',
2337 renderer : function(v) { return String.format('{0}', v); }
2340 xtype: 'ColumnModel',
2343 dataIndex : 'gltrans_amount',
2346 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2349 xtype: 'ColumnModel',
2351 dataIndex : 'gltrans_posted',
2354 renderer : function(v,x,r) {
2356 var state = v ? '-checked' : '';
2358 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
2366 xtype: 'LayoutRegion',
2370 xtype: 'LayoutRegion',
2379 xtype: 'LayoutRegion',
2381 alwaysShowTabs : true,
2382 tabPosition : 'top',
2397 var hid = _this.form.findField('pohead_id').getValue();
2400 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2406 _dialog.layout.showPanel(1);
2413 var doit = function () {
2423 cls : 'x-btn-text-icon',
2424 text : "Download Purchase Order Items (Excel)",
2425 icon : rootURL + '/Pman/templates/images/save.gif'
2431 render : function (_self)
2433 _this.uploadBtn = _self;
2436 text : "Upload Purchase Order",
2445 click : function (_self, e)
2447 var hid = _this.form.findField('pohead_id').getValue();
2450 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2453 Pman.Dialog.Image.show(
2456 _url : baseURL+'/Xtuple/Import/PurchaseOrder?' + Roo.urlEncode({'pohead_id' : hid})
2461 _this.grid.footer.onClick('first');
2463 Roo.MessageBox.alert("Notice", 'UPLOADED');
2468 text : "Upload Standard Excel"
2474 click : function (_self, e)
2477 var hid = _this.form.findField('pohead_id').getValue();
2480 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2484 Pman.Dialog.Image.show(
2486 _url : baseURL+'/Xtuple/Import/AUPurchaseOrder?' + Roo.urlEncode({'pohead_id' :hid})
2491 _this.grid.footer.onClick('first');
2493 Roo.MessageBox.alert("Notice", 'IMPORTED');
2498 text : "Upload AU Import Excel"
2511 click : function (_self, e)
2513 _this.dialog.hide();
2522 click : function (_self, e)
2527 _this.grid.ds.each(function(r) {
2529 poitem_id : r.data.poitem_id,
2530 poitem_itemsite_id : r.data.poitem_itemsite_id,
2531 poitem_unitprice : r.data.poitem_unitprice,
2532 poitem_qty_ordered : r.data.poitem_qty_ordered
2537 _this.form.findField('items').setValue(JSON.stringify(ar));
2540 _this.form.doAction("submit");
2543 render : function (_self)
2545 _this.saveBtn = _self;