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. - * - *@author Hans Bakker ([hidden email]) - *@version $Rev$ - *@since 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> |
Free forum by Nabble | Edit this page |