Skip to content
GitLab
Erkunden
Anmelden
Registrieren
Primärnavigation
Suchen oder aufrufen …
Projekt
coupons
Verwalten
Aktivität
Mitglieder
Labels
Planen
Tickets
6
Ticketübersichten
Meilensteine
Wiki
Code
Merge Requests
0
Repository
Branch
Commits
Tags
Repository-Diagramm
Revisionen vergleichen
Build
Pipelines
Aufgaben
Pipeline-Zeitpläne
Artefakte
Bereitstellung
Releases
Betreiben
Umgebungen
Überwachen
Vorfälle
Service-Desk
Analysieren
Wertschöpfungskettenanalyse
Mitwirkenden-Analyse
CI/CD-Analyse
Repository-Analysen
Hilfe
Hilfe
Support
GitLab-Dokumentation
GitLab-Pläne vergleichen
Community-Forum
Zu GitLab beitragen
Feedback geben
Tastenkürzel
?
Code-Schnipsel
Gruppen
Projekte
Show more breadcrumbs
QUIQQER
coupons
Commits
d41ca92c
Commit
d41ca92c
erstellt
vor 4 Jahren
von
Henning Leutz
Dateien durchsuchen
Optionen
Downloads
Patches
Einfaches Diff
refactor:
#7
Übergeordneter
8e03aaa1
No related branches found
Branches enthält Commit
No related tags found
Tags enthält Commit
Keine zugehörigen Merge Requests gefunden
Änderungen
3
Leerzeichenänderungen ausblenden
Inline
Nebeneinander
3 geänderte Dateien
bin/frontend/controls/CouponCodeInput.js
+33
-6
33 Ergänzungen, 6 Löschungen
bin/frontend/controls/CouponCodeInput.js
events.xml
+5
-1
5 Ergänzungen, 1 Löschung
events.xml
src/QUI/ERP/Coupons/Events.php
+172
-17
172 Ergänzungen, 17 Löschungen
src/QUI/ERP/Coupons/Events.php
werden angezeigt
mit
210 Ergänzungen
und
24 Löschungen
bin/frontend/controls/CouponCodeInput.js
+
33
−
6
Zeige Datei @
d41ca92c
...
...
@@ -6,8 +6,10 @@
*/
define
(
'
package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput
'
,
[
'
qui/QUI
'
,
'
qui/controls/Control
'
,
'
qui/controls/loader/Loader
'
,
'
utils/Session
'
,
'
package/quiqqer/coupons/bin/frontend/CouponCodes
'
,
...
...
@@ -18,7 +20,7 @@ define('package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput', [
'
text!package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput.html
'
,
'
css!package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput.css
'
],
function
(
QUIControl
,
QUILoader
,
CouponCodes
,
QUIAjax
,
QUILocale
,
Mustache
,
template
)
{
],
function
(
QUI
,
QUIControl
,
QUILoader
,
Sessions
,
CouponCodes
,
QUIAjax
,
QUILocale
,
Mustache
,
template
)
{
"
use strict
"
;
var
lg
=
'
quiqqer/coupons
'
;
...
...
@@ -135,10 +137,12 @@ define('package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput', [
return
;
}
QUIAjax
.
get
(
'
package_quiqqer_order_ajax_frontend_basket_getOrderProcessUrl
'
,
function
(
url
)
{
window
.
location
=
url
+
'
?coupon=
'
+
code
;
},
{
'
package
'
:
'
quiqqer/order
'
self
.
$addCouponCodeToSession
(
code
).
then
(
function
()
{
QUIAjax
.
get
(
'
package_quiqqer_order_ajax_frontend_basket_getOrderProcessUrl
'
,
function
(
url
)
{
window
.
location
=
url
+
'
?coupon=
'
+
code
;
},
{
'
package
'
:
'
quiqqer/order
'
});
});
});
},
{
...
...
@@ -163,7 +167,30 @@ define('package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput', [
return
;
}
OrderProcess
.
reload
();
self
.
$addCouponCodeToSession
(
code
).
then
(
function
()
{
OrderProcess
.
reload
();
});
});
},
/**
*
* @param code
* @return {Promise}
*/
$addCouponCodeToSession
:
function
(
code
)
{
return
Sessions
.
get
(
'
quiqqer-coupons
'
).
then
(
function
(
coupons
)
{
if
(
!
coupons
||
typeOf
(
coupons
)
!==
'
array
'
)
{
coupons
=
[];
}
coupons
.
push
(
code
);
coupons
=
coupons
.
filter
(
function
(
value
,
index
,
self
)
{
return
self
.
indexOf
(
value
)
===
index
;
});
return
Sessions
.
set
(
'
quiqqer-coupons
'
,
JSON
.
encode
(
coupons
));
});
},
...
...
This diff is collapsed.
Zum Erweitern klicken.
events.xml
+
5
−
1
Zeige Datei @
d41ca92c
...
...
@@ -20,4 +20,8 @@
fire=
"\QUI\ERP\Coupons\Events::onOrderProcess"
/>
</events>
\ No newline at end of file
<event
on=
"onQuiqqerOrderBasketRemovePos"
fire=
"\QUI\ERP\Coupons\Events::onQuiqqerOrderBasketRemovePos"
/>
</events>
This diff is collapsed.
Zum Erweitern klicken.
src/QUI/ERP/Coupons/Events.php
+
172
−
17
Zeige Datei @
d41ca92c
...
...
@@ -61,29 +61,119 @@ public static function onOrderProcess(QUI\ERP\Order\OrderProcess $OrderProcess)
return
;
}
if
(
!
isset
(
$_GET
[
'coupon'
]))
{
$coupons
=
QUI
::
getSession
()
->
get
(
'quiqqer-coupons'
);
if
(
\is_string
(
$coupons
))
{
$coupons
=
\json_decode
(
$coupons
,
true
);
}
if
(
!
\is_array
(
$coupons
))
{
$coupons
=
[];
}
if
(
isset
(
$_GET
[
'coupon'
]))
{
$coupons
[]
=
$_GET
[
'coupon'
];
}
$coupons
=
\array_unique
(
$coupons
);
if
(
empty
(
$coupons
))
{
return
;
}
$Order
=
$OrderProcess
->
getOrder
();
foreach
(
$coupons
as
$coupon
)
{
self
::
addCouponToOrder
(
$Order
,
$coupon
);
}
}
/**
* @param QUI\ERP\Order\Basket\Basket $Basket
* @param $pos
*/
public
static
function
onQuiqqerOrderBasketRemovePos
(
QUI
\ERP\Order\Basket\Basket
$Basket
,
$pos
)
{
$Order
=
null
;
try
{
$Order
=
$OrderProcess
->
getOrder
();
$code
=
Handler
::
sanitizeCode
(
$_GET
[
'coupon'
]);
$Order
=
$Basket
->
getOrder
();
}
catch
(
QUI\Exception
$Exception
)
{
$Orders
=
QUI\ERP\Order\Handler
::
getInstance
();
$CouponCode
=
Handler
::
getCouponCodeByCode
(
$code
);
$CouponCode
->
checkRedemption
(
QUI
::
getUserBySession
());
try
{
$Order
=
$Orders
->
getLastOrderInProcessFromUser
(
QUI
::
getUserBySession
());
}
catch
(
QUI\Exception
$Exception
)
{
}
}
$coupons
=
$Order
->
getDataEntry
(
'quiqqer-coupons'
);
$coupons
[]
=
$code
;
if
(
!
$Order
)
{
QUI
::
getSession
()
->
remove
(
'quiqqer-coupons'
)
;
$coupons
=
\array_unique
(
$coupons
);
return
;
}
$Order
->
setData
(
'quiqqer-coupons'
,
$coupons
);
$Order
->
update
();
$Article
=
$Order
->
getArticles
()
->
getArticle
(
$pos
);
$customData
=
$Article
->
getCustomData
();
$orderCoupons
=
$Order
->
getDataEntry
(
'quiqqer-coupons'
);
$CouponCode
->
addToOrder
(
$Order
);
}
catch
(
\Exception
$Exception
)
{
$articleCouponCode
=
false
;
if
(
isset
(
$customData
[
'package'
])
&&
isset
(
$customData
[
'code'
]))
{
$articleCouponCode
=
$customData
[
'code'
];
}
if
(
!
$articleCouponCode
)
{
return
;
}
// custom data has code params, so article is an coupon code
// we need to delete it
if
(
\in_array
(
$articleCouponCode
,
$orderCoupons
))
{
$pos
=
\array_search
(
$articleCouponCode
,
$orderCoupons
);
unset
(
$orderCoupons
[
$pos
]);
$Order
->
setData
(
'quiqqer-coupons'
,
$orderCoupons
);
try
{
$Order
->
save
();
}
catch
(
QUI\Exception
$Exception
)
{
}
}
// look at session coupons
// we need to delete it
$coupons
=
QUI
::
getSession
()
->
get
(
'quiqqer-coupons'
);
if
(
\is_string
(
$coupons
))
{
$coupons
=
\json_decode
(
$coupons
,
true
);
}
if
(
!
\is_array
(
$coupons
)
||
empty
(
$coupons
))
{
return
;
}
if
(
!
\in_array
(
$customData
[
'code'
],
$coupons
))
{
return
;
}
// remove code from session
// because code is deleted
$newCouponList
=
[];
foreach
(
$coupons
as
$coupon
)
{
if
(
$customData
[
'code'
]
!==
$coupon
)
{
$newCouponList
[]
=
$coupon
;
}
}
if
(
empty
(
$newCouponList
))
{
QUI
::
getSession
()
->
remove
(
'quiqqer-coupons'
);
}
else
{
QUI
::
getSession
()
->
set
(
'quiqqer-coupons'
,
\json_encode
(
$newCouponList
));
}
}
...
...
@@ -99,14 +189,23 @@ public static function onQuiqqerOrderBasketToOrder(
QUI
\ERP\Order\AbstractOrder
$Order
,
QUI
\ERP\Products\Product\ProductList
$Products
)
{
$coupons
=
$Order
->
getDataEntry
(
'quiqqer-coupons'
);
$coupons
=
$Order
->
getDataEntry
(
'quiqqer-coupons'
);
$sessionCoupons
=
QUI
::
getSession
()
->
get
(
'quiqqer-coupons'
);
if
(
!
$coupons
)
{
return
;
if
(
!
\is_array
(
$coupons
)
)
{
$coupons
=
[]
;
}
if
(
!
\is_array
(
$coupons
))
{
return
;
if
(
\is_string
(
$sessionCoupons
))
{
$sessionCoupons
=
\json_decode
(
$sessionCoupons
,
true
);
if
(
\is_array
(
$sessionCoupons
))
{
$coupons
=
\array_merge
(
$coupons
,
$sessionCoupons
);
}
$coupons
=
\array_unique
(
$coupons
);
self
::
addSessionCouponsToOrder
(
$Order
,
$sessionCoupons
);
}
if
(
empty
(
$coupons
))
{
...
...
@@ -222,4 +321,60 @@ public static function onQuiqqerOrderSuccessful($Order)
}
}
}
/**
* @param $Order
* @param $coupons
*/
protected
static
function
addSessionCouponsToOrder
(
$Order
,
$coupons
)
{
if
(
!
\is_array
(
$coupons
))
{
return
;
}
// coupons as article if not added
$Articles
=
$Order
->
getArticles
();
$isInArticles
=
function
(
$code
)
use
(
$Articles
)
{
foreach
(
$Articles
as
$Article
)
{
$customData
=
$Article
->
getCustomData
();
if
(
isset
(
$customData
[
'code'
])
&&
$customData
[
'code'
]
===
$code
)
{
return
true
;
}
}
return
false
;
};
foreach
(
$coupons
as
$coupon
)
{
if
(
$isInArticles
(
$coupon
)
===
false
)
{
self
::
addCouponToOrder
(
$Order
,
$coupon
);
}
}
}
/**
* @param $Order
* @param $coupon
*/
protected
static
function
addCouponToOrder
(
$Order
,
$coupon
)
{
try
{
$code
=
Handler
::
sanitizeCode
(
$coupon
);
$CouponCode
=
Handler
::
getCouponCodeByCode
(
$code
);
$CouponCode
->
checkRedemption
(
QUI
::
getUserBySession
());
$coupons
=
$Order
->
getDataEntry
(
'quiqqer-coupons'
);
$coupons
[]
=
$code
;
$coupons
=
\array_unique
(
$coupons
);
$Order
->
setData
(
'quiqqer-coupons'
,
$coupons
);
$Order
->
update
();
$CouponCode
->
addToOrder
(
$Order
);
}
catch
(
\Exception
$Exception
)
{
}
}
}
This diff is collapsed.
Zum Erweitern klicken.
Vorschau
0%
Wiederholen
oder
Neue Datei anhängen
.
Abbrechen
You are about to add
0
people
to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Kommentar speichern
Abbrechen
Bitte
registrieren
oder
Anmelden
zum Kommentieren