/* * 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 org.apache.ofbiz.accounting.invoice.InvoiceWorker import java.text.NumberFormat // @param GenericValue invoice - The Invoice entity to find payment applications for if (!invoice) return invoiceApplications = [] // to pass back to the screen with payment applications added // retrieve related applications with null itemnumber invoiceAppls = invoice.getRelated("PaymentApplication", [invoiceItemSeqId : null], null, false) invoiceAppls.each { invoiceAppl -> itemmap = [:] itemmap.invoiceId = invoiceAppl.invoiceId itemmap.invoiceItemSeqId = invoiceAppl.invoiceItemSeqId itemmap.total = InvoiceWorker.getInvoiceTotal(invoice) itemmap.paymentApplicationId = invoiceAppl.paymentApplicationId itemmap.paymentId = invoiceAppl.paymentId itemmap.billingAccountId = invoiceAppl.billingAccountId itemmap.taxAuthGeoId = invoiceAppl.taxAuthGeoId itemmap.amountToApply = invoiceAppl.amountApplied itemmap.amountApplied = invoiceAppl.amountApplied invoiceApplications.add(itemmap) } // retrieve related applications with an existing itemnumber invoice.getRelated("InvoiceItem", null, null, false).each { item -> BigDecimal itemTotal = null if (item.amount != null) { if (!item.quantity) { itemTotal = item.getBigDecimal("amount") } else { itemTotal = item.getBigDecimal("amount").multiply(item.getBigDecimal("quantity")) } } // get relation payment applications for every item(can be more than 1 per item number) item.getRelated("PaymentApplication", null, null, false).each { paymentApplication -> itemmap = [:] itemmap.putAll(item) itemmap.total = NumberFormat.getInstance(locale).format(itemTotal) itemmap.paymentApplicationId = paymentApplication.paymentApplicationId itemmap.paymentId = paymentApplication.paymentId itemmap.toPaymentId = paymentApplication.toPaymentId itemmap.amountApplied = paymentApplication.getBigDecimal("amountApplied") itemmap.amountToApply = paymentApplication.getBigDecimal("amountApplied") itemmap.billingAccountId = paymentApplication.billingAccountId itemmap.taxAuthGeoId = paymentApplication.taxAuthGeoId invoiceApplications.add(itemmap) } } if (invoiceApplications) context.invoiceApplications = invoiceApplications