Author: jacopoc
Date: Tue Dec 1 10:07:09 2009
New Revision: 885712
URL: http://svn.apache.org/viewvc?rev=885712&view=rev
Log:
Completely reimplemented the "Transaction Totals" financial report because the
existing one had a series of issues:
1) the bottom list was missing the last record
2) the grand totals were not computed
3) a bad selection strategy was a problem with big record sets
4) the code in general was messed up
5) improved the layout of the PDF export
6) meaningful default from and thru dates are pre set
7) misc enhancements
Modified:
ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml
ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy
ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.xml
ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryScreens.xml
Modified: ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml?rev=885712&r1=885711&r2=885712&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml (original)
+++ ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml Tue Dec 1
10:07:09 2009
@@ -1834,27 +1834,28 @@
<key-map field-name="glJournalId"/>
</relation>
</view-entity>
- <view-entity entity-name="AcctgTransEntryProdSums"
+ <view-entity entity-name="AcctgTransEntrySums"
package-name="org.ofbiz.accounting.ledger"
- title="Sum of AcctgTransEntry entity amounts, grouped by
glAccountId, productId, debitCreditFlag">
+ title="Sum of AcctgTransEntry entity amounts grouped by
glAccountId, debitCreditFlag">
<member-entity entity-alias="ATE" entity-name="AcctgTransEntry"/>
<member-entity entity-alias="ACT" entity-name="AcctgTrans"/>
<member-entity entity-alias="GLA" entity-name="GlAccount"/>
- <alias entity-alias="ATE" name="organizationPartyId" group-by="true"/>
- <alias entity-alias="ATE" name="productId" group-by="true"/>
+ <alias entity-alias="ATE" name="glAccountId" group-by="true"/>
+ <alias entity-alias="GLA" name="glAccountTypeId" group-by="true"/>
+ <alias entity-alias="GLA" name="accountName" group-by="true"/>
+ <alias entity-alias="GLA" name="accountCode" group-by="true"/>
+ <alias entity-alias="ACT" name="glFiscalTypeId" group-by="true"/>
<alias entity-alias="ATE" name="debitCreditFlag" group-by="true"/>
<alias entity-alias="ATE" name="amount" function="sum"/>
- <alias entity-alias="ATE" name="glAccountId" group-by="false"/>
- <alias entity-alias="GLA" name="glAccountTypeId" group-by="true"/> <!--
so we can select by type of account -->
- <alias entity-alias="ACT" name="isPosted" group-by="false"/> <!-- so we
can select by posted status -->
- <alias entity-alias="ACT" name="glFiscalTypeId" group-by="true"/>
+ <alias entity-alias="ATE" name="organizationPartyId" group-by="false"/>
+ <alias entity-alias="ACT" name="isPosted" group-by="false"/>
<alias entity-alias="ACT" name="transactionDate" group-by="false"/> <!--
so we can select the sum by date -->
- <view-link entity-alias="ATE" rel-entity-alias="GLA">
- <key-map field-name="glAccountId"/>
- </view-link>
<view-link entity-alias="ATE" rel-entity-alias="ACT">
<key-map field-name="acctgTransId"/>
</view-link>
+ <view-link entity-alias="ATE" rel-entity-alias="GLA">
+ <key-map field-name="glAccountId"/>
+ </view-link>
</view-entity>
<entity entity-name="AcctgTransEntryType"
package-name="org.ofbiz.accounting.ledger"
Modified:
ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy?rev=885712&r1=885711&r2=885712&view=diff
==============================================================================
---
ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy
(original)
+++
ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy
Tue Dec 1 10:07:09 2009
@@ -18,141 +18,192 @@
*/
import org.ofbiz.base.util.UtilDateTime;
+import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.UtilNumber;
import org.ofbiz.entity.condition.EntityCondition;
-import org.ofbiz.entity.condition.EntityConditionList;
import org.ofbiz.entity.condition.EntityOperator;
-import org.ofbiz.entity.Delegator;
import org.ofbiz.entity.util.EntityUtil;
import javolution.util.FastList;
import javolution.util.FastMap;
-debitTotal = BigDecimal.ZERO;
-creditTotal = BigDecimal.ZERO;
-openingBalanceCredit = BigDecimal.ZERO;
-openingBalanceDebit = BigDecimal.ZERO;
-
-decimals = UtilNumber.getBigDecimalScale("ledger.decimals");
-rounding = UtilNumber.getBigDecimalRoundingMode("ledger.rounding");
-exprs = [EntityCondition.makeCondition("organizationPartyId",
EntityOperator.IN, partyIds)];
-if (fromDate) {
- exprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.GREATER_THAN_EQUAL_TO, fromDate));
-} else return;
-
+if (!fromDate) {
+ return;
+}
if (!thruDate) {
thruDate = UtilDateTime.nowTimestamp();
}
-exprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.LESS_THAN_EQUAL_TO, thruDate));
-exprList = FastList.newInstance();
-orExprs = new ArrayList();
-orExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS,
"Y"));
-orExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS,
"N"));
-orCond = EntityCondition.makeCondition(orExprs, EntityOperator.OR);
-
-exprList.add(orCond);
-exprList.addAll(exprs);
-
-fieldsToSelect = ["glAccountId", "debitCreditFlag", "totalAmount", "isPosted"]
as Set;
-orderBy = ["glAccountId"];
-
-postedTransTotalList = FastList.newInstance();
-unpostedTransTotalList = FastList.newInstance();
-postedAndUnpostedTransTotalList = FastList.newInstance();
-tempValueMap = [:];
-tempValueMap.isPosted = "";
-tempValueMap.glAccountId = "000";
-tempValueMap.debitCreditFlag = "X";
-tempValueMap.totalAmount = 0.00;
-
-allTrans = delegator.findList("GlAccOrgAndAcctgTransAndEntry",
EntityCondition.makeCondition(exprList, EntityOperator.AND), fieldsToSelect,
orderBy, null, false);
-if (allTrans) {
- //PostedTransaction Section
- allPostedTrans = EntityUtil.filterByCondition(allTrans,
EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS, "Y"));
- if (allPostedTrans)
- getPostedTrans(0, (allPostedTrans.get(0)).glAccountId);
-
- //UnPostedTransaction Section
- allUnPostedTrans = EntityUtil.filterByCondition(allTrans,
EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS, "N"));
- if (allUnPostedTrans)
- getUnpostedTrans(0, (allUnPostedTrans.get(0)).glAccountId);
-
- //PostedAndUnPostedTransaction Section
- getPostedAndUnpostedTrans(0, (allTrans.get(0)).glAccountId);
-}
-
-private void addTransToList(List transectionList, String prevGlAccountId, Map
value) {
- if (!prevGlAccountId.equals(value.glAccountId)) {
- if (parameters.selectedMonth){
- resultMap = dispatcher.runSync("calculateGlAccountTrialBalance",
- [fromDate : financialYearFromDate, thruDate : fromDate ,
glAccountId : prevGlAccountId, isPosted : value.isPosted, userLogin :
userLogin]);
-
- openingBalanceCredit = resultMap.openingBalanceCredit;
- openingBalanceDebit = resultMap.openingBalanceDebit;
+// POSTED
+// Posted transactions totals and grand totals
+postedTotals = [];
+postedTotalDebit = BigDecimal.ZERO;
+postedTotalCredit = BigDecimal.ZERO;
+andExprs = FastList.newInstance();
+andExprs.add(EntityCondition.makeCondition("organizationPartyId",
EntityOperator.IN, partyIds));
+andExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS,
"Y"));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.GREATER_THAN_EQUAL_TO, fromDate));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.LESS_THAN_EQUAL_TO, thruDate));
+andCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
+List postedTransactionTotals = delegator.findList("AcctgTransEntrySums",
andCond, UtilMisc.toSet("glAccountId", "accountName", "accountCode",
"debitCreditFlag", "amount"), UtilMisc.toList("glAccountId"), null, false);
+if (postedTransactionTotals) {
+ Map postedTransactionTotalsMap = [:]
+ postedTransactionTotals.each { postedTransactionTotal ->
+ Map accountMap =
(Map)postedTransactionTotalsMap.get(postedTransactionTotal.glAccountId);
+ if (!accountMap) {
+ accountMap = UtilMisc.makeMapWritable(postedTransactionTotal);
+ accountMap.put("D", BigDecimal.ZERO);
+ accountMap.put("C", BigDecimal.ZERO);
+ }
+ UtilMisc.addToBigDecimalInMap(accountMap,
postedTransactionTotal.debitCreditFlag, postedTransactionTotal.amount);
+ postedTransactionTotalsMap.put(postedTransactionTotal.glAccountId,
accountMap);
+ }
+ postedTotals = postedTransactionTotalsMap.values().asList();
+}
+// Posted grand total for Debits
+andExprs = FastList.newInstance();
+andExprs.add(EntityCondition.makeCondition("organizationPartyId",
EntityOperator.IN, partyIds));
+andExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS,
"Y"));
+andExprs.add(EntityCondition.makeCondition("debitCreditFlag",
EntityOperator.EQUALS, "D"));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.GREATER_THAN_EQUAL_TO, fromDate));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.LESS_THAN_EQUAL_TO, thruDate));
+andCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
+List postedDebitTransactionTotals = delegator.findList("AcctgTransEntrySums",
andCond, UtilMisc.toSet("amount"), null, null, false);
+if (postedDebitTransactionTotals) {
+ postedDebitTransactionTotal =
EntityUtil.getFirst(postedDebitTransactionTotals);
+ if (postedDebitTransactionTotal && postedDebitTransactionTotal.amount) {
+ postedTotalDebit = postedDebitTransactionTotal.amount;
+ }
+}
+// Posted grand total for Credits
+andExprs = FastList.newInstance();
+andExprs.add(EntityCondition.makeCondition("organizationPartyId",
EntityOperator.IN, partyIds));
+andExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS,
"Y"));
+andExprs.add(EntityCondition.makeCondition("debitCreditFlag",
EntityOperator.EQUALS, "C"));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.GREATER_THAN_EQUAL_TO, fromDate));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.LESS_THAN_EQUAL_TO, thruDate));
+andCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
+List postedCreditTransactionTotals = delegator.findList("AcctgTransEntrySums",
andCond, UtilMisc.toSet("amount"), null, null, false);
+if (postedCreditTransactionTotals) {
+ postedCreditTransactionTotal =
EntityUtil.getFirst(postedCreditTransactionTotals);
+ if (postedCreditTransactionTotal && postedCreditTransactionTotal.amount) {
+ postedTotalCredit = postedCreditTransactionTotal.amount;
+ }
+}
+postedTotals.add(["D":postedTotalDebit, "C":postedTotalCredit]);
+context.postedTransactionTotals = postedTotals;
+
+// UNPOSTED
+// Unposted transactions totals and grand totals
+unpostedTotals = [];
+unpostedTotalDebit = BigDecimal.ZERO;
+unpostedTotalCredit = BigDecimal.ZERO;
+andExprs = FastList.newInstance();
+andExprs.add(EntityCondition.makeCondition("organizationPartyId",
EntityOperator.IN, partyIds));
+andExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS,
"N"));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.GREATER_THAN_EQUAL_TO, fromDate));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.LESS_THAN_EQUAL_TO, thruDate));
+andCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
+List unpostedTransactionTotals = delegator.findList("AcctgTransEntrySums",
andCond, UtilMisc.toSet("glAccountId", "accountName", "accountCode",
"debitCreditFlag", "amount"), UtilMisc.toList("glAccountId"), null, false);
+if (unpostedTransactionTotals) {
+ Map unpostedTransactionTotalsMap = [:]
+ unpostedTransactionTotals.each { unpostedTransactionTotal ->
+ Map accountMap =
(Map)unpostedTransactionTotalsMap.get(unpostedTransactionTotal.glAccountId);
+ if (!accountMap) {
+ accountMap = UtilMisc.makeMapWritable(unpostedTransactionTotal);
+ accountMap.put("D", BigDecimal.ZERO);
+ accountMap.put("C", BigDecimal.ZERO);
+ }
+ UtilMisc.addToBigDecimalInMap(accountMap,
unpostedTransactionTotal.debitCreditFlag, unpostedTransactionTotal.amount);
+ unpostedTransactionTotalsMap.put(unpostedTransactionTotal.glAccountId,
accountMap);
+ }
+ unpostedTotals = unpostedTransactionTotalsMap.values().asList();
+}
+// Unposted grand total for Debits
+andExprs = FastList.newInstance();
+andExprs.add(EntityCondition.makeCondition("organizationPartyId",
EntityOperator.IN, partyIds));
+andExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS,
"N"));
+andExprs.add(EntityCondition.makeCondition("debitCreditFlag",
EntityOperator.EQUALS, "D"));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.GREATER_THAN_EQUAL_TO, fromDate));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.LESS_THAN_EQUAL_TO, thruDate));
+andCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
+List unpostedDebitTransactionTotals =
delegator.findList("AcctgTransEntrySums", andCond, UtilMisc.toSet("amount"),
null, null, false);
+if (unpostedDebitTransactionTotals) {
+ unpostedDebitTransactionTotal =
EntityUtil.getFirst(unpostedDebitTransactionTotals);
+ if (unpostedDebitTransactionTotal && unpostedDebitTransactionTotal.amount)
{
+ unpostedTotalDebit = unpostedDebitTransactionTotal.amount;
+ }
+}
+// Unposted grand total for Credits
+andExprs = FastList.newInstance();
+andExprs.add(EntityCondition.makeCondition("organizationPartyId",
EntityOperator.IN, partyIds));
+andExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS,
"N"));
+andExprs.add(EntityCondition.makeCondition("debitCreditFlag",
EntityOperator.EQUALS, "C"));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.GREATER_THAN_EQUAL_TO, fromDate));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.LESS_THAN_EQUAL_TO, thruDate));
+andCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
+List unpostedCreditTransactionTotals =
delegator.findList("AcctgTransEntrySums", andCond, UtilMisc.toSet("amount"),
null, null, false);
+if (unpostedCreditTransactionTotals) {
+ unpostedCreditTransactionTotal =
EntityUtil.getFirst(unpostedCreditTransactionTotals);
+ if (unpostedCreditTransactionTotal &&
unpostedCreditTransactionTotal.amount) {
+ unpostedTotalCredit = unpostedCreditTransactionTotal.amount;
+ }
+}
+unpostedTotals.add(["D":unpostedTotalDebit, "C":unpostedTotalCredit]);
+context.unpostedTransactionTotals = unpostedTotals;
+
+// POSTED AND UNPOSTED
+// Posted and unposted transactions totals and grand totals
+allTotals = [];
+allTotalDebit = BigDecimal.ZERO;
+allTotalCredit = BigDecimal.ZERO;
+andExprs = FastList.newInstance();
+andExprs.add(EntityCondition.makeCondition("organizationPartyId",
EntityOperator.IN, partyIds));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.GREATER_THAN_EQUAL_TO, fromDate));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.LESS_THAN_EQUAL_TO, thruDate));
+andCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
+List allTransactionTotals = delegator.findList("AcctgTransEntrySums", andCond,
UtilMisc.toSet("glAccountId", "accountName", "accountCode", "debitCreditFlag",
"amount"), UtilMisc.toList("glAccountId"), null, false);
+if (allTransactionTotals) {
+ Map allTransactionTotalsMap = [:]
+ allTransactionTotals.each { allTransactionTotal ->
+ Map accountMap =
(Map)allTransactionTotalsMap.get(allTransactionTotal.glAccountId);
+ if (!accountMap) {
+ accountMap = UtilMisc.makeMapWritable(allTransactionTotal);
+ accountMap.put("D", BigDecimal.ZERO);
+ accountMap.put("C", BigDecimal.ZERO);
}
- postedAndUnpostedMap = FastMap.newInstance();
- postedAndUnpostedMap.glAccountId = prevGlAccountId;
- postedAndUnpostedMap.credit = creditTotal.setScale(decimals, rounding);
- postedAndUnpostedMap.debit = debitTotal.setScale(decimals, rounding);
- postedAndUnpostedMap.openingBalanceCredit =
openingBalanceCredit.setScale(decimals, rounding);
- postedAndUnpostedMap.openingBalanceDebit =
openingBalanceDebit.setScale(decimals, rounding);
- transectionList.add(postedAndUnpostedMap);
- debitTotal = BigDecimal.ZERO;
- creditTotal = BigDecimal.ZERO;
- }
- if ("C".equals(value.debitCreditFlag))
- creditTotal += value.getBigDecimal("totalAmount");
- if ("D".equals(value.debitCreditFlag))
- debitTotal += value.getBigDecimal("totalAmount");
-}
-
-private void getPostedTrans(int index, String prevGlAccountId) {
- if (index < allPostedTrans.size())
- value = allPostedTrans.get(index);
- else {
- tempValueMap.isPosted = "Y";
- value = tempValueMap;
- }
- if("Y".equals(value.isPosted)) {
- addTransToList(postedTransTotalList, prevGlAccountId, value);
- }
- if (index < allPostedTrans.size()) {
- index++;
- getPostedTrans(index, value.glAccountId);
- }
- else return;
-}
-
-private void getUnpostedTrans(int index, String prevGlAccountId) {
- if (index != allUnPostedTrans.size())
- value = allUnPostedTrans.get(index);
- else {
- tempValueMap.isPosted = "N";
- value = tempValueMap;
- }
-
- if("N".equals(value.isPosted)) {
- addTransToList(unpostedTransTotalList, prevGlAccountId, value);
- }
- if (index < allUnPostedTrans.size()) {
- index++;
- getUnpostedTrans(index, value.glAccountId);
- }
- else return;
-}
-
-private void getPostedAndUnpostedTrans(int index, String prevGlAccountId) {
- if (index != allTrans.size())
- value = allTrans.get(index);
- value.isPosted = "";
- addTransToList(postedAndUnpostedTransTotalList, prevGlAccountId, value);
- if (index < allTrans.size()) {
- index++;
- getPostedAndUnpostedTrans(index, value.glAccountId);
- }
- else return;
-}
-context.postedTransTotalList = postedTransTotalList;
-context.unpostedTransTotalList = unpostedTransTotalList;
-context.postedAndUnpostedTransTotalList = postedAndUnpostedTransTotalList;
\ No newline at end of file
+ UtilMisc.addToBigDecimalInMap(accountMap,
allTransactionTotal.debitCreditFlag, allTransactionTotal.amount);
+ allTransactionTotalsMap.put(allTransactionTotal.glAccountId,
accountMap);
+ }
+ allTotals = allTransactionTotalsMap.values().asList();
+}
+// Posted and unposted grand total for Debits
+andExprs = FastList.newInstance();
+andExprs.add(EntityCondition.makeCondition("organizationPartyId",
EntityOperator.IN, partyIds));
+andExprs.add(EntityCondition.makeCondition("debitCreditFlag",
EntityOperator.EQUALS, "D"));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.GREATER_THAN_EQUAL_TO, fromDate));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.LESS_THAN_EQUAL_TO, thruDate));
+andCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
+List allDebitTransactionTotals = delegator.findList("AcctgTransEntrySums",
andCond, UtilMisc.toSet("amount"), null, null, false);
+if (allDebitTransactionTotals) {
+ allDebitTransactionTotal = EntityUtil.getFirst(allDebitTransactionTotals);
+ if (allDebitTransactionTotal && allDebitTransactionTotal.amount) {
+ allTotalDebit = allDebitTransactionTotal.amount;
+ }
+}
+// Posted and unposted grand total for Credits
+andExprs = FastList.newInstance();
+andExprs.add(EntityCondition.makeCondition("organizationPartyId",
EntityOperator.IN, partyIds));
+andExprs.add(EntityCondition.makeCondition("debitCreditFlag",
EntityOperator.EQUALS, "C"));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.GREATER_THAN_EQUAL_TO, fromDate));
+andExprs.add(EntityCondition.makeCondition("transactionDate",
EntityOperator.LESS_THAN_EQUAL_TO, thruDate));
+andCond = EntityCondition.makeCondition(andExprs, EntityOperator.AND);
+List allCreditTransactionTotals = delegator.findList("AcctgTransEntrySums",
andCond, UtilMisc.toSet("amount"), null, null, false);
+if (allCreditTransactionTotals) {
+ allCreditTransactionTotal =
EntityUtil.getFirst(allCreditTransactionTotals);
+ if (allCreditTransactionTotal && allCreditTransactionTotal.amount) {
+ allTotalCredit = allCreditTransactionTotal.amount;
+ }
+}
+allTotals.add(["D":allTotalDebit, "C":allTotalCredit]);
+context.allTransactionTotals = allTotals;
Modified:
ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.xml?rev=885712&r1=885711&r2=885712&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.xml
(original)
+++ ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.xml
Tue Dec 1 10:07:09 2009
@@ -227,60 +227,38 @@
<field name="thruDate"><date-time/></field>
<field name="submitButton" widget-style="smallSubmit"><submit
button-type="button"/></field>
</form>
- <form name="PostedTransactionTotalList" type="list"
list-name="postedTransTotalList"
+ <form name="PostedTransactionTotalList" type="list"
list-name="postedTransactionTotals"
odd-row-style="alternate-row" default-table-style="basic-table
hover-bar">
<field name="glAccountId">
<hyperlink target="GlAccountNavigate" description="${glAccountId}">
<parameter param-name="glAccountId"/>
</hyperlink>
</field>
- <field name="accountName" entry-name="glAccountId"><display-entity
entity-name="GlAccount" key-field-name="glAccountId"
description="${accountName}"/></field>
- <field name="debit"><display type="currency"
currency="${currencyUomId}"/></field>
- <field name="credit"><display type="currency"
currency="${currencyUomId}"/></field>
+ <field name="accountName" title-area-style="tableheadwide"><display
description="${accountName}"/></field>
+ <field name="D" title="${uiLabelMap.AccountingDebitFlag}"
widget-style="tabletextright"><display type="currency"
currency="${currencyUomId}"/></field>
+ <field name="C" title="${uiLabelMap.AccountingCreditFlag}"
widget-style="tabletextright"><display type="currency"
currency="${currencyUomId}"/></field>
</form>
-
- <form name="UnpostedTransactionTotalList" type="list"
list-name="unpostedTransTotalList"
+ <form name="UnpostedTransactionTotalList" type="list"
list-name="unpostedTransactionTotals"
odd-row-style="alternate-row" default-table-style="basic-table
hover-bar">
<field name="glAccountId">
<hyperlink target="GlAccountNavigate" description="${glAccountId}">
<parameter param-name="glAccountId"/>
</hyperlink>
</field>
- <field name="accountName" entry-name="glAccountId"><display-entity
entity-name="GlAccount" key-field-name="glAccountId"
description="${accountName}"/></field>
- <field name="debit"><display type="currency"
currency="${currencyUomId}"/></field>
- <field name="credit"><display type="currency"
currency="${currencyUomId}"/></field>
+ <field name="accountName" title-area-style="tableheadwide"><display
description="${accountName}"/></field>
+ <field name="D" title="${uiLabelMap.AccountingDebitFlag}"
widget-style="tabletextright"><display type="currency"
currency="${currencyUomId}"/></field>
+ <field name="C" title="${uiLabelMap.AccountingCreditFlag}"
widget-style="tabletextright"><display type="currency"
currency="${currencyUomId}"/></field>
</form>
- <form name="PostedAndUnpostedTransactionTotalList" type="list"
list-name="postedAndUnpostedTransTotalList"
+ <form name="PostedAndUnpostedTransactionTotalList" type="list"
list-name="allTransactionTotals"
odd-row-style="alternate-row" default-table-style="basic-table
hover-bar">
<field name="glAccountId">
<hyperlink target="GlAccountNavigate" description="${glAccountId}">
<parameter param-name="glAccountId"/>
</hyperlink>
</field>
- <field name="accountName" entry-name="glAccountId"><display-entity
entity-name="GlAccount" key-field-name="glAccountId"
description="${accountName}"/></field>
- <field name="debit"><display type="currency"
currency="${currencyUomId}"/></field>
- <field name="credit"><display type="currency"
currency="${currencyUomId}"/></field>
- </form>
-
- <form name="PostedTransactionTotalListCsv" type="list"
list-name="postedTransTotalList" odd-row-style="alternate-row"
default-table-style="basic-table hover-bar">
- <field name="glAccountId"><display/></field>
- <field name="accountName" entry-name="glAccountId"><display-entity
entity-name="GlAccount" key-field-name="glAccountId"
description="${accountName}"/></field>
- <field name="debit"><display type="currency"
currency="${currencyUomId}"/></field>
- <field name="credit"><display type="currency"
currency="${currencyUomId}"/></field>
- </form>
-
- <form name="UnpostedTransactionTotalListCsv" type="list"
list-name="unpostedTransTotalList" odd-row-style="alternate-row"
default-table-style="basic-table hover-bar">
- <field name="glAccountId"><display/></field>
- <field name="accountName" entry-name="glAccountId"><display-entity
entity-name="GlAccount" key-field-name="glAccountId"
description="${accountName}"/></field>
- <field name="debit"><display type="currency"
currency="${currencyUomId}"/></field>
- <field name="credit"><display type="currency"
currency="${currencyUomId}"/></field>
- </form>
-
- <form name="PostedAndUnpostedTransactionTotalListCsv" type="list"
list-name="postedAndUnpostedTransTotalList" odd-row-style="alternate-row"
default-table-style="basic-table hover-bar">
- <field name="glAccountId"><display/></field>
- <field name="accountName" entry-name="glAccountId"><display-entity
entity-name="GlAccount" key-field-name="glAccountId"
description="${accountName}"/></field>
- <field name="debit"><display type="currency"
currency="${currencyUomId}"/></field>
- <field name="credit"><display type="currency"
currency="${currencyUomId}"/></field>
+ <field name="accountName" title-area-style="tableheadwide"><display
description="${accountName}"/></field>
+ <field name="D" title="${uiLabelMap.AccountingDebitFlag}"
widget-style="tabletextright"><display type="currency"
currency="${currencyUomId}"/></field>
+ <field name="C" title="${uiLabelMap.AccountingCreditFlag}"
widget-style="tabletextright"><display type="currency"
currency="${currencyUomId}"/></field>
</form>
<form name="IncomeStatementListCsv" type="list"
list-name="glAccountIncomeList" view-size="99999">
Modified:
ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryScreens.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryScreens.xml?rev=885712&r1=885711&r2=885712&view=diff
==============================================================================
---
ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryScreens.xml
(original)
+++
ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryScreens.xml
Tue Dec 1 10:07:09 2009
@@ -437,7 +437,6 @@
</section>
</screen>
- <!-- TODO: this is just a placeholder: the report is not still implemented
-->
<screen name="TransactionTotals">
<section>
<actions>
@@ -451,8 +450,72 @@
<service service-name="getPartyAccountingPreferences"
result-map="result" auto-field-map="true"/>
<set field="partyAcctgPreference"
from-field="result.partyAccountingPreference"/>
<set field="currencyUomId"
from-field="partyAcctgPreference.baseCurrencyUomId"/>
- <set field="fromDate" from-field="parameters.fromDate"
type="Timestamp"/>
- <set field="thruDate" from-field="parameters.thruDate"
type="Timestamp"/>
+ <!-- Get a default fromDate -->
+ <set field="findLastClosedDateInMap.organizationPartyId"
from-field="organizationPartyId"/>
+ <service service-name="findLastClosedDate"
in-map-name="findLastClosedDateInMap">
+ <result-to-field result-name="lastClosedDate"/>
+ <result-to-field result-name="lastClosedTimePeriod"/>
+ </service>
+ <set field="fromDate" from-field="parameters.fromDate"
type="Timestamp" default-value="${lastClosedDate}"/>
+ <set field="thruDate" from-field="parameters.thruDate"
type="Timestamp" default-value="${nowTimestamp}"/>
+ <script
location="component://accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy"/>
+ </actions>
+ <widgets>
+ <decorator-screen
name="CommonOrganizationAccountingReportsDecorator"
location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <screenlet
title="${uiLabelMap.AccountingTransactionTotals}">
+ <include-form name="FindTransactionTotals"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
+ </screenlet>
+ <section>
+ <condition>
+ <and>
+ <not><if-empty field="fromDate"/></not>
+ <not><if-empty field="thruDate"/></not>
+ <not><if-empty
field="organizationPartyId"/></not>
+ </and>
+ </condition>
+ <widgets>
+ <link
text="${uiLabelMap.AccountingExportAsCsv}" style="button"
target="TransactionTotalsCsv.csv">
+ <parameter param-name="fromDate"/>
+ <parameter param-name="thruDate"/>
+ <parameter
param-name="organizationPartyId"/>
+ </link>
+ <link
text="${uiLabelMap.AccountingExportAsPdf}" style="button"
target="TransactionTotalsPdf.pdf">
+ <parameter param-name="fromDate"/>
+ <parameter param-name="thruDate"/>
+ <parameter
param-name="organizationPartyId"/>
+ </link>
+ <screenlet
title="${uiLabelMap.AccountingPostedTransactionTotals}">
+ <include-form
name="PostedTransactionTotalList"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
+ </screenlet>
+ <screenlet
title="${uiLabelMap.AccountingUnPostedTransactionTotals}">
+ <include-form
name="UnpostedTransactionTotalList"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
+ </screenlet>
+ <screenlet
title="${uiLabelMap.AccountingPostedAndUnpostedTransactionTotals}">
+ <include-form
name="PostedAndUnpostedTransactionTotalList"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
+ </screenlet>
+ </widgets>
+ </section>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
+ <screen name="TransactionTotalsOrig">
+ <section>
+ <actions>
+ <set field="titleProperty"
value="AccountingTransactionTotals"/>
+ <set field="labelTitleProperty"
value="AccountingTransactionTotals"/>
+ <set field="tabButtonItem"
value="OrganizationAccountingReports"/>
+ <set field="tabButtonItem2" value="TransactionTotals"/>
+ <set field="organizationPartyId"
from-field="parameters.organizationPartyId"/>
+ <set field="partyIds"
value="${groovy:org.ofbiz.party.party.PartyWorker.getAssociatedPartyIdsByRelationshipType(delegator,
organizationPartyId, 'GROUP_ROLLUP')}" type="List"/>
+ <set field="partyIds[]" from-field="organizationPartyId"/>
+ <service service-name="getPartyAccountingPreferences"
result-map="result" auto-field-map="true"/>
+ <set field="partyAcctgPreference"
from-field="result.partyAccountingPreference"/>
+ <set field="currencyUomId"
from-field="partyAcctgPreference.baseCurrencyUomId"/>
+ <set field="fromDate" from-field="parameters.fromDate"
type="Timestamp" default-value="${nowTimestamp}"/>
+ <set field="thruDate" from-field="parameters.thruDate"
type="Timestamp" default-value="${nowTimestamp}"/>
<script
location="component://accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy"/>
</actions>
<widgets>
@@ -464,9 +527,9 @@
<section>
<condition>
<or>
- <not><if-empty
field="postedTransTotalList"/></not>
- <not><if-empty
field="unpostedTransTotalList"/></not>
- <not><if-empty
field="postedAndUnpostedTransTotalList"/></not>
+ <not><if-empty
field="postedTransactionTotals"/></not>
+ <not><if-empty
field="unpostedTransactionTotals"/></not>
+ <not><if-empty
field="allTransactionTotals"/></not>
</or>
</condition>
<widgets>
@@ -489,7 +552,7 @@
<include-form name="UnpostedTransactionTotalList"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
</screenlet>
<screenlet
title="${uiLabelMap.AccountingPostedAndUnpostedTransactionTotals}">
- <include-form
name="PostedAndUnpostedTransactionTotalList"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
+ <include-form
name="PostedAndUnpostedTransactionTotalList"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
</screenlet>
</decorator-section>
</decorator-screen>
@@ -501,17 +564,25 @@
<section>
<actions>
<property-map resource="AccountingUiLabels"
map-name="uiLabelMap" global="true"/>
+ <set field="titleProperty"
value="AccountingTransactionTotals"/>
+ <set field="labelTitleProperty"
value="AccountingTransactionTotals"/>
+ <set field="tabButtonItem"
value="OrganizationAccountingReports"/>
+ <set field="tabButtonItem2" value="TransactionTotals"/>
<set field="organizationPartyId"
from-field="parameters.organizationPartyId"/>
<set field="partyIds"
value="${groovy:org.ofbiz.party.party.PartyWorker.getAssociatedPartyIdsByRelationshipType(delegator,
organizationPartyId, 'GROUP_ROLLUP')}" type="List"/>
<set field="partyIds[]" from-field="organizationPartyId"/>
- <set field="fromDate" from-field="parameters.fromDate"
type="Timestamp"/>
- <set field="thruDate" from-field="parameters.thruDate"
type="Timestamp"/>
+ <service service-name="getPartyAccountingPreferences"
result-map="result" auto-field-map="true"/>
+ <set field="partyAcctgPreference"
from-field="result.partyAccountingPreference"/>
+ <set field="currencyUomId"
from-field="partyAcctgPreference.baseCurrencyUomId"/>
+ <set field="fromDate" from-field="parameters.fromDate"
type="Timestamp" default-value="${nowTimestamp}"/>
+ <set field="thruDate" from-field="parameters.thruDate"
type="Timestamp" default-value="${nowTimestamp}"/>
<script
location="component://accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy"/>
</actions>
<widgets>
<decorator-screen name="SimpleDecorator"
location="component://common/widget/CommonScreens.xml">
<decorator-section name="body">
<container>
+ <include-form name="FindTransactionTotals"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
<label
text="${uiLabelMap.AccountingPostedTransactionTotals}"/>
<include-form name="PostedTransactionTotalList"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
<label
text="${uiLabelMap.AccountingUnPostedTransactionTotals}"/>
@@ -529,20 +600,27 @@
<section>
<actions>
<property-map resource="AccountingUiLabels"
map-name="uiLabelMap" global="true"/>
+ <set field="titleProperty"
value="AccountingTransactionTotals"/>
+ <set field="labelTitleProperty"
value="AccountingTransactionTotals"/>
+ <set field="tabButtonItem"
value="OrganizationAccountingReports"/>
+ <set field="tabButtonItem2" value="TransactionTotals"/>
<set field="organizationPartyId"
from-field="parameters.organizationPartyId"/>
<set field="partyIds"
value="${groovy:org.ofbiz.party.party.PartyWorker.getAssociatedPartyIdsByRelationshipType(delegator,
organizationPartyId, 'GROUP_ROLLUP')}" type="List"/>
<set field="partyIds[]" from-field="organizationPartyId"/>
- <set field="fromDate" from-field="parameters.fromDate"
type="Timestamp"/>
- <set field="thruDate" from-field="parameters.thruDate"
type="Timestamp"/>
+ <service service-name="getPartyAccountingPreferences"
result-map="result" auto-field-map="true"/>
+ <set field="partyAcctgPreference"
from-field="result.partyAccountingPreference"/>
+ <set field="currencyUomId"
from-field="partyAcctgPreference.baseCurrencyUomId"/>
+ <set field="fromDate" from-field="parameters.fromDate"
type="Timestamp" default-value="${nowTimestamp}"/>
+ <set field="thruDate" from-field="parameters.thruDate"
type="Timestamp" default-value="${nowTimestamp}"/>
<script
location="component://accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy"/>
</actions>
<widgets>
<label text="${uiLabelMap.AccountingPostedTransactionTotals}"/>
- <include-form name="PostedTransactionTotalListCsv"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
+ <include-form name="PostedTransactionTotalList"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
<label text="${uiLabelMap.AccountingPostedTransactionTotals}"/>
- <include-form name="UnpostedTransactionTotalListCsv"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
+ <include-form name="UnpostedTransactionTotalList"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
<label text="${uiLabelMap.AccountingPostedTransactionTotals}"/>
- <include-form name="PostedAndUnpostedTransactionTotalListCsv"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
+ <include-form name="PostedAndUnpostedTransactionTotalList"
location="component://accounting/widget/ReportFinancialSummaryForms.xml"/>
</widgets>
</section>
</screen>