Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
00d2fbc
114 Module simplification: Name unification
maxim-babenkocommerce Mar 5, 2021
79a4ac2
114 Module simplification: Removing properties
maxim-babenkocommerce Mar 5, 2021
4c1e473
114 Module simplification: fieldModifier
maxim-babenkocommerce Mar 11, 2021
15b7188
114 Module simplification: name
maxim-babenkocommerce Mar 11, 2021
216292f
114 Module simplification: Context
maxim-babenkocommerce Mar 11, 2021
32f77f4
114 Module simplification: Context
maxim-babenkocommerce Mar 24, 2021
0d85421
Fix: Missing value for required field
eermolaev Apr 12, 2021
356d208
Fix: Missing value for required field
eermolaev Apr 12, 2021
045bdaa
379 Order sync issue
maxim-babenkocommerce Apr 12, 2021
46cc5ba
Merge pull request #296 from PowerSync/379-order-sync-issue
eermolaev Apr 12, 2021
b0847b6
Merge remote-tracking branch 'origin/develop' into develop
eermolaev Apr 12, 2021
65ad6c5
Fix: Missing value for required field
eermolaev Apr 12, 2021
4998bae
Fix: Missing value for required field
eermolaev Apr 12, 2021
7ee1a68
1208959772 Opportunity duplication on Quote Edit
eermolaev Apr 20, 2021
d1afe4a
1208959772 Opportunity duplication on Quote Edit
eermolaev Apr 20, 2021
834acf2
1246962528 Customer sync failed (issue with SF IDs)
maxim-babenkocommerce Apr 29, 2021
591d44b
Merge pull request #299 from PowerSync/1246962528-customer-sync-failed
eermolaev Apr 30, 2021
f37baa1
up
eermolaev Apr 30, 2021
d32f0da
1327345445 Opportunity amount is $0.00, looks like we re deleting ite…
eermolaev May 30, 2021
ea0591a
up
eermolaev May 30, 2021
16054c4
1378032967 Undefined index: TOS_Agreement_Date__c
eermolaev Jun 10, 2021
fbdbf53
1399907047 Past order sync max_input_vars
eermolaev Jun 22, 2021
4f83b2f
Merge pull request #303 from PowerSync/1399907047
eermolaev Jun 28, 2021
6b67447
1399907047 Past order sync
eermolaev Jun 29, 2021
a7b1e24
1399907047 Past order sync
eermolaev Jun 29, 2021
dfd701a
1435634866 Order from deleted website sync
eermolaev Jun 29, 2021
0ed079f
1448418046 Bulk records sync issue
maxim-babenkocommerce Jul 30, 2021
e1db93f
Merge pull request #305 from PowerSync/1448418046-bulk-records-sync-i…
eermolaev Jul 30, 2021
f38326d
1549018348 Foreign key SQL error
eermolaev Aug 10, 2021
eeab276
1570428945 JS conflict
eermolaev Aug 12, 2021
f3274aa
1548276443 Quote expiration Date & Opportunity Close Date
maxim-babenkocommerce Aug 13, 2021
1c2c76d
Merge pull request #310 from PowerSync/1548276443-quote-expiration-da…
eermolaev Aug 23, 2021
8d86156
Update composer.json
eermolaev Aug 23, 2021
018bd30
FF-MSF-00008 Queue sync issue: stuck with Salesforce Update Preparation
eermolaev Sep 9, 2021
e55163d
FF-MSF-00008 Queue sync issue: stuck with Salesforce Update Preparation
eermolaev Sep 9, 2021
69c6dc4
114 Module simplification: Name unification
maxim-babenkocommerce Mar 5, 2021
fd61ad2
114 Module simplification: Removing properties
maxim-babenkocommerce Mar 5, 2021
9d32285
114 Module simplification: fieldModifier
maxim-babenkocommerce Mar 11, 2021
23984a7
114 Module simplification: name
maxim-babenkocommerce Mar 11, 2021
3ae5445
114 Module simplification: Context
maxim-babenkocommerce Mar 11, 2021
5c37ebb
114 Module simplification: Context
maxim-babenkocommerce Mar 24, 2021
d27f297
114 Module simplification: update
maxim-babenkocommerce Sep 21, 2021
8411ea4
Merge remote-tracking branch 'origin/114-Module-simplification' into …
maxim-babenkocommerce Sep 22, 2021
7f577f1
114 Module simplification: update composer.json
maxim-babenkocommerce Sep 22, 2021
f42bd1f
114 Module simplification: Bulk
maxim-babenkocommerce Oct 12, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions Model/ResourceModel/Objects.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ class Objects extends AbstractDb
*/
private $selectEntityIds;

/**
* @var \Magento\Framework\DB\Select
*/
private $selectEntityIdsByType;

/**
* @var \Magento\Framework\DB\Select
*/
Expand Down Expand Up @@ -94,6 +99,14 @@ protected function _construct()
->where('website_id IN (:entity_website_id, :base_website_id)')
->order(new \Zend_Db_Expr('FIELD(website_id, :base_website_id, :entity_website_id)'));

$this->selectEntityIdsByType = $this->getConnection()->select()
->from($this->getMainTable(), ['entity_id'])
->where('magento_type = :magento_type')
->where('salesforce_type = :salesforce_type')
->where('object_id = :object_id')
->where('website_id IN (:entity_website_id, :base_website_id)')
->order(new \Zend_Db_Expr('FIELD(website_id, :base_website_id, :entity_website_id)'));

$this->selectStatus = $this->getConnection()->select()
->from($this->getMainTable(), ['status'])
->where('magento_type = :magento_type')
Expand Down Expand Up @@ -317,4 +330,23 @@ public function unsetPendingStatus($entityId, $magentoType, $websiteId, $salesfo
$where
);
}

/**
* @param string $objectId
* @param string $magentoType
* @param string $salesforceType
* @param int $websiteId
*
* @return array
*/
public function loadEntityIdsByType($objectId, $magentoType, $salesforceType, $websiteId)
{
return $this->getConnection()->fetchCol($this->selectEntityIdsByType, [
'magento_type' => $magentoType,
'salesforce_type' => $salesforceType,
'object_id' => $objectId,
'entity_website_id' => $websiteId,
'base_website_id' => $this->baseWebsiteId($websiteId),
]);
}
}
64 changes: 64 additions & 0 deletions Plugin/FixMissedWebsites.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<?php


namespace TNW\Salesforce\Plugin;


use Magento\Framework\Model\AbstractModel;
use Magento\Store\Api\Data\GroupInterface;
use Magento\Store\Model\StoreManagerInterface;
use TNW\Salesforce\Synchronize\Entity\DivideEntityByWebsiteOrg;

class FixMissedWebsites
{

/** @var StoreManagerInterface */
protected $storeManager;

/**
* FixMissedWebsites constructor.
* @param StoreManagerInterface $storeManager
*/
public function __construct(
StoreManagerInterface $storeManager
) {
$this->storeManager = $storeManager;
}

/**
* @param $website
* @return int
*/
public function getDefaultStoreId($website)
{

$defaultGroupId = $website->getDefaultGroupId();
/** @var GroupInterface $defaultGroup */
$defaultGroup = $this->storeManager->getGroup($defaultGroupId);
return $defaultGroup->getDefaultStoreId();
}

/**
* @param AbstractModel $entity
* @param $result
* @param $entity
*/
public function afterGetEntityWebsiteIds(
DivideEntityByWebsiteOrg $subject,
$result,
$entity
) {

if (in_array(0, $result)) {
$result = array_filter($result);
if (empty($result)) {
$defaultWebsite = $this->storeManager->getWebsite(true);
$result[] = $defaultWebsite->getId();
$entity->setWebsiteId($defaultWebsite->getId());
$entity->setStoreId($this->getDefaultStoreId($defaultWebsite));
}
}

return $result;
}
}
77 changes: 77 additions & 0 deletions Plugin/Synchronize/Queue/Website/FixMissedWebsites.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?php


namespace TNW\Salesforce\Plugin\Synchronize\Queue\Website;


use Magento\Store\Api\Data\GroupInterface;
use Magento\Store\Model\StoreManagerInterface;
use TNW\Salesforce\Synchronize\Queue\CreateInterface;
use TNW\Salesforce\Synchronize\Queue\Website\CreateByBase;

class FixMissedWebsites
{

/** @var StoreManagerInterface */
protected $storeManager;

/**
* FixMissedWebsites constructor.
* @param StoreManagerInterface $storeManager
*/
public function __construct(
StoreManagerInterface $storeManager
) {
$this->storeManager = $storeManager;
}

/**
* @param $website
* @return int
*/
public function getDefaultStoreId($website)
{

$defaultGroupId = $website->getDefaultGroupId();
/** @var GroupInterface $defaultGroup */
$defaultGroup = $this->storeManager->getGroup($defaultGroupId);
return $defaultGroup->getDefaultStoreId();
}

/**
* @param CreateInterface $subject
* @param $result
* @param int[] $entityIds
* @param array $additional
* @param callable $create
* @param int $websiteId
*/
public function afterProcess(
CreateInterface $subject,
$result,
array $entityIds,
array $additional,
callable $create,
$websiteId
) {

foreach ($result as $k => $item) {
if (empty($item->getEntityId())) {
$defaultWebsite = $this->storeManager->getWebsite(true);

$baseEntityIds = $item->getData('_base_entity_id');
$baseEntityId = reset($baseEntityIds);
$result[] = $create(
'website',
$defaultWebsite->getId(),
$baseEntityId,
['website' => $defaultWebsite->getId()]
);

unset($result[$k]);
}
}

return $result;
}
}
20 changes: 19 additions & 1 deletion Plugin/Synchronize/Unit/Mapping/CheckOwnerField.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
use TNW\Salesforce\Model\ResourceModel\Mapper\Collection;
use TNW\Salesforce\Synchronize\Unit\Mapping;

class CheckOwnerField
class CheckOwnerField extends Mapping
{
const OWNER_ID_FIELD = 'OwnerId';

Expand Down Expand Up @@ -51,7 +51,10 @@ public function __construct(
*/
public function checkOwner($value, $entity)
{
$value = $this->correctSalesforceId($value);
$actualOwners = $this->salesforceOwners->toOptionArray();
$actualOwners = $this->correctSalesforceIdKey($actualOwners);

if (!isset($actualOwners[$value])) {
$this->logger->messageDebug('The owner %s is not valid anymore, the default owner %s used instead', $value, $this->customerConfig->defaultOwner($entity->getData('config_website')));
$value = $this->customerConfig->defaultOwner($entity->getData('config_website'));
Expand All @@ -60,6 +63,21 @@ public function checkOwner($value, $entity)
return $value;
}

/**
* @param $actualOwners
* @return array
*/
public function correctSalesforceIdKey($actualOwners)
{
$result= [];
foreach ($actualOwners as $salesforceId => $value) {
$salesforceId = $this->correctSalesforceId($salesforceId);
$result[$salesforceId] = $value;
}

return $result;
}

/**
* @param Mapping $subject
* @param callable $proceed
Expand Down
3 changes: 2 additions & 1 deletion Synchronize/Group.php
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,9 @@ protected function createUnits(array $queues)
{
/** @var Units $units */
$units = $this->unitsFactory->create();
foreach ($this->units as $instanceName) {
foreach ($this->units as $key => $instanceName) {
$units->add($this->objectManager->create($instanceName, [
'name' => $key,
'group' => $this,
'queues' => $queues,
'units' => $units
Expand Down
4 changes: 3 additions & 1 deletion Synchronize/Queue.php
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ public function synchronize($collection, $websiteId, $syncJobs = [])
$lastPageNumber = (int)$groupCollection->getLastPageNumber();
for ($i = 1; $i <= $lastPageNumber; $i++) {
$groupCollection->clear();
$groupCollection->setCurPage($i);

$group->messageDebug(
'Start job "%s", phase "%s" for website %s',
Expand Down Expand Up @@ -213,6 +212,9 @@ public function sortGroup($syncJobs = null)

$description[] = sprintf('%s <- %s;', $group->code(), $dependent);

if ($group->code() == $dependent) {
continue;
}
if (isset($sortGroups[$dependent])) {
continue;
}
Expand Down
Loading