1414import com .liferay .commerce .model .CommerceOrder ;
1515import com .liferay .commerce .product .model .CommerceChannel ;
1616import com .liferay .commerce .product .service .CommerceChannelLocalService ;
17+ import com .liferay .commerce .service .CommerceOrderLocalService ;
1718import com .liferay .petra .string .StringPool ;
1819import com .liferay .portal .configuration .module .configuration .ConfigurationProvider ;
1920import com .liferay .portal .kernel .dao .orm .QueryUtil ;
@@ -41,6 +42,7 @@ public class CommerceOrderModelResourcePermissionLogic
4142 public CommerceOrderModelResourcePermissionLogic (
4243 AccountEntryLocalService accountEntryLocalService ,
4344 CommerceChannelLocalService commerceChannelLocalService ,
45+ CommerceOrderLocalService commerceOrderLocalService ,
4446 ConfigurationProvider configurationProvider ,
4547 GroupLocalService groupLocalService ,
4648 PortletResourcePermission portletResourcePermission ,
@@ -49,6 +51,7 @@ public CommerceOrderModelResourcePermissionLogic(
4951
5052 _accountEntryLocalService = accountEntryLocalService ;
5153 _commerceChannelLocalService = commerceChannelLocalService ;
54+ _commerceOrderLocalService = commerceOrderLocalService ;
5255 _configurationProvider = configurationProvider ;
5356 _groupLocalService = groupLocalService ;
5457 _portletResourcePermission = portletResourcePermission ;
@@ -476,23 +479,17 @@ private boolean _hasRoleAccountSupplier(
476479 PermissionChecker permissionChecker , CommerceOrder commerceOrder )
477480 throws PortalException {
478481
479- CommerceChannel commerceChannel =
480- _commerceChannelLocalService .fetchCommerceChannelByGroupClassPK (
481- commerceOrder .getGroupId ());
482-
483- if ((commerceChannel != null ) &&
484- (commerceChannel .getAccountEntryId () == 0 )) {
485-
486- return false ;
487- }
488-
489482 List <AccountEntry > accountEntries =
490483 _accountEntryLocalService .getUserAccountEntries (
491484 permissionChecker .getUserId (), 0L , StringPool .BLANK ,
492485 new String [] {AccountConstants .ACCOUNT_ENTRY_TYPE_SUPPLIER },
493486 QueryUtil .ALL_POS , QueryUtil .ALL_POS );
494487
495488 for (AccountEntry accountEntry : accountEntries ) {
489+ CommerceChannel commerceChannel =
490+ _commerceChannelLocalService .fetchCommerceChannelByGroupClassPK (
491+ commerceOrder .getGroupId ());
492+
496493 if ((accountEntry .getAccountEntryId () ==
497494 commerceChannel .getAccountEntryId ()) &&
498495 _userGroupRoleLocalService .hasUserGroupRole (
@@ -502,13 +499,37 @@ private boolean _hasRoleAccountSupplier(
502499
503500 return true ;
504501 }
502+
503+ for (long commerceOrderIds :
504+ commerceOrder .getSupplierCommerceOrderIds ()) {
505+
506+ CommerceOrder supplierCommerceOrder =
507+ _commerceOrderLocalService .getCommerceOrder (
508+ commerceOrderIds );
509+
510+ commerceChannel =
511+ _commerceChannelLocalService .
512+ fetchCommerceChannelByGroupClassPK (
513+ supplierCommerceOrder .getGroupId ());
514+
515+ if ((accountEntry .getAccountEntryId () ==
516+ commerceChannel .getAccountEntryId ()) &&
517+ _userGroupRoleLocalService .hasUserGroupRole (
518+ permissionChecker .getUserId (),
519+ accountEntry .getAccountEntryGroupId (),
520+ AccountRoleConstants .ROLE_NAME_ACCOUNT_SUPPLIER )) {
521+
522+ return true ;
523+ }
524+ }
505525 }
506526
507527 return false ;
508528 }
509529
510530 private final AccountEntryLocalService _accountEntryLocalService ;
511531 private final CommerceChannelLocalService _commerceChannelLocalService ;
532+ private final CommerceOrderLocalService _commerceOrderLocalService ;
512533 private final ConfigurationProvider _configurationProvider ;
513534 private final GroupLocalService _groupLocalService ;
514535 private final PortletResourcePermission _portletResourcePermission ;
0 commit comments