Adds the new payment and delivery values to the order status log.

@param MShop_Order_Item_Interface $item Order item object
760262
protected function _addStatus( MShop_Order_Item_Interface $item )
	{
		$statusManager = MShop_Factory::createManager( $this->_getContext(), 'order/status' );

		$statusItem = $statusManager->createItem();
		$statusItem->setParentId( $item->getId() );

		if( $item->getPaymentStatus() != $item->oldPaymentStatus )
		{
			$statusItem->setId( null );
			$statusItem->setType( MShop_Order_Item_Status_Abstract::STATUS_PAYMENT );
			$statusItem->setValue( $item->getPaymentStatus() );

			$statusManager->saveItem( $statusItem, false );
		}

		if( $item->getDeliveryStatus() != $item->oldDeliveryStatus )
		{
			$statusItem->setId( null );
			$statusItem->setType( MShop_Order_Item_Status_Abstract::STATUS_DELIVERY );
			$statusItem->setValue( $item->getDeliveryStatus() );

			$statusManager->saveItem( $statusItem, false );
		}
	}
759506
public function updateIndexTimeByItem(Item $item) : int
    {
        $queryBuilder = $this->getQueryBuilder();
        return (int)$queryBuilder
            ->update($this->table)
            ->set('indexed', time())
            ->where($queryBuilder->expr()->eq('uid', $item->getIndexQueueUid()))
            ->execute();
    }
791952
public function addArticleItem(WxSendNewsMsgItem $item)
    {
        if (sizeof($this->articles) >= self::MAX_ITEMS_COUNT) {
            array_shift($this->articles);
        }

        $this->articles[] = $item;
    }
437739
public function add_item(cc_i_item &$item) {
        if (is_null($this->itemlist)) {
            $this->itemlist = array();
        }
        $this->itemlist[$item->identifier] = $item;
    }
1170352
public function addItem(OrderingItem $item)
    {
        if (!$this->items->contains($item)) {
            $item->setQuestion($this);
            $this->items->add($item);
        }
    }
1188257
public function saveItem( MShop_Common_Item_Interface $item, $fetch = true )
	{
		$iface = 'MShop_Customer_Item_Interface';
		if( !( $item instanceof $iface ) ) {
			throw new MShop_Customer_Exception( sprintf( 'Object is not of required type "%1$s"', $iface ) );
		}

		if( !$item->isModified() ) { return; }

		$context = $this->_getContext();

		$dbm = $context->getDatabaseManager();
		$dbname = $this->_getResourceName();
		$conn = $dbm->acquire( $dbname );

		try
		{
			$id = $item->getId();
			$date = date( 'Y-m-d H:i:s' );
			$billingAddress = $item->getPaymentAddress();

			if( $id === null )
			{
				/** mshop/customer/manager/default/item/insert
				 * Inserts a new customer record into the database table
				 *
				 * Items with no ID yet (i.e. the ID is NULL) will be created in
				 * the database and the newly created ID retrieved afterwards
				 * using the "newid" SQL statement.
				 *
				 * The SQL statement must be a string suitable for being used as
				 * prepared statement. It must include question marks for binding
				 * the values from the customer item to the statement before they are
				 * sent to the database server. The number of question marks must
				 * be the same as the number of columns listed in the INSERT
				 * statement. The order of the columns must correspond to the
				 * order in the saveItems() method, so the correct values are
				 * bound to the columns.
				 *
				 * The SQL statement should conform to the ANSI standard to be
				 * compatible with most relational database systems. This also
				 * includes using double quotes for table and column names.
				 *
				 * @param string SQL statement for inserting records
				 * @since 2014.03
				 * @category Developer
				 * @see mshop/customer/manager/default/item/update
				 * @see mshop/customer/manager/default/item/newid
				 * @see mshop/customer/manager/default/item/delete
				 * @see mshop/customer/manager/default/item/search
				 * @see mshop/customer/manager/default/item/count
				 */
				$path = 'mshop/customer/manager/default/item/insert';
			}
			else
			{
				/** mshop/customer/manager/default/item/update
				 * Updates an existing customer record in the database
				 *
				 * Items which already have an ID (i.e. the ID is not NULL) will
				 * be updated in the database.
				 *
				 * The SQL statement must be a string suitable for being used as
				 * prepared statement. It must include question marks for binding
				 * the values from the customer item to the statement before they are
				 * sent to the database server. The order of the columns must
				 * correspond to the order in the saveItems() method, so the
				 * correct values are bound to the columns.
				 *
				 * The SQL statement should conform to the ANSI standard to be
				 * compatible with most relational database systems. This also
				 * includes using double quotes for table and column names.
				 *
				 * @param string SQL statement for updating records
				 * @since 2014.03
				 * @category Developer
				 * @see mshop/customer/manager/default/item/insert
				 * @see mshop/customer/manager/default/item/newid
				 * @see mshop/customer/manager/default/item/delete
				 * @see mshop/customer/manager/default/item/search
				 * @see mshop/customer/manager/default/item/count
				 */
				$path = 'mshop/customer/manager/default/item/update';
			}

			$stmt = $this->_getCachedStatement( $conn, $path );

			$stmt->bind( 1, $context->getLocale()->getSiteId(), MW_DB_Statement_Abstract::PARAM_INT );
			$stmt->bind( 2, $item->getLabel() );
			$stmt->bind( 3, $item->getCode() );
			$stmt->bind( 4, $billingAddress->getCompany() );
			$stmt->bind( 5, $billingAddress->getVatID() );
			$stmt->bind( 6, $billingAddress->getSalutation() );
			$stmt->bind( 7, $billingAddress->getTitle() );
			$stmt->bind( 8, $billingAddress->getFirstname() );
			$stmt->bind( 9, $billingAddress->getLastname() );
			$stmt->bind( 10, $billingAddress->getAddress1() );
			$stmt->bind( 11, $billingAddress->getAddress2() );
			$stmt->bind( 12, $billingAddress->getAddress3() );
			$stmt->bind( 13, $billingAddress->getPostal() );
			$stmt->bind( 14, $billingAddress->getCity() );
			$stmt->bind( 15, $billingAddress->getState() );
			$stmt->bind( 16, $billingAddress->getCountryId() );
			$stmt->bind( 17, $billingAddress->getLanguageId() );
			$stmt->bind( 18, $billingAddress->getTelephone() );
			$stmt->bind( 19, $billingAddress->getEmail() );
			$stmt->bind( 20, $billingAddress->getTelefax() );
			$stmt->bind( 21, $billingAddress->getWebsite() );
			$stmt->bind( 22, $item->getBirthday() );
			$stmt->bind( 23, $item->getStatus(), MW_DB_Statement_Abstract::PARAM_INT );
			$stmt->bind( 24, $item->getDateVerified() );
			$stmt->bind( 25, $item->getPassword() );
			$stmt->bind( 26, $date ); // Modification time
			$stmt->bind( 27, $context->getEditor() );

			if( $id !== null ) {
				$stmt->bind( 28, $id, MW_DB_Statement_Abstract::PARAM_INT );
				$item->setId( $id );
			} else {
				$stmt->bind( 28, $date ); // Creation time
			}

			$stmt->execute()->finish();

			if( $id === null && $fetch === true )
			{
				/** mshop/customer/manager/default/item/newid
				 * Retrieves the ID generated by the database when inserting a new record
				 *
				 * As soon as a new record is inserted into the database table,
				 * the database server generates a new and unique identifier for
				 * that record. This ID can be used for retrieving, updating and
				 * deleting that specific record from the table again.
				 *
				 * For MySQL:
				 *  SELECT LAST_INSERT_ID()
				 * For PostgreSQL:
				 *  SELECT currval('seq_mcus_id')
				 * For SQL Server:
				 *  SELECT SCOPE_IDENTITY()
				 * For Oracle:
				 *  SELECT "seq_mcus_id".CURRVAL FROM DUAL
				 *
				 * There's no way to retrive the new ID by a SQL statements that
				 * fits for most database servers as they implement their own
				 * specific way.
				 *
				 * @param string SQL statement for retrieving the last inserted record ID
				 * @since 2014.03
				 * @category Developer
				 * @see mshop/customer/manager/default/item/insert
				 * @see mshop/customer/manager/default/item/update
				 * @see mshop/customer/manager/default/item/delete
				 * @see mshop/customer/manager/default/item/search
				 * @see mshop/customer/manager/default/item/count
				 */
				$path = 'mshop/customer/manager/default/item/newid';
				$item->setId( $this->_newId( $conn, $context->getConfig()->get( $path, $path ) ) );
			}

			$dbm->release( $conn, $dbname );
		}
		catch( Exception $e )
		{
			$dbm->release( $conn, $dbname );
			throw $e;
		}
	}
450533
public function setItemOrderPaymentName(&$item, $payment_model)
    {
        if (isset($item['payment'])) {
            $data = $payment_model->get($item['payment']);
            $item['payment_name'] = empty($data['title']) ? 'Unknown' : $data['title'];
        }
    }
1312353
public function compare( MShop_Order_Item_Base_Product_Interface $item )
	{
		if( $this->getFlags() === $item->getFlags()
			&& $this->getName() === $item->getName()
			&& $this->getProductCode() === $item->getProductCode()
			&& $this->getSupplierCode() === $item->getSupplierCode()
			&& $this->getPrice()->compare( $item->getPrice() ) === true
		) {
			return true;
		}

		return false;
	}
921699
public function addCoupon( MShop_Order_Item_Base_Interface $base )
	{
		if( $this->_getObject()->isAvailable( $base ) === false ) {
			return;
		}

		$config = $this->_getItem()->getConfig();

		if( !isset( $config['freeshipping.productcode'] ) )
		{
			throw new MShop_Coupon_Exception( sprintf(
				'Invalid configuration for coupon provider "%1$s", needs "%2$s"',
				$this->_getItem()->getProvider(), 'freeshipping.productcode'
			) );
		}

		$price = clone ( $base->getService('delivery')->getPrice() );
		$price->setRebate( $price->getCosts() );
		$price->setCosts( -$price->getCosts() );

		$orderProduct = $this->_createProduct( $config['freeshipping.productcode'], 1 );
		$orderProduct->setPrice( $price );

		$base->addCoupon( $this->_getCode(), array( $orderProduct ) );
	}
585688
public function addItem($item)
	{
		if( ! $item instanceof Model )
		{
			$item = new $this->defaultModel($item);
		}

		$this->data[] = $item;
	}
911357
public void createOrUpdateThroughput(ThroughputStat item) {
        Assert.assertNotNull(item);
        throughputDao.insertThroughputStat(throughputStatModelToDo(item));
    }
1020988
public void updateItem (T item)
    {
        if (_items == null) {
            return;
        }
        int idx = _items.indexOf(item);
        if (idx == -1) {
            _items.add(0, item);
        } else {
            _items.set(idx, item);
        }
    }
879888
public function saveItem( MShop_Common_Item_Interface $item, $fetch = true )
	{
		$iface = 'MShop_Common_Item_Address_Interface';
		if( !( $item instanceof $iface ) ) {
			throw new MShop_Exception( sprintf( 'Object is not of required type "%1$s"', $iface ) );
		}

		$dbm = $this->_context->getDatabaseManager();
		$dbname = $this->_getResourceName();
		$conn = $dbm->acquire( $dbname );

		try
		{
			$id = $item->getId();

			if ( $id === null ) {
				$sql = $this->_config['insert'];
				$type = 'insert';
			} else {
				$sql = $this->_config['update'];
				$type = 'update';
			}

			$stmt = $this->_getCachedStatement($conn, $this->_prefix . $type, $sql);

			$stmt->bind( 1, $this->_context->getLocale()->getSiteId(), MW_DB_Statement_Abstract::PARAM_INT );
			$stmt->bind( 2, $item->getRefId(), MW_DB_Statement_Abstract::PARAM_STR ); //reference id
			$stmt->bind( 3, $item->getCompany(), MW_DB_Statement_Abstract::PARAM_STR ); //company
			$stmt->bind( 4, $item->getVatID(), MW_DB_Statement_Abstract::PARAM_STR ); //vatid
			$stmt->bind( 5, $item->getSalutation(), MW_DB_Statement_Abstract::PARAM_STR ); //salutation
			$stmt->bind( 6, $item->getTitle(), MW_DB_Statement_Abstract::PARAM_STR ); //title
			$stmt->bind( 7, $item->getFirstname(), MW_DB_Statement_Abstract::PARAM_STR ); //firstname
			$stmt->bind( 8, $item->getLastname(), MW_DB_Statement_Abstract::PARAM_STR ); //lastname
			$stmt->bind( 9, $item->getAddress1(), MW_DB_Statement_Abstract::PARAM_STR ); //address1
			$stmt->bind( 10, $item->getAddress2(), MW_DB_Statement_Abstract::PARAM_STR ); //address2
			$stmt->bind( 11, $item->getAddress3(), MW_DB_Statement_Abstract::PARAM_STR ); //address3
			$stmt->bind( 12, $item->getPostal(), MW_DB_Statement_Abstract::PARAM_STR ); //postal
			$stmt->bind( 13, $item->getCity(), MW_DB_Statement_Abstract::PARAM_STR ); //city
			$stmt->bind( 14, $item->getState(), MW_DB_Statement_Abstract::PARAM_STR ); //state
			$stmt->bind( 15, $item->getCountryId(), MW_DB_Statement_Abstract::PARAM_STR ); //countryid
			$stmt->bind( 16, $item->getLanguageId(), MW_DB_Statement_Abstract::PARAM_STR ); //langid
			$stmt->bind( 17, $item->getTelephone(), MW_DB_Statement_Abstract::PARAM_STR ); //telephone
			$stmt->bind( 18, $item->getEmail(), MW_DB_Statement_Abstract::PARAM_STR ); //email
			$stmt->bind( 19, $item->getTelefax(), MW_DB_Statement_Abstract::PARAM_STR ); //telefax
			$stmt->bind( 20, $item->getWebsite(), MW_DB_Statement_Abstract::PARAM_STR ); //website
			$stmt->bind( 21, $item->getFlag(), MW_DB_Statement_Abstract::PARAM_INT ); //generic flag
			$stmt->bind( 22, $item->getPosition(), MW_DB_Statement_Abstract::PARAM_INT ); //position
			$stmt->bind( 23, date('Y-m-d H:i:s', time()));//mtime
			$stmt->bind( 24, $this->_context->getEditor());// editor

			if ( $id !== null ) {
				$stmt->bind( 25, $id, MW_DB_Statement_Abstract::PARAM_INT );
				$item->setId( $id ); //is not modified anymore
			} else {
				$stmt->bind( 25, date('Y-m-d H:i:s', time()));// ctime
			}

			$stmt->execute()->finish();

			if ( $id === null && $fetch === true) {
				$item->setId( $this->_newId( $conn, $this->_config['newid'] ) );
			}

			$dbm->release( $conn, $dbname );
		}
		catch ( Exception $e )
		{
			$dbm->release( $conn, $dbname );
			throw $e;
		}
	}
783069
public function setLocale( MShop_Locale_Item_Interface $locale )
	{
		$this->_notifyListeners( 'setLocale.before', $locale );

		$this->_locale = clone $locale;
		$this->_modified = true;

		$this->_notifyListeners( 'setLocale.after', $locale );
	}
732048
public function buildXML( MShop_Order_Item_Interface $invoice )
	{
		$orderBaseManager = MShop_Factory::createManager( $this->_getContext(), 'order/base' );
		$criteria = $orderBaseManager->createSearch();
		$criteria->setConditions( $criteria->compare( '==', 'order.base.id', $invoice->getBaseId() ) );
		$result = $orderBaseManager->searchItems( $criteria );

		if( ( $base = reset( $result ) ) === false )
		{
			throw new MShop_Order_Exception( sprintf(
				'Order base item with order ID "%1$s" not found', $invoice->getId()
			) );
		}


		try
		{
			$dom = new DOMDocument('1.0', 'UTF-8');

			$orderlist = $dom->createElement( 'orderlist');
			$orderitem = $dom->createElement( 'orderitem');

			$this->_buildXMLHeader( $invoice, $base, $dom, $orderitem );
			$this->_buildXMLService( $orderBaseManager, $base, $dom, $orderitem );
			$this->_buildXMLPrice( $orderBaseManager, $base, $dom, $orderitem );
			$this->_buildXMLProducts( $orderBaseManager, $base, $dom, $orderitem );
			$this->_buildXMLAddresses( $orderBaseManager, $base, $dom, $orderitem );
			$this->_buildXMLAdditional( $orderBaseManager, $base, $dom, $orderitem );

			$orderlist->appendChild( $orderitem );
			$dom->appendChild( $orderlist );
		}
		catch( DOMException $e )
		{
			throw new MShop_Service_Exception(
					sprintf( 'Creating XML file with order data for delivery provider failed: %1$s', $e->getMessage() ), 0, $e );
		}

		$requestXSD = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'xsd' . DIRECTORY_SEPARATOR . 'order-request_v1.xsd';

		if( $dom->schemaValidate( $requestXSD ) !== true ) {
			throw new MShop_Service_Exception(
				sprintf('Validation of XML response from delivery provider against schema "%1$s" failed: %2$s', $requestXSD, $dom->saveXML()), parent::ERR_SCHEMA);
		}

		if ( ( $xml = $dom->saveXML() ) === false ) {
			throw new MShop_Service_Exception( sprintf( 'DOM tree of XML response from delivery provider could not be converted to XML string' ), parent::ERR_XML );
		}

		return $xml;
	}
57263
public function saveItem( MShop_Common_Item_Interface $item, $fetch = true )
	{
		$manager = $this->_getManager();

		$manager->saveItem( $item, $fetch );
		$new = $manager->getItem( $item->getId() );

		$this->_getContext()->getLogger()->log( json_encode( $new->toArray() ), MW_Logger_Abstract::NOTICE, 'changelog' );
	}
4017
public function saveItem( MShop_Common_Item_Interface $item, $fetch = true )
	{
		$iface = 'MShop_Order_Item_Base_Interface';
		if( !( $item instanceof $iface ) ) {
			throw new MShop_Order_Exception( sprintf( 'Object is not of required type "%1$s"', $iface ) );
		}

		if( !$item->isModified() ) { return; }

		$context = $this->_getContext();

		$dbm = $context->getDatabaseManager();
		$dbname = $this->_getResourceName();
		$conn = $dbm->acquire( $dbname );

		try
		{
			$id = $item->getId();

			$localeItem = $context->getLocale();
			$priceItem = $item->getPrice();

			$path = 'mshop/order/manager/base/default/item/';
			$path .= ( $id === null ) ? 'insert' : 'update';

			$stmt = $this->_getCachedStatement( $conn, $path );

			$stmt->bind(1, $localeItem->getSiteId(), MW_DB_Statement_Abstract::PARAM_INT);
			$stmt->bind(2, $item->getCustomerId());
			$stmt->bind(3, $localeItem->getSite()->getCode());
			$stmt->bind(4, $item->getLocale()->getLanguageId());
			$stmt->bind(5, $priceItem->getCurrencyId());
			$stmt->bind(6, $priceItem->getValue());
			$stmt->bind(7, $priceItem->getCosts());
			$stmt->bind(8, $priceItem->getRebate());
			$stmt->bind(9, $item->getComment() );
			$stmt->bind(10, $item->getStatus() );
			$stmt->bind(11, date( 'Y-m-d H:i:s', time()));
			$stmt->bind(12, $context->getEditor() );

			if( $id !== null ) {
				$stmt->bind(13, $id, MW_DB_Statement_Abstract::PARAM_INT);
			} else {
				$stmt->bind(13, date( 'Y-m-d H:i:s', time() ), MW_DB_Statement_Abstract::PARAM_STR );// ctime
			}

			$stmt->execute()->finish();

			if( $fetch === true )
			{
				if( $id === null ) {
					$path = 'mshop/order/manager/base/default/item/newid';
					$item->setId( $this->_newId( $conn, $context->getConfig()->get( $path, $path ) ) );
				} else {
					$item->setId( $id );
				}
			}

			$dbm->release( $conn, $dbname );
		}
		catch( Exception $e )
		{
			$dbm->release( $conn, $dbname );
			throw $e;
		}
	}