I tried to add 2 new columns (shipping's company and billing's company) to orders page using a plugin,
but i got an error when trying to view customer's orders in customer page.
This is my plugin function
public function afterGetReport($subject, $collection, $requestName)
{
if ($requestName !== 'sales_order_grid_data_source') {
return $collection;
}
if ($collection->getMainTable() === $collection->getResource()->getTable('sales_order_grid')) {
try {
$orderAddressTableName = $collection->getResource()->getTable('sales_order_address');
//$directoryCountryRegionTableName = $collection->getResource()->getTable('directory_country_region');
$collection->getSelect()->joinLeft(
['soat' => $orderAddressTableName],
'soat.parent_id = main_table.entity_id AND soat.address_type = \'shipping\'' ,
[
'company_shipp' => 'company'
]
);
$collection->getSelect()->joinLeft(
['soat1' => $orderAddressTableName],
'soat1.parent_id = main_table.entity_id AND soat1.address_type = \'billing\'',
[
'company_bill' => 'company'
]
)->where();
} catch (\Zend_Db_Select_Exception $selectException) {
// Do nothing in that case
$this->logger->log(100, $selectException);
}
}
return $collection;
}
My be my code is wrong to get both billing and shpping company in 2 custom columns, But i got error This is the error Column 'customer_id' in where clause is ambiguous, can i override the where in my function but how to get the customer?
Exception #0 (Zend_Db_Statement_Exception): SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'customer_id' in where clause is ambiguous, query was: SELECT COUNT(*) FROM
sales_order_grid
ASmain_table
LEFT JOINggg_flags_order_flag
ASamflags_column_1
ON main_table.entity_id = amflags_column_1.order_id AND amflags_column_1.column_id = 1 LEFT JOINggg_flags_order_flag
ASamflags_column_2
ON main_table.entity_id = amflags_column_2.order_id AND amflags_column_2.column_id = 2 LEFT JOINggg_flags_order_flag
ASamflags_column_3
ON main_table.entity_id = amflags_column_3.order_id AND amflags_column_3.column_id = 3 LEFT JOINggg_flags_order_flag
ASamflags_column_4
ON main_table.entity_id = amflags_column_4.order_id AND amflags_column_4.column_id = 4 LEFT JOINggg_flags_order_flag
ASamflags_column_5
ON main_table.entity_id = amflags_column_5.order_id AND amflags_column_5.column_id = 5 LEFT JOINggg_flags_order_flag
ASamflags_column_6
ON main_table.entity_id = amflags_column_6.order_id AND amflags_column_6.column_id = 6 LEFT JOINggg_flags_order_flag
ASamflags_column_7
ON main_table.entity_id = amflags_column_7.order_id AND amflags_column_7.column_id = 7 LEFT JOINggg_flags_order_flag
ASamflags_column_8
ON main_table.entity_id = amflags_column_8.order_id AND amflags_column_8.column_id = 8 LEFT JOINggg_flags_order_flag
ASamflags_column_9
ON main_table.entity_id = amflags_column_9.order_id AND amflags_column_9.column_id = 9 LEFT JOINggg_flags_order_flag
ASamflags_column_10
ON main_table.entity_id = amflags_column_10.order_id AND amflags_column_10.column_id = 10 LEFT JOINggg_flags_order_flag
ASamflags_column_11
ON main_table.entity_id = amflags_column_11.order_id AND amflags_column_11.column_id = 11 LEFT JOINsales_order_address
ASsoat
ON soat.parent_id = main_table.entity_id LEFT JOINsales_order_address
ASsoat1
ON soat1.parent_id = main_table.entity_id WHERE (soat.address_type = 'shipping') AND (soat1.address_type = 'billing') AND (**customer_id**
= '11617')