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,
1227 (r.data.tx_qty *1).toFixed(0) ) ;
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",
1478 text : "Apply fixes",
1489 var pohead_number = _this.form.findField('pohead_number').getValue();
1490 var pohead_id = _this.form.findField('pohead_id').getValue();
1492 var fixit = 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 fix the unit cost of " + pohead_number + " ?",
1523 cls : 'x-btn-text-icon',
1524 text : "Fix Unit Cost",
1525 icon : rootURL + '/Pman/templates/images/trash.gif'
1537 var pohead_number = _this.form.findField('pohead_number').getValue();
1538 var pohead_id = _this.form.findField('pohead_id').getValue();
1540 var fixit = function(){
1542 url : baseURL + '/Roo/pohead.php',
1545 pohead_id : pohead_id,
1549 success : function(res) {
1550 Roo.MessageBox.alert('Notice', 'DONE');
1555 Roo.MessageBox.confirm(
1557 "Are you sure to fix the unit cost of " + pohead_number + " ?",
1571 cls : 'x-btn-text-icon',
1572 text : "Fix Unit Cost",
1573 icon : rootURL + '/Pman/templates/images/trash.gif'
1585 var pohead_number = _this.form.findField('pohead_number').getValue();
1586 var pohead_id = _this.form.findField('pohead_id').getValue();
1588 var addv = function(){
1590 url : baseURL + '/Roo/pohead.php',
1593 pohead_id : pohead_id,
1597 success : function(res) {
1598 Roo.MessageBox.alert('Notice', 'DONE');
1603 Roo.MessageBox.confirm(
1605 "Are you sure to add all the variance for " + pohead_number + " ?",
1619 cls : 'x-btn-text-icon',
1620 text : "Add All Variance",
1621 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1629 var s = _this.gltransgrid.getSelectionModel().getSelected();
1632 Roo.MessageBox.alert('Error','Please select a transaction');
1636 if(s.data.gltrans_misc_id != -1){
1637 Roo.MessageBox.alert('Error','Just allow to delete the variance');
1641 var delit = function(){
1643 url : baseURL + '/Roo/Gltrans.php',
1646 gltrans_id : s.data.gltrans_id,
1650 success : function(res) {
1651 _this.gltransgrid.footer.onClick('refresh');
1657 Roo.MessageBox.confirm(
1659 "Are you sure to delete ?",
1673 cls : 'x-btn-text-icon',
1674 text : "Delete Variance",
1675 icon : rootURL + '/Pman/templates/images/trash.gif'
1683 var pohead_number = _this.form.findField('pohead_number').getValue();
1684 var pohead_id = _this.form.findField('pohead_id').getValue();
1686 var delv = function(){
1688 url : baseURL + '/Roo/pohead.php',
1691 pohead_id : pohead_id,
1695 success : function(res) {
1696 Roo.MessageBox.alert('Notice', 'DONE');
1701 Roo.MessageBox.confirm(
1703 "Are you sure to delete the variance on voucher of " + pohead_number + " ?",
1717 cls : 'x-btn-text-icon',
1718 text : "Delete Varinace on voucher",
1719 icon : rootURL + '/Pman/templates/images/trash.gif'
1730 var s = _this.gltransgrid.selModel.getSelected();
1732 Roo.MessageBox.alert("Error", "Select an item to reverse");
1736 var fixit = function(){
1738 url : baseURL + '/Roo/invdetail.php',
1742 _reverse : s.data.invdetail_id
1744 success : function(res) {
1745 Roo.MessageBox.alert('Notice', 'DONE');
1750 Roo.MessageBox.confirm(
1752 "Are you sure to reverse that line",
1766 cls : 'x-btn-text-icon',
1768 icon : rootURL + '/Pman/templates/images/trash.gif'
1774 xtype: 'ColumnModel',
1776 dataIndex : 'gltrans_id',
1779 renderer : function(v) { return String.format('{0}', v); }
1782 xtype: 'ColumnModel',
1784 dataIndex : 'gltrans_date',
1787 renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
1790 xtype: 'ColumnModel',
1792 dataIndex : 'gltrans_docnumber',
1795 renderer : function(v) { return String.format('{0}', v); }
1798 xtype: 'ColumnModel',
1801 dataIndex : 'gltrans_amount',
1804 renderer : function(v,x,r) {
1805 return String.format('{0}', v);
1810 xtype: 'ColumnModel',
1813 dataIndex : 'invdetail_qty',
1816 renderer : function(v,x,r) {
1817 var f = r.data.invfifo_void * 1 ? '<s>{0}</s>' : '{0}';
1819 return String.format(f, (v*1).toFixed(0));
1824 xtype: 'ColumnModel',
1826 dataIndex : 'gltrans_notes',
1829 renderer : function(v) { return String.format('{0}', v); }
1836 xtype: 'LayoutRegion',
1840 xtype: 'LayoutRegion',
1848 xtype: 'NestedLayoutPanel',
1853 xtype: 'BorderLayout',
1860 activate : function() {
1861 _this.gltxpanel = this;
1862 if (_this.gltxgrid) {
1863 _this.gltxgrid.footer.onClick('first');
1868 fitContainer : true,
1871 tableName : 'invdetail',
1872 title : "invdetail",
1879 _this.gltxgrid = this;
1880 //_this.dialog = Pman.Dialog.FILL_IN
1881 if (_this.gltxpanel.active) {
1882 this.footer.onClick('first');
1885 cellclick : function (_self, rowIndex, columnIndex, e)
1887 if (columnIndex > 0) {
1890 var rec = this.ds.getAt(rowIndex);
1891 rec.set('gltrans_as_summary', rec.data.gltrans_as_summary *1 ? 0 : 1);
1892 _this.gltxdgrid.footer.onClick('first');
1895 autoExpandColumn : 'gltrans_accnt_id_accnt_descrip',
1898 xtype: 'RowSelectionModel',
1901 selectionchange : function (_self)
1903 _this.gltxdgrid.footer.onClick('first');;
1912 beforeload : function (_self, o)
1914 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
1915 if (! o.params.pohead_id ) {
1919 o.params._split_sales = _this.glsalesbtn.pressed ? 1 : 0;
1921 load : function (_self, records, options)
1923 _this.gltxdgrid.footer.onClick('first');
1927 sortInfo : { field : 'item_number', direction: 'ASC' },
1932 url : baseURL + '/Roo/gltrans.php'
1935 xtype: 'JsonReader',
1937 totalProperty : 'total',
1942 'name': 'invdetail_id',
1946 'name': 'invdetail_transtype',
1950 'name': 'invdetail_invhist_id',
1954 'name': 'invdetail_location_id',
1958 'name': 'invdetail_qty',
1962 'name': 'invdetail_comments',
1966 'name': 'invdetail_qty_before',
1970 'name': 'invdetail_qty_after',
1974 'name': 'invdetail_invcitem_id',
1978 'name': 'invdetail_expiration',
1980 'dateFormat': 'Y-m-d'
1983 'name': 'invdetail_warrpurc',
1985 'dateFormat': 'Y-m-d'
1988 'name': 'invdetail_ls_id',
1995 xtype: 'PagingToolbar',
1998 displayMsg : "Displaying invdetail{0} - {1} of {2}",
1999 emptyMsg : "No invdetail found",
2006 render : function (_self)
2008 _this.glsalesbtn = _self;
2010 click : function (_self, e)
2012 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
2015 enableToggle : true,
2017 text : "Split sales"
2023 xtype: 'ColumnModel',
2025 dataIndex : 'gltrans_as_summary',
2028 renderer : function(v,x,r) {
2030 var state = v*1 ? '-checked' : '';
2032 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
2036 xtype: 'ColumnModel',
2038 dataIndex : 'gltrans_accnt_id_accnt_descrip',
2041 renderer : function(v) { return String.format('{0}', v); }
2044 xtype: 'ColumnModel',
2047 dataIndex : 'gltrans_amount_credit',
2050 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2053 xtype: 'ColumnModel',
2056 dataIndex : 'gltrans_amount_debit',
2059 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2062 xtype: 'ColumnModel',
2065 dataIndex : 'gltrans_amount_total',
2068 renderer : function(v) { return String.format('<b>{0}</b>', Roo.util.Format.number(v,3)); }
2071 xtype: 'ColumnModel',
2074 dataIndex : 'gltrans_amount_total_unposted',
2075 header : 'Unposted',
2077 renderer : function(v) { return String.format('<span style="color:red">{0}</span>', Roo.util.Format.number(v,3)); }
2086 activate : function() {
2087 _this.gltxdpanel = this;
2088 if (_this.gltxdgrid) {
2089 _this.gltxdgrid.footer.onClick('first');
2094 fitContainer : true,
2097 tableName : 'invdetail',
2098 title : "invdetail",
2105 _this.gltxdgrid = this;
2106 //_this.dialog = Pman.Dialog.FILL_IN
2107 if (_this.gltxdpanel.active) {
2108 this.footer.onClick('first');
2111 cellclick : function (_self, ri, ci, e)
2114 var deleteSel = function() {
2118 url : baseURL + '/Roo/gltrans',
2122 gltrans_id : rec.data.gltrans_id
2125 success : function() {
2126 rec.set('gltrans_posted', false);
2127 rec.set('gltrans_deleted', true);
2128 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2129 _this.gltxgrid.footer.onClick('first');
2134 var undeleteSel = function() {
2138 url : baseURL + '/Roo/gltrans',
2142 gltrans_id : rec.data.gltrans_id
2145 success : function() {
2146 rec.set('gltrans_posted', true);
2147 rec.set('gltrans_deleted', false);
2148 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2149 _this.gltxgrid.footer.onClick('first');
2155 var di = this.colModel.config[ci].dataIndex;
2156 if (di != 'gltrans_posted') {
2162 var rec = this.ds.getAt(ri);
2163 if (rec.data.gltrans_deleted) {
2165 Roo.MessageBox.confirm(
2167 "This should only be used by System Administrators - are you sure you know what you are doing!",
2181 if (!rec.data.gltrans_posted) {
2187 url : baseURL + '/Roo/gltrans',
2191 gltrans_id : rec.data.gltrans_id
2193 success : function (res)
2195 rec.set('gltrans_posted', true);
2196 _this.gltxgrid.footer.onClick('first');
2205 // we have a posted transaction.
2206 // only allow recalled to be deleted..
2207 if (!rec.data.gltrans_notes.match(/(Recall|Ship Order)/)) {
2216 Roo.MessageBox.confirm(
2218 "This should only be used by System Administrators - are you sure you know what you are doing!",
2231 autoExpandColumn : 'gltrans_notes',
2241 render : function (_self)
2243 _this.glvoidshow = _self;
2245 click : function (_self, e)
2247 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
2250 enableToggle : true,
2262 click : function (_self, e)
2265 url : baseURL + '/Roo/Gltrans',
2269 pohead_id : _this.form.findField('pohead_id').getValue(),
2272 success : function() {
2273 _this.gltxpanel.footer.onClick('first');
2288 beforeload : function (_self, o)
2290 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
2291 var s = _this.gltxgrid.selModel.getSelected();
2296 o.params.gltrans_accnt_id = s.data.gltrans_accnt_id;
2297 o.params.gltrans_is_ship = s.data.gltrans_is_ship;
2298 o.params.gltrans_as_summary = s.data.gltrans_as_summary;
2299 o.params._hide_void = _this.glvoidshow.pressed ? 1 : 0;
2305 sortInfo : { field : 'gltrans_docnumber', direction: 'ASC' },
2310 url : baseURL + '/Roo/gltrans.php'
2313 xtype: 'JsonReader',
2315 totalProperty : 'total',
2320 'name': 'invdetail_id',
2324 'name': 'invdetail_transtype',
2328 'name': 'invdetail_invhist_id',
2332 'name': 'invdetail_location_id',
2336 'name': 'invdetail_qty',
2340 'name': 'invdetail_comments',
2344 'name': 'invdetail_qty_before',
2348 'name': 'invdetail_qty_after',
2352 'name': 'invdetail_invcitem_id',
2356 'name': 'invdetail_expiration',
2358 'dateFormat': 'Y-m-d'
2361 'name': 'invdetail_warrpurc',
2363 'dateFormat': 'Y-m-d'
2366 'name': 'invdetail_ls_id',
2373 xtype: 'PagingToolbar',
2376 displayMsg : "Displaying invdetail{0} - {1} of {2}",
2377 emptyMsg : "No invdetail found",
2384 click : function (_self, e)
2386 new Pman.Download( {
2387 grid : _this.gltxdgrid
2398 xtype: 'ColumnModel',
2400 dataIndex : 'gltrans_id',
2404 renderer : function(v) { return String.format('{0}', v ); }
2407 xtype: 'ColumnModel',
2409 dataIndex : 'gltrans_date',
2412 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }
2415 xtype: 'ColumnModel',
2417 dataIndex : 'gltrans_docnumber',
2420 renderer : function(v,x,r) {
2423 if (r.data.gltrans_misc_id > 0 && (r.data.invdetail_id *1) < 1) {
2424 style = ' style="color:red;font-weight:bold"';
2426 if (r.data.gltrans_deleted) {
2427 return String.format('<s'+style+'>{0}</s>', v);
2429 return String.format('<span' + style + '>{0}</span>', v);
2433 xtype: 'ColumnModel',
2435 dataIndex : 'gltrans_source',
2438 renderer : function(v) { return String.format('{0}', v); }
2441 xtype: 'ColumnModel',
2443 dataIndex : 'gltrans_notes',
2446 renderer : function(v) { return String.format('{0}', v); }
2449 xtype: 'ColumnModel',
2452 dataIndex : 'gltrans_amount',
2455 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2458 xtype: 'ColumnModel',
2460 dataIndex : 'gltrans_posted',
2463 renderer : function(v,x,r) {
2465 var state = v ? '-checked' : '';
2467 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
2475 xtype: 'LayoutRegion',
2479 xtype: 'LayoutRegion',
2488 xtype: 'LayoutRegion',
2490 alwaysShowTabs : true,
2491 tabPosition : 'top',
2506 var hid = _this.form.findField('pohead_id').getValue();
2509 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2515 _dialog.layout.showPanel(1);
2522 var doit = function () {
2532 cls : 'x-btn-text-icon',
2533 text : "Download Purchase Order Items (Excel)",
2534 icon : rootURL + '/Pman/templates/images/save.gif'
2540 render : function (_self)
2542 _this.uploadBtn = _self;
2545 text : "Upload Purchase Order",
2554 click : function (_self, e)
2556 var hid = _this.form.findField('pohead_id').getValue();
2559 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2562 Pman.Dialog.Image.show(
2565 _url : baseURL+'/Xtuple/Import/PurchaseOrder?' + Roo.urlEncode({'pohead_id' : hid})
2570 _this.grid.footer.onClick('first');
2572 Roo.MessageBox.alert("Notice", 'UPLOADED');
2577 text : "Upload Standard Excel"
2583 click : function (_self, e)
2586 var hid = _this.form.findField('pohead_id').getValue();
2589 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2593 Pman.Dialog.Image.show(
2595 _url : baseURL+'/Xtuple/Import/AUPurchaseOrder?' + Roo.urlEncode({'pohead_id' :hid})
2600 _this.grid.footer.onClick('first');
2602 Roo.MessageBox.alert("Notice", 'IMPORTED');
2607 text : "Upload AU Import Excel"
2620 click : function (_self, e)
2622 _this.dialog.hide();
2631 click : function (_self, e)
2636 _this.grid.ds.each(function(r) {
2638 poitem_id : r.data.poitem_id,
2639 poitem_itemsite_id : r.data.poitem_itemsite_id,
2640 poitem_unitprice : r.data.poitem_unitprice,
2641 poitem_qty_ordered : r.data.poitem_qty_ordered
2646 _this.form.findField('items').setValue(JSON.stringify(ar));
2649 _this.form.doAction("submit");
2652 render : function (_self)
2654 _this.saveBtn = _self;