Exponential 6.0.13 Exponential Enterprise Open Source CMS - PHP Class Reference

ezmultipricetype.php
Go to the documentation of this file.
1 <?php
18 class eZMultiPriceType extends eZDataType
19 {
20 const DATA_TYPE_STRING = 'ezmultiprice';
21 const DEFAULT_CURRENCY_CODE_FIELD = 'data_text1';
22 const DEFAULT_CURRENCY_CODE_VARIABLE = '_ezmultiprice_currency_code_';
23 const INCLUDE_VAT_FIELD = 'data_int1';
24 const INCLUDE_VAT_VARIABLE = '_ezmultiprice_include_vat_';
25 const VAT_ID_FIELD = 'data_float1';
26 const VAT_ID_VARIABLE = '_ezmultiprice_vat_id_';
27 const INCLUDED_VAT = 1;
28 const EXCLUDED_VAT = 2;
29
30 public function __construct()
31 {
32 parent::__construct( self::DATA_TYPE_STRING, ezpI18n::tr( 'kernel/classes/datatypes', 'Multi-price', 'Datatype name' ),
33 array( 'serialize_supported' => true ) );
34 }
35
40 function validateObjectAttributeHTTPInput( $http, $base, $contentObjectAttribute )
41 {
42 // Check "price inc/ex VAT" and "VAT type" fields.
43 $vatTypeID = $http->postVariable( $base . '_ezmultiprice_vat_id_' . $contentObjectAttribute->attribute( 'id' ) );
44 $vatExInc = $http->postVariable( $base . '_ezmultiprice_inc_ex_vat_' . $contentObjectAttribute->attribute( 'id' ) );
45
46
47 if ( $vatExInc == 1 && $vatTypeID == -1 )
48 {
49 $contentObjectAttribute->setValidationError( ezpI18n::tr( 'kernel/classes/datatypes',
50 'Dynamic VAT cannot be included.' ) );
51 return eZInputValidator::STATE_INVALID;
52 }
53
54 // Check price.
55 if ( $http->hasPostVariable( $base . '_price_array_' . $contentObjectAttribute->attribute( "id" ) ) )
56 {
57 $customPriceList = $http->postVariable( $base . '_price_array_' . $contentObjectAttribute->attribute( "id" ) );
58 foreach ( $customPriceList as $currencyCode => $value )
59 {
60 if( $contentObjectAttribute->validateIsRequired() || ( $value != '' ) )
61 {
62 if ( !preg_match( "#^[0-9]+(.){0,1}[0-9]{0,2}$#", $value ) )
63 {
64 $contentObjectAttribute->setValidationError( ezpI18n::tr( 'kernel/classes/datatypes',
65 "Invalid price for '%currencyCode' currency ",
66 false,
67 array( '%currencyCode' => $currencyCode ) ) );
68 return eZInputValidator::STATE_INVALID;
69 }
70 }
71 }
72 }
73 else if ( $contentObjectAttribute->validateIsRequired() )
74 {
75 $contentObjectAttribute->setValidationError( ezpI18n::tr( 'kernel/classes/datatypes', 'Input required' ) );
76 return eZInputValidator::STATE_INVALID;
77 }
78
79 return eZInputValidator::STATE_ACCEPTED;
80 }
81
82 function storeObjectAttribute( $attribute )
83 {
84 $multiprice = $attribute->attribute( 'content' );
85 $multiprice->store();
86 }
87
91 function initializeClassAttribute( $classAttribute )
92 {
93 if ( $classAttribute->attribute( self::INCLUDE_VAT_FIELD ) == 0 )
94 $classAttribute->setAttribute( self::INCLUDE_VAT_FIELD, self::INCLUDED_VAT );
95 $classAttribute->store();
96 }
97
101 function initializeObjectAttribute( $contentObjectAttribute, $currentVersion, $originalContentObjectAttribute )
102 {
103 if ( $currentVersion != false )
104 {
105 $dataText = $originalContentObjectAttribute->attribute( 'data_text' );
106 $contentObjectAttribute->setAttribute( "data_text", $dataText );
107 }
108 }
109
113 function postInitializeObjectAttribute( $objectAttribute, $currentVersion, $originalContentObjectAttribute )
114 {
115 $contentClassAttribute = $objectAttribute->contentClassAttribute();
116 $multiprice = new eZMultiPrice( $contentClassAttribute, $objectAttribute );
117
118 if ( $currentVersion == false )
119 {
120 $defaultCurrency = $contentClassAttribute->attribute( self::DEFAULT_CURRENCY_CODE_FIELD );
121 $multiprice->setCustomPrice( $defaultCurrency, '0.00' );
122 $multiprice->updateAutoPriceList();
123 $multiprice->store();
124 }
125 else
126 {
127 $originalMultiprice = $originalContentObjectAttribute->content();
128 $multiprice = new eZMultiPrice( $contentClassAttribute, $objectAttribute );
129
130 foreach ( $originalMultiprice->priceList() as $price )
131 {
132 $multiprice->setPriceByCurrency( $price->attribute( 'currency_code' ), $price->attribute( 'value' ), $price->attribute( 'type') );
133 }
134
135 $multiprice->store();
136 }
137 }
138
139 function fetchClassAttributeHTTPInput( $http, $base, $classAttribute )
140 {
141 $currencyCodeVariable = $base . self::DEFAULT_CURRENCY_CODE_VARIABLE . $classAttribute->attribute( 'id' );
142 if ( $http->hasPostVariable( $currencyCodeVariable ) )
143 {
144 $currencyCode = $http->postVariable( $currencyCodeVariable );
145 $classAttribute->setAttribute( self::DEFAULT_CURRENCY_CODE_FIELD, $currencyCode );
146 }
147
148 $isVatIncludedVariable = $base . self::INCLUDE_VAT_VARIABLE . $classAttribute->attribute( 'id' );
149 if ( $http->hasPostVariable( $isVatIncludedVariable ) )
150 {
151 $isVatIncluded = $http->postVariable( $isVatIncludedVariable );
152 $classAttribute->setAttribute( self::INCLUDE_VAT_FIELD, $isVatIncluded );
153 }
154 $vatIDVariable = $base . self::VAT_ID_VARIABLE . $classAttribute->attribute( 'id' );
155 if ( $http->hasPostVariable( $vatIDVariable ) )
156 {
157 $vatID = $http->postVariable( $vatIDVariable );
158 $classAttribute->setAttribute( self::VAT_ID_FIELD, $vatID );
159 }
160 return true;
161 }
162
166 function fetchObjectAttributeHTTPInput( $http, $base, $contentObjectAttribute )
167 {
168 $multiprice = $contentObjectAttribute->attribute( 'content' );
169
170 $priceArrayName = $base . "_price_array_" . $contentObjectAttribute->attribute( "id" );
171 if ( $http->hasPostVariable( $priceArrayName ) )
172 {
173 $customPriceList = $http->postVariable( $priceArrayName );
174
175 foreach ( $customPriceList as $currencyCode => $value )
176 $multiprice->setCustomPrice( $currencyCode, $value );
177 }
178
179 $multiprice->updateAutoPriceList();
180
181 $vatType = $http->postVariable( $base . '_ezmultiprice_vat_id_' . $contentObjectAttribute->attribute( 'id' ) );
182 $vatExInc = $http->postVariable( $base . '_ezmultiprice_inc_ex_vat_' . $contentObjectAttribute->attribute( 'id' ) );
183 $multiprice->setAttribute( 'selected_vat_type', $vatType );
184 $multiprice->setAttribute( 'is_vat_included', $vatExInc );
185
186 $data_text = $vatType . ',' . $vatExInc;
187 $contentObjectAttribute->setAttribute( 'data_text', $data_text );
188
189 return true;
190 }
191
195 function objectAttributeContent( $contentObjectAttribute )
196 {
197 $classAttribute = $contentObjectAttribute->contentClassAttribute();
198 $multiprice = new eZMultiPrice( $classAttribute, $contentObjectAttribute );
199
200 if ( $contentObjectAttribute->attribute( 'data_text' ) != '' )
201 {
202 list( $vatType, $vatExInc ) = explode( ',', $contentObjectAttribute->attribute( 'data_text' ), 2 );
203
204 $multiprice->setAttribute( 'selected_vat_type', $vatType );
205 $multiprice->setAttribute( 'is_vat_included', $vatExInc );
206 }
207
208 return $multiprice;
209 }
210
214 function classAttributeContent( $classAttribute )
215 {
216 $contentObjectAttribute = false;
217 $multiprice = new eZMultiPrice( $classAttribute, $contentObjectAttribute );
218 return $multiprice;
219 }
220
221 function customObjectAttributeHTTPAction( $http, $action, $contentObjectAttribute, $parameters )
222 {
223 switch ( $action )
224 {
225 case 'set_custom_price' :
226 {
227 $selectedCurrencyName = 'ContentObjectAttribute' . '_selected_currency_' . $contentObjectAttribute->attribute( 'id' );
228 if ( $http->hasPostVariable( $selectedCurrencyName ) )
229 {
230 $selectedCurrency = $http->postVariable( $selectedCurrencyName );
231 $multiprice = $contentObjectAttribute->content();
232
233 // to keep right order of currency after adding we do 'remove' and 'add'
234 // instead of just '$multiprice->setCustomPrice( $currencyCode, false )'
235 $price = $multiprice->priceByCurrency( $selectedCurrency );
236 $multiprice->removePriceByCurrency( $selectedCurrency );
237 $multiprice->setCustomPrice( $selectedCurrency, $price->attribute( 'value' ) );
238
239 $multiprice->store();
240 }
241 }break;
242
243 case 'remove_prices' :
244 {
245 $removePriceArrayName = 'ContentObjectAttribute' . '_remove_price_array_' . $contentObjectAttribute->attribute( 'id' );
246 if ( $http->hasPostVariable( $removePriceArrayName ) )
247 {
248 $removePriceArray = $http->postVariable( $removePriceArrayName );
249 $multiprice = $contentObjectAttribute->content();
250
251 foreach( $removePriceArray as $currencyCode => $value )
252 $multiprice->setAutoPrice( $currencyCode, false );
253
254 $multiprice->updateAutoPriceList();
255 $multiprice->store();
256 }
257 }break;
258
259 default :
260 {
261 eZDebug::writeError( 'Unknown custom HTTP action: ' . $action, 'eZMultiPriceType' );
262 }break;
263 }
264 }
265
274 function contentActionList( $classAttribute )
275 {
276 $actionList = parent::contentActionList( $classAttribute );
277 $actionList[] = array( 'name' => ezpI18n::tr( 'kernel/classes/datatypes', 'Add to basket' ),
278 'action' => 'ActionAddToBasket'
279 );
280 $actionList[] = array( 'name' => ezpI18n::tr( 'kernel/classes/datatypes', 'Add to wish list' ),
281 'action' => 'ActionAddToWishList'
282 );
283 return $actionList;
284 }
285
289 function deleteStoredObjectAttribute( $objectAttribute, $version = null )
290 {
291 eZMultiPrice::removeByID( $objectAttribute->attribute( 'id' ), $version );
292 }
293
294 function title( $contentObjectAttribute, $name = null )
295 {
296 return '';
297 }
298
299 function hasObjectAttributeContent( $contentObjectAttribute )
300 {
301 return true;
302 }
303
304 function toString( $contentObjectAttribute )
305 {
306
307 $multiprice = $contentObjectAttribute->attribute( 'content' );
308
309 $priceList = $multiprice->attribute( 'price_list' );
310
311 $priceArray = explode( ',', $contentObjectAttribute->attribute( 'data_text' ) );
312 foreach ( $priceList as $priceData )
313 {
314 $type = $priceData->attribute( 'type' );
315 if ( $type == 1 )
316 {
317 $type = 'CUSTOM';
318 }
319 else if ( $type == 2 )
320 {
321 $type = 'AUTO';
322 }
323 else
324 $type = 'LIMIT';
325 $priceArray = array_merge( $priceArray, array( $priceData->attribute( 'currency_code'), $priceData->attribute( 'value' ), $type ) );
326 }
327 return eZStringUtils::implodeStr( $priceArray, '|' );
328 }
329
330
331 function fromString( $contentObjectAttribute, $string )
332 {
333 if ( $string == '' )
334 return true;
335
336 $multiprice = $contentObjectAttribute->attribute( 'content' );
337
338 $multipriceData = eZStringUtils::explodeSTR( $string, '|' );
339
340 $vatType = array_shift( $multipriceData );
341 $vatExInc = array_shift( $multipriceData );
342
343 $contentObjectAttribute->setAttribute( 'data_text', $vatType . ',' . $vatExInc );
344
345 while ( $multipriceData )
346 {
347 $currencyCode = array_shift( $multipriceData );
348 $value = array_shift( $multipriceData );
349
350 $type = array_shift( $multipriceData );
351 if ( $type == 'CUSTOM' )
352 {
353 $type = 1;
354 }
355 else if ( $type == 'AUTO' )
356 {
357 $type = 2;
358 }
359 else
360 $type = 5000;
361
362 $multiprice->setPriceByCurrency( $currencyCode, $value, $type );
363
364 }
365 $multiprice->store();
366 return $multiprice;
367
368 }
369
370 function serializeContentClassAttribute( $classAttribute, $attributeNode, $attributeParametersNode )
371 {
372 $price = $classAttribute->content();
373 if ( $price )
374 {
375 $vatIncluded = $price->attribute( 'is_vat_included' );
376 $vatTypes = $price->attribute( 'vat_type' );
377
378 $dom = $attributeParametersNode->ownerDocument;
379 $vatIncludedNode = $dom->createElement( 'vat-included' );
380 $vatIncludedNode->setAttribute( 'is-set', $vatIncluded ? 'true' : 'false' );
381 $attributeParametersNode->appendChild( $vatIncludedNode );
382 $vatTypeNode = $dom->createElement( 'vat-type' );
383 $chosenVatType = $classAttribute->attribute( self::VAT_ID_FIELD );
384 $gotVat = false;
385 foreach ( $vatTypes as $vatType )
386 {
387 $id = $vatType->attribute( 'id' );
388 if ( $id == $chosenVatType )
389 {
390 $vatTypeNode->setAttribute( 'name', $vatType->attribute( 'name' ) );
391 $vatTypeNode->setAttribute( 'percentage', $vatType->attribute( 'percentage' ) );
392 $gotVat = true;
393 break;
394 }
395 }
396 if ( $gotVat )
397 $attributeParametersNode->appendChild( $vatTypeNode );
398
399 $defualtCurrency = $classAttribute->attribute( self::DEFAULT_CURRENCY_CODE_FIELD );
400 $defaultCurrencyNode = $dom->createElement( 'default-currency' );
401 $defaultCurrencyNode->setAttribute( 'code', $defualtCurrency );
402 $attributeParametersNode->appendChild( $defaultCurrencyNode );
403 }
404 }
405
406 function unserializeContentClassAttribute( $classAttribute, $attributeNode, $attributeParametersNode )
407 {
408 $vatNode = $attributeParametersNode->getElementsByTagName( 'vat-included' )->item( 0 );
409 $vatIncluded = strtolower( $vatNode->getAttribute( 'is-set' ) ) == 'true';
410 if ( $vatIncluded )
411 $vatIncluded = self::INCLUDED_VAT;
412 else
413 $vatIncluded = self::EXCLUDED_VAT;
414
415 $classAttribute->setAttribute( self::INCLUDE_VAT_FIELD, $vatIncluded );
416 $vatTypeNode = $attributeParametersNode->getElementsByTagName( 'vat-type' )->item( 0 );
417 $vatName = $vatTypeNode->getAttribute( 'name' );
418 $vatPercentage = $vatTypeNode->getAttribute( 'percentage' );
419 $vatID = false;
420 $vatTypes = eZVatType::fetchList();
421 foreach ( $vatTypes as $vatType )
422 {
423 if ( $vatType->attribute( 'name' ) == $vatName and
424 $vatType->attribute( 'percentage' ) == $vatPercentage )
425 {
426 $vatID = $vatType->attribute( 'id' );
427 break;
428 }
429 }
430 if ( !$vatID )
431 {
432 $vatType = eZVatType::create();
433 $vatType->setAttribute( 'name', $vatName );
434 $vatType->setAttribute( 'percentage', $vatPercentage );
435 $vatType->store();
436 $vatID = $vatType->attribute( 'id' );
437 }
438 $classAttribute->setAttribute( self::VAT_ID_FIELD, $vatID );
439
440 $defaultCurrency = $attributeParametersNode->getElementsByTagName( 'default-currency' )->item( 0 );
441 $currencyCode = $defaultCurrency->getAttribute( 'code' );
442 $classAttribute->setAttribute( self::DEFAULT_CURRENCY_CODE_FIELD, $currencyCode );
443 }
444
445
446 function serializeContentObjectAttribute( $package, $objectAttribute )
447 {
448 $node = $this->createContentObjectAttributeDOMNode( $objectAttribute );
449
450 $multiprice = $objectAttribute->content();
451 $domDocument = $multiprice->DOMDocument();
452
453 $importedRoot = $node->ownerDocument->importNode( $domDocument->documentElement, true );
454 $node->appendChild( $importedRoot );
455
456 return $node;
457 }
458
459 function unserializeContentObjectAttribute( $package, $objectAttribute, $attributeNode )
460 {
461 $rootNode = $attributeNode->getElementsByTagName( 'ezmultiprice' )->item( 0 );
462
463 $multiprice = $objectAttribute->content();
464 $multiprice->decodeDOMTree( $rootNode );
465 }
466
467 function customSorting()
468 {
469 return true;
470 }
471
472 function customSortingSQL( $params )
473 {
474 $multipriceTableAlias = "mp";
475
476 if ( isset( $params['table_alias_suffix'] ) )
477 $multipriceTableAlias .= $params['table_alias_suffix'];
478
479 $sql = array( 'from' => '',
480 'where' => '',
481 'sorting_field' => '' );
482
483 $sql['from'] = "ezmultipricedata $multipriceTableAlias";
484
485 $and = '';
486 if ( isset( $params['contentobject_attr_id'] ) )
487 {
488 $sql['where'] = "
489 $multipriceTableAlias.contentobject_attr_id = {$params['contentobject_attr_id']}";
490 $and = ' AND';
491 }
492
493 if ( isset( $params['contentobject_attr_version'] ) )
494 {
495 $sql['where'] .= "
496 $and $multipriceTableAlias.contentobject_attr_version = {$params['contentobject_attr_version']}";
497 $and = ' AND';
498 }
499
500 if ( !isset( $params['currency_code'] ) )
501 {
502 $params['currency_code'] = eZShopFunctions::preferredCurrencyCode();
503 }
504
505 if ( $params['currency_code'] !== false )
506 {
507 $sql['where'] .= "
508 $and $multipriceTableAlias.currency_code = '{$params['currency_code']}'";
509 $and = ' AND';
510 }
511
512 $sql['sorting_field'] = "$multipriceTableAlias.value";
513
514 return $sql;
515 }
516
517 function diff( $old, $new, $options = false )
518 {
519 return null;
520 }
521
522 function supportsBatchInitializeObjectAttribute()
523 {
524 return true;
525 }
526 }
527
528 eZDataType::register( eZMultiPriceType::DATA_TYPE_STRING, "eZMultiPriceType" );
529
530 ?>
eZDataType
Base class for content datatypes.
Definition: ezdatatype.php:46
eZDataType\register
static register( $dataTypeString, $className)
Definition: ezdatatype.php:203
eZDataType\createContentObjectAttributeDOMNode
createContentObjectAttributeDOMNode( $objectAttribute)
Definition: ezdatatype.php:1371
eZDebug\writeError
static writeError( $string, $label="", $backgroundClass="")
Definition: ezdebug.php:545
eZInputValidator\STATE_ACCEPTED
const STATE_ACCEPTED
Definition: ezinputvalidator.php:79
eZInputValidator\STATE_INVALID
const STATE_INVALID
Definition: ezinputvalidator.php:81
eZMultiPriceType
Stores a price in multicurrency.
Definition: ezmultipricetype.php:19
eZMultiPriceType\classAttributeContent
classAttributeContent( $classAttribute)
Definition: ezmultipricetype.php:214
eZMultiPriceType\VAT_ID_VARIABLE
const VAT_ID_VARIABLE
Definition: ezmultipricetype.php:26
eZMultiPriceType\customSorting
customSorting()
Definition: ezmultipricetype.php:467
eZMultiPriceType\serializeContentObjectAttribute
serializeContentObjectAttribute( $package, $objectAttribute)
Definition: ezmultipricetype.php:446
eZMultiPriceType\VAT_ID_FIELD
const VAT_ID_FIELD
Definition: ezmultipricetype.php:25
eZMultiPriceType\objectAttributeContent
objectAttributeContent( $contentObjectAttribute)
Definition: ezmultipricetype.php:195
eZMultiPriceType\INCLUDE_VAT_FIELD
const INCLUDE_VAT_FIELD
Definition: ezmultipricetype.php:23
eZMultiPriceType\INCLUDED_VAT
const INCLUDED_VAT
Definition: ezmultipricetype.php:27
eZMultiPriceType\storeObjectAttribute
storeObjectAttribute( $attribute)
Definition: ezmultipricetype.php:82
eZMultiPriceType\fromString
fromString( $contentObjectAttribute, $string)
Definition: ezmultipricetype.php:331
eZMultiPriceType\EXCLUDED_VAT
const EXCLUDED_VAT
Definition: ezmultipricetype.php:28
eZMultiPriceType\customSortingSQL
customSortingSQL( $params)
Definition: ezmultipricetype.php:472
eZMultiPriceType\fetchClassAttributeHTTPInput
fetchClassAttributeHTTPInput( $http, $base, $classAttribute)
Definition: ezmultipricetype.php:139
eZMultiPriceType\validateObjectAttributeHTTPInput
validateObjectAttributeHTTPInput( $http, $base, $contentObjectAttribute)
Definition: ezmultipricetype.php:40
eZMultiPriceType\deleteStoredObjectAttribute
deleteStoredObjectAttribute( $objectAttribute, $version=null)
Definition: ezmultipricetype.php:289
eZMultiPriceType\DEFAULT_CURRENCY_CODE_VARIABLE
const DEFAULT_CURRENCY_CODE_VARIABLE
Definition: ezmultipricetype.php:22
eZMultiPriceType\INCLUDE_VAT_VARIABLE
const INCLUDE_VAT_VARIABLE
Definition: ezmultipricetype.php:24
eZMultiPriceType\postInitializeObjectAttribute
postInitializeObjectAttribute( $objectAttribute, $currentVersion, $originalContentObjectAttribute)
Definition: ezmultipricetype.php:113
eZMultiPriceType\DATA_TYPE_STRING
const DATA_TYPE_STRING
Definition: ezmultipricetype.php:20
eZMultiPriceType\diff
diff( $old, $new, $options=false)
Definition: ezmultipricetype.php:517
eZMultiPriceType\title
title( $contentObjectAttribute, $name=null)
Definition: ezmultipricetype.php:294
eZMultiPriceType\__construct
__construct()
Definition: ezmultipricetype.php:30
eZMultiPriceType\unserializeContentClassAttribute
unserializeContentClassAttribute( $classAttribute, $attributeNode, $attributeParametersNode)
Definition: ezmultipricetype.php:406
eZMultiPriceType\DEFAULT_CURRENCY_CODE_FIELD
const DEFAULT_CURRENCY_CODE_FIELD
Definition: ezmultipricetype.php:21
eZMultiPriceType\serializeContentClassAttribute
serializeContentClassAttribute( $classAttribute, $attributeNode, $attributeParametersNode)
Definition: ezmultipricetype.php:370
eZMultiPriceType\supportsBatchInitializeObjectAttribute
supportsBatchInitializeObjectAttribute()
Definition: ezmultipricetype.php:522
eZMultiPriceType\customObjectAttributeHTTPAction
customObjectAttributeHTTPAction( $http, $action, $contentObjectAttribute, $parameters)
Definition: ezmultipricetype.php:221
eZMultiPriceType\fetchObjectAttributeHTTPInput
fetchObjectAttributeHTTPInput( $http, $base, $contentObjectAttribute)
Definition: ezmultipricetype.php:166
eZMultiPriceType\contentActionList
contentActionList( $classAttribute)
Definition: ezmultipricetype.php:274
eZMultiPriceType\toString
toString( $contentObjectAttribute)
Definition: ezmultipricetype.php:304
eZMultiPriceType\hasObjectAttributeContent
hasObjectAttributeContent( $contentObjectAttribute)
Definition: ezmultipricetype.php:299
eZMultiPriceType\initializeObjectAttribute
initializeObjectAttribute( $contentObjectAttribute, $currentVersion, $originalContentObjectAttribute)
Definition: ezmultipricetype.php:101
eZMultiPriceType\unserializeContentObjectAttribute
unserializeContentObjectAttribute( $package, $objectAttribute, $attributeNode)
Definition: ezmultipricetype.php:459
eZMultiPriceType\initializeClassAttribute
initializeClassAttribute( $classAttribute)
Definition: ezmultipricetype.php:91
eZMultiPrice
Handles prices in different currencies with VAT and discounts.
Definition: ezmultiprice.php:32
eZMultiPrice\removeByID
static removeByID( $objectAttributeID, $objectAttributeVersion=null)
Definition: ezmultiprice.php:326
eZStringUtils\implodeStr
static implodeStr( $values, $delimiter='|')
Definition: ezstringutils.php:44
eZVatType\fetchList
static fetchList( $asObject=true, $skipDynamic=false)
Definition: ezvattype.php:105
eZVatType\create
static create()
Definition: ezvattype.php:173
ezpI18n\tr
static tr( $context, $source, $comment=null, $arguments=null)
Definition: ezpi18n.php:86
Copyright © 1998 – 2026 7x. All rights reserved. Licensed under the GNU GPLv2+.