details: https://code.openbravo.com/erp/devel/pi/rev/521a71d024ed changeset: 15206:521a71d024ed user: Javier Etxarri <javier.echarri <at> openbravo.com> date: Tue Jan 24 16:43:18 2012 +0100 summary: Fixes issue 19260: You can use credit generated from other organization. with this change the credit generated for BP is only available in the first organization that it is a legal entity (first legal entity father) or her sons.
details: https://code.openbravo.com/erp/devel/pi/rev/f18a19d0e4f2 changeset: 15207:f18a19d0e4f2 user: Javier Etxarri <javier.echarri <at> openbravo.com> date: Wed Jan 25 16:49:21 2012 +0100 summary: Fisex issue 19499: Error when you create a BP with the functionality 'Create Account for Business Partner' checked. Now the application check if the account exists and put a clear message diffstat: modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java | 6 ++- modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java | 19 +++++++-- modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java | 12 +++++- modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java | 17 +++++++- modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java | 4 +- src-db/database/model/functions/C_VALIDCOMBINATION_CLONE.xml | 16 ++++++- src-db/database/sourcedata/AD_MESSAGE.xml | 11 +++++ 7 files changed, 70 insertions(+), 15 deletions(-) diffs (212 lines): diff -r 717accbc6781 -r f18a19d0e4f2 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java Wed Jan 25 16:46:03 2012 +0100 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java Wed Jan 25 16:49:21 2012 +0100 @@ -292,8 +292,10 @@ if (payment.getBusinessPartner() != null) { xmlDocument.setParameter("businessPartner", payment.getBusinessPartner().getIdentifier()); xmlDocument.setParameter("businessPartnerId", payment.getBusinessPartner().getId()); - xmlDocument.setParameter("credit", - dao.getCustomerCredit(payment.getBusinessPartner(), payment.isReceipt()).toString()); + xmlDocument.setParameter( + "credit", + dao.getCustomerCredit(payment.getBusinessPartner(), payment.isReceipt(), + payment.getOrganization()).toString()); xmlDocument.setParameter("customerBalance", payment.getBusinessPartner().getCreditUsed() != null ? payment.getBusinessPartner() .getCreditUsed().toString() : BigDecimal.ZERO.toString()); diff -r 717accbc6781 -r f18a19d0e4f2 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java Wed Jan 25 16:46:03 2012 +0100 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromInvoice.java Wed Jan 25 16:49:21 2012 +0100 @@ -298,7 +298,16 @@ xmlDocument.setParameter("orgId", strOrgId); xmlDocument.setParameter("invoiceId", strInvoiceId); xmlDocument.setParameter("isReceipt", (isReceipt ? "Y" : "N")); - xmlDocument.setParameter("credit", dao.getCustomerCredit(bp, isReceipt).toString()); + + try { + OBContext.setAdminMode(true); + xmlDocument.setParameter( + "credit", + dao.getCustomerCredit(bp, isReceipt, + OBDal.getInstance().get(Organization.class, strOrgId)).toString()); + } finally { + OBContext.restorePreviousMode(); + } // get DocumentNo final List<Object> parameters = new ArrayList<Object>(); @@ -339,10 +348,10 @@ } xmlDocument.setParameter("sectionDetailFinancialAccount", finAccountComboHtml); - if (account != null){ - if (!financialAccounts.contains(account)){ - strFinancialAccountId = financialAccounts.get(0).getId(); - } + if (account != null) { + if (!financialAccounts.contains(account)) { + strFinancialAccountId = financialAccounts.get(0).getId(); + } } // Currency xmlDocument.setParameter("CurrencyId", strCurrencyId); diff -r 717accbc6781 -r f18a19d0e4f2 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java Wed Jan 25 16:46:03 2012 +0100 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddPaymentFromTransaction.java Wed Jan 25 16:49:21 2012 +0100 @@ -128,8 +128,16 @@ } else if (vars.commandIn("LOADCREDIT")) { final String strBusinessPartnerId = vars.getRequiredStringParameter("inpcBpartnerId"); final boolean isReceipt = "Y".equals(vars.getRequiredStringParameter("isReceipt")); - BigDecimal customerCredit = dao.getCustomerCredit( - OBDal.getInstance().get(BusinessPartner.class, strBusinessPartnerId), isReceipt); + final String strOrgId = vars.getRequiredStringParameter("inpadOrgId"); + BigDecimal customerCredit; + try { + OBContext.setAdminMode(true); + customerCredit = dao.getCustomerCredit( + OBDal.getInstance().get(BusinessPartner.class, strBusinessPartnerId), isReceipt, OBDal + .getInstance().get(Organization.class, strOrgId)); + } finally { + OBContext.restorePreviousMode(); + } response.setContentType("text/html; charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); diff -r 717accbc6781 -r f18a19d0e4f2 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java Wed Jan 25 16:46:03 2012 +0100 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/AdvPaymentMngtDao.java Wed Jan 25 16:49:21 2012 +0100 @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Set; import org.apache.commons.lang.StringUtils; import org.hibernate.criterion.Criterion; @@ -1407,6 +1408,7 @@ return ppfiCriteria.list(); } + @Deprecated public BigDecimal getCustomerCredit(BusinessPartner bp, boolean isReceipt) { BigDecimal creditAmount = BigDecimal.ZERO; for (FIN_Payment payment : getCustomerPaymentsWithCredit(bp, isReceipt)) @@ -1415,6 +1417,15 @@ return creditAmount; } + public BigDecimal getCustomerCredit(BusinessPartner bp, boolean isReceipt, Organization Org) { + BigDecimal creditAmount = BigDecimal.ZERO; + for (FIN_Payment payment : getCustomerPaymentsWithCredit(Org, bp, isReceipt)) + creditAmount = creditAmount.add(payment.getGeneratedCredit()).subtract( + payment.getUsedCredit()); + return creditAmount; + } + + @Deprecated public List<FIN_Payment> getCustomerPaymentsWithCredit(BusinessPartner bp, boolean isReceipt) { OBCriteria<FIN_Payment> obcPayment = OBDal.getInstance().createCriteria(FIN_Payment.class); obcPayment.add(Restrictions.eq(FIN_Payment.PROPERTY_BUSINESSPARTNER, bp)); @@ -1451,8 +1462,10 @@ obcPayment.add(Restrictions.neProperty(FIN_Payment.PROPERTY_GENERATEDCREDIT, FIN_Payment.PROPERTY_USEDCREDIT)); final Organization legalEntity = FIN_Utility.getLegalEntityOrg(org); - obcPayment.add(Restrictions.in("organization.id", OBContext.getOBContext() - .getOrganizationStructureProvider().getNaturalTree(legalEntity.getId()))); + Set<String> orgIds = OBContext.getOBContext().getOrganizationStructureProvider() + .getChildOrg(legalEntity.getId()); + orgIds.add(legalEntity.getId()); + obcPayment.add(Restrictions.in("organization.id", orgIds)); obcPayment.addOrderBy(FIN_Payment.PROPERTY_PAYMENTDATE, true); obcPayment.addOrderBy(FIN_Payment.PROPERTY_DOCUMENTNO, true); return obcPayment.list(); diff -r 717accbc6781 -r f18a19d0e4f2 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java Wed Jan 25 16:46:03 2012 +0100 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java Wed Jan 25 16:49:21 2012 +0100 @@ -41,6 +41,7 @@ import org.openbravo.erpCommon.utility.Utility; import org.openbravo.model.common.businesspartner.BusinessPartner; import org.openbravo.model.common.currency.ConversionRateDoc; +import org.openbravo.model.common.enterprise.Organization; import org.openbravo.model.common.invoice.Invoice; import org.openbravo.model.financialmgmt.payment.FIN_FinaccTransaction; import org.openbravo.model.financialmgmt.payment.FIN_Payment; @@ -733,8 +734,9 @@ final BigDecimal usedAmount = newPayment.getUsedCredit(); final BusinessPartner bp = newPayment.getBusinessPartner(); final boolean isReceipt = newPayment.isReceipt(); + final Organization Org = newPayment.getOrganization(); - List<FIN_Payment> creditPayments = dao.getCustomerPaymentsWithCredit(bp, isReceipt); + List<FIN_Payment> creditPayments = dao.getCustomerPaymentsWithCredit(Org, bp, isReceipt); BigDecimal pendingToAllocateAmount = usedAmount; for (FIN_Payment creditPayment : creditPayments) { BigDecimal availableAmount = creditPayment.getGeneratedCredit().subtract( diff -r 717accbc6781 -r f18a19d0e4f2 src-db/database/model/functions/C_VALIDCOMBINATION_CLONE.xml --- a/src-db/database/model/functions/C_VALIDCOMBINATION_CLONE.xml Wed Jan 25 16:46:03 2012 +0100 +++ b/src-db/database/model/functions/C_VALIDCOMBINATION_CLONE.xml Wed Jan 25 16:49:21 2012 +0100 @@ -56,6 +56,7 @@ v_UpdateSequence CHAR; tmp_Subaccout_no VARCHAR(32) :=null; --OBTG:varchar2-- v_C_ElementValue_ID VARCHAR(32) :=null; --OBTG:varchar2-- + v_Exist NUMBER; BEGIN IF (p_orginal_validcombination IS NULL) THEN @@ -85,15 +86,24 @@ FROM C_ValidCombination, C_ElementValue WHERE C_ValidCombination.Account_ID = C_ElementValue.C_ElementValue_ID AND C_ValidCombination_ID =p_Orginal_Validcombination; - + -- Logic for generating the New Sub account number from Original Accounts. v_Acct_No_For_SubAccount:=SUBSTR(v_Default_Account_No,1,p_Acct_Length); tmp_Subaccout_no := p_Subacct_Length - p_Acct_Length; v_Seq_No_For_Subaccount_No:= lpad(p_SequenceNo,cast(tmp_Subaccout_no as integer),'0'); v_New_Subaccount_No:= v_Acct_No_For_SubAccount || v_Seq_No_For_Subaccount_No; - /* + + --Checking if the new account already exists + SELECT count(*) + INTO v_Exist + FROM C_ElementValue WHERE VALUE =v_New_Subaccount_No; + IF (v_Exist > 0) THEN + RAISE NO_DATA_FOUND; --OBTG:-20000-- + END IF; + /* Inserting the new element value for new account for Business Partner Or Product. */ + INSERT INTO C_ElementValue ( C_ElementValue_ID, @@ -183,7 +193,7 @@ FROM ad_treenode WHERE AD_TREE_ID = v_AD_TREE_ID AND NODE_ID = v_Node_ID ), SEQNO = v_SEQNO WHERE NODE_ID = V_C_ElementValue_ID; - + /* Function call to Retrieve the new account NUMBER for Business Partner or Product. */ C_ValidCombination_Insert(p_Result, v_Default_Account_Client_ID, v_Org_ID, v_C_AcctSchema_ID, v_C_ElementValue_ID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); diff -r 717accbc6781 -r f18a19d0e4f2 src-db/database/sourcedata/AD_MESSAGE.xml --- a/src-db/database/sourcedata/AD_MESSAGE.xml Wed Jan 25 16:46:03 2012 +0100 +++ b/src-db/database/sourcedata/AD_MESSAGE.xml Wed Jan 25 16:49:21 2012 +0100 @@ -19682,6 +19682,17 @@ <!--ED94DA7D967E401B93DDFFE86C9715A9--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> <!--ED94DA7D967E401B93DDFFE86C9715A9--></AD_MESSAGE> +<!--EDF01D2A44964901BD465666A655A54B--><AD_MESSAGE> +<!--EDF01D2A44964901BD465666A655A54B--> <AD_MESSAGE_ID><![CDATA[EDF01D2A44964901BD465666A655A54B]]></AD_MESSAGE_ID> +<!--EDF01D2A44964901BD465666A655A54B--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> +<!--EDF01D2A44964901BD465666A655A54B--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> +<!--EDF01D2A44964901BD465666A655A54B--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> +<!--EDF01D2A44964901BD465666A655A54B--> <VALUE><![CDATA[DuplicateAccount]]></VALUE> +<!--EDF01D2A44964901BD465666A655A54B--> <MSGTEXT><![CDATA[Duplicated account has been created, the length of accounts or subaccounts in organization window is wrong defined]]></MSGTEXT> +<!--EDF01D2A44964901BD465666A655A54B--> <MSGTYPE><![CDATA[E]]></MSGTYPE> +<!--EDF01D2A44964901BD465666A655A54B--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> +<!--EDF01D2A44964901BD465666A655A54B--></AD_MESSAGE> + <!--EE302684C25A4CD89ECEC171E624475F--><AD_MESSAGE> <!--EE302684C25A4CD89ECEC171E624475F--> <AD_MESSAGE_ID><![CDATA[EE302684C25A4CD89ECEC171E624475F]]></AD_MESSAGE_ID> <!--EE302684C25A4CD89ECEC171E624475F--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> ------------------------------------------------------------------------------ Keep Your Developer Skills Current with LearnDevNow! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-d2d _______________________________________________ Openbravo-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openbravo-commits
