You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by nm...@apache.org on 2018/07/03 21:58:32 UTC
svn commit: r1835028 - in /ofbiz/ofbiz-framework/trunk/applications:
accounting/groovyScripts/invoice/
accounting/src/main/java/org/apache/ofbiz/accounting/invoice/
accounting/template/invoice/ accounting/widget/ datamodel/entitydef/
Author: nmalin
Date: Tue Jul 3 21:58:32 2018
New Revision: 1835028
URL: http://svn.apache.org/viewvc?rev=1835028&view=rev
Log:
Improved: Resolve shipping address from Invoice
(OFBIZ-10249)
In some country (like european) you need to indicate on your sales invoice where you ship the finish good product related.
To help this case, I added a new worker function (InvoiceWorker.getShippingAddress) to found information from an invoice and improve the generic EditInvoice.groovy and the invoice ftl template to display it as example.
To homogenize postal address displaying with order I use the subscreen PartyScreens.xml#postalAddressPdfFormatter on the invoice ftl template
Modified:
ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/invoice/EditInvoice.groovy
ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java
ofbiz/ofbiz-framework/trunk/applications/accounting/template/invoice/InvoiceReportContactMechs.fo.ftl
ofbiz/ofbiz-framework/trunk/applications/accounting/widget/AccountingPrintScreens.xml
ofbiz/ofbiz-framework/trunk/applications/datamodel/entitydef/accounting-entitymodel.xml
Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/invoice/EditInvoice.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/invoice/EditInvoice.groovy?rev=1835028&r1=1835027&r2=1835028&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/invoice/EditInvoice.groovy (original)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/invoice/EditInvoice.groovy Tue Jul 3 21:58:32 2018
@@ -49,6 +49,8 @@ if (invoice) {
context.billToParty = billToParty
sendingParty = InvoiceWorker.getSendFromParty(invoice)
context.sendingParty = sendingParty
+ shippingAddress = InvoiceWorker.getShippingAddress(invoice)
+ context.shippingAddress = shippingAddress
if (currency && !invoice.getString("currencyUomId").equals(currency)) {
conversionRate = InvoiceWorker.getInvoiceCurrencyConversionRate(invoice)
Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java?rev=1835028&r1=1835027&r2=1835028&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/java/org/apache/ofbiz/accounting/invoice/InvoiceWorker.java Tue Jul 3 21:58:32 2018
@@ -316,6 +316,31 @@ public final class InvoiceWorker {
}
/**
+ * Method to obtain the shipping address from an invoice
+ * first resolve from InvoiceContactMech and if not found try from Shipment if present
+ * @param invoice GenericValue object of the Invoice
+ * @return GenericValue object of the PostalAddress
+ */
+ public static GenericValue getShippingAddress(GenericValue invoice) {
+ GenericValue postalAddress = getInvoiceAddressByType(invoice, "SHIPPING_LOCATION", false);
+ Delegator delegator = invoice.getDelegator();
+ if (postalAddress == null) {
+ try {
+ GenericValue shipmentView = EntityQuery.use(delegator).from("InvoiceItemAndShipmentView")
+ .where("invoiceId", invoice.get("invoiceId")).queryFirst();
+ if (shipmentView != null) {
+ GenericValue shipment = EntityQuery.use(delegator).from("Shipment")
+ .where("shipmentId", shipmentView.get("shipmentId")).queryOne();
+ postalAddress = shipment.getRelatedOne("DestinationPostalAddress");
+ }
+ } catch (GenericEntityException e) {
+ Debug.logError("Touble getting ContactMech entity from OISG", module);
+ }
+ }
+ return postalAddress;
+ }
+
+ /**
* Method to obtain the billing address for an invoice
* @param invoice GenericValue object of the Invoice
* @return GenericValue object of the PostalAddress
Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/template/invoice/InvoiceReportContactMechs.fo.ftl
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/template/invoice/InvoiceReportContactMechs.fo.ftl?rev=1835028&r1=1835027&r2=1835028&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/template/invoice/InvoiceReportContactMechs.fo.ftl (original)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/template/invoice/InvoiceReportContactMechs.fo.ftl Tue Jul 3 21:58:32 2018
@@ -19,26 +19,24 @@ under the License.
<#escape x as x?xml>
<fo:table table-layout="fixed" width="100%" space-after="0.3in">
<fo:table-column column-width="3.5in"/>
+ <fo:table-column column-width="3.5in"/>
<fo:table-body>
<fo:table-row >
<fo:table-cell>
<fo:block>_______________________________</fo:block>
</fo:table-cell>
+ <fo:table-cell>
+ <fo:block>_______________________________</fo:block>
+ </fo:table-cell>
</fo:table-row>
<fo:table-row >
<fo:table-cell>
<fo:block>${uiLabelMap.CommonTo}: </fo:block>
- <#if billingAddress?has_content>
+ <#if billingAddress??>
<#assign billToPartyNameResult = dispatcher.runSync("getPartyNameForDate", Static["org.apache.ofbiz.base.util.UtilMisc"].toMap("partyId", billToParty.partyId, "compareDate", invoice.invoiceDate, "userLogin", userLogin))/>
<fo:block>${billToPartyNameResult.fullName?default(billingAddress.toName)?default("Billing Name Not Found")}</fo:block>
- <#if billingAddress.attnName??>
- <fo:block>${billingAddress.attnName}</fo:block>
- </#if>
- <fo:block>${billingAddress.address1!}</fo:block>
- <#if billingAddress.address2??>
- <fo:block>${billingAddress.address2}</fo:block>
- </#if>
- <fo:block>${billingAddress.city!} ${billingAddress.stateProvinceGeoId!} ${billingAddress.postalCode!}</fo:block>
+ ${setContextField("postalAddress", billingAddress)}
+ ${screens.render("component://party/widget/partymgr/PartyScreens.xml#postalAddressPdfFormatter")}
<#if billToPartyTaxId?has_content>
<fo:block>${uiLabelMap.PartyTaxId}: ${billToPartyTaxId}</fo:block>
</#if>
@@ -46,6 +44,16 @@ under the License.
<fo:block>${uiLabelMap.AccountingNoGenBilAddressFound}${billToParty.partyId}</fo:block>
</#if>
</fo:table-cell>
+ <fo:table-cell>
+ <#if shippingAddress??>
+ <fo:block>${uiLabelMap.OrderShipTo}: </fo:block>
+ ${setContextField("postalAddress", shippingAddress)}
+ ${screens.render("component://party/widget/partymgr/PartyScreens.xml#postalAddressPdfFormatter")}
+ <#else>
+ <fo:block/>
+ </#if>
+ </fo:table-cell>
+
</fo:table-row>
</fo:table-body>
</fo:table>
Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/widget/AccountingPrintScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/widget/AccountingPrintScreens.xml?rev=1835028&r1=1835027&r2=1835028&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/widget/AccountingPrintScreens.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/widget/AccountingPrintScreens.xml Tue Jul 3 21:58:32 2018
@@ -30,6 +30,7 @@ under the License.
<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="OrderUiLabels" map-name="uiLabelMap" global="true"/>
<property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
<set field="titleProperty" value="AccountingInvoice"/>
<script location="component://accounting/groovyScripts/invoice/EditInvoice.groovy"/>
Modified: ofbiz/ofbiz-framework/trunk/applications/datamodel/entitydef/accounting-entitymodel.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/datamodel/entitydef/accounting-entitymodel.xml?rev=1835028&r1=1835027&r2=1835028&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/datamodel/entitydef/accounting-entitymodel.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/datamodel/entitydef/accounting-entitymodel.xml Tue Jul 3 21:58:32 2018
@@ -1707,6 +1707,24 @@ under the License.
<key-map field-name="invoiceItemSeqId"/>
</view-link>
</view-entity>
+ <view-entity entity-name="InvoiceItemAndShipmentView" package-name="org.apache.ofbiz.accounting.invoice">
+ <member-entity entity-alias="INVITM" entity-name="InvoiceItem"/>
+ <member-entity entity-alias="ORDBIL" entity-name="OrderItemBilling"/>
+ <member-entity entity-alias="ITMISS" entity-name="ItemIssuance"/>
+ <member-entity entity-alias="SHIP" entity-name="Shipment"/>
+ <alias-all entity-alias="INVITM"/>
+ <alias-all entity-alias="SHIP"/>
+ <view-link entity-alias="INVITM" rel-entity-alias="ORDBIL">
+ <key-map field-name="invoiceId"/>
+ <key-map field-name="invoiceItemSeqId"/>
+ </view-link>
+ <view-link entity-alias="ORDBIL" rel-entity-alias="ITMISS">
+ <key-map field-name="itemIssuanceId"/>
+ </view-link>
+ <view-link entity-alias="ITMISS" rel-entity-alias="SHIP">
+ <key-map field-name="shipmentId"/>
+ </view-link>
+ </view-entity>
<view-entity entity-name="InvoiceContentAndInfo"
package-name="org.apache.ofbiz.accounting.invoice"