Author: apatel
Date: Thu Nov 11 21:50:19 2010 New Revision: 1034162 URL: http://svn.apache.org/viewvc?rev=1034162&view=rev Log: Applied fix from trunk for revision: 1029600 === Implemented support for "contra revenue" classes in the Income Statement: this will fix the incomplete information in financial reports for returns Modified: ofbiz/branches/release10.04/ (props changed) ofbiz/branches/release10.04/applications/accounting/data/AccountingTypeData.xml ofbiz/branches/release10.04/applications/accounting/webapp/accounting/WEB-INF/actions/reports/IncomeStatement.groovy Propchange: ofbiz/branches/release10.04/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Nov 11 21:50:19 2010 @@ -1,3 +1,3 @@ /ofbiz/branches/addbirt:831210-885099,885686-886087 /ofbiz/branches/multitenant20100310:921280-927264 -/ofbiz/trunk:939988,939990,939999,940025,940053,940234,940248,940309,940401,940410,940425,940779,940815,940849,940851,941007,941047,941109,941177,941199,941261,941440,941600,941999,942084,942406,942414,942671,942883-942884,943168,943271-943272,944614,944621,944623,944647,944669,944797,944895,945010,945018,945026,945118,945573,945578,945580,945582,945610,945619,945848,945852,945857,946061,946066,946073,946075,946080,946309,946313,946320,946322,946596,947004-947005,947392,947424,947679,947988,948017,948694,949174,949710,949844,950866,950870,950893,951005,951062,951098,951251,951367,951381,951672,952232,952249,952270,953294,953671,954135,954583,954733,954956,955568,956022,956206,956340,957160,958343,958514,958521,958752,958758,958769,958953,959456,960143,960491,960997,963610,964558,965470,965916,966525,966785,967098,978806,978893,978939,979104,980641-980642,980935,981051,981104,981123,981288,983920,983930,985163,985298,985473,985718,985856,985902,987841,989166,990127,990339,990 539,991485,993344,993387,995384,995686,996069,996078-996079,996563,997418-997420,997423-997425,997431,997440,997526,997990,998061,998412,998557,1000621,1000725,1000998,1001099,1001131,1001185,1001574,1001849,1001962,1002963,1003434,1003450,1003829,1004139,1027756,1027960,1028053,1028625,1028627,1030016,1030385,1030390,1033928,1033953 +/ofbiz/trunk:939988,939990,939999,940025,940053,940234,940248,940309,940401,940410,940425,940779,940815,940849,940851,941007,941047,941109,941177,941199,941261,941440,941600,941999,942084,942406,942414,942671,942883-942884,943168,943271-943272,944614,944621,944623,944647,944669,944797,944895,945010,945018,945026,945118,945573,945578,945580,945582,945610,945619,945848,945852,945857,946061,946066,946073,946075,946080,946309,946313,946320,946322,946596,947004-947005,947392,947424,947679,947988,948017,948694,949174,949710,949844,950866,950870,950893,951005,951062,951098,951251,951367,951381,951672,952232,952249,952270,953294,953671,954135,954583,954733,954956,955568,956022,956206,956340,957160,958343,958514,958521,958752,958758,958769,958953,959456,960143,960491,960997,963610,964558,965470,965916,966525,966785,967098,978806,978893,978939,979104,980641-980642,980935,981051,981104,981123,981288,983920,983930,985163,985298,985473,985718,985856,985902,987841,989166,990127,990339,990 539,991485,993344,993387,995384,995686,996069,996078-996079,996563,997418-997420,997423-997425,997431,997440,997526,997990,998061,998412,998557,1000621,1000725,1000998,1001099,1001131,1001185,1001574,1001849,1001962,1002963,1003434,1003450,1003829,1004139,1027756,1027960,1028053,1028625,1028627,1029600,1030016,1030385,1030390,1033928,1033953 Modified: ofbiz/branches/release10.04/applications/accounting/data/AccountingTypeData.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/release10.04/applications/accounting/data/AccountingTypeData.xml?rev=1034162&r1=1034161&r2=1034162&view=diff ============================================================================== --- ofbiz/branches/release10.04/applications/accounting/data/AccountingTypeData.xml (original) +++ ofbiz/branches/release10.04/applications/accounting/data/AccountingTypeData.xml Thu Nov 11 21:50:19 2010 @@ -211,6 +211,8 @@ under the License. DEBIT |___> NON_POSTING | + |___> CONTRA_REVENUE + | |___> ASSET | |_________> LONGTERM_ASSET | | Modified: ofbiz/branches/release10.04/applications/accounting/webapp/accounting/WEB-INF/actions/reports/IncomeStatement.groovy URL: http://svn.apache.org/viewvc/ofbiz/branches/release10.04/applications/accounting/webapp/accounting/WEB-INF/actions/reports/IncomeStatement.groovy?rev=1034162&r1=1034161&r2=1034162&view=diff ============================================================================== --- ofbiz/branches/release10.04/applications/accounting/webapp/accounting/WEB-INF/actions/reports/IncomeStatement.groovy (original) +++ ofbiz/branches/release10.04/applications/accounting/webapp/accounting/WEB-INF/actions/reports/IncomeStatement.groovy Thu Nov 11 21:50:19 2010 @@ -44,6 +44,8 @@ partyIds.add(organizationPartyId); // Get the group of account classes that will be used to position accounts in the proper section of the financial statement GenericValue revenueGlAccountClass = delegator.findOne("GlAccountClass", UtilMisc.toMap("glAccountClassId", "REVENUE"), true); List revenueAccountClassIds = UtilAccounting.getDescendantGlAccountClassIds(revenueGlAccountClass); +GenericValue contraRevenueGlAccountClass = delegator.findOne("GlAccountClass", UtilMisc.toMap("glAccountClassId", "CONTRA_REVENUE"), true); +List contraRevenueAccountClassIds = UtilAccounting.getDescendantGlAccountClassIds(contraRevenueGlAccountClass); GenericValue incomeGlAccountClass = delegator.findOne("GlAccountClass", UtilMisc.toMap("glAccountClassId", "INCOME"), true); List incomeAccountClassIds = UtilAccounting.getDescendantGlAccountClassIds(incomeGlAccountClass); GenericValue expenseGlAccountClass = delegator.findOne("GlAccountClass", UtilMisc.toMap("glAccountClassId", "EXPENSE"), true); @@ -107,6 +109,48 @@ context.revenueAccountBalanceList.add(Ut context.revenueBalanceTotal = balanceTotal; balanceTotalList.add(UtilMisc.toMap("totalName", "AccountingNetSales", "balance", balanceTotal)); +// CONTRA REVENUE +// account balances +accountBalanceList = []; +transactionTotals = []; +balanceTotal = BigDecimal.ZERO; +List contraRevenueAndExprs = FastList.newInstance(mainAndExprs); +contraRevenueAndExprs.add(EntityCondition.makeCondition("glAccountClassId", EntityOperator.IN, contraRevenueAccountClassIds)); +transactionTotals = delegator.findList("AcctgTransEntrySums", EntityCondition.makeCondition(cogsExpenseAndExprs, EntityOperator.AND), UtilMisc.toSet("glAccountId", "accountName", "accountCode", "debitCreditFlag", "amount"), UtilMisc.toList("glAccountId"), null, false); +if (transactionTotals) { + Map transactionTotalsMap = [:]; + balanceTotalCredit = BigDecimal.ZERO; + balanceTotalDebit = BigDecimal.ZERO; + transactionTotals.each { transactionTotal -> + Map accountMap = (Map)transactionTotalsMap.get(transactionTotal.glAccountId); + if (!accountMap) { + accountMap = UtilMisc.makeMapWritable(transactionTotal); + accountMap.remove("debitCreditFlag"); + accountMap.remove("amount"); + accountMap.put("D", BigDecimal.ZERO); + accountMap.put("C", BigDecimal.ZERO); + accountMap.put("balance", BigDecimal.ZERO); + } + UtilMisc.addToBigDecimalInMap(accountMap, transactionTotal.debitCreditFlag, transactionTotal.amount); + if ("D".equals(transactionTotal.debitCreditFlag)) { + balanceTotalDebit = balanceTotalDebit.add(transactionTotal.amount); + } else { + balanceTotalCredit = balanceTotalCredit.add(transactionTotal.amount); + } + BigDecimal debitAmount = (BigDecimal)accountMap.get("D"); + BigDecimal creditAmount = (BigDecimal)accountMap.get("C"); + // contra revenues are accounts of class DEBIT: the balance is given by debits minus credits + BigDecimal balance = debitAmount.subtract(creditAmount); + accountMap.put("balance", balance); + transactionTotalsMap.put(transactionTotal.glAccountId, accountMap); + } + accountBalanceList = UtilMisc.sortMaps(transactionTotalsMap.values().asList(), UtilMisc.toList("accountCode")); + // contra revenues are accounts of class DEBIT: the balance is given by debits minus credits + balanceTotal = balanceTotalDebit.subtract(balanceTotalCredit); +} +context.contraRevenueBalanceTotal = balanceTotal; +balanceTotalList.add(UtilMisc.toMap("totalName", "TOTAL CONTRA REVENUE", "balance", balanceTotal)); + // EXPENSE // account balances accountBalanceList = []; @@ -276,8 +320,11 @@ context.incomeAccountBalanceList = accou context.incomeAccountBalanceList.add(UtilMisc.toMap("accountName", "TOTAL INCOME", "balance", balanceTotal)); context.incomeBalanceTotal = balanceTotal; +// NET SALES = REVENUES - CONTRA REVENUES +context.netSales = (context.revenueBalanceTotal).subtract(context.contraRevenueBalanceTotal); +balanceTotalList.add(UtilMisc.toMap("totalName", "AccountingTotalNetSales", "balance", context.netSales)); // GROSS MARGIN = NET SALES - COSTS OF GOODS SOLD -context.grossMargin = (context.revenueBalanceTotal).subtract(context.cogsExpense); +context.grossMargin = (context.netSales).subtract(context.cogsExpense); balanceTotalList.add(UtilMisc.toMap("totalName", "AccountingGrossMargin", "balance", context.grossMargin)); // OPERATING EXPENSES context.sgaExpense = sgaExpense; @@ -286,8 +333,7 @@ balanceTotalList.add(UtilMisc.toMap("tot context.incomeFromOperations = (context.grossMargin).subtract(context.sgaExpense); balanceTotalList.add(UtilMisc.toMap("totalName", "AccountingIncomeFromOperations", "balance", context.incomeFromOperations)); // NET INCOME -context.netIncome = (context.revenueBalanceTotal).add(context.incomeBalanceTotal).subtract(context.expenseBalanceTotal); +context.netIncome = (context.netSales).add(context.incomeBalanceTotal).subtract(context.expenseBalanceTotal); balanceTotalList.add(UtilMisc.toMap("totalName", "AccountingNetIncome", "balance", context.netIncome)); context.balanceTotalList = balanceTotalList; - |
Free forum by Nabble | Edit this page |