details: https://code.openbravo.com/erp/devel/pi/rev/ec4c6d3b7bde changeset: 16700:ec4c6d3b7bde user: Ioritz Cia <ioritz.cia <at> openbravo.com> date: Tue May 29 09:52:54 2012 +0200 summary: Fixes issue 20253: Total Gross Amount is not updated correctly.
details: https://code.openbravo.com/erp/devel/pi/rev/20ba1feb4a41 changeset: 16701:20ba1feb4a41 user: Ioritz Cia <ioritz.cia <at> openbravo.com> date: Tue May 29 17:36:06 2012 +0200 summary: Fixes issue 20208: Import bank statement. Bank statement lines with amount zero should not be imported. diffstat: modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml | 11 ++ modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_BankStatementImport.java | 41 ++++++++- src-db/database/model/triggers/C_INVOICETAX_TRG2.xml | 21 ++++- 3 files changed, 64 insertions(+), 9 deletions(-) diffs (163 lines): diff -r 25447e74a93f -r 20ba1feb4a41 modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml --- a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml Wed May 30 07:36:48 2012 +0200 +++ b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml Tue May 29 17:36:06 2012 +0200 @@ -485,6 +485,17 @@ <!--8A4E2745545245ED81BFBC5324648833--> <AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID> <!--8A4E2745545245ED81BFBC5324648833--></AD_MESSAGE> +<!--8E01FDCFBE034863898A47F1AE37BB15--><AD_MESSAGE> +<!--8E01FDCFBE034863898A47F1AE37BB15--> <AD_MESSAGE_ID><![CDATA[8E01FDCFBE034863898A47F1AE37BB15]]></AD_MESSAGE_ID> +<!--8E01FDCFBE034863898A47F1AE37BB15--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> +<!--8E01FDCFBE034863898A47F1AE37BB15--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> +<!--8E01FDCFBE034863898A47F1AE37BB15--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> +<!--8E01FDCFBE034863898A47F1AE37BB15--> <VALUE><![CDATA[APRM_ZeroAmountNotInserted]]></VALUE> +<!--8E01FDCFBE034863898A47F1AE37BB15--> <MSGTEXT><![CDATA[%s row/s inserted.<br/>%s row/s not inserted because credit and debit amount were 0.]]></MSGTEXT> +<!--8E01FDCFBE034863898A47F1AE37BB15--> <MSGTYPE><![CDATA[S]]></MSGTYPE> +<!--8E01FDCFBE034863898A47F1AE37BB15--> <AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID> +<!--8E01FDCFBE034863898A47F1AE37BB15--></AD_MESSAGE> + <!--92EC1935A8B947BA83EF82DBD169CA8B--><AD_MESSAGE> <!--92EC1935A8B947BA83EF82DBD169CA8B--> <AD_MESSAGE_ID><![CDATA[92EC1935A8B947BA83EF82DBD169CA8B]]></AD_MESSAGE_ID> <!--92EC1935A8B947BA83EF82DBD169CA8B--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> diff -r 25447e74a93f -r 20ba1feb4a41 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_BankStatementImport.java --- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_BankStatementImport.java Wed May 30 07:36:48 2012 +0200 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_BankStatementImport.java Tue May 29 17:36:06 2012 +0200 @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.InputStream; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -128,6 +129,7 @@ InputStream file = null; FIN_BankStatement bankStatement; List<FIN_BankStatementLine> bankStatementLines = new ArrayList<FIN_BankStatementLine>(); + int previousNumberofLines = 0; int numberOfLines = 0; try { @@ -153,6 +155,8 @@ return getMyError(); } + previousNumberofLines = bankStatementLines.size(); + try { numberOfLines = saveFINBankStatementLines(bankStatementLines); OBDal.getInstance().refresh(bankStatement); @@ -167,6 +171,16 @@ OBDal.getInstance().rollbackAndClose(); return getMyError(); } else if (getMyError() != null && getMyError().getType().toLowerCase().equals("success")) { + if (numberOfLines < previousNumberofLines) { + OBError msg = new OBError(); + msg.setType("Success"); + msg.setTitle(Utility.messageBD(conn, "Success", vars.getLanguage())); + String message = String.format( + Utility.messageBD(conn, "APRM_ZeroAmountNotInserted", vars.getLanguage()), + String.valueOf(numberOfLines), String.valueOf(previousNumberofLines - numberOfLines)); + msg.setMessage(message); + setMyError(msg); + } return getMyError(); } else { return getOBError(conn, vars, "@APRM_BankStatementNo@ " + bankStatement.getDocumentNo() @@ -185,17 +199,28 @@ private int saveFINBankStatementLines(List<FIN_BankStatementLine> bankStatementLines) { int counter = 0; + BigDecimal crAmount; + BigDecimal drAmount; for (FIN_BankStatementLine bankStatementLine : bankStatementLines) { BusinessPartner businessPartner; - try { - businessPartner = matchBusinessPartner(bankStatementLine.getBpartnername(), - bankStatementLine.getOrganization(), bankStatementLine.getBankStatement().getAccount()); - } catch (Exception e) { - businessPartner = null; + crAmount = bankStatementLine.getCramount(); + drAmount = bankStatementLine.getDramount(); + if (!(crAmount.compareTo(BigDecimal.ZERO) == 0) + || !(drAmount.compareTo(BigDecimal.ZERO) == 0)) { + try { + businessPartner = matchBusinessPartner(bankStatementLine.getBpartnername(), + bankStatementLine.getOrganization(), bankStatementLine.getBankStatement() + .getAccount()); + } catch (Exception e) { + businessPartner = null; + } + bankStatementLine.setBusinessPartner(businessPartner); + bankStatementLine.setLineNo(new Long((counter + 1) * 10)); + OBDal.getInstance().save(bankStatementLine); + counter++; + } else { + OBDal.getInstance().remove(bankStatementLine); } - bankStatementLine.setBusinessPartner(businessPartner); - OBDal.getInstance().save(bankStatementLine); - counter++; } OBDal.getInstance().flush(); return counter; diff -r 25447e74a93f -r 20ba1feb4a41 src-db/database/model/triggers/C_INVOICETAX_TRG2.xml --- a/src-db/database/model/triggers/C_INVOICETAX_TRG2.xml Wed May 30 07:36:48 2012 +0200 +++ b/src-db/database/model/triggers/C_INVOICETAX_TRG2.xml Tue May 29 17:36:06 2012 +0200 @@ -28,6 +28,7 @@ v_taxid varchar2(32); taxamountnew NUMBER; taxamountold NUMBER; +v_recalculate CHAR(1); -- BP_Withholding isbaseamountpercent CHAR(1); baseamountpercent NUMBER; @@ -48,22 +49,24 @@ IF AD_isTriggerEnabled()='N' THEN RETURN; END IF; - IF(inserting) THEN v_invoiceid := :NEW.c_invoice_id; v_taxid := :NEW.c_tax_id; taxamountnew := :NEW.taxamt; taxamountold := 0; + v_recalculate:= :NEW.recalculate; ELSIF(updating) THEN v_invoiceid := :NEW.c_invoice_id; v_taxid := :NEW.c_tax_id; taxamountnew := :NEW.taxamt; taxamountold := :OLD.taxamt; + v_recalculate := :OLD.recalculate; ELSIF(deleting) THEN v_invoiceid := :OLD.c_invoice_id; v_taxid := :OLD.c_tax_id; taxamountnew := 0; taxamountold := :OLD.taxamt; + v_recalculate := :OLD.recalculate; END IF; -- Read data from invoice select c_bpartner_id,withholdingamount,issotrx , coalesce(processed,'N') ,c_withholding_id @@ -117,6 +120,22 @@ END IF; END IF; + IF(v_recalculate = 'N') THEN + IF(INSERTING) THEN + UPDATE c_invoice + SET grandtotal = grandtotal + taxamountnew + WHERE c_invoice_id = v_invoiceid; + ELSIF(UPDATING) THEN + UPDATE c_invoice + SET grandtotal = grandtotal - taxamountold + taxamountnew + WHERE c_invoice_id = v_invoiceid; + ELSIF(DELETING) THEN + UPDATE c_invoice + SET grandtotal = grandtotal - taxamountold + WHERE c_invoice_id = v_invoiceid; + END IF; + END IF; + END C_INVOICETAX_TRG2 ]]></body> </trigger> ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Openbravo-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openbravo-commits
