Przeglądaj źródła

应收/付账款明细表合计特殊逻辑

zhuth 7 lat temu
rodzic
commit
377ab2fae3

+ 14 - 3
frontend/saas-web/app/view/core/report/ReportPanel.js

@@ -212,7 +212,9 @@ Ext.define('saas.view.core.report.ReportPanel', {
                                     return s.hasOwnProperty(name);
                                 })
                                 if (type && d) {
-                                    if (type == 'count') {
+                                    if(typeof c.mySummaryRenderer == 'function') {
+                                        c.summaryValue = c.mySummaryRenderer(grid, datas);
+                                    }else if (type == 'count') {
                                         c.summaryValue = Ext.util.Format.number(d[name], c.format || '0');
                                     } else if (typeof c.summaryRenderer == 'function') {
                                         c.summaryValue = c.summaryRenderer(d[name]);
@@ -222,7 +224,11 @@ Ext.define('saas.view.core.report.ReportPanel', {
                                         c.summaryValue = Ext.util.Format.number(d[name], c.format || '0.00');
                                     }
                                 } else if(type && !d) {
-                                    c.summaryValue = me.getSummaryValue(datas, c);
+                                    if(typeof c.mySummaryRenderer == 'function') {
+                                        c.summaryValue = c.mySummaryRenderer(grid, c, datas);
+                                    }else {
+                                        c.summaryValue = me.getSummaryValue(datas, c);
+                                    }
                                 } else {
                                     c.summaryValue = null;
                                 }
@@ -336,7 +342,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
                 me.initSummaryType(c);
                 summarys.push({
                     field: c.dataIndex,
-                    operation: c.summaryTypeName,
+                    operation: c.summaryType == 'last' ? 'sum' : c.summaryType,
                 });
             }
         })
@@ -357,6 +363,11 @@ Ext.define('saas.view.core.report.ReportPanel', {
             column.summaryType = function (records, values) {
                 return Ext.Array.sum(values);
             }
+        } else if(summaryType == 'last') {
+            column._summaryType = 'last';
+            column.summaryType = function (records, values) {
+                return values[values.length - 1];
+            }
         }
     },
 

+ 26 - 1
frontend/saas-web/app/view/money/report/PayDetail.js

@@ -108,12 +108,37 @@ Ext.define('saas.view.money.report.PayDetail', {
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
-            summaryType: 'sum',
+            summaryType: 'last',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
+            },
+            mySummaryRenderer: function(grid, column, datas) {
+                var store = grid.store,
+                dataIndex = column.dataIndex,
+                groupField = store.getGroupField(),
+                count = datas.length,
+                data = datas,
+                lasts = {},
+                keys = [],
+                arr = [];
+
+                for(var i = 0; i < count; i++) {
+                    var d = data[i];
+                    var n = Number(d[dataIndex]);
+                    var v = isNaN(n) ? 0 : n;
+
+                    lasts[groupField] = v;
+                }
+
+                keys = Ext.Object.getAllKeys(lasts);
+                arr = keys.map(function(key) {
+                    return lasts[key];
+                });
+
+                return Ext.Array.sum(arr);
             }
         }, {
             text: '供应商名称',

+ 26 - 1
frontend/saas-web/app/view/money/report/RecDetail.js

@@ -114,12 +114,37 @@ Ext.define('saas.view.money.report.RecDetail', {
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
             },
-            summaryType: 'sum',
+            summaryType: 'last',
             summaryRenderer: function(v) {
                 var arr = (v + '.').split('.');
                 var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
                 var format = '0,000.' + xr.join();
                 return Ext.util.Format.number(v, format);
+            },
+            mySummaryRenderer: function(grid, column, datas) {
+                var store = grid.store,
+                dataIndex = column.dataIndex,
+                groupField = store.getGroupField(),
+                count = datas.length,
+                data = datas,
+                lasts = {},
+                keys = [],
+                arr = [];
+
+                for(var i = 0; i < count; i++) {
+                    var d = data[i];
+                    var n = Number(d[dataIndex]);
+                    var v = isNaN(n) ? 0 : n;
+
+                    lasts[groupField] = v;
+                }
+
+                keys = Ext.Object.getAllKeys(lasts);
+                arr = keys.map(function(key) {
+                    return lasts[key];
+                });
+
+                return Ext.Array.sum(arr);
             }
         }, {
             text: '客户名称',