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());
65 _this.form.findField('pohead_bg_arrival_est_day').setValue(new Date());
66 _this.form.findField('pohead_bg_available_est_day').setValue(new Date());
67 _this.form.findField('pohead_bg_available_latest_day').setValue(new Date());
70 _this.dialog.setTitle("Edit Purchase Order");
72 '_id' : _this.data.pohead_id
74 if(_this.data.office){
75 params['_roo_office'] = _this.data.office;
78 this.load({ method: 'GET', params: params});
81 if (action.type == 'load') {
82 _this.dontClose = false;
83 if(_this.data.office){
84 _this.uploadBtn.disabled = true;
87 if (action.result.data.pohead_status == 'U') {
90 var cn = _this.form.findField('pohead_curr_id');
92 if (action.result.data.pohead_id * 1 < 1) {
93 cn.setDisabled(false);
97 _this.grid.footer.onClick('first');
102 if (action.type =='submit') {
105 var cid = this.findField('pohead_id').getValue()*1;
106 if (cid && !_this.dontClose) {
110 if (_this.callback) {
111 _this.callback.call(_this, _this.form.getValues());
117 _this.dontClose = false;
118 _this.data.pohead_id = action.result.data.pohead_id;
119 this.fireEvent('actioncomplete', this, {
122 pohead_id : action.result.data.pohead_id
129 rendered : function (form)
133 actionfailed : function (_self, action)
135 _this.dialog.el.unmask();
136 if (action.failureType == 'client') {
137 Roo.MessageBox.alert("Error", "Please fill in all the required fields");
139 if (action.failureType == 'server') {
140 Roo.MessageBox.alert("Error", action.result.errorMsg);
142 _this.dialog.layout.getRegion('center').showPanel(0);
148 style : 'margin:10px;',
149 url : baseURL + '/Xtuple/Roo/Pohead.php',
154 emptyText : "Automatic",
155 fieldLabel : 'Order #',
156 name : 'pohead_number',
164 fieldLabel : 'Order Date',
166 name : 'pohead_orderdate',
172 fieldLabel : 'Estimated Arrival Date',
174 name : 'pohead_bg_arrival_est_day',
180 fieldLabel : 'Estimated Available Date',
182 name : 'pohead_bg_available_est_day',
188 fieldLabel : 'Latest Estimated Available Date',
190 name : 'pohead_bg_available_latest_day',
197 name : 'pohead_bg_va',
203 fieldLabel : 'Vendor',
204 name : 'pohead_vend_id_vend_name',
212 displayField : 'fname',
214 fieldLabel : 'Status',
215 hiddenName : 'pohead_status',
218 name : 'pohead_status',
220 tpl : '<div class="x-grid-cell-text x-btn button"><b>{fname}</b> </div>',
221 triggerAction : 'all',
223 valueField : 'ftype',
226 xtype: 'SimpleStore',
229 [ 'U', "Unreleased"],
233 fields : [ 'ftype', 'fname']
240 displayField : 'curr_name',
242 emptyText : "Select Currency",
243 fieldLabel : 'Currency',
244 forceSelection : true,
245 hiddenName : 'pohead_curr_id',
247 loadingText : "Searching...",
249 name : 'pohead_curr_id_curr_name',
251 qtip : "Select Currency",
252 queryParam : 'query[curr_name]',
253 selectOnFocus : true,
254 tpl : '<div class="x-grid-cell-text x-btn button"><b>{curr_name}</b> </div>',
255 triggerAction : 'all',
257 valueField : 'curr_id',
263 beforeload : function (_self, o){
264 o.params = o.params || {};
268 sortInfo : { direction : 'ASC', field: 'curr_id' },
273 url : baseURL + '/Roo/curr_symbol.php'
280 totalProperty : 'total',
282 {"name":"curr_id","type":"int"},
283 {"name":"curr_name","type":"string"}
292 displayField : 'location_name',
294 emptyText : "Select a location",
295 fieldLabel : 'Location',
296 forceSelection : true,
297 hiddenName : 'pohead_location_id',
299 loadingText : "Searching...",
301 name : 'pohead_location_id_location_name',
303 qtip : "Select terms",
304 queryParam : 'query[location_name]',
305 selectOnFocus : true,
306 tpl : '<div class="x-grid-cell-text x-btn button"><b>{location_name}</b> </div>',
307 triggerAction : 'all',
309 valueField : 'location_id',
315 beforeload : function (_self, o){
316 o.params = o.params || {};
318 o.params.location_netable = 1;
319 o.params._viewType = 'local';
323 sortInfo : { direction : 'ASC', field: 'location_name' },
328 url : baseURL + '/Roo/location.php'
335 totalProperty : 'total',
336 fields : [{"name":"location_id","type":"int"},"location_name"]
344 displayField : 'terms_descrip',
346 emptyText : "Select Terms",
347 fieldLabel : 'Terms',
348 forceSelection : true,
349 hiddenName : 'pohead_terms_id',
351 loadingText : "Searching...",
353 name : 'pohead_terms_id_terms_descrip',
355 qtip : "Select Terms",
356 queryParam : 'query[terms_descrip]',
357 selectOnFocus : true,
358 tpl : '<div class="x-grid-cell-text x-btn button"><b>{terms_descrip}</b> </div>',
359 triggerAction : 'all',
361 valueField : 'terms_id',
367 beforeload : function (_self, o){
368 o.params = o.params || {};
372 sortInfo : { direction : 'ASC', field: 'terms_descrip' },
377 url : baseURL + '/Roo/Terms.php'
384 totalProperty : 'total',
386 {"name":"terms_id","type":"int"},
387 {"name":"terms_descrip","type":"string"}
396 displayField : 'taxzone_descrip',
398 emptyText : "Select Tax Zone",
399 fieldLabel : 'Tax Zone',
400 forceSelection : true,
401 hiddenName : 'pohead_taxzone_id',
403 loadingText : "Searching...",
405 name : 'pohead_taxzone_id_taxzone_descrip',
407 qtip : "Select Tax Zone",
408 queryParam : 'query[taxzone_descrip]',
409 selectOnFocus : true,
410 tpl : '<div class="x-grid-cell-text x-btn button"><b>{taxzone_descrip}</b> </div>',
411 triggerAction : 'all',
413 valueField : 'taxzone_id',
419 beforeload : function (_self, o){
420 o.params = o.params || {};
424 sortInfo : { direction : 'ASC', field: 'taxzone_id' },
429 url : baseURL + '/Roo/Taxzone.php'
436 totalProperty : 'total',
438 {"name":"taxzone_id","type":"int"},
439 {"name":"taxzone_descrip","type":"string"}
448 displayField : 'emp_name',
450 emptyText : "Select Purchasing Agent",
451 fieldLabel : 'Purchase Agent',
452 forceSelection : true,
453 hiddenName : 'pohead_agent_username',
455 loadingText : "Searching...",
457 name : 'pohead_agent_username',
459 qtip : "Select Purchasing Agent",
460 queryParam : 'query[emp_name]',
461 selectOnFocus : true,
462 tpl : '<div class="x-grid-cell-text x-btn button"><b>{emp_name}</b> </div>',
463 triggerAction : 'all',
465 valueField : 'emp_name',
471 beforeload : function (_self, o){
472 o.params = o.params || {};
476 sortInfo : { direction : 'ASC', field: 'emp_id' },
481 url : baseURL + '/Roo/Emp.php'
488 totalProperty : 'total',
490 {"name":"emp_id","type":"int"},
491 {"name":"emp_name","type":"string"}
499 fieldLabel : 'Comments',
501 name : 'pohead_comments',
507 name : 'pohead_vend_id'
527 activate : function() {
531 var pid = _this.form.findField('pohead_id').getValue() * 1;
533 Roo.MessageBox.alert("Save First", "Please save the purchase order first, before adding items");
534 _this.dialog.layout.getRegion('center').showPanel(0);
539 _this.grid.footer.onClick('first');
542 deactivate : function (_self)
547 _this.grid.ds.each(function(r) {
549 poitem_id : r.data.poitem_id,
550 poitem_itemsite_id : r.data.poitem_itemsite_id,
551 poitem_unitprice : r.data.poitem_unitprice,
552 poitem_qty_ordered : r.data.poitem_qty_ordered
557 _this.form.findField('items').setValue(JSON.stringify(ar));
559 _this.dontClose = true;
560 _this.form.doAction("submit");
568 tableName : 'poitem',
569 title : "Order Items",
577 //_this.dialog = Pman.Dialog.FILL_IN
578 if (_this.panel.active) {
579 this.footer.onClick('first');
582 beforeedit : function (e)
584 var r = e.record.data.poitem_qty_received * 1;
587 Roo.MessageBox.alert("Error", "This item has been receipted");
591 var status = _this.form.findField('pohead_status').getValue();
594 Roo.MessageBox.alert("Error", "This PO has been closed");
601 autoExpandColumn : 'item_descrip1',
608 beforeload : function (_self, o){
609 o.params = o.params || {};
610 var hid = _this.form.findField('pohead_id').getValue();
616 o.params.poitem_pohead_id = hid;
617 o.params._with_item = 1;
618 o.params._roo_office = _this.data.office ? _this.data.office : baseURL.split('/').pop().substr(0,2);
621 load : function (_self, records, options)
623 _this.grid.footer.updateSummary();
627 sortInfo : { field : 'poitem_linenumber', direction: 'ASC' },
633 url : baseURL + '/Xtuple/Roo/Poitem.php'
640 totalProperty : 'total',
659 var status = _this.form.findField('pohead_status').getValue();
662 Roo.MessageBox.alert("Error", "This PO has been closed");
666 var ct = _this.grid.ds.getCount();
668 var last = ct ? _this.grid.ds.getAt(ct-1).data.poitem_linenumber * 1 + 1 : 1;
670 var dt = _this.form.findField('pohead_orderdate').getValue();
672 var nr = _this.grid.ds.reader.newRow({
674 poitem_linenumber : last,
678 poitem_qty_ordered : 1,
682 _this.grid.stopEditing();
683 _this.grid.ds.insert(_this.grid.ds.getCount(), nr);
684 _this.grid.startEditing(_this.grid.ds.getCount()-1, 1);
687 cls : 'x-btn-text-icon',
689 icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
697 var status = _this.form.findField('pohead_status').getValue();
700 Roo.MessageBox.alert("Error", "This PO has been closed");
704 var cs = _this.grid.getSelectionModel().getSelectedCell();
706 Roo.MessageBox.alert("Error", "Select a cell");
709 _this.grid.stopEditing();
710 var r = _this.grid.ds.getAt(cs[0]);
712 if(r.data.poitem_qty_received * 1 > 0){
713 Roo.MessageBox.alert("Error", "This item has been receipted");
718 _this.grid.ds.remove(r);
722 cls : 'x-btn-text-icon',
724 icon : rootURL + '/Pman/templates/images/trash.gif'
729 xtype: 'PagingToolbar',
732 emptyMsg : "No Item found",
734 updateSummary : function() {
738 url : baseURL + '/Xtuple/Roo/Poitem',
\r
741 _roo_office : _this.data.office ? _this.data.office : baseURL.split('/').pop().substr(0,2),
\r
743 poitem_pohead_id : _this.form.findField('pohead_id').getValue()
\r
745 success : function(d) {
747 f.displayEl.update(String.format(
\r
748 "{0} items | Total : {1} {2}",
\r
749 d.data[0].count_item,
\r
750 _this.form.findField('pohead_curr_id').el.dom.value,
\r
761 xtype: 'ColumnModel',
764 dataIndex : 'poitem_linenumber',
767 renderer : function(v) { return String.format('{0}', v); }
770 xtype: 'ColumnModel',
772 dataIndex : 'item_number',
773 header : 'Item code',
775 renderer : function(v) { return String.format('{0}', v); },
783 beforeselect : function (combo, record, index)
785 var ar = _this.grid.activeEditor.record;
788 ar.set('item_descrip1', record.data.itemsite_item_id_item_descrip1);
789 ar.set('poitem_itemsite_id', record.data.itemsite_id);
795 displayField : 'itemsite_item_id_item_number',
797 emptyText : "Select item",
798 forceSelection : true,
799 hiddenName : 'itemsite_item_id_item_number',
801 loadingText : "Searching...",
803 name : 'item_number',
805 qtip : "Select item",
806 queryParam : 'query[number]',
807 selectOnFocus : true,
808 tpl : '<div class="x-grid-cell-text x-btn button"><b>{itemsite_item_id_item_number}</b> - {itemsite_item_id_item_descrip1} </div>',
809 triggerAction : 'all',
811 valueField : 'item_number',
816 beforeload : function (_self, o){
817 o.params = o.params || {};
818 o.params.itemsite_posupply = 1;
822 sortInfo : { direction : 'ASC', field: 'item_number' },
827 url : baseURL + '/Roo/itemsite.php'
834 totalProperty : 'total',
835 fields : [{"name":"item_id","type":"int"},"item_number"]
842 xtype: 'ColumnModel',
844 dataIndex : 'item_descrip1',
845 header : 'Item description',
847 renderer : function(v) { return String.format('{0}', v); }
850 xtype: 'ColumnModel',
852 dataIndex : 'poitem_duedate',
855 renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
858 xtype: 'ColumnModel',
861 dataIndex : 'poitem_qty_ordered',
864 renderer : function(v) { return String.format('{0}', v); },
869 xtype: 'NumberField',
871 allowDecimals : false,
872 decimalPrecision : 0,
874 style : 'text-align:right'
879 xtype: 'ColumnModel',
882 dataIndex : 'poitem_qty_received',
885 renderer : function(v,x,r) {
886 return String.format(
887 r.data.poitem_qty_ordered != (v-r.data.poitem_qty_returned) ? '<span style="color:red">{0}</span>': '{0}',
888 v - r.data.poitem_qty_returned);
892 xtype: 'ColumnModel',
895 dataIndex : 'poitem_qty_vouchered',
896 header : 'Vouchered',
898 renderer : function(v,x,r) {
899 return String.format(
900 r.data.poitem_qty_ordered != v ? '<span style="color:red">{0}</span>': '{0}',
905 xtype: 'ColumnModel',
908 dataIndex : 'poitem_unitprice',
909 header : 'Unit price',
911 renderer : function(v) { return String.format('{0}', (v || v == 0) ? parseFloat(v).toFixed(3) : ''); },
916 xtype: 'NumberField',
919 allowDecimals : false,
920 decimalPrecision : 0,
922 style : 'text-align:right'
930 xtype: 'NestedLayoutPanel',
935 xtype: 'BorderLayout',
942 activate : function() {
943 _this.itempanel = this;
946 if (_this.itemgrid) {
947 _this.itemgrid.footer.onClick('first');
955 tableName : 'poitem',
963 _this.itemgrid = this;
964 //_this.dialog = Pman.Dialog.FILL_IN
965 if (_this.itempanel.active) {
966 this.footer.onClick('first');
969 rowclick : function (_self, rowIndex, e)
972 _this.gltransgrid.footer.onClick('first');
975 autoExpandColumn : 'item_number',
985 click : function (_self, e)
989 url : baseURL + '/Roo/Metasql',
993 _group : 'gltrans_stock',
995 'pohead_number:text' : _this.form.findField('pohead_number').getValue(),
1003 text : "PO analysis"
1008 xtype: 'RowSelectionModel',
1016 beforeload : function (_self, o)
1018 o.params = o.params || {};
1019 var hid = _this.form.findField('pohead_id').getValue();
1025 o.params.poitem_pohead_id = hid;
1027 o.params._with_item = 1;
1030 load : function (_self, records, options)
1032 _this.gltransgrid.footer.onClick('first');
1036 sortInfo : { field : 'poitem_id', direction: 'ASC' },
1041 url : baseURL + '/Roo/poitem.php'
1044 xtype: 'JsonReader',
1046 totalProperty : 'total',
1067 'name': 'leader_id',
1071 'name': 'leader_office_id',
1075 'name': 'leader_name',
1079 'name': 'leader_phone',
1083 'name': 'leader_fax',
1087 'name': 'leader_email',
1091 'name': 'leader_company_id',
1095 'name': 'leader_role',
1099 'name': 'leader_active',
1103 'name': 'leader_remarks',
1107 'name': 'leader_passwd',
1111 'name': 'leader_owner_id',
1115 'name': 'leader_lang',
1119 'name': 'leader_no_reset_sent',
1123 'name': 'leader_action_type',
1127 'name': 'leader_project_id',
1131 'name': 'leader_deleted_by',
1135 'name': 'leader_deleted_dt',
1139 'name': 'leader_firstname',
1143 'name': 'leader_lastname',
1147 'name': 'leader_name_facebook',
1151 'name': 'leader_url_blog',
1155 'name': 'leader_url_twitter',
1159 'name': 'leader_url_linkedin',
1163 'name': 'leader_crm_lead_percentage',
1167 'name': 'leader_crm_industry_id',
1171 'name': 'leader_crm_updated_action_id',
1175 'name': 'leader_crm_created_action_id',
1179 'name': 'leader_crm_type_id',
1186 xtype: 'PagingToolbar',
1188 displayInfo : false,
1189 displayMsg : "Displaying poitem{0} - {1} of {2}",
1190 emptyMsg : "No item found",
1195 xtype: 'ColumnModel',
1197 dataIndex : 'poitem_linenumber',
1200 renderer : function(v) { return String.format('{0}', v); }
1203 xtype: 'ColumnModel',
1205 dataIndex : 'item_number',
1208 renderer : function(v) { return String.format('{0}', v); }
1211 xtype: 'ColumnModel',
1213 dataIndex : 'poitem_qty_ordered',
1216 renderer : function(v) { return String.format('{0}', v); }
1219 xtype: 'ColumnModel',
1221 dataIndex : 'poitem_qty_received',
1222 header : 'Received',
1224 renderer : function(v,x,r)
1228 var recv = (v- r.data.poitem_qty_returned);
1229 if (recv != r.data.tx_qty) {
1230 return String.format('<s style="color:red;font-weight:bold">{0}</s>{1} ', recv,
1231 (r.data.tx_qty *1).toFixed(0) ) ;
1233 return String.format('{0}', (v- r.data.poitem_qty_returned)) ;
1238 xtype: 'ColumnModel',
1240 dataIndex : 'poitem_unitprice',
1241 header : 'Unit Price',
1243 renderer : function(v,x,r)
1246 return String.format('{0}', (v- r.data.poitem_qty_returned) ? parseFloat(v- r.data.poitem_qty_returned).toFixed(3) : '') ;
1257 activate : function() {
1258 _this.gltranspanel = this;
1259 //if (_this.gltransgrid) {
1260 // _this.gltransgrid.footer.onClick('first');
1265 fitContainer : true,
1268 tableName : 'Gltrans',
1276 _this.gltransgrid = this;
1277 //_this.dialog = Pman.Dialog.FILL_IN
1278 // if (_this.gltranspanel.active) {
1279 // this.footer.onClick('first');
1283 autoExpandColumn : 'gltrans_notes',
1286 xtype: 'RowSelectionModel',
1294 beforeload : function (_self, o)
1296 o.params = o.params || {};
1298 var s = _this.itemgrid.getSelectionModel().getSelected();
1304 o.params._poview = 1;
1305 o.params.gltrans_deleted = 0;
1306 o.params.gltrans_doctype = 'PO';
1307 o.params._linenumber = s.data.poitem_linenumber;
1308 o.params._item = s.data.item_number;
1309 o.params._ponumber = _this.form.findField('pohead_number').getValue();
1314 sortInfo : { field : 'gltrans_id', direction: 'ASC' },
1319 url : baseURL + '/Roo/gltrans.php'
1322 xtype: 'JsonReader',
1324 totalProperty : 'total',
1345 'name': 'leader_id',
1349 'name': 'leader_office_id',
1353 'name': 'leader_name',
1357 'name': 'leader_phone',
1361 'name': 'leader_fax',
1365 'name': 'leader_email',
1369 'name': 'leader_company_id',
1373 'name': 'leader_role',
1377 'name': 'leader_active',
1381 'name': 'leader_remarks',
1385 'name': 'leader_passwd',
1389 'name': 'leader_owner_id',
1393 'name': 'leader_lang',
1397 'name': 'leader_no_reset_sent',
1401 'name': 'leader_action_type',
1405 'name': 'leader_project_id',
1409 'name': 'leader_deleted_by',
1413 'name': 'leader_deleted_dt',
1417 'name': 'leader_firstname',
1421 'name': 'leader_lastname',
1425 'name': 'leader_name_facebook',
1429 'name': 'leader_url_blog',
1433 'name': 'leader_url_twitter',
1437 'name': 'leader_url_linkedin',
1441 'name': 'leader_crm_lead_percentage',
1445 'name': 'leader_crm_industry_id',
1449 'name': 'leader_crm_updated_action_id',
1453 'name': 'leader_crm_created_action_id',
1457 'name': 'leader_crm_type_id',
1464 xtype: 'PagingToolbar',
1467 displayMsg : "Displaying gltrans{0} - {1} of {2}",
1468 emptyMsg : "No gltrans found",
1482 text : "Apply fixes",
1493 var pohead_number = _this.form.findField('pohead_number').getValue();
1494 var pohead_id = _this.form.findField('pohead_id').getValue();
1498 url : baseURL + '/Roo/pohead.php',
1502 pohead_id : pohead_id,
1506 success : function(res) {
1507 Roo.MessageBox.alert('Notice', 'DONE');
1517 cls : 'x-btn-text-icon',
1518 text : "Repost goods reciept",
1519 icon : rootURL + '/Pman/templates/images/trash.gif'
1531 var pohead_number = _this.form.findField('pohead_number').getValue();
1532 var pohead_id = _this.form.findField('pohead_id').getValue();
1534 var fixit = function(){
1536 url : baseURL + '/Roo/pohead.php',
1539 pohead_id : pohead_id,
1543 success : function(res) {
1544 Roo.MessageBox.alert('Notice', 'DONE');
1549 Roo.MessageBox.confirm(
1551 "Are you sure to fix the unit cost of " + pohead_number + " ?",
1565 cls : 'x-btn-text-icon',
1566 text : "Fix Unit Cost",
1567 icon : rootURL + '/Pman/templates/images/trash.gif'
1579 var pohead_number = _this.form.findField('pohead_number').getValue();
1580 var pohead_id = _this.form.findField('pohead_id').getValue();
1582 var addv = function(){
1584 url : baseURL + '/Roo/pohead.php',
1587 pohead_id : pohead_id,
1591 success : function(res) {
1592 Roo.MessageBox.alert('Notice', 'DONE');
1597 Roo.MessageBox.confirm(
1599 "Are you sure to add all the variance for " + pohead_number + " ?",
1613 cls : 'x-btn-text-icon',
1614 text : "Add All Variance",
1615 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1623 var s = _this.gltransgrid.getSelectionModel().getSelected();
1626 Roo.MessageBox.alert('Error','Please select a transaction');
1630 if(s.data.gltrans_misc_id != -1){
1631 Roo.MessageBox.alert('Error','Just allow to delete the variance');
1635 var delit = function(){
1637 url : baseURL + '/Roo/Gltrans.php',
1640 gltrans_id : s.data.gltrans_id,
1644 success : function(res) {
1645 _this.gltransgrid.footer.onClick('refresh');
1651 Roo.MessageBox.confirm(
1653 "Are you sure to delete ?",
1667 cls : 'x-btn-text-icon',
1668 text : "Delete Variance",
1669 icon : rootURL + '/Pman/templates/images/trash.gif'
1677 var pohead_number = _this.form.findField('pohead_number').getValue();
1678 var pohead_id = _this.form.findField('pohead_id').getValue();
1680 var delv = function(){
1682 url : baseURL + '/Roo/pohead.php',
1685 pohead_id : pohead_id,
1689 success : function(res) {
1690 Roo.MessageBox.alert('Notice', 'DONE');
1695 Roo.MessageBox.confirm(
1697 "Are you sure to delete the variance on voucher of " + pohead_number + " ?",
1711 cls : 'x-btn-text-icon',
1712 text : "Delete Varinace on voucher",
1713 icon : rootURL + '/Pman/templates/images/trash.gif'
1725 var pohead_number = _this.form.findField('pohead_number').getValue();
1726 var pohead_id = _this.form.findField('pohead_id').getValue();
1728 var addv = function(){
1730 url : baseURL + '/Roo/pohead.php',
1733 pohead_id : pohead_id,
1737 success : function(res) {
1738 Roo.MessageBox.alert('Notice', 'DONE');
1743 Roo.MessageBox.confirm(
1745 "Are you sure to add all the fix the voids for " + pohead_number + " ?",
1759 cls : 'x-btn-text-icon',
1760 text : "Recalculate voids",
1761 icon : Roo.rootURL + 'images/default/tree/leaf.gif'
1772 var s = _this.gltransgrid.selModel.getSelected();
1774 Roo.MessageBox.alert("Error", "Select an item to reverse");
1778 var fixit = function(){
1780 url : baseURL + '/Roo/invdetail.php',
1784 _reverse : s.data.invdetail_id
1786 success : function(res) {
1787 Roo.MessageBox.alert('Notice', 'DONE');
1792 Roo.MessageBox.confirm(
1794 "Are you sure to reverse that line",
1808 cls : 'x-btn-text-icon',
1810 icon : rootURL + '/Pman/templates/images/trash.gif'
1816 xtype: 'ColumnModel',
1818 dataIndex : 'gltrans_id',
1821 renderer : function(v) { return String.format('{0}', v); }
1824 xtype: 'ColumnModel',
1826 dataIndex : 'gltrans_date',
1829 renderer : function(v) { return String.format('{0}', v ? v.format('Y-m-d') : ''); }
1832 xtype: 'ColumnModel',
1834 dataIndex : 'gltrans_docnumber',
1837 renderer : function(v) { return String.format('{0}', v); }
1840 xtype: 'ColumnModel',
1843 dataIndex : 'location_name',
1844 header : 'Location',
1846 renderer : function(v,x,r) {
1849 return String.format('{0}', v);
1854 xtype: 'ColumnModel',
1857 dataIndex : 'gltrans_amount',
1860 renderer : function(v,x,r) {
1861 return String.format('{0}', v);
1866 xtype: 'ColumnModel',
1869 dataIndex : 'invdetail_qty',
1872 renderer : function(v,x,r) {
1873 var f = r.data.invfifo_void * 1 ? '<s>{0}</s>' : '{0}';
1875 return String.format(f, (v*1).toFixed(0));
1880 xtype: 'ColumnModel',
1882 dataIndex : 'gltrans_notes',
1885 renderer : function(v) { return String.format('{0}', v); }
1892 xtype: 'LayoutRegion',
1896 xtype: 'LayoutRegion',
1904 xtype: 'NestedLayoutPanel',
1909 xtype: 'BorderLayout',
1916 activate : function() {
1917 _this.gltxpanel = this;
1918 if (_this.gltxgrid) {
1919 _this.gltxgrid.footer.onClick('first');
1924 fitContainer : true,
1927 tableName : 'invdetail',
1928 title : "invdetail",
1935 _this.gltxgrid = this;
1936 //_this.dialog = Pman.Dialog.FILL_IN
1937 if (_this.gltxpanel.active) {
1938 this.footer.onClick('first');
1941 cellclick : function (_self, rowIndex, columnIndex, e)
1943 if (columnIndex > 0) {
1946 var rec = this.ds.getAt(rowIndex);
1947 rec.set('gltrans_as_summary', rec.data.gltrans_as_summary *1 ? 0 : 1);
1948 _this.gltxdgrid.footer.onClick('first');
1951 autoExpandColumn : 'gltrans_accnt_id_accnt_descrip',
1954 xtype: 'RowSelectionModel',
1957 selectionchange : function (_self)
1959 _this.gltxdgrid.footer.onClick('first');;
1968 beforeload : function (_self, o)
1970 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
1971 if (! o.params.pohead_id ) {
1975 o.params._split_sales = _this.glsalesbtn.pressed ? 1 : 0;
1977 load : function (_self, records, options)
1979 _this.gltxdgrid.footer.onClick('first');
1983 sortInfo : { field : 'item_number', direction: 'ASC' },
1988 url : baseURL + '/Roo/gltrans.php'
1991 xtype: 'JsonReader',
1993 totalProperty : 'total',
1998 'name': 'invdetail_id',
2002 'name': 'invdetail_transtype',
2006 'name': 'invdetail_invhist_id',
2010 'name': 'invdetail_location_id',
2014 'name': 'invdetail_qty',
2018 'name': 'invdetail_comments',
2022 'name': 'invdetail_qty_before',
2026 'name': 'invdetail_qty_after',
2030 'name': 'invdetail_invcitem_id',
2034 'name': 'invdetail_expiration',
2036 'dateFormat': 'Y-m-d'
2039 'name': 'invdetail_warrpurc',
2041 'dateFormat': 'Y-m-d'
2044 'name': 'invdetail_ls_id',
2051 xtype: 'PagingToolbar',
2054 displayMsg : "Displaying invdetail{0} - {1} of {2}",
2055 emptyMsg : "No invdetail found",
2062 render : function (_self)
2064 _this.glsalesbtn = _self;
2066 click : function (_self, e)
2068 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
2071 enableToggle : true,
2073 text : "Split sales"
2079 xtype: 'ColumnModel',
2081 dataIndex : 'gltrans_as_summary',
2084 renderer : function(v,x,r) {
2086 var state = v*1 ? '-checked' : '';
2088 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
2092 xtype: 'ColumnModel',
2094 dataIndex : 'gltrans_accnt_id_accnt_descrip',
2097 renderer : function(v) { return String.format('{0}', v); }
2100 xtype: 'ColumnModel',
2103 dataIndex : 'gltrans_amount_credit',
2106 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2109 xtype: 'ColumnModel',
2112 dataIndex : 'gltrans_amount_debit',
2115 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2118 xtype: 'ColumnModel',
2121 dataIndex : 'gltrans_amount_total',
2124 renderer : function(v) { return String.format('<b>{0}</b>', Roo.util.Format.number(v,3)); }
2127 xtype: 'ColumnModel',
2130 dataIndex : 'gltrans_amount_total_unposted',
2131 header : 'Unposted',
2133 renderer : function(v) { return String.format('<span style="color:red">{0}</span>', Roo.util.Format.number(v,3)); }
2142 activate : function() {
2143 _this.gltxdpanel = this;
2144 if (_this.gltxdgrid) {
2145 _this.gltxdgrid.footer.onClick('first');
2150 fitContainer : true,
2153 tableName : 'invdetail',
2154 title : "invdetail",
2161 _this.gltxdgrid = this;
2162 //_this.dialog = Pman.Dialog.FILL_IN
2163 if (_this.gltxdpanel.active) {
2164 this.footer.onClick('first');
2167 cellclick : function (_self, ri, ci, e)
2170 var deleteSel = function() {
2174 url : baseURL + '/Roo/gltrans',
2178 gltrans_id : rec.data.gltrans_id
2181 success : function() {
2182 rec.set('gltrans_posted', false);
2183 rec.set('gltrans_deleted', true);
2184 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2185 _this.gltxgrid.footer.onClick('first');
2190 var undeleteSel = function() {
2194 url : baseURL + '/Roo/gltrans',
2198 gltrans_id : rec.data.gltrans_id
2201 success : function() {
2202 rec.set('gltrans_posted', true);
2203 rec.set('gltrans_deleted', false);
2204 rec.set('gltrans_docnumber', rec.data.gltrans_docnumber);
2205 _this.gltxgrid.footer.onClick('first');
2211 var di = this.colModel.config[ci].dataIndex;
2212 if (di != 'gltrans_posted') {
2218 var rec = this.ds.getAt(ri);
2219 if (rec.data.gltrans_deleted) {
2221 Roo.MessageBox.confirm(
2223 "This should only be used by System Administrators - are you sure you know what you are doing!",
2237 if (!rec.data.gltrans_posted) {
2243 url : baseURL + '/Roo/gltrans',
2247 gltrans_id : rec.data.gltrans_id
2249 success : function (res)
2251 rec.set('gltrans_posted', true);
2252 _this.gltxgrid.footer.onClick('first');
2261 // we have a posted transaction.
2262 // only allow recalled to be deleted..
2263 if (!rec.data.gltrans_notes.match(/(Recall|Ship Order)/)) {
2272 Roo.MessageBox.confirm(
2274 "This should only be used by System Administrators - are you sure you know what you are doing!",
2287 autoExpandColumn : 'gltrans_notes',
2297 render : function (_self)
2299 _this.glvoidshow = _self;
2301 click : function (_self, e)
2303 (function() { _this.gltxgrid.footer.onClick('first'); }).defer(100);
2306 enableToggle : true,
2318 click : function (_self, e)
2321 url : baseURL + '/Roo/Gltrans',
2325 pohead_id : _this.form.findField('pohead_id').getValue(),
2328 success : function() {
2329 _this.gltxpanel.footer.onClick('first');
2344 beforeload : function (_self, o)
2346 o.params.pohead_id = _this.form.findField('pohead_id').getValue();
2347 var s = _this.gltxgrid.selModel.getSelected();
2352 o.params.gltrans_accnt_id = s.data.gltrans_accnt_id;
2353 o.params.gltrans_is_ship = s.data.gltrans_is_ship;
2354 o.params.gltrans_as_summary = s.data.gltrans_as_summary;
2355 o.params._hide_void = _this.glvoidshow.pressed ? 1 : 0;
2361 sortInfo : { field : 'gltrans_docnumber', direction: 'ASC' },
2366 url : baseURL + '/Roo/gltrans.php'
2369 xtype: 'JsonReader',
2371 totalProperty : 'total',
2376 'name': 'invdetail_id',
2380 'name': 'invdetail_transtype',
2384 'name': 'invdetail_invhist_id',
2388 'name': 'invdetail_location_id',
2392 'name': 'invdetail_qty',
2396 'name': 'invdetail_comments',
2400 'name': 'invdetail_qty_before',
2404 'name': 'invdetail_qty_after',
2408 'name': 'invdetail_invcitem_id',
2412 'name': 'invdetail_expiration',
2414 'dateFormat': 'Y-m-d'
2417 'name': 'invdetail_warrpurc',
2419 'dateFormat': 'Y-m-d'
2422 'name': 'invdetail_ls_id',
2429 xtype: 'PagingToolbar',
2432 displayMsg : "Displaying invdetail{0} - {1} of {2}",
2433 emptyMsg : "No invdetail found",
2440 click : function (_self, e)
2442 new Pman.Download( {
2443 grid : _this.gltxdgrid
2454 xtype: 'ColumnModel',
2456 dataIndex : 'gltrans_id',
2460 renderer : function(v) { return String.format('{0}', v ); }
2463 xtype: 'ColumnModel',
2465 dataIndex : 'gltrans_date',
2468 renderer : function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }
2471 xtype: 'ColumnModel',
2473 dataIndex : 'gltrans_docnumber',
2476 renderer : function(v,x,r) {
2479 if (r.data.gltrans_misc_id > 0 && (r.data.invdetail_id *1) < 1) {
2480 style = ' style="color:red;font-weight:bold"';
2482 if (r.data.gltrans_deleted) {
2483 return String.format('<s'+style+'>{0}</s>', v);
2485 return String.format('<span' + style + '>{0}</span>', v);
2489 xtype: 'ColumnModel',
2491 dataIndex : 'gltrans_source',
2494 renderer : function(v) { return String.format('{0}', v); }
2497 xtype: 'ColumnModel',
2499 dataIndex : 'gltrans_notes',
2502 renderer : function(v) { return String.format('{0}', v); }
2505 xtype: 'ColumnModel',
2508 dataIndex : 'gltrans_amount',
2511 renderer : function(v) { return String.format('{0}', Roo.util.Format.number(v,3)); }
2514 xtype: 'ColumnModel',
2516 dataIndex : 'gltrans_posted',
2519 renderer : function(v,x,r) {
2521 var state = v ? '-checked' : '';
2523 return '<img class="x-grid-check-icon' + state + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
2531 xtype: 'LayoutRegion',
2535 xtype: 'LayoutRegion',
2544 xtype: 'LayoutRegion',
2546 alwaysShowTabs : true,
2547 tabPosition : 'top',
2562 var hid = _this.form.findField('pohead_id').getValue();
2565 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2571 _dialog.layout.showPanel(1);
2578 var doit = function () {
2588 cls : 'x-btn-text-icon',
2589 text : "Download Purchase Order Items (Excel)",
2590 icon : rootURL + '/Pman/templates/images/save.gif'
2596 render : function (_self)
2598 _this.uploadBtn = _self;
2601 text : "Upload Purchase Order",
2610 click : function (_self, e)
2612 var hid = _this.form.findField('pohead_id').getValue();
2615 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2618 Pman.Dialog.Image.show(
2621 _url : baseURL+'/Xtuple/Import/PurchaseOrder?' + Roo.urlEncode({'pohead_id' : hid})
2626 _this.grid.footer.onClick('first');
2628 Roo.MessageBox.alert("Notice", 'UPLOADED');
2633 text : "Upload Standard Excel"
2639 click : function (_self, e)
2642 var hid = _this.form.findField('pohead_id').getValue();
2645 Roo.MessageBox.alert("Error", "Please save your purchase order first");
2649 Pman.Dialog.Image.show(
2651 _url : baseURL+'/Xtuple/Import/AUPurchaseOrder?' + Roo.urlEncode({'pohead_id' :hid})
2656 _this.grid.footer.onClick('first');
2658 Roo.MessageBox.alert("Notice", 'IMPORTED');
2663 text : "Upload AU Import Excel"
2676 click : function (_self, e)
2678 _this.dialog.hide();
2687 click : function (_self, e)
2692 _this.grid.ds.each(function(r) {
2693 if(r.data.poitem_unitprice < 1){
2698 poitem_id : r.data.poitem_id,
2699 poitem_itemsite_id : r.data.poitem_itemsite_id,
2700 poitem_unitprice : r.data.poitem_unitprice,
2701 poitem_qty_ordered : r.data.poitem_qty_ordered
2707 Roo.MessageBox.alert('Error','Unit Price does not allow $0' );
2711 _this.form.findField('items').setValue(JSON.stringify(ar));
2714 _this.form.doAction("submit");
2717 render : function (_self)
2719 _this.saveBtn = _self;