diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/AuditedInvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/AuditedInvoiceDao.java
index 49d21ee..5f7b71f 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/AuditedInvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/AuditedInvoiceDao.java
@@ -583,7 +583,12 @@ public class AuditedInvoiceDao implements InvoiceDao {
// Note! The amount is negated here!
final InvoiceItem credit = new CreditAdjInvoiceItem(invoiceIdForCredit, accountId, effectiveDate, positiveCreditAmount.negate(), currency);
- insertItemAndAddCBAIfNeeded(transactional, credit, context);
+ final Long recordId = insertItemAndAddCBAIfNeeded(transactional, credit, context);
+
+ // Add audit
+ final EntityAudit audit = new EntityAudit(TableName.INVOICE_ITEMS, recordId, ChangeType.INSERT);
+ transactional.insertAuditFromTransaction(audit, context);
+
return credit;
}
});
@@ -650,11 +655,13 @@ public class AuditedInvoiceDao implements InvoiceDao {
* @param item the invoice item to create
* @param context the call context
*/
- private void insertItemAndAddCBAIfNeeded(final InvoiceSqlDao transactional, final InvoiceItem item, final CallContext context) {
+ private Long insertItemAndAddCBAIfNeeded(final InvoiceSqlDao transactional, final InvoiceItem item, final CallContext context) {
final InvoiceItemSqlDao transInvoiceItemDao = transactional.become(InvoiceItemSqlDao.class);
transInvoiceItemDao.create(item, context);
addCBAIfNeeded(transactional, item.getInvoiceId(), context);
+
+ return transInvoiceItemDao.getRecordId(item.getId().toString());
}
/**
diff --git a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceItemSqlDao.sql.stg b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceItemSqlDao.sql.stg
index 2e2c6c9..0c14015 100644
--- a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceItemSqlDao.sql.stg
+++ b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceItemSqlDao.sql.stg
@@ -25,6 +25,18 @@ getById() ::= <<
WHERE id = :id;
>>
+getByRecordId() ::= <<
+ SELECT <fields()>
+ FROM invoice_items
+ WHERE record_id = :recordId;
+>>
+
+getRecordId() ::= <<
+ SELECT record_id
+ FROM invoice_items
+ WHERE id = :id;
+>>
+
getInvoiceItemsByInvoice() ::= <<
SELECT <fields()>
FROM invoice_items