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;
1026 load : function (_self, records, options)
1028 _this.gltransgrid.footer.onClick('first');
1032 sortInfo : { field : 'poitem_id', direction: 'ASC' },
1037 url : baseURL + '/Roo/poitem.php'
1040 xtype: 'JsonReader',
1042 totalProperty : 'total',
1063 'name': 'leader_id',
1067 'name': 'leader_office_id',
1071 'name': 'leader_name',
1075 'name': 'leader_phone',
1079 'name': 'leader_fax',
1083 'name': 'leader_email',
1087 'name': 'leader_company_id',
1091 'name': 'leader_role',
1095 'name': 'leader_active',
1099 'name': 'leader_remarks',
1103 'name': 'leader_passwd',
1107 'name': 'leader_owner_id',
1111 'name': 'leader_lang',
1115 'name': 'leader_no_reset_sent',
1119 'name': 'leader_action_type',
1123 'name': 'leader_project_id',
1127 'name': 'leader_deleted_by',
1131 'name': 'leader_deleted_dt',
1135 'name': 'leader_firstname',
1139 'name': 'leader_lastname',
1143 'name': 'leader_name_facebook',
1147 'name': 'leader_url_blog',
1151 'name': 'leader_url_twitter',
1155 'name': 'leader_url_linkedin',
1159 'name': 'leader_crm_lead_percentage',
1163 'name': 'leader_crm_industry_id',
1167 'name': 'leader_crm_updated_action_id',
1171 'name': 'leader_crm_created_action_id',
1175 'name': 'leader_crm_type_id',
1182 xtype: 'PagingToolbar',
1184 displayInfo : false,
1185 displayMsg : "Displaying poitem{0} - {1} of {2}",
1186 emptyMsg : "No item found",
1191 xtype: 'ColumnModel',
1193 dataIndex : 'poitem_linenumber',
1196 renderer : function(v) { return String.format('{0}', v); }
1199 xtype: 'ColumnModel',
1201 dataIndex : 'item_number',
1204 renderer : function(v) { return String.format('{0}', v); }
1207 xtype: 'ColumnModel',
1209 dataIndex : 'poitem_qty_ordered',
1212 renderer : function(v) { return String.format('{0}', v); }
1215 xtype: 'ColumnModel',
1217 dataIndex : 'poitem_qty_received',
1218 header : 'Received',
1220 renderer : function(v,x,r)
1224 var recv = (v- r.data.poitem_qty_returned);
1225 if (recv != r.data.tx_qty) {
1226 return String.format('<s style="color:red;font-weight:bold">{0}</s>{1} ', recv,
1229 return String.format('{0}', (v- r.data.poitem_qty_returned)) ;
1234 xtype: 'ColumnModel',
1236 dataIndex : 'poitem_unitprice',
1237 header : 'Unit Price',
1239 renderer : function(v,x,r)
1242 return String.format('{0}', (v- r.data.poitem_qty_returned) ? parseFloat(v- r.data.poitem_qty_returned).toFixed(3) : '') ;
1253 activate : function() {
1254 _this.gltranspanel = this;
1255 //if (_this.gltransgrid) {
1256 // _this.gltransgrid.footer.onClick('first');
1261 fitContainer : true,
1264 tableName : 'Gltrans',
1272 _this.gltransgrid = this;
1273 //_this.dialog = Pman.Dialog.FILL_IN
1274 // if (_this.gltranspanel.active) {
1275 // this.footer.onClick('first');
1279 autoExpandColumn : 'gltrans_notes',
1282 xtype: 'RowSelectionModel',
1290 beforeload : function (_self, o)
1292 o.params = o.params || {};
1294 var s = _this.itemgrid.getSelectionModel().getSelected();
1300 o.params._poview = 1;
1301 o.params.gltrans_deleted = 0;
1302 o.params.gltrans_doctype = 'PO';
1303 o.params._linenumber = s.data.poitem_linenumber;
1304 o.params._item = s.data.item_number;
1305 o.params._ponumber = _this.form.findField('pohead_number').getValue();
1310 sortInfo : { field : 'gltrans_id', direction: 'ASC' },
1315 url : baseURL + '/Roo/gltrans.php'
1318 xtype: 'JsonReader',
1320 totalProperty : 'total',
1341 'name': 'leader_id',
1345 'name': 'leader_office_id',
1349 'name': 'leader_name',
1353 'name': 'leader_phone',
1357 'name': 'leader_fax',
1361 'name': 'leader_email',
1365 'name': 'leader_company_id',
1369 'name': 'leader_role',
1373 'name': 'leader_active',
1377 'name': 'leader_remarks',
1381 'name': 'leader_passwd',
1385 'name': 'leader_owner_id',
1389 'name': 'leader_lang',
1393 'name': 'leader_no_reset_sent',
1397 'name': 'leader_action_type',
1401 'name': 'leader_project_id',
1405 'name': 'leader_deleted_by',
1409 'name': 'leader_deleted_dt',
1413 'name': 'leader_firstname',
1417 'name': 'leader_lastname',
1421 'name': 'leader_name_facebook',
1425 'name': 'leader_url_blog',
1429 'name': 'leader_url_twitter',
1433 'name': 'leader_url_linkedin',
1437 'name': 'leader_crm_lead_percentage',
1441 'name': 'leader_crm_industry_id',
1445 'name': 'leader_crm_updated_action_id',
1449 'name': 'leader_crm_created_action_id',
1453 'name': 'leader_crm_type_id',
1460 xtype: 'PagingToolbar',
1463 displayMsg : "Displaying gltrans{0} - {1} of {2}",
1464 emptyMsg : "No gltrans found",
1489 var pohead_number = _this.form.findField('pohead_number').getValue();
1490 var pohead_id = _this.form.findField('pohead_id').getValue();
1492 var addv = function(){
1494 url : baseURL + '/Roo/pohead.php',
1497 pohead_id : pohead_id,
1501 success : function(res) {
1502 Roo.MessageBox.alert('Notice', 'DONE');
1507 Roo.MessageBox.confirm(
1509 "Are you sure to add all the variance for " + pohead_number + " ?",
1523 cls : 'x-btn-text-icon',
1524 text : "Add All Variance",
1525 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1533 var s = _this.gltransgrid.getSelectionModel().getSelected();
1536 Roo.MessageBox.alert('Error','Please select a transaction');
1540 if(s.data.gltrans_misc_id != -1){
1541 Roo.MessageBox.alert('Error','Just allow to delete the variance');
1545 var delit = function(){
1547 url : baseURL + '/Roo/Gltrans.php',
1550 gltrans_id : s.data.gltrans_id,
1554 success : function(res) {
1555 _this.gltransgrid.footer.onClick('refresh');
1561 Roo.MessageBox.confirm(
1563 "Are you sure to delete ?",
1577 cls : 'x-btn-text-icon',
1578 text : "Delete Variance",
1579 icon : rootURL + '/Pman/templates/images/trash.gif'
1587 var pohead_number = _this.form.findField('pohead_number').getValue();
1588 var pohead_id = _this.form.findField('pohead_id').getValue();
1590 var delv = function(){
1592 url : baseURL + '/Roo/pohead.php',
1595 pohead_id : pohead_id,
1599 success : function(res) {
1600 Roo.MessageBox.alert('Notice', 'DONE');
1605 Roo.MessageBox.confirm(
1607 "Are you sure to delete the variance on voucher of " + pohead_number + " ?",
1621 cls : 'x-btn-text-icon',
1622 text : "Delete Varinace on voucher",
1623 icon : rootURL + '/Pman/templates/images/trash.gif'
1634 var pohead_number = _this.form.findField('pohead_number').getValue();
1635 var pohead_id = _this.form.findField('pohead_id').getValue();
1637 var fixit = function(){
1639 url : baseURL + '/Roo/pohead.php',
1642 pohead_id : pohead_id,
1646 success : function(res) {
1647 Roo.MessageBox.alert('Notice', 'DONE');
1652 Roo.MessageBox.confirm(
1654 "Are you sure to fix the unit cost of " + pohead_number + " ?",
1668 cls : 'x-btn-text-icon',
1669 text : "Fix Unit Cost",
1670 icon : rootURL + '/Pman/templates/images/trash.gif'
1678 var s = _this.gltransgrid.selModel.getSelected();
1680 Roo.MessageBox.alert("Error", "Select an item to reverse");
1684 var fixit = function(){
1686 url : baseURL + '/Roo/invdetail.php',
1690 _reverse : s.data.invdetail_id
1692 success : function(res) {
1693 Roo.MessageBox.alert('Notice', 'DONE');
1698 Roo.MessageBox.confirm(
1700 "Are you sure to reverse that line",
1714 cls : 'x-btn-text-icon',
1716 icon : rootURL + '/Pman/templates/images/trash.gif'
1722 xtype: 'ColumnModel',
1724 dataIndex : 'gltrans_id',
1727 renderer : function(v) { return String.format('{0}', v); }
1730 xtype: 'ColumnModel',
1732 dataIndex : 'gltrans_date',
1735 renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
1738 xtype: 'ColumnModel',
1740 dataIndex : 'gltrans_docnumber',
1743 renderer : function(v) { return String.format('{0}', v); }
1746 xtype: 'ColumnModel',
1749 dataIndex : 'gltrans_amount',
1752 renderer : function(v,x,r) {
1753 return String.format('{0}', v);
1758 xtype: 'ColumnModel',
1761 dataIndex : 'invdetail_qty',
1764 renderer : function(v,x,r) {
1765 var f = r.data.invfifo_void * 1 ? '<s>{0}</s>' : '{0}';
1767 return String.format(f, (v*1).toFixed(0));
1772 xtype: 'ColumnModel',
1774 dataIndex : 'gltrans_notes',
1777 renderer : function(v) { return String.format('{0}', v); }
1784 xtype: 'LayoutRegion',
1788 xtype: 'LayoutRegion',
1796 xtype: 'NestedLayoutPanel',
1801 xtype: 'BorderLayout',
1808 activate : function() {
1809 _this.gltxpanel = this;
1810 if (_this.gltxgrid) {
1811 _this.gltxgrid.footer.onClick('first');
1816 fitContainer : true,
1819 tableName : 'invdetail',
1820 title : "invdetail",
1827 _this.gltxgrid = this;
1828 //_this.dialog = Pman.Dialog.FILL_IN
1829 if (_this.gltxpanel.active) {
1830 this.footer.onClick('first');
1833 cellclick : function (_self, rowIndex, columnIndex, e)
1835 if (columnIndex > 0) {
1838 var rec = this.ds.getAt(rowIndex);
1839 rec.set('gltrans_as_summary', rec.data.gltrans_as_summary *1 ? 0 : 1);
1840 _this.gltxdgrid.footer.onClick('first');
1843 autoExpandColumn : 'gltrans_accnt_id_accnt_descrip',
1846 xtype: 'RowSelectionModel',
1849 selectionchange : function (_self)
1851 _this.gltxdgrid.footer.onClick('first');;
1860 beforeload : function (_self, o)
1862 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
1863 if (! o.params.pohead_id ) {
1867 o.params._split_sales = _this.glsalesbtn.pressed ? 1 : 0;
1869 load : function (_self, records, options)
1871 _this.gltxdgrid.footer.onClick('first');
1875 sortInfo : { field : 'item_number', direction: 'ASC' },
1880 url : baseURL + '/Roo/gltrans.php'
1883 xtype: 'JsonReader',
1885 totalProperty : 'total',
1890 'name': 'invdetail_id',
1894 'name': 'invdetail_transtype',
1898 'name': 'invdetail_invhist_id',
1902 'name': 'invdetail_location_id',
1906 'name': 'invdetail_qty',
1910 'name': 'invdetail_comments',
1914 'name': 'invdetail_qty_before',
1918 'name': 'invdetail_qty_after',
1922 'name': 'invdetail_invcitem_id',
1926 'name': 'invdetail_expiration',
1928 'dateFormat': 'Y-m-d'
1931 'name': 'invdetail_warrpurc',
1933 'dateFormat': 'Y-m-d'
1936 'name': 'invdetail_ls_id',
1943 xtype: 'PagingToolbar',
1946 displayMsg : "Displaying invdetail{0} - {1} of {2}",
1947 emptyMsg : "No invdetail found",
1954 render : function (_self)
1956 _this.glsalesbtn = _self;
1958 click : function (_self, e)
1960 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
1963 enableToggle : true,
1965 text : "Split sales"
1971 xtype: 'ColumnModel',
1973 dataIndex : 'gltrans_as_summary',
1976 renderer : function(v,x,r) {
1978 var state = v*1 ? '-checked' : '';
1980 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
1984 xtype: 'ColumnModel',
1986 dataIndex : 'gltrans_accnt_id_accnt_descrip',
1989 renderer : function(v) { return String.format('{0}', v); }
1992 xtype: 'ColumnModel',
1995 dataIndex : 'gltrans_amount_credit',
1998 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2001 xtype: 'ColumnModel',
2004 dataIndex : 'gltrans_amount_debit',
2007 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2010 xtype: 'ColumnModel',
2013 dataIndex : 'gltrans_amount_total',
2016 renderer : function(v) { return String.format('<b>{0}</b>', Roo.util.Format.number(v,3)); }
2019 xtype: 'ColumnModel',
2022 dataIndex : 'gltrans_amount_total_unposted',
2023 header : 'Unposted',
2025 renderer : function(v) { return String.format('<span style="color:red">{0}</span>', Roo.util.Format.number(v,3)); }
2034 activate : function() {
2035 _this.gltxdpanel = this;
2036 if (_this.gltxdgrid) {
2037 _this.gltxdgrid.footer.onClick('first');
2042 fitContainer : true,
2045 tableName : 'invdetail',
2046 title : "invdetail",
2053 _this.gltxdgrid = this;
2054 //_this.dialog = Pman.Dialog.FILL_IN
2055 if (_this.gltxdpanel.active) {
2056 this.footer.onClick('first');
2059 cellclick : function (_self, ri, ci, e)
2062 var deleteSel = function() {
2066 url : baseURL + '/Roo/gltrans',
2070 gltrans_id : rec.data.gltrans_id
2073 success : function() {
2074 rec.set('gltrans_posted', false);
2075 rec.set('gltrans_deleted', true);
2076 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2077 _this.gltxgrid.footer.onClick('first');
2082 var undeleteSel = function() {
2086 url : baseURL + '/Roo/gltrans',
2090 gltrans_id : rec.data.gltrans_id
2093 success : function() {
2094 rec.set('gltrans_posted', true);
2095 rec.set('gltrans_deleted', false);
2096 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2097 _this.gltxgrid.footer.onClick('first');
2103 var di = this.colModel.config[ci].dataIndex;
2104 if (di != 'gltrans_posted') {
2110 var rec = this.ds.getAt(ri);
2111 if (rec.data.gltrans_deleted) {
2113 Roo.MessageBox.confirm(
2115 "This should only be used by System Administrators - are you sure you know what you are doing!",
2129 if (!rec.data.gltrans_posted) {
2135 url : baseURL + '/Roo/gltrans',
2139 gltrans_id : rec.data.gltrans_id
2141 success : function (res)
2143 rec.set('gltrans_posted', true);
2144 _this.gltxgrid.footer.onClick('first');
2153 // we have a posted transaction.
2154 // only allow recalled to be deleted..
2155 if (!rec.data.gltrans_notes.match(/(Recall|Ship Order)/)) {
2164 Roo.MessageBox.confirm(
2166 "This should only be used by System Administrators - are you sure you know what you are doing!",
2179 autoExpandColumn : 'gltrans_notes',
2189 render : function (_self)
2191 _this.glvoidshow = _self;
2193 click : function (_self, e)
2195 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
2198 enableToggle : true,
2210 click : function (_self, e)
2213 url : baseURL + '/Roo/Gltrans',
2217 pohead_id : _this.form.findField('pohead_id').getValue(),
2220 success : function() {
2221 _this.gltxpanel.footer.onClick('first');
2236 beforeload : function (_self, o)
2238 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
2239 var s = _this.gltxgrid.selModel.getSelected();
2244 o.params.gltrans_accnt_id = s.data.gltrans_accnt_id;
2245 o.params.gltrans_is_ship = s.data.gltrans_is_ship;
2246 o.params.gltrans_as_summary = s.data.gltrans_as_summary;
2247 o.params._hide_void = _this.glvoidshow.pressed ? 1 : 0;
2253 sortInfo : { field : 'gltrans_docnumber', direction: 'ASC' },
2258 url : baseURL + '/Roo/gltrans.php'
2261 xtype: 'JsonReader',
2263 totalProperty : 'total',
2268 'name': 'invdetail_id',
2272 'name': 'invdetail_transtype',
2276 'name': 'invdetail_invhist_id',
2280 'name': 'invdetail_location_id',
2284 'name': 'invdetail_qty',
2288 'name': 'invdetail_comments',
2292 'name': 'invdetail_qty_before',
2296 'name': 'invdetail_qty_after',
2300 'name': 'invdetail_invcitem_id',
2304 'name': 'invdetail_expiration',
2306 'dateFormat': 'Y-m-d'
2309 'name': 'invdetail_warrpurc',
2311 'dateFormat': 'Y-m-d'
2314 'name': 'invdetail_ls_id',
2321 xtype: 'PagingToolbar',
2324 displayMsg : "Displaying invdetail{0} - {1} of {2}",
2325 emptyMsg : "No invdetail found",
2332 click : function (_self, e)
2334 new Pman.Download( {
2335 grid : _this.gltxdgrid
2346 xtype: 'ColumnModel',
2348 dataIndex : 'gltrans_id',
2352 renderer : function(v) { return String.format('{0}', v ); }
2355 xtype: 'ColumnModel',
2357 dataIndex : 'gltrans_date',
2360 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }
2363 xtype: 'ColumnModel',
2365 dataIndex : 'gltrans_docnumber',
2368 renderer : function(v,x,r) {
2371 if (r.data.gltrans_misc_id > 0 && (r.data.invdetail_id *1) < 1) {
2372 style = ' style="color:red;font-weight:bold"';
2374 if (r.data.gltrans_deleted) {
2375 return String.format('<s'+style+'>{0}</s>', v);
2377 return String.format('<span' + style + '>{0}</span>', v);
2381 xtype: 'ColumnModel',
2383 dataIndex : 'gltrans_source',
2386 renderer : function(v) { return String.format('{0}', v); }
2389 xtype: 'ColumnModel',
2391 dataIndex : 'gltrans_notes',
2394 renderer : function(v) { return String.format('{0}', v); }
2397 xtype: 'ColumnModel',
2400 dataIndex : 'gltrans_amount',
2403 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2406 xtype: 'ColumnModel',
2408 dataIndex : 'gltrans_posted',
2411 renderer : function(v,x,r) {
2413 var state = v ? '-checked' : '';
2415 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
2423 xtype: 'LayoutRegion',
2427 xtype: 'LayoutRegion',
2436 xtype: 'LayoutRegion',
2438 alwaysShowTabs : true,
2439 tabPosition : 'top',
2454 var hid = _this.form.findField('pohead_id').getValue();
2457 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2463 _dialog.layout.showPanel(1);
2470 var doit = function () {
2480 cls : 'x-btn-text-icon',
2481 text : "Download Purchase Order Items (Excel)",
2482 icon : rootURL + '/Pman/templates/images/save.gif'
2488 render : function (_self)
2490 _this.uploadBtn = _self;
2493 text : "Upload Purchase Order",
2502 click : function (_self, e)
2504 var hid = _this.form.findField('pohead_id').getValue();
2507 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2510 Pman.Dialog.Image.show(
2513 _url : baseURL+'/Xtuple/Import/PurchaseOrder?' + Roo.urlEncode({'pohead_id' : hid})
2518 _this.grid.footer.onClick('first');
2520 Roo.MessageBox.alert("Notice", 'UPLOADED');
2525 text : "Upload Standard Excel"
2531 click : function (_self, e)
2534 var hid = _this.form.findField('pohead_id').getValue();
2537 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2541 Pman.Dialog.Image.show(
2543 _url : baseURL+'/Xtuple/Import/AUPurchaseOrder?' + Roo.urlEncode({'pohead_id' :hid})
2548 _this.grid.footer.onClick('first');
2550 Roo.MessageBox.alert("Notice", 'IMPORTED');
2555 text : "Upload AU Import Excel"
2568 click : function (_self, e)
2570 _this.dialog.hide();
2579 click : function (_self, e)
2584 _this.grid.ds.each(function(r) {
2586 poitem_id : r.data.poitem_id,
2587 poitem_itemsite_id : r.data.poitem_itemsite_id,
2588 poitem_unitprice : r.data.poitem_unitprice,
2589 poitem_qty_ordered : r.data.poitem_qty_ordered
2594 _this.form.findField('items').setValue(JSON.stringify(ar));
2597 _this.form.doAction("submit");
2600 render : function (_self)
2602 _this.saveBtn = _self;