Author: hansbak
Date: Thu Jul 11 03:14:30 2013
New Revision: 1502093
URL: http://svn.apache.org/r1502093
Log:
add a csv import/export invoices at an organizational level with
partyid and productid translation functions, more imports/exports
will follow
Added:
ofbiz/trunk/framework/base/lib/commons/commons-csv-1.0.jar (with props)
Modified:
ofbiz/trunk/.classpath
ofbiz/trunk/LICENSE
ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml
ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml
ofbiz/trunk/applications/accounting/data/DemoPaymentsInvoices.xml
ofbiz/trunk/applications/accounting/entitydef/entitymodel_reports.xml
ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java
ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml
ofbiz/trunk/applications/accounting/widget/GlSetupForms.xml
ofbiz/trunk/applications/accounting/widget/GlSetupScreens.xml
ofbiz/trunk/framework/common/config/CommonUiLabels.xml
Modified: ofbiz/trunk/.classpath
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/.classpath?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
--- ofbiz/trunk/.classpath (original)
+++ ofbiz/trunk/.classpath Thu Jul 11 03:14:30 2013
@@ -83,6 +83,7 @@
<classpathentry kind="lib"
path="framework/base/lib/commons/commons-pool-1.3.jar"/>
<classpathentry kind="lib"
path="framework/base/lib/commons/commons-primitives-1.0.jar"/>
<classpathentry kind="lib"
path="framework/base/lib/commons/commons-validator-1.4.0.jar"/>
+ <classpathentry kind="lib"
path="framework/base/lib/commons/commons-csv-1.0.jar"/>
<classpathentry kind="lib"
path="framework/base/lib/j2eespecs/geronimo-activation_1.0.2_spec-1.0.jar"/>
<classpathentry kind="lib"
path="framework/base/lib/j2eespecs/geronimo-j2ee-connector_1.5_spec-1.0.jar"/>
<classpathentry kind="lib"
path="framework/base/lib/j2eespecs/geronimo-jaxr_1.0_spec-1.0.jar"/>
Modified: ofbiz/trunk/LICENSE
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
--- ofbiz/trunk/LICENSE (original)
+++ ofbiz/trunk/LICENSE Thu Jul 11 03:14:30 2013
@@ -44,6 +44,7 @@ framework/base/lib/commons/commons-cli-1
framework/base/lib/commons/commons-codec-1.6.jar
framework/base/lib/commons/commons-collections-3.2.1.jar
framework/base/lib/commons/commons-compress-1.4.1.jar
+framework/base/lib/commons/commons-csv-1.0.jar
framework/base/lib/commons/commons-digester3-3.2.jar
framework/base/lib/commons/commons-discovery-0.4.jar
framework/base/lib/commons/commons-el-1.0.jar
@@ -2729,4 +2730,5 @@ This package also includes the following
donated by SyncRO Soft Ltd., the publishers of the oXygen XML
Editor.
* Cosmetic improvements provided by OpenStack.
-Webhelp for DocBook was developed as a Google Summer of Code
project. August 2010
\ No newline at end of file
+Webhelp for DocBook was developed as a Google Summer of Code
project. August 2010
+
Modified:
ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml
(original)
+++ ofbiz/trunk/applications/accounting/config/AccountingUiLabels.xml
Thu Jul 11 03:14:30 2013
@@ -5010,6 +5010,9 @@
<value
xml:lang="zh">åºå®èµäº§æ°æ®ä¸çææä½¿ç¨å¯¿å½ç»æä¸ºç©ºã</value>
<value
xml:lang="zh_TW">åºå®è³ç¢è³æä¸çææä½¿ç¨å£½å½çµæçºç©ºã</value>
</property>
+ <property key="AccountingExportInvoices">
+ <value xml:lang="en">Export Invoices</value>
+ </property>
<property key="AccountingExpenses">
<value xml:lang="de">Aufwendungen</value>
<value xml:lang="en">Expenses</value>
Modified:
ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml
(original)
+++ ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml
Thu Jul 11 03:14:30 2013
@@ -1087,4 +1087,7 @@ under the License.
<CustomMethod customMethodId="STR_LINE_DEP_FORMULA"
customMethodTypeId="DEPRECIATION_FORMULA"
customMethodName="straightLineDepreciation" description="Straight
Line depreciatiion algorithm for fixed asset((purchaseCost -
salvageCost)/expectedLifeInYears)"/>
<CustomMethod customMethodId="DBL_DECL_DEP_FORMULA"
customMethodTypeId="DEPRECIATION_FORMULA"
customMethodName="doubleDecliningBalanceDepreciation"
description="Double decline depreciatiion algorithm for fixed
asset((NetBookValue - salvageCost)*2/remainingLifeInYears)"/>
+ <!-- invoice export replacement Id types -->
+ <GoodIdentificationType description="replacement value for
partyId in the invoice export function in accounting"
goodIdentificationTypeId="INVOICE_EXPORT"/>
+ <PartyIdentificationType description="replacement value for
partyId in the invoice export function in accounting"
partyIdentificationTypeId="INVOICE_EXPORT"/>
</entity-engine-xml>
Modified:
ofbiz/trunk/applications/accounting/data/DemoPaymentsInvoices.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/data/DemoPaymentsInvoices.xml?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/data/DemoPaymentsInvoices.xml
(original)
+++ ofbiz/trunk/applications/accounting/data/DemoPaymentsInvoices.xml
Thu Jul 11 03:14:30 2013
@@ -224,4 +224,7 @@ under the License.
partyId="Company" transactionDate="2009-07-18
00:00:01.000" entryDate="2009-08-11 12:28:45.315"
performedByPartyId="admin" statusId="FINACT_TRNS_CREATED"
paymentId="8002"/>
<Payment paymentId="8002" finAccountTransId="9104"/>
+ <!-- invoice export demo data for replacement id's -->
+ <GoodIdentification goodIdentificationTypeId="INVOICE_EXPORT"
idValue="GZ-2644-replaced" productId="GZ-2644"/>
+ <PartyIdentification idValue="DemoCustomer2"
partyId="DemoCustomer" partyIdentificationTypeId="INVOICE_EXPORT"/>
</entity-engine-xml>
Modified:
ofbiz/trunk/applications/accounting/entitydef/entitymodel_reports.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/entitydef/entitymodel_reports.xml?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
---
ofbiz/trunk/applications/accounting/entitydef/entitymodel_reports.xml
(original)
+++
ofbiz/trunk/applications/accounting/entitydef/entitymodel_reports.xml
Thu Jul 11 03:14:30 2013
@@ -77,4 +77,51 @@ under the License.
<key-map field-name="productId"/>
</view-link>
</view-entity>
+
+ <view-entity entity-name="InvoiceExport"
package-name="org.ofbiz.accounting.reports">
+ <member-entity entity-alias="INV" entity-name="Invoice"/>
+ <member-entity entity-alias="ITM" entity-name="InvoiceItem"/>
+ <member-entity entity-alias="PFR"
entity-name="PartyIdentification"/>
+ <member-entity entity-alias="PTO"
entity-name="PartyIdentification"/>
+ <member-entity entity-alias="GI"
entity-name="GoodIdentification"/>
+ <alias entity-alias="INV" name="invoiceId" />
+ <alias entity-alias="INV" name="invoiceDate"/>
+ <alias entity-alias="INV" name="invoiceTypeId"/>
+ <alias entity-alias="INV" name="description"/>
+ <alias entity-alias="INV" name="partyIdFrom"/>
+ <alias entity-alias="PFR" name="partyIdFromTrans"
field="idValue"/>
+ <alias entity-alias="INV" name="partyId"/>
+ <alias entity-alias="PTO" name="partyIdTrans" field="idValue"/>
+ <alias entity-alias="INV" name="currencyUomId"/>
+ <alias entity-alias="INV" name="referenceNum"/>
+ <alias entity-alias="ITM" name="invoiceItemSeqId"/>
+ <alias entity-alias="ITM" name="invoiceItemTypeId"/>
+ <alias entity-alias="ITM" name="itemDescription"
field="description"/>
+ <alias entity-alias="ITM" name="productId"/>
+ <alias entity-alias="GI" name="productIdTrans"
field="idValue"/>
+ <alias entity-alias="ITM" name="quantity"/>
+ <alias entity-alias="ITM" name="amount"/>
+ <view-link entity-alias="INV" rel-entity-alias="ITM"
rel-optional="true">
+ <key-map field-name="invoiceId"/>
+ </view-link>
+ <view-link entity-alias="INV" rel-entity-alias="PFR"
rel-optional="true">
+ <key-map field-name="partyIdFrom"
rel-field-name="partyId"/>
+ <entity-condition>
+ <condition-expr entity-alias="PFR"
field-name="partyIdentificationTypeId" value="INVOICE_EXPORT"/>
+ </entity-condition>
+ </view-link>
+ <view-link entity-alias="INV" rel-entity-alias="PTO"
rel-optional="true">
+ <key-map field-name="partyId"/>
+ <entity-condition>
+ <condition-expr entity-alias="PTO"
field-name="partyIdentificationTypeId" value="INVOICE_EXPORT"/>
+ </entity-condition>
+ </view-link>
+ <view-link entity-alias="ITM" rel-entity-alias="GI"
rel-optional="true">
+ <key-map field-name="productId"/>
+ <entity-condition>
+ <condition-expr entity-alias="GI"
field-name="goodIdentificationTypeId"/>
+ </entity-condition>
+ </view-link>
+ </view-entity>
+
</entitymodel>
Modified:
ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
---
ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
(original)
+++
ofbiz/trunk/applications/accounting/servicedef/services_invoice.xml
Thu Jul 11 03:14:30 2013
@@ -430,5 +430,12 @@ under the License.
<attribute name="invoiceId" type="String" mode="IN"
optional="false"/>
<attribute name="isForeign" type="Boolean" mode="OUT"
optional="false"/>
</service>
+ <service name="importInvoice" engine="java"
+ location="org.ofbiz.accounting.invoice.InvoiceServices"
invoke="importInvoice" auth="true">
+ <description>Import an invoice with invoiceitems in csv
format</description>
+ <permission-service
service-name="acctgInvoicePermissionCheck" main-action="CREATE"/>
+ <attribute mode="INOUT" name="organizationPartyId"
type="String" optional="false"/>
+ <attribute mode="IN" name="uploadedFile"
type="java.nio.ByteBuffer" optional="true" />
+ </service>
</services>
Modified:
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
---
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java
(original)
+++
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java
Thu Jul 11 03:14:30 2013
@@ -18,7 +18,16 @@
*******************************************************************************/
package org.ofbiz.accounting.invoice;
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVFormat.CSVFormatBuilder;
+import org.apache.commons.csv.CSVRecord;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
import java.math.BigDecimal;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Iterator;
@@ -3334,5 +3343,164 @@ public class InvoiceServices {
return ServiceUtil.returnError(ee.getMessage());
}
}
+
+ public static Map<String, Object> importInvoice(DispatchContext
dctx, Map<String, Object> context) {
+ Delegator delegator = dctx.getDelegator();
+ LocalDispatcher dispatcher = dctx.getDispatcher();
+ GenericValue userLogin = (GenericValue)
context.get("userLogin");
+ ByteBuffer fileBytes = (ByteBuffer)
context.get("uploadedFile");
+ String organizationPartyId = (String)
context.get("organizationPartyId");
+ String encoding = System.getProperty("file.encoding");
+ String csvString =
Charset.forName(encoding).decode(fileBytes).toString();
+ final BufferedReader csvReader = new BufferedReader(new
StringReader(csvString));
+ final CSVFormatBuilder builder =
CSVFormat.newBuilder(',').withQuoteChar('"').withHeader();
+ CSVFormat fmt = builder.build();
+ List<String> errMsgs = FastList.newInstance();
+ List<String> newErrMsgs = FastList.newInstance();
+ String lastInvoiceId = null;
+ String currentInvoiceId = null;
+ String newInvoiceId = null;
+ int invoicesCreated = 0;
+
+ if (fileBytes == null) {
+ return ServiceUtil.returnError("Uploaded file data not
found");
+ }
+
+ try {
+ for(final CSVRecord rec : fmt.parse(csvReader)) {
+ currentInvoiceId = rec.get("invoiceId");
+ if (lastInvoiceId == null ||
!currentInvoiceId.equals(lastInvoiceId)) {
+ newInvoiceId = null;
+ Map<String, Object> invoice = UtilMisc.toMap(
+ "invoiceTypeId", rec.get("invoiceTypeId"),
+ "partyIdFrom", rec.get("partyIdFrom"),
+ "partyId", rec.get("partyId"),
+ "invoiceDate", rec.get("invoiceDate"),
+ "dueDate", rec.get("dueDate"),
+ "currencyUomId", rec.get("currencyUomId"),
+ "description", rec.get("description"),
+ "referenceNum", rec.get("referenceNum") +
" Imported: orginal InvoiceId: " + currentInvoiceId,
+ "userLogin", userLogin
+ );
+
+ // replace values if required
+ if
(UtilValidate.isNotEmpty(rec.get("partyIdFromTrans"))) {
+ invoice.put("partyIdFrom",
rec.get("partyIdFromTrans"));
+ }
+ if
(UtilValidate.isNotEmpty(rec.get("partyIdTrans"))) {
+ invoice.put("partyId",
rec.get("partyIdTrans"));
+ }
+
+ // invoice validation
+ try {
+ newErrMsgs = FastList.newInstance();
+ if
(UtilValidate.isEmpty(invoice.get("partyIdFrom"))) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": Mandatory Party Id From and Party Id From
Trans missing for invoice: " + currentInvoiceId);
+ } else if (delegator.findOne("Party",
UtilMisc.<String, Object>toMap("partyId",
invoice.get("partyIdFrom")), false) == null) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": partyIdFrom: " +
invoice.get("partyIdFrom") + " not found for invoice: " +
currentInvoiceId);
+ }
+ if
(UtilValidate.isEmpty(invoice.get("partyId"))) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": Mandatory Party Id and Party Id Trans
missing for invoice: " + currentInvoiceId);
+ } else if (delegator.findOne("Party",
UtilMisc.<String, Object>toMap("partyId", invoice.get("partyId")),
false) == null) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": partyId: " + invoice.get("partyId") + "
not found for invoice: " + currentInvoiceId);
+ }
+ if
(UtilValidate.isEmpty(invoice.get("invoiceTypeId"))) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": Mandatory Invoice Type missing for
invoice: " + currentInvoiceId);
+ } else if (delegator.findOne("InvoiceType",
UtilMisc.<String, Object>toMap("invoiceTypeId",
invoice.get("invoiceTypeId")), false) == null) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": InvoiceItem type id: " +
invoice.get("invoiceTypeId") + " not found for invoice: " +
currentInvoiceId);
+ }
+ GenericValue invoiceType =
delegator.findOne("InvoiceType", UtilMisc.<String,
Object>toMap("invoiceTypeId", invoice.get("invoiceTypeId")), false);
+ if
("PURCHASE_INVOICE".equals(invoiceType.getString("parentTypeId")) &&
!invoice.get("partyId").equals(organizationPartyId)) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": A purchase type invoice should have the
partyId 'To' being the organizationPartyId(=" + organizationPartyId +
")! however is " + invoice.get("partyId") +"! invoice: " +
currentInvoiceId);
+ }
+ if
("SALES_INVOICE".equals(invoiceType.getString("parentTypeId")) &&
!invoice.get("partyIdFrom").equals(organizationPartyId)) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": A sales type invoice should have the
partyId 'from' being the organizationPartyId(=" + organizationPartyId
+ ")! however is " + invoice.get("partyIdFrom") +"! invoice: " +
currentInvoiceId);
+ }
+
+
+ } catch (GenericEntityException e) {
+ Debug.logError("Valication checking problem
against database. due to " + e.getMessage(), module);
+ }
+
+ if (newErrMsgs.size() > 0) {
+ errMsgs.addAll(newErrMsgs);
+ } else {
+ Map<String, Object> invoiceResult = null;
+ try {
+ invoiceResult =
dispatcher.runSync("createInvoice", invoice);
+ } catch (GenericServiceException e) {
+ Debug.logError(e, module);
+ return
ServiceUtil.returnError(e.getMessage());
+ }
+ newInvoiceId = (String)
invoiceResult.get("invoiceId");
+ invoicesCreated++;
+ }
+ lastInvoiceId = currentInvoiceId;
+ }
+
+
+ if (newInvoiceId != null) {
+ Map<String, Object> invoiceItem = UtilMisc.toMap(
+ "invoiceId", newInvoiceId,
+ "invoiceItemSeqId",
rec.get("invoiceItemSeqId"),
+ "invoiceItemTypeId",
rec.get("invoiceItemTypeId"),
+ "productId", rec.get("productId"),
+ "description", rec.get("itemDescription"),
+ "amount", rec.get("amount"),
+ "quantity", rec.get("quantity"),
+ "userLogin", userLogin
+ );
+
+ if
(UtilValidate.isNotEmpty(rec.get("productIdTrans"))) {
+ invoiceItem.put("productId",
rec.get("productIdTrans"));
+ }
+ // invoice item validation
+ try {
+ newErrMsgs = FastList.newInstance();
+ if
(UtilValidate.isEmpty(invoiceItem.get("invoiceItemSeqId"))) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": Mandatory item sequence Id missing for
invoice: " + currentInvoiceId);
+ }
+ if
(UtilValidate.isEmpty(invoiceItem.get("invoiceItemTypeId"))) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": Mandatory invoice item type missing for
invoice: " + currentInvoiceId);
+ } else if
(delegator.findOne("InvoiceItemType", UtilMisc.<String,
Object>toMap("invoiceItemTypeId",
invoiceItem.get("invoiceItemTypeId")), false) == null) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": InvoiceItem Item type id: " +
invoiceItem.get("invoiceItemTypeId") + " not found for invoice: " +
currentInvoiceId + " Item seqId:" +
invoiceItem.get("invoiceItemSeqId"));
+ }
+ if
(UtilValidate.isEmpty(invoiceItem.get("productId")) &&
UtilValidate.isEmpty(invoiceItem.get("description"))) {
+ }
+ if
(UtilValidate.isNotEmpty(invoiceItem.get("productId")) &&
delegator.findOne("Product", UtilMisc.<String,
Object>toMap("productId", invoiceItem.get("productId")), false) ==
null) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": Product Id: " +
invoiceItem.get("productId") + " not found for invoice: " +
currentInvoiceId + " Item seqId:" +
invoiceItem.get("invoiceItemSeqId"));
+ }
+ if
(UtilValidate.isEmpty(invoiceItem.get("amount")) &&
UtilValidate.isEmpty(invoiceItem.get("quantity"))) {
+ newErrMsgs.add("Line number " +
rec.getRecordNumber() + ": Either or both quantity and amount is
required for invoice: " + currentInvoiceId + " Item seqId:" +
invoiceItem.get("invoiceItemSeqId"));
+ }
+ } catch (GenericEntityException e) {
+ Debug.logError("Validation checking problem
against database. due to " + e.getMessage(), module);
+ }
+
+ if (newErrMsgs.size() > 0) {
+ errMsgs.addAll(newErrMsgs);
+ } else {
+ try {
+ dispatcher.runSync("createInvoiceItem", invoiceItem);
+ } catch (GenericServiceException e) {
+ Debug.logError(e, module);
+ return
ServiceUtil.returnError(e.getMessage());
+ }
+ }
+ }
+ }
+
+ } catch (IOException e) {
+ Debug.logError(e, module);
+ return ServiceUtil.returnError(e.getMessage());
+ }
+
+ if (errMsgs.size() > 0) {
+ return ServiceUtil.returnError(errMsgs);
+ }
+ Map<String, Object> result =
ServiceUtil.returnSuccess(invoicesCreated + " new invoice(s) created");
+ result.put("organizationPartyId", organizationPartyId);
+ return result;
+ }
}
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=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
---
ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml
(original)
+++
ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml
Thu Jul 11 03:14:30 2013
@@ -753,6 +753,23 @@ under the License.
<security https="true" auth="true"/>
<response name="success" type="view"
value="ListGlAccountOrgCsv"/>
</request-map>
+
+ <!-- Import export -->
+ <request-map uri="ImportExport">
+ <security https="true" auth="true"/>
+ <response name="success" type="view" value="ImportExport"/>
+ </request-map>
+
+ <request-map uri="PartyAccountsExportInvoicesCsv.csv">
+ <security https="true" auth="true"/>
+ <response name="success" type="view"
value="PartyAccountsExportInvoicesCsv"/>
+ </request-map>
+ <request-map uri="uploadInvoice">
+ <security auth="true" https="true"/>
+ <event invoke="importInvoice" path="" type="service"/>
+ <response name="success" type="request" value="ImportExport"/>
+ <response name="error" type="view" value="ImportExport"/>
+ </request-map>
<!-- TO BE REMOVED
<request-map uri="EditGlobalGlAccountOrganizations"><security
https="true" auth="true"/><response name="success" type="view"
value="EditGlobalGlAccountOrganizations"/></request-map>
@@ -2768,6 +2785,10 @@ under the License.
<view-map name="ListGlAccountOrgPdf" type="screenfop"
page="component://accounting/widget/GlSetupScreens.xml#ListGlAccountOrgPdf"
content-type="application/pdf" encoding="none"/>
<view-map name="ListGlAccountOrgCsv" type="screencsv"
page="component://accounting/widget/GlSetupScreens.xml#ListGlAccountOrgCsv"
content-type="text/csv" encoding="none"/>
+ <!-- import export -->
+ <view-map name="ImportExport" type="screen"
page="component://accounting/widget/GlSetupScreens.xml#ImportExport"/>
+ <view-map name="PartyAccountsExportInvoicesCsv" type="screencsv"
page="component://accounting/widget/GlSetupScreens.xml#PartyAccountsExportInvoicesCsv"
content-type="text/csv" encoding="none"/>
+
<!-- Manual Credit Card Transaction -->
<view-map name="FindGatewayResponses"
page="component://accounting/widget/TransactionScreens.xml#FindGatewayResponses"
type="screen"/>
<view-map name="ViewGatewayResponse"
page="component://accounting/widget/TransactionScreens.xml#ViewGatewayResponse"
type="screen"/>
Modified: ofbiz/trunk/applications/accounting/widget/GlSetupForms.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/GlSetupForms.xml?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/widget/GlSetupForms.xml
(original)
+++ ofbiz/trunk/applications/accounting/widget/GlSetupForms.xml Thu
Jul 11 03:14:30 2013
@@ -34,6 +34,11 @@ under the License.
<parameter param-name="organizationPartyId"
from-field="partyId"/>
</hyperlink>
</field>
+ <field name="importexport" title=" "
use-when="hasBasicPermission" widget-style="buttontext">
+ <hyperlink target="ImportExport"
description="${uiLabelMap.CommonImportExport}">
+ <parameter param-name="organizationPartyId"
from-field="partyId"/>
+ </hyperlink>
+ </field>
</form>
<form name="ListGlAccountOrganization" list-name="listIt"
target="" title="" type="list" view-size="50"
@@ -71,6 +76,55 @@ under the License.
<field name="submitButton"
title="${uiLabelMap.AccountingNewCompany}"><submit
button-type="button"/></field>
</form>
+ <form name="ExportInvoice" type="single"
target="PartyAccountsExportInvoicesCsv.csv" title="" >
+ <field name="organizationPartyId"><hidden
value="${parameters.organizationPartyId}"/></field>
+ <field name="invoiceId"><lookup
target-form-name="LookupInvoice"/></field>
+ <field name="startDate"><date-time/></field>
+ <field name="submitButton"
title="${uiLabelMap.CommonSubmit}"><submit
button-type="button"/></field>
+ </form>
+
+ <form name="PartyAccountsExportInvoicesCsv" list-name="listIt"
target="" title="" type="list" view-size="99999"
+ odd-row-style="alternate-row"
header-row-style="header-row-2" default-table-style="basic-table
hover-bar" paginate="false">
+ <actions>
+ <entity-condition entity-name="InvoiceExport">
+ <condition-list combine="and">
+ <condition-list combine="or">
+ <condition-expr field-name="partyIdFrom"
from-field="organizationPartyId" operator="equals"/>
+ <condition-expr field-name="partyId"
from-field="organizationPartyId" operator="equals"/>
+ </condition-list>
+ <condition-expr field-name="invoiceDate"
operator="greater-equals" from-field="parameters.startDate"
ignore-if-empty="true"/>
+ <condition-expr field-name="invoiceId"
operator="equals" from-field="parameters.invoiceId"
ignore-if-empty="true"/>
+ </condition-list>
+ <order-by field-name="invoiceId"/>
+ </entity-condition>
+ </actions>
+ <field name="organizationPartyId"><hidden
value="${organizationPartyId}"/></field>
+ <field name="invoiceId" title="invoiceId"><display/></field>
+ <field name="invoiceTypeId"
title="invoiceTypeId"><display/></field>
+ <field name="invoiceDate"
title="invoiceDate"><display/></field>
+ <field name="dueDate" title="dueDate"><display/></field>
+ <field name="partyIdFrom"
title="partyIdFrom"><display/></field>
+ <field name="partyIdFromTrans"
title="partyIdFromTrans"><display/></field>
+ <field name="partyId" title="partyId"><display/></field>
+ <field name="partyIdTrans"
title="partyIdTrans"><display/></field>
+ <field name="currencyUomId"
title="currencyUomId"><display/></field>
+ <field name="description"
title="description"><display/></field>
+ <field name="referenceNum"
title="referenceNum"><display/></field>
+ <field name="invoiceItemSeqId"
title="invoiceItemSeqId"><display/></field>
+ <field name="invoiceItemTypeId"
title="invoiceItemTypeId"><display/></field>
+ <field name="productId" title="productId"><display/></field>
+ <field name="productIdTrans"
title="productIdTrans"><display/></field>
+ <field name="itemDescription"
title="itemDescription"><display/></field>
+ <field name="quantity" title="quantity"><display/></field>
+ <field name="amount" title="amount"><display/></field>
+ </form>
+
+ <form name="ImportInvoice" type="upload" target="uploadInvoice"
title="" >
+ <field name="organizationPartyId"><hidden
value="${parameters.organizationPartyId}"/></field>
+ <field name="uploadedFile"><file/></field>
+ <field name="submitButton"
title="${uiLabelMap.CommonUpload}"><submit
button-type="button"/></field>
+ </form>
+
<form name="AssignGlAccount" type="single"
target="createGlAccountOrganization" title="" default-map-name="account"
header-row-style="header-row"
default-table-style="basic-table">
<field name="organizationPartyId"><hidden/></field>
Modified: ofbiz/trunk/applications/accounting/widget/GlSetupScreens.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/GlSetupScreens.xml?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
--- ofbiz/trunk/applications/accounting/widget/GlSetupScreens.xml
(original)
+++ ofbiz/trunk/applications/accounting/widget/GlSetupScreens.xml Thu
Jul 11 03:14:30 2013
@@ -51,7 +51,6 @@ under the License.
<screen name="ListCompanies">
<section>
<actions>
- <property-map resource="AccountingUiLabels"
map-name="uiLabelMap" global="true"/>
<set field="titleProperty"
value="AccountingAvailableInternalOrganizations"/>
<set field="headerItem" value="companies"/>
<set field="labelTitleProperty"
value="${uiLabelMap.AccountingAvailableInternalOrganizations}"/>
@@ -80,7 +79,6 @@ under the License.
<screen name="AddCompany">
<section>
<actions>
- <property-map resource="AccountingUiLabels"
map-name="uiLabelMap" global="true"/>
<set field="titleProperty"
value="AccountingNewCompany"/>
</actions>
<widgets>
@@ -94,6 +92,32 @@ under the License.
</widgets>
</section>
</screen>
+ <screen name="ImportExport">
+ <section>
+ <actions>
+ <set field="titleProperty" value="CommonImportExport"/>
+ <entity-one entity-name="PartyGroup"
value-field="partyGroup">
+ <field-map field-name="partyId"
from-field="parameters.organizationPartyId"/>
+ </entity-one>
+ </actions>
+ <widgets>
+ <decorator-screen name="main-decorator"
location="${parameters.mainDecoratorLocation}">
+ <decorator-section name="body">
+ <screenlet
title="${uiLabelMap.AccountingInvoice}
${uiLabelMap.CommonImportExport} ${uiLabelMap.CommonFor}:
${partyGroup.groupName} [${parameters.organizationPartyId}]">
+ <container style="lefthalf">
+ <label
style="h2">${uiLabelMap.CommonImport}</label>
+ <include-form name="ImportInvoice"
location="component://accounting/widget/GlSetupForms.xml"/>
+ </container>
+ <container style="righthalf">
+ <label
style="h2">${uiLabelMap.CommonExport}</label>
+ <include-form name="ExportInvoice"
location="component://accounting/widget/GlSetupForms.xml"/>
+ </container>
+ </screenlet>
+ </decorator-section>
+ </decorator-screen>
+ </widgets>
+ </section>
+ </screen>
<screen name="ListGlAccountOrganization">
<section>
<actions>
@@ -559,6 +583,18 @@ under the License.
</widgets>
</section>
</screen>
+ <screen name="PartyAccountsExportInvoicesCsv">
+ <section>
+ <actions>
+ <property-map resource="CommonUiLabels"
map-name="uiLabelMap" global="true"/>
+ <property-map resource="AccountingUiLabels"
map-name="uiLabelMap" global="true"/>
+ <set field="organizationPartyId"
from-field="parameters.organizationPartyId"/>
+ </actions>
+ <widgets>
+ <include-form
name="PartyAccountsExportInvoicesCsv"
location="component://accounting/widget/GlSetupForms.xml"/>
+ </widgets>
+ </section>
+ </screen>
<screen name="FindGlAccountCategory">
<section>
<actions>
Added: ofbiz/trunk/framework/base/lib/commons/commons-csv-1.0.jar
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/lib/commons/commons-csv-1.0.jar?rev=1502093&view=auto
==============================================================================
Binary file - no diff available.
Propchange: ofbiz/trunk/framework/base/lib/commons/commons-csv-1.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: ofbiz/trunk/framework/common/config/CommonUiLabels.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/config/CommonUiLabels.xml?rev=1502093&r1=1502092&r2=1502093&view=diff
==============================================================================
--- ofbiz/trunk/framework/common/config/CommonUiLabels.xml (original)
+++ ofbiz/trunk/framework/common/config/CommonUiLabels.xml Thu Jul 11
03:14:30 2013
@@ -5166,6 +5166,12 @@
<value xml:lang="vi">Ảnh</value>
<value xml:lang="zh">å¾ç</value>
</property>
+ <property key="CommonImport">
+ <value xml:lang="en">Import</value>
+ </property>
+ <property key="CommonImportExport">
+ <value xml:lang="en">Import/Export</value>
+ </property>
<property key="CommonIn">
<value xml:lang="ar">داخÙ</value>
<value xml:lang="cs">V</value>