Page 1 of 1

Multiship Option issues when deleting/merging cart

Posted: Thu Sep 12, 2013 9:24 am
by ig0r
in our project we use the multiship option blc_order_multiship. its causeing problems when trying to delete/merge the cart, because BL is not cascading the delete of an order to that table, so we see a lot of these:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`superdirect`.`BLC_ORDER_MULTISHIP_OPTION`, CONSTRAINT `FKB3D3F7D69AF166DF` FOREIGN KEY (`ORDER_ITEM_ID`) REFERENCES `BLC_ORDER_ITEM` (`ORDER_ITEM_ID`))
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2006)

so what i do currently is i override the BL implementation of OrderDaoImpl

@Override
public void delete(Order salesOrder) {
Order order = salesOrder;
if (!em.contains(order)) {
order = readOrderById(order.getId());
}
if (order instanceof ExtendedOrder) {
ExtendedOrder extendedOrder = (ExtendedOrder) order;
orderMultishipAddressService.deleteAllOrderMultishipOptions(extendedOrder);

}
em.remove(order);
}

can we fix this in the BL framework, or am i missing something ? blc.version = 2.3.0-M2-5