Skip to content

Commit

Permalink
version 108
Browse files Browse the repository at this point in the history
  • Loading branch information
C. Proske committed May 15, 2020
1 parent e169f42 commit 7008bdd
Show file tree
Hide file tree
Showing 45 changed files with 3,670 additions and 24 deletions.
290 changes: 268 additions & 22 deletions composer.lock

Large diffs are not rendered by default.

14 changes: 12 additions & 2 deletions info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
<SQL>107.sql</SQL>
<CreateDate>2020-03-02</CreateDate>
</Version>
<Version nr="108">
<CreateDate>2020-04-24</CreateDate>
</Version>
<Hooks>
<Hook id="131">131_globalinclude.php</Hook>
<Hook id="144">144_notify.php</Hook>
Expand Down Expand Up @@ -207,6 +210,13 @@
<VariableLocalized iso="ENG"><![CDATA[The three-digit CVV/CVC number is shown on the reverse for Visa and Mastercard, and on the front of the card for American Express.]]></VariableLocalized>
<VariableLocalized iso="FRE"><![CDATA[Le numéro CVC/CVV à trois chiffres est indiqué au dos de Visa et Mastercard et au recto de la carte American Express.]]></VariableLocalized>
</Variable>
<Variable>
<Name>mcErrorMessage</Name>
<Description>Ein oder mehrere Felder sind ungültig.</Description>
<VariableLocalized iso="GER"><![CDATA[Ein oder mehrere Felder sind ungültig.]]></VariableLocalized>
<VariableLocalized iso="ENG"><![CDATA[One or more fields are invalid.]]></VariableLocalized>
<VariableLocalized iso="FRE"><![CDATA[Un ou plusieurs champs ne sont pas valides.]]></VariableLocalized>
</Variable>
</Locales>
<PaymentMethod>
<Method>
Expand Down Expand Up @@ -242,8 +252,8 @@
<Sockets>0</Sockets>
<ClassFile>JTLMollieCreditCard.php</ClassFile>
<ClassName>JTLMollieCreditCard</ClassName>
<AdditionalTemplateFile>tpl/mollieComponents.tpl</AdditionalTemplateFile>
<TemplateFile>tpl/bestellabschluss.tpl</TemplateFile>
<AdditionalTemplateFile>tpl/mollieComponents.tpl</AdditionalTemplateFile>
<MethodLanguage iso="GER">
<Name>Kreditkarte</Name>
<ChargeName>mollie</ChargeName>
Expand Down Expand Up @@ -425,7 +435,7 @@
<ClassName>JTLMollieIDEAL</ClassName>
<TemplateFile>tpl/bestellabschluss.tpl</TemplateFile>
<MethodLanguage iso="GER">
<Name>Giropay</Name>
<Name>iDEAL</Name>
<ChargeName>mollie</ChargeName>
<InfoText>Bezahlen Sie bequem mit iDEAL.</InfoText>
</MethodLanguage>
Expand Down
64 changes: 64 additions & 0 deletions version/108/adminmenu/info.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<?php

use ws_mollie\Helper;

require_once __DIR__ . '/../class/Helper.php';
try {
Helper::init();

if (array_key_exists("action", $_REQUEST) && $_REQUEST['action'] === 'update-plugin') {
Shop::Smarty()->assign('defaultTabbertab', Helper::getAdminmenu('Info'));
Helper::selfupdate();
}

$svgQuery = http_build_query([
'p' => Helper::oPlugin()->cPluginID,
'v' => Helper::oPlugin()->nVersion,
's' => defined('APPLICATION_VERSION') ? APPLICATION_VERSION : JTL_VERSION,
'b' => defined('JTL_MINOR_VERSION') ? JTL_MINOR_VERSION : '0',
'd' => Helper::getDomain(),
'm' => base64_encode(Helper::getMasterMail(true)),
'php' => PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION . PHP_EXTRA_VERSION,
]);

echo "<script type='application/javascript' src='//cdn.webstollen.com/plugin/js/ws.js?p=" . Helper::oPlugin()->cPluginID . '&v=' . Helper::oPlugin()->nVersion . "'></script>";
echo "<div id='ws-head-bar' class='row'>" .
" <div class='col-md-4 text-center'>" .
" <object data='//lic.dash.bar/info/licence?{$svgQuery}' type='image/svg+xml'>" .
" <img src='//lic.dash.bar/info/licence.png?{$svgQuery}' width='370' height='20' alt='Lizenz Informationen'>" .
' </object>' .
' </div>' .
" <div class='col-md-4 text-center'>" .
" <object data='//lic.dash.bar/info/version?{$svgQuery}' type='image/svg+xml'>" .
" <img src='//lic.dash.bar/info/version.png?{$svgQuery}' width='370' height='20' alt='Update Informationen'>" .
' </object>' .
' </div>' .
" <div class='col-md-4 text-center'>" .
" <object data='//lic.dash.bar/info/help?{$svgQuery}' type='image/svg+xml'>" .
" <img src='//lic.dash.bar/info/help.png?{$svgQuery}' width='370' height='20' alt='Plugin informationen'>" .
' </object>' .
' </div>' .
'</div>';

try {
$latestRelease = Helper::getLatestRelease(array_key_exists('update', $_REQUEST));
if ((int)Helper::oPlugin()->nVersion < (int)$latestRelease->version) {
Shop::Smarty()->assign('update', $latestRelease);
}

} catch (\Exception $e) {
}

Shop::Smarty()->display(Helper::oPlugin()->cAdminmenuPfad . '/tpl/info.tpl');

if (file_exists(__DIR__ . '/_addon.php')) {
try {
include __DIR__ . '/_addon.php';
} catch (Exception $e) {
}
}

} catch (Exception $e) {
echo "<div class='alert alert-danger'>Fehler: {$e->getMessage()}</div>";
Helper::logExc($e);
}
240 changes: 240 additions & 0 deletions version/108/adminmenu/orders.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
<?php

use Mollie\Api\Types\OrderStatus;
use ws_mollie\Helper;
use ws_mollie\Model\Payment;
use ws_mollie\Mollie;

require_once __DIR__ . '/../class/Helper.php';
try {
if (!Helper::init()) {
echo "Kein gültige Lizenz?";
return;
}
require_once __DIR__ . '/../paymentmethod/JTLMollie.php';
global $oPlugin;
$ordersMsgs = [];
if (array_key_exists('action', $_REQUEST)) {
switch ($_REQUEST['action']) {


case 'export':

try {

$export = [];

$from = new DateTime($_REQUEST['from']);
$to = new DateTime($_REQUEST['to']);

$orders = Shop::DB()->executeQueryPrepared('SELECT * FROM xplugin_ws_mollie_payments WHERE kBestellung > 0 AND dCreatedAt >= :From AND dCreatedAt <= :To ORDER BY dCreatedAt', [
':From' => $from->format('Y-m-d'),
':To' => $to->format('Y-m-d'),
], 2);


$api = JTLMollie::API();

header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename=mollie-' . $from->format('Ymd') . '-' . $to->format('Ymd') . '.csv');
header('Pragma: no-cache');

$out = fopen('php://output', 'w');


fputcsv($out, [
'kBestellung',
'OrderID',
'Status (mollie)',
'BestellNr',
'Status (JTL)',
'Mode',
'OriginalOrderNumber',
'Currency',
'Amount',
'Method',
'PaymentID',
'Created'
]);


foreach ($orders as $order) {
$tbestellung = Shop::DB()->executeQueryPrepared('SELECT cBestellNr, cStatus FROM tbestellung WHERE kBestellung = :kBestellung', [':kBestellung' => $order->kBestellung], 1);

$tmp = [
'kBestellung' => $order->kBestellung,
'cOrderId' => $order->kID,
'cStatus' => $order->cStatus,
'cBestellNr' => $tbestellung ? $tbestellung->cBestellNr : $order->cOrderNumber,
'nStatus' => $tbestellung ? $tbestellung->cStatus : 0,
'cMode' => $order->cMode,
'cOriginalOrderNumber' => '',
'cCurrency' => $order->cCurrency,
'fAmount' => $order->fAmount,
'cMethod' => $order->cMethod,
'cPaymentId' => '',
'dCreated' => $order->dCreatedAt,
];

try {
$oOrder = $api->orders->get($order->kID, ['embed' => 'payments']);
$tmp['cStatus'] = $oOrder->status;
$tmp['cOriginalOrderNumber'] = isset($oOrder->metadata->originalOrderNumber) ? $oOrder->metadata->originalOrderNumber : '';
foreach ($oOrder->payments() as $payment) {
if ($payment->status === \Mollie\Api\Types\PaymentStatus::STATUS_PAID) {
$tmp['cPaymentId'] = $payment->id;
}
}
} catch (Exception $e) {
}
fputcsv($out, $tmp);

$export[] = $tmp;
}

fclose($out);
exit();

} catch (Exception $e) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Fehler:' . $e->getMessage()];
}
break;

case 'refund':
if (!array_key_exists('id', $_REQUEST)) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Keine ID angeben!'];
break;
}
$payment = Payment::getPaymentMollie($_REQUEST['id']);
if (!$payment) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Order nicht gefunden!'];
break;
}

$order = JTLMollie::API()->orders->get($_REQUEST['id']);
if ($order->status == OrderStatus::STATUS_CANCELED) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Bestellung bereits storniert'];
break;
}
$refund = JTLMollie::API()->orderRefunds->createFor($order, ['lines' => []]);
Mollie::JTLMollie()->doLog("Order refunded: <br/><pre>" . print_r($refund, 1) . "</pre>", '$' . $payment->kID . '#' . $payment->kBestellung . '§' . $payment->cOrderNumber, LOGLEVEL_NOTICE);

goto order;
break;

case 'cancel':
if (!array_key_exists('id', $_REQUEST)) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Keine ID angeben!'];
break;
}
$payment = Payment::getPaymentMollie($_REQUEST['id']);
if (!$payment) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Order nicht gefunden!'];
break;
}
$order = JTLMollie::API()->orders->get($_REQUEST['id']);
if ($order->status == OrderStatus::STATUS_CANCELED) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Bestellung bereits storniert'];
break;
}
$cancel = JTLMollie::API()->orders->cancel($order->id);
Mollie::JTLMollie()->doLog("Order canceled: <br/><pre>" . print_r($cancel, 1) . "</pre>", '$' . $payment->kID . '#' . $payment->kBestellung . '§' . $payment->cOrderNumber, LOGLEVEL_NOTICE);
goto order;
break;

case 'capture':
if (!array_key_exists('id', $_REQUEST)) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Keine ID angeben!'];
break;
}
$payment = Payment::getPaymentMollie($_REQUEST['id']);
if (!$payment) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Order nicht gefunden!'];
break;
}
$order = JTLMollie::API()->orders->get($_REQUEST['id']);
if ($order->status !== OrderStatus::STATUS_AUTHORIZED && $order->status !== OrderStatus::STATUS_SHIPPING) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Nur autorisierte Zahlungen können erfasst werden!'];
break;
}

$oBestellung = new Bestellung($payment->kBestellung, true);
if (!$oBestellung->kBestellung) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Bestellung konnte nicht geladen werden!'];
break;
}

$logData = '#' . $payment->kBestellung . '$' . $payment->kID . "§" . $oBestellung->cBestellNr;

$options = ['lines' => []];
if ($oBestellung->cTracking) {
$tracking = new stdClass();
$tracking->carrier = utf8_encode($oBestellung->cVersandartName);
$tracking->url = utf8_encode($oBestellung->cTrackingURL);
$tracking->code = utf8_encode($oBestellung->cTracking);
$options['tracking'] = $tracking;
}

// CAPTURE ALL
$shipment = JTLMollie::API()->shipments->createFor($order, $options);
$ordersMsgs[] = (object)['type' => 'success', 'text' => 'Zahlung wurde erfolgreich erfasst!'];
Mollie::JTLMollie()->doLog('Shipment created<br/><pre>' . print_r(['options' => $options, 'shipment' => $shipment], 1) . '</pre>', $logData);
goto order;

case 'order':
order:
if (!array_key_exists('id', $_REQUEST)) {
$ordersMsgs[] = (object)['type' => 'danger', 'text' => 'Keine ID angeben!'];
break;
}

$order = JTLMollie::API()->orders->get($_REQUEST['id'], ['embed' => 'payments,refunds']);
$payment = Payment::getPaymentMollie($_REQUEST['id']);
if ($payment) {
$oBestellung = new Bestellung($payment->kBestellung, false);
//\ws_mollie\Model\Payment::updateFromPayment($order, $oBestellung->kBestellung);
if ($oBestellung->kBestellung && $oBestellung->cBestellNr !== $payment->cOrderNumber) {
Shop::DB()->executeQueryPrepared("UPDATE xplugin_ws_mollie_payments SET cOrderNumber = :cBestellNr WHERE kID = :kID", [
':cBestellNr' => $oBestellung->cBestellNr,
':kID' => $payment->kID,
], 3);
}
}
$logs = Shop::DB()->executeQueryPrepared("SELECT * FROM tzahlungslog WHERE cLogData LIKE :kBestellung OR cLogData LIKE :cBestellNr OR cLogData LIKE :MollieID ORDER BY dDatum DESC, cLog DESC", [
':kBestellung' => '%#' . ($payment->kBestellung ?: '##') . '%',
':cBestellNr' => '%§' . ($payment->cOrderNumber ?: '§§') . '%',
':MollieID' => '%$' . ($payment->kID ?: '$$') . '%',
], 2);

Shop::Smarty()->assign('payment', $payment)
->assign('oBestellung', $oBestellung)
->assign('order', $order)
->assign('logs', $logs)
->assign('ordersMsgs', $ordersMsgs);
Shop::Smarty()->display($oPlugin->cAdminmenuPfad . '/tpl/order.tpl');
return;
}
}


Mollie::fixZahlungsarten();


$payments = Shop::DB()->executeQueryPrepared("SELECT * FROM xplugin_ws_mollie_payments WHERE kBestellung IS NOT NULL AND cStatus != 'created' ORDER BY dCreatedAt DESC LIMIT 1000;", [], 2);
foreach ($payments as $i => $payment) {
$payments[$i]->oBestellung = new Bestellung($payment->kBestellung, false);
}

Shop::Smarty()->assign('payments', $payments)
->assign('ordersMsgs', $ordersMsgs)
->assign('admRoot', str_replace('http:', '', $oPlugin->cAdminmenuPfadURL))
->assign('hasAPIKey', trim(Helper::getSetting("api_key")) !== '');

Shop::Smarty()->display($oPlugin->cAdminmenuPfad . '/tpl/orders.tpl');
} catch (Exception $e) {
echo "<div class='alert alert-danger'>" .
"{$e->getMessage()}<br/>" .
"<blockquote>{$e->getFile()}:{$e->getLine()}<br/><pre>{$e->getTraceAsString()}</pre></blockquote>" .
"</div>";
Helper::logExc($e);
}
Loading

0 comments on commit 7008bdd

Please sign in to comment.