You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ap...@apache.org on 2009/11/13 03:16:54 UTC

svn commit: r835709 - in /ofbiz/trunk/applications/accounting: config/ webapp/accounting/WEB-INF/ webapp/accounting/WEB-INF/actions/invoice/ webapp/accounting/invoice/ webapp/ap/invoices/ widget/

Author: apatel
Date: Fri Nov 13 02:16:54 2009
New Revision: 835709

URL: http://svn.apache.org/viewvc?rev=835709&view=rev
Log:
Bulk print Invoices.

Added:
    ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/PrintInvoices.groovy
    ofbiz/trunk/applications/accounting/webapp/accounting/invoice/PrintInvoices.fo.ftl   (with props)
Modified:
    ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml
    ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml
    ofbiz/trunk/applications/accounting/webapp/ap/invoices/PurchaseInvoices.ftl
    ofbiz/trunk/applications/accounting/widget/AccountingPrintScreens.xml

Modified: ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml?rev=835709&r1=835708&r2=835709&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml (original)
+++ ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml Fri Nov 13 02:16:54 2009
@@ -7949,6 +7949,9 @@
         <value xml:lang="en">Print Deposit Slip</value>
         <value xml:lang="hi_IN">जमा पर्ची प्रिंट करे</value>
     </property>
+    <property key="AccountingPrintInvoices">
+        <value xml:lang="en">Print Invoices</value>
+    </property>
     <property key="AccountingProblemChangingInvoiceStatusTo">
         <value xml:lang="ar">مشكل عند تغيير وضعية الفاتورة إلى  ${newStatus}</value>
         <value xml:lang="de">Problem bei der Änderung des Rechnungsstatus auf ${newStatus}</value>

Added: ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/PrintInvoices.groovy
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/PrintInvoices.groovy?rev=835709&view=auto
==============================================================================
--- ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/PrintInvoices.groovy (added)
+++ ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/invoice/PrintInvoices.groovy Fri Nov 13 02:16:54 2009
@@ -0,0 +1,132 @@
+/*
+ * 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.text.DateFormat;
+import org.ofbiz.accounting.invoice.InvoiceWorker;
+import org.ofbiz.base.util.UtilNumber;
+import org.ofbiz.entity.condition.EntityCondition;
+
+invoiceDetailList = [];
+invoiceIds.each { invoiceId ->
+    invoicesMap = [:];
+    invoice = delegator.findOne("Invoice", [invoiceId : invoiceId], false);
+    invoicesMap.invoice = invoice;
+    
+    currency = parameters.currency;  // allow the display of the invoice in the original currency, the default is to display the invoice in the default currency
+    BigDecimal conversionRate = new BigDecimal("1");
+    ZERO = BigDecimal.ZERO;
+    decimals = UtilNumber.getBigDecimalScale("invoice.decimals");
+    rounding = UtilNumber.getBigDecimalRoundingMode("invoice.rounding");
+    
+    if (invoice) {
+        if (currency && !invoice.getString("currencyUomId").equals(currency)) {
+            conversionRate = InvoiceWorker.getInvoiceCurrencyConversionRate(invoice);
+            invoice.currencyUomId = currency;
+            invoice.invoiceMessage = " converted from original with a rate of: " + conversionRate.setScale(8, rounding);
+        }
+    
+        invoiceItems = invoice.getRelatedOrderBy("InvoiceItem", ["invoiceItemSeqId"]);
+        invoiceItemsConv = [];
+        invoiceItems.each { invoiceItem ->
+          if (invoiceItem.amount) {
+              invoiceItem.amount = invoiceItem.getBigDecimal("amount").multiply(conversionRate).setScale(decimals, rounding);
+              invoiceItemsConv.add(invoiceItem);
+          }
+        }
+    
+        invoicesMap.invoiceItems = invoiceItemsConv;
+    
+        invoiceTotal = InvoiceWorker.getInvoiceTotal(invoice).multiply(conversionRate).setScale(decimals, rounding);
+        invoiceNoTaxTotal = InvoiceWorker.getInvoiceNoTaxTotal(invoice).multiply(conversionRate).setScale(decimals, rounding);
+        invoicesMap.invoiceTotal = invoiceTotal;
+        invoicesMap.invoiceNoTaxTotal = invoiceNoTaxTotal;
+    
+        if ("PURCHASE_INVOICE".equals(invoice.invoiceTypeId)) {
+            billingAddress = InvoiceWorker.getSendFromAddress(invoice);
+        } else {
+            billingAddress = InvoiceWorker.getBillToAddress(invoice);
+        }
+        if (billingAddress) {
+            invoicesMap.billingAddress = billingAddress;
+        }
+        billingParty = InvoiceWorker.getBillToParty(invoice);
+        invoicesMap.billingParty = billingParty;
+        sendingParty = InvoiceWorker.getSendFromParty(invoice);
+        invoicesMap.sendingParty = sendingParty;
+
+        // This snippet was added for adding Tax ID in invoice header if needed 
+        sendingTaxInfos = sendingParty.getRelated("PartyTaxAuthInfo");
+        billingTaxInfos = billingParty.getRelated("PartyTaxAuthInfo");
+        sendingPartyTaxId = null;
+        billingPartyTaxId = null;
+
+        if (billingAddress) {
+            sendingTaxInfos.eachWithIndex { sendingTaxInfo, i ->
+                if (sendingTaxInfo.taxAuthGeoId.equals(billingAddress.countryGeoId)) {
+                     sendingPartyTaxId = sendingTaxInfos[i-1].partyTaxId;
+                }
+            }
+            billingTaxInfos.eachWithIndex { billingTaxInfo, i ->
+                if (billingTaxInfo.taxAuthGeoId.equals(billingAddress.countryGeoId)) {
+                     billingPartyTaxId = billingTaxInfos[i-1].partyTaxId;
+                }
+            }
+        }
+        if (sendingPartyTaxId) {
+            invoicesMap.sendingPartyTaxId = sendingPartyTaxId;
+        }
+        if (billingPartyTaxId) {
+            invoicesMap.billingPartyTaxId = billingPartyTaxId;
+        }
+    
+        terms = invoice.getRelated("InvoiceTerm");
+        invoicesMap.terms = terms;
+    
+        paymentAppls = delegator.findList("PaymentApplication", EntityCondition.makeCondition([invoiceId : invoiceId]), null, null, null, false);
+        invoicesMap.payments = paymentAppls;
+    
+        orderItemBillings = delegator.findList("OrderItemBilling", EntityCondition.makeCondition([invoiceId : invoiceId]), null, ['orderId'], null, false);
+        orders = new LinkedHashSet();
+        orderItemBillings.each { orderIb ->
+            orders.add(orderIb.orderId);
+        }
+        invoicesMap.orders = orders;
+    
+        invoiceStatus = invoice.getRelatedOne("StatusItem");
+        invoicesMap.invoiceStatus = invoiceStatus;
+    
+        edit = parameters.editInvoice;
+        if ("true".equalsIgnoreCase(edit)) {
+            invoiceItemTypes = delegator.findList("InvoiceItemType", null, null, null, null, false);
+            invoicesMap.invoiceItemTypes = invoiceItemTypes;
+            invoicesMap.editInvoice = true;
+        }
+    
+        // format the date
+        if (invoice.invoiceDate) {
+            invoiceDate = DateFormat.getDateInstance(DateFormat.LONG).format(invoice.invoiceDate);
+            invoicesMap.invoiceDate = invoiceDate;
+        } else {
+            invoicesMap.invoiceDate = "N/A";
+        }
+    }
+    invoiceDetailList.add(invoicesMap);
+}
+
+context.invoiceDetailList = invoiceDetailList;

Modified: ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml?rev=835709&r1=835708&r2=835709&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml Fri Nov 13 02:16:54 2009
@@ -2180,6 +2180,11 @@
         <!-- security https="true" auth="true"/ -->
         <response name="success" type="view" value="PrintCheckPDF"/>
     </request-map>
+    
+    <request-map uri="PrintInvoices">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="PrintInvoices"/>
+    </request-map>
 
     <!--Global GL Settings -->
     <request-map uri="globalGLSettings">
@@ -2698,6 +2703,7 @@
     <!-- PDFs  -->
     <view-map name="InvoicePDF" type="screenfop" page="component://accounting/widget/AccountingPrintScreens.xml#InvoicePDF" content-type="application/pdf" encoding="none"/>
     <view-map name="PrintCheckPDF" type="screenfop" page="component://accounting/widget/AccountingPrintScreens.xml#PrintCheckPDF" content-type="application/pdf" encoding="none"/>
+    <view-map name="PrintInvoices" type="screenfop" page="component://accounting/widget/AccountingPrintScreens.xml#PrintInvoices" content-type="application/pdf" encoding="none"/>
 
     <!-- Financial Summary Reports -->
     <view-map name="FinancialSummaryReportOptions" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#FinancialSummaryReportOptions"/>

Added: ofbiz/trunk/applications/accounting/webapp/accounting/invoice/PrintInvoices.fo.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/invoice/PrintInvoices.fo.ftl?rev=835709&view=auto
==============================================================================
--- ofbiz/trunk/applications/accounting/webapp/accounting/invoice/PrintInvoices.fo.ftl (added)
+++ ofbiz/trunk/applications/accounting/webapp/accounting/invoice/PrintInvoices.fo.ftl Fri Nov 13 02:16:54 2009
@@ -0,0 +1,293 @@
+<#--
+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.
+-->
+
+<#escape x as x?xml>
+  <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+    <fo:layout-master-set>
+      <fo:simple-page-master master-name="main" page-height="11in" page-width="8.5in"
+        margin-top="0.5in" margin-bottom="1in" margin-left=".5in" margin-right="1in">
+          <fo:region-body margin-top="1in"/>
+          <fo:region-before extent="1in"/>
+          <fo:region-after extent="1in"/>
+      </fo:simple-page-master>
+    </fo:layout-master-set>
+    <#if invoiceDetailList?has_content>
+      <#list invoiceDetailList as invoiceDetail>
+        <#assign invoice = invoiceDetail.invoice />
+        <#if invoiceDetail.billingParty?has_content>
+          <#assign billingParty = invoiceDetail.billingParty />
+        </#if>
+        <fo:page-sequence master-reference="main">
+          <fo:flow flow-name="xsl-region-body" font-family="Helvetica">
+            <fo:block>
+              <fo:table>
+                <fo:table-column/>
+                <fo:table-column/>
+                <fo:table-body>
+                  <fo:table-row>
+                    <fo:table-cell>
+                      <fo:block align="left">
+                        ${screens.render("component://order/widget/ordermgr/OrderPrintScreens.xml#CompanyLogo")}
+                      </fo:block>
+                    </fo:table-cell>
+                    <fo:table-cell>
+                      <fo:block align="right">
+                        <fo:table>
+                          <fo:table-column column-width="1in"/>
+                          <fo:table-column column-width="2.5in"/>
+                          <fo:table-body>
+                            <fo:table-row>
+                              <fo:table-cell>
+                                <fo:block number-columns-spanned="2" font-weight="bold" wrap-option="no-wrap">${invoice.getRelatedOne("InvoiceType").get("description",locale)?if_exists}</fo:block>
+                              </fo:table-cell>
+                            </fo:table-row>
+                            <fo:table-row>
+                              <fo:table-cell><fo:block>${uiLabelMap.AccountingInvoiceDateAbbr}:</fo:block></fo:table-cell>
+                              <fo:table-cell><fo:block>${invoiceDetail.invoiceDate?if_exists}</fo:block></fo:table-cell>
+                            </fo:table-row>
+                            <fo:table-row>
+                              <fo:table-cell><fo:block>${uiLabelMap.AccountingCustNr}:</fo:block></fo:table-cell>
+                              <fo:table-cell>
+                                <fo:block>
+                                  ${billingParty.partyId?if_exists}
+                                </fo:block>
+                              </fo:table-cell>
+                            </fo:table-row>
+                            <#if invoiceDetail.billingPartyTaxId?has_content>
+                              <fo:table-row>
+                                <fo:table-cell><fo:block>${uiLabelMap.PartyTaxId}:</fo:block></fo:table-cell>
+                                <fo:table-cell><fo:block> ${invoiceDetail.billingPartyTaxId}</fo:block></fo:table-cell>
+                              </fo:table-row>
+                            </#if>
+                            <fo:table-row>
+                              <fo:table-cell><fo:block>${uiLabelMap.AccountingInvNr}:</fo:block></fo:table-cell>
+                              <fo:table-cell><fo:block><#if invoice?has_content>${invoice.invoiceId}</#if></fo:block></fo:table-cell>
+                            </fo:table-row>
+                            <#if invoice?has_content && invoice.description?has_content>
+                              <fo:table-row>
+                                <fo:table-cell><fo:block>${uiLabelMap.AccountingDescr}:</fo:block></fo:table-cell>
+                                <fo:table-cell><fo:block>${invoice.description}</fo:block></fo:table-cell>
+                              </fo:table-row>
+                            </#if>
+                          </fo:table-body>
+                        </fo:table>
+                      </fo:block>
+                    </fo:table-cell>
+                  </fo:table-row>
+                </fo:table-body>
+              </fo:table>
+            </fo:block>
+              
+            <#if billingParty?has_content>
+              <fo:block>
+                <fo:table space-after="0.3in">
+                  <fo:table-column column-width="3.5in"/>
+                  <fo:table-body>
+                    <fo:table-row >
+                      <fo:table-cell>
+                        <fo:block>${uiLabelMap.CommonTo}: </fo:block>
+                        <#if invoiceDetail.billingAddress?has_content>
+                          <#assign billingAddress = invoiceDetail.billingAddress />
+                          <#assign billingPartyNameResult = dispatcher.runSync("getPartyNameForDate", Static["org.ofbiz.base.util.UtilMisc"].toMap("partyId", billingParty.partyId, "compareDate", invoice.invoiceDate, "userLogin", userLogin))/>
+                          <fo:block>${billingPartyNameResult.fullName?default(billingAddress.toName)?default("Billing Name Not Found")}</fo:block>
+                          <#if billingAddress.attnName?exists>
+                            <fo:block>${billingAddress.attnName}</fo:block>
+                          </#if>
+                          <fo:block>${billingAddress.address1?if_exists}</fo:block>
+                          <#if billingAddress.address2?exists>
+                            <fo:block>${billingAddress.address2}</fo:block>
+                          </#if>
+                          <fo:block>${billingAddress.city?if_exists} ${billingAddress.stateProvinceGeoId?if_exists} ${billingAddress.postalCode?if_exists}</fo:block>
+                        <#else>
+                          <fo:block>${uiLabelMap.AccountingNoGenBilAddressFound}${billingParty.partyId?if_exists}</fo:block>
+                        </#if>
+                      </fo:table-cell>
+                    </fo:table-row>
+                  </fo:table-body>
+                </fo:table>
+              </fo:block>
+            </#if>
+            
+            <fo:block>
+              <#if invoiceDetail.orders?has_content>
+                <#assign orders = invoiceDetail.orders?if_exists />
+                <fo:table space-after="0.3in">
+                  <fo:table-column column-width="1in"/>
+                  <fo:table-column column-width="5.5in"/>
+                  <fo:table-body>
+                    <fo:table-row>
+                      <fo:table-cell>
+                        <fo:block font-size="10pt" font-weight="bold">${uiLabelMap.AccountingOrderNr}:</fo:block>
+                      </fo:table-cell>
+                      <fo:table-cell>
+                        <fo:block font-size ="10pt" font-weight="bold"><#list orders as order> ${order} </#list></fo:block>
+                      </fo:table-cell>
+                    </fo:table-row>
+                  </fo:table-body>
+                </fo:table>
+              </#if>
+              
+              <#if invoiceDetail.invoiceItems?has_content>
+                <#assign invoiceItems = invoiceDetail.invoiceItems?if_exists />
+                <fo:table>
+                  <fo:table-column column-width="20mm"/>
+                  <fo:table-column column-width="20mm"/>
+                  <fo:table-column column-width="65mm"/>
+                  <fo:table-column column-width="15mm"/>
+                  <fo:table-column column-width="25mm"/>
+                  <fo:table-column column-width="25mm"/>
+    
+                  <fo:table-header height="14px">
+                    <fo:table-row>
+                      <fo:table-cell border-bottom-style="solid" border-bottom-width="thin" border-bottom-color="black">
+                        <fo:block font-weight="bold">${uiLabelMap.AccountingItemNr}</fo:block>
+                      </fo:table-cell>
+                      <fo:table-cell border-bottom-style="solid" border-bottom-width="thin" border-bottom-color="black">
+                        <fo:block font-weight="bold">${uiLabelMap.AccountingProduct}</fo:block>
+                      </fo:table-cell>
+                      <fo:table-cell border-bottom-style="solid" border-bottom-width="thin" border-bottom-color="black">
+                        <fo:block font-weight="bold">${uiLabelMap.CommonDescription}</fo:block>
+                      </fo:table-cell>
+                      <fo:table-cell border-bottom-style="solid" border-bottom-width="thin" border-bottom-color="black">
+                        <fo:block font-weight="bold" text-align="center">${uiLabelMap.CommonQty}</fo:block>
+                      </fo:table-cell>
+                      <fo:table-cell border-bottom-style="solid" border-bottom-width="thin" border-bottom-color="black">
+                        <fo:block font-weight="bold" text-align="center">${uiLabelMap.AccountingUnitPrice}</fo:block>
+                      </fo:table-cell>
+                      <fo:table-cell border-bottom-style="solid" border-bottom-width="thin" border-bottom-color="black">
+                        <fo:block font-weight="bold" text-align="center">${uiLabelMap.CommonAmount}</fo:block>
+                      </fo:table-cell>
+                    </fo:table-row>
+                  </fo:table-header>
+                  <fo:table-body font-size="10pt">
+                    <#assign currentShipmentId = "">
+                    <#assign newShipmentId = "">
+                    <#-- if the item has a description, then use its description.  Otherwise, use the description of the invoiceItemType -->
+                    <#list invoiceItems as invoiceItem>
+                      <#assign itemType = invoiceItem.getRelatedOne("InvoiceItemType")>
+                      <#assign taxRate = invoiceItem.getRelatedOne("TaxAuthorityRateProduct")?if_exists>
+                      <#assign itemBillings = invoiceItem.getRelated("OrderItemBilling")?if_exists>
+                      <#if itemBillings?has_content>
+                        <#assign itemBilling = Static["org.ofbiz.entity.util.EntityUtil"].getFirst(itemBillings)>
+                        <#if itemBilling?has_content>
+                          <#assign itemIssuance = itemBilling.getRelatedOne("ItemIssuance")?if_exists>
+                          <#if itemIssuance?has_content>
+                            <#assign newShipmentId = itemIssuance.shipmentId>
+                          </#if>
+                        </#if>
+                      </#if>
+                      <#if invoiceItem.description?has_content>
+                        <#assign description=invoiceItem.description>
+                      <#elseif taxRate?has_content & taxRate.get("description",locale)?has_content>
+                        <#assign description=taxRate.get("description",locale)>
+                      <#elseif itemType.get("description",locale)?has_content>
+                        <#assign description=itemType.get("description",locale)>
+                      </#if>
+  
+                      <#if newShipmentId?exists & newShipmentId != currentShipmentId>
+                        <#-- the shipment id is printed at the beginning for each
+                           group of invoice items created for the same shipment
+                        -->
+                        <fo:table-row height="14px">
+                          <fo:table-cell number-columns-spanned="6">
+                            <fo:block></fo:block>
+                           </fo:table-cell>
+                        </fo:table-row>
+                        <fo:table-row height="14px">
+                          <fo:table-cell number-columns-spanned="6">
+                            <fo:block font-weight="bold"> ${uiLabelMap.ProductShipmentId}: ${newShipmentId} </fo:block>
+                          </fo:table-cell>
+                        </fo:table-row>
+                        <#assign currentShipmentId = newShipmentId>
+                      </#if>
+                      <fo:table-row height="7px">
+                        <fo:table-cell number-columns-spanned="6">
+                          <fo:block></fo:block>
+                        </fo:table-cell>
+                      </fo:table-row>
+                      <fo:table-row height="14px" space-start=".15in">
+                        <fo:table-cell>
+                          <fo:block> ${invoiceItem.invoiceItemSeqId} </fo:block>
+                        </fo:table-cell>
+                        <fo:table-cell>
+                          <fo:block text-align="left">${invoiceItem.productId?if_exists} </fo:block>
+                        </fo:table-cell>
+                        <fo:table-cell>
+                          <fo:block text-align="right">${description?if_exists}</fo:block>
+                        </fo:table-cell>
+                        <fo:table-cell>
+                          <fo:block text-align="center"> <#if invoiceItem.quantity?exists>${invoiceItem.quantity?string.number}</#if> </fo:block>
+                        </fo:table-cell>
+                        <fo:table-cell text-align="right">
+                          <fo:block> <#if invoiceItem.quantity?exists><@ofbizCurrency amount=invoiceItem.amount?if_exists isoCode=invoice.currencyUomId?if_exists/></#if> </fo:block>
+                        </fo:table-cell>
+                        <fo:table-cell text-align="right">
+                          <fo:block> <@ofbizCurrency amount=(Static["org.ofbiz.accounting.invoice.InvoiceWorker"].getInvoiceItemTotal(invoiceItem)) isoCode=invoice.currencyUomId?if_exists/> </fo:block>
+                        </fo:table-cell>
+                      </fo:table-row>
+                    </#list>
+  
+                    <#-- the grand total -->
+                    <fo:table-row>
+                      <fo:table-cell number-columns-spanned="3">
+                        <fo:block/>
+                      </fo:table-cell>
+                      <fo:table-cell>
+                        <fo:block font-weight="bold">${uiLabelMap.AccountingTotalCapital}</fo:block>
+                      </fo:table-cell>
+                      <fo:table-cell text-align="right" number-columns-spanned="2">
+                        <fo:block font-weight="bold">
+                          <#if invoiceDetail.invoiceTotal?has_content>
+                            <#assign invoiceTotal = invoiceDetail.invoiceTotal?if_exists />
+                            <@ofbizCurrency amount=invoiceTotal isoCode=invoice.currencyUomId?if_exists/>
+                          </#if>
+                        </fo:block>
+                      </fo:table-cell>
+                    </fo:table-row>
+                    <fo:table-row height="7px">
+                     <fo:table-cell>
+                        <fo:block/>
+                     </fo:table-cell>
+                    </fo:table-row>
+                    <fo:table-row height="14px">
+                      <fo:table-cell number-columns-spanned="3">
+                        <fo:block/>
+                      </fo:table-cell>
+                      <fo:table-cell number-columns-spanned="2">
+                        <fo:block>${uiLabelMap.AccountingTotalExclTax}</fo:block>
+                      </fo:table-cell>
+                      <fo:table-cell number-columns-spanned="1" text-align="right">
+                        <fo:block>
+                          <#if invoiceDetail.invoiceNoTaxTotal?has_content>
+                            <#assign invoiceNoTaxTotal = invoiceDetail.invoiceNoTaxTotal?if_exists />
+                            <@ofbizCurrency amount=invoiceNoTaxTotal isoCode=invoice.currencyUomId?if_exists/>
+                          </#if>
+                        </fo:block>
+                      </fo:table-cell>
+                    </fo:table-row>
+                  </fo:table-body>
+                </fo:table>
+              </#if>
+            </fo:block>
+          </fo:flow>
+        </fo:page-sequence>
+      </#list>
+    </#if>        
+  </fo:root>
+</#escape>

Propchange: ofbiz/trunk/applications/accounting/webapp/accounting/invoice/PrintInvoices.fo.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/accounting/webapp/accounting/invoice/PrintInvoices.fo.ftl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/accounting/webapp/accounting/invoice/PrintInvoices.fo.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/trunk/applications/accounting/webapp/ap/invoices/PurchaseInvoices.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/ap/invoices/PurchaseInvoices.ftl?rev=835709&r1=835708&r2=835709&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/webapp/ap/invoices/PurchaseInvoices.ftl (original)
+++ ofbiz/trunk/applications/accounting/webapp/ap/invoices/PurchaseInvoices.ftl Fri Nov 13 02:16:54 2009
@@ -102,6 +102,7 @@
       <select name="serviceName" id="serviceName" onchange="javascript:setServiceName(this);">
         <option value="">${uiLabelMap.AccountingSelectAction}</option>
         <option value="<@o...@ofbizUrl>" id="processMassCheckRun">${uiLabelMap.AccountingIssueCheck}</option>
+        <option value="<@o...@ofbizUrl>">${uiLabelMap.AccountingPrintInvoices}</option>
         <option value="massInvoicesToApprove">${uiLabelMap.AccountingInvoiceStatusToApproved}</option>
         <option value="massInvoicesToReceive">${uiLabelMap.AccountingInvoiceStatusToReceived}</option>
         <option value="massInvoicesToReady">${uiLabelMap.AccountingInvoiceStatusToReady}</option>

Modified: ofbiz/trunk/applications/accounting/widget/AccountingPrintScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/AccountingPrintScreens.xml?rev=835709&r1=835708&r2=835709&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/widget/AccountingPrintScreens.xml (original)
+++ ofbiz/trunk/applications/accounting/widget/AccountingPrintScreens.xml Fri Nov 13 02:16:54 2009
@@ -100,4 +100,21 @@
             </fail-widgets>
         </section>
     </screen>
-</screens>
\ No newline at end of file
+    <screen name="PrintInvoices">
+        <section>
+            <actions>
+                <property-map resource="AccountingUiLabels" map-name="uiLabelMap" global="true"/>
+                <property-map resource="ProductUiLabels" map-name="uiLabelMap" global="true"/>
+                <property-map resource="PartyUiLabels" map-name="uiLabelMap" global="true"/>
+                <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
+                <set field="invoiceIds" from-field="parameters.invoiceIds" type="List"/>
+                <script location="component://accounting/webapp/accounting/WEB-INF/actions/invoice/PrintInvoices.groovy"/>
+            </actions>
+            <widgets>
+               <platform-specific>
+                    <xsl-fo><html-template location="component://accounting/webapp/accounting/invoice/PrintInvoices.fo.ftl"/></xsl-fo>
+                </platform-specific>
+            </widgets>
+        </section>
+    </screen>
+</screens>