Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
setCustomerComment example
return
new
CartOrderRouteResponse
(
$orderEntity
)
;
}
private
function
addCustomerComment
(
Cart
$cart
, DataBag
$data
)
: void
{
$customerComment
=
ltrim
(
rtrim
(
(string)
$data
->
get
(
OrderService::CUSTOMER_COMMENT_KEY, ''
)
)
)
;
if
(
$customerComment
=== ''
)
{
return
;
}
$cart
->
setCustomerComment
(
$customerComment
)
;
}
private
function
addAffiliateTracking
(
Cart
$cart
, DataBag
$data
)
: void
{
$affiliateCode
=
$data
->
get
(
OrderService::AFFILIATE_CODE_KEY
)
;
$campaignCode
=
$data
->
get
(
OrderService::CAMPAIGN_CODE_KEY
)
;
if
(
$affiliateCode
)
{
$cart
->
setAffiliateCode
(
$affiliateCode
)
;
}
if
(
$campaignCode
)
{
private
readonly TransactionProcessor
$transactionProcessor
,
private
readonly iterable
$processors
,
private
readonly iterable
$collectors
,
private
readonly ScriptExecutor
$executor
)
{
}
public
function
process
(
Cart
$original
, SalesChannelContext
$context
, CartBehavior
$behavior
)
: Cart
{
return
Profiler::
trace
(
'cart::process',
function
D
)
use
(
$original
,
$context
,
$behavior
)
{
$cart
=
new
Cart
(
$original
->
getToken
(
)
)
;
$cart
->
setCustomerComment
(
$original
->
getCustomerComment
(
)
)
;
$cart
->
setAffiliateCode
(
$original
->
getAffiliateCode
(
)
)
;
$cart
->
setCampaignCode
(
$original
->
getCampaignCode
(
)
)
;
$cart
->
setSource
(
$original
->
getSource
(
)
)
;
$cart
->
setBehavior
(
$behavior
)
;
$cart
->
addState
(
...
$original
->
getStates
(
)
)
;
if
(
$behavior
->
hookAware
(
)
)
{
// reset modified state that apps always have the same entry state
foreach
(
$original
->
getLineItems
(
)
->
getFlat
(
)
as
$item
)
{
$item
->
markUnModifiedByApp
(
)
;
}
}
static
::
assertEquals
(
2,
$newShippingCosts
->
getCalculatedTaxes
(
)
->
count
(
)
)
;
static
::
assertNotNull
(
$firstTax
)
;
static
::
assertSame
(
19.0,
$firstTax
->
getTaxRate
(
)
)
;
static
::
assertNotNull
(
$lastTax
)
;
static
::
assertSame
(
5.0,
$lastTax
->
getTaxRate
(
)
)
;
}
public
function
testAddProductToOrderWithCustomerComment
(
)
: void
{
// create order
$cart
=
$this
->
generateDemoCart
(
)
;
$cart
->
setCustomerComment
(
'test comment'
)
;
$cart
->
setAffiliateCode
(
'test_affiliate_code'
)
;
$cart
->
setCampaignCode
(
'test_campaign_code'
)
;
$order
=
$this
->
persistCart
(
$cart
)
;
$orderId
=
$order
[
'orderId'
]
;
$oldTotal
=
$order
[
'total'
]
;
$oldOrderStateId
=
$order
[
'stateId'
]
;
// create version of order
$versionId
=
$this
->
createVersionedOrder
(
$orderId
)
;
->
save
(
$cart
,
$this
->
getSalesChannelContext
(
$cart
->
getToken
(
)
)
)
;
$token
=
$this
->
getContainer
(
)
->
get
(
Connection::
class
)
->
fetchOne
(
'SELECT token FROM cart WHERE token = :token',
[
'token' =>
$cart
->
getToken
(
)
]
)
;
static
::
assertNotEmpty
(
$token
)
;
}
public
function
testEmptyCartWithCustomerCommentIsSaved
(
)
: void
{
$cart
=
new
Cart
(
'existing'
)
;
$cart
->
setCustomerComment
(
'Foo'
)
;
$this
->
getContainer
(
)
->
get
(
CartPersister::
class
)
->
save
(
$cart
,
$this
->
getSalesChannelContext
(
$cart
->
getToken
(
)
)
)
;
$token
=
$this
->
getContainer
(
)
->
get
(
Connection::
class
)
->
fetchOne
(
'SELECT token FROM cart WHERE token = :token',
[
'token' =>
$cart
->
getToken
(
)
]
)
;
static
::
assertNotEmpty
(
$token
)
;
}
public
function
testSaveWithItems
(
)
: void
{
foreach
(
[
'comment', 'customerComment', 'internalComment', 'temporaryId', 'trackingCode', 'transactionId', 'referer'
]
as
$key
)
{
if
(
empty
(
$params
[
$key
]
)
)
{
unset
(
$params
[
$key
]
)
;
}
}
// Create model
$order
=
new
OrderModel
(
)
;
// Setting default values, necessary because of not-nullable table columns
$order
->
setComment
(
''
)
;
$order
->
setCustomerComment
(
''
)
;
$order
->
setInternalComment
(
''
)
;
$order
->
setTemporaryId
(
''
)
;
$order
->
setTransactionId
(
''
)
;
$order
->
setTrackingCode
(
''
)
;
$order
->
setReferer
(
''
)
;
$order
->
fromArray
(
$params
)
;
$violations
=
$this
->
getManager
(
)
->
validate
(
$order
)
;
if
(
$violations
->
count
(
)
> 0
)
{
throw
new
ValidationException
(
$violations
)
;
}
if
(
$order
->
getLineItems
(
)
=== null
)
{
throw
OrderException::
missingAssociation
(
'lineItems'
)
;
}
if
(
$order
->
getDeliveries
(
)
=== null
)
{
throw
OrderException::
missingAssociation
(
'deliveries'
)
;
}
$cart
=
new
Cart
(
Uuid::
randomHex
(
)
)
;
$cart
->
setPrice
(
$order
->
getPrice
(
)
)
;
$cart
->
setCustomerComment
(
$order
->
getCustomerComment
(
)
)
;
$cart
->
setAffiliateCode
(
$order
->
getAffiliateCode
(
)
)
;
$cart
->
setCampaignCode
(
$order
->
getCampaignCode
(
)
)
;
$cart
->
setSource
(
$order
->
getSource
(
)
)
;
$cart
->
addExtension
(
self::ORIGINAL_ID,
new
IdStruct
(
$order
->
getId
(
)
)
)
;
$orderNumber
=
$order
->
getOrderNumber
(
)
;
if
(
$orderNumber
=== null
)
{
throw
OrderException::
missingOrderNumber
(
$order
->
getId
(
)
)
;
}
$cart
->
addExtension
(
self::ORIGINAL_ORDER_NUMBER,
new
IdStruct
(
$orderNumber
)
)
;
/* NEXT-708 support: - transactions */