details: /erp/devel/pi/rev/fe5026297cf9
changeset: 7108:fe5026297cf9
user: Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date: Wed Apr 21 19:39:17 2010 +0200
summary: Fixes 0013065: Reconciliation Psted button failing
details: /erp/devel/pi/rev/9ecddaf2a817
changeset: 7109:9ecddaf2a817
user: Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date: Thu Apr 22 00:34:17 2010 +0200
summary: Fixes bug 0013066: Accounting process fails
diffstat:
src/org/openbravo/erpCommon/ad_forms/AcctServer.java | 1 +
src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java | 61 +++++-
src/org/openbravo/erpCommon/ad_forms/DocFINPayment.java | 56 ++--
src/org/openbravo/erpCommon/ad_forms/DocFINReconciliation.java | 103
+++++----
4 files changed, 142 insertions(+), 79 deletions(-)
diffs (truncated from 337 to 300 lines):
diff -r 7e8895c44dea -r 9ecddaf2a817
src/org/openbravo/erpCommon/ad_forms/AcctServer.java
--- a/src/org/openbravo/erpCommon/ad_forms/AcctServer.java Wed Apr 21
22:04:36 2010 +0200
+++ b/src/org/openbravo/erpCommon/ad_forms/AcctServer.java Thu Apr 22
00:34:17 2010 +0200
@@ -550,6 +550,7 @@
log4j.warn("AcctServer - Post -Cannot lock Document - ignored: " +
tableName + "_ID="
+ strClave);
setStatus(STATUS_DocumentLocked); // Status locked document
+ this.setMessageResult(conn, vars, STATUS_DocumentLocked, "Error");
return false;
} else
AcctServerData.delete(connectionProvider, AD_Table_ID, Record_ID);
diff -r 7e8895c44dea -r 9ecddaf2a817
src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java
--- a/src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java Wed Apr
21 22:04:36 2010 +0200
+++ b/src/org/openbravo/erpCommon/ad_forms/DocFINFinAccTransaction.java Thu Apr
22 00:34:17 2010 +0200
@@ -86,10 +86,8 @@
// If payment exists the payment details are loaded, if not the GLItem
info is loaded
if (payment != null)
return loadLinesPaymentDetailsFieldProvider(transaction);
- else if (transaction.getGLItem() != null)
+ else
return loadLinesGLItemFieldProvider(transaction);
- else
- return null;
}
public FieldProviderFactory[] loadLinesPaymentDetailsFieldProvider(
@@ -155,7 +153,8 @@
FieldProviderFactory.setField(data[0], "FIN_Finacc_Transaction_ID",
transaction.getId());
FieldProviderFactory.setField(data[0], "AD_Client_ID",
transaction.getClient().getId());
FieldProviderFactory.setField(data[0], "adOrgId",
transaction.getOrganization().getId());
- FieldProviderFactory.setField(data[0], "cGlItemId",
transaction.getGLItem().getId());
+ FieldProviderFactory.setField(data[0], "cGlItemId",
+ transaction.getGLItem() != null ? transaction.getGLItem().getId() :
"");
FieldProviderFactory.setField(data[0], "DepositAmount",
transaction.getDepositAmount()
.toString());
FieldProviderFactory.setField(data[0], "PaymentAmount",
transaction.getPaymentAmount()
@@ -280,9 +279,14 @@
fact.createLine(line, getAccountFee(as, transaction.getAccount(), conn),
C_Currency_ID, line
.getPaymentAmount(), line.getDepositAmount(), Fact_Acct_Group_ID,
nextSeqNo(SeqNo),
DocumentType, conn);
- fact.createLine(line, getWithdrawalAccount(as, transaction.getAccount(),
conn), C_Currency_ID,
- line.getPaymentAmount(), line.getDepositAmount(), Fact_Acct_Group_ID,
nextSeqNo(SeqNo),
- DocumentType, conn);
+ if (!getDocumentReconciliationConfirmation(conn, transaction.getAccount()))
+ fact.createLine(line, getWithdrawalAccount(as, transaction.getAccount(),
conn),
+ C_Currency_ID, line.getDepositAmount(), line.getPaymentAmount(),
Fact_Acct_Group_ID,
+ nextSeqNo(SeqNo), DocumentType, conn);
+ else
+ fact.createLine(line, getAccountReconciliation(conn,
transaction.getAccount(), as),
+ C_Currency_ID, line.getDepositAmount(), line.getPaymentAmount(),
Fact_Acct_Group_ID,
+ nextSeqNo(SeqNo), DocumentType, conn);
SeqNo = "0";
return fact;
}
@@ -351,6 +355,25 @@
return null;
}
+ public boolean getDocumentReconciliationConfirmation(ConnectionProvider conn,
+ FIN_FinancialAccount financialAccount) {
+ // Checks if this step (Reconciliation) is configured to generate
accounting for the
+ // selected financial account
+ boolean confirmation = false;
+ boolean wasAdministrator =
OBContext.getOBContext().setInAdministratorMode(true);
+ try {
+ List<FIN_FinancialAccountAccounting> accounts = financialAccount
+ .getFINFinancialAccountAcctList();
+ for (FIN_FinancialAccountAccounting account : accounts) {
+ if (account.getDebitAccount() != null)
+ confirmation = true;
+ }
+ } finally {
+ OBContext.getOBContext().setInAdministratorMode(wasAdministrator);
+ }
+ return confirmation;
+ }
+
public boolean getDocumentPaymentConfirmation(ConnectionProvider conn,
FIN_Payment payment) {
// Checks if this step (Make receive payment) is configured to generate
accounting for the
// selected financial account
@@ -559,4 +582,28 @@
return account;
}
+ public Account getAccountReconciliation(ConnectionProvider conn,
FIN_FinancialAccount finAccount,
+ AcctSchema as) throws ServletException {
+ boolean wasAdministrator =
OBContext.getOBContext().setInAdministratorMode(true);
+ Account account = null;
+ try {
+ OBCriteria<FIN_FinancialAccountAccounting> accounts =
OBDal.getInstance().createCriteria(
+ FIN_FinancialAccountAccounting.class);
+
accounts.add(Expression.eq(FIN_FinancialAccountAccounting.PROPERTY_ACCOUNT,
finAccount));
+
accounts.add(Expression.eq(FIN_FinancialAccountAccounting.PROPERTY_ACCOUNTINGSCHEMA,
OBDal
+
.getInstance().get(org.openbravo.model.financialmgmt.accounting.coa.AcctSchema.class,
+ as.m_C_AcctSchema_ID)));
+
accounts.add(Expression.eq(FIN_FinancialAccountAccounting.PROPERTY_ACTIVE,
true));
+ accounts.setFilterOnReadableClients(false);
+ accounts.setFilterOnReadableOrganization(false);
+ List<FIN_FinancialAccountAccounting> accountList = accounts.list();
+ if (accountList == null || accountList.size() == 0)
+ return null;
+ account = new Account(conn,
accountList.get(0).getDebitAccount().getId());
+ } finally {
+ OBContext.getOBContext().setInAdministratorMode(wasAdministrator);
+ }
+ return account;
+ }
+
}
\ No newline at end of file
diff -r 7e8895c44dea -r 9ecddaf2a817
src/org/openbravo/erpCommon/ad_forms/DocFINPayment.java
--- a/src/org/openbravo/erpCommon/ad_forms/DocFINPayment.java Wed Apr 21
22:04:36 2010 +0200
+++ b/src/org/openbravo/erpCommon/ad_forms/DocFINPayment.java Thu Apr 22
00:34:17 2010 +0200
@@ -62,7 +62,7 @@
public boolean loadDocumentDetails(FieldProvider[] data, ConnectionProvider
conn) {
DateDoc = data[0].getField("PaymentDate");
- Amounts[0] = data[0].getField("AMOUNT");
+ Amounts[0] = data[0].getField("Amount");
loadDocumentType();
p_lines = loadLines();
return true;
@@ -130,6 +130,8 @@
// Select specific definition
String strClassname = "";
final StringBuilder whereClause = new StringBuilder();
+ Fact fact = new Fact(this, as, Fact.POST_Actual);
+ String Fact_Acct_Group_ID = SequenceIdData.getUUID();
boolean wasAdministrator =
OBContext.getOBContext().setInAdministratorMode(true);
try {
whereClause.append(" as astdt ");
@@ -168,36 +170,34 @@
log4j.error("Error while creating new instance for
DocFINPaymentTemplate - ", e);
}
}
+
+ for (int i = 0; p_lines != null && i < p_lines.length; i++) {
+ DocLine_FINPayment line = (DocLine_FINPayment) p_lines[i];
+
+ boolean isReceipt = DocumentType.equals("ARR");
+ boolean isPrepayment = line.getIsPrepayment().equals("Y");
+
+ String bpAmount = line.getAmount();
+ if (line.WriteOffAmt != null && !line.WriteOffAmt.equals("")
+ && !line.WriteOffAmt.equals("0")) {
+ fact.createLine(line,
getAccount(AcctServer.ACCTTYPE_WriteOffDefault, as, conn),
+ C_Currency_ID, (isReceipt ? line.WriteOffAmt : ""), (isReceipt ?
""
+ : line.WriteOffAmt), Fact_Acct_Group_ID, nextSeqNo(SeqNo),
DocumentType, conn);
+ bpAmount = new BigDecimal(bpAmount).add(new
BigDecimal(line.WriteOffAmt)).toString();
+ }
+ fact.createLine(line, getAccountBPartner(
+ (line.m_C_BPartner_ID == null || line.m_C_BPartner_ID.equals(""))
? this.C_BPartner_ID
+ : line.m_C_BPartner_ID, as, isReceipt, isPrepayment, conn),
C_Currency_ID,
+ (isReceipt ? "" : bpAmount), (isReceipt ? bpAmount : ""),
Fact_Acct_Group_ID,
+ nextSeqNo(SeqNo), DocumentType, conn);
+ FIN_Payment payment = OBDal.getInstance().get(FIN_Payment.class,
Record_ID);
+ fact.createLine(line, getAccount(conn, payment.getAccount(), as,
isReceipt), C_Currency_ID,
+ (isReceipt ? line.getAmount() : ""), (isReceipt ? "" :
line.getAmount()),
+ Fact_Acct_Group_ID, "999999", DocumentType, conn);
+ }
} finally {
OBContext.getOBContext().setInAdministratorMode(wasAdministrator);
}
- Fact fact = new Fact(this, as, Fact.POST_Actual);
- String Fact_Acct_Group_ID = SequenceIdData.getUUID();
-
- for (int i = 0; p_lines != null && i < p_lines.length; i++) {
- DocLine_FINPayment line = (DocLine_FINPayment) p_lines[i];
-
- boolean isReceipt = DocumentType.equals("ARR");
- boolean isPrepayment = line.getIsPrepayment().equals("Y");
-
- fact.createLine(line, getAccountBPartner(
- (line.m_C_BPartner_ID == null || line.m_C_BPartner_ID.equals("")) ?
this.C_BPartner_ID
- : line.m_C_BPartner_ID, as, isReceipt, isPrepayment, conn),
C_Currency_ID,
- (isReceipt ? "" : line.getAmount()), (isReceipt ? line.getAmount() :
""),
- Fact_Acct_Group_ID, nextSeqNo(SeqNo), DocumentType, conn);
- FIN_Payment payment = OBDal.getInstance().get(FIN_Payment.class,
Record_ID);
- fact.createLine(line, getAccount(conn, payment.getAccount(), as,
isReceipt), C_Currency_ID,
- (isReceipt ? line.getAmount() : ""), (isReceipt ? "" :
line.getAmount()),
- Fact_Acct_Group_ID, "999999", DocumentType, conn);
-
- if (line.WriteOffAmt != null && !line.WriteOffAmt.equals("") &&
!line.WriteOffAmt.equals("0")) {
- fact.createLine(line, getAccount(AcctServer.ACCTTYPE_WriteOffDefault,
as, conn),
- C_Currency_ID, (isReceipt ? line.WriteOffAmt : ""),
- (isReceipt ? "" : line.WriteOffAmt), Fact_Acct_Group_ID,
nextSeqNo(SeqNo),
- DocumentType, conn);
- }
-
- }
SeqNo = "0";
return fact;
diff -r 7e8895c44dea -r 9ecddaf2a817
src/org/openbravo/erpCommon/ad_forms/DocFINReconciliation.java
--- a/src/org/openbravo/erpCommon/ad_forms/DocFINReconciliation.java Wed Apr
21 22:04:36 2010 +0200
+++ b/src/org/openbravo/erpCommon/ad_forms/DocFINReconciliation.java Thu Apr
22 00:34:17 2010 +0200
@@ -75,26 +75,36 @@
DateDoc = data[0].getField("statementDate");
C_DocType_ID = data[0].getField("C_Doctype_ID");
DocumentNo = data[0].getField("DocumentNo");
- FIN_Reconciliation reconciliation = OBDal.getInstance()
- .get(FIN_Reconciliation.class, Record_ID);
- Amounts[0] =
reconciliation.getEndingBalance().subtract(reconciliation.getStartingbalance())
- .toString();
+ boolean wasAdministrator =
OBContext.getOBContext().setInAdministratorMode(true);
+ try {
+ FIN_Reconciliation reconciliation =
OBDal.getInstance().get(FIN_Reconciliation.class,
+ Record_ID);
+ Amounts[0] =
reconciliation.getEndingBalance().subtract(reconciliation.getStartingbalance())
+ .toString();
+ } finally {
+ OBContext.getOBContext().setInAdministratorMode(wasAdministrator);
+ }
loadDocumentType();
p_lines = loadLines();
return true;
}
public FieldProviderFactory[] loadLinesFieldProvider(String Id) {
- FIN_Reconciliation reconciliation =
OBDal.getInstance().get(FIN_Reconciliation.class, Id);
- List<FIN_FinaccTransaction> transactions =
getTransactionList(reconciliation);
FieldProviderFactory[] linesInfo = null;
- for (FIN_FinaccTransaction transaction : transactions) {
- FIN_Payment payment = transaction.getFinPayment();
- // If payment exists the payment details are loaded, if not the GLItem
info is loaded
- if (payment != null)
- linesInfo = add(linesInfo,
loadLinesPaymentDetailsFieldProvider(transaction));
- else if (transaction.getGLItem() != null)
- linesInfo = add(linesInfo, loadLinesGLItemFieldProvider(transaction));
+ boolean wasAdministrator =
OBContext.getOBContext().setInAdministratorMode(true);
+ try {
+ FIN_Reconciliation reconciliation =
OBDal.getInstance().get(FIN_Reconciliation.class, Id);
+ List<FIN_FinaccTransaction> transactions =
getTransactionList(reconciliation);
+ for (FIN_FinaccTransaction transaction : transactions) {
+ FIN_Payment payment = transaction.getFinPayment();
+ // If payment exists the payment details are loaded, if not the GLItem
info is loaded
+ if (payment != null)
+ linesInfo = add(linesInfo,
loadLinesPaymentDetailsFieldProvider(transaction));
+ else if (transaction.getGLItem() != null)
+ linesInfo = add(linesInfo,
loadLinesGLItemFieldProvider(transaction));
+ }
+ } finally {
+ OBContext.getOBContext().setInAdministratorMode(wasAdministrator);
}
return linesInfo;
}
@@ -229,23 +239,28 @@
FieldProviderFactory[] data = loadLinesFieldProvider(Record_ID);
if (data == null || data.length == 0)
return null;
- for (int i = 0; i < data.length; i++) {
- String Line_ID = data[i].getField("FIN_Finacc_Transaction_ID");
- DocLine_FINReconciliation docLine = new
DocLine_FINReconciliation(DocumentType, Record_ID,
- Line_ID);
- String strPaymentId = data[i].getField("FIN_Payment_ID");
- if (strPaymentId != null && !strPaymentId.equals(""))
- docLine.setFinPaymentId(strPaymentId);
- docLine.m_Record_Id2 = strPaymentId;
- docLine.setIsPrepayment(data[i].getField("isprepayment"));
- docLine.setCGlItemId(data[i].getField("cGlItemId"));
- docLine.setPaymentAmount(data[i].getField("PaymentAmount"));
- docLine.setDepositAmount(data[i].getField("DepositAmount"));
- docLine.setWriteOffAmt(data[i].getField("WriteOffAmt"));
- docLine.setAmount(data[i].getField("Amount"));
-
docLine.setFinFinAccTransactionId(data[i].getField("FIN_Finacc_Transaction_ID"));
- docLine.loadAttributes(data[i], this);
- list.add(docLine);
+ boolean wasAdministrator =
OBContext.getOBContext().setInAdministratorMode(true);
+ try {
+ for (int i = 0; i < data.length; i++) {
+ String Line_ID = data[i].getField("FIN_Finacc_Transaction_ID");
+ DocLine_FINReconciliation docLine = new
DocLine_FINReconciliation(DocumentType, Record_ID,
+ Line_ID);
+ String strPaymentId = data[i].getField("FIN_Payment_ID");
+ if (strPaymentId != null && !strPaymentId.equals(""))
+ docLine.setFinPaymentId(strPaymentId);
+ docLine.m_Record_Id2 = strPaymentId;
+ docLine.setIsPrepayment(data[i].getField("isprepayment"));
+ docLine.setCGlItemId(data[i].getField("cGlItemId"));
+ docLine.setPaymentAmount(data[i].getField("PaymentAmount"));
+ docLine.setDepositAmount(data[i].getField("DepositAmount"));
+ docLine.setWriteOffAmt(data[i].getField("WriteOffAmt"));
+ docLine.setAmount(data[i].getField("Amount"));
+
docLine.setFinFinAccTransactionId(data[i].getField("FIN_Finacc_Transaction_ID"));
+ docLine.loadAttributes(data[i], this);
+ list.add(docLine);
+ }
+ } finally {
+ OBContext.getOBContext().setInAdministratorMode(wasAdministrator);
}
// Return Array
DocLine_FINReconciliation[] dl = new
DocLine_FINReconciliation[list.size()];
@@ -258,6 +273,7 @@
// Select specific definition
String strClassname = "";
final StringBuilder whereClause = new StringBuilder();
+ Fact fact = new Fact(this, as, Fact.POST_Actual);
boolean wasAdministrator =
OBContext.getOBContext().setInAdministratorMode(true);
try {
whereClause.append(" as astdt ");
------------------------------------------------------------------------------
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits