Author: hansbak
Date: Wed Sep 24 21:06:09 2008
New Revision: 698810
URL: http://svn.apache.org/viewvc?rev=698810&view=rev
Log:
improved finanacial overview, replaced header and improoved groovy file....not
perfect yet however improoved a lot..
Modified:
ofbiz/trunk/applications/party/config/PartyUiLabels.xml
ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/actions/party/PartyFinancailHistory.groovy
ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
ofbiz/trunk/applications/party/widget/partymgr/PartyScreens.xml
Modified: ofbiz/trunk/applications/party/config/PartyUiLabels.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/config/PartyUiLabels.xml?rev=698810&r1=698809&r2=698810&view=diff
==============================================================================
--- ofbiz/trunk/applications/party/config/PartyUiLabels.xml (original)
+++ ofbiz/trunk/applications/party/config/PartyUiLabels.xml Wed Sep 24 21:06:09
2008
@@ -180,6 +180,9 @@
<value xml:lang="en">Add Related Contact</value>
<value xml:lang="fr">Ajouter un contact associé</value>
</property>
+ <property key="AppliedPayments">
+ <value xml:lang="en">Applied payments to payments</value>
+ </property>
<property key="Description">
<value xml:lang="de">Beschreibung</value>
<value xml:lang="en">Description</value>
@@ -1249,6 +1252,15 @@
<value
xml:lang="th">à¸à¸µà¸à¸±à¸à¸à¸¹à¹à¸§à¹à¸²à¸à¹à¸²à¸</value>
<value xml:lang="zh">年为é主</value>
</property>
+ <property key="InvoicesNotApplied">
+ <value xml:lang="en">Invoices not yet (fully) applied</value>
+ </property>
+ <property key="InvoicesOtherParties">
+ <value xml:lang="en">Invoices of other parties paid by payments
from</value>
+ </property>
+ <property key="InvoicesPayments">
+ <value xml:lang="en">Invoices Payments</value>
+ </property>
<property key="IsA"><!-- Peter 'is a' employee of company B -->
<value xml:lang="en">is A</value>
<value xml:lang="fr">est un</value>
@@ -3806,6 +3818,9 @@
<value xml:lang="th">à¸à¸£à¸°à¹à¸ à¸à¸à¸¥à¸à¸µà¹à¹à¸à¹</value>
<value xml:lang="zh">äºä»¶ç±»å</value>
</property>
+ <property key="PartyFinancialSummary">
+ <value xml:lang="en">Totals for Company:</value>
+ </property>
<property key="PartyFindCommunicationEvents">
<value xml:lang="de">Suche Kommunikationsereignis</value>
<value xml:lang="en">Find Communication Events</value>
@@ -7448,6 +7463,9 @@
<value xml:lang="pt_PT">Erro de Segurança: para correr a função de Comunicação de Remoção de Acontecimentos é
necessário obter o PARTYMGR_DELETE ou permissão de PARTYMGR_ADMIN</value>
<value xml:lang="th">Security Error: à¹à¸à¸à¸²à¸£à¸¢à¹à¸²à¸¢à¸ªà¸à¸²à¸à¸°à¸à¸¥à¸à¸²à¸£à¸à¸´à¸à¸à¹à¸
à¸à¸¸à¸à¸à¹à¸à¸à¹à¸à¹à¸£à¸±à¸à¸à¸à¸¸à¸à¸²à¸à¸à¸²à¸ PARTYMGR_DELETE หรืภPARTYMGR_ADMIN
à¸à¹à¸à¸</value>
</property>
+ <property key="PaymentsNotApplied">
+ <value xml:lang="en">Payments not yet (fully) applied</value>
+ </property>
<property
key="commeventservices.communication_event_from_contact_mech_must_be_email">
<value xml:lang="de">FEHLER: Kommunikationsereignis muss ein "Kontaktmechanismus von" besitzen das ein E-Mail als
Kommunikationereignis ID ist</value>
<value xml:lang="en">ERROR: Communication event must have a from contact mech
that is an email for comm event Id</value>
Modified:
ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/actions/party/PartyFinancailHistory.groovy
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/actions/party/PartyFinancailHistory.groovy?rev=698810&r1=698809&r2=698810&view=diff
==============================================================================
---
ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/actions/party/PartyFinancailHistory.groovy
(original)
+++
ofbiz/trunk/applications/party/webapp/partymgr/WEB-INF/actions/party/PartyFinancailHistory.groovy
Wed Sep 24 21:06:09 2008
@@ -1,29 +1,21 @@
/*
- * Copyright (c) 2001-2005 The Open For Business Project - www.ofbiz.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
- * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- [EMAIL PROTECTED] Hans Bakker ([EMAIL PROTECTED])
- [EMAIL PROTECTED] $Rev$
- [EMAIL PROTECTED] 3.0
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
*/
-
import java.util.*;
import java.math.*;
import java.sql.Timestamp;
@@ -35,24 +27,24 @@
import org.ofbiz.accounting.invoice.*;
import org.ofbiz.accounting.payment.*;
-delegator = parameters.get("delegator");
-organizationPartyId = parameters.get("organizationPartyId");
-partyId = parameters.get("partyId");
+delegator = parameters.delegator;
+organizationPartyId = parameters.organizationPartyId;
+partyId = parameters.partyId;
if (partyId == null && organizationPartyId == null) return;
List historyList = new LinkedList();
//get payment totals
BigDecimal totalPaymentsIn = new
BigDecimal("0.00").setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal totalPaymentsOut = new
BigDecimal("0.00").setScale(2,BigDecimal.ROUND_HALF_UP);
-tpayments =
delegator.findByOr("Payment",[partyIdTo:partyId,partyIdFrom:partyId]);
+tpayments = delegator.findByOr("Payment",["partyIdTo" : partyId,"partyIdFrom"
: partyId]);
Iterator pl = tpayments.iterator();
while (pl.hasNext()) {
- payment = pl.next();
- if (payment.getString("statusId").equals("PMNT_CANCELLED")) continue;
- if (payment.getString("partyIdTo").equals(organizationPartyId))
- totalPaymentsIn =
totalPaymentsIn.add(payment.getBigDecimal("amount")).setScale(2,BigDecimal.ROUND_HALF_UP);
- else
- totalPaymentsOut =
totalPaymentsOut.add(payment.getBigDecimal("amount")).setScale(2,BigDecimal.ROUND_HALF_UP);
+ payment = (GenericValue) pl.next();
+ if (payment.statusId.equals("PMNT_CANCELLED")) continue;
+ if (payment.partyIdTo.equals(organizationPartyId))
+ totalPaymentsIn =
totalPaymentsIn.add(payment.getBigDecimal("amount")).setScale(2,BigDecimal.ROUND_HALF_UP);
+ else
+ totalPaymentsOut =
totalPaymentsOut.add(payment.getBigDecimal("amount")).setScale(2,BigDecimal.ROUND_HALF_UP);
}
// totals
@@ -63,250 +55,241 @@
// payment and invoices list which will be updated with the amount applied
// to see what is left over...
-List invoices = delegator.findByOr("Invoice",
- UtilMisc.toMap("partyId",partyId,"partyIdFrom",partyId),
- UtilMisc.toList("invoiceDate"));
-List payments = delegator.findByOr("Payment",
- UtilMisc.toMap("partyIdTo",partyId,"partyIdFrom",partyId),
- UtilMisc.toList("effectiveDate"));
-
+List invoices = delegator.findByOr("Invoice",["partyId" : partyId , "partyIdFrom" :
partyId] , ["invoiceDate"]);
+List payments = delegator.findByOr("Payment",["partyIdTo" : partyId , "partyIdFrom" :
partyId] , ["effectiveDate"]);
+
List notAppliedInvoices = new LinkedList(); // to store the not fully applied
invoices
-
-// start reeading from the invoices list
+
+// start reading from the invoices list
if (invoices != null && invoices.size() > 0) {
- Iterator inv = invoices.iterator();
- while (inv.hasNext()) {
- invoice = inv.next();
- if (invoice.getString("statusId").equals("INVOICE_CANCELLED")) continue;
- BigDecimal invoiceAmount =
InvoiceWorker.getInvoiceTotalBd(invoice).setScale(2,BigDecimal.ROUND_HALF_UP);
- invoiceApplied =
InvoiceWorker.getInvoiceAppliedBd(invoice).setScale(2,BigDecimal.ROUND_HALF_UP);
-/* if (invoice.getString("partyId").equals(organizationPartyId)) { //negate
for outgoing payments
- invoiceAmount = invoiceAmount.multiply(new BigDecimal("-1"));
- invoiceApplied = invoiceApplied.multiply(new BigDecimal("-1"));
- }
-*/ if (invoice.getString("invoiceTypeId").equals("PURCHASE_INVOICE")) totalPurchaseInvoice =
totalPurchaseInvoice.add(invoiceAmount);
- if (invoice.getString("invoiceTypeId").equals("SALES_INVOICE"))
totalSalesInvoice = totalSalesInvoice.add(invoiceAmount);
- totalInvoiceApplied = totalInvoiceApplied.add(invoiceApplied);
-// Debug.logInfo("Invoice type: "+ invoice.getString("invoiceTypeId") + "amount: " + invoiceAmount + " applied: " +
invoiceApplied,"??");
- if (!invoiceAmount.equals(invoiceApplied)) {
- Map notAppliedInvoice = UtilMisc.toMap(
- "invoiceId",invoice.getString("invoiceId"),
- "invoiceTypeId", invoice.getString("invoiceTypeId").substring(0,1),
- "invoiceDate", invoice.getString("invoiceDate").substring(0,10),
- "invoiceAmount", invoiceAmount.toString(),
- "invoiceNotApplied", invoiceAmount.subtract(invoiceApplied).toString());
- notAppliedInvoices.add(notAppliedInvoice);
- totalInvoiceNotApplied =
totalInvoiceNotApplied.add(invoiceAmount).subtract(invoiceApplied);
- }
- Map historyItem = UtilMisc.toMap(
- "invoiceId",invoice.getString("invoiceId"),
- "invoiceTypeId", invoice.getString("invoiceTypeId").substring(0,1),
- "invoiceDate", invoice.getString("invoiceDate").substring(0,10),
- "invoiceAmount", invoiceAmount.toString(),
- "totInvoiceApplied", invoiceApplied.toString()
- );
-
- // check for applications
- List applications =
invoice.getRelated("PaymentApplication",null,UtilMisc.toList("paymentId"));
- if (applications != null && applications.size() > 0) {
- Iterator appl = applications.iterator();
- oldPaymentId = new String(" ");
- BigDecimal applied = new BigDecimal("0");
- boolean first = true;
- while (appl.hasNext()) { // read the applications for this invoice
- application = appl.next();
- paymentId = application.getString("paymentId");
-
- //reduce the payment amount in the payment list
- pl = payments.iterator();
- while (pl.hasNext()) {
- payment = pl.next();
- if (paymentId.equals(payment.getString("paymentId"))) {
- plInd = payments.indexOf(payment);
- payment.put("amount",
- payment.getBigDecimal("amount").
- subtract(application.getBigDecimal("amountApplied")).doubleValue());
- payments.remove(plInd);
- payments.add(plInd,payment);
- break;
- }
- }
-
- // check if the payment number has changed, then we have to output a line....
- if (!first && !paymentId.equals(oldPaymentId)) { // if the payment number has
changed, but not the first
- historyItem.put("applied", applied.toString());
- historyItem.put("paymentId", oldPaymentId);
- payment =
delegator.findByPrimaryKey("Payment",UtilMisc.toMap("paymentId",oldPaymentId));
- BigDecimal amount =
payment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
-// if (payment.getString("partyIdFrom").equals(organizationPartyId)) amount =
amount.multiply(new BigDecimal("-1"));
- historyItem.put("amount",amount.toString());
-
historyItem.put("effectiveDate",payment.getString("effectiveDate").substring(0,10));
- historyList.add(historyItem);
- historyItem = new HashMap();
- applied = new BigDecimal("0");
- }
- applied =
applied.add(application.getBigDecimal("amountApplied")).setScale(2,BigDecimal.ROUND_HALF_UP);
- oldPaymentId = paymentId;
- first = false;
- }
- if (!applied.equals("0")) {
- historyItem.put("applied", applied.toString());
- historyItem.put("paymentId", oldPaymentId);
- payment =
delegator.findByPrimaryKey("Payment",UtilMisc.toMap("paymentId",oldPaymentId));
- if (payment != null) {
- BigDecimal amount =
payment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
-// if (payment.getString("partyIdFrom").equals(organizationPartyId)) amount =
amount.multiply(new BigDecimal("-1"));
- historyItem.put("amount",amount.toString());
-
historyItem.put("effectiveDate",payment.getString("effectiveDate").substring(0,10));
- historyList.add(historyItem);
- }
- }
- }
- }
- context.put("historyListInvoices",historyList);
+ Iterator inv = invoices.iterator();
+ while (inv.hasNext()) {
+ invoice = (GenericValue) inv.next();
+ if (invoice.statusId.equals("INVOICE_CANCELLED")) continue;
+ BigDecimal invoiceAmount =
InvoiceWorker.getInvoiceTotalBd(invoice).setScale(2,BigDecimal.ROUND_HALF_UP);
+ invoiceApplied =
InvoiceWorker.getInvoiceAppliedBd(invoice).setScale(2,BigDecimal.ROUND_HALF_UP);
+/* if (invoice.getString("partyId").equals(organizationPartyId)) {
//negate for outgoing payments
+ invoiceAmount = invoiceAmount.multiply(new BigDecimal("-1"));
+ invoiceApplied = invoiceApplied.multiply(new BigDecimal("-1"));
+ }
+*/ if (invoice.invoiceTypeId.equals("PURCHASE_INVOICE"))
totalPurchaseInvoice = totalPurchaseInvoice.add(invoiceAmount);
+ if (invoice.invoiceTypeId.equals("SALES_INVOICE")) totalSalesInvoice =
totalSalesInvoice.add(invoiceAmount);
+ totalInvoiceApplied = totalInvoiceApplied.add(invoiceApplied);
+// Debug.logInfo("Invoice type: "+ invoice.getString("invoiceTypeId") + "amount: " + invoiceAmount + " applied: " +
invoiceApplied,"??");
+ if (!invoiceAmount.equals(invoiceApplied)) {
+ Map notAppliedInvoice = ["invoiceId" : invoice.invoiceId,
+ "invoiceTypeId" :
invoice.invoiceTypeId.substring(0,1),
+ "invoiceDate" :
invoice.invoiceDate.toString().substring(0,10),
+ "invoiceAmount" :
invoiceAmount.toString(),
+ "invoiceNotApplied" :
invoiceAmount.subtract(invoiceApplied).toString()];
+ notAppliedInvoices.add(notAppliedInvoice);
+ totalInvoiceNotApplied =
totalInvoiceNotApplied.add(invoiceAmount).subtract(invoiceApplied);
+ }
+ Map historyItem = ["invoiceId" : invoice.invoiceId,
+ "invoiceTypeId" :
invoice.invoiceTypeId.substring(0,1),
+ "invoiceDate" :
invoice.invoiceDate.toString().substring(0,10),
+ "invoiceAmount" : invoiceAmount.toString(),
+ "totInvoiceApplied" : invoiceApplied.toString()
+ ];
+ // check for applications
+ List applications =
invoice.getRelated("PaymentApplication",null,["paymentId"]);
+ if (applications != null && applications.size() > 0) {
+ Iterator appl = applications.iterator();
+ oldPaymentId = new String(" ");
+ BigDecimal applied = new BigDecimal("0");
+ boolean first = true;
+ while (appl.hasNext()) { // read the applications for this
invoice
+ application = (GenericValue) appl.next();
+ paymentId = application.paymentId;
+
+ //reduce the payment amount in the payment list
+ pl = payments.iterator();
+ while (pl.hasNext()) {
+ payment = (GenericValue) pl.next();
+ if (paymentId.equals(payment.paymentId)) {
+ plInd = payments.indexOf(payment);
+ payment.amount =
payment.getBigDecimal("amount").subtract(application.getBigDecimal("amountApplied")).doubleValue();
+ payments.remove(plInd);
+ payments.add(plInd,payment);
+ break;
+ }
+ }
+
+ // check if the payment number has changed, then we have to
output a line....
+ if (!first && !paymentId.equals(oldPaymentId)) { // if the
payment number has changed, but not the first
+ payment =
delegator.findByPrimaryKey("Payment",["paymentId" : oldPaymentId]);
+ BigDecimal amount =
payment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
+// if (payment.getString("partyIdFrom").equals(organizationPartyId)) amount = amount.multiply(new
BigDecimal("-1"));
+ historyItem = ["applied" : applied.toString(),
+ "paymentId" : oldPaymentId,
+ "amount" : amount.toString(),
+ "effectiveDate" :
payment.effectiveDate.toString().substring(0,10)];
+ historyList.add(historyItem);
+ historyItem = new HashMap();
+ applied = new BigDecimal("0");
+ }
+ applied =
applied.add(application.getBigDecimal("amountApplied")).setScale(2,BigDecimal.ROUND_HALF_UP);
+ oldPaymentId = paymentId;
+ first = false;
+ }
+ if (!applied.equals("0")) {
+ payment = delegator.findByPrimaryKey("Payment",["paymentId" :
oldPaymentId]);
+ if (payment != null) {
+ BigDecimal amount =
payment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
+// if (payment.getString("partyIdFrom").equals(organizationPartyId)) amount = amount.multiply(new
BigDecimal("-1"));
+ historyItem = ["invoiceId" : invoice.invoiceId,
+ "invoiceTypeId" :
invoice.invoiceTypeId.substring(0,1),
+ "invoiceDate" :
invoice.invoiceDate.toString().substring(0,10),
+ "invoiceAmount" : invoiceAmount.toString(),
+ "totInvoiceApplied" :
invoiceApplied.toString(),
+ "applied" : applied.toString(),
+ "paymentId" : oldPaymentId,
+ "amount" : amount.toString(),
+ "effectiveDate" :
payment.effectiveDate.toString().substring(0,10)];
+ historyList.add(historyItem);
+ }
+ }
+ }
+ }
+ context.historyListInvoices = historyList;
}
// totals
BigDecimal totalPaymentApplied = new
BigDecimal("0.00").setScale(2,BigDecimal.ROUND_HALF_UP);
// list of payments where payments are applied
historyList = new LinkedList();
-if (payments != null && payments.size() > 0) {
- pay = payments.iterator();
- while (pay.hasNext()) {
- payment = pay.next();
- if (payment.getString("statusId").equals("PMNT_CANCELLED")) continue;
- List applications =
payment.getRelated("ToPaymentApplication",null,UtilMisc.toList("paymentId"));
- if (applications == null || applications.size() == 0 ) continue; // none found
- Map historyItem =
UtilMisc.toMap("paymentId",payment.getString("paymentId"),"effectiveDate",payment.getString("effectiveDate").substring(0,10));
- BigDecimal amount =
payment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
-// if (payment.getString("partyIdFrom").equals(organizationPartyId)) amount =
amount.multiply(new BigDecimal("-1"));
- historyItem.put("amount",amount.toString());
- ap = applications.iterator();
- while (ap.hasNext()) {
- GenericValue application = ap.next();
- historyItem.put("toPaymentId",application.getString("paymentId"));
- historyItem.put("applied",application.getString("amountApplied"));
- toPayment = application.getRelatedOne("Payment");
-
historyItem.put("toEffectiveDate",toPayment.getString("effectiveDate").substring(0,10));
- toAmount =
toPayment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
-// if (toPayment.getString("partyIdFrom").equals(organizationPartyId)) toAmount =
toAmount.multiply(new BigDecimal("-1"));
- historyItem.put("toAmount",toAmount.toString());
- historyList.add(historyItem);
-
- //reduce the payment amount in the payment list
- pl = payments.iterator();
- while (pl.hasNext()) {
- payment = pl.next();
- // reduce paymentId
- if
(application.getString("paymentId").equals(payment.getString("paymentId"))) {
- plInd = payments.indexOf(payment);
- payment.put("amount",
- payment.getBigDecimal("amount").
- subtract(application.getBigDecimal("amountApplied")).doubleValue());
- payments.remove(plInd);
- payments.add(plInd,payment);
- totalPaymentApplied =
totalPaymentApplied.add(application.getBigDecimal("amountApplied"));
- }
- // reduce toPaymentId
- if
(application.getString("toPaymentId").equals(payment.getString("paymentId"))) {
- plInd = payments.indexOf(payment);
- payment.put("amount",
- payment.getBigDecimal("amount").
- subtract(application.getBigDecimal("amountApplied")).doubleValue());
- payments.remove(plInd);
- payments.add(plInd,payment);
- totalPaymentApplied =
totalPaymentApplied.add(application.getBigDecimal("amountApplied"));
- }
- }
- }
- }
- context.put("historyListPayments",historyList);
+if (payments) {
+ pay = payments.iterator();
+ while (pay.hasNext()) {
+ payment = (GenericValue) pay.next();
+ if (payment.statusId.equals("PMNT_CANCELLED")) continue;
+ applications = payment.getRelated("PaymentApplication", ["paymentId"]);
+ if (!applications) continue; // none found
+ Map historyItem = ["paymentId" : payment.paymentId , "effectiveDate" :
payment.effectiveDate.toString().substring(0,10)];
+ BigDecimal amount =
payment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
+ if (payment.partyIdFrom.equals(organizationPartyId)) {
+ amount = amount.multiply(new BigDecimal("-1"));
+ }
+ historyItem.amount = amount.toString();
+ ap = applications.iterator();
+ while (ap.hasNext()) {
+ application = (GenericValue) ap.next();
+ historyItem = ["toPaymentId" : application.paymentId,
+ "applied" : application.amountApplied];
+ toPayment = application.getRelatedOne("Payment");
+ historyItem.toEffectiveDate =
toPayment.effectiveDate.toString().substring(0,10);
+ toAmount =
toPayment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
+ if (toPayment.partyIdFrom.equals(organizationPartyId)) toAmount =
toAmount.multiply(new BigDecimal("-1"));
+ //reduce the payment amount in the payment list
+ pl = payments.iterator();
+ while (pl.hasNext()) {
+ payment = (GenericValue) pl.next();
+ // reduce paymentId
+ if (application.paymentId.equals(payment.paymentId)) {
+ plInd = payments.indexOf(payment);
+ payment.amount =
+ payment.getBigDecimal("amount").
+
subtract(application.getBigDecimal("amountApplied")).doubleValue();
+ payments.remove(plInd);
+ payments.add(plInd,payment);
+ totalPaymentApplied =
totalPaymentApplied.add(application.getBigDecimal("amountApplied"));
+ }
+ // reduce toPaymentId
+ if (application.toPaymentId.equals(payment.paymentId)) {
+ plInd = payments.indexOf(payment);
+ payment.amount =
+ payment.getBigDecimal("amount").
+
subtract(application.getBigDecimal("amountApplied")).doubleValue();
+ payments.remove(plInd);
+ payments.add(plInd,payment);
+ totalPaymentApplied =
totalPaymentApplied.add(application.getBigDecimal("amountApplied"));
+ }
+ }
+ }
+ }
+ context.historyListPayments = historyList;
}
-
// check if any invoices left not applied
if (notAppliedInvoices != null && notAppliedInvoices.size() > 0) {
- context.put("historyListInvoicesN",notAppliedInvoices);
+ context.historyListInvoicesN = notAppliedInvoices;
}
-
-
+
// list payments applied to other companies
historyList = new LinkedList();
if (payments != null && payments.size() > 0) {
- Iterator pm = payments.iterator();
- while (pm.hasNext()) {
- payment = pm.next();
- // check if payment completely applied
- BigDecimal amount =
payment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
- if (amount.compareTo(new BigDecimal("0.00")) == 0)
- continue;
- Debug.logInfo(" other company payments: " + payment.getString("paymentId") + " amount:" + payment.getBigDecimal("amount") + "
applied:" + PaymentWorker.getPaymentAppliedBd(payment),"??");
- List paymentApplications = payment.getRelated("PaymentApplication");
- Iterator pa = paymentApplications.iterator();
- while (pa.hasNext()) {
- GenericValue paymentApplication = pa.next();
- if (paymentApplication.get("invoiceId") != null) {
- GenericValue invoice = paymentApplication.getRelatedOne("Invoice");
- if (!invoice.getString("partyId").equals(partyId)) {
- historyItem = new HashMap();
- historyItem.put("paymentId",payment.getString("paymentId"));
- historyItem.put("invoiceId",paymentApplication.getString("invoiceId"));
-
historyItem.put("invoiceItemSeqId",paymentApplication.getString("invoiceItemSeqId"));
- historyItem.put("partyId",invoice.getString("partyIdFrom"));
- historyItem.put("amount",amount.toString());
-
historyItem.put("applied",paymentApplication.getBigDecimal("amountApplied").setScale(2,BigDecimal.ROUND_HALF_UP).toString());
-
historyItem.put("effectiveDate",payment.getString("effectiveDate").substring(0,10));
- historyList.add(historyItem);
- }
- }
- }
- }
- context.put("historyListPaymentsO",historyList);
+ Iterator pm = payments.iterator();
+ while (pm.hasNext()) {
+ payment = (GenericValue) pm.next();
+ // check if payment completely applied
+ BigDecimal amount =
payment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
+ if (amount.compareTo(new BigDecimal("0.00")) == 0)
+ continue;
+ Debug.logInfo(" other company payments: " + payment.paymentId + " amount:" + payment.getBigDecimal("amount") + "
applied:" + PaymentWorker.getPaymentAppliedBd(payment),"??");
+ List paymentApplications = payment.getRelated("PaymentApplication");
+ Iterator pa = paymentApplications.iterator();
+ while (pa.hasNext()) {
+ paymentApplication = (GenericValue) pa.next();
+ if (paymentApplication.invoiceId != null) {
+ invoice = paymentApplication.getRelatedOne("Invoice");
+ if (!invoice.partyId.equals(partyId)) {
+ historyItem = new HashMap();
+ Map historyItem = ["paymentId" : payment.paymentId,
+ "invoiceId" :
paymentApplication.invoiceId,
+ "invoiceItemSeqId" :
paymentApplication.invoiceItemSeqId,
+ "partyId" : invoice.partyIdFrom,
+ "amount" : amount.toString(),
+ "applied" :
paymentApplication.getBigDecimal("amountApplied").setScale(2,BigDecimal.ROUND_HALF_UP).toString(),
+ "effectiveDate" :
payment.effectiveDate.toString().substring(0,10)];
+ historyList.add(historyItem);
+ }
+ }
+ }
+ }
+ context.historyListPaymentsO = historyList;
}
// list not applied payments
BigDecimal totalPaymentNotApplied = new
BigDecimal("0.00").setScale(2,BigDecimal.ROUND_HALF_UP);
historyList = new LinkedList();
if (payments != null && payments.size() > 0) {
- Iterator pm = payments.iterator();
- while (pm.hasNext()) {
- payment = pm.next();
- payment =
delegator.findByPrimaryKey("Payment",UtilMisc.toMap("paymentId",payment.getString("paymentId")));
- notApplied =
payment.getBigDecimal("amount").subtract(PaymentWorker.getPaymentAppliedBd(payment)).setScale(2,BigDecimal.ROUND_HALF_UP);
- // check if payment completely applied
- Debug.logInfo(" payment: " + payment.getString("paymentId") + " amount:" + payment.getBigDecimal("amount") + " applied:" +
PaymentWorker.getPaymentAppliedBd(payment),"??");
- if (notApplied.compareTo(new BigDecimal("0.00")) == 0)
- continue;
- historyItem = new HashMap();
- historyItem.put("paymentId",payment.getString("paymentId"));
- BigDecimal amount =
payment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
- totalPaymentNotApplied = totalPaymentNotApplied.add(notApplied);
- historyItem.put("amount",amount.toString());
- historyItem.put("notApplied",notApplied.toString());
-
historyItem.put("effectiveDate",payment.getString("effectiveDate").substring(0,10));
- historyList.add(historyItem);
- }
- context.put("historyListPaymentsN",historyList);
+ Iterator pm = payments.iterator();
+ while (pm.hasNext()) {
+ payment = (GenericValue) pm.next();
+ payment = delegator.findByPrimaryKey("Payment",["paymentId" :
payment.paymentId]);
+ notApplied =
payment.getBigDecimal("amount").subtract(PaymentWorker.getPaymentAppliedBd(payment)).setScale(2,BigDecimal.ROUND_HALF_UP);
+ // check if payment completely applied
+ Debug.logInfo(" payment: " + payment.paymentId + " amount:" + payment.getBigDecimal("amount") + " applied:" +
PaymentWorker.getPaymentAppliedBd(payment),"??");
+ if (notApplied.compareTo(new BigDecimal("0.00")) == 0)
+ continue;
+ Map historyItem = new HashMap();
+ BigDecimal amount =
payment.getBigDecimal("amount").setScale(2,BigDecimal.ROUND_HALF_UP);
+ totalPaymentNotApplied = totalPaymentNotApplied.add(notApplied);
+ historyItem = ["paymentId" : payment.paymentId,
+ "amount" : amount.toString(),
+ "notApplied" : notApplied.toString(),
+ "effectiveDate" :
payment.effectiveDate.toString().substring(0,10)];
+ historyList.add(historyItem);
+ }
+ context.historyListPaymentsN = historyList;
}
-
// create totals
-finanSummary = UtilMisc.toMap(
- "totalSalesInvoice",totalSalesInvoice.toString(),
- "totalPurchaseInvoice",totalPurchaseInvoice.toString(),
- "totalPaymentsIn",totalPaymentsIn.toString(),
- "totalPaymentsOut",totalPaymentsOut.toString(),
- "totalInvoiceApplied",totalInvoiceApplied.toString(),
- "totalInvoiceNotApplied",totalInvoiceNotApplied.toString());
-finanSummary.put("totalPaymentNotApplied",totalPaymentNotApplied.toString());
-finanSummary.put("totalPaymentNotApplied",totalPaymentNotApplied.toString());
+finanSummary = ["totalSalesInvoice" : totalSalesInvoice.toString(),
+ "totalPurchaseInvoice" : totalPurchaseInvoice.toString(),
+ "totalPaymentsIn" : totalPaymentsIn.toString(),
+ "totalPaymentsOut" : totalPaymentsOut.toString(),
+ "totalInvoiceApplied" : totalInvoiceApplied.toString(),
+ "totalInvoiceNotApplied" : totalInvoiceNotApplied.toString()];
+finanSummary = ["totalPaymentNotApplied" : totalPaymentNotApplied.toString(),
+ "totalPaymentNotApplied" : totalPaymentNotApplied.toString()];
totalToBePaid =
totalSalesInvoice.add(totalPurchaseInvoice).subtract(totalInvoiceApplied).subtract(totalPaymentNotApplied);
-if (totalToBePaid.compareTo(new BigDecimal("0.00")) < 0 )
finanSummary.put("totalToBePaid",totalToBePaid.toString());
-else if (totalToBePaid.compareTo(new BigDecimal("0.00")) > 0 )
finanSummary.put("totalToBeReceived",totalToBePaid.toString());
-else {
- finanSummary.put("totalToBePaid","0.00");
- finanSummary.put("totalToBeReceived","0.00");
+if (totalToBePaid.compareTo(new BigDecimal("0.00")) < 0 )
finanSummary.totalToBePaid = totalToBePaid.toString();
+else if (totalToBePaid.compareTo(new BigDecimal("0.00")) > 0 )
finanSummary.totalToBeReceived = totalToBePaid.toString();
+else {
+ finanSummary = ["totalToBePaid" : "0.00",
+ "totalToBeReceived" : "0.00"];
}
- context.put("finanSummary",finanSummary);
-
\ No newline at end of file
+ context.finanSummary = finanSummary;
+
\ No newline at end of file
Modified: ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml?rev=698810&r1=698809&r2=698810&view=diff
==============================================================================
--- ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml
(original)
+++ ofbiz/trunk/applications/party/webapp/partymgr/party/PartyForms.xml Wed Sep
24 21:06:09 2008
@@ -816,7 +816,7 @@
<field name="effectiveDate"><display/></field>
<field name="amount"
widget-area-style="tabletextright"><display/></field>
<field name="applied"
widget-area-style="tabletextright"><display/></field>
- <field name="toPaymentId"><hyperlink target="paymentOverview?paymentId=${paymentId}"
description="${toPaymentId}"/></field>
+ <field name="toPaymentId"><hyperlink target="/accounting/control/paymentOverview?paymentId=${paymentId}"
description="${toPaymentId}" target-type="inter-app"/></field>
<field name="toEffectiveDate"><display/></field>
<field name="toAmount"
widget-area-style="tabletextright"><display/></field>
</form>
Modified: ofbiz/trunk/applications/party/widget/partymgr/PartyScreens.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/widget/partymgr/PartyScreens.xml?rev=698810&r1=698809&r2=698810&view=diff
==============================================================================
--- ofbiz/trunk/applications/party/widget/partymgr/PartyScreens.xml (original)
+++ ofbiz/trunk/applications/party/widget/partymgr/PartyScreens.xml Wed Sep 24
21:06:09 2008
@@ -983,7 +983,7 @@
<decorator-screen name="CommonPartyDecorator"
location="${parameters.mainDecoratorLocation}">
<decorator-section name="body">
<container><label style="h1" text="Financial
History"/></container>
- <screenlet title="${uiLabelMap.Invoices paid by payments}"
navigation-form-name="Invoices">
+ <screenlet title="${uiLabelMap.InvoicesPayments}"
navigation-form-name="Invoices">
<include-form name="partyFinancialHistoryInvoices"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
</screenlet>
<section>
@@ -993,8 +993,8 @@
</not>
</condition>
<widgets>
- <screenlet title="${uiLabelMap.Invoices of other parties paid by payments from }${partyId}"
navigation-form-name="PaymentsO">
- <include-form name="partyFinancialHistoryPaymentsO"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
+ <screenlet title="${uiLabelMap.InvoicesOtherParties}"
navigation-form-name="partyFinancialHistoryPayments">
+ <include-form name="partyFinancialHistoryPaymentsO"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
</screenlet>
</widgets>
</section>
@@ -1005,9 +1005,8 @@
</not>
</condition>
<widgets>
- <screenlet title="${uiLabelMap.Applied payments to
payments" navigation-form-name="Payments">
- <container><label style="head1" text="Applied payments to
payments"/></container>
- <include-form name="partyFinancialHistoryPayments"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
+ <screenlet title="${uiLabelMap.AppliedPayments}"
navigation-form-name="partyFinancialHistoryPayments">
+ <include-form name="partyFinancialHistoryPayments"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
</screenlet>
</widgets>
</section>
@@ -1018,8 +1017,8 @@
</not>
</condition>
<widgets>
- <screenlet title="${uiLabelMap.Invoices not yet (fully) applied}"
navigation-form-name="InvoicesN">
- <include-form name="partyFinancialHistoryInvoicesN"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
+ <screenlet title="${uiLabelMap.InvoicesNotApplied}"
navigation-form-name="partyFinancialHistoryInvoicesN">
+ <include-form name="partyFinancialHistoryInvoicesN"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
</screenlet>
</widgets>
</section>
@@ -1030,13 +1029,13 @@
</not>
</condition>
<widgets>
- <screenlet title="${uiLabelMap.Payments not yet (fully) applied}"
navigation-form-name="PaymentsN">
- <include-form name="partyFinancialHistoryPaymentsN"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
+ <screenlet title="${uiLabelMap.PaymentsNotApplied}"
navigation-form-name="partyFinancialHistoryPaymentsN">
+ <include-form name="partyFinancialHistoryPaymentsN"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
</screenlet>
</widgets>
</section>
- <screenlet title="${uiLabelMap.Totals for Company:}${organizationPartyId}"
navigation-form-name="Summary">
- <include-form name="partyFinancialSummary"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
+ <screenlet title="${uiLabelMap.PartyFinancialSummary}${organizationPartyId}"
navigation-form-name="partyFinancialSummary">
+ <include-form name="partyFinancialSummary"
location="component://party/webapp/partymgr/party/PartyForms.xml"/>
</screenlet>
</decorator-section>
</decorator-screen>