Skip to content

Commit

Permalink
Merge pull request #356 from fatchip-Stefan/SW-288_reminder_level
Browse files Browse the repository at this point in the history
SW-288: added reminder levels to payment status mapping
  • Loading branch information
T-Kuchel committed Apr 28, 2020
2 parents 268ace6 + 93241b2 commit ade1727
Show file tree
Hide file tree
Showing 9 changed files with 469 additions and 21 deletions.
3 changes: 3 additions & 0 deletions Frontend/MoptPaymentPayone/Bootstrap.php
Expand Up @@ -691,6 +691,9 @@ protected function createDatabase()

// Add auto_cardtype_detection config table column if needed.
$this->getInstallHelper()->checkAndAddAutoCardtypeDetectionColumn();

// Add new reminder level config table columns if needed.
$this->getInstallHelper()->checkAndAddReminderLevelColumns();
}

/**
Expand Down
14 changes: 11 additions & 3 deletions Frontend/MoptPaymentPayone/Components/Classes/PayoneHelper.php
Expand Up @@ -1011,17 +1011,25 @@ public function mapTransactionStatus($order, $payoneConfig, $payoneStatus = null
* @param object $order
* @param array $payoneConfig
* @param string $payoneStatus
* @param string $reminderLevel
* @param bool $useOrm
*/
public function getMappedShopwarePaymentStatusId($payoneConfig, $payoneStatus = null)
public function getMappedShopwarePaymentStatusId($payoneConfig, $payoneStatus = null, $reminderLevel = null)
{
//if nothing is submitted, set payment state to "open"
if ($payoneStatus === null) {
return 17;
}

//map payone status to shopware payment-status
$configKey = 'state' . ucfirst($payoneStatus);
if ($payoneStatus === 'reminder' && $reminderLevel === '1') {
$configKey = 'state' . ucfirst($payoneStatus);
} elseif ($payoneStatus === 'reminder') {
$configKey = 'state' . ucfirst($payoneStatus).$reminderLevel;
} else {
//map payone status to shopware payment-status
$configKey = 'state' . ucfirst($payoneStatus);
}

if (isset($payoneConfig[$configKey])) {
if ($shopwareState = Shopware()->Models()->getRepository('Shopware\Models\Order\Status')
->find($payoneConfig[$configKey])) {
Expand Down
Expand Up @@ -1732,5 +1732,35 @@ function checkAndAddAutoCardtypeDetectionColumn()
$db->exec($sql);
}
}

/**
* Checks if reminder level columns are present and creates
* columns if not present.
*
* @return void
* @throws Zend_Db_Adapter_Exception
* @throws Zend_Db_Statement_Exception
*/
function checkAndAddReminderLevelColumns()
{
$reminderLevels = array('2', '3', '4', '5', 'A', 'S', 'M', 'I');
$db = Shopware()->Db();
$dbConfig = $db->getConfig();

foreach ($reminderLevels AS $reminderLevel) {
$sql = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='s_plugin_mopt_payone_config'
AND TABLE_SCHEMA = '{$dbConfig['dbname']}'
AND COLUMN_NAME = 'state_reminder$reminderLevel'";

$result = $db->query($sql);

if ($result->rowCount() === 0) {
$sql = "ALTER TABLE `s_plugin_mopt_payone_config`
ADD COLUMN `state_reminder$reminderLevel` INT(11) NULL;";

$db->exec($sql);
}
}
}
}

Expand Up @@ -191,7 +191,8 @@ public function indexAction()
if (!$orderIsCorrupted) {
$mappedShopwareState = $this->moptPayone__helper->getMappedShopwarePaymentStatusId(
$config,
$request->getParam('txaction')
$request->getParam('txaction'),
$request->getParam('reminderlevel')
);

$transaction_status = $request->getParam('transaction_status');
Expand All @@ -215,8 +216,11 @@ public function indexAction()
} else {
$this->savePaymentStatus($transactionId, $order['temporaryID'], $mappedShopwareState);
}
// !Amazonpay

} elseif ($request->getParam('txaction') === 'reminder' && $request->getParam('reminderlevel') === '0') {
// ignore txaction reminder with reminderlevel 0 since this only marks the end of dunning process
} else {
// ! Amazonpay
$this->savePaymentStatus($transactionId, $order['temporaryID'], $mappedShopwareState);
}
}
Expand Down
Expand Up @@ -536,6 +536,46 @@ class MoptPayoneConfig extends ModelEntity
*/
private $sendOrdernumberAsReference;

/**
* @ORM\Column(name="state_reminder2", type="integer", nullable=true, unique=false)
*/
private $stateReminder2;

/**
* @ORM\Column(name="state_reminder3", type="integer", nullable=true, unique=false)
*/
private $stateReminder3;

/**
* @ORM\Column(name="state_reminder4", type="integer", nullable=true, unique=false)
*/
private $stateReminder4;

/**
* @ORM\Column(name="state_reminder5", type="integer", nullable=true, unique=false)
*/
private $stateReminder5;

/**
* @ORM\Column(name="state_reminderA", type="integer", nullable=true, unique=false)
*/
private $stateReminderA;

/**
* @ORM\Column(name="state_reminderM", type="integer", nullable=true, unique=false)
*/
private $stateReminderM;

/**
* @ORM\Column(name="state_reminderS", type="integer", nullable=true, unique=false)
*/
private $stateReminderS;

/**
* @ORM\Column(name="state_reminderI", type="integer", nullable=true, unique=false)
*/
private $stateReminderI;

/**
* @return mixed
*/
Expand Down Expand Up @@ -2116,4 +2156,132 @@ public function setTransTimeoutRaise($transTimeoutRaise)
{
$this->transTimeoutRaise = $transTimeoutRaise;
}

/**
* @return mixed
*/
public function getStateReminder2()
{
return $this->stateReminder2;
}

/**
* @param $stateReminder
*/
public function setStateReminder2($stateReminder)
{
$this->stateReminder2 = $stateReminder;
}

/**
* @return mixed
*/
public function getStateReminder3()
{
return $this->stateReminder3;
}

/**
* @param $stateReminder
*/
public function setStateReminder3($stateReminder)
{
$this->stateReminder3 = $stateReminder;
}

/**
* @return mixed
*/
public function getStateReminder4()
{
return $this->stateReminder4;
}

/**
* @param $stateReminder
*/
public function setStateReminder4($stateReminder)
{
$this->stateReminder4 = $stateReminder;
}

/**
* @return mixed
*/
public function getStateReminder5()
{
return $this->stateReminder5;
}

/**
* @param $stateReminder
*/
public function setStateReminder5($stateReminder)
{
$this->stateReminder5 = $stateReminder;
}

/**
* @return mixed
*/
public function getStateReminderA()
{
return $this->stateReminderA;
}

/**
* @param $stateReminder
*/
public function setStateReminderA($stateReminder)
{
$this->stateReminderA = $stateReminder;
}

/**
* @return mixed
*/
public function getStateReminderM()
{
return $this->stateReminderM;
}

/**
* @param $stateReminder
*/
public function setStateReminderM($stateReminder)
{
$this->stateReminderM = $stateReminder;
}

/**
* @return mixed
*/
public function getStateReminderS()
{
return $this->stateReminderS;
}

/**
* @param $stateReminder
*/
public function setStateReminderS($stateReminder)
{
$this->stateReminderS = $stateReminder;
}

/**
* @return mixed
*/
public function getStateReminderI()
{
return $this->stateReminderI;
}

/**
* @param $stateReminder
*/
public function setStateReminderI($stateReminder)
{
$this->stateReminderI = $stateReminder;
}
}
Expand Up @@ -116,6 +116,15 @@ forwarding/status/invoice = "Invoice"
forwarding/status/paid = "Paid"
forwarding/status/refund = "Refund"
forwarding/status/reminder = "Reminder"
forwarding/status/reminder1 = "Reminder (1)"
forwarding/status/reminder2 = "Reminder (2)"
forwarding/status/reminder3 = "Reminder (3)"
forwarding/status/reminder4 = "Reminder (4)"
forwarding/status/reminder5 = "Reminder (5)"
forwarding/status/reminderA = "Reminder (A)"
forwarding/status/reminderS = "Reminder (S)"
forwarding/status/reminderM = "Reminder (M)"
forwarding/status/reminderI = "Reminder (I)"
forwarding/status/transfer = "Transfer"
forwarding/status/underpaid = "Underpaid"
forwarding/status/VAutorisierung = "VAutorisierung"
Expand Down Expand Up @@ -250,6 +259,15 @@ forwarding/status/invoice = "Invoice"
forwarding/status/paid = "paid"
forwarding/status/refund = "Refund"
forwarding/status/reminder = "Reminder"
forwarding/status/reminder1 = "Reminder (1)"
forwarding/status/reminder2 = "Reminder (2)"
forwarding/status/reminder3 = "Reminder (3)"
forwarding/status/reminder4 = "Reminder (4)"
forwarding/status/reminder5 = "Reminder (5)"
forwarding/status/reminderA = "Reminder (A)"
forwarding/status/reminderS = "Reminder (S)"
forwarding/status/reminderM = "Reminder (M)"
forwarding/status/reminderI = "Reminder (I)"
forwarding/status/transfer = "Transfer"
forwarding/status/underpaid = "Underpaid"
forwarding/status/VAutorisierung = "VAuthorization"
Expand Down Expand Up @@ -329,6 +347,15 @@ forwarding/status/invoice = "Invoice"
forwarding/status/paid = "paid"
forwarding/status/refund = "Refund"
forwarding/status/reminder = "Reminder"
forwarding/status/reminder1 = "Reminder (1)"
forwarding/status/reminder2 = "Reminder (2)"
forwarding/status/reminder3 = "Reminder (3)"
forwarding/status/reminder4 = "Reminder (4)"
forwarding/status/reminder5 = "Reminder (5)"
forwarding/status/reminderA = "Reminder (A)"
forwarding/status/reminderS = "Reminder (S)"
forwarding/status/reminderM = "Reminder (M)"
forwarding/status/reminderI = "Reminder (I)"
forwarding/status/transfer = "Transfer"
forwarding/status/underpaid = "Underpaid"
forwarding/status/VAutorisierung = "VAuthorization"
Expand Down

0 comments on commit ade1727

Please sign in to comment.