|
Modified: ofbiz/branches/addbirt/applications/accounting/script/org/ofbiz/accounting/test/AutoPaymentTests.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/script/org/ofbiz/accounting/test/AutoPaymentTests.xml?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/script/org/ofbiz/accounting/test/AutoPaymentTests.xml (original) +++ ofbiz/branches/addbirt/applications/accounting/script/org/ofbiz/accounting/test/AutoPaymentTests.xml Fri Dec 11 23:11:39 2009 @@ -203,28 +203,31 @@ <!-- Post condition : thruDate for PaymentGroupMember should be Not Null payment status should be changed to PMNT_VOID. --> - <set field="paymentGroupId" value="9000"/> + <set field="paymentGroupId" value="9001"/> <entity-one entity-name="UserLogin" value-field="userLogin"> <field-map field-name="userLoginId" value="system"/> </entity-one> <set field="cancelCheckRunPaymentsMap.userLogin" from-field="userLogin"/> <set field="cancelCheckRunPaymentsMap.paymentGroupId" from-field="paymentGroupId"/> <call-service service-name="cancelCheckRunPayments" in-map-name="cancelCheckRunPaymentsMap"/> - <entity-and entity-name="PaymentGroupMember" list="paymentGroupMembers"> + <entity-and entity-name="PmtGrpMembrPaymentAndFinAcctTrans" list="paymentGroupMemberAndTransList"> <field-map field-name="paymentGroupId"/> </entity-and> - <iterate list="paymentGroupMembers" entry="paymentGroupMember"> - <assert> - <not> - <if-empty field="paymentGroupMember.thruDate"/> - </not> - </assert> - <check-errors/> - <get-related-one value-field="paymentGroupMember" relation-name="Payment" to-value-field="payment"/> - <assert> - <if-compare field="payment.statusId" operator="equals" value="PMNT_VOID"/> - </assert> - </iterate> + <first-from-list list="paymentGroupMemberAndTransList" entry="paymentGroupMemberAndTrans"/> + <if-compare field="paymentGroupMemberAndTrans.finAccountTransStatusId" operator="not-equals" value="FINACT_TRNS_APPROVED"> + <iterate list="paymentGroupMemberAndTransList" entry="paymentGroupMemberAndTrans"> + <assert> + <not> + <if-empty field="paymentGroupMemberAndTrans.thruDate"/> + </not> + </assert> + <check-errors/> + <assert> + <if-compare field="paymentGroupMemberAndTrans.statusId" operator="equals" value="PMNT_VOID"/> + </assert> + <check-errors/> + </iterate> + </if-compare> <log level="info" message="Test case for cancelCheckRunPayments ran successfully for paymentGroupId = ${paymentGroupId}"/> </simple-method> Modified: ofbiz/branches/addbirt/applications/accounting/servicedef/services_payment.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/servicedef/services_payment.xml?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/servicedef/services_payment.xml (original) +++ ofbiz/branches/addbirt/applications/accounting/servicedef/services_payment.xml Fri Dec 11 23:11:39 2009 @@ -161,7 +161,6 @@ location="component://accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml" invoke="cancelPaymentBatch" auth="true"> <description>cancel payment batch</description> <attribute name="paymentGroupId" type="String" mode="IN" optional="false"/> - <attribute name="glReconciliationId" type="String" mode="IN" optional="true"/> </service> <service name="createPaymentAndPaymentGroupForInvoices" engine="simple" location="component://accounting/script/org/ofbiz/accounting/payment/PaymentServices.xml" invoke="createPaymentAndPaymentGroupForInvoices" auth="true"> Modified: ofbiz/branches/addbirt/applications/accounting/src/org/ofbiz/accounting/thirdparty/cybersource/IcsPaymentServices.java URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/src/org/ofbiz/accounting/thirdparty/cybersource/IcsPaymentServices.java?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/src/org/ofbiz/accounting/thirdparty/cybersource/IcsPaymentServices.java (original) +++ ofbiz/branches/addbirt/applications/accounting/src/org/ofbiz/accounting/thirdparty/cybersource/IcsPaymentServices.java Fri Dec 11 23:11:39 2009 @@ -531,8 +531,17 @@ result.put("cvCode", reply.get("ccAuthReply_cvCode")); result.put("avsCode", reply.get("ccAuthReply_avsCode")); result.put("scoreCode", reply.get("ccAuthReply_authFactorCode")); - result.put("captureRefNum", reply.get("requestID")); // maybe use something else here? - result.put("captureCode", reply.get("ccCaptureReply_reconciliationID")); + result.put("captureRefNum", reply.get("requestID")); + if (UtilValidate.isNotEmpty(reply.get("ccCaptureReply_reconciliationID"))) { + if ("ACCEPT".equalsIgnoreCase(decision)) { + result.put("captureResult", Boolean.TRUE); + } else { + result.put("captureResult", Boolean.FALSE); + } + result.put("captureCode", reply.get("ccCaptureReply_reconciliationID")); + result.put("captureFlag", reply.get("ccCaptureReply_reasonCode")); + result.put("captureMessage", reply.get("decision")); + } if (Debug.infoOn()) Debug.logInfo("CC [Cybersource] authorization result : " + result, module); } Modified: ofbiz/branches/addbirt/applications/accounting/src/org/ofbiz/accounting/thirdparty/sagepay/SagePayPaymentServices.java URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/src/org/ofbiz/accounting/thirdparty/sagepay/SagePayPaymentServices.java?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/src/org/ofbiz/accounting/thirdparty/sagepay/SagePayPaymentServices.java (original) +++ ofbiz/branches/addbirt/applications/accounting/src/org/ofbiz/accounting/thirdparty/sagepay/SagePayPaymentServices.java Fri Dec 11 23:11:39 2009 @@ -212,19 +212,19 @@ } } else if (status != null && "INVALID".equals(status)) { Debug.logInfo("SagePay - Invalid authorisation request for order : " + vendorTxCode, module); - result = SagePayUtil.buildCardAuthorisationPaymentResponse(Boolean.FALSE, null, null, new BigDecimal("0.00"), "INVALID", vendorTxCode, statusDetail); + result = SagePayUtil.buildCardAuthorisationPaymentResponse(Boolean.FALSE, null, null, BigDecimal.ZERO, "INVALID", vendorTxCode, statusDetail); } else if (status != null && "MALFORMED".equals(status)) { Debug.logInfo("SagePay - Malformed authorisation request for order : " + vendorTxCode, module); - result = SagePayUtil.buildCardAuthorisationPaymentResponse(Boolean.FALSE, null, null, new BigDecimal("0.00"), "MALFORMED", vendorTxCode, statusDetail); + result = SagePayUtil.buildCardAuthorisationPaymentResponse(Boolean.FALSE, null, null, BigDecimal.ZERO, "MALFORMED", vendorTxCode, statusDetail); } else if (status != null && "NOTAUTHED".equals(status)) { Debug.logInfo("SagePay - NotAuthed authorisation request for order : " + vendorTxCode, module); - result = SagePayUtil.buildCardAuthorisationPaymentResponse(Boolean.FALSE, null, securityKey, new BigDecimal("0.00"), vpsTxId, vendorTxCode, statusDetail); + result = SagePayUtil.buildCardAuthorisationPaymentResponse(Boolean.FALSE, null, securityKey, BigDecimal.ZERO, vpsTxId, vendorTxCode, statusDetail); } else if (status != null && "REJECTED".equals(status)) { Debug.logInfo("SagePay - Rejected authorisation request for order : " + vendorTxCode, module); result = SagePayUtil.buildCardAuthorisationPaymentResponse(Boolean.FALSE, null, securityKey, new BigDecimal(amount), vpsTxId, vendorTxCode, statusDetail); } else { Debug.logInfo("SagePay - Invalid status " + status + " received for order : " + vendorTxCode, module); - result = SagePayUtil.buildCardAuthorisationPaymentResponse(Boolean.FALSE, null, null, new BigDecimal("0.00"), "ERROR", vendorTxCode, statusDetail); + result = SagePayUtil.buildCardAuthorisationPaymentResponse(Boolean.FALSE, null, null, BigDecimal.ZERO, "ERROR", vendorTxCode, statusDetail); } } catch(GenericServiceException e) { Debug.logError(e, "Error in calling SagePayPaymentAuthentication", module); @@ -394,7 +394,7 @@ result = SagePayUtil.buildCardRefundPaymentResponse(Boolean.TRUE, txAuthNo, amount, vpsTxId, orderId, statusDetail); } else { Debug.logInfo("SagePay - Invalid status " + status + " received for order : " + orderId, module); - result = SagePayUtil.buildCardRefundPaymentResponse(Boolean.FALSE, null, new BigDecimal("0.00"), status, orderId, statusDetail); + result = SagePayUtil.buildCardRefundPaymentResponse(Boolean.FALSE, null, BigDecimal.ZERO, status, orderId, statusDetail); } } catch(GenericServiceException e) { @@ -437,13 +437,13 @@ result = SagePayUtil.buildCardVoidPaymentResponse(Boolean.TRUE, amount, "SUCCESS", orderId, statusDetail); } else if (status != null && "MALFORMED".equals(status)) { Debug.logInfo("SagePay - Malformed void request for order : " + orderId, module); - result = SagePayUtil.buildCardVoidPaymentResponse(Boolean.FALSE, new BigDecimal("0.00"), "MALFORMED", orderId, statusDetail); + result = SagePayUtil.buildCardVoidPaymentResponse(Boolean.FALSE, BigDecimal.ZERO, "MALFORMED", orderId, statusDetail); } else if (status != null && "INVALID".equals(status)){ Debug.logInfo("SagePay - Invalid void request for order : " + orderId, module); - result = SagePayUtil.buildCardVoidPaymentResponse(Boolean.FALSE, new BigDecimal("0.00"), "INVALID", orderId, statusDetail); + result = SagePayUtil.buildCardVoidPaymentResponse(Boolean.FALSE, BigDecimal.ZERO, "INVALID", orderId, statusDetail); } else if (status != null && "ERROR".equals(status)){ Debug.logInfo("SagePay - Error in void request for order : " + orderId, module); - result = SagePayUtil.buildCardVoidPaymentResponse(Boolean.FALSE, new BigDecimal("0.00"), "ERROR", orderId, statusDetail); + result = SagePayUtil.buildCardVoidPaymentResponse(Boolean.FALSE, BigDecimal.ZERO, "ERROR", orderId, statusDetail); } } catch(GenericServiceException e) { Modified: ofbiz/branches/addbirt/applications/accounting/testdef/invoicetests.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/testdef/invoicetests.xml?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/testdef/invoicetests.xml (original) +++ ofbiz/branches/addbirt/applications/accounting/testdef/invoicetests.xml Fri Dec 11 23:11:39 2009 @@ -17,7 +17,7 @@ under the License. --> -<test-suite suite-name="accountingtests" +<test-suite suite-name="invoicetests" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/test-suite.xsd"> <!-- Test case for Commission Run --> Modified: ofbiz/branches/addbirt/applications/accounting/testdef/paymenttests.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/testdef/paymenttests.xml?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/testdef/paymenttests.xml (original) +++ ofbiz/branches/addbirt/applications/accounting/testdef/paymenttests.xml Fri Dec 11 23:11:39 2009 @@ -17,7 +17,7 @@ under the License. --> -<test-suite suite-name="accountingtests" +<test-suite suite-name="paymenttests" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/test-suite.xsd"> Modified: ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/ComparativeIncomeStatement.groovy URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/ComparativeIncomeStatement.groovy?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/ComparativeIncomeStatement.groovy (original) +++ ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/ComparativeIncomeStatement.groovy Fri Dec 11 23:11:39 2009 @@ -17,109 +17,69 @@ * under the License. */ +import org.ofbiz.base.util.UtilMisc; import java.math.BigDecimal; -import java.sql.Timestamp; -import org.ofbiz.entity.util.EntityUtil; -period1FromDate = parameters.period1FromDate; -period1ThruDate = parameters.period1ThruDate; -period2FromDate = parameters.period2FromDate; -period2ThruDate = parameters.period2ThruDate; - -if (period1FromDate && period1ThruDate && organizationPartyId && period2FromDate && period2ThruDate) { - onlyIncludePeriodTypeIdList = []; - onlyIncludePeriodTypeIdList.add("FISCAL_YEAR"); - glAccountIncomeList = []; - glAccountExpenseList = []; - periodExpenses = []; - periodIncomes = []; - period1IncomeStatement = getGlAccountTotals(onlyIncludePeriodTypeIdList, Timestamp.valueOf(period1FromDate), Timestamp.valueOf(period1ThruDate), organizationPartyId, parameters.glFiscalTypeId); - period1Expenses = []; - period1Incomes = []; - if (period1IncomeStatement) { - context.period1TotalNetIncome = period1IncomeStatement.totalNetIncome; - glAccountTotalsMapForPeriod1 = period1IncomeStatement.glAccountTotalsMap; - if (glAccountTotalsMapForPeriod1) { - period1Expenses = glAccountTotalsMapForPeriod1.expenses; - period1Incomes = glAccountTotalsMapForPeriod1.income; - if (period1Incomes) - periodIncomes.addAll(period1Incomes); - if (period1Expenses) - periodExpenses.addAll(period1Expenses); - } - } - period2IncomeStatement = getGlAccountTotals(onlyIncludePeriodTypeIdList ,Timestamp.valueOf(period2FromDate) ,Timestamp.valueOf(period2ThruDate) ,organizationPartyId , parameters.glFiscalTypeId); - period2Expenses = []; - period2Incomes = []; - if (period2IncomeStatement) { - context.period2TotalNetIncome = period2IncomeStatement.totalNetIncome; - glAccountTotalsMapForPeriod2 = period2IncomeStatement.glAccountTotalsMap; - if (glAccountTotalsMapForPeriod2) { - period2Expenses = glAccountTotalsMapForPeriod2.expenses; - period2Incomes = glAccountTotalsMapForPeriod2.income; - period2Expenses.each { period2Expense -> - if (!((periodExpenses.glAccountId).contains(period2Expense.glAccountId))) - periodExpenses.add(period2Expense); - } - period2Incomes.each { period2Income -> - if (!((periodIncomes.glAccountId).contains(period2Income.glAccountId))) - periodIncomes.add(period2Income); - } - } +revenueAccountBalanceMap = [:]; +revenueAccountBalanceList = []; +revenueAccountBalanceList1.each { accountBalance -> + revenueAccountBalanceMap.put(accountBalance.glAccountId, UtilMisc.toMap("glAccountId", accountBalance.glAccountId, "accountCode", accountBalance.accountCode, "accountName", accountBalance.accountName, "balance1", accountBalance.balance, "balance2", BigDecimal.ZERO)); +} +revenueAccountBalanceList2.each { accountBalance -> + Map assetAccount = (Map)revenueAccountBalanceMap.get(accountBalance.glAccountId); + if (!assetAccount) { + revenueAccountBalanceMap.put(accountBalance.glAccountId, UtilMisc.toMap("glAccountId", accountBalance.glAccountId, "accountCode", accountBalance.accountCode, "accountName", accountBalance.accountName, "balance2", accountBalance.balance, "balance1", BigDecimal.ZERO)); + } else { + assetAccount.put("balance2", accountBalance.balance); } - periodExpenses.each { periodExpense -> - period1TotalAmount = BigDecimal.ZERO; - period2TotalAmount = BigDecimal.ZERO; - if ((period1Expenses.glAccountId).contains(periodExpense.glAccountId)) { - period1Expenses.each { period1Expense -> - if(periodExpense.glAccountId.equals(period1Expense.glAccountId)) - period1TotalAmount = period1Expense.totalAmount; - } - } - if ((period2Expenses.glAccountId).contains(periodExpense.glAccountId)) { - period2Expenses.each { period2Expense -> - if(periodExpense.glAccountId.equals(period2Expense.glAccountId)) - period2TotalAmount = period2Expense.totalAmount; - } - } - glAccountExpenseList.add([glAccountId : periodExpense.glAccountId , period1TotalAmount : period1TotalAmount , period2TotalAmount : period2TotalAmount]); - context.glAccountExpenseList = glAccountExpenseList; +} +revenueAccountBalanceList = UtilMisc.sortMaps(revenueAccountBalanceMap.values().asList(), UtilMisc.toList("accountCode")); +context.revenueAccountBalanceList = revenueAccountBalanceList; + +expenseAccountBalanceMap = [:]; +expenseAccountBalanceList = []; +expenseAccountBalanceList1.each { accountBalance -> + expenseAccountBalanceMap.put(accountBalance.glAccountId, UtilMisc.toMap("glAccountId", accountBalance.glAccountId, "accountCode", accountBalance.accountCode, "accountName", accountBalance.accountName, "balance1", accountBalance.balance, "balance2", BigDecimal.ZERO)); +} +expenseAccountBalanceList2.each { accountBalance -> + Map assetAccount = (Map)expenseAccountBalanceMap.get(accountBalance.glAccountId); + if (!assetAccount) { + expenseAccountBalanceMap.put(accountBalance.glAccountId, UtilMisc.toMap("glAccountId", accountBalance.glAccountId, "accountCode", accountBalance.accountCode, "accountName", accountBalance.accountName, "balance2", accountBalance.balance, "balance1", BigDecimal.ZERO)); + } else { + assetAccount.put("balance2", accountBalance.balance); } - periodIncomes.each { periodIncome -> - period1TotalAmount = BigDecimal.ZERO; - period2TotalAmount = BigDecimal.ZERO; - if ((period1Incomes.glAccountId).contains(periodIncome.glAccountId)) { - period1Incomes.each { period1Income -> - if(periodIncome.glAccountId.equals(period1Income.glAccountId)) - period1TotalAmount = period1Income.totalAmount; - } - } - if ((period2Incomes.glAccountId).contains(periodIncome.glAccountId)) { - period2Incomes.each { period2Income -> - if(periodIncome.glAccountId.equals(period2Income.glAccountId)) - period2TotalAmount = period2Income.totalAmount; - } - } - glAccountIncomeList.add([glAccountId : periodIncome.glAccountId , period1TotalAmount : period1TotalAmount , period2TotalAmount : period2TotalAmount]); - context.glAccountIncomeList = glAccountIncomeList; +} +expenseAccountBalanceList = UtilMisc.sortMaps(expenseAccountBalanceMap.values().asList(), UtilMisc.toList("accountCode")); +context.expenseAccountBalanceList = expenseAccountBalanceList; + +incomeAccountBalanceMap = [:]; +incomeAccountBalanceList = []; +incomeAccountBalanceList1.each { accountBalance -> + incomeAccountBalanceMap.put(accountBalance.glAccountId, UtilMisc.toMap("glAccountId", accountBalance.glAccountId, "accountCode", accountBalance.accountCode, "accountName", accountBalance.accountName, "balance1", accountBalance.balance, "balance2", BigDecimal.ZERO)); +} +incomeAccountBalanceList2.each { accountBalance -> + Map assetAccount = (Map)incomeAccountBalanceMap.get(accountBalance.glAccountId); + if (!assetAccount) { + incomeAccountBalanceMap.put(accountBalance.glAccountId, UtilMisc.toMap("glAccountId", accountBalance.glAccountId, "accountCode", accountBalance.accountCode, "accountName", accountBalance.accountName, "balance2", accountBalance.balance, "balance1", BigDecimal.ZERO)); + } else { + assetAccount.put("balance2", accountBalance.balance); } } +incomeAccountBalanceList = UtilMisc.sortMaps(incomeAccountBalanceMap.values().asList(), UtilMisc.toList("accountCode")); +context.incomeAccountBalanceList = incomeAccountBalanceList; -private Map getGlAccountTotals(List onlyIncludePeriodTypeIdList, Timestamp fromDate, Timestamp thruDate, String organizationPartyId, String glFiscalTypeId) { - customTimePeriodResult = dispatcher.runSync("findCustomTimePeriods", [findDate : thruDate, organizationPartyId : organizationPartyId, onlyIncludePeriodTypeIdList : onlyIncludePeriodTypeIdList, userLogin : userLogin]); - if (customTimePeriodResult) { - customTimePeriod = EntityUtil.getFirst(customTimePeriodResult.customTimePeriodList); - if (customTimePeriod) { - customTimePeriodFromDate = new Timestamp((customTimePeriod.fromDate).getTime()); - customTimePeriodThruDate = new Timestamp((customTimePeriod.thruDate).getTime()); - if (customTimePeriodFromDate.compareTo(fromDate) > 0) - fromDate = customTimePeriodFromDate; - if (customTimePeriodThruDate.compareTo(thruDate) < 0) - thruDate = customTimePeriodThruDate; - context.financialYearFromDate = customTimePeriodFromDate; - } - prepareIncomeStatement = dispatcher.runSync("prepareIncomeStatement", - [fromDate : fromDate, thruDate : thruDate, organizationPartyId : organizationPartyId, glFiscalTypeId : glFiscalTypeId, userLogin : userLogin]); - return prepareIncomeStatement; +balanceTotalMap = [:]; +balanceTotalList = []; +balanceTotalList1.each { accountBalance -> + balanceTotalMap.put(accountBalance.totalName, UtilMisc.toMap("totalName", accountBalance.totalName, "balance1", accountBalance.balance, "balance2", BigDecimal.ZERO)); +} +balanceTotalList2.each { accountBalance -> + Map assetAccount = (Map)balanceTotalMap.get(accountBalance.totalName); + if (!assetAccount) { + balanceTotalMap.put(accountBalance.totalName, UtilMisc.toMap("totalName", accountBalance.totalName, "balance2", accountBalance.balance, "balance1", BigDecimal.ZERO)); + } else { + assetAccount.put("balance2", accountBalance.balance); } -} \ No newline at end of file +} +balanceTotalList = balanceTotalMap.values().asList(); +context.balanceTotalList = balanceTotalList; Modified: ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/CostCenters.groovy URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/CostCenters.groovy?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/CostCenters.groovy (original) +++ ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/CostCenters.groovy Fri Dec 11 23:11:39 2009 @@ -16,28 +16,68 @@ * specific language governing permissions and limitations * under the License. */ -import org.ofbiz.accounting.util.UtilAccounting; -import org.ofbiz.entity.util.EntityUtil; -import org.ofbiz.base.util.Debug; -import org.ofbiz.base.util.UtilValidate; + 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.EntityOperator; +import org.ofbiz.entity.util.EntityUtil; -if (organizationPartyId) { +import javolution.util.FastList; +import javolution.util.FastMap; - customTimePeriods = delegator.findByAnd("CustomTimePeriod", [organizationPartyId : organizationPartyId, periodTypeId : "FISCAL_YEAR"]); - if (UtilValidate.isNotEmpty(customTimePeriods)) { - context.customTimePeriods = customTimePeriods; - } - onlyIncludePeriodTypeIdList = []; - onlyIncludePeriodTypeIdList.add("FISCAL_YEAR"); - customTimePeriodResults = dispatcher.runSync("findCustomTimePeriods", [findDate : UtilDateTime.nowTimestamp(), organizationPartyId : organizationPartyId, onlyIncludePeriodTypeIdList : onlyIncludePeriodTypeIdList, userLogin : userLogin]); - customTimePeriodList = customTimePeriodResults.customTimePeriodList; - if (UtilValidate.isNotEmpty(customTimePeriodList)) { - context.timePeriod = (EntityUtil.getFirst(customTimePeriodList)).customTimePeriodId; +if (!fromDate) { + return; +} +if (!thruDate) { + thruDate = UtilDateTime.nowTimestamp(); +} +if (!parameters.glFiscalTypeId) { + parameters.glFiscalTypeId = "ACTUAL"; +} + +// POSTED +// Posted transactions totals and grand totals +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("glFiscalTypeId", EntityOperator.EQUALS, parameters.glFiscalTypeId)); +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) { + glAccountCategories = delegator.findByAnd("GlAccountCategory", [glAccountCategoryTypeId : 'COST_CENTER'], ['glAccountCategoryId']); + context.glAccountCategories = glAccountCategories; + 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); + BigDecimal debitAmount = (BigDecimal)accountMap.get("D"); + BigDecimal creditAmount = (BigDecimal)accountMap.get("C"); + BigDecimal balance = debitAmount.subtract(creditAmount); + accountMap.put("balance", balance); + glAccountCategories.each { glAccountCategory -> + glAccountCategoryMember = EntityUtil.getFirst(EntityUtil.filterByDate(delegator.findByAnd("GlAccountCategoryMember", [glAccountCategoryId : glAccountCategory.glAccountCategoryId, glAccountId: postedTransactionTotal.glAccountId], ['glAccountCategoryId']))); + if (glAccountCategoryMember) { + BigDecimal glAccountCategorySharePercentage = glAccountCategoryMember.amountPercentage; + if (glAccountCategorySharePercentage && glAccountCategorySharePercentage != BigDecimal.ZERO ) { + glAccountCategoryShareFraction = glAccountCategorySharePercentage.divide(new BigDecimal("100.00")); + BigDecimal glAccountCategoryShare = balance.multiply(glAccountCategoryShareFraction); + accountMap.put(glAccountCategory.glAccountCategoryId,glAccountCategoryShare); + } + } + } } - resultFromPartyAcctgPref = dispatcher.runSync("getPartyAccountingPreferences", [organizationPartyId : organizationPartyId, userLogin : request.getAttribute("userLogin")]); - partyAcctgPreference = resultFromPartyAcctgPref.partyAccountingPreference; - context.currencyUomId = partyAcctgPreference.baseCurrencyUomId; - context.glAccountCategories = delegator.findList("GlAccountCategory", EntityCondition.makeCondition([glAccountCategoryTypeId : "COST_CENTER"]), null, ["glAccountCategoryId"], null, false); + context.glAcctBalancesByCostCenter = postedTransactionTotalsMap.values().asList() } + Modified: ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/GlAccountTrialBalance.groovy URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/GlAccountTrialBalance.groovy?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/GlAccountTrialBalance.groovy (original) +++ ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/GlAccountTrialBalance.groovy Fri Dec 11 23:11:39 2009 @@ -76,7 +76,6 @@ isPosted = parameters.isPosted; while (customTimePeriodEndDate <= currentTimePeriod.thruDate) { - if ("ALL".equals(isPosted)) { isPosted = ""; } @@ -97,7 +96,7 @@ glAcctgTrialBalanceList.add(acctgTransEntriesAndTransTotal); - calendarTimePeriodStartDate.roll(Calendar.MONTH, 1); + calendarTimePeriodStartDate.add(Calendar.MONTH, 1); Timestamp retStampStartDate = new Timestamp(calendarTimePeriodStartDate.getTimeInMillis()); retStampStartDate.setNanos(0); customTimePeriodStartDate = retStampStartDate; Modified: ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy (original) +++ ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/actions/reports/TransactionTotals.groovy Fri Dec 11 23:11:39 2009 @@ -18,141 +18,320 @@ */ import org.ofbiz.base.util.UtilDateTime; -import org.ofbiz.base.util.UtilNumber; +import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.entity.GenericValue; 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 org.ofbiz.accounting.util.UtilAccounting; + 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; +import java.sql.Date; +if (!fromDate) { + return; +} if (!thruDate) { thruDate = UtilDateTime.nowTimestamp(); } -exprs.add(EntityCondition.makeCondition("transactionDate", EntityOperator.LESS_THAN_EQUAL_TO, thruDate)); +if (!glFiscalTypeId) { + return; +} + +// Find the last closed time period to get the fromDate for the transactions in the current period and the ending balances of the last closed period +Map lastClosedTimePeriodResult = dispatcher.runSync("findLastClosedDate", UtilMisc.toMap("organizationPartyId", organizationPartyId, "findDate", new Date(fromDate.getTime()),"userLogin", userLogin)); +Timestamp lastClosedDate = (Timestamp)lastClosedTimePeriodResult.lastClosedDate; +GenericValue lastClosedTimePeriod = null; +if (lastClosedDate) { + lastClosedTimePeriod = (GenericValue)lastClosedTimePeriodResult.lastClosedTimePeriod; +} + +// 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("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); +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) { + GenericValue glAccount = delegator.findOne("GlAccount", UtilMisc.toMap("glAccountId", postedTransactionTotal.glAccountId), true); + if (glAccount) { + boolean isDebitAccount = UtilAccounting.isDebitAccount(glAccount); + // Get the opening balances at the end of the last closed time period + if (UtilAccounting.isAssetAccount(glAccount) || UtilAccounting.isLiabilityAccount(glAccount) || UtilAccounting.isEquityAccount(glAccount)) { + if (lastClosedTimePeriod) { + List timePeriodAndExprs = FastList.newInstance(); + timePeriodAndExprs.add(EntityCondition.makeCondition("organizationPartyId", EntityOperator.EQUALS, organizationPartyId)); + timePeriodAndExprs.add(EntityCondition.makeCondition("glAccountId", EntityOperator.EQUALS, postedTransactionTotal.glAccountId)); + timePeriodAndExprs.add(EntityCondition.makeCondition("customTimePeriodId", EntityOperator.EQUALS, lastClosedTimePeriod.customTimePeriodId)); + lastTimePeriodHistory = EntityUtil.getFirst(delegator.findList("GlAccountAndHistory", EntityCondition.makeCondition(timePeriodAndExprs, EntityOperator.AND), null, null, null, false)); + if (lastTimePeriodHistory) { + accountMap = UtilMisc.toMap("glAccountId", lastTimePeriodHistory.glAccountId, "accountCode", lastTimePeriodHistory.accountCode, "accountName", lastTimePeriodHistory.accountName, "balance", lastTimePeriodHistory.getBigDecimal("endingBalance"), "openingD", lastTimePeriodHistory.getBigDecimal("postedDebits"), "openingC", lastTimePeriodHistory.getBigDecimal("postedCredits"), "D", BigDecimal.ZERO, "C", BigDecimal.ZERO); + } + } + } + } + if (!accountMap) { + accountMap = UtilMisc.makeMapWritable(postedTransactionTotal); + accountMap.put("openingD", BigDecimal.ZERO); + accountMap.put("openingC", BigDecimal.ZERO); + accountMap.put("D", BigDecimal.ZERO); + accountMap.put("C", BigDecimal.ZERO); + accountMap.put("balance", BigDecimal.ZERO); + } + // + List mainAndExprs = FastList.newInstance(); + mainAndExprs.add(EntityCondition.makeCondition("organizationPartyId", EntityOperator.IN, partyIds)); + mainAndExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS, "Y")); + mainAndExprs.add(EntityCondition.makeCondition("glAccountId", EntityOperator.EQUALS, postedTransactionTotal.glAccountId)); + mainAndExprs.add(EntityCondition.makeCondition("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); + mainAndExprs.add(EntityCondition.makeCondition("acctgTransTypeId", EntityOperator.NOT_EQUAL, "PERIOD_CLOSING")); + mainAndExprs.add(EntityCondition.makeCondition("transactionDate", EntityOperator.GREATER_THAN_EQUAL_TO, lastClosedDate)); + mainAndExprs.add(EntityCondition.makeCondition("transactionDate", EntityOperator.LESS_THAN, fromDate)); + transactionTotals = delegator.findList("AcctgTransEntrySums", EntityCondition.makeCondition(mainAndExprs, EntityOperator.AND), UtilMisc.toSet("glAccountId", "accountName", "accountCode", "debitCreditFlag", "amount"), UtilMisc.toList("glAccountId"), null, false); + transactionTotals.each { transactionTotal -> + UtilMisc.addToBigDecimalInMap(accountMap, "opening" + transactionTotal.debitCreditFlag, transactionTotal.amount); + } + } + 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("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); +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("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); +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; -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; +// 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("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); +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) { + GenericValue glAccount = delegator.findOne("GlAccount", UtilMisc.toMap("glAccountId", unpostedTransactionTotal.glAccountId), true); + if (glAccount) { + boolean isDebitAccount = UtilAccounting.isDebitAccount(glAccount); + // Get the opening balances at the end of the last closed time period + if (UtilAccounting.isAssetAccount(glAccount) || UtilAccounting.isLiabilityAccount(glAccount) || UtilAccounting.isEquityAccount(glAccount)) { + if (lastClosedTimePeriod) { + List timePeriodAndExprs = FastList.newInstance(); + timePeriodAndExprs.add(EntityCondition.makeCondition("organizationPartyId", EntityOperator.EQUALS, organizationPartyId)); + timePeriodAndExprs.add(EntityCondition.makeCondition("glAccountId", EntityOperator.EQUALS, unpostedTransactionTotal.glAccountId)); + timePeriodAndExprs.add(EntityCondition.makeCondition("customTimePeriodId", EntityOperator.EQUALS, lastClosedTimePeriod.customTimePeriodId)); + lastTimePeriodHistory = EntityUtil.getFirst(delegator.findList("GlAccountAndHistory", EntityCondition.makeCondition(timePeriodAndExprs, EntityOperator.AND), null, null, null, false)); + if (lastTimePeriodHistory) { + accountMap = UtilMisc.toMap("glAccountId", lastTimePeriodHistory.glAccountId, "accountCode", lastTimePeriodHistory.accountCode, "accountName", lastTimePeriodHistory.accountName, "balance", lastTimePeriodHistory.getBigDecimal("endingBalance"), "openingD", lastTimePeriodHistory.getBigDecimal("postedDebits"), "openingC", lastTimePeriodHistory.getBigDecimal("postedCredits"), "D", BigDecimal.ZERO, "C", BigDecimal.ZERO); + } + } + } + } + if (!accountMap) { + accountMap = UtilMisc.makeMapWritable(unpostedTransactionTotal); + accountMap.put("openingD", BigDecimal.ZERO); + accountMap.put("openingC", BigDecimal.ZERO); + accountMap.put("D", BigDecimal.ZERO); + accountMap.put("C", BigDecimal.ZERO); + accountMap.put("balance", BigDecimal.ZERO); + } + // + List mainAndExprs = FastList.newInstance(); + mainAndExprs.add(EntityCondition.makeCondition("organizationPartyId", EntityOperator.IN, partyIds)); + mainAndExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS, "N")); + mainAndExprs.add(EntityCondition.makeCondition("glAccountId", EntityOperator.EQUALS, unpostedTransactionTotal.glAccountId)); + mainAndExprs.add(EntityCondition.makeCondition("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); + mainAndExprs.add(EntityCondition.makeCondition("acctgTransTypeId", EntityOperator.NOT_EQUAL, "PERIOD_CLOSING")); + mainAndExprs.add(EntityCondition.makeCondition("transactionDate", EntityOperator.GREATER_THAN_EQUAL_TO, lastClosedDate)); + mainAndExprs.add(EntityCondition.makeCondition("transactionDate", EntityOperator.LESS_THAN, fromDate)); + transactionTotals = delegator.findList("AcctgTransEntrySums", EntityCondition.makeCondition(mainAndExprs, EntityOperator.AND), UtilMisc.toSet("glAccountId", "accountName", "accountCode", "debitCreditFlag", "amount"), UtilMisc.toList("glAccountId"), null, false); + transactionTotals.each { transactionTotal -> + UtilMisc.addToBigDecimalInMap(accountMap, "opening" + transactionTotal.debitCreditFlag, transactionTotal.amount); + } } - 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, 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("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); +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("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); +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("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); +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) { + GenericValue glAccount = delegator.findOne("GlAccount", UtilMisc.toMap("glAccountId", allTransactionTotal.glAccountId), true); + if (glAccount) { + boolean isDebitAccount = UtilAccounting.isDebitAccount(glAccount); + // Get the opening balances at the end of the last closed time period + if (UtilAccounting.isAssetAccount(glAccount) || UtilAccounting.isLiabilityAccount(glAccount) || UtilAccounting.isEquityAccount(glAccount)) { + if (lastClosedTimePeriod) { + List timePeriodAndExprs = FastList.newInstance(); + timePeriodAndExprs.add(EntityCondition.makeCondition("organizationPartyId", EntityOperator.EQUALS, organizationPartyId)); + timePeriodAndExprs.add(EntityCondition.makeCondition("glAccountId", EntityOperator.EQUALS, allTransactionTotal.glAccountId)); + timePeriodAndExprs.add(EntityCondition.makeCondition("customTimePeriodId", EntityOperator.EQUALS, lastClosedTimePeriod.customTimePeriodId)); + lastTimePeriodHistory = EntityUtil.getFirst(delegator.findList("GlAccountAndHistory", EntityCondition.makeCondition(timePeriodAndExprs, EntityOperator.AND), null, null, null, false)); + if (lastTimePeriodHistory) { + accountMap = UtilMisc.toMap("glAccountId", lastTimePeriodHistory.glAccountId, "accountCode", lastTimePeriodHistory.accountCode, "accountName", lastTimePeriodHistory.accountName, "balance", lastTimePeriodHistory.getBigDecimal("endingBalance"), "openingD", lastTimePeriodHistory.getBigDecimal("postedDebits"), "openingC", lastTimePeriodHistory.getBigDecimal("postedCredits"), "D", BigDecimal.ZERO, "C", BigDecimal.ZERO); + } + } + } + } + if (!accountMap) { + accountMap = UtilMisc.makeMapWritable(allTransactionTotal); + accountMap.put("openingD", BigDecimal.ZERO); + accountMap.put("openingC", BigDecimal.ZERO); + accountMap.put("D", BigDecimal.ZERO); + accountMap.put("C", BigDecimal.ZERO); + accountMap.put("balance", BigDecimal.ZERO); + } + // + List mainAndExprs = FastList.newInstance(); + mainAndExprs.add(EntityCondition.makeCondition("organizationPartyId", EntityOperator.IN, partyIds)); + mainAndExprs.add(EntityCondition.makeCondition("isPosted", EntityOperator.EQUALS, "N")); + mainAndExprs.add(EntityCondition.makeCondition("glAccountId", EntityOperator.EQUALS, allTransactionTotal.glAccountId)); + mainAndExprs.add(EntityCondition.makeCondition("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); + mainAndExprs.add(EntityCondition.makeCondition("acctgTransTypeId", EntityOperator.NOT_EQUAL, "PERIOD_CLOSING")); + mainAndExprs.add(EntityCondition.makeCondition("transactionDate", EntityOperator.GREATER_THAN_EQUAL_TO, lastClosedDate)); + mainAndExprs.add(EntityCondition.makeCondition("transactionDate", EntityOperator.LESS_THAN, fromDate)); + transactionTotals = delegator.findList("AcctgTransEntrySums", EntityCondition.makeCondition(mainAndExprs, EntityOperator.AND), UtilMisc.toSet("glAccountId", "accountName", "accountCode", "debitCreditFlag", "amount"), UtilMisc.toList("glAccountId"), null, false); + transactionTotals.each { transactionTotal -> + UtilMisc.addToBigDecimalInMap(accountMap, "opening" + transactionTotal.debitCreditFlag, transactionTotal.amount); + } + } + 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("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); +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("glFiscalTypeId", EntityOperator.EQUALS, glFiscalTypeId)); +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/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/controller.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/controller.xml?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/controller.xml (original) +++ ofbiz/branches/addbirt/applications/accounting/webapp/accounting/WEB-INF/controller.xml Fri Dec 11 23:11:39 2009 @@ -440,14 +440,14 @@ <security https="true" auth="true"/> <event type="service" invoke="cancelPaymentBatch"/> <response name="success" type="view" value="PaymentGroupOverview"/> - <response name="error" type="view" value="PaymentGroupOverview"/> + <response name="error" type="view" value="FindPaymentGroup"/> </request-map> <request-map uri="cancelCheckRunPayments"> <security https="true" auth="true"/> <event type="service" invoke="cancelCheckRunPayments"/> <response name="success" type="view" value="PaymentGroupOverview"/> - <response name="error" type="view" value="PaymentGroupOverview"/> + <response name="error" type="view" value="FindPaymentGroup"/> </request-map> <request-map uri="DepositSlip.pdf"> @@ -2219,26 +2219,10 @@ <response name="success" type="view" value="ComparativeIncomeStatement"/> <response name="error" type="view" value="ComparativeIncomeStatement"/> </request-map> - <request-map uri="prepareIncomeStatement"> - <security https="true" auth="true"/> - <event type="service" invoke="prepareIncomeStatement"/> - <response name="success" type="view" value="IncomeStatement"/> - <response name="error" type="view" value="IncomeStatement"/> - </request-map> <request-map uri="BalanceSheet"><security https="true" auth="true"/><response name="success" type="view" value="BalanceSheet"/></request-map> - <request-map uri="prepareBalanceSheet"> - <security https="true" auth="true"/> - <event type="service" invoke="prepareBalanceSheet"/> - <response name="success" type="view" value="BalanceSheet"/> - <response name="error" type="view" value="BalanceSheet"/> - </request-map> <request-map uri="ComparativeBalanceSheet"><security https="true" auth="true"/><response name="success" type="view" value="ComparativeBalanceSheet"/></request-map> - <request-map uri="prepareComparativeBalanceSheet"> - <security https="true" auth="true"/> - <event type="service" invoke="prepareComparativeBalanceSheet"/> - <response name="success" type="view" value="ComparativeBalanceSheet"/> - <response name="error" type="view" value="ComparativeBalanceSheet"/> - </request-map> + <request-map uri="ComparativeBalanceSheet.pdf"><security https="true" auth="true"/><response name="success" type="view" value="ComparativeBalanceSheetPdf"/></request-map> + <request-map uri="ComparativeBalanceSheet.csv"><security https="true" auth="true"/><response name="success" type="view" value="ComparativeBalanceSheetCsv"/></request-map> <request-map uri="TransactionTotals"><security https="true" auth="true"/><response name="success" type="view" value="TransactionTotals"/></request-map> <request-map uri="FindPaymentsForDepositOrWithdraw"> <security https="true" auth="true"/> @@ -2284,7 +2268,16 @@ <response name="success" type="view" value="InventoryValuationCsv"/> <response name="error" type="view" value="InventoryValuation"/> </request-map> - + <request-map uri="CashFlowStatement"><security https="true" auth="true"/><response name="success" type="view" value="CashFlowStatement"/></request-map> + <request-map uri="CashFlowStatementListPdf.pdf"> + <security https="true" auth="true"/> + <response name="success" type="view" value="CashFlowStatementListPdf"/> + </request-map> + <request-map uri="CashFlowStatementListCsv.csv"> + <security https="true" auth="true"/> + <response name="success" type="view" value="CashFlowStatementListCsv"/> + </request-map> + <!-- ================ Depreciation Calculation Report requests ================ --> <request-map uri="showFixedAssetDepreciation"> <security https="true" auth="true"/> @@ -2398,15 +2391,6 @@ <response name="success" type="view" value="CommissionRun"/> </request-map> - <request-map uri="MonthlyTrialBalance"> - <security auth="true" https="true"/> - <response name="success" type="view" value="MonthlyTrialBalance"/> - </request-map> - <request-map uri="MonthlyTrialBalance.pdf"> - <security auth="true" https="true"/> - <response name="success" type="view" value="MonthlyTrialBalancePdf"/> - </request-map> - <!--Add Tax Settings --> <request-map uri="addtax"> <security auth="true" https="true"/> @@ -2462,23 +2446,6 @@ <response name="success" type="view" value="CostCenters"/> </request-map> - <request-map uri="CostCenterReport"> - <security https="true" auth="true"/> - <response name="success" type="view" value="CostCenterReport"/> - </request-map> - - <request-map uri="getGlAcctgOrgWithPostedBalanceSplit"> - <security https="true" auth="true"/> - <event type="service" invoke="getGlAcctgOrgWithPostedBalanceSplit"/> - <response name="success" type="view" value="CostCenterReport"/> - <response name="error" type="view" value="CostCenterReport"/> - </request-map> - - <request-map uri="CostCentersReport.pdf"> - <security auth="true" https="true"/> - <response name="success" type="view" value="CostCentersReportPdf"/> - </request-map> - <request-map uri="createUpdateCostCenter"> <security auth="true" https="true"/> <event type="jsonservice-multi" invoke="createUpdateCostCenter"/> @@ -2500,6 +2467,15 @@ <event type="groovy" path="component://accounting/webapp/accounting/WEB-INF/actions/payment/" invoke="PaymentReport.groovy"/> <response name="success" type="view" value="ViewPaymentReportPdf"/> </request-map> + + <request-map uri="GlAccountBalanceByCostCenter"> + <security https="true" auth="true"/> + <response name="success" type="view" value="GlAccountBalanceByCostCenter"/> + </request-map> + <request-map uri="GlAccountBalanceByCostCenter.pdf"> + <security auth="true" https="true"/> + <response name="success" type="view" value="GlAccountBalanceByCostCenterPdf"/> + </request-map> <!-- end of request mappings --> <!-- View Mappings --> @@ -2752,10 +2728,14 @@ <view-map name="IncomeStatementListPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#IncomeStatementListPdf" content-type="application/pdf" encoding="none"/> <view-map name="IncomeStatementListCsv" type="screencsv" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#IncomeStatementListCsv" content-type="text/csv" encoding="none"/> <view-map name="ComparativeIncomeStatement" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#ComparativeIncomeStatement"/> + <view-map name="ComparativeIncomeStatementsPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#ComparativeIncomeStatementsPdf" content-type="application/pdf" encoding="none"/> + <view-map name="ComparativeIncomeStatementsCsv" type="screencsv" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#ComparativeIncomeStatementsCsv" content-type="text/csv" encoding="none"/> <view-map name="BalanceSheet" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#BalanceSheet"/> <view-map name="BalanceSheetCsv" type="screencsv" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#BalanceSheetCsv" content-type="text/csv" encoding="none"/> <view-map name="BalanceSheetPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#BalanceSheetPdf" content-type="application/pdf" encoding="none"/> <view-map name="ComparativeBalanceSheet" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#ComparativeBalanceSheet"/> + <view-map name="ComparativeBalanceSheetPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#ComparativeBalanceSheetPdf" content-type="application/pdf" encoding="none"/> + <view-map name="ComparativeBalanceSheetCsv" type="screencsv" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#ComparativeBalanceSheetCsv" content-type="text/csv" encoding="none"/> <view-map name="TransactionTotals" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#TransactionTotals"/> <view-map name="TransactionTotalsPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#TransactionTotalsPdf" content-type="application/pdf" encoding="none"/> <view-map name="TransactionTotalsCsv" type="screencsv" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#TransactionTotalsCsv" content-type="text/csv" encoding="none"/> @@ -2765,6 +2745,9 @@ <view-map name="InventoryValuation" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#InventoryValuation"/> <view-map name="InventoryValuationPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#InventoryValuationPdf" content-type="application/pdf" encoding="none"/> <view-map name="InventoryValuationCsv" type="screencsv" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#InventoryValuationCsv" content-type="text/csv" encoding="none"/> + <view-map name="CashFlowStatement" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#CashFlowStatement"/> + <view-map name="CashFlowStatementListPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#CashFlowStatementListPdf" content-type="application/pdf" encoding="none"/> + <view-map name="CashFlowStatementListCsv" type="screencsv" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#CashFlowStatementListCsv" content-type="text/csv" encoding="none"/> <!-- Assignment Mappings --> <view-map name="EditPartyFixedAssetAssignments" type="screen" page="component://accounting/widget/FixedAssetScreens.xml#EditPartyFixedAssetAssignments"/> @@ -2792,16 +2775,12 @@ <view-map name="GlAccountTrialBalance" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#GlAccountTrialBalance"/> <view-map name="GlAccountTrialBalanceReportPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#GlAccountTrialBalanceReportPdf" content-type="application/pdf" encoding="none"/> <view-map name="CommissionRun" type="screen" page="component://accounting/widget/ap/InvoiceScreens.xml#CommissionRun"/> - <view-map name="MonthlyTrialBalance" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#MonthlyTrialBalance"/> - <view-map name="MonthlyTrialBalancePdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#MonthlyTrialBalancePdf" content-type="application/pdf"/> <view-map name="EditGlAccountCategory" type="screen" page="component://accounting/widget/GlSetupScreens.xml#EditGlAccountCategory"/> <view-map name="FindGlAccountCategory" type="screen" page="component://accounting/widget/GlSetupScreens.xml#FindGlAccountCategory"/> <view-map name="EditGlAccountCategoryMember" type="screen" page="component://accounting/widget/GlSetupScreens.xml#EditGlAccountCategoryMember"/> <view-map name="CostCenters" type="screen" page="component://accounting/widget/GlobalGlAccountsScreens.xml#CostCenters"/> - <view-map name="CostCenterReport" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#CostCenterReport"/> - <view-map name="CostCentersReportPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#CostCentersReportPdf" content-type="application/pdf" encoding="none"/> - <view-map name="ComparativeIncomeStatementsPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#ComparativeIncomeStatementsPdf" content-type="application/pdf" encoding="none"/> - <view-map name="ComparativeIncomeStatementsCsv" type="screencsv" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#ComparativeIncomeStatementsCsv" content-type="text/csv" encoding="none"/> + <view-map name="GlAccountBalanceByCostCenter" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#GlAccountBalanceByCostCenter"/> + <view-map name="GlAccountBalanceByCostCenterPdf" type="screenfop" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#GlAccountBalanceByCostCenterPdf" content-type="application/pdf" encoding="none"/> <view-map name="ViewPaymentReportHtml" type="birt" page="component://accounting/webapp/accounting/payment/report/PaymentReport.rptdesign" content-type="text/html"/> <view-map name="ViewPaymentReportPdf" type="birt" page="component://accounting/webapp/accounting/payment/report/PaymentReport.rptdesign" content-type="application/pdf"/> <!-- end of view mappings --> Modified: ofbiz/branches/addbirt/applications/accounting/webapp/accounting/finaccounttrans/FinAccountTrans.ftl URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/webapp/accounting/finaccounttrans/FinAccountTrans.ftl?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/webapp/accounting/finaccounttrans/FinAccountTrans.ftl (original) +++ ofbiz/branches/addbirt/applications/accounting/webapp/accounting/finaccounttrans/FinAccountTrans.ftl Fri Dec 11 23:11:39 2009 @@ -202,15 +202,9 @@ <#if payment?has_content> <#assign paymentGroupMembers = Static["org.ofbiz.entity.util.EntityUtil"].filterByDate(payment.getRelated("PaymentGroupMember")?if_exists) /> <#assign fromParty = payment.getRelatedOne("FromParty")?if_exists /> - <#assign fromPartyName = fromParty.getRelatedOne("Person")?if_exists /> - <#if !(fromPartyName?has_content)> - <#assign fromPartyName = fromParty.getRelatedOne("PartyGroup")?if_exists /> - </#if> + <#assign fromPartyName = delegator.findOne("PartyNameView", {"partyId" : fromParty.partyId}, true) /> <#assign toParty = payment.getRelatedOne("ToParty")?if_exists /> - <#assign toPartyName = toParty.getRelatedOne("Person")?if_exists /> - <#if !(toPartyName?has_content)> - <#assign toPartyName = toParty.getRelatedOne("PartyGroup")?if_exists /> - </#if> + <#assign toPartyName = delegator.findOne("PartyNameView", {"partyId" : toParty.partyId}, true) /> <#if paymentGroupMembers?has_content> <#assign paymentGroupMember = Static["org.ofbiz.entity.util.EntityUtil"].getFirst(paymentGroupMembers) /> </#if> Modified: ofbiz/branches/addbirt/applications/accounting/webapp/accounting/images/costCenters.js URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/webapp/accounting/images/costCenters.js?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/webapp/accounting/images/costCenters.js (original) +++ ofbiz/branches/addbirt/applications/accounting/webapp/accounting/images/costCenters.js Fri Dec 11 23:11:39 2009 @@ -16,9 +16,47 @@ * specific language governing permissions and limitations * under the License. */ + Event.observe(window, 'load', function() { Event.observe($('costCentersSubmit'), 'click', processCostCenterData); + // Find all text boxes in form and add a method to list on for on change. + var categoryShareInputs = $('costCenters').getInputs('text'); + categoryShareInputs.each(function (element) { + Event.observe(element, 'change', function(){ + var textIdSplit = element.id.split('|'); + var tableRowId = 'row_' + textIdSplit[0]; + var tableRow = $(tableRowId); + // get all text inputs + var rowInputs = $(tableRowId).select('input[type="text"]'); + var totalPercentage = 0; + rowInputs.each(function (inputElement) { + var inputElementIdSplit = inputElement.id.split("|"); + if (inputElement.value) { + totalPercentage = totalPercentage + parseFloat(inputElement.value) + } + }); + if (totalPercentage == 100 || totalPercentage == 0 ) { + if ( $(tableRowId).hasClassName('alternate-rowWarn')){ + $(tableRowId).removeClassName('alternate-rowWarn'); + } + if ($$('tr.alternate-rowWarn').size() == 0) { + $('costCentersSubmit').removeClassName('buttontextdisabled') + $('costCentersSubmit').disabled = false; + } + + } else { + if ( !$(tableRowId).hasClassName('alternate-rowWarn')){ + $(tableRowId).addClassName('alternate-rowWarn'); + } + if (!$('costCentersSubmit').hasClassName('buttontextdisabled')) { + $('costCentersSubmit').addClassName('buttontextdisabled') + $('costCentersSubmit').disabled = true; + } + } + }); + }); }); + function processCostCenterData() { new Ajax.Request($('costCenters').action, { asynchronous: false, Modified: ofbiz/branches/addbirt/applications/accounting/webapp/accounting/ledger/CostCenters.ftl URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/webapp/accounting/ledger/CostCenters.ftl?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/webapp/accounting/ledger/CostCenters.ftl (original) +++ ofbiz/branches/addbirt/applications/accounting/webapp/accounting/ledger/CostCenters.ftl Fri Dec 11 23:11:39 2009 @@ -32,23 +32,25 @@ </#list> </tr> + <#assign alt_row = false> <#list glAcctgAndAmountPercentageList as glAcctgAndAmountPercentage> <input type="hidden" id="glAccountId_${glAcctgAndAmountPercentage.glAccountId}" name="glAccountId_o_${glAcctgAndAmountPercentage_index}" value="${glAcctgAndAmountPercentage.glAccountId!}"/> - <tr> + <tr id="row_${glAcctgAndAmountPercentage.glAccountId}" <#if alt_row> class="alternate-row"</#if>> <td>${glAcctgAndAmountPercentage.glAccountId}</td> <td>${glAcctgAndAmountPercentage.accountCode!}</td> <td>${glAcctgAndAmountPercentage.accountName!}</td> <#list glAccountCategories as glAccountCategory> <td> <#if (glAcctgAndAmountPercentage[glAccountCategory.glAccountCategoryId!])??> - <input type="text" name="amp_${glAccountCategory.glAccountCategoryId!}_o_${glAcctgAndAmountPercentage_index}" value="${(glAcctgAndAmountPercentage[glAccountCategory.glAccountCategoryId!])!}"/> + <input type="text" id="${glAcctgAndAmountPercentage.glAccountId}|${glAccountCategory.glAccountCategoryId}" name="amp_${glAccountCategory.glAccountCategoryId!}_o_${glAcctgAndAmountPercentage_index}" value="${(glAcctgAndAmountPercentage[glAccountCategory.glAccountCategoryId!])!}"/> <#else> - <input type="text" name="amp_${glAccountCategory.glAccountCategoryId!}_o_${glAcctgAndAmountPercentage_index}" value=""/> + <input type="text" id="${glAcctgAndAmountPercentage.glAccountId}|${glAccountCategory.glAccountCategoryId}" name="amp_${glAccountCategory.glAccountCategoryId!}_o_${glAcctgAndAmountPercentage_index}" value=""/> </#if> </td> </#list> <input name="_rowSubmit_o_${glAcctgAndAmountPercentage_index}" type="hidden" value="Y"/> </tr> + <#assign alt_row = !alt_row> </#list> </table> <div align="right"><input type="button" id="costCentersSubmit" value="${uiLabelMap.CommonSubmit}"/></div> Modified: ofbiz/branches/addbirt/applications/accounting/webapp/accounting/reports/CostCentersReport.fo.ftl URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/webapp/accounting/reports/CostCentersReport.fo.ftl?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/webapp/accounting/reports/CostCentersReport.fo.ftl (original) +++ ofbiz/branches/addbirt/applications/accounting/webapp/accounting/reports/CostCentersReport.fo.ftl Fri Dec 11 23:11:39 2009 @@ -17,7 +17,7 @@ under the License. --> <#escape x as x?xml> - <#if glAcctgOrgAndCostCenterList?has_content && glAccountCategories?has_content> + <#if glAcctBalancesByCostCenter?has_content && glAccountCategories?has_content> <fo:table border="1pt solid" border-width=".1mm" width="19cm"> <fo:table-header> <fo:table-cell border="1pt solid" border-width=".1mm"> @@ -39,24 +39,24 @@ </#list> </fo:table-header> <fo:table-body> - <#list glAcctgOrgAndCostCenterList as glAcctgOrgAndCostCenter> + <#list glAcctBalancesByCostCenter as glAcctBalanceByCostCenter> <#if glAcctgOrgAndCostCenter?has_content> <fo:table-row> <fo:table-cell border="1pt solid" border-width=".1mm"> - <fo:block text-align="center">${glAcctgOrgAndCostCenter.glAccountId?if_exists}</fo:block> + <fo:block text-align="center">${glAcctBalanceByCostCenter.glAccountId?if_exists}</fo:block> </fo:table-cell> <fo:table-cell border="1pt solid" border-width=".1mm"> - <fo:block text-align="center">${glAcctgOrgAndCostCenter.accountCode?if_exists}</fo:block> + <fo:block text-align="center">${glAcctBalanceByCostCenter.accountCode?if_exists}</fo:block> </fo:table-cell> <fo:table-cell border="1pt solid" border-width=".1mm"> - <fo:block text-align="center">${glAcctgOrgAndCostCenter.accountName?if_exists}</fo:block> + <fo:block text-align="center">${glAcctBalanceByCostCenter.accountName?if_exists}</fo:block> </fo:table-cell> <fo:table-cell border="1pt solid" border-width=".1mm"> - <fo:block text-align="center">${glAcctgOrgAndCostCenter.postedBalance?if_exists!}</fo:block> + <fo:block text-align="center">${glAcctBalanceByCostCenter.balance?if_exists!}</fo:block> </fo:table-cell> <#list glAccountCategories as glAccountCategory> <fo:table-cell border="1pt solid" border-width=".1mm"> - <fo:block text-align="center">${(glAcctgOrgAndCostCenter[glAccountCategory.glAccountCategoryId?if_exists]?if_exists)}</fo:block> + <fo:block text-align="center">${(glAcctBalanceByCostCenter[glAccountCategory.glAccountCategoryId?if_exists]?if_exists)}</fo:block> </fo:table-cell> </#list> </fo:table-row> Modified: ofbiz/branches/addbirt/applications/accounting/webapp/accounting/reports/CostCentersReport.ftl URL: http://svn.apache.org/viewvc/ofbiz/branches/addbirt/applications/accounting/webapp/accounting/reports/CostCentersReport.ftl?rev=889851&r1=889850&r2=889851&view=diff ============================================================================== --- ofbiz/branches/addbirt/applications/accounting/webapp/accounting/reports/CostCentersReport.ftl (original) +++ ofbiz/branches/addbirt/applications/accounting/webapp/accounting/reports/CostCentersReport.ftl Fri Dec 11 23:11:39 2009 @@ -17,14 +17,7 @@ specific language governing permissions and limitations under the License. --> -<#if glAcctgOrgAndCostCenterList?has_content && glAccountCategories?has_content> - <form name="costCentersReportPdfForm" method="post" action="<@ofbizUrl>CostCentersReport.pdf</@ofbizUrl>"> - <input type="hidden" name="organizationPartyId" value="${parameters.organizationPartyId}"/> - <input type="hidden" name="fromDate" value="${parameters.fromDate}"/> - <input type="hidden" name="thruDate" value="${parameters.thruDate}"/> - <input type="hidden" name="timePeriod" value="${parameters.timePeriod}"/> - <a href="javascript:document.costCentersReportPdfForm.submit();" class="buttontext">${uiLabelMap.AccountingExportAsPdf}</a> - </form> +<#if glAcctBalancesByCostCenter?has_content && glAccountCategories?has_content> <table class="basic-table hover-bar" cellspacing="0"> <tr class="header-row"> <th>${uiLabelMap.FormFieldTitle_glAccountId}</th> @@ -35,18 +28,18 @@ <th>${glAccountCategory.description!} - (${currencyUomId})</th> </#list> </tr> - <#list glAcctgOrgAndCostCenterList as glAcctgOrgAndCostCenter> - <#if glAcctgOrgAndCostCenter?has_content> - <tr> - <td>${glAcctgOrgAndCostCenter.glAccountId?if_exists}</td> - <td>${glAcctgOrgAndCostCenter.accountCode?if_exists}</td> - <td>${glAcctgOrgAndCostCenter.accountName?if_exists}</td> - <td>${glAcctgOrgAndCostCenter.postedBalance?if_exists}</td> + <#assign alt_row = false> + <#list glAcctBalancesByCostCenter as glAcctBalanceByCostCenter> + <tr <#if alt_row> class="alternate-row"</#if>> + <td>${glAcctBalanceByCostCenter.glAccountId?if_exists}</td> + <td>${glAcctBalanceByCostCenter.accountCode?if_exists}</td> + <td>${glAcctBalanceByCostCenter.accountName?if_exists}</td> + <td>${glAcctBalanceByCostCenter.balance?if_exists}</td> <#list glAccountCategories as glAccountCategory> - <td>${(glAcctgOrgAndCostCenter[glAccountCategory.glAccountCategoryId?if_exists]?if_exists)}</td> + <td>${(glAcctBalanceByCostCenter[glAccountCategory.glAccountCategoryId?if_exists]?if_exists)}</td> </#list> + <#assign alt_row = !alt_row> </tr> - </#if> </#list> </table> <#else> |
| Free forum by Nabble | Edit this page |
