private final I_C_TaxDeclarationAcct createTaxDeclarationAcct( final I_C_TaxDeclarationLine taxDeclarationLine, final I_Fact_Acct fact) { final I_C_TaxDeclaration taxDeclaration = getC_TaxDeclaration(); final I_C_TaxDeclarationAcct taxDeclarationAcct = InterfaceWrapperHelper.create( getCtx(), I_C_TaxDeclarationAcct.class, ITrx.TRXNAME_ThreadInherited); taxDeclarationAcct.setAD_Org_ID(fact.getAD_Org_ID()); taxDeclarationAcct.setC_TaxDeclaration(taxDeclaration); // Link to C_TaxDeclarationLine ONLY if the Fact_Acct record is about tax booking // NOTE: very important, reports are relying on this (e.g. see RV_TaxDeclarationLine) if (taxDeclarationLine != null && taxDeclarationLine.getC_Tax_ID() == fact.getC_Tax_ID()) { taxDeclarationAcct.setC_TaxDeclarationLine(taxDeclarationLine); } else { taxDeclarationAcct.setC_TaxDeclarationLine(null); } taxDeclarationAcct.setFact_Acct_ID( fact.getFact_Acct_ID()); // this FK shall block Fact_Acct to be deleted taxDeclarationAcct.setC_AcctSchema_ID(fact.getC_AcctSchema_ID()); // // Save final int line = lineNoOffset_TaxDeclarationAcct + (countAcctLinesCreated + 1) * 10; taxDeclarationAcct.setLine(line); InterfaceWrapperHelper.save(taxDeclarationAcct); countAcctLinesCreated++; return taxDeclarationAcct; }